Përmbajtje:
Video: Lojë IR-Remote Color Guessing: 3 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:21
Në këtë udhëzues, unë do t'ju tregoj se si të kontrolloni një led RGB duke përdorur një telekomandë IR dhe të bëni një lojë zbavitëse prej tij!
Hapi 1: Pjesët e nevojshme
Pjesët që do t'ju nevojiten për këtë projekt janë:
- arduino one- RGB Led- IR-Sensor
(numërimi i led varet nga loja, sasia e jetëve ose)- 2 led të gjelbër- 1 led të verdhë- 1 led portokalli- 3 led të kuq
Hapi 2: Kodi
#përfshi
int redPin = 10;
int greenPin = 6; int bluPin = 5;
int levensPin1 = 8;
int levensPin2 = 9; int levensPin3 = 12;
niveli intPin1 = 2;
niveli intPin2 = 3; niveli intPin3 = 4; niveli intPin4 = 7;
int RECV_PIN = 11;
IRrecv irrecv (RECV_PIN); rezultatet e deshifrimit të rezultateve;
// ngjyrat e hyrjes
int input = {-1, -1, -1}; int ngjyra = {-1, -1, -1};
int indexNumer = 0;
int indexColor = 0;
int waarde = 0;
int rood = 0;
int groen = 0; int blauw = 0;
// gjeneroni ngjyra
int roodRandom = 0; int groenRandom = 0; int blauwRandom = 0;
// variablat e lojës
int ndrysh = 200;
niveli int Numri = 1;
niveli int = {-1, -1, -1, -1};
int t = 0;
niveli int1 = 255;
niveli int2 = 0; niveli int3 = 0; niveli int4 = 0;
int jetën = 3;
int levens1 = 255; int levens2 = 255; int levens3 = 255;
int roodGok = 0;
int groenGok = 0; int blauwGok = 0;
void setup () {
Serial.filloj (9600); irrecv.enableIRIn (); // filloni pinMode të marrësit (redPin, OUTPUT); pinMode (greenPin, OUTPUT); pinMode (bluPin, OUTPUT);
pinMode (levensPin1, OUTPUT);
pinMode (levensPin2, OUTPUT); pinMode (levensPin3, OUTPUT);
}
lak void () {
në qoftë se (irrecv.decode (& results)) // merr sinjale nga telekomanda {Serial.println (results.value, DEC); // shfaq sinjalet e marra nga secili buton i shtypur irrecv.resume (); // merrni çelësin tjetër të sinjalit (rezultatet.vlera) {// shndërroni sinjalet në numrat në butona dhe caktoni veprime butonave
rasti 109562864:
addWaarde (1); pushim;
rasti 109562824:
addWaarde (2); pushim;
rasti 109562856:
addWaarde (3); pushim;
rasti 109562872:
addWaarde (4); pushim;
rasti 109562820:
addWaarde (5); pushim;
rasti 109562852:
addWaarde (6); pushim;
rasti 109562868:
addWaarde (7); pushim;
rasti 109562828:
addWaarde (8); pushim;
rasti 109562860:
addWaarde (9); pushim;
rasti 109562876:
addWaarde (0); pushim;
rasti 109562818: // oud ding enter/R CLK
handleInput (); pushim;
rasti 109562816: // fuqia e dingut me oud
handleColor (); pushim; rast 109562878: // ud ding cancel/L CLK resetColor (); pushim;
rast 109562866: // lege knop midden
randomColor (); pushim;
rasti 109562830: // pijltje naar rechts
displayEverything (); pushim; rast 109562838: // esc case 109562822: // burimi AV resetEverything (); pushim; }
// caktoni butona në telekomandë për të kontrolluar ngjyrën: në këtë mënyrë, lojtarët mund të shohin se si ngjyrat duken dhe si t'i kombinojnë ato, // para fillimit të një loje. kaloni (results.value) {case 109562840: rood = 255; pushim;
rasti 109562844:
groen = 255; pushim;
rasti 109562850:
blauw = 255; pushim;
rasti 109562836:
rood = 0; groen = 0; blauw = 0; pushim; }
}
analogWrite (redPin, abs (255 - rood)); // kontrollimi i drejtimit të RGB: në të kundërt, sepse imi është i lidhur në të kundërt.
analogWrite (greenPin, abs (255 - groen)); analogWrite (bluPin, abs (255 - blauw));
// kontrollimi i drejtimeve të drejtpërdrejta
nëse (jeton == 2) {levens1 = 0; } nëse (jeton == 1) {levens2 = 0; } nëse (jeton == 0) {levens3 = 0; } analogWrite (levensPin1, levens1); analogWrite (levensPin2, levens2); analogWrite (levensPin3, levens3);
// kontrollimi i niveleve led
nëse (niveliNumri == 1) {niveli1 = 255; } if (levelNumber == 2) {level1 = 255; niveli2 = 255; } if (levelNumber == 3) {level1 = 255; niveli2 = 255; niveli3 = 255; } if (levelNumber == 4) {level1 = 255; niveli2 = 255; niveli3 = 255; niveli4 = 255; } analogWrite (levelPin1, level1); analogWrite (levelPin2, level2); analogWrite (levelPin3, level3); analogWrite (levelPin4, level4);
}
void addWaarde (vlera int) {// shtoni vlerë të shtypur në listë
nëse (indeksi Numri == 3) {
kthim; }
nëse (input [indexNumber] == -1) {
hyrja [Numri i indeksit] = vlera; indeksNumri ++; }}
void handleInput () {// bëni një 'waarde' (vlerë) nga lista
waarde = abs (hyrje [0] * 100 + hyrje [1] * 10 + hyrje [2]); hyrje [0] = -1; // rivendos hyrjen e sinjalit [1] = -1; hyrje [2] = -1;
indeksi Numri = 0;
Serial.print ("waarde opgeslagen:"); Serial.println (waarde); addColor (waarde); }
void addColor (int waarde) {// shtoni 'waarde' 3-shifror në një listë
nëse (indexColor == 3) {
kthim; }
nëse (ngjyra [indexColor] == -1) {
ngjyra [indexColor] = vardis; nëse (ngjyra [indexColor]> 255) {ngjyra [indexColor] = 255; } indexColor ++; }
}
void randomColor () {// bëni që drita të kthehet në një ngjyrë të rastësishme dhe ta ruani atë në ndryshore
roodRandom = e rastësishme (0, 255);
groenRandom = e rastit (0, 255);
blauwRandom = e rastësishme (0, 255);
rood = roodRandom;
groen = groenRandomte; blauw = blauwRandom; Serial.print ("roodRandom ="); Serial.println (roodRandom); Serial.print ("groenRandom ="); Serial.println (i rastësishëm); Serial.print ("blauwRandom ="); Serial.println (blauwRandom);
}
void handleColor () {// kthejeni 'waarde' nga lista në variabla 'Gok' (me mend)
roodGok = ngjyra [0]; groenGok = ngjyra [1]; blauwGok = ngjyra [2]; // kontrolloni nëse ndryshoret Gok ndryshojnë shumë me ngjyrën e rastësishme reale: nëse po, shfaqni supozimin për tre sekonda, vezulloni jeshile dhe ndryshoni përsëri ngjyrën, shtoni një nivel abd dhe bëni ndryshimin e lejuar më të vogël // nëse jo, shfaqni mendoni për tre sekonda, mbyllni sytë me të kuqe dhe zbritni një jetë // nëse jeni jashtë jetës, loja fillon përsëri nëse (abs ((rood + groen + blauw) - (roodGok + groenGok + blauwGok)) <= ndrysh) { analogWrite (redPin, abs (255 - roodGok)); analogWrite (greenPin, abs (255 - groenGok)); analogWrite (bluPin, abs (255 - blauwGok)); vonesë (3000); analogWrite (redPin, 255); analogWrite (greenPin, 0); analogWrite (bluPin, 255); vonesë (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluPin, 255); vonesë (300); analogWrite (redPin, 255); analogWrite (greenPin, 0); analogWrite (bluPin, 255); vonesë (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluPin, 255); vonesë (300);
Serial.print ("roodGok =");
Serial.println (roodGok); Serial.print ("groenGok ="); Serial.println (groenGok); Serial.print ("blauwGok ="); Serial.println (blauwGok); resetColor (); randomColor (); niveliNumri ++; ndryshim -= 50; } else {analogWrite (redPin, abs (255 - roodGok)); analogWrite (greenPin, abs (255 - groenGok)); analogWrite (bluPin, abs (255 - blauwGok)); vonesë (3000); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluPin, 255); vonesë (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluPin, 255); vonesë (300); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluPin, 255); vonesë (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluPin, 255); vonesë (300); Serial.print ("roodGok ="); Serial.println (roodGok); Serial.print ("groenGok ="); Serial.println (groenGok); Serial.print ("blauwGok ="); Serial.println (blauwGok);
resetColor ();
jeton--; } if (jeton == 0) {analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluPin, 255); vonesa (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluPin, 255); vonesa (100); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluPin, 255); vonesa (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluPin, 255); vonesa (100); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluPin, 255); vonesa (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluPin, 255); vonesa (100); resetEverything (); }
}
void resetColor () {// përdoret për vlerat e rivendosjes, për një shtypje të gabuar ose çdo supozim të ri (vetëm për siguri)
ngjyra [0] = -1; ngjyra [1] = -1; ngjyra [2] = -1;
indeksiNumri = 0;
indexColor = 0; }
void resetEverything () {// rinis lojën
ngjyra [0] = -1; ngjyra [1] = -1; ngjyra [2] = -1;
indeksiNumri = 0;
indexColor = 0;
jeton = 3;
rood = 0; groen = 0; blauw = 0;
roodRandom = 0;
groenRandom = 0; blauwRandom = 0;
levens1 = 255;
levens2 = 255; levens3 = 255;
niveli1 = 255;
niveli2 = 0; niveli3 = 0; niveli4 = 0;
niveliNumri = 1;
t = 0;
}
void displayEverything () {// përdorni këtë për të shfaqur informacione të rëndësishme në monitorin serik
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 (i rastësishëm); 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); }
Hapi 3: Ndërtoni
Ju padyshim doni një ndërtim të bukur për këtë projekt. kjo pjesë është goxha e hapur për interpretim, por ka disa gjëra që duhet të keni parasysh me këtë: - mbajeni panelin e përparmë të hollë, kështu që ju ende mund t'i mbani ledet tuaja përmes tij dhe marrësi IR akoma punon
- mbani hapësirë të mjaftueshme në ndërtesë për arduino dhe një dërrasë lidhëse
- sigurohuni që ka një vrimë në pjesën e pasme për fuqinë e arduino
Kam shtuar një skemë të përafërt për instalimet elektrike.
Fat i mirë, dhe argëtohuni!
Recommended:
DIY 37 Leds Arduino Roulette Lojë: 3 hapa (me fotografi)
DIY 37 Leds Arduino Ruletë Lojë: Ruleta është një lojë kazino e quajtur sipas fjalës frënge që do të thotë rrotë e vogël
Mini lojë "Guess the Number" Lojë me mikro: bit: 10 hapa
Mini Makina e lojës "Guess the Number" me Micro: bit: A keni luajtur ndonjëherë " Guess the Number "? Kjo është një makinë lojërash shumë e thjeshtë për t’u ndërtuar që luan " Guess the Number " me ty Ne e projektuam këtë projekt DIY për të inkurajuar lojën fizike dhe për t'i ndihmuar fëmijët të mësojnë programim. Ai përdor një MU
Lojë Microbit Tic Tac Toe Lojë: 4 hapa (me fotografi)
Microbit Tic Tac Toe Lojë: Për këtë projekt, bashkëpunëtori im - @descartez dhe unë krijuam një lojë të mrekullueshme tic tac toe duke përdorur radio funksionalitetin e mikrobitëve. Nëse nuk keni dëgjuar më parë për mikrobit, ata janë një mikrokontrollues i mrekullueshëm i krijuar për t'u mësuar fëmijëve programimin. Ata
Lojë e thjeshtë Python Guessing Game: 11 hapa
Lojë e thjeshtë e supozimit të numrit të Python: Në këtë tutorial ne do të mësojmë se si të krijojmë lojë të thjeshtë të supozimit të numrave Python në aplikacionin Pycharm. Python është një gjuhë shkrimi që është e shkëlqyeshme si për fillestarët ashtu edhe për ekspertët. Stili i kodimit në Python është i lehtë për t’u lexuar dhe ndjekur
Lojë Python Guessing: 9 hapa
Lojë Python Guessing: Udhëzimet e mëposhtme japin udhëzime hap pas hapi se si të shkruani një program duke përdorur modulin e rastësishëm dhe duke krijuar një lojë supozimi që ndërvepron me përdoruesin. Për të filluar, do t'ju duhet të keni python të instaluar në kompjuterin tuaj dhe gjithashtu të operoni