Obsah:
Video: IR-Remote Color Guessing Game: 3 kroky
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:22
V tomto pokynu vám ukážu, jak ovládat RGB LED pomocí IR dálkového ovladače a udělat z toho zábavnou hru!
Krok 1: Potřebné součásti
Díly, které budete pro tento projekt potřebovat, jsou:
- arduino one- RGB LED- IR-senzor
(počet LED závisí na hře, množství životů nebo)- 2 zelené LED diody- 1 žlutá LED- 1 oranžová LED- 3 červené LED diody
Krok 2: Kód
#zahrnout
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;
// zadání barev
int vstup = {-1, -1, -1}; int barva = {-1, -1, -1};
int indexNumber = 0;
int indexColor = 0;
int waarde = 0;
int rood = 0;
int groen = 0; int blauw = 0;
// generování barev
int roodRandom = 0; int groenRandom = 0; int blauwRandom = 0;
// herní proměnné
int rozdíl = 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é nastavení () {
Serial.begin (9600); unbcv.enableIRIn (); // spusťte přijímač pinMode (redPin, OUTPUT); pinMode (greenPin, OUTPUT); pinMode (bluePin, OUTPUT);
pinMode (levensPin1, OUTPUT);
pinMode (levensPin2, OUTPUT); pinMode (levensPin3, OUTPUT);
}
prázdná smyčka () {
if (unbcv.decode (& results)) // přijímá signály ze vzdáleného {Serial.println (results.value, DEC); // zobrazení signálů přijatých z každého stisknutého tlačítka ircv.resume (); // přijímání dalšího přepínače signálu (results.value) {// přeměňuje signály na čísla na tlačítkách a přiřazuje tlačítkům akce
pouzdro 109562864:
addWaarde (1); přestávka;
pouzdro 109562824:
addWaarde (2); přestávka;
pouzdro 109562856:
addWaarde (3); přestávka;
pouzdro 109562872:
addWaarde (4); přestávka;
pouzdro 109562820:
addWaarde (5); přestávka;
pouzdro 109562852:
addWaarde (6); přestávka;
pouzdro 109562868:
addWaarde (7); přestávka;
pouzdro 109562828:
addWaarde (8); přestávka;
pouzdro 109562860:
addWaarde (9); přestávka;
pouzdro 109562876:
addWaarde (0); přestávka;
case 109562818: // oud ding enter/R CLK
handleInput (); přestávka;
case 109562816: // oud ding power
handleColor (); přestávka; case 109562878: // oud ding cancel/L CLK resetColor (); přestávka;
případ 109562866: // lege knop midden
náhodná barva(); přestávka;
případ 109562830: // pijltje naar rechts
displayEverything (); přestávka; case 109562838: // esc case 109562822: // AV source resetEverything (); přestávka; }
// přiřazení tlačítek na dálkovém ovládání pro ovládání barvy: tímto způsobem mohou hráči vidět, jak barvy vypadají a jak je kombinovat, // před spuštěním hry. switch (results.value) {case 109562840: rood = 255; přestávka;
pouzdro 109562844:
groen = 255; přestávka;
pouzdro 109562850:
blauw = 255; přestávka;
pouzdro 109562836:
rood = 0; groen = 0; blauw = 0; přestávka; }
}
analogWrite (redPin, abs (255 - rood)); // ovládání RGB LED: obráceně, protože moje je zapojeno obráceně.
analogWrite (greenPin, abs (255 - groen)); analogWrite (bluePin, abs (255 - blauw));
// ovládání živých LED diod
if (žije == 2) {levens1 = 0; } if (žije == 1) {levens2 = 0; } if (žije == 0) {levens3 = 0; } analogWrite (levensPin1, levens1); analogWrite (levensPin2, levens2); analogWrite (levensPin3, levens3);
// ovládání LED diod úrovně
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) {// přidání lisované hodnoty do seznamu
if (indexNumber == 3) {
vrátit se; }
if (vstup [indexNumber] == -1) {
vstup [indexNumber] = hodnota; indexNumber ++; }}
void handleInput () {// vytvoří ze seznamu „waarde“(hodnotu)
waarde = abs (vstup [0] * 100 + vstup [1] * 10 + vstup [2]); vstup [0] = -1; // reset de signalen input [1] = -1; vstup [2] = -1;
indexNumber = 0;
Serial.print ("waarde opgeslagen:"); Serial.println (waarde); addColor (waarde); }
void addColor (int waarde) {// přidání 3místného 'waarde' do seznamu
if (indexColor == 3) {
vrátit se; }
if (barva [indexColor] == -1) {
barva [indexColor] = waarde; if (barva [indexColor]> 255) {barva [indexColor] = 255; } indexColor ++; }
}
void randomColor () {// donutí světlo proměnit náhodnou barvu a uložit ji do proměnný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 () {// proměnit 'waarde' ze seznamu na 'Gok' (hádat) proměnné
roodGok = barva [0]; groenGok = barva [1]; blauwGok = barva [2]; // zkontrolujte, zda se proměnné Gok příliš liší skutečnou náhodnou barvou: pokud ano, zobrazte odhad na tři sekundy, blikněte zeleně a znovu změňte barvu, přidejte úroveň abd, zmenšte povolený rozdíl // pokud ne, zobrazte hádejte tři sekundy, červeně blikněte a odečtěte život // pokud jste mimo životy, hra se spustí znovu, pokud (abs ((rood + groen + blauw) - (roodGok + groenGok + blauwGok)) <= diff) { analogWrite (redPin, abs (255 - roodGok)); analogWrite (greenPin, abs (255 - groenGok)); analogWrite (bluePin, abs (255 - blauwGok)); zpoždění (3000); analogWrite (redPin, 255); analogWrite (greenPin, 0); analogWrite (bluePin, 255); zpoždění (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); zpoždění (300); analogWrite (redPin, 255); analogWrite (greenPin, 0); analogWrite (bluePin, 255); zpoždění (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); zpoždění (300);
Serial.print ("roodGok =");
Serial.println (roodGok); Serial.print ("groenGok ="); Serial.println (groenGok); Serial.print ("blauwGok ="); Serial.println (blauwGok); resetColor (); náhodná barva(); levelNumber ++; rozdíl -= 50; } else {analogWrite (redPin, abs (255 - roodGok)); analogWrite (greenPin, abs (255 - groenGok)); analogWrite (bluePin, abs (255 - blauwGok)); zpoždění (3000); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); zpoždění (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); zpoždění (300); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); zpoždění (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); zpoždění (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); zpoždění (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); zpoždění (100); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); zpoždění (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); zpoždění (100); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); zpoždění (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); zpoždění (100); resetEverything (); }
}
void resetColor () {// použití pro reset hodnot, pro špatné stisknutí nebo každý nový odhad (jen pro jistotu)
barva [0] = -1; barva [1] = -1; barva [2] = -1;
indexNumber = 0;
indexColor = 0; }
void resetEverything () {// restart hry
barva [0] = -1; barva [1] = -1; barva [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 () {// použijte k zobrazení důležitých informací na sériovém monitoru
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: Stavět
Očividně chcete pro tento projekt pěknou sestavu. tato část je docela otevřená interpretaci, ale je třeba mít na paměti několik věcí: - Přední panel udržujte tenký, abyste přes něj mohli přilepit LED diody a IR přijímač stále funguje.
- ponechte v sestavě dostatek místa pro arduino a pájecí desku
- ujistěte se, že vzadu je otvor pro sílu arduina
Přidal jsem hrubé schéma zapojení.
Hodně štěstí a bav se!
Doporučuje:
Make a Game on Scratch !!: 4 kroky
Make a Game on Scratch !!: podívejte se na video nebo si přečtěte kroky (dávám přednost videu) scratch webovou stránku: https://scratch.mit.edu/ a tady je moje hra https://scratch.mit.edu/ projekty/451732519
Hra LED: Color It Blue: 4 kroky
Hra LED: Color It Blue: V této hře s LED diodami hráči pomocí joysticku LED diody zmodrají. Světlo uprostřed se rozsvítí modře a hráči musí buď zbarvit modrou levou nebo pravou polovinu. Žluté světlo náhodně rozsvítí jednu z LED a hráči musí pohybovat joystickem
Arduino Color Sorter Project s aplikací PC Control: 4 kroky (s obrázky)
Arduino Color Sorter Project with Pc Control Application: V tomto projektu jsem si vybral barevný senzor TCS34725. Protože tento senzor provádí přesnější detekci než ostatní a není ovlivněn změnou světla v prostředí. Robot pro ladění produktu je řízen programem rozhraní
Arduino + Sensor De Color TCS230: 4 kroky
Arduino + Sensor De Color TCS230: AbstractARDUINO + COLOR SENSOR TCS230 je projekt zaměřený na studentské prostředí tak, aby jej učitel používal jako interaktivní učební objekt a také pro studenty, přičemž dosáhl toho, aby cíle dosáhly koncepčního, metodologického a funkčního
Sun Jar: Color MOD: 3 kroky
Sun Jar: Color MOD: Máte bílou LED Sun-Jar a vy … Nevíte, jak pájet? Nechcete investovat do pájecí sady a barevných LED diod? Chcete nějaké nastavitelné zbarvení pro Sun-Jar? Zdarma na 5 minut? Pak je pro vás tento jednoduchý Sun-Jar Mod