Мазмұны:

IR-қашықтан түстерді анықтау ойыны: 3 қадам
IR-қашықтан түстерді анықтау ойыны: 3 қадам

Бейне: IR-қашықтан түстерді анықтау ойыны: 3 қадам

Бейне: IR-қашықтан түстерді анықтау ойыны: 3 қадам
Бейне: Қорқынышты құпияларды қамтитын күнделік. Өтпелі. Джералд Даррелл. Мистикалық. Ужас 2024, Қараша
Anonim
IR қашықтағы түстерді анықтау ойыны
IR қашықтағы түстерді анықтау ойыны

Бұл нұсқаулықта мен сізге IR қашықтан басқару пультінің көмегімен RGB жетегін қалай басқаруға болатынын және одан қызықты ойын жасауды көрсетемін!

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 levelPin2 = 3; int levelPin3 = 4; int levelPin4 = 7;

int RECV_PIN = 11;

IRrecv irrecv (RECV_PIN); decode_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 levelNumber = 1;

int деңгейі = {-1, -1, -1, -1};

int t = 0;

int деңгейі1 = 255;

int деңгейі2 = 0; int деңгейі3 = 0; int деңгейі4 = 0;

int life = 3;

int levens1 = 255; int levens2 = 255; int levens3 = 255;

int roodGok = 0;

int groenGok = 0; int blauwGok = 0;

жарамсыз орнату () {

Serial.begin (9600); irrecv.enableIRIn (); // pinMode қабылдағышын іске қосыңыз (redPin, OUTPUT); pinMode (greenPin, OUTPUT); pinMode (bluePin, OUTPUT);

pinMode (levensPin1, OUTPUT);

pinMode (levensPin2, OUTPUT); pinMode (levensPin3, OUTPUT);

}

void loop () {

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); үзіліс;

case 109562818: // oud ding enter/R CLK

handleInput (); үзіліс;

case 109562816: // oud ding power

handleColor (); үзіліс; case 109562878: // oud ding болдырмау/L CLK resetColor (); үзіліс;

іс 109562866: // lege knop midden

randomColor (); үзіліс;

іс 109562830: // pijltje naar rechts

displayEverything (); үзіліс; case 109562838: // esc case 109562822: // AV көзін бастапқы қалпына келтіруEverything (); үзіліс; }

// түстерді басқару үшін қашықтан басқару пультіндегі түймелерді тағайындаңыз: осылайша ойыншылар түстердің қалай көрінетінін және оларды қалай біріктіру керектігін көре алады, // ойынды бастамас бұрын. switch (results.value) {жағдай 109562840: rood = 255; үзіліс;

іс 109562844:

groen = 255; үзіліс;

іс 109562850:

blauw = 255; үзіліс;

іс 109562836:

rood = 0; groen = 0; blauw = 0; үзіліс; }

}

analogWrite (redPin, abs (255 - rood)); // басқарушы RGB светодиодты: керісінше, себебі менікі кері сыммен қосылған.

analogWrite (greenPin, abs (255 - groen)); analogWrite (bluePin, abs (255 - blauw));

// тірі жарықдиодты басқару

егер (өмір == 2) {levens1 = 0; } егер (өмір == 1) {levens2 = 0; } егер (өмір == 0) {levens3 = 0; } analogWrite (levensPin1, levens1); analogWrite (levensPin2, levens2); analogWrite (levensPin3, levens3);

// жарықдиодты деңгейлерді басқару

if (levelNumber == 1) {level1 = 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);

}

void addWaarde (int value) {// басылған мәнді тізімге қосыңыз

егер (indexNumber == 3) {

қайтару; }

if (енгізу [indexNumber] == -1) {

енгізу [indexNumber] = мән; indexNumber ++; }}

void handleInput () {// тізімнен 'waarde' (мән) жасаңыз

waarde = abs (кіріс [0] * 100 + кіріс [1] * 10 + кіріс [2]); енгізу [0] = -1; // сигналды енгізуді қалпына келтіру [1] = -1; енгізу [2] = -1;

indexNumber = 0;

Serial.print («waarde opgeslagen:»); Serial.println (waarde); addColor (күңгірт); }

void addColor (int waarde) {// тізімге 3 таңбалы 'waarde' қосыңыз

егер (indexColor == 3) {

қайтару; }

егер (түс [indexColor] == -1) {

түс [indexColor] = күңгірт; if (color [indexColor]> 255) {color [indexColor] = 255; } indexColor ++; }

}

void randomColor () {// жарықты кездейсоқ түске айналдырады және оны айнымалыларда сақтайды

roodRandom = кездейсоқ (0, 255);

groenRandom = кездейсоқ (0, 255);

blauwRandom = кездейсоқ (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 () {// тізімдегі 'waarde'ді' Gok '(болжау) айнымалыларына айналдырыңыз

roodGok = түс [0]; groenGok = түс [1]; blauwGok = түс [2]; // Gok айнымалыларының нақты кездейсоқ түспен тым көп ерекшеленетінін тексеріңіз: егер солай болса, болжамды үш секундқа көрсетіңіз, жасыл жыпылықтап, түсі қайтадан өзгертіңіз, рұқсат етілген айырмашылықты кішірейту үшін abd деңгейін қосыңыз // егер болмаса, үш секундқа болжаңыз, қызыл жыпылықтап, өмірді шегеріңіз // егер сіз өмірден айырылсаңыз, ойын қайтадан басталады, егер (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 (); levelNumber ++; айырмашылық -= 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 ();

өмір-; } егер (өмір == 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;

indexNumber = 0;

indexColor = 0; }

void resetEverything () {// ойынды қайта бастаңыз

түс [0] = -1; түс [1] = -1; түс [2] = -1;

indexNumber = 0;

indexColor = 0;

өмір = 3;

rood = 0; groen = 0; blauw = 0;

roodRandom = 0;

groenRandom = 0; blauwRandom = 0;

levens1 = 255;

levens2 = 255; levens3 = 255;

деңгей1 = 255;

деңгей2 = 0; деңгей3 = 0; деңгей4 = 0;

levelNumber = 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 -қадам: Құру

Құру
Құру
Құру
Құру
Құру
Құру
Құру
Құру

Сіз бұл жобаға жақсы құрылыс алғыңыз келетіні анық. бұл бөлік түсіндіруге өте ашық, бірақ мынаны есте ұстау керек: - алдыңғы панельді жұқа ұстаңыз, осылайша сіз әлі де жарықдиодты жабыстыра аласыз, ал IR қабылдағыш әлі де жұмыс істейді

- құрылымда arduino мен дәнекерлеу тақтасы үшін жеткілікті орын сақтаңыз

- артқы жағында arduino қуаты үшін тесік бар екеніне көз жеткізіңіз

Мен сымдардың өрескел схемасын қостым.

Сәттілік, көңілді болыңыз!

Ұсынылған: