Բովանդակություն:

IR- հեռավոր գույնի կռահման խաղ ՝ 3 քայլ
IR- հեռավոր գույնի կռահման խաղ ՝ 3 քայլ

Video: IR- հեռավոր գույնի կռահման խաղ ՝ 3 քայլ

Video: IR- հեռավոր գույնի կռահման խաղ ՝ 3 քայլ
Video: 8 բան, որ տղամարդիկ անում են ՄԻԱՅՆ այն կնոջ հետ, ում սիրում են 2024, Հուլիսի
Anonim
IR-Remote Color Guessing Game
IR-Remote Color Guessing Game

Այս ուսանելիում ես ձեզ ցույց կտամ, թե ինչպես կարելի է վերահսկել 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- ի հզորության համար

Ես ավելացրել եմ էլեկտրագծերի կոպիտ սխեմա:

Հաջողություն և զվարճացեք:

Խորհուրդ ենք տալիս: