Мазмуну:
Video: IR-Remote Color Guessing Game: 3 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:41
Бул көрсөтмөдө мен сизге 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 color = {-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 level1 = 255;
int level2 = 0; int level3 = 0; int level4 = 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 (); тыныгуу;
case 109562866: // lege knop midden
randomColor (); тыныгуу;
case 109562830: // pijltje naar rechts
displayEverything (); тыныгуу; case 109562838: // esc case 109562822: // AV source resetEverything (); тыныгуу; }
// түстү башкаруу үчүн алыстан башкаруу баскычтарын дайындоо: ушундай жол менен, оюнчулар түстөрдүн кандай экенин жана аларды кантип айкалыштыруу керек экенин көрө алышат, // оюнду баштоодон мурун. switch (results.value) {case 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));
// жандуу леддерди көзөмөлдөө
if (yaşayır == 2) {levens1 = 0; } if (yaşayır == 1) {levens2 = 0; } if (yaşayır == 0) {levens3 = 0; } analogWrite (levensPin1, levens1); analogWrite (levensPin2, levens2); analogWrite (levensPin3, levens3);
// көзөмөлдөөчү деңгээл леддери
if (levelNumber == 1) {level1 = 255; } if (levelNumber == 2) {level1 = 255; level2 = 255; } if (levelNumber == 3) {level1 = 255; level2 = 255; level3 = 255; } if (levelNumber == 4) {level1 = 255; level2 = 255; level3 = 255; level4 = 255; } analogWrite (levelPin1, level1); analogWrite (levelPin2, level2); analogWrite (levelPin3, level3); analogWrite (levelPin4, level4);
}
void addWaarde (int value) {// басылган маанини тизмеге кошуу
эгер (indexNumber == 3) {
кайтуу; }
if (input [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)) <= diff) { 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;
level1 = 255;
level2 = 0; level3 = 0; level4 = 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 Game Controller + Unity Game: 5 кадам
Arduino Game Controller + Unity Game: Бул көрсөтмөдө мен сизге биримдикке туташа турган arduino оюн контроллерин кантип курууну/программалоону көрсөтөм
Жөнөкөй Python Number Guessing Game: 11 кадам
Жөнөкөй Python санын божомолдоо оюну: Бул үйрөткүчтө биз Pycharm тиркемесинде жөнөкөй Python сандарды табуу оюнун түзүүнү үйрөтөбүз. Python - бул сценарий тили, аны үйрөнчүктөр үчүн да, эксперттер үчүн да сонун. Pythonдогу коддоо стили окууга оңой жана кийинки
Python Guessing Оюну: 9 кадам
Python Guessing Game: Төмөнкү нускамалар туш келди модулду колдонуп, колдонуучу менен өз ара аракеттенүүчү болжолдуу оюнду түзүү боюнча этап -этабы менен көрсөтмө берет. Баштоо үчүн, компьютериңизде python орнотулган болушу керек жана ошондой эле
Укмуш IPod Touch (1st Gen) Game Boy Color Case: 5 кадам
Awesome IPod Touch (1st Gen) Game Boy Color Case: бул эски GB түсүнөн жасалган ipod иши. Көрүп турганыңыздай, ал дагы эле алдыдагы оюнчук бала сыяктуу көрүнөт, бирок артында ipod бар! эгерде сиз ipodуңуздун уурдалышын каалабасаңыз, анда ал эски, оюнчук жигитке окшош
Game Boy Color Cartridge Ilummination (GBC): 5 кадам
Game Boy Color Cartridge Ilummination (GBC): Бул көрсөтмө GBC картриджин жарыктандыруу үчүн LEDди кантип колдонууну көрсөтөт