Satura rādītājs:
Video: IR tālvadības krāsu uzminēšanas spēle: 3 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:56
Šajā pamācībā es jums parādīšu, kā kontrolēt RGB vadību, izmantojot IR tālvadības pulti, un izveidot no tā jautru spēli!
1. darbība. Nepieciešamās detaļas
Šim projektam būs nepieciešamas šādas detaļas:
- arduino one- RGB LED- IR sensors
(LED skaits ir atkarīgs no spēles, dzīvību skaita vai)- 2 zaļas gaismas diodes- 1 dzeltena LED- 1 oranža LED- 3 sarkanas gaismas diodes
2. darbība: kods
#iekļaut
int redPin = 10;
int greenPin = 6; int bluePin = 5;
int levensPin1 = 8;
int levensPin2 = 9; int levensPin3 = 12;
int līmenisPin1 = 2;
int līmenisPin2 = 3; int līmenisPin3 = 4; int līmenisPin4 = 7;
int RECV_PIN = 11;
IRrecv irrecv (RECV_PIN); decode_results rezultāti;
// ievades krāsas
int ievade = {-1, -1, -1}; int krāsa = {-1, -1, -1};
int indeksskaitlis = 0;
int indexColor = 0;
int waarde = 0;
int rood = 0;
int groen = 0; int blauw = 0;
// ģenerēt krāsas
int roodRandom = 0; int groenRandom = 0; int blauwRandom = 0;
// spēles mainīgie
int dif = 200;
int levelNumber = 1;
int līmenis = {-1, -1, -1, -1};
int t = 0;
int līmenis1 = 255;
int līmenis2 = 0; int līmenis3 = 0; int līmenis4 = 0;
int dzīvības = 3;
int levens1 = 255; int levens2 = 255; int levens3 = 255;
int roodGok = 0;
int groenGok = 0; int blauwGok = 0;
void setup () {
Sērijas sākums (9600); irrecv.enableIRIn (); // sākt uztvērēja pinMode (redPin, OUTPUT); pinMode (greenPin, OUTPUT); pinMode (bluePin, OUTPUT);
pinMode (levensPin1, OUTPUT);
pinMode (levensPin2, OUTPUT); pinMode (levensPin3, OUTPUT);
}
void loop () {
if (irrecv.decode (& results)) // saņemt signālus no tālvadības {Serial.println (results.value, DEC); // parādīt signālus, kas saņemti no katras nospiestas pogas irrecv.resume (); // saņemt nākamo signāla slēdzi (results.value) {// pārvērst signālus par cipariem uz pogām un piešķirt pogām darbības
lieta 109562864:
addWaarde (1); pārtraukums;
lieta 109562824:
addWaarde (2); pārtraukums;
lieta 109562856:
addWaarde (3); pārtraukums;
lieta 109562872:
addWaarde (4); pārtraukums;
lieta 109562820:
addWaarde (5); pārtraukums;
lieta 109562852:
addWaarde (6); pārtraukums;
lieta 109562868:
addWaarde (7); pārtraukums;
lieta 109562828:
addWaarde (8); pārtraukums;
lieta 109562860:
addWaarde (9); pārtraukums;
lieta 109562876:
addWaarde (0); pārtraukums;
lieta 109562818: // oud ding enter/R CLK
handleInput (); pārtraukums;
lieta 109562816: // oud ding power
rokturisKrāsa (); pārtraukums; lieta 109562878: // oud ding cancel/L CLK resetColor (); pārtraukums;
lieta 109562866: // lege knop midden
randomColor (); pārtraukums;
lieta 109562830: // pijltje naar rechts
displayEverything (); pārtraukums; gadījums 109562838: // esc gadījums 109562822: // AV avota atiestatīšanaViss (); pārtraukums; }
// piešķirt tālvadības pults pogas, lai kontrolētu krāsu: šādā veidā spēlētāji var redzēt, kā izskatās krāsas un kā tās apvienot, // pirms spēles uzsākšanas. slēdzis (rezultāti.vērtība) {gadījums 109562840: rood = 255; pārtraukums;
lieta 109562844:
groen = 255; pārtraukums;
lieta 109562850:
blauw = 255; pārtraukums;
lieta 109562836:
rood = 0; groen = 0; melns = 0; pārtraukums; }
}
analogWrite (redPin, abs (255 - rood)); // RGB vadīšanas vadīšana: apgrieztā virzienā, jo manējais ir pieslēgts reversā.
analogWrite (greenPin, abs (255 - groen)); analogWrite (bluePin, abs (255 - tumšs));
// tiešo LED vadīšana
ja (dzīvo == 2) {levens1 = 0; } ja (dzīvo == 1) {levens2 = 0; } ja (dzīvo == 0) {levens3 = 0; } analogWrite (levensPin1, levens1); analogWrite (levensPin2, levens2); analogWrite (levensPin3, levens3);
// kontroles līmeņa diodes
ja (levelNumber == 1) {level1 = 255; } ja (levelNumber == 2) {level1 = 255; 2. līmenis = 255; } ja (levelNumber == 3) {level1 = 255; 2. līmenis = 255; 3. līmenis = 255; } ja (levelNumber == 4) {level1 = 255; 2. līmenis = 255; līmenis3 = 255; līmenis4 = 255; } analogWrite (levelPin1, level1); analogWrite (levelPin2, level2); analogWrite (levelPin3, level3); analogWrite (levelPin4, level4);
}
void addWaarde (int value) {// pievienot sarakstam nospiestu vērtību
ja (indeksa numurs == 3) {
atgriešanās; }
ja (ievade [indeksa numurs] == -1) {
ievade [indeksa numurs] = vērtība; indexNumber ++; }}
void handleInput () {// no saraksta izveidojiet “waarde” (vērtību)
waarde = abs (ievade [0] * 100 + ieeja [1] * 10 + ievade [2]); ievade [0] = -1; // signālu ievades atiestatīšana [1] = -1; ievade [2] = -1;
indeksa numurs = 0;
Serial.print ("waarde opgeslagen:"); Serial.println (waarde); addColor (waarde); }
void addColor (int waarde) {// pievienojiet sarakstam trīsciparu “waarde”
ja (indexColor == 3) {
atgriešanās; }
ja (krāsa [indeksa krāsa] == -1) {
krāsa [indekssKrāsa] = waarde; ja (krāsa [indeksa krāsa]> 255) {krāsa [indeksa krāsa] = 255; } indexColor ++; }
}
void randomColor () {// lai gaisma kļūtu par nejaušu krāsu un saglabātu to mainīgajos
roodRandom = nejaušība (0, 255);
groenRandom = nejauši (0, 255);
blauwRandom = nejauši (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 () {// pārvērst “waarde” no saraksta par “Gok” (uzminēt) mainīgajiem
roodGok = krāsa [0]; groenGok = krāsa [1]; blauwGok = krāsa [2]; // pārbaudiet, vai Gok mainīgie pārāk daudz atšķiras ar reālo izlases krāsu: ja tā, parādiet minējumu trīs sekundes, mirgo zaļā krāsā un vēlreiz mainiet krāsu, pievienojiet līmeni, lai atļautā starpība būtu mazāka // ja nē, parādiet uzminiet trīs sekundes, mirgo sarkanā krāsā un atņemiet dzīvību // ja jūs neesat dzīvs, spēle sākas no jauna, ja (abs ((rood + groen + blauw) - (roodGok + groenGok + blauwGok)) <= diff) { analogWrite (redPin, abs (255 - roodGok)); analogWrite (greenPin, abs (255 - groenGok)); analogWrite (bluePin, abs (255 - blauwGok)); kavēšanās (3000); analogWrite (redPin, 255); analogWrite (greenPin, 0); analogWrite (bluePin, 255); kavēšanās (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); kavēšanās (300); analogWrite (redPin, 255); analogWrite (greenPin, 0); analogWrite (bluePin, 255); kavēšanās (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); kavēšanās (300);
Serial.print ("roodGok =");
Serial.println (roodGok); Serial.print ("groenGok ="); Serial.println (groenGok); Serial.print ("blauwGok ="); Serial.println (blauwGok); resetColor (); randomColor (); levelNumber ++; starpība -= 50; } cits {analogWrite (redPin, abs (255 - roodGok)); analogWrite (greenPin, abs (255 - groenGok)); analogWrite (bluePin, abs (255 - blauwGok)); kavēšanās (3000); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); kavēšanās (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); kavēšanās (300); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); kavēšanās (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); kavēšanās (300); Serial.print ("roodGok ="); Serial.println (roodGok); Serial.print ("groenGok ="); Serial.println (groenGok); Serial.print ("blauwGok ="); Serial.println (blauwGok);
resetColor ();
dzīvo-; } ja (dzīvo == 0) {analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); kavēšanās (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); kavēšanās (100); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); kavēšanās (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); kavēšanās (100); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); kavēšanās (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); kavēšanās (100); resetEverything (); }
}
void resetColor () {// izmantot vērtību atiestatīšanai, nepareizai nospiešanai vai katram jaunam minējumam (tikai noteiktības labad)
krāsa [0] = -1; krāsa [1] = -1; krāsa [2] = -1;
indeksa numurs = 0;
indekssKrāsa = 0; }
void resetEverything () {// restartējiet spēli
krāsa [0] = -1; krāsa [1] = -1; krāsa [2] = -1;
indeksa numurs = 0;
indekssKrāsa = 0;
dzīvības = 3;
rood = 0; groen = 0; melns = 0;
roodRandom = 0;
groenRandom = 0; blauwRandom = 0;
levens1 = 255;
levens2 = 255; levens3 = 255;
līmenis1 = 255;
2. līmenis = 0; līmenis3 = 0; līmenis 4 = 0;
levelNumber = 1;
t = 0;
}
void displayEverything () {// izmantojiet to, lai sērijveida monitorā parādītu svarīgu informāciju
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); Sērijas nospiedums ("blauw ="); Serial.println (blauw);
Serial.print ("waarde opgeslagen:");
Serial.println (waarde); }
3. darbība. Veidojiet
Jūs acīmredzot vēlaties jauku būvi šim projektam. šī daļa ir diezgan atvērta interpretācijai, taču ir dažas lietas, kas jāpatur prātā: - turiet plānu priekšējo paneli plānu, lai jūs joprojām varētu izbāzt savus gaismas diodes, un IR uztvērējs joprojām darbojas
- ēkā saglabājiet pietiekami daudz vietas arduino un lodēšanas dēļam
- pārliecinieties, vai aizmugurē ir caurums arduino jaudai
Esmu pievienojis aptuvenu elektroinstalācijas shēmu.
Veiksmi un izklaidējieties!
Ieteicams:
Oktarīns: krāsu saskaņošanas spēle ar WS2812 RGB gaismas diodēm: 6 soļi
Octarine: krāsu saskaņošanas spēle ar WS2812 RGB gaismas diodēm: Octarine, maģijas krāsa. Tas bija dzīvs un kvēloja dinamisku, un tas bija neapstrīdams iztēles pigments, jo visur, kur tas parādījās, tā bija zīme, ka tikai matērija ir maģiskā prāta spēku kalps. Tie bija burvji
Krāsu noteikšanas krāsu iekārta: 4 soļi
Krāsu noteikšanas krāsu iekārta: Krāsu noteikšanas krāsu iekārta kopē krāsas ap jums un ļauj zīmēt ar tām. Ja jums ir primāro krāsu krāsa, varat izmantot RGB krāsu sensoru, lai saprastu vēlamo krāsu un to sajauktu. Bet atcerieties, izmantojiet spilgtas krāsas objektu
Vienkārša uzminēšanas spēle - Python + XBees + Arduino: 10 soļi
Vienkārša uzminēšanas spēle - Python + XBees + Arduino: Lūk, kā spēle darbojas: Jums ir 4 mēģinājumi uzminēt burtu starp “a” - “h” - > Uzmini pareizo burtu: Tu uzvari! ?-> Uzminiet nepareizo burtu: spēle beigusies?-> Uzminiet jebkuru citu rakstzīmi ārpus “a” - “h”: spēle beigusies? Jūsu Arduino ļaus jums
Vienkārša Python numuru uzminēšanas spēle: 11 soļi
Vienkārša Python numuru uzminēšanas spēle: Šajā apmācībā mēs mācīsim, kā lietotnē Pycharm izveidot vienkāršu Python numuru uzminēšanas spēli. Python ir skriptu valoda, kas ir lieliski piemērota gan iesācējiem, gan ekspertiem. Python kodēšanas stilu ir viegli lasīt un izpildīt
"Krāsu atbilstība" (refleksu spēle): 4 soļi
"Krāsu atbilstība" (refleksspēle): Ievads: Skolas projektam es nebiju pārliecināts, ko darīt, bet pēc pārdomām nolēmu izveidot refleksu spēli. Galu galā mēs esam spēļu skola. Mums bija jāizveido kaut kas interaktīvs un unikāls, tāpēc spēle būtu perfekta! Esmu laimīga, kā viss