Sisällysluettelo:
Video: IR-Remote Color Guessing Game: 3 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:02
Tässä ohjeessa näytän sinulle, kuinka hallita RGB-lediä IR-kaukosäätimellä ja tehdä siitä hauska peli!
Vaihe 1: Tarvittavat osat
Osat, joita tarvitset tähän projektiin, ovat:
- arduino one- RGB Led-IR-anturi
(ledien määrä riippuu pelistä, henkien määrästä tai)- 2 vihreää lediä- 1 keltainen led- 1 oranssi led- 3 punaista lediä
Vaihe 2: Koodi
#sisältää
int redPin = 10;
int greenPin = 6; int bluePin = 5;
int levensPin1 = 8;
int levensPin2 = 9; int levensPin3 = 12;
int tasoPin1 = 2;
int tasoPin2 = 3; int tasoPin3 = 4; int tasoPin4 = 7;
int RECV_PIN = 11;
IRrecv irrecv (RECV_PIN); decode_results tulokset;
// syöttää värejä
int -tulo = {-1, -1, -1}; int väri = {-1, -1, -1};
int indexNumber = 0;
int indexColor = 0;
int waarde = 0;
int rood = 0;
int groen = 0; int blauw = 0;
// luoda värejä
int roodRandom = 0; int groenRandom = 0; int blauwRandom = 0;
// pelimuuttujat
int diff = 200;
int levelNumber = 1;
int -taso = {-1, -1, -1, -1};
int t = 0;
int taso1 = 255;
int taso2 = 0; int taso3 = 0; int taso4 = 0;
int elämää = 3;
int levens1 = 255; int levens2 = 255; int levens3 = 255;
int roodGok = 0;
int groenGok = 0; int blauwGok = 0;
void setup () {
Sarja.alku (9600); irrecv.enableIRIn (); // Käynnistä vastaanotin pinMode (redPin, OUTPUT); pinMode (greenPin, OUTPUT); pinMode (bluePin, OUTPUT);
pinMode (levensPin1, OUTPUT);
pinMode (levensPin2, OUTPUT); pinMode (levensPin3, OUTPUT);
}
void loop () {
if (irrecv.decode (& results)) // vastaanottaa signaalit kauko -ohjaimesta {Serial.println (results.value, DEC); // näyttää jokaisesta painetusta painikkeesta vastaanotetut signaalit irrecv.resume (); // vastaanottaa seuraavan signaalikytkimen (results.value) {// muuttaa signaalit painikkeiden numeroiksi ja määrittää painikkeille toimintoja
tapaus 109562864:
addWaarde (1); tauko;
tapaus 109562824:
addWaarde (2); tauko;
tapaus 109562856:
addWaarde (3); tauko;
tapaus 109562872:
addWaarde (4); tauko;
tapaus 109562820:
addWaarde (5); tauko;
tapaus 109562852:
addWaarde (6); tauko;
tapaus 109562868:
addWaarde (7); tauko;
tapaus 109562828:
addWaarde (8); tauko;
tapaus 109562860:
addWaarde (9); tauko;
tapaus 109562876:
addWaarde (0); tauko;
tapaus 109562818: // oud ding enter/R CLK
handleInput (); tauko;
tapaus 109562816: // oud ding power
kahvaVäri (); tauko; tapaus 109562878: // oud ding Cancel/L CLK resetColor (); tauko;
tapaus 109562866: // lege knop midden
randomColor (); tauko;
tapaus 109562830: // pijltje naar rechts
displayEverything (); tauko; tapaus 109562838: // esc -tapaus 109562822: // AV -lähteen nollausEverything (); tauko; }
// määritä kauko -ohjaimen painikkeet värin hallitsemiseksi: tällä tavalla pelaajat voivat nähdä miltä värit näyttävät ja miten ne yhdistetään, // ennen pelin aloittamista. kytkin (tulokset.arvo) {tapaus 109562840: rood = 255; tauko;
tapaus 109562844:
groen = 255; tauko;
tapaus 109562850:
blauw = 255; tauko;
tapaus 109562836:
rood = 0; groen = 0; blauw = 0; tauko; }
}
analogWrite (redPin, abs (255 - rood)); // RGB -ledin ohjaus: taaksepäin, koska omani on kytketty taaksepäin.
analogWrite (greenPin, abs (255 - groen)); analogWrite (bluePin, abs (255 - musta));
// live -ledien hallinta
jos (elää == 2) {levens1 = 0; } jos (elää == 1) {levens2 = 0; } jos (elää == 0) {levens3 = 0; } analogWrite (levensPin1, levens1); analogWrite (levensPin2, levens2); analogWrite (levensPin3, levens3);
// tason ledien hallinta
jos (levelNumber == 1) {level1 = 255; } jos (levelNumber == 2) {level1 = 255; taso2 = 255; } jos (levelNumber == 3) {level1 = 255; taso2 = 255; taso3 = 255; } jos (levelNumber == 4) {level1 = 255; taso2 = 255; taso3 = 255; taso4 = 255; } analogWrite (tasoPin1, taso1); analogWrite (tasoPin2, taso2); analogWrite (tasoPin3, taso3); analogWrite (tasoPin4, taso4);
}
void addWaarde (int -arvo) {// lisää painettu arvo luetteloon
jos (indeksinumero == 3) {
palata; }
jos (syöte [indeksinumero] == -1) {
input [indexNumber] = arvo; indeksinumero ++; }}
void handleInput () {// tee waarde (arvo) luettelosta
waarde = abs (tulo [0] * 100 + tulo [1] * 10 + tulo [2]); tulo [0] = -1; // signaalin tulon nollaus [1] = -1; tulo [2] = -1;
indeksinumero = 0;
Serial.print ("waarde opgeslagen:"); Sarja.println (waarde); addColor (waarde); }
void addColor (int waarde) {// lisää 3-numeroinen waarde luetteloon
jos (indexColor == 3) {
palata; }
jos (väri [indexColor] == -1) {
väri [indeksiväri] = waarde; if (väri [indeksin väri]> 255) {väri [indeksin väri] = 255; } indexColor ++; }
}
void randomColor () {// tee valosta satunnainen väri ja tallenna se muuttujiin
roodRandom = satunnainen (0, 255);
groenRandom = satunnainen (0, 255);
blauwRandom = satunnainen (0, 255);
rood = roodRandom;
groen = groenRandom; blauw = blauwRandom; Serial.print ("roodRandom ="); Sarja.println (roodRandom); Serial.print ("groenRandom ="); Serial.println (groenRandom); Serial.print ("blauwRandom ="); Sarja.println (blauwRandom);
}
void handleColor () {// muuttaa Waarden luettelosta Gok -arvaimiksi
roodGok = väri [0]; groenGok = väri [1]; blauwGok = väri [2]; // tarkista, eroavatko Gok -muuttujat liikaa todellisesta satunnaisesta väristä: jos on, näytä arvaus kolmen sekunnin ajan, vilkku vihreänä ja vaihda väri uudelleen, lisää taso ja pienennä sallittu ero // jos ei, näytä arvata kolme sekuntia, vilkkua punaisena ja vähentää elämä // jos olet poissa elämästä, peli alkaa uudelleen, jos (abs ((rood + groen + blauw) - (roodGok + groenGok + blauwGok)) <= diff) { analogWrite (redPin, abs (255 - roodGok)); analogWrite (vihreäPin, abs (255 - groenGok)); analogWrite (bluePin, abs (255 - blauwGok)); viive (3000); analogWrite (redPin, 255); analogWrite (vihreäPin, 0); analogWrite (bluePin, 255); viive (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); viive (300); analogWrite (redPin, 255); analogWrite (vihreäPin, 0); analogWrite (bluePin, 255); viive (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); viive (300);
Serial.print ("roodGok =");
Sarja.println (roodGok); Serial.print ("groenGok ="); Sarja.println (groenGok); Serial.print ("blauwGok ="); Sarja.println (blauwGok); resetColor (); randomColor (); levelNumber ++; diff -= 50; } else {analogWrite (redPin, abs (255 - roodGok)); analogWrite (vihreäPin, abs (255 - groenGok)); analogWrite (bluePin, abs (255 - blauwGok)); viive (3000); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); viive (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); viive (300); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); viive (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); viive (300); Serial.print ("roodGok ="); Sarja.println (roodGok); Serial.print ("groenGok ="); Sarja.println (groenGok); Serial.print ("blauwGok ="); Sarja.println (blauwGok);
resetColor ();
elää-; } if (lives == 0) {analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); viive (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); viive (100); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); viive (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); viive (100); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); viive (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); viive (100); resetEverything (); }
}
void resetColor () {// käytetään arvojen nollaamiseen, väärään painallukseen tai jokaiseen uuteen arvaukseen (varmuuden vuoksi)
väri [0] = -1; väri [1] = -1; väri [2] = -1;
indeksinumero = 0;
indexColor = 0; }
void resetEverything () {// käynnistä peli uudelleen
väri [0] = -1; väri [1] = -1; väri [2] = -1;
indeksinumero = 0;
indexColor = 0;
elämää = 3;
rood = 0; groen = 0; blauw = 0;
roodRandom = 0;
groenRandom = 0; blauwRandom = 0;
levens1 = 255;
levens2 = 255; levens3 = 255;
taso1 = 255;
taso2 = 0; taso3 = 0; taso4 = 0;
levelNumber = 1;
t = 0;
}
void displayEverything () {// käytä tätä näyttääksesi tärkeät tiedot sarjamonitorissa
Serial.print ("roodGok ="); Sarja.println (roodGok); Serial.print ("groenGok ="); Sarja.println (groenGok); Serial.print ("blauwGok ="); Sarja.println (blauwGok); Serial.print ("roodRandom ="); Sarja.println (roodRandom); Serial.print ("groenRandom ="); Serial.println (groenRandom); Serial.print ("blauwRandom ="); Sarja.println (blauwRandom);
Serial.print ("rood =");
Sarja.println (rood); Serial.print ("groen ="); Sarja.println (groen); Serial.print ("blauw ="); Sarja.println (sininen);
Serial.print ("waarde opgeslagen:");
Sarja.println (waarde); }
Vaihe 3: Rakenna
Haluat ilmeisesti hyvän rakenteen tälle projektille. Tämä osa on melko avoin tulkinnalle, mutta tässä on pidettävä mielessä muutama asia: - pidä etupaneeli ohuena, jotta voit edelleen kiinnittää ledit sen läpi ja IR -vastaanotin toimii edelleen
- pidä rakennuksessa tarpeeksi tilaa arduinoa ja juotoslevyä varten
- Varmista, että takana on reikä arduinon teholle
Lisäsin karkean kaavion johdotukselle.
Onnea ja pidä hauskaa!
Suositeltava:
DINO GAME LDR: llä: 5 vaihetta
DINOPELI KÄYTTÄMÄLLÄ LDR: Dinosaur Game, joka tunnetaan myös nimellä T-Rex Game ja Dino Runner, on sisäänrakennettu selainpeli Google Chrome -selaimessa. Pelin loi Sebastien Gabriel vuonna 2014, ja siihen pääsee painamalla välilyöntiä offline -tilassa Google Chromessa. L
Macintosh Classic II Color Hackintosh: 7 vaihetta (kuvien kanssa)
Macintosh Classic II Color Hackintosh: Mac Classic II (M4150, rakennettu vuonna 1992), Classic II Hackintoshin tarina. Pitkän etsimisen jälkeen oikean kokoisen LCD -paneelin korvaamiseksi
Arduino Brick Color Sorter Project: 5 vaihetta
Arduino Brick Color Sorter Project: Tässä Arduino -opetusohjelmassa opimme tunnistamaan lelutiilini värit Arduinon ja TCS3200 -värianturin avulla. Voit lukea alla olevasta kirjallisesta opetusohjelmasta lisätietoja.Materiaalit: Arduino Leonardo x 1TCS3200 x 1 Paljon pahvia180 Servo
"Color Match" (Reflex Game): 4 vaihetta
"Color Match" (Reflex Game): Intro: Kouluprojektiani varten en ollut varma, mitä tehdä, mutta pienen harkinnan jälkeen päätin tehdä refleksipelin. Loppujen lopuksi olemme pelikoulu. Meidän oli tehtävä jotain interaktiivista ja ainutlaatuista, joten peli olisi täydellinen! Olen onnellinen, miten kaikki
Arduino Pocket Game Console + A -Maze - Maze Game: 6 vaihetta (kuvilla)
Arduino Pocket Game Console + A -Maze - Maze Game: Tervetuloa ensimmäiseen ohjeeseeni! Projektini, jonka haluan jakaa kanssasi tänään, on Arduino sokkelopeli, josta tuli taskukonsoli, joka on yhtä kykenevä kuin Arduboy ja vastaavat Arduino -pohjaiset konsolit. Se voidaan välittää minun (tai sinun) tulevien pelieni kanssa Expon ansiosta