Automatiza el Juego del Dinosaurio de Chrome con Arduino y Python
Componentes y materiales
| Componente | Cantidad |
|---|---|
| Arduino UNO | 1 |
| LDR (fotorresistencia) 5 MΩ | 1 |
| Resistencia 10 kΩ (para divisor de tensión con el LDR) | 1 |
Descripción del proyecto
¿Aburrido durante la cuarentena? Juega al juego del dinosaurio de Chrome... pero ¿y si el juego también se aburre? ¡Automatízalo con Arduino y un poco de Python!
Necesitas un Arduino y un LDR. También se requieren conocimientos básicos de Python.
Montaje del hardware
Conecta el LDR al pin A0 del Arduino mediante un divisor de tensión (LDR + resistencia 10 kΩ).
Código Arduino
El Arduino lee el valor analógico del LDR. Cuando detecta un obstáculo (cambio de luz), envía "1" por serie.
// Arduino Dino Game :)
int sensorPin = A0;
int sensorValue = 0;
int thresholdValue = 43; // Ajustar por prueba y error
void setup() {
Serial.begin(9600);
}
void loop() {
sensorValue = analogRead(sensorPin);
// Serial.println(sensorValue); // Descomenta para calibrar
if(sensorValue <= thresholdValue) {
Serial.println(1); // Obstáculo detectado
}
delay(50);
}
Calibración: Fija el LDR en la pantalla sobre la zona donde aparecen los obstáculos. Abre el monitor serie, anota los valores cuando hay obstáculo y cuando no, y ajusta thresholdValue en consecuencia.
Código Python
Python lee el puerto serie y pulsa la tecla ↑ (salto) mediante pyautogui cuando recibe "1".
import subprocess
import time
import pyautogui
import serial
# Abre el juego (aquí se usa chromedino.com en Firefox)
subprocess.call([r'C:\Program Files\Mozilla Firefox\Firefox.exe', '-new-tab', 'https://chromedino.com/'])
time.sleep(6)
print("All sett :)")
ser = serial.Serial('COM4') # Cambia al puerto de tu Arduino
ser.baudrate = 9600
while True:
h1 = ser.readline()
if h1:
ss = int(h1.decode('utf-8').strip())
if ss == 1:
print("Oh :< Jump!!")
pyautogui.press('up')
Ejecuta el script, ajusta la posición del LDR por prueba y error y ¡listo! Dino juega solo.
Mejoras posibles
- Añadir un segundo LDR para detectar pájaros (obstáculos aéreos).
- Usar un servomotor para pulsar físicamente la barra espaciadora (sin depender de Python).
Recursos
- Repositorio GitHub: rafitc/arduDino
Esquemáticos
Proceso de manufactura
- Crea un Impresionante Sistema Ambilight para Monitor con Arduino
- TeleBall: Consola Retro Portátil DIY – Construye tu Propio Breakout y Tenis con Arduino
- Construya el clásico juego Pong en Arduino UNO con pantalla OLED: Tutorial paso a paso
- Mando USB para juegos DIY con Arduino – Construye tu propio gamepad de alto rendimiento
- Construye un lanzador automático LEGO Star Wars con Arduino Uno
- Juego Breakout táctil Arduino: Arcade clásico en pantalla TFT 2,4″
- Construye un Voltímetro Inteligente con Arduino y Smartphone – Proyecto DIY Fácil
- Monitor de Frecuencia Cardíaca IoT en Tiempo Real con Arduino y MAX30100
- Servidor Web Arduino Uno WiFi: Controla un LED desde el Navegador
- Pixel Chaser: Juego LED Interactivo de Un Toque con Arduino Nano
- Construye una Radio FM Compacta con Arduino Nano y RDA5807M