Съдържание:
Видео: IR-Remote Color Guessing Game: 3 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:52
В тази инструкция ще ви покажа как да управлявате RGB светодиод с помощта на 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 нивоPin1 = 2;
int нивоPin2 = 3; int нивоPin3 = 4; int нивоPin4 = 7;
int RECV_PIN = 11;
IRrecv unrecv (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 живота = 3;
int levens1 = 255; int levens2 = 255; int levens3 = 255;
int roodGok = 0;
int groenGok = 0; int blauwGok = 0;
void setup () {
Serial.begin (9600); unrecv.enableIRIn (); // стартиране на приемника pinMode (redPin, OUTPUT); pinMode (greenPin, OUTPUT); pinMode (bluePin, OUTPUT);
pinMode (levensPin1, OUTPUT);
pinMode (levensPin2, OUTPUT); pinMode (levensPin3, OUTPUT);
}
void loop () {
if (unrecv.decode (& results)) // приема сигналите от дистанционното {Serial.println (results.value, DEC); // показва сигналите, получени от всеки натиснат бутон unrecv.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 (); прекъсване;
case 109562816: // oud ding power
handleColor (); прекъсване; case 109562878: // отмяна на oud/L CLK resetColor (); прекъсване;
случай 109562866: // легенда knop midden
randomColor (); прекъсване;
случай 109562830: // pijltje naar rechts
displayEverything (); прекъсване; case 109562838: // esc case 109562822: // Възстановяване на AV източникаEverything (); прекъсване; }
// присвояване на бутони на дистанционното за управление на цвета: по този начин играчите могат да видят как изглеждат цветовете и как да ги комбинират, // преди да започнете игра. ключ (results.value) {случай 109562840: rood = 255; прекъсване;
дело 109562844:
groen = 255; прекъсване;
дело 109562850:
blauw = 255; прекъсване;
дело 109562836:
rood = 0; groen = 0; blauw = 0; прекъсване; }
}
analogWrite (redPin, abs (255 - rood)); // контролиране на RGB LED: обратно, защото моят е свързан обратно.
analogWrite (greenPin, abs (255 - groen)); analogWrite (bluePin, abs (255 - blauw));
// контролиране на живи светодиоди
if (животи == 2) {levens1 = 0; } if (животи == 1) {levens2 = 0; } if (животи == 0) {levens3 = 0; } analogWrite (levensPin1, levens1); analogWrite (levensPin2, levens2); analogWrite (levensPin3, levens3);
// контролиране на светодиодите за ниво
if (номер на ниво == 1) {ниво1 = 255; } if (levelNumber == 2) {level1 = 255; ниво2 = 255; } if (ниво на номер == 3) {ниво1 = 255; ниво2 = 255; ниво3 = 255; } if (levelNumber == 4) {level1 = 255; ниво2 = 255; ниво3 = 255; ниво4 = 255; } analogWrite (levelPin1, ниво1); analogWrite (levelPin2, level2); analogWrite (levelPin3, level3); analogWrite (levelPin4, level4);
}
void addWaarde (int value) {// добавяне на натисната стойност към списъка
if (indexNumber == 3) {
връщане; }
if (въвеждане [indexNumber] == -1) {
вход [индекс] = стойност; 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 (waarde); }
void addColor (int waarde) {// добавя 3-цифрения „waarde“към списък
if (indexColor == 3) {
връщане; }
if (цвят [indexColor] == -1) {
цвят [indexColor] = waarde; ако (цвят [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 ();
живота-; } if (животи == 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;
нивоNumber = 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
Добавих груба схема за окабеляване.
Късмет и се забавлявай!
Препоръчано:
Как да използвате Detect Color TCS3200 със SkiiiD: 9 стъпки
Как да използвате Detect Color TCS3200 със SkiiiD: Урок за разработване на Detect Color TCS3200 със skiiiD
Macintosh Classic II Color Hackintosh: 7 стъпки (със снимки)
Macintosh Classic II Color Hackintosh: Mac Classic II (M4150, построен през 1992 г.), Историята на Classic II Hackintosh, Дойдох във владение на реколта 1992 Mac Classic II и мислех, че това ще направи чудесно преобразуване. След дълго време на търсене на LCD панел с правилния размер, който да се смени
Arduino RGB Color Picker - Изберете цветове от обекти от реалния живот: 7 стъпки (със снимки)
Arduino RGB Color Picker - Изберете цветове от обекти от реалния живот: Лесно избирайте цветове от физически обекти с този Arduino базиран RGB инструмент за избор на цвят, който ви позволява да пресъздадете цветовете, които виждате в обекти от реалния живот на вашия компютър или мобилен телефон. Просто натиснете бутон, за да сканирате цвета на обекта, използвайки евтин TCS347
Arduino Game Controller + Unity Game: 5 стъпки
Arduino Game Controller + Unity Game: В тази инструкция ще ви покажа как да изградите/програмирате контролер за игри arduino, който може да се свърже с единство
Arduino Pocket Game Console + A -Maze - Maze Game: 6 стъпки (със снимки)
Arduino Pocket Game Console + A -Maze - Maze Game: Добре дошли в първата ми инструкция! Проектът, който искам да споделя с вас днес, е играта Arduino maze, която се превърна в джобна конзола също толкова способна, колкото Arduboy и подобни конзоли, базирани на Arduino. Тя може да бъде блеснала с моите (или вашите) бъдещи игри благодарение на експо