INHOUDSOPGAWE:
Video: IR-afstand kleur raaisel spel: 3 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:26
In hierdie instruksies sal ek jou wys hoe om 'n RGB-LED met 'n IR-afstandsbediening te beheer en 'n prettige speletjie daarvan te maak!
Stap 1: Onderdele benodig
Die onderdele wat u benodig vir hierdie projek is:
- arduino one- RGB LED- IR-sensor
(led-telling hang af van die spel, die hoeveelheid lewens of)- 2 groen leds- 1 geel led- 1 oranje led- 3 rooi leds
Stap 2: Kode
#insluit
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); resultate van dekode_resultate;
// invoer kleure
int input = {-1, -1, -1}; int kleur = {-1, -1, -1};
int indexNumber = 0;
int indexColor = 0;
int waarde = 0;
int rood = 0;
int groen = 0; int blauw = 0;
// genereer kleure
int roodRandom = 0; int groenRandom = 0; int blauwRandom = 0;
// spel veranderlikes
int diff = 200;
int levelNumber = 1;
int -vlak = {-1, -1, -1, -1};
int t = 0;
int vlak1 = 255;
int level2 = 0; int level3 = 0; int level4 = 0;
int lewens = 3;
int lewens1 = 255; int lewens2 = 255; int lewens3 = 255;
int roodGok = 0;
int groenGok = 0; int blauwGok = 0;
ongeldige opstelling () {
Serial.begin (9600); irrecv.enableIRIn (); // begin die ontvanger pinMode (redPin, OUTPUT); pinMode (greenPin, OUTPUT); pinMode (bluePin, OUTPUT);
pinMode (levensPin1, OUTPUT);
pinMode (levensPin2, OUTPUT); pinMode (levensPin3, OUTPUT);
}
leemte -lus () {
as (irrecv.decode (& resultate)) // die seine van die afgeleë {Serial.println (results.value, DEC) ontvang; // vertoon die seine wat ontvang word van elke ingedrukte knoppie irrecv.resume (); // ontvang die volgende seinskakelaar (results.value) {// verander die seine in die syfers op die knoppies en ken aksies toe aan knoppies
saak 109562864:
addWaarde (1); breek;
saak 109562824:
addWaarde (2); breek;
saak 109562856:
addWaarde (3); breek;
saak 109562872:
addWaarde (4); breek;
saak 109562820:
addWaarde (5); breek;
saak 109562852:
addWaarde (6); breek;
saak 109562868:
addWaarde (7); breek;
saak 109562828:
addWaarde (8); breek;
saak 109562860:
addWaarde (9); breek;
saak 109562876:
addWaarde (0); breek;
saak 109562818: // oud ding enter/R CLK
handleInput (); breek;
saak 109562816: // oud ding power
handleColor (); breek; saak 109562878: // oud ding kanselleer/L CLK resetColor (); breek;
saak 109562866: // lege knop midden
randomColor (); breek;
saak 109562830: // pijltje naar rechts
displayEverything (); breek; saak 109562838: // esc saak 109562822: // AV bron resetEverything (); breek; }
// knoppies op die afstandsbediening toewys om die kleur te beheer: op hierdie manier kan spelers sien hoe die kleure lyk en hoe hulle dit kan kombineer, // voordat u 'n wedstryd begin. skakelaar (result.value) {saak 109562840: rood = 255; breek;
saak 109562844:
groen = 255; breek;
saak 109562850:
blauw = 255; breek;
saak 109562836:
rood = 0; groen = 0; blauw = 0; breek; }
}
analogWrite (redPin, abs (255 - rood)); // die beheer van RGB LED: omgekeerd, want myne is omgekeerd bedraad.
analogWrite (greenPin, abs (255 - groen)); analogWrite (bluePin, abs (255 - blauw));
// beheer van lewendige leds
as (lewe == 2) {levens1 = 0; } as (lewens == 1) {levens2 = 0; } as (lewens == 0) {levens3 = 0; } analogWrite (levensPin1, levens1); analogWrite (levensPin2, levens2); analogWrite (levensPin3, levens3);
// die beheer van die vlak leds
as (levelNumber == 1) {level1 = 255; } as (levelNumber == 2) {level1 = 255; vlak2 = 255; } as (levelNumber == 3) {level1 = 255; vlak2 = 255; vlak3 = 255; } as (levelNumber == 4) {level1 = 255; vlak2 = 255; vlak3 = 255; vlak4 = 255; } analogWrite (levelPin1, level1); analogWrite (levelPin2, level2); analogWrite (levelPin3, level3); analogWrite (levelPin4, level4);
}
void addWaarde (int value) {// voeg gepersonaliseerde waarde by die lys
as (indexNumber == 3) {
terugkeer; }
as (invoer [indexNumber] == -1) {
invoer [indexNumber] = waarde; indexNumber ++; }}
void handleInput () {// maak 'n 'waarde' (waarde) uit die lys
waarde = abs (invoer [0] * 100 + invoer [1] * 10 + invoer [2]); invoer [0] = -1; // herstel die seininvoer [1] = -1; invoer [2] = -1;
indeksNommer = 0;
Serial.print ("waarde opgeslagen:"); Serial.println (waarde); addColor (waarde); }
void addColor (int waarde) {// voeg die 3-syfer 'waarde' by 'n lys
as (indexColor == 3) {
terugkeer; }
as (kleur [indexColor] == -1) {
kleur [indexColor] = waarde; as (kleur [indexColor]> 255) {color [indexColor] = 255; } indexColor ++; }
}
void randomColor () {// laat die lig 'n ewekansige kleur verander en stoor dit in veranderlikes
roodRandom = ewekansig (0, 255);
groenRandom = ewekansig (0, 255);
blauwRandom = ewekansig (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 () {// verander die 'waarde' uit die lys in 'Gok' (raai) veranderlikes
roodGok = kleur [0]; groenGok = kleur [1]; blauwGok = kleur [2]; // kyk of die Gok -veranderlikes te veel verskil met die werklike ewekansige kleur: as dit die geval is, vertoon die raai vir drie sekondes, knip groen en verander die kleur weer, voeg 'n vlak by en maak die toegelate verskil kleiner // indien nie, vertoon die raai vir drie sekondes, knip rooi en trek 'n lewe af // as jy nie meer lewe nie, begin die spel weer as (abs ((rood + groen + blauw) - (roodGok + groenGok + blauwGok)) <= diff) { analogWrite (redPin, abs (255 - roodGok)); analogWrite (greenPin, abs (255 - groenGok)); analogWrite (bluePin, abs (255 - blauwGok)); vertraging (3000); analogWrite (redPin, 255); analogWrite (greenPin, 0); analogWrite (bluePin, 255); vertraging (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); vertraging (300); analogWrite (redPin, 255); analogWrite (greenPin, 0); analogWrite (bluePin, 255); vertraging (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); vertraging (300);
Serial.print ("roodGok =");
Serial.println (roodGok); Serial.print ("groenGok ="); Serial.println (groenGok); Serial.print ("blauwGok ="); Serial.println (blauwGok); resetColor (); randomColor (); levelNumber ++; ewenaar -= 50; } anders {analogWrite (redPin, abs (255 - roodGok)); analogWrite (greenPin, abs (255 - groenGok)); analogWrite (bluePin, abs (255 - blauwGok)); vertraging (3000); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); vertraging (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); vertraging (300); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); vertraging (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); vertraging (300); Serial.print ("roodGok ="); Serial.println (roodGok); Serial.print ("groenGok ="); Serial.println (groenGok); Serial.print ("blauwGok ="); Serial.println (blauwGok);
resetColor ();
lewens--; } if (lives == 0) {analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); vertraging (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); vertraging (100); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); vertraging (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); vertraging (100); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); vertraging (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); vertraging (100); resetEverything (); }
}
void resetColor () {// gebruik vir die terugstel van waardes, vir 'n verkeerde pers of elke nuwe raaiskoot (net vir sekerheid)
kleur [0] = -1; kleur [1] = -1; kleur [2] = -1;
indexNumber = 0;
indexColor = 0; }
void resetEverything () {// begin die spel weer
kleur [0] = -1; kleur [1] = -1; kleur [2] = -1;
indexNumber = 0;
indexColor = 0;
lewens = 3;
rood = 0; groen = 0; blauw = 0;
roodRandom = 0;
groenRandom = 0; blauwRandom = 0;
lewens1 = 255;
lewens2 = 255; lewens3 = 255;
vlak1 = 255;
vlak2 = 0; vlak3 = 0; vlak4 = 0;
levelNumber = 1;
t = 0;
}
void displayEverything () {// gebruik dit om belangrike inligting op die seriële monitor te vertoon
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); }
Stap 3: Bou
U wil natuurlik 'n goeie bou vir hierdie projek hê. hierdie deel is redelik oop vir interpretasie, maar daar is 'n paar dinge om in gedagte te hou: - hou die voorpaneel dun, sodat u steeds u leds daardeur kan steek en die IR -ontvanger werk nog steeds
- Hou genoeg ruimte in die bou vir die arduino en 'n soldeerbord
- Maak seker dat daar 'n gat in die rug is vir die krag van die arduino
Ek het 'n rowwe skema vir die bedrading bygevoeg.
Sterkte, en om pret te hê!
Aanbeveel:
Hoe om 'n fotosel te gebruik om die kleur van RGB LED te verander: 3 stappe
Hoe om 'n fotosel te gebruik om die kleur van RGB LED te verander: Vir my Arduino -projek deel 01 was my oorspronklike idee om 'n temperatuursensor te gebruik om 'n LED aan en uit te skakel, maar helaas, my temperatuursensor het nog nie gekom nie, wat my laat gekies uit die sensors wat in die Elegoo -beginkit beskikbaar is, en wonder of
M5StickC ESP32 en NeoPixels LED -ring ewekansige kleur: 7 stappe
M5StickC ESP32 & NeoPixels LED Ring Random Color: In hierdie projek leer ons hoe om 'n ewekansige kleur op die NeoPixels LED Ring te vertoon met 'n M5StickC ESP32 -bord. Kyk na die video
N Eenvoudige raaisel - Python + XBees + Arduino: 10 stappe
N Eenvoudige raaisel - Python + XBees + Arduino: So werk die spel: U het 4 pogings om 'n letter tussen' a ' -' h ' - > Raai die regte letter: jy wen! ?-> Raai die verkeerde letter: spel verby?-> Raai u dat enige ander karakter buite 'a' - 'h': die spel verby is? Met u Arduino kan u
Python -raaisel: 9 stappe
Python Guessing Game: Die volgende instruksies gee stap vir stap leiding oor hoe om 'n program te skryf met behulp van die ewekansige module en om 'n raaispel te skep wat in wisselwerking met die gebruiker is. Om aan die gang te kom, moet u python op u rekenaar geïnstalleer het en ook
Wat dink die bietjie? Maak 'n eenvoudige raaisel met die BBC Microbit !: 10 stappe
Wat dink die bietjie? Maak 'n eenvoudige raaisel met die BBC Microbit !: Ek het 'n paar BBC Microbits opgetel nadat ek positiewe resensies daaroor gelees het in verskeie aanlynartikels. 'n paar uur en kom op met