Агуулгын хүснэгт:
Видео: IR-Remote Color Guessing Game: 3 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:04
Энэхүү зааварчилгаанд би IR алсын удирдлага ашиглан RGB удирдамжийг хэрхэн хянах, үүнээс хөгжилтэй тоглоом хийхийг танд үзүүлэх болно.
Алхам 1: Шаардлагатай эд анги
Энэхүү төслийн хувьд танд дараахь хэсгүүд хэрэгтэй болно.
- arduino one- RGB Led- IR мэдрэгч
(жолоодлогын тоо нь тоглоом, амь наснаас хамаарна)- 2 ногоон гэрэл- 1 шар LED- 1 улбар шар LED- 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;
хүчингүй тохиргоо () {
Цуваа эхлэх (9600); irrecv.enableIRIn (); // хүлээн авагчийн pinMode -ийг эхлүүлэх (redPin, OUTPUT); pinMode (greenPin, OUTPUT); pinMode (bluePin, OUTPUT);
pinMode (levensPin1, OUTPUT);
pinMode (levensPin2, OUTPUT); pinMode (levensPin3, OUTPUT);
}
void loop () {
хэрэв (irrecv.decode (& үр дүн)) // алсын зайнаас дохио хүлээн авах {Serial.println (results.value, DEC); // дарагдсан товчлуур бүрээс ирсэн дохиог харуулна irrecv.resume (); // дараагийн дохио шилжүүлэгчийг хүлээн авна (үр дүн. утга) {// дохиог товчлуур дээрх тоонууд болгон хувиргаж, товчлууруудад үйлдэл оноож өгнө үү
тохиолдол 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 (); завсарлага;
кейс 109562816: // oud ding power
handleColor (); завсарлага; тохиолдол 109562878: // oud ding цуцлах/L CLK resetColor (); завсарлага;
тохиолдол 109562866: // lege knop midden
randomColor (); завсарлага;
тохиолдол 109562830: // pijltje naar rechts
displayEverything (); завсарлага; тохиолдол 109562838: // esc тохиолдол 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));
// амьд LED -ийг хянах
хэрэв (амьдардаг == 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 = blauw Санамсаргүй; 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 түвшинг нэмнэ үү. Гурван секундын турш таамаглаж, улаан анивчиж, амьдралаа хас. 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; } өөр {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); бүх зүйлийг дахин тохируулах (); }
}
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: Бүтээх
Та энэ төсөлд зориулж сайхан барилга барихыг хүсч байгаа нь ойлгомжтой. Энэ хэсэг нь тайлбарлахад нэлээд нээлттэй боловч зарим зүйлийг анхаарах хэрэгтэй: урд самбарыг нимгэн байлга
- Ардуино болон гагнуурын самбар барихад хангалттай зай үлдээ
- ардуиногийн хүчийг хангахын тулд ар талд нь нүх байгаа эсэхийг шалгаарай
Би утас холбох бүдүүлэг схемийг нэмсэн.
Амжилт хүсье, хөгжилтэй байгаарай!
Зөвлөмж болгож буй:
M5StickC ESP32 & NeoPixels LED Ring Random Color: 7 алхам
M5StickC ESP32 & NeoPixels LED Ring Random Color: Энэхүү төсөлд бид M5StickC ESP32 хавтанг ашиглан NeoPixels LED цагираг дээр санамсаргүй өнгө хэрхэн харуулахыг сурах болно
SkiiiD ашиглан Detect Color TCS3200 -ийг хэрхэн ашиглах вэ: 9 алхам
SkiiiD -тэй Detect Color TCS3200 -ийг хэрхэн ашиглах вэ: skiiiD -тэй Detect Color TCS3200 -ийг хөгжүүлэх заавар
Гэрлэн дохио / Feu Tri-Color!: 11 алхам
Замын гэрлэн дохио / Feu Tri-Color! Arduino-Fiche Male -Cable цахилгаан хэрэгсэл
Arduino Game Controller + Unity Game: 5 алхам
Arduino Game Controller + Unity Game: Энэхүү зааварчилгаанд би эв нэгдэлтэй холбогдож чадах arduino тоглоомын хянагчийг хэрхэн бүтээх/програмчлахыг танд үзүүлэх болно
Гайхалтай IPod Touch (1st Gen) Game Boy Color Case: 5 алхам
Гайхалтай IPod Touch (1st Gen) Game Boy Color Case: энэ бол хуучин GB өнгөөр хийгдсэн ipod хайрцаг юм. Таны харж байгаагаар энэ нь яг урд нь тоглоомтой хүүхэд шиг харагдаж байна, гэхдээ ар талд нь ipod байна! Хэрэв та ipod -ийг хулгайлахыг хүсэхгүй байгаа бол сайн, учир нь энэ нь хөгшин, шоглоомтой хүүхэд шиг харагдаж байна