![IR-Remote Color Guessing Game: 3 steg IR-Remote Color Guessing Game: 3 steg](https://i.howwhatproduce.com/images/006/image-16848-17-j.webp)
Innehållsförteckning:
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-23 15:11
![IR-Remote Color Guessing Game IR-Remote Color Guessing Game](https://i.howwhatproduce.com/images/006/image-16848-18-j.webp)
I denna instruerbara, kommer jag att visa dig hur du styr en RGB-LED med en IR-fjärrkontroll, och gör ett roligt spel av det!
Steg 1: Delar som behövs
![Delar som behövs Delar som behövs](https://i.howwhatproduce.com/images/006/image-16848-19-j.webp)
De delar du behöver för detta projekt är:
- arduino one- RGB LED- IR-sensor
(antal led beror på spelet, livsmängden eller)- 2 gröna lysdioder- 1 gul lysdiod- 1 orange lysdiod- 3 röda lysdioder
Steg 2: Kod
#omfatta
int redPin = 10;
int greenPin = 6; int bluePin = 5;
int livPin1 = 8;
int levensPin2 = 9; int livPin3 = 12;
int levelPin1 = 2;
int levelPin2 = 3; int levelPin3 = 4; int levelPin4 = 7;
int RECV_PIN = 11;
IRrecv irrecv (RECV_PIN); resultat avkodningsresultat;
// inmatningsfärger
int input = {-1, -1, -1}; int färg = {-1, -1, -1};
int indexNumber = 0;
int indexColor = 0;
int värde = 0;
int rood = 0;
int groen = 0; int blauw = 0;
// skapa färger
int roodRandom = 0; int groenRandom = 0; int blauwRandom = 0;
// spelvariabler
int diff = 200;
int levelNumber = 1;
int -nivå = {-1, -1, -1, -1};
int t = 0;
int level1 = 255;
int level2 = 0; int level3 = 0; int level4 = 0;
int liv = 3;
int liv1 = 255; int liv2 = 255; int liv3 = 255;
int roodGok = 0;
int groenGok = 0; int blauwGok = 0;
void setup () {
Serial.begin (9600); irrecv.enableIRIn (); // starta mottagarens pinMode (redPin, OUTPUT); pinMode (greenPin, OUTPUT); pinMode (bluePin, OUTPUT);
pinMode (levensPin1, OUTPUT);
pinMode (levensPin2, OUTPUT); pinMode (levensPin3, OUTPUT);
}
void loop () {
if (irrecv.decode (& results)) // ta emot signalerna från fjärrkontrollen {Serial.println (results.value, DEC); // visa signalerna som tas emot från varje nedtryckt knapp irrecv.resume (); // ta emot nästa signalomkopplare (results.value) {// förvandla signalerna till siffrorna på knapparna och tilldela knapparna åtgärder
fall 109562864:
addWaarde (1); ha sönder;
fall 109562824:
addWaarde (2); ha sönder;
fall 109562856:
addWaarde (3); ha sönder;
fall 109562872:
addWaarde (4); ha sönder;
fall 109562820:
addWaarde (5); ha sönder;
fall 109562852:
addWaarde (6); ha sönder;
fall 109562868:
addWaarde (7); ha sönder;
fall 109562828:
addWaarde (8); ha sönder;
fall 109562860:
addWaarde (9); ha sönder;
fall 109562876:
addWaarde (0); ha sönder;
fall 109562818: // oud ding enter/R CLK
handleInput (); ha sönder;
fall 109562816: // oud ding power
handleColor (); ha sönder; fall 109562878: // oud ding cancel/L CLK resetColor (); ha sönder;
fall 109562866: // lege knop midden
slumpmässig färg(); ha sönder;
ärende 109562830: // pijltje naar rechts
displayEverything (); ha sönder; fall 109562838: // esc fall 109562822: // AV källa resetEverything (); ha sönder; }
// tilldela knappar på fjärrkontrollen för att styra färgen: på så sätt kan spelarna se hur färgerna ser ut och hur de kombineras, // innan du startar ett spel. switch (results.value) {case 109562840: rood = 255; ha sönder;
fall 109562844:
groen = 255; ha sönder;
fall 109562850:
blauw = 255; ha sönder;
fall 109562836:
rood = 0; groen = 0; blauw = 0; ha sönder; }
}
analogWrite (redPin, abs (255 - rood)); // styr RGB -led: i omvänd ordning, eftersom min är trådbunden i omvänd ordning.
analogWrite (greenPin, abs (255 - groen)); analogWrite (bluePin, abs (255 - blauw));
// styr levande lysdioder
if (lives == 2) {levens1 = 0; } if (lives == 1) {levens2 = 0; } if (lives == 0) {levens3 = 0; } analogWrite (livPin1, liv1); analogWrite (livPin2, liv2); analogWrite (levensPin3, liv3);
// kontrollnivåer
if (levelNumber == 1) {level1 = 255; } if (levelNumber == 2) {level1 = 255; nivå2 = 255; } if (levelNumber == 3) {level1 = 255; nivå2 = 255; nivå3 = 255; } if (levelNumber == 4) {level1 = 255; nivå2 = 255; nivå3 = 255; nivå4 = 255; } analogWrite (levelPin1, level1); analogWrite (levelPin2, level2); analogWrite (levelPin3, level3); analogWrite (levelPin4, level4);
}
void addWaarde (int -värde) {// lägg till ett pressat värde i listan
if (indexNumber == 3) {
lämna tillbaka; }
if (input [indexNumber] == -1) {
input [indexNumber] = värde; indexNumber ++; }}
void handleInput () {// gör ett "värde" (värde) ur listan
waarde = abs (input [0] * 100 + input [1] * 10 + input [2]); ingång [0] = -1; // reset de signalen input [1] = -1; ingång [2] = -1;
indexNumber = 0;
Serial.print ("värde sparlagen:"); Serial.println (värde); addColor (värde); }
void addColor (int waarde) {// lägg till det tresiffriga "värdet" i en lista
if (indexColor == 3) {
lämna tillbaka; }
if (färg [indexColor] == -1) {
färg [indexColor] = värde; if (färg [indexColor]> 255) {color [indexColor] = 255; } indexColor ++; }
}
void randomColor () {// få ljuset att bli en slumpmässig färg och spara det i variabler
roodRandom = random (0, 255);
groenRandom = slumpmässig (0, 255);
blauwRandom = slumpmässig (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 () {// förvandla 'värde' från listan till 'Gok' (gissnings) variabler
roodGok = färg [0]; groenGok = färg [1]; blauwGok = färg [2]; // kontrollera om Gok -variablerna skiljer sig för mycket med den verkliga slumpmässiga färgen: visa i så fall gissningen i tre sekunder, blinka grönt och ändra färgen igen, lägg till en nivå och gör den tillåtna skillnaden mindre // om inte, visa gissa i tre sekunder, blinka rött och dra av ett liv // om du är slut, börjar spelet igen om (abs ((rood + groen + blauw) - (roodGok + groenGok + blauwGok)) <= diff) { analogWrite (redPin, abs (255 - roodGok)); analogWrite (greenPin, abs (255 - groenGok)); analogWrite (bluePin, abs (255 - blauwGok)); fördröjning (3000); analogWrite (redPin, 255); analogWrite (greenPin, 0); analogWrite (bluePin, 255); fördröjning (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); fördröjning (300); analogWrite (redPin, 255); analogWrite (greenPin, 0); analogWrite (bluePin, 255); fördröjning (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); fördröjning (300);
Serial.print ("roodGok =");
Serial.println (roodGok); Serial.print ("groenGok ="); Serial.println (groenGok); Serial.print ("blauwGok ="); Serial.println (blauwGok); resetColor (); slumpmässig färg(); levelNumber ++; diff -= 50; } else {analogWrite (redPin, abs (255 - roodGok)); analogWrite (greenPin, abs (255 - groenGok)); analogWrite (bluePin, abs (255 - blauwGok)); fördröjning (3000); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); fördröjning (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); fördröjning (300); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); fördröjning (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); fördröjning (300); Serial.print ("roodGok ="); Serial.println (roodGok); Serial.print ("groenGok ="); Serial.println (groenGok); Serial.print ("blauwGok ="); Serial.println (blauwGok);
resetColor ();
lever--; } if (lives == 0) {analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); fördröjning (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); fördröjning (100); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); fördröjning (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); fördröjning (100); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); fördröjning (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); fördröjning (100); resetEverything (); }
}
void resetColor () {// använd för återställning av värden, för fel tryckning eller varje ny gissning (bara för säkerhets skull)
färg [0] = -1; färg [1] = -1; färg [2] = -1;
indexNumber = 0;
indexColor = 0; }
void resetEverything () {// starta om spelet
färg [0] = -1; färg [1] = -1; färg [2] = -1;
indexNumber = 0;
indexColor = 0;
liv = 3;
rood = 0; groen = 0; blauw = 0;
roodRandom = 0;
groenRandom = 0; blauwRandom = 0;
liv1 = 255;
liv2 = 255; liv3 = 255;
nivå 1 = 255;
nivå2 = 0; nivå3 = 0; nivå4 = 0;
levelNumber = 1;
t = 0;
}
void displayEverything () {// använd detta för att visa viktig information på den seriella bildskärmen
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 ("värde sparlagen:");
Serial.println (värde); }
Steg 3: Bygg
![Bygga Bygga](https://i.howwhatproduce.com/images/006/image-16848-20-j.webp)
![Bygga Bygga](https://i.howwhatproduce.com/images/006/image-16848-21-j.webp)
![Bygga Bygga](https://i.howwhatproduce.com/images/006/image-16848-22-j.webp)
![Bygga Bygga](https://i.howwhatproduce.com/images/006/image-16848-23-j.webp)
Du vill självklart ha ett fint bygge för det här projektet. denna del är ganska öppen för tolkning, men det finns några saker att tänka på med detta: - håll frontpanelen tunn, så att du fortfarande kan hålla dina lysdioder genom den och IR -mottagaren fungerar fortfarande
- ha tillräckligt med utrymme i byggnaden för arduino och en lödbräda
- se till att det finns ett hål på baksidan för arduinoens kraft
Jag har lagt till ett grovt schema för ledningarna.
Lycka till och ha kul!
Rekommenderad:
Hur man använder Detect Color TCS3200 med SkiiiD: 9 steg
![Hur man använder Detect Color TCS3200 med SkiiiD: 9 steg Hur man använder Detect Color TCS3200 med SkiiiD: 9 steg](https://i.howwhatproduce.com/images/002/image-5398-j.webp)
Hur man använder Detect Color TCS3200 med SkiiiD: En handledning för att utveckla Detect Color TCS3200 med skiiiD
Arduino Game Controller + Unity Game: 5 steg
![Arduino Game Controller + Unity Game: 5 steg Arduino Game Controller + Unity Game: 5 steg](https://i.howwhatproduce.com/images/002/image-5572-10-j.webp)
Arduino Game Controller + Unity Game: I detta instruerbara ska jag visa dig hur du bygger/programmerar en arduino game controller som kan ansluta till enhet
"Color Match" (Reflex Game): 4 steg
!["Color Match" (Reflex Game): 4 steg "Color Match" (Reflex Game): 4 steg](https://i.howwhatproduce.com/images/006/image-16946-16-j.webp)
"Color Match" (Reflex Game): Intro: För mitt skolprojekt var jag inte säker på vad jag skulle göra, men efter lite funderingar bestämde jag mig för att göra ett reflexspel. Vi är trots allt en spelskola. Vi var tvungna att göra något interaktivt och unikt, så ett spel skulle vara perfekt! Jag är glad över att allt du
Arduino Pocket Game Console + A -Maze - Maze Game: 6 steg (med bilder)
![Arduino Pocket Game Console + A -Maze - Maze Game: 6 steg (med bilder) Arduino Pocket Game Console + A -Maze - Maze Game: 6 steg (med bilder)](https://i.howwhatproduce.com/images/001/image-1962-48-j.webp)
Arduino Pocket Game Console + A -Maze - Maze Game: Välkommen till min första instruerbara! Projektet som jag vill dela med dig idag är Arduino labyrintspel, som blev en fickkonsol lika bra som Arduboy och liknande Arduino -baserade konsoler. Det kan blinka med mina (eller dina) framtida spel tack vare expo
Game Boy Color Cartridge Ilummination (GBC): 5 steg
![Game Boy Color Cartridge Ilummination (GBC): 5 steg Game Boy Color Cartridge Ilummination (GBC): 5 steg](https://i.howwhatproduce.com/preview/how-and-what-to-produce/11123290-game-boy-color-cartridge-ilummination-gbc-5-steps-j.webp)
Game Boy Color Cartridge Ilummination (GBC): Denna instruktion visar hur man använder en LED för att belysa en GBC -patron