Índice:
Vídeo: Jogo de adivinhação de cores remoto IR: 3 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:38
Neste instrutível, vou mostrar como controlar um led RGB usando um remoto IR e fazer um jogo divertido com ele!
Etapa 1: peças necessárias
As peças de que você precisará para este projeto são:
- arduino one- RGB Led- IR-Sensor
(a contagem de leds depende do jogo, da quantidade de vidas ou) - 2 leds verdes- 1 led amarelo - 1 led laranja- 3 leds vermelhos
Etapa 2: Código
#incluir
redPin int = 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); resultados de decode_results;
// cores de entrada
entrada interna = {-1, -1, -1}; cor interna = {-1, -1, -1};
int indexNumber = 0;
int indexColor = 0;
int waarde = 0;
int rood = 0;
int groen = 0; int blauw = 0;
// gerar cores
int roodRandom = 0; int groenRandom = 0; int blauwRandom = 0;
// variáveis do jogo
dif int = 200;
Int levelNumber = 1;
nível interno = {-1, -1, -1, -1};
int t = 0;
nível interno 1 = 255;
nível interno 2 = 0; nível interno 3 = 0; nível interno 4 = 0;
vidas int = 3;
int levens1 = 255; int levens2 = 255; int levens3 = 255;
int roodGok = 0;
int groenGok = 0; int blauwGok = 0;
void setup () {
Serial.begin (9600); irrecv.enableIRIn (); // inicia o receptor pinMode (redPin, OUTPUT); pinMode (greenPin, OUTPUT); pinMode (bluePin, OUTPUT);
pinMode (levensPin1, OUTPUT);
pinMode (levensPin2, OUTPUT); pinMode (levensPin3, OUTPUT);
}
void loop () {
if (irrecv.decode (& results)) // recebe os sinais do remoto {Serial.println (results.value, DEC); // exibe os sinais recebidos de cada botão pressionado irrecv.resume (); // recebe a próxima troca de sinal (results.value) {// transforma os sinais em números nos botões e atribui ações aos botões
case 109562864:
addWaarde (1); pausa;
case 109562824:
addWaarde (2); pausa;
case 109562856:
addWaarde (3); pausa;
case 109562872:
addWaarde (4); pausa;
case 109562820:
addWaarde (5); pausa;
case 109562852:
addWaarde (6); pausa;
case 109562868:
addWaarde (7); pausa;
case 109562828:
addWaarde (8); pausa;
case 109562860:
addWaarde (9); pausa;
case 109562876:
addWaarde (0); pausa;
case 109562818: // oud ding enter / R CLK
handleInput (); pausa;
case 109562816: // oud ding power
handleColor (); pausa; case 109562878: // oud ding cancel / L CLK resetColor (); pausa;
case 109562866: // lege knop midden
cor aleatória(); pausa;
case 109562830: // pijltje naar rechts
displayEverything (); pausa; case 109562838: // esc case 109562822: // AV source resetEverything (); pausa; }
// atribua botões no controle remoto para controlar a cor: desta forma, os jogadores podem ver como são as cores e como combiná-las, // antes de iniciar um jogo. switch (results.value) {case 109562840: rood = 255; pausa;
case 109562844:
groen = 255; pausa;
case 109562850:
blauw = 255; pausa;
case 109562836:
rood = 0; groen = 0; blauw = 0; pausa; }
}
analogWrite (redPin, abs (255 - rood)); // controlando o led RGB: no reverso, porque o meu está conectado ao reverso.
analogWrite (greenPin, abs (255 - groen)); analogWrite (bluePin, abs (255 - blauw));
// controlando leds vivos
if (vive == 2) {níveis1 = 0; } if (vive == 1) {levens2 = 0; } if (vive == 0) {levens3 = 0; } analogWrite (levensPin1, levens1); analogWrite (levensPin2, levens2); analogWrite (levensPin3, levens3);
// leds de nível de controle
if (levelNumber == 1) {level1 = 255; } if (levelNumber == 2) {level1 = 255; nível2 = 255; } if (levelNumber == 3) {level1 = 255; nível2 = 255; nível3 = 255; } if (levelNumber == 4) {level1 = 255; nível2 = 255; nível3 = 255; nível4 = 255; } analogWrite (levelPin1, level1); analogWrite (levelPin2, level2); analogWrite (levelPin3, level3); analogWrite (levelPin4, level4);
}
void addWaarde (int value) {// adiciona o valor pressionado à lista
if (indexNumber == 3) {
Retorna; }
if (insira [indexNumber] == -1) {
input [indexNumber] = valor; indexNumber ++; }}
void handleInput () {// faz um 'waarde' (valor) fora da lista
waarde = abs (entrada [0] * 100 + entrada [1] * 10 + entrada [2]); entrada [0] = -1; // redefine o sinal de entrada [1] = -1; entrada [2] = -1;
indexNumber = 0;
Serial.print ("waarde opgeslagen:"); Serial.println (waarde); addColor (waarde); }
void addColor (int waarde) {// adiciona o 'waarde' de 3 dígitos a uma lista
if (indexColor == 3) {
Retorna; }
if (color [indexColor] == -1) {
cor [indexColor] = waarde; if (cor [indexColor]> 255) {color [indexColor] = 255; } indexColor ++; }
}
void randomColor () {// faz a luz mudar para uma cor aleatória e salvá-la em variáveis
roodRandom = aleatório (0, 255);
groenRandom = aleatório (0, 255);
blauwRandom = aleatório (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 () {// transforma o 'waarde' da lista em variáveis 'Gok' (estimativa)
roodGok = cor [0]; groenGok = cor [1]; blauwGok = cor [2]; // verifique se as variáveis do Gok diferem muito da cor real aleatória: em caso afirmativo, exiba a estimativa por três segundos, pisque em verde e mude a cor novamente, adicione um nível e torne a diferença permitida menor // se não, exiba o adivinhe por três segundos, pisque em vermelho e deduza uma vida // se você não tiver mais vidas, o jogo começa novamente se (abs ((rood + groen + blauw) - (roodGok + groenGok + blauwGok)) <= diff) { analogWrite (redPin, abs (255 - roodGok)); analogWrite (greenPin, abs (255 - groenGok)); analogWrite (bluePin, abs (255 - blauwGok)); atraso (3000); analogWrite (redPin, 255); analogWrite (greenPin, 0); analogWrite (bluePin, 255); atraso (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); atraso (300); analogWrite (redPin, 255); analogWrite (greenPin, 0); analogWrite (bluePin, 255); atraso (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); atraso (300);
Serial.print ("roodGok =");
Serial.println (roodGok); Serial.print ("groenGok ="); Serial.println (groenGok); Serial.print ("blauwGok ="); Serial.println (blauwGok); resetColor (); cor aleatória(); levelNumber ++; diff - = 50; } else {analogWrite (redPin, abs (255 - roodGok)); analogWrite (greenPin, abs (255 - groenGok)); analogWrite (bluePin, abs (255 - blauwGok)); atraso (3000); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); atraso (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); atraso (300); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); atraso (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); atraso (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); atraso (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); atraso (100); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); atraso (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); atraso (100); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); atraso (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); atraso (100); resetEverything (); }
}
void resetColor () {// use para redefinir valores, para um pressionamento errado ou cada nova estimativa (apenas para ter certeza)
cor [0] = -1; cor [1] = -1; cor [2] = -1;
indexNumber = 0;
indexColor = 0; }
void resetEverything () {// reiniciar o jogo
cor [0] = -1; cor [1] = -1; cor [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;
nível1 = 255;
nível2 = 0; nível3 = 0; nível4 = 0;
levelNumber = 1;
t = 0;
}
void displayEverything () {// use isso para exibir informações importantes no 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); }
Etapa 3: construir
Obviamente, você quer uma boa construção para este projeto. esta parte é bastante aberta para interpretação, mas há algumas coisas a se ter em mente: - mantenha o painel frontal fino, para que você ainda possa inserir seus leds nele e o receptor IR ainda funcione
- mantenha espaço suficiente na construção para o arduino e uma placa de solda
- certifique-se de que há um orifício na parte de trás para a força do arduino
Eu adicionei um esquema básico para a fiação.
Boa sorte e divirta-se!
Recomendado:
Um jogo de adivinhação simples - Python + XBees + Arduino: 10 etapas
Um jogo de adivinhação simples - Python + XBees + Arduino: é assim que o jogo funciona: você tem 4 tentativas para adivinhar uma letra entre ‘a’ - ‘h’ - > Adivinhe a letra certa: Você venceu! ? - > Adivinhe a letra errada: Fim do jogo? - > Adivinhe algum outro caractere fora de 'a' - 'h': Fim do jogo? Seu Arduino permitirá que você
Seletor de cores Arduino RGB - Escolha cores de objetos da vida real: 7 etapas (com imagens)
Arduino RGB Color Picker - Escolha cores de objetos da vida real: escolha facilmente cores de objetos físicos com este seletor de cores RGB baseado em Arduino, permitindo recriar as cores que você vê em objetos da vida real em seu PC ou telefone celular. Basta apertar um botão para escanear a cor do objeto usando um TCS347 barato
Jogo simples de adivinhação de números em Python: 11 etapas
Jogo simples de adivinhação de números em Python: Neste tutorial, ensinaremos como criar um jogo simples de adivinhação de números em Python no aplicativo Pycharm. Python é uma linguagem de script ótima tanto para iniciantes quanto para especialistas. O estilo de codificação em Python é fácil de ler e seguir
Jogo de adivinhação Python: 9 etapas
Jogo de adivinhação Python: As instruções a seguir fornecem orientação passo a passo sobre como escrever um programa usando o módulo aleatório e criar um jogo de adivinhação que interage com o usuário. Para começar, você precisa ter o python instalado no seu computador e também op
O que o bit está pensando? Faça um jogo de adivinhação simples com o Microbit da BBC !: 10 etapas
O que o bit está pensando? Faça um jogo de adivinhação simples com o Microbit da BBC !: Peguei alguns Microbits da BBC depois de ler críticas positivas sobre eles em vários artigos online. Na tentativa de me familiarizar com o BIT, eu brinquei com o Editor de Blocos da Microsoft online para algumas horas e apareceu com