Tabla de contenido:
Video: Juego de adivinanzas de colores con control remoto por infrarrojos: 3 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:43
En este instructivo, te mostraré cómo controlar un LED RGB usando un control remoto IR y ¡hacer un juego divertido con él!
Paso 1: Piezas necesarias
Las piezas que necesitará para este proyecto son:
- arduino uno- LED RGB- Sensor de infrarrojos
(el conteo de led depende del juego, la cantidad de vidas o) - 2 leds verdes- 1 led amarillo - 1 led naranja- 3 leds rojos
Paso 2: Código
#incluir
int redPin = 10;
int greenPin = 6; int bluePin = 5;
int levensPin1 = 8;
int levensPin2 = 9; int levensPin3 = 12;
int levelPin1 = 2;
int levelPin2 = 3; int levelPin3 = 4; int levelPin4 = 7;
int RECV_PIN = 11;
IRrecv irrecv (RECV_PIN); decode_results resultados;
// colores de entrada
int entrada = {-1, -1, -1}; int color = {-1, -1, -1};
int indexNumber = 0;
int indexColor = 0;
int waarde = 0;
int rood = 0;
int groen = 0; int blauw = 0;
// generar colores
int roodRandom = 0; int groenRandom = 0; int blauwRandom = 0;
// variables del juego
int diff = 200;
int levelNumber = 1;
int nivel = {-1, -1, -1, -1};
int t = 0;
int nivel1 = 255;
int nivel2 = 0; int nivel3 = 0; int nivel4 = 0;
int vidas = 3;
int levens1 = 255; int levens2 = 255; int levens3 = 255;
int roodGok = 0;
int groenGok = 0; int blauwGok = 0;
configuración vacía () {
Serial.begin (9600); irrecv.enableIRIn (); // inicia el receptor pinMode (redPin, OUTPUT); pinMode (greenPin, SALIDA); pinMode (bluePin, SALIDA);
pinMode (levensPin1, SALIDA);
pinMode (levensPin2, SALIDA); pinMode (levensPin3, SALIDA);
}
bucle vacío () {
if (irrecv.decode (& results)) // recibe las señales del remoto {Serial.println (results.value, DEC); // muestra las señales recibidas de cada botón presionado irrecv.resume (); // recibe el siguiente interruptor de señal (results.value) {// convierte las señales en números en los botones y asigna acciones a los botones
caso 109562864:
addWaarde (1); rotura;
caso 109562824:
addWaarde (2); rotura;
caso 109562856:
addWaarde (3); rotura;
caso 109562872:
addWaarde (4); rotura;
caso 109562820:
addWaarde (5); rotura;
caso 109562852:
addWaarde (6); rotura;
caso 109562868:
addWaarde (7); rotura;
caso 109562828:
addWaarde (8); rotura;
caso 109562860:
addWaarde (9); rotura;
caso 109562876:
addWaarde (0); rotura;
caso 109562818: // oud ding enter / R CLK
handleInput (); rotura;
caso 109562816: // oud ding power
handleColor (); rotura; case 109562878: // cancelación de sonido en voz alta / L CLK resetColor (); rotura;
caso 109562866: // lege knop midden
Color aleatorio(); rotura;
caso 109562830: // pijltje naar rechts
displayEverything (); rotura; case 109562838: // esc case 109562822: // fuente AV resetEverything (); rotura; }
// asignar botones en el control remoto para controlar el color: de esta manera, los jugadores pueden ver cómo se ven los colores y cómo combinarlos, // antes de comenzar un juego. cambiar (resultados.valor) {caso 109562840: rood = 255; rotura;
caso 109562844:
groen = 255; rotura;
caso 109562850:
blauw = 255; rotura;
caso 109562836:
rood = 0; groen = 0; blauw = 0; rotura; }
}
analogWrite (redPin, abs (255 - rood)); // control de led RGB: al revés, porque el mío está cableado al revés.
analogWrite (greenPin, abs (255 - groen)); analogWrite (bluePin, abs (255 - blauw));
// control de leds en vivo
si (vidas == 2) {levens1 = 0; } si (vive == 1) {levens2 = 0; } si (vive == 0) {levens3 = 0; } escritura analógica (levensPin1, levens1); analogWrite (levensPin2, levens2); analogWrite (levensPin3, levens3);
// control de leds de nivel
if (levelNumber == 1) {level1 = 255; } if (levelNumber == 2) {level1 = 255; nivel2 = 255; } if (levelNumber == 3) {level1 = 255; nivel2 = 255; nivel3 = 255; } if (levelNumber == 4) {level1 = 255; nivel2 = 255; nivel3 = 255; nivel4 = 255; } analogWrite (levelPin1, level1); analogWrite (levelPin2, level2); analogWrite (levelPin3, level3); analogWrite (levelPin4, level4);
}
void addWaarde (int value) {// agrega el valor presionado a la lista
if (indexNumber == 3) {
regreso; }
if (input [indexNumber] == -1) {
input [indexNumber] = valor; indexNumber ++; }}
void handleInput () {// hacer un 'waarde' (valor) de la lista
waarde = abs (entrada [0] * 100 + entrada [1] * 10 + entrada [2]); entrada [0] = -1; // restablecer la señal input [1] = -1; entrada [2] = -1;
indexNumber = 0;
Serial.print ("waarde opgeslagen:"); Serial.println (waarde); addColor (waarde); }
void addColor (int waarde) {// agrega el 'waarde' de 3 dígitos a una lista
if (indexColor == 3) {
regreso; }
if (color [indexColor] == -1) {
color [indexColor] = waarde; if (color [indexColor]> 255) {color [indexColor] = 255; } indexColor ++; }
}
void randomColor () {// haz que la luz cambie a un color aleatorio y guárdalo en variables
roodRandom = aleatorio (0, 255);
groenRandom = aleatorio (0, 255);
blauwRandom = aleatorio (0, 255);
rood = roodRandom;
groen = groenRandom; blauw = blauwRandom; Serial.print ("roodRandom ="); Serial.println (roodRandom); Serial.print ("groenRandom ="); Serial.println (groenRandom); Serial.print ("blauwRandom ="); Serial.println (blauwRandom);
}
void handleColor () {// convierte el 'waarde' de la lista en variables 'Gok' (adivinar)
roodGok = color [0]; groenGok = color [1]; blauwGok = color [2]; // verifica si las variables de Gok difieren demasiado con el color aleatorio real: si es así, muestra la suposición durante tres segundos, parpadea en verde y cambia el color nuevamente, agrega un nivel y reduce la diferencia permitida // si no, muestra la adivina durante tres segundos, parpadea en rojo y deduce una vida // si te quedas sin vidas, el juego comienza de nuevo si (abs ((rood + groen + blauw) - (roodGok + groenGok + blauwGok)) <= diff) { analogWrite (redPin, abs (255 - roodGok)); analogWrite (greenPin, abs (255 - groenGok)); analogWrite (bluePin, abs (255 - blauwGok)); retraso (3000); analogWrite (redPin, 255); analogWrite (greenPin, 0); analogWrite (bluePin, 255); retraso (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); retraso (300); analogWrite (redPin, 255); analogWrite (greenPin, 0); analogWrite (bluePin, 255); retraso (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); retraso (300);
Serial.print ("roodGok =");
Serial.println (roodGok); Serial.print ("groenGok ="); Serial.println (groenGok); Serial.print ("blauwGok ="); Serial.println (blauwGok); resetColor (); Color aleatorio(); levelNumber ++; diff - = 50; } else {analogWrite (redPin, abs (255 - roodGok)); analogWrite (greenPin, abs (255 - groenGok)); analogWrite (bluePin, abs (255 - blauwGok)); retraso (3000); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); retraso (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); retraso (300); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); retraso (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); retraso (300); Serial.print ("roodGok ="); Serial.println (roodGok); Serial.print ("groenGok ="); Serial.println (groenGok); Serial.print ("blauwGok ="); Serial.println (blauwGok);
resetColor ();
vidas--; } if (vive == 0) {analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); retraso (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); retraso (100); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); retraso (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); retraso (100); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); retraso (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); retraso (100); resetEverything (); }
}
void resetColor () {// se usa para restablecer valores, para una prensa incorrecta o cada nueva suposición (solo para certeza)
color [0] = -1; color [1] = -1; color [2] = -1;
indexNumber = 0;
indexColor = 0; }
void resetEverything () {// reinicia el juego
color [0] = -1; color [1] = -1; color [2] = -1;
indexNumber = 0;
indexColor = 0;
vidas = 3;
rood = 0; groen = 0; blauw = 0;
roodRandom = 0;
groenRandom = 0; blauwRandom = 0;
levens1 = 255;
levens2 = 255; levens3 = 255;
nivel1 = 255;
nivel2 = 0; nivel3 = 0; nivel4 = 0;
levelNumber = 1;
t = 0;
}
void displayEverything () {// use esto para mostrar información importante en el monitor serial
Serial.print ("roodGok ="); Serial.println (roodGok); Serial.print ("groenGok ="); Serial.println (groenGok); Serial.print ("blauwGok ="); Serial.println (blauwGok); Serial.print ("roodRandom ="); Serial.println (roodRandom); Serial.print ("groenRandom ="); Serial.println (groenRandom); Serial.print ("blauwRandom ="); Serial.println (blauwRandom);
Serial.print ("rood =");
Serial.println (rood); Serial.print ("groen ="); Serial.println (groen); Serial.print ("blauw ="); Serial.println (blauw);
Serial.print ("waarde opgeslagen:");
Serial.println (waarde); }
Paso 3: construir
Obviamente, quieres una buena construcción para este proyecto. esta parte está bastante abierta a la interpretación, pero hay algunas cosas a tener en cuenta con esto: - mantenga el panel frontal delgado, para que aún pueda pegar sus leds y el receptor de infrarrojos siga funcionando
- mantenga suficiente espacio en la construcción para el arduino y una placa de soldadura
- asegúrese de que haya un agujero en la parte posterior para el poder del arduino
Agregué un esquema aproximado para el cableado.
¡Buena suerte y diviertete!
Recomendado:
Tira de LED con control remoto por infrarrojos de bricolaje: 10 pasos (con imágenes)
Tira de LED con control remoto IR DIY: Hola, hola a todos, bienvenidos a nuestros nuevos instructables, como ya saben por la miniatura que en este proyecto vamos a hacer un controlador de tira de LED Ir que se puede controlar utilizando cualquier control remoto IR comúnmente disponible que generalmente son utilizada en
Control de 8 relés con NodeMCU y receptor de infrarrojos mediante WiFi, control remoto de infrarrojos y aplicación de Android: 5 pasos (con imágenes)
Control de 8 relés con NodeMCU y receptor de infrarrojos mediante WiFi, control remoto por infrarrojos y aplicación de Android: Control de 8 interruptores de relé con nodemcu y receptor de infrarrojos a través de wifi y control remoto por infrarrojos y aplicación de Android. El control remoto por infrarrojos funciona independientemente de la conexión wifi. AQUÍ
Proyecto de aplicación en el hogar con control remoto por infrarrojos con regulador de ventilador: 5 pasos
Proyecto de aplicación de hogar controlado por infrarrojos con regulador de ventilador: este proyecto para aquellos que tienen cultura con arduino y proyectos, no para novatos, lo hice como un proyecto, pero también lo estoy usando para fines de producción … por esta causa puedo ' t compartir todo el boceto completo
Receptor de infrarrojos y control remoto por infrarrojos (TSOP1738) con Arduino: 10 pasos
Control remoto por infrarrojos y receptor de infrarrojos (TSOP1738) con Arduino: este instructivo es para principiantes de Arduino. Este es uno de mis proyectos anteriores con Arduino. Disfruté mucho cuando lo hice y espero que a ti también te guste. La característica más atractiva de este proyecto es el “ Control inalámbrico ”. Y eso es
Controle sus electrodomésticos con su control remoto de TV (control remoto por infrarrojos) con pantalla de temperatura y humedad: 9 pasos
Controle sus electrodomésticos con su control remoto de TV (control remoto por infrarrojos) con pantalla de temperatura y humedad: hola, soy Abhay y es mi primer blog sobre Instructables y hoy le mostraré cómo controlar sus electrodomésticos con el control remoto de su televisor construyendo esto. proyecto simple. gracias al laboratorio atl por el apoyo y el suministro de material