Obsah:
Video: IR-Remote Hra na odhadovanie farieb: 3 kroky
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:59
V tomto návode vám ukážem, ako ovládať RGB LED diódu pomocou IR diaľkového ovládača a urobiť z toho zábavnú hru!
Krok 1: Potrebné diely
Časti, ktoré budete potrebovať pre tento projekt, sú:
- arduino one- RGB LED- IR-senzor
(počet LED diód závisí od hry, počtu životov alebo)- 2 zelené LED diódy- 1 žltá LED- 1 oranžová LED- 3 červené LED diódy
Krok 2: Kód
#zahrnúť
int redPin = 10;
int greenPin = 6; int bluePin = 5;
int levensPin1 = 8;
int levensPin2 = 9; int levensPin3 = 12;
int úroveňPin1 = 2;
int úroveňPin2 = 3; int úroveňPin3 = 4; int úroveňPin4 = 7;
int RECV_PIN = 11;
IRrecv unbcv (RECV_PIN); decode_results výsledky;
// zadanie farieb
int vstup = {-1, -1, -1}; vnútorná farba = {-1, -1, -1};
int indexNumber = 0;
int indexColor = 0;
int waarde = 0;
int rood = 0;
int groen = 0; int blauw = 0;
// generovanie farieb
int roodRandom = 0; int groenRandom = 0; int blauwRandom = 0;
// herné premenné
int rozdiel = 200;
int levelNumber = 1;
int úroveň = {-1, -1, -1, -1};
int t = 0;
int úroveň1 = 255;
int úroveň2 = 0; int úroveň3 = 0; int úroveň4 = 0;
int životy = 3;
int levens1 = 255; int levens2 = 255; int levens3 = 255;
int roodGok = 0;
int groenGok = 0; int blauwGok = 0;
neplatné nastavenie () {
Serial.begin (9600); unbcv.enableIRIn (); // spustenie prijímača pinMode (redPin, OUTPUT); pinMode (greenPin, OUTPUT); pinMode (bluePin, OUTPUT);
pinMode (levensPin1, OUTPUT);
pinMode (levensPin2, OUTPUT); pinMode (levensPin3, OUTPUT);
}
prázdna slučka () {
if (unbcv.decode (& results)) // prijíma signály zo vzdialeného {Serial.println (results.value, DEC); // zobrazenie signálov prijatých z každého stlačeného tlačidla ircc.resume (); // príjem prepínača ďalšieho signálu (results.value) {// premena signálov na čísla na tlačidlách a priradenie akcií tlačidlám
prípad 109562864:
addWaarde (1); prestávka;
prípad 109562824:
addWaarde (2); prestávka;
prípad 109562856:
addWaarde (3); prestávka;
prípad 109562872:
addWaarde (4); prestávka;
prípad 109562820:
addWaarde (5); prestávka;
prípad 109562852:
addWaarde (6); prestávka;
prípad 109562868:
addWaarde (7); prestávka;
prípad 109562828:
addWaarde (8); prestávka;
prípad 109562860:
addWaarde (9); prestávka;
prípad 109562876:
addWaarde (0); prestávka;
prípad 109562818: // oud ding enter/R CLK
handleInput (); prestávka;
prípad 109562816: // oud ding power
handleColor (); prestávka; case 109562878: // oud ding cancel/L CLK resetColor (); prestávka;
prípad 109562866: // lege knop midden
randomColor (); prestávka;
prípad 109562830: // pijltje naar rechts
displayEverything (); prestávka; case 109562838: // esc case 109562822: // AV source resetEverything (); prestávka; }
// priradenie tlačidiel na diaľkovom ovládači na ovládanie farieb: hráči tak môžu vidieť, ako farby vyzerajú a ako ich kombinovať, // pred spustením hry. prepínač (results.value) {prípad 109562840: rood = 255; prestávka;
prípad 109562844:
groen = 255; prestávka;
prípad 109562850:
blauw = 255; prestávka;
prípad 109562836:
rood = 0; groen = 0; blauw = 0; prestávka; }
}
analogWrite (redPin, abs (255 - rood)); // ovládanie RGB LED: opačne, pretože moje je zapojené opačne.
analogWrite (greenPin, abs (255 - groen)); analogWrite (bluePin, abs (255 - blauw));
// ovládanie živých LED diód
ak (žije == 2) {levens1 = 0; } if (žije == 1) {levens2 = 0; } if (žije == 0) {levens3 = 0; } analogWrite (levensPin1, levens1); analogWrite (levensPin2, levens2); analogWrite (levensPin3, levens3);
// ovládanie LED diód úrovne
if (levelNumber == 1) {level1 = 255; } if (levelNumber == 2) {level1 = 255; úroveň2 = 255; } if (levelNumber == 3) {level1 = 255; úroveň2 = 255; úroveň3 = 255; } if (levelNumber == 4) {level1 = 255; úroveň2 = 255; úroveň3 = 255; úroveň4 = 255; } analogWrite (levelPin1, level1); analogWrite (levelPin2, level2); analogWrite (levelPin3, level3); analogWrite (levelPin4, level4);
}
void addWaarde (int hodnota) {// pridanie lisovanej hodnoty do zoznamu
if (indexNumber == 3) {
návrat; }
if (input [indexNumber] == -1) {
vstup [indexNumber] = hodnota; indexNumber ++; }}
void handleInput () {// urobí 'waarde' (hodnotu) zo zoznamu
waarde = abs (vstup [0] * 100 + vstup [1] * 10 + vstup [2]); vstup [0] = -1; // reset vstupného signálu [1] = -1; vstup [2] = -1;
indexNumber = 0;
Serial.print ("waarde opgeslagen:"); Serial.println (waarde); addColor (waarde); }
void addColor (int waarde) {// pridanie trojciferného „waarde“do zoznamu
if (indexColor == 3) {
návrat; }
if (farba [indexColor] == -1) {
farba [indexColor] = waarde; if (farba [indexColor]> 255) {farba [indexColor] = 255; } indexColor ++; }
}
void randomColor () {// urobí zo svetla náhodnú farbu a uloží ho do premenných
roodRandom = náhodný (0, 255);
groenRandom = náhodný (0, 255);
blauwRandom = náhodný (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 () {// zmení „waarde“zo zoznamu na „gok“(hádajte) premenné
roodGok = farba [0]; groenGok = farba [1]; blauwGok = farba [2]; // skontrolujte, či sa premenné Gok príliš líšia skutočnou náhodnou farbou: ak áno, zobrazte odhad na tri sekundy, blikajte zelenou farbou a znova zmeňte farbu, pridajte úroveň a zmenšite povolený rozdiel // ak nie, zobrazte hádajte tri sekundy, červeno blikajte a odpočítajte život // ak ste mimo života, hra sa začne znova, ak (abs ((rood + groen + blauw) - (roodGok + groenGok + blauwGok)) <= diff) { analogWrite (redPin, abs (255 - roodGok)); analogWrite (greenPin, abs (255 - groenGok)); analogWrite (bluePin, abs (255 - blauwGok)); oneskorenie (3000); analogWrite (redPin, 255); analogWrite (greenPin, 0); analogWrite (bluePin, 255); oneskorenie (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); oneskorenie (300); analogWrite (redPin, 255); analogWrite (greenPin, 0); analogWrite (bluePin, 255); oneskorenie (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); oneskorenie (300);
Serial.print ("roodGok =");
Serial.println (roodGok); Serial.print ("groenGok ="); Serial.println (groenGok); Serial.print ("blauwGok ="); Serial.println (blauwGok); resetColor (); randomColor (); levelNumber ++; rozdiel -= 50; } else {analogWrite (redPin, abs (255 - roodGok)); analogWrite (greenPin, abs (255 - groenGok)); analogWrite (bluePin, abs (255 - blauwGok)); oneskorenie (3000); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); oneskorenie (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); oneskorenie (300); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); oneskorenie (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); oneskorenie (300); Serial.print ("roodGok ="); Serial.println (roodGok); Serial.print ("groenGok ="); Serial.println (groenGok); Serial.print ("blauwGok ="); Serial.println (blauwGok);
resetColor ();
životy--; } if (lives == 0) {analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); oneskorenie (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); oneskorenie (100); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); oneskorenie (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); oneskorenie (100); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); oneskorenie (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); oneskorenie (100); resetVšetko (); }
}
void resetColor () {// použite na resetovanie hodnôt, na nesprávne stlačenie alebo každý nový odhad (len pre istotu)
farba [0] = -1; farba [1] = -1; farba [2] = -1;
indexNumber = 0;
indexColor = 0; }
void resetEverything () {// reštart hry
farba [0] = -1; farba [1] = -1; farba [2] = -1;
indexNumber = 0;
indexColor = 0;
životy = 3;
rood = 0; groen = 0; blauw = 0;
roodRandom = 0;
groenRandom = 0; blauwRandom = 0;
levens1 = 255;
levens2 = 255; levens3 = 255;
úroveň1 = 255;
úroveň2 = 0; úroveň3 = 0; úroveň4 = 0;
levelNumber = 1;
t = 0;
}
void displayEverything () {// slúži na zobrazenie dôležitých informácií na sériovom monitore
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); }
Krok 3: Zostavte
Očividne chcete pre tento projekt peknú zostavu. Táto časť je celkom otvorená interpretácii, ale je potrebné mať na pamäti niekoľko vecí: - Predný panel udržujte tenký, aby ste cez neho stále mohli zasunúť diódy a infračervený prijímač stále funguje.
- v zostave ponechajte dostatok miesta pre arduino a spájkovaciu dosku
- uistite sa, že v zadnej časti je otvor pre silu arduina
Pridal som hrubú schému zapojenia.
Veľa šťastia a zabav sa!
Odporúča:
Octarine: hra na zladenie farieb s LED diódami WS2812 RGB: 6 krokov
Octarine: hra na zladenie farieb s LED diódami WS2812 RGB: Octarine, farba mágie. Bolo to živé a žiarivo žiarivé a bol to nesporný pigment predstavivosti, pretože kdekoľvek sa objavil, bolo to znamenie, že obyčajná hmota bola služobníkom síl magickej mysle. Boli to kúzelníci
Spracovanie obrazu s Raspberry Pi: Inštalácia OpenCV a oddelenie farieb obrazu: 4 kroky
Spracovanie obrazu s Raspberry Pi: Inštalácia OpenCV a separácie farieb obrazu: Tento príspevok je prvým z niekoľkých návodov na spracovanie obrazu, ktoré treba nasledovať. Bližšie sa pozrieme na pixely, ktoré tvoria obrázok, naučíme sa nainštalovať OpenCV na Raspberry Pi a tiež píšeme testovacie skripty na zachytenie obrázku a tiež
Hra Crack the Code, logická hra založená na Arduine: 4 kroky (s obrázkami)
Hra Crack the Code, logická škatuľka založená na Arduine: V tomto návode vám ukážem, ako si vytvoriť vlastnú crackovú hru, v ktorej pomocou otočného voliča uhádnete náhodne vygenerovaný kód do sejfu. Na prednej strane trezoru je 8 LED diód, ktoré vám informujú, koľko z
Maľovačka na detekciu farieb: 4 kroky
Maľovačka na detekciu farieb: Maľovačka na detekciu farieb kopíruje farby okolo vás a umožňuje vám s nimi kresliť. Ak máte farbu základných farieb, môžete pomocou senzora farieb RGB rozpoznať požadovanú farbu a zmiešať ju. Nezabudnite však, že použijete objekt jasných farieb
Ovládanie farieb RGB LED: 4 kroky
Ovládanie farieb RGB LED: V tomto projekte sa naučíme ovládať jas a farbu RGB LED pomocou I/O portov s možnosťou výstupu PWM a posúvačov dotykového displeja. Odporový dotykový displej 4Duino sa používa ako prostriedok pre grafické rozhranie na ovládanie