![IR-Remote Color Guessing Game: 3 trinn IR-Remote Color Guessing Game: 3 trinn](https://i.howwhatproduce.com/images/006/image-16848-17-j.webp)
Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-23 15:02
![IR-Remote Color Guessing Game IR-Remote Color Guessing Game](https://i.howwhatproduce.com/images/006/image-16848-18-j.webp)
I denne instruksen vil jeg vise deg hvordan du styrer en RGB-ledning ved hjelp av en IR-fjernkontroll, og gjør et morsomt spill ut av det!
Trinn 1: Nødvendige deler
![Nødvendige deler Nødvendige deler](https://i.howwhatproduce.com/images/006/image-16848-19-j.webp)
Delene du trenger for dette prosjektet er:
- arduino one- RGB LED- IR-sensor
(antall ledninger avhenger av spillet, livsmengden eller)- 2 grønne lysdioder- 1 gul lysdiode- 1 oransje ledning- 3 røde lysdioder
Trinn 2: Kode
#inkludere
int redPin = 10;
int greenPin = 6; int bluePin = 5;
int levensPin1 = 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); resultater for dekoderesultater;
// input farger
int input = {-1, -1, -1}; int farge = {-1, -1, -1};
int indexNumber = 0;
int indexColor = 0;
int verdi = 0;
int rood = 0;
int groen = 0; int blauw = 0;
// generere farger
int roodRandom = 0; int groenRandom = 0; int blauwRandom = 0;
// spillvariabler
int diff = 200;
int levelNumber = 1;
int nivå = {-1, -1, -1, -1};
int t = 0;
int nivå1 = 255;
int nivå2 = 0; int nivå3 = 0; int nivå4 = 0;
int liv = 3;
int liv1 = 255; int liv2 = 255; int liv3 = 255;
int roodGok = 0;
int groenGok = 0; int blauwGok = 0;
ugyldig oppsett () {
Serial.begin (9600); irrecv.enableIRIn (); // start mottaker pinMode (redPin, OUTPUT); pinMode (greenPin, OUTPUT); pinMode (bluePin, OUTPUT);
pinMode (levensPin1, OUTPUT);
pinMode (levensPin2, OUTPUT); pinMode (levensPin3, OUTPUT);
}
void loop () {
if (irrecv.decode (& results)) // motta signalene fra den eksterne {Serial.println (results.value, DEC); // vise signalene mottatt fra hver trykk på knappen irrecv.resume (); // motta neste signalbryter (results.value) {// snu signalene til tallene på knappene, og tilordne handlinger til knappene
sak 109562864:
addWaarde (1); gå i stykker;
sak 109562824:
addWaarde (2); gå i stykker;
sak 109562856:
addWaarde (3); gå i stykker;
sak 109562872:
addWaarde (4); gå i stykker;
sak 109562820:
addWaarde (5); gå i stykker;
sak 109562852:
addWaarde (6); gå i stykker;
sak 109562868:
addWaarde (7); gå i stykker;
sak 109562828:
addWaarde (8); gå i stykker;
sak 109562860:
addWaarde (9); gå i stykker;
sak 109562876:
addWaarde (0); gå i stykker;
sak 109562818: // oud ding enter/R CLK
handleInput (); gå i stykker;
sak 109562816: // oud ding power
handleColor (); gå i stykker; sak 109562878: // oud ding cancel/L CLK resetColor (); gå i stykker;
sak 109562866: // lege knop mellom
randomColor (); gå i stykker;
sak 109562830: // pijltje naar rechts
displayEverything (); gå i stykker; sak 109562838: // esc sak 109562822: // AV kilde resetEverything (); gå i stykker; }
// tilordne knapper på fjernkontrollen for å kontrollere fargen: på denne måten kan spillerne se hvordan fargene ser ut og hvordan de kombineres, // før du starter et spill. switch (results.value) {case 109562840: rood = 255; gå i stykker;
sak 109562844:
groen = 255; gå i stykker;
sak 109562850:
blauw = 255; gå i stykker;
sak 109562836:
rood = 0; groen = 0; blauw = 0; gå i stykker; }
}
analogWrite (redPin, abs (255 - rood)); // kontrollere RGB led: i revers, fordi min er kablet i revers.
analogWrite (greenPin, abs (255 - groen)); analogWrite (bluePin, abs (255 - blauw));
// kontrollere levende lysdioder
hvis (lever == 2) {levens1 = 0; } hvis (lever == 1) {levens2 = 0; } hvis (lever == 0) {levens3 = 0; } analogWrite (levensPin1, liv1); analogWrite (levensPin2, levens2); analogWrite (levensPin3, levens3);
// kontrollerende lysdioder
hvis (levelNumber == 1) {level1 = 255; } hvis (levelNumber == 2) {level1 = 255; nivå 2 = 255; } hvis (levelNumber == 3) {level1 = 255; nivå 2 = 255; nivå3 = 255; } hvis (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 verdi) {// legg presset verdi til listen
hvis (indexNumber == 3) {
komme tilbake; }
if (input [indexNumber] == -1) {
input [indexNumber] = verdi; indexNumber ++; }}
void handleInput () {// lage et 'waarde' (verdi) ut av listen
waarde = abs (input [0] * 100 + input [1] * 10 + input [2]); input [0] = -1; // reset the signalen input [1] = -1; inngang [2] = -1;
indexNumber = 0;
Serial.print ("waarde bevart:"); Serial.println (verdi); addColor (waarde); }
void addColor (int waarde) {// legg til det tresifrede "verdien" i en liste
hvis (indexColor == 3) {
komme tilbake; }
hvis (farge [indexColor] == -1) {
color [indexColor] = verdi; hvis (farge [indexColor]> 255) {color [indexColor] = 255; } indexColor ++; }
}
void randomColor () {// få lyset til å bli en tilfeldig farge og lagre det i variabler
roodRandom = tilfeldig (0, 255);
groenRandom = tilfeldig (0, 255);
blauwRandom = tilfeldig (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 () {// slå 'waarde' fra listen til 'Gok' (gjetning) variabler
roodGok = farge [0]; groenGok = farge [1]; blauwGok = farge [2]; // sjekk om Gok -variablene avviker for mye med den virkelige tilfeldige fargen: vis i så fall gjetningen i tre sekunder, blink grønt og endre fargen igjen, legg til et nivå og gjør den tillatte forskjellen mindre // hvis ikke, vis gjett i tre sekunder, blunker rødt og trekk et liv // hvis du er tom for liv, starter spillet igjen hvis (abs ((rood + groen + blauw) - (roodGok + groenGok + blauwGok)) <= diff) { analogWrite (redPin, abs (255 - roodGok)); analogWrite (greenPin, abs (255 - groenGok)); analogWrite (bluePin, abs (255 - blauwGok)); forsinkelse (3000); analogWrite (redPin, 255); analogWrite (greenPin, 0); analogWrite (bluePin, 255); forsinkelse (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); forsinkelse (300); analogWrite (redPin, 255); analogWrite (greenPin, 0); analogWrite (bluePin, 255); forsinkelse (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); forsinkelse (300);
Serial.print ("roodGok =");
Serial.println (roodGok); Serial.print ("groenGok ="); Serial.println (groenGok); Serial.print ("blauwGok ="); Serial.println (blauwGok); resetColor (); randomColor (); levelNumber ++; diff -= 50; } annet {analogWrite (redPin, abs (255 - roodGok)); analogWrite (greenPin, abs (255 - groenGok)); analogWrite (bluePin, abs (255 - blauwGok)); forsinkelse (3000); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); forsinkelse (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); forsinkelse (300); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); forsinkelse (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); forsinkelse (300); Serial.print ("roodGok ="); Serial.println (roodGok); Serial.print ("groenGok ="); Serial.println (groenGok); Serial.print ("blauwGok ="); Serial.println (blauwGok);
resetColor ();
bor--; } if (lives == 0) {analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); forsinkelse (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); forsinkelse (100); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); forsinkelse (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); forsinkelse (100); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); forsinkelse (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); forsinkelse (100); resetEverything (); }
}
void resetColor () {// bruk for tilbakestillingsverdier, for feil trykk eller hvert nytt gjetning (bare for sikkerhet)
farge [0] = -1; farge [1] = -1; farge [2] = -1;
indexNumber = 0;
indexColor = 0; }
void resetEverything () {// start spillet på nytt
farge [0] = -1; farge [1] = -1; farge [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 () {// bruk dette til å vise viktig informasjon på den serielle skjermen
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 bevart:");
Serial.println (verdi); }
Trinn 3: Bygg
![Bygge Bygge](https://i.howwhatproduce.com/images/006/image-16848-20-j.webp)
![Bygge Bygge](https://i.howwhatproduce.com/images/006/image-16848-21-j.webp)
![Bygge Bygge](https://i.howwhatproduce.com/images/006/image-16848-22-j.webp)
![Bygge Bygge](https://i.howwhatproduce.com/images/006/image-16848-23-j.webp)
Du vil tydeligvis ha et fint bygg for dette prosjektet. denne delen er ganske åpen for tolkning, men det er noen ting du må huske på med dette: - hold frontpanelet tynt, slik at du fortsatt kan holde lysdiodene dine gjennom det og IR -mottakeren fungerer fortsatt
- behold nok plass i bygget for arduinoen og et loddebrett
- sørg for at det er et hull i ryggen for arduinoens kraft
Jeg har lagt til et grovt opplegg for ledningene.
Lykke til og ha det moro!
Anbefalt:
Arduino Rhythm Game Controller (for My Own Game): 6 trinn
![Arduino Rhythm Game Controller (for My Own Game): 6 trinn Arduino Rhythm Game Controller (for My Own Game): 6 trinn](https://i.howwhatproduce.com/images/010/image-27733-j.webp)
Arduino Rhythm Game Controller (for My Own Game): I denne instruktive vil jeg vise deg hvordan jeg bygger denne Rhythm Game Controller fra bunnen av. Det innebærer grunnleggende trebearbeidingskunnskaper, grunnleggende 3d -utskriftskunnskaper og grunnleggende loddeferdigheter. Du kan sannsynligvis bygge dette prosjektet vellykket hvis du har null eks
Arduino Game Controller + Unity Game: 5 trinn
![Arduino Game Controller + Unity Game: 5 trinn Arduino Game Controller + Unity Game: 5 trinn](https://i.howwhatproduce.com/images/002/image-5572-10-j.webp)
Arduino Game Controller + Unity Game: I denne instruksjonsfulle vil jeg vise deg hvordan du bygger/programmerer en arduino spillkontroller som kan koble seg til enhet
Simple Python Number Guessing Game: 11 trinn
![Simple Python Number Guessing Game: 11 trinn Simple Python Number Guessing Game: 11 trinn](https://i.howwhatproduce.com/images/004/image-10212-31-j.webp)
Simple Python Number Guessing Game: I denne opplæringen skal vi lære hvordan du lager et enkelt Python -gjetningsspill i Pycharm -applikasjonen. Python er et skriptspråk som er flott for både nybegynnere og eksperter. Kodestilen i Python er lett å lese og følger
"Color Match" (Reflex Game): 4 trinn
!["Color Match" (Reflex Game): 4 trinn "Color Match" (Reflex Game): 4 trinn](https://i.howwhatproduce.com/images/006/image-16946-16-j.webp)
"Color Match" (Reflex Game): Intro: For skoleprosjektet mitt var jeg usikker på hva jeg skulle lage, men etter litt tenking bestemte jeg meg for å lage et refleksspill. Vi er tross alt en spillskole. Vi måtte lage noe interaktivt og unikt, så et spill ville være perfekt! Jeg er glad for at alt du
Game Boy Color Cartridge Ilummination (GBC): 5 trinn
![Game Boy Color Cartridge Ilummination (GBC): 5 trinn Game Boy Color Cartridge Ilummination (GBC): 5 trinn](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): Denne instruksjonen viser hvordan du bruker en LED til å belyse en GBC -kassett