Tartalomjegyzék:
Videó: IR-Remote Color Guessing Game: 3 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:42
Ebben az utasításban megmutatom, hogyan lehet IR távirányítóval vezérelni egy RGB ledet, és szórakoztató játékot készíteni belőle!
1. lépés: Szükséges alkatrészek
A projekthez szükséges alkatrészek a következők:
- arduino one- RGB LED-IR-érzékelő
(a ledek száma a játéktól, az életek mennyiségétől függ)- 2 zöld led- 1 sárga led- 1 narancssárga led- 3 piros led
2. lépés: Kód
#befoglalni
int redPin = 10;
int greenPin = 6; int bluePin = 5;
int levensPin1 = 8;
int levensPin2 = 9; int levensPin3 = 12;
int szintPin1 = 2;
int szintPin2 = 3; int szintPin3 = 4; int szintPin4 = 7;
int RECV_PIN = 11;
IRrecv irrecv (RECV_PIN); decode_results eredmények;
// bemeneti színek
int input = {-1, -1, -1}; int szín = {-1, -1, -1};
int indexNumber = 0;
int indexSzín = 0;
int waarde = 0;
int rood = 0;
int groen = 0; int blauw = 0;
// színek létrehozása
int roodRandom = 0; int groenRandom = 0; int blauwRandom = 0;
// játékváltozók
int diff = 200;
int levelNumber = 1;
int szint = {-1, -1, -1, -1};
int t = 0;
int szint1 = 255;
int szint2 = 0; int szint3 = 0; int szint4 = 0;
int él = 3;
int levens1 = 255; int levens2 = 255; int levens3 = 255;
int roodGok = 0;
int groenGok = 0; int blauwGok = 0;
void setup () {
Sorozat.kezdet (9600); irrecv.enableIRIn (); // indítsa el a vevő pinMode (redPin, OUTPUT); pinMode (greenPin, OUTPUT); pinMode (bluePin, OUTPUT);
pinMode (levensPin1, OUTPUT);
pinMode (levensPin2, OUTPUT); pinMode (levensPin3, OUTPUT);
}
void loop () {
if (irrecv.decode (& results)) // fogadja a jeleket a távvezérlőről {Serial.println (results.value, DEC); // az egyes megnyomott gombokról érkező jelek megjelenítése irrecv.resume (); // a következő jelkapcsoló fogadása (results.value) {// a jeleket a gombokon lévő számokká alakítja, és a gombokhoz műveleteket rendel
ügy 109562864:
addWaarde (1); szünet;
ügy 109562824:
addWaarde (2); szünet;
ügy 109562856:
addWaarde (3); szünet;
109562872. eset:
addWaarde (4); szünet;
ügy 109562820:
addWaarde (5); szünet;
ügy 109562852:
addWaarde (6); szünet;
ügy 109562868:
addWaarde (7); szünet;
ügy 109562828:
addWaarde (8); szünet;
ügy 109562860:
addWaarde (9); szünet;
ügy 109562876:
addWaarde (0); szünet;
eset 109562818: // oud ding enter/R CLK
handleInput (); szünet;
ügy 109562816: // oud ding power
handleColor (); szünet; eset 109562878: // oud ding Cancel/L CLK resetColor (); szünet;
ügy 109562866: // lege knop midden
tetszőleges szín(); szünet;
ügy 109562830: // pijltje naar rechts
displayEverything (); szünet; case 109562838: // esc case 109562822: // AV source resetEverything (); szünet; }
// gombok hozzárendelése a távirányítón a színek vezérléséhez: így a játékosok láthatják, hogyan néznek ki a színek, és hogyan kombinálják őket, // a játék megkezdése előtt. kapcsoló (eredmények.érték) {eset 109562840: rood = 255; szünet;
109562844. eset:
groen = 255; szünet;
ügy 109562850:
blauw = 255; szünet;
ügy 109562836:
rood = 0; groen = 0; blauw = 0; szünet; }
}
analogWrite (redPin, abs (255 - rood)); // RGB led vezérlése: hátramenetben, mert az enyém fordítva van bekötve.
analogWrite (greenPin, abs (255 - groen)); analogWrite (bluePin, abs (255 - fekete));
// élő ledek vezérlése
if (él == 2) {levens1 = 0; } if (él == 1) {levens2 = 0; } if (él == 0) {levens3 = 0; } analogWrite (levensPin1, levens1); analogWrite (levensPin2, levens2); analogWrite (levensPin3, levens3);
// szint -ledek vezérlése
if (levelNumber == 1) {level1 = 255; } if (levelNumber == 2) {level1 = 255; szint2 = 255; } if (levelNumber == 3) {level1 = 255; szint2 = 255; 3. szint = 255; } if (levelNumber == 4) {level1 = 255; szint2 = 255; 3. szint = 255; szint4 = 255; } analogWrite (szintPin1, szint1); analogWrite (szintPin2, szint2); analogWrite (levelPin3, level3); analogWrite (levelPin4, level4);
}
void addWaarde (int érték) {// hozzáadja a préselt értéket a listához
if (indexszám == 3) {
Visszatérés; }
if (input [indexNumber] == -1) {
input [indexNumber] = érték; indexNumber ++; }}
void handleInput () {// "waarde" (érték) készítése a listából
waarde = abs (bemenet [0] * 100 + bemenet [1] * 10 + bemenet [2]); bemenet [0] = -1; // jelző bemenet visszaállítása [1] = -1; bemenet [2] = -1;
indexNumber = 0;
Serial.print ("waarde opgeslagen:"); Soros.println (waarde); addColor (waarde); }
void addColor (int waarde) {// hozzáadja a 3 jegyű "waarde" -ot a listához
if (indexColor == 3) {
Visszatérés; }
if (szín [indexColor] == -1) {
szín [indexSzín] = waarde; if (szín [indexColor]> 255) {color [indexColor] = 255; } indexSzín ++; }
}
void randomColor () {// hogy a fény véletlenszerű színt kapjon, és mentse el a változókba
roodRandom = random (0, 255);
groenRandom = véletlen (0, 255);
blauwRandom = véletlen (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 () {// a „waarde” -ot a listából „Gok” (találgatás) változóvá alakítja
roodGok = szín [0]; groenGok = szín [1]; blauwGok = szín [2]; // ellenőrizze, hogy a Gok -változók nem különböznek -e túl a valódi véletlenszerű színtől: ha igen, jelenítse meg a tippet három másodpercig, zölden villogjon, és változtassa meg újra a színt, adjon hozzá egy szintet, és csökkentse a megengedett különbséget // ha nem, jelenítse meg a tippelj három másodpercig, villogj pirosan, és vonj le egy életet // ha életen kívül vagy, a játék újra kezdődik, ha (abs ((rood + groen + blauw) - (roodGok + groenGok + blauwGok)) <= diff) { analogWrite (redPin, abs (255 - roodGok)); analogWrite (greenPin, abs (255 - groenGok)); analogWrite (bluePin, abs (255 - blauwGok)); késleltetés (3000); analogWrite (redPin, 255); analogWrite (greenPin, 0); analogWrite (bluePin, 255); késleltetés (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); késleltetés (300); analogWrite (redPin, 255); analogWrite (greenPin, 0); analogWrite (bluePin, 255); késleltetés (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); késleltetés (300);
Serial.print ("roodGok =");
Serial.println (roodGok); Serial.print ("groenGok ="); Serial.println (groenGok); Serial.print ("blauwGok ="); Serial.println (blauwGok); resetColor (); tetszőleges szín(); levelNumber ++; diff -= 50; } else {analogWrite (redPin, abs (255 - roodGok)); analogWrite (greenPin, abs (255 - groenGok)); analogWrite (bluePin, abs (255 - blauwGok)); késleltetés (3000); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); késleltetés (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); késleltetés (300); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); késleltetés (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); késleltetés (300); Serial.print ("roodGok ="); Serial.println (roodGok); Serial.print ("groenGok ="); Serial.println (groenGok); Serial.print ("blauwGok ="); Serial.println (blauwGok);
resetColor ();
él-; } if (él == 0) {analóg Ír (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); késleltetés (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); késleltetés (100); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); késleltetés (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); késleltetés (100); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); késleltetés (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); késleltetés (100); resetEverything (); }
}
void resetColor () {// használható értékek visszaállításához, rossz megnyomáshoz vagy minden új találgatáshoz (csak a bizonyosság kedvéért)
szín [0] = -1; szín [1] = -1; szín [2] = -1;
indexNumber = 0;
indexSzín = 0; }
void resetEverything () {// indítsa újra a játékot
szín [0] = -1; szín [1] = -1; szín [2] = -1;
indexNumber = 0;
indexSzín = 0;
él = 3;
rood = 0; groen = 0; blauw = 0;
roodRandom = 0;
groenRandom = 0; blauwRandom = 0;
levens1 = 255;
levens2 = 255; levens3 = 255;
szint1 = 255;
szint2 = 0; 3. szint = 0; szint4 = 0;
levelNumber = 1;
t = 0;
}
void displayEverything () {// ezzel fontos információkat jeleníthet meg a soros monitoron
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 =");
Soros.println (rood); Serial.print ("groen ="); Soros.println (groen); Serial.print ("blauw ="); Soros.println (blauw);
Serial.print ("waarde opgeslagen:");
Soros.println (waarde); }
3. lépés: Építsen
Nyilvánvalóan szép konstrukciót szeretne ehhez a projekthez. ez a rész meglehetősen nyitott az értelmezésre, de néhány dolgot érdemes szem előtt tartani ezzel: - tartsa vékonyan az előlapot, így továbbra is átragaszthatja rajta a ledeket, és az IR -vevő továbbra is működik
- maradjon elegendő hely az épületben az arduino és a forrasztótábla számára
- győződjön meg arról, hogy van egy lyuk a hátlapon az arduino teljesítményéhez
Hozzáadtam egy durva sémát a kábelezéshez.
Sok szerencsét és jó szórakozást!
Ajánlott:
Chrome T-rex Game Hack az Arduino használatával: 5 lépés
Chrome T-rex Game Hack Arduino használatával: Ebben az oktatóanyagban feltörjük a chrome t-rex játékot arduino segítségével
A Color TCS3200 használata a SkiiiD -vel: 9 lépés
A Detect Color TCS3200 használata SkiiiD -vel: Oktatóanyag a Color TCS3200 skiiiD -vel történő fejlesztéséhez
POV Globe 24bit True Color és egyszerű HW: 11 lépés (képekkel)
POV Globe 24bit True Color és Simple HW: Mindig is szerettem volna készíteni egy ilyen POV gömböt. De a LED-ek, vezetékek stb. Forrasztásával való erőfeszítés elriasztott, mert lusta vagyok :-) Kell lennie egy egyszerűbb módnak
Arduino Pocket Game Console + A -Maze - Maze Game: 6 lépés (képekkel)
Arduino Pocket Game Console + A -Maze - Maze Game: Üdvözöllek az első oktatható játékomban! A projekt, amelyet ma szeretnék megosztani veletek, az Arduino labirintus játék, amely olyan zsebkonzol lett, mint az Arduboy és hasonló Arduino alapú konzolok. Az expo -nak köszönhetően az én (vagy az Ön) jövőbeli játékaival is villoghat
BlackBerry Pearl 8130 billentyűzet/Trackball Color Mod: 3 lépés
BlackBerry Pearl 8130 billentyűzet/Trackball Color Mod: A BlackBerry Pearl 8130 billentyűzetének és a trackball fényeinek színezése