Satura rādītājs:

IR tālvadības krāsu uzminēšanas spēle: 3 soļi
IR tālvadības krāsu uzminēšanas spēle: 3 soļi

Video: IR tālvadības krāsu uzminēšanas spēle: 3 soļi

Video: IR tālvadības krāsu uzminēšanas spēle: 3 soļi
Video: Я работаю в Страшном музее для Богатых и Знаменитых. Страшные истории. Ужасы. 2024, Novembris
Anonim
IR tālvadības krāsu uzminēšanas spēle
IR tālvadības krāsu uzminēšanas spēle

Š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

Nepieciešamas detaļas
Nepieciešamas 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

Būvēt
Būvēt
Būvēt
Būvēt
Būvēt
Būvēt
Būvēt
Būvēt

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: