Мазмұны:
Бейне: IR-қашықтан түстерді анықтау ойыны: 3 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:26
Бұл нұсқаулықта мен сізге 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 қуаты үшін тесік бар екеніне көз жеткізіңіз
Мен сымдардың өрескел схемасын қостым.
Сәттілік, көңілді болыңыз!
Ұсынылған:
Октарин: WS2812 RGB светодиоды бар түстерді сәйкестендіру ойыны: 6 қадам
Октарин: WS2812 RGB светодиодтары бар түстерді сәйкестендіру ойыны: сиқырдың түсі - октарин. Ол тірі және жарқырап тұрды, бұл қиялдың сөзсіз пигменті, өйткені қай жерде пайда болса да, бұл заттың сиқырлы ақыл күштерінің қызметшісі екендігінің белгісі. Бұл сиқыршылар болды
Түстерді сұрыптау жүйесі: Arduino негізіндегі екі белдеуі бар жүйе: 8 қадам
Түстерді сұрыптау жүйесі: Arduino негізіндегі екі белдеуі бар жүйе: Өндірістік саладағы өнімдер мен заттарды тасымалдау және/немесе буып -түю конвейерлік ленталар көмегімен жасалған желілер көмегімен жүзеге асырылады. Бұл белдіктер затты белгілі бір жылдамдықпен бір нүктеден екінші нүктеге жылжытуға көмектеседі. Кейбір өңдеу немесе сәйкестендіру тапсырмалары болуы мүмкін
RGB жарықдиодты түстерді басқару: 4 қадам
RGB жарықдиодты түстерді басқару: Бұл жобада біз PWM шығыс мүмкіндігі бар енгізу -шығару порттары мен сенсорлы дисплей сырғытпалары арқылы RGB жарықдиодты жарықтылығы мен түсін басқаруды үйренеміз. 4Duino резистивті сенсорлық дисплей графикалық интерфейсті басқару үшін қолданылады
Arduino RGB түстерді таңдау құралы - нақты объектілерден түстерді таңдау: 7 қадам (суреттермен)
Arduino RGB түстерді таңдау құралы - нақты өмірдегі объектілерден түстерді таңдау: Arduino негізіндегі RGB түс таңдағышының көмегімен физикалық объектілерден түстерді оңай таңдаңыз, бұл сізге компьютерде немесе ұялы телефонда нақты өмірде көрген түстерді қайта құруға мүмкіндік береді. Арзан TCS347 көмегімен объектінің түсін сканерлеу үшін түймені басыңыз
Microbit көмегімен түстерді сұрыптау жобасын қалай жасауға болады ?: 4 қадам
Microbit көмегімен түс сұрыптаушы жобасын қалай жасауға болады ?: Жобаның мақсаттары Бағдарламаны жүктегеннен кейін біз микро: бит жарықдиодты нүктелік матрицаның «жүректі» көрсететінін, сервоприводты 90 ° инициализациялайтынын көреміз. Біз түс сенсорына көк немесе сары заттарды қойған кезде, серво әр түрлі бұрыштарға бұрылады, кейбіреулерін жіктейді