Table des matières:
Vidéo: Jeu de devinettes de couleur à distance IR : 3 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:08
Dans ce instructable, je vais vous montrer comment contrôler une led RVB à l'aide d'une télécommande IR et en faire un jeu amusant !
Étape 1: Pièces nécessaires
Les pièces dont vous aurez besoin pour ce projet sont:
- arduino one- Led RGB- Capteur IR
(le nombre de led dépend du jeu, du nombre de vies ou)- 2 leds vertes- 1 led jaune - 1 led orange- 3 leds rouges
Étape 2: Coder
#comprendre
int redPin = 10;
int greenPin = 6; int bluePin = 5;
int levensPin1 = 8;
int levensPin2 = 9; int levensPin3 = 12;
int niveauPin1 = 2;
int niveauPin2 = 3; int niveauPin3 = 4; int niveauPin4 = 7;
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN); decode_results résultats;
// entrer les couleurs
int entrée = {-1, -1, -1}; int couleur = {-1, -1, -1};
int indexNumber = 0;
int indexCouleur = 0;
int waarde = 0;
int rood = 0;
int vert = 0; int blauw = 0;
// générer des couleurs
int roodRandom = 0; int groenAléatoire = 0; int blauwRandom = 0;
// variables de jeu
diff int = 200;
int levelNumber = 1;
int niveau = {-1, -1, -1, -1};
entier t = 0;
int niveau1 = 255;
int niveau2 = 0; int niveau3 = 0; int niveau4 = 0;
vies 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(); // démarre le récepteur pinMode(redPin, OUTPUT); pinMode(vertPin, SORTIE); pinMode(bluePin, SORTIE);
pinMode(levensPin1, SORTIE);
pinMode(levensPin2, SORTIE); pinMode(levensPin3, SORTIE);
}
boucle vide() {
if (irrecv.decode(&results)) // reçoit les signaux de la télécommande { Serial.println(results.value, DEC); // affiche les signaux reçus de chaque bouton enfoncé irrecv.resume(); // recevoir le prochain signal switch(results.value){ // transformer les signaux en nombres sur les boutons et assigner des actions aux boutons
cas 109562864:
addWaarde(1); Pause;
cas 109562824:
addWaarde(2); Pause;
cas 109562856:
addWaarde(3); Pause;
cas 109562872:
addWaarde(4); Pause;
cas 109562820:
ajouterWaarde(5); Pause;
cas 109562852:
ajouterWaarde(6); Pause;
cas 109562868:
addWaarde(7); Pause;
cas 109562828:
addWaarde(8); Pause;
cas 109562860:
addWaarde(9); Pause;
cas 109562876:
addWaarde(0); Pause;
cas 109562818: //oud ding enter/R CLK
handleInput(); Pause;
cas 109562816: //oud ding puissance
handleCouleur(); Pause; case 109562878: //oud ding cancel/L CLK resetColor(); Pause;
affaire 109562866: //lege knop midden
couleur aléatoire(); Pause;
affaire 109562830: // pijltje naar rechts
afficherTout(); Pause; case 109562838: // esc case 109562822: // source AV resetEverything(); Pause; }
// assigner des boutons sur la télécommande pour contrôler la couleur: de cette façon, les joueurs peuvent voir à quoi ressemblent les couleurs et comment les combiner, // avant de commencer une partie. switch(results.value){ case 109562840: rood = 255; Pause;
cas 109562844:
vert = 255; Pause;
cas 109562850:
bleu = 255; Pause;
cas 109562836:
rood = 0; vert = 0; bleu = 0; Pause; }
}
analogWrite(redPin, abs(255 - rood)); // contrôle de la led RVB: à l'envers, car la mienne est câblée à l'envers.
analogWrite(greenPin, abs(255 - groen)); analogWrite(bluePin, abs(255 - blauw));
// contrôle des leds en direct
if (vit == 2){ levens1 = 0; } if (vit == 1){ levens2 = 0; } if (vit == 0){ levens3 = 0; } analogWrite(levensPin1, levens1); analogWrite(levensPin2, levens2); analogWrite(levensPin3, levens3);
// contrôle des leds de niveau
if (levelNumber == 1){ level1 = 255; } if (levelNumber == 2){ level1 = 255; niveau2 = 255; } if (levelNumber == 3){ level1 = 255; niveau2 = 255; niveau3 = 255; } if (levelNumber == 4){ level1 = 255; niveau2 = 255; niveau3 = 255; niveau4 = 255; } analogWrite(levelPin1, level1); analogWrite(levelPin2, level2); analogWrite(levelPin3, level3); analogWrite(levelPin4, level4);
}
void addWaarde(int value) { // ajoute la valeur pressée à la liste
if (indexNumber == 3) {
revenir; }
if (entrée[indexNumber] == -1){
input[indexNumber] = valeur; indexNumber++; } }
void handleInput() { // crée un 'waarde' (valeur) de la liste
waarde = abs(entrée[0] * 100 + entrée[1] * 10 + entrée[2]); entrée[0] = -1; // réinitialiser le signal input[1] = -1; entrée[2] = -1;
indexNumber = 0;
Serial.print("waarde opgeslagen: "); Serial.println(waarde); addColor(waarde); }
void addColor(int waarde) { // ajoute le 'waarde' à 3 chiffres à une liste
if (indexCouleur == 3) {
revenir; }
if (couleur[indexCouleur] == -1){
couleur[indexCouleur] = waarde; if (color[indexColor] > 255){ color[indexColor] = 255; } indexCouleur++; }
}
void randomColor(){ // fait que la lumière prend une couleur aléatoire et l'enregistre dans des variables
roodRandom = aléatoire (0, 255);
groenAléatoire = aléatoire(0, 255);
blauwAléatoire = aléatoire(0, 255);
rood = roodRandom;
groen = groenRandom; blauw = blauwAléatoire; Serial.print("roodRandom = "); Serial.println(roodRandom); Serial.print("groenRandom = "); Serial.println(groenRandom); Serial.print("blauwRandom = "); Serial.println(blauwRandom);
}
void handleColor() { // transforme le 'waarde' de la liste en variables 'Gok' (deviner)
roodGok = couleur[0]; groenGok = couleur[1]; blauwGok = couleur[2]; // vérifie si les variables Gok diffèrent trop avec la vraie couleur aléatoire: si c'est le cas, affiche la supposition pendant trois secondes, clignote en vert et change à nouveau de couleur, ajoute un niveau et réduit la différence autorisée // sinon, affiche le devinez pendant trois secondes, clignotez en rouge et déduisez une vie // si vous n'avez plus de vies, le jeu recommence si (abs((rood + groen + blauw) - (roodGok + groenGok + blauwGok)) <= diff){ analogWrite(redPin, abs(255 - roodGok)); analogWrite(greenPin, abs(255 - groenGok)); analogWrite(bluePin, abs(255 - blauwGok)); retard(3000); analogWrite(redPin, 255); analogWrite(greenPin, 0); analogWrite(bluePin, 255); retard (300); analogWrite(redPin, 255); analogWrite(greenPin, 255); analogWrite(bluePin, 255); retard (300); analogWrite(redPin, 255); analogWrite(greenPin, 0); analogWrite(bluePin, 255); retard (300); analogWrite(redPin, 255); analogWrite(greenPin, 255); analogWrite(bluePin, 255); retard (300);
Serial.print("roodGok = ");
Serial.println(roodGok); Serial.print("groenGok = "); Serial.println(groenGok); Serial.print("blauwGok = "); Serial.println(blauwGok); resetCouleur(); couleur aléatoire(); levelNumber++; diff -= 50; } else{ analogWrite(redPin, abs(255 - roodGok)); analogWrite(greenPin, abs(255 - groenGok)); analogWrite(bluePin, abs(255 - blauwGok)); retard(3000); analogWrite(redPin, 0); analogWrite(greenPin, 255); analogWrite(bluePin, 255); retard (300); analogWrite(redPin, 255); analogWrite(greenPin, 255); analogWrite(bluePin, 255); retard (300); analogWrite(redPin, 0); analogWrite(greenPin, 255); analogWrite(bluePin, 255); retard (300); analogWrite(redPin, 255); analogWrite(greenPin, 255); analogWrite(bluePin, 255); retard (300); Serial.print("roodGok = "); Serial.println(roodGok); Serial.print("groenGok = "); Serial.println(groenGok); Serial.print("blauwGok = "); Serial.println(blauwGok);
resetCouleur();
des vies--; } if (live == 0){ analogWrite(redPin, 0); analogWrite(greenPin, 255); analogWrite(bluePin, 255); retard (100); analogWrite(redPin, 255); analogWrite(greenPin, 255); analogWrite(bluePin, 255); retard (100); analogWrite(redPin, 0); analogWrite(greenPin, 255); analogWrite(bluePin, 255); retard (100); analogWrite(redPin, 255); analogWrite(greenPin, 255); analogWrite(bluePin, 255); retard (100); analogWrite(redPin, 0); analogWrite(greenPin, 255); analogWrite(bluePin, 255); retard (100); analogWrite(redPin, 255); analogWrite(greenPin, 255); analogWrite(bluePin, 255); retard (100); réinitialiserTout(); }
}
void resetColor () { // utiliser pour les valeurs de réinitialisation, pour une mauvaise pression ou chaque nouvelle supposition (juste pour plus de certitude)
couleur[0] = -1; couleur[1] = -1; couleur[2] = -1;
indexNumber=0;
indexCouleur=0; }
void resetEverything(){ // redémarre le jeu
couleur[0] = -1; couleur[1] = -1; couleur[2] = -1;
indexNumber=0;
indexCouleur=0;
vies = 3;
rood = 0; vert = 0; bleu = 0;
roodRandom = 0;
groenAléatoire = 0; blauwAléatoire = 0;
levens1 = 255;
levens2 = 255; levens3 = 255;
niveau1 = 255;
niveau2 = 0; niveau3 = 0; niveau4 = 0;
levelNumber = 1;
t = 0;
}
void displayEverything(){ // utiliser ceci pour afficher des informations importantes sur le moniteur série
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); }
Étape 3: Construire
Vous voulez évidemment une belle construction pour ce projet. cette partie est assez ouverte à l'interprétation, mais il y a certaines choses à garder à l'esprit à ce sujet:
- gardez suffisamment d'espace dans la construction pour l'arduino et une carte à souder
- assurez-vous qu'il y a un trou à l'arrière pour la puissance de l'arduino
J'ai ajouté un schéma approximatif pour le câblage.
Bonne chance et amusez-vous bien!
Conseillé:
Un jeu de devinettes simple - Python + XBees + Arduino : 10 étapes
Un jeu de devinettes simple - Python + XBees + Arduino : Voici comment le jeu fonctionne : Devinez la bonne lettre : vous gagnez ! ?-> Devinez la mauvaise lettre : Game over ?-> Devinez tout autre caractère en dehors de "a" - "h": Game over ? Votre Arduino vous laissera
Contrôleur de jeu DIY basé sur Arduino - Contrôleur de jeu Arduino PS2 - Jouer à Tekken avec la manette de jeu DIY Arduino : 7 étapes
Contrôleur de jeu DIY basé sur Arduino | Contrôleur de jeu Arduino PS2 | Jouer à Tekken avec la manette de jeu DIY Arduino : Bonjour les gars, jouer à des jeux est toujours amusant, mais jouer avec votre propre contrôleur de jeu personnalisé DIY est plus amusant. Nous allons donc créer un contrôleur de jeu utilisant arduino pro micro dans cette instructables
Jeu de devinettes Python simple : 11 étapes
Jeu de devinettes de nombre Python simple : Dans ce didacticiel, nous allons apprendre à créer un jeu de devinette de nombre Python simple dans l'application Pycharm. Python est un langage de script qui convient aussi bien aux débutants qu'aux experts. Le style de codage en Python est facile à lire et à suivre
Jeu de devinettes Python : 9 étapes
Jeu de devinettes Python : les instructions suivantes expliquent étape par étape comment écrire un programme à l'aide du module aléatoire et créer un jeu de devinettes qui interagit avec l'utilisateur. Pour commencer, vous devez avoir python installé sur votre ordinateur et également op
Quelle est la petite pensée? Créez un jeu de devinettes simple avec le BBC Microbit ! : 10 étapes
Quelle est la petite pensée? Faites un jeu de devinettes simple avec le BBC Microbit ! : J'ai récupéré quelques BBC Microbits après avoir lu des critiques positives à leur sujet dans plusieurs articles en ligne. quelques heures et est venu avec