
Բովանդակություն:
2025 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2025-01-23 14:48

Այս ուսանելիում ես ձեզ ցույց կտամ, թե ինչպես կարելի է վերահսկել RGB led- ը ՝ օգտագործելով IR- հեռակառավարիչը և դրանից զվարճալի խաղ պատրաստել:
Քայլ 1: Անհրաժեշտ մասեր

Այս նախագծի համար ձեզ անհրաժեշտ մասերն են.
- arduino one- RGB Led- IR-ցուցիչ
(լեդերի հաշվարկը կախված է խաղից, կյանքի քանակից կամ)- 2 կանաչ լեդ- 1 դեղին լեդ- 1 նարնջագույն լեդ- 3 կարմիր լեդ
Քայլ 2: Կոդ
#ներառում
int redPin = 10;
int greenPin = 6; int bluePin = 5;
int levensPin1 = 8;
int levensPin2 = 9; int levensPin3 = 12;
int levelPin1 = 2;
int մակարդակ Pin2 = 3; int մակարդակ Pin3 = 4; int մակարդակ Pin4 = 7;
int RECV_PIN = 11;
IRrecv irrecv (RECV_PIN); decode_results results;
// մուտքագրման գույներ
int մուտք = {-1, -1, -1}; int գույն = {-1, -1, -1};
int indexNumber = 0;
int indexColor = 0;
int waarde = 0;
int rood = 0;
int groen = 0; int blauw = 0;
// գեներացնել գույներ
int roodRandom = 0; int groenRandom = 0; int blauwRandom = 0;
// խաղի փոփոխականներ
int diff = 200;
int մակարդակ Թիվ = 1;
int մակարդակ = {-1, -1, -1, -1};
int t = 0;
int մակարդակ 1 = 255;
int մակարդակ 2 = 0; int մակարդակ 3 = 0; int մակարդակ 4 = 0;
int կյանքը = 3;
int levens1 = 255; int levens2 = 255; int levens3 = 255;
int roodGok = 0;
int groenGok = 0; int blauwGok = 0;
void setup () {
Serial.begin (9600); irrecv.enableIRIn (); // սկսել ստացողի pinMode (redPin, OUTPUT); pinMode (greenPin, OUTPUT); pinMode (bluePin, OUTPUT);
pinMode (levensPin1, OUTPUT);
pinMode (levensPin2, OUTPUT); pinMode (levensPin3, OUTPUT);
}
դատարկ շրջան () {
if (irrecv.decode (& results)) // ստանալ ազդանշանները հեռավոր {Serial.println (results.value, DEC); // ցուցադրել ազդանշանները, որոնք ստացվել են յուրաքանչյուր սեղմված կոճակից irrecv.resume (); // ստանալ հաջորդ ազդանշանի անջատիչը (results.value) {// ազդանշանները վերածել կոճակների թվերի և նշանակել գործողություններ կոճակներին
գործ 109562864:
addWaarde (1); ընդմիջում;
գործ 109562824:
addWaarde (2); ընդմիջում;
դեպք 109562856:
addWaarde (3); ընդմիջում;
գործ 109562872:
addWaarde (4); ընդմիջում;
գործ 109562820:
addWaarde (5); ընդմիջում;
գործ 109562852:
addWaarde (6); ընդմիջում;
գործ 109562868:
addWaarde (7); ընդմիջում;
գործ 109562828:
addWaarde (8); ընդմիջում;
գործ 109562860:
addWaarde (9); ընդմիջում;
գործ 109562876:
addWaarde (0); ընդմիջում;
գործ 109562818: // oud ding enter/R CLK
handleInput (); ընդմիջում;
գործ 109562816: // ուդի դինգի հզորություն
handleColor (); ընդմիջում; գործ 109562878: // oud ding չեղարկել/L CLK resetColor (); ընդմիջում;
գործ 109562866: // lege knop midden
randomColor (); ընդմիջում;
գործ 109562830: // pijltje naar rechts
ցուցադրել ամեն ինչ (); ընդմիջում; գործ 109562838: // esc case 109562822: // AV աղբյուրի վերականգնում Ամեն ինչ (); ընդմիջում; }
// գույնը կառավարելու համար հեռակառավարման վահանակի նշանակում. այս կերպ խաղացողները կարող են տեսնել, թե ինչ տեսք ունեն գույները և ինչպես դրանք համատեղել, // խաղ սկսելուց առաջ: անջատիչ (results.value) {case 109562840: rood = 255; ընդմիջում;
գործ 109562844:
աճուկ = 255; ընդմիջում;
գործ 109562850:
blauw = 255; ընդմիջում;
դեպք 109562836:
ձող = 0; աճուկ = 0; blauw = 0; ընդմիջում; }
}
analogWrite (redPin, abs (255 - rood)); // վերահսկում է RGB led- ը ՝ հակառակը, քանի որ իմը միացված է հակառակ ուղղությամբ
analogWrite (greenPin, abs (255 - groen)); analogWrite (bluePin, abs (255 - blauw));
// կենդանի լեդերի վերահսկում
եթե (ապրում է == 2) {levens1 = 0; } if (ապրում է == 1) {levens2 = 0; } if (ապրում է == 0) {levens3 = 0; } analogWrite (levensPin1, levens1); analogWrite (levensPin2, levens2); analogWrite (levensPin3, levens3);
// մակարդակի լուսարձակների վերահսկում
եթե (մակարդակ Թիվ == 1) {մակարդակ 1 = 255; } if (levelNumber == 2) {level1 = 255; մակարդակ 2 = 255; } if (levelNumber == 3) {level1 = 255; մակարդակ 2 = 255; մակարդակ 3 = 255; } if (levelNumber == 4) {level1 = 255; մակարդակ 2 = 255; մակարդակ 3 = 255; մակարդակ 4 = 255; } analogWrite (levelPin1, level1); analogWrite (levelPin2, level2); analogWrite (levelPin3, level3); analogWrite (levelPin4, level4);
}
անվավեր addWaarde (int արժեքը) {// ավելացնել սեղմված արժեքը ցուցակին
եթե (indexNumber == 3) {
վերադարձ; }
եթե (մուտքագրում [indexNumber] == -1) {
մուտքագրում [indexNumber] = արժեք; ինդեքս Թիվ ++; }}
void handleInput () {// կատարել «waarde» (արժեք) ցուցակից
waarde = abs (մուտք [0] * 100 + մուտք [1] * 10 + մուտք [2]); մուտք [0] = -1; // վերականգնել ազդանշանային մուտքը [1] = -1; մուտքագրում [2] = -1;
ինդեքս Թիվ = 0;
Serial.print ("waarde opgeslagen:"); Serial.println (waarde); addColor (warde); }
void addColor (int waarde) {// ավելացնել եռանիշ «waarde»-ը ցուցակին
եթե (indexColor == 3) {
վերադարձ; }
եթե (գույնը [indexColor] == -1) {
գույն [indexColor] = զգուշացում; եթե (գույնը [indexColor]> 255) {գույնը [indexColor] = 255; } indexColor ++; }
}
void randomColor () {// դարձնել լույսը պատահական գույն և պահպանել այն փոփոխականների մեջ
roodRandom = պատահական (0, 255);
groenRandom = պատահական (0, 255);
blauwRandom = պատահական (0, 255);
rood = rood Պատահական;
groen = groen Պատահական; blauw = blauw Պատահական; Serial.print ("roodRandom ="); Serial.println (roodRandom); Serial.print ("groenRandom ="); Serial.println (groenRandom); Serial.print ("blauwRandom ="); Serial.println (blauwRandom);
}
void handleColor () {// ցուցակից «waarde» - ն վերածել «Gok» (գուշակել) փոփոխականների
roodGok = գույն [0]; groenGok = գույն [1]; blauwGok = գույն [2]; // ստուգեք, թե արդյոք Gok- ի փոփոխականները չափազանց շատ են տարբերվում իրական պատահական գույնի հետ. կռահիր երեք վայրկյան, կարմիր թարթիր և կյանք հանիր // եթե կյանքերից դուրս ես, խաղը նորից սկսվում է, եթե (abs ((rood + groen + blauw) - (roodGok + groenGok + blauwGok)) = = տարբերություն) { analogWrite (redPin, abs (255 - roodGok)); analogWrite (greenPin, abs (255 - groenGok)); analogWrite (bluePin, abs (255 - blauwGok)); ուշացում (3000); analogWrite (redPin, 255); analogWrite (greenPin, 0); analogWrite (bluePin, 255); ուշացում (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); ուշացում (300); analogWrite (redPin, 255); analogWrite (greenPin, 0); analogWrite (bluePin, 255); ուշացում (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); ուշացում (300);
Serial.print ("roodGok =");
Serial.println (roodGok); Serial.print ("groenGok ="); Serial.println (groenGok); Serial.print ("blauwGok ="); Serial.println (blauwGok); resetColor (); randomColor (); մակարդակ Թիվ ++; դիֆ -= 50; } else {analogWrite (redPin, abs (255 - roodGok)); analogWrite (greenPin, abs (255 - groenGok)); analogWrite (bluePin, abs (255 - blauwGok)); ուշացում (3000); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); ուշացում (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); ուշացում (300); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); ուշացում (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); ուշացում (300); Serial.print ("roodGok ="); Serial.println (roodGok); Serial.print ("groenGok ="); Serial.println (groenGok); Serial.print ("blauwGok ="); Serial.println (blauwGok);
resetColor ();
ապրում է--; } if (lives == 0) {analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); ուշացում (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); ուշացում (100); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); ուշացում (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); ուշացում (100); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); ուշացում (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); ուշացում (100); resetEverything (); }
}
void resetColor () {// օգտագործել վերականգնելու արժեքների, սխալ սեղմման կամ յուրաքանչյուր նոր գուշակության համար (պարզապես վստահության համար)
գույն [0] = -1; գույն [1] = -1; գույն [2] = -1;
ինդեքս Թիվ = 0;
indexColor = 0; }
void resetEverything () {// վերագործարկեք խաղը
գույն [0] = -1; գույն [1] = -1; գույն [2] = -1;
ինդեքս Թիվ = 0;
indexColor = 0;
ապրում է = 3;
ձող = 0; աճուկ = 0; blauw = 0;
roodRandom = 0;
groenRandom = 0; blauwRandom = 0;
levens1 = 255;
levens2 = 255; levens3 = 255;
մակարդակ 1 = 255;
մակարդակ 2 = 0; մակարդակ 3 = 0; մակարդակ 4 = 0;
մակարդակ Թիվ = 1;
t = 0;
}
void displayEverything () {// օգտագործեք սա սերիական մոնիտորի վրա կարևոր տեղեկություններ ցուցադրելու համար
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); }
Քայլ 3: Կառուցեք




Դուք ակնհայտորեն ցանկանում եք գեղեցիկ կառուցել այս նախագիծը: այս հատվածը բավականին բաց է մեկնաբանման համար, բայց դրա հետ պետք է հաշվի առնել որոշ բաներ.
- կառուցվածքում բավականաչափ տարածք պահեք arduino- ի և զոդման տախտակի համար
- համոզվեք, որ հետևի հատվածում առկա է arduino- ի հզորության համար
Ես ավելացրել եմ էլեկտրագծերի կոպիտ սխեմա:
Հաջողություն և զվարճացեք:
Խորհուրդ ենք տալիս:
Էլեկտրոնային խաղ Tic-Tac-Toe խաղ փայտե տուփի մեջ. 5 քայլ

Էլեկտրոնային խաղ Tic-Tac-Toe- ը փայտե տուփի մեջ
Aruduino LED խաղ Արագ կտտացնելով երկու խաղացողի խաղ. 8 քայլ

Aruduino LED խաղ Արագ սեղմում երկու խաղացողի խաղ. Այս նախագիծը ոգեշնչված է @HassonAlkeim- ից: Եթե պատրաստ եք խորը հայացք նետել, այստեղ կա մի հղում, որը կարող եք ստուգել https://www.instructables.com/id/Arduino-Two-Player-Fast-Button-Clicking-Game/: Այս խաղը Alkeim's- ի կատարելագործված տարբերակն է: Դա է
Պարզ Python համարների կռահման խաղ ՝ 11 քայլ

Պարզ Python համարների կռահման խաղ. Այս ձեռնարկում մենք կսովորեցնենք, թե ինչպես ստեղծել Python թվերի գուշակման պարզ խաղ Pycharm հավելվածում: Python- ը սցենարական լեզու է, որը հիանալի է ինչպես սկսնակների, այնպես էլ փորձագետների համար: Python- ում կոդավորման ոճը հեշտ է կարդալ և հետևել
Ի՞նչ է բիտ մտածողությունը: Կատարեք պարզ կռահման խաղ BBC Microbit- ի միջոցով: 10 քայլ

Ի՞նչ է բիտ մտածողությունը: BBC Microbit- ով պարզ գուշակության խաղ պատրաստեք. մի երկու ժամ և եկավ
«Գույնի համընկնում» (ռեֆլեքսային խաղ) ՝ 4 քայլ

«Գույնի համընկնում» (Ռեֆլեքսային խաղ). Ներածություն. Իմ դպրոցական ծրագրի համար ես վստահ չէի, թե ինչ պետք է անեմ, բայց որոշ մտածելուց հետո որոշեցի ռեֆլեքսային խաղ պատրաստել: Ի վերջո, մենք խաղադպրոց ենք: Մենք ստիպված էինք ինչ -որ ինտերակտիվ և յուրահատուկ բան պատրաստել, այնպես որ խաղը կատարյալ կլիներ: Ուրախ եմ, թե ինչպես եք ամեն ինչ