![Laro sa Hulaan ng Kulay ng IR-Remote na Kulay: 3 Mga Hakbang Laro sa Hulaan ng Kulay ng IR-Remote na Kulay: 3 Mga Hakbang](https://i.howwhatproduce.com/images/006/image-16848-17-j.webp)
Talaan ng mga Nilalaman:
2025 May -akda: John Day | [email protected]. Huling binago: 2025-01-23 15:13
![Laro sa Hulaan ng Kulay ng IR-Remote na Kulay Laro sa Hulaan ng Kulay ng IR-Remote na Kulay](https://i.howwhatproduce.com/images/006/image-16848-18-j.webp)
Sa itinuturo na ito, ipapakita ko sa iyo kung paano makontrol ang isang RGB na humantong gamit ang isang IR-remote, at gumawa ng isang masayang laro dito!
Hakbang 1: Kailangan ng Mga Bahagi
![Mga Bahaging Kailangan Mga Bahaging Kailangan](https://i.howwhatproduce.com/images/006/image-16848-19-j.webp)
Ang mga bahagi na kakailanganin mo para sa proyektong ito ay:
- Arduino isa- RGB Led- IR-Sensor
(ang led count ay depende sa laro, ang dami ng buhay o) - 2 green leds- 1 dilaw na led - 1 orange led- 3 red leds
Hakbang 2: Code
# isama
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); mga resulta sa pag-decode_resulta;
// mga kulay ng pag-input
int input = {-1, -1, -1}; int kulay = {-1, -1, -1};
int indexNumber = 0;
int indexColor = 0;
int waarde = 0;
int rood = 0;
int gren = 0; int blauw = 0;
// makabuo ng mga kulay
int roodRandom = 0; int groenRandom = 0; int blauwRandom = 0;
// variable ng laro
int diff = 200;
int levelNumber = 1;
int level = {-1, -1, -1, -1};
int t = 0;
int antas1 = 255;
int antas2 = 0; int antas3 = 0; int antas4 = 0;
int buhay = 3;
int levens1 = 255; int levens2 = 255; int levens3 = 255;
int roodGok = 0;
int groenGok = 0; int blauwGok = 0;
walang bisa ang pag-setup () {
Serial.begin (9600); irrecv.enableIRIn (); // simulan ang receiver pinMode (redPin, OUTPUT); pinMode (greenPin, OUTPUT); pinMode (bluePin, OUTPUT);
pinMode (levensPin1, OUTPUT);
pinMode (levensPin2, OUTPUT); pinMode (levensPin3, OUTPUT);
}
void loop () {
kung (irrecv.decode (& mga resulta)) // makatanggap ng mga signal mula sa remote na {Serial.println (results.value, DEC); // ipakita ang mga signal na natanggap mula sa bawat pinindot na pindutan na irrecv.resume (); // makatanggap ng susunod na switch ng signal (results.value) {// buksan ang mga signal sa mga numero sa mga pindutan, at magtalaga ng mga pagkilos sa mga pindutan
kaso 109562864:
addWaarde (1); pahinga;
kaso 109562824:
addWaarde (2); pahinga;
kaso 109562856:
addWaarde (3); pahinga;
kaso 109562872:
addWaarde (4); pahinga;
kaso 109562820:
addWaarde (5); pahinga;
kaso 109562852:
addWaarde (6); pahinga;
kaso 109562868:
addWaarde (7); pahinga;
kaso 109562828:
addWaarde (8); pahinga;
kaso 109562860:
addWaarde (9); pahinga;
kaso 109562876:
addWaarde (0); pahinga;
kaso 109562818: // oud ding enter / R CLK
hawakanInput (); pahinga;
kaso 109562816: // oud ding power
hawakanColor (); pahinga; kaso 109562878: // oud ding cancel / L CLK resetColor (); pahinga;
kaso 109562866: // lege knop midden
randomColor (); pahinga;
kaso 109562830: // pijltje naar rechts
displayEverything (); pahinga; case 109562838: // esc case 109562822: // AV source resetEverything (); pahinga; }
// magtalaga ng mga pindutan sa remote para sa pagkontrol sa kulay: sa ganitong paraan, makikita ng mga manlalaro kung ano ang hitsura ng mga kulay at kung paano pagsamahin ang mga ito, // bago simulan ang isang laro. switch (results.value) {case 109562840: rood = 255; pahinga;
kaso 109562844:
singit = 255; pahinga;
kaso 109562850:
blauw = 255; pahinga;
kaso 109562836:
rood = 0; singit = 0; blauw = 0; pahinga; }
}
analogWrite (redPin, abs (255 - rood)); // pagkontrol sa RGB na humantong: sa kabaligtaran, dahil ang minahan ay wired sa kabaligtaran.
analogWrite (greenPin, abs (255 - gren)); analogWrite (bluePin, abs (255 - blauw));
// pagkontrol sa live leds
kung (nabubuhay == 2) {levens1 = 0; } kung (nabubuhay == 1) {levens2 = 0; } kung (nabubuhay == 0) {levens3 = 0; } analogWrite (levensPin1, levens1); analogWrite (levensPin2, levens2); analogWrite (levensPin3, levens3);
// pagkontrol sa antas ng mga leds
kung (levelNumber == 1) {level1 = 255; } kung (levelNumber == 2) {level1 = 255; antas2 = 255; } kung (levelNumber == 3) {level1 = 255; antas2 = 255; antas3 = 255; } kung (levelNumber == 4) {level1 = 255; antas2 = 255; antas3 = 255; antas4 = 255; } analogWrite (levelPin1, level1); analogWrite (levelPin2, level2); analogWrite (levelPin3, level3); analogWrite (levelPin4, level4);
}
walang bisa ang addWaarde (int halaga) {// magdagdag ng pinindot na halaga sa listahan
kung (indexNumber == 3) {
bumalik; }
kung (input [indexNumber] == -1) {
input [indexNumber] = halaga; indexNumber ++; }}
void handleInput () {// gumawa ng 'waarde' (halaga) sa listahan
waarde = abs (input [0] * 100 + input [1] * 10 + input [2]); input [0] = -1; // reset de signalen input [1] = -1; input [2] = -1;
indexNumber = 0;
Serial.print ("waarde opgeslagen:"); Serial.println (waarde); addColor (waarde); }
void addColor (int waarde) {// idagdag ang 3-digit na 'waarde' sa isang listahan
kung (indexColor == 3) {
bumalik; }
kung (kulay [indexColor] == -1) {
kulay [indexColor] = waarde; kung (kulay [indexColor]> 255) {color [indexColor] = 255; } indexColor ++; }
}
void randomColor () {// gawin ang ilaw na isang random na kulay at i-save ito sa mga variable
roodRandom = random (0, 255);
groenRandom = random (0, 255);
blauwRandom = random (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 () {// turn the 'waarde' from the list into 'Gok' (hulaan) variable
roodGok = kulay [0]; groenGok = kulay [1]; blauwGok = kulay [2]; // suriin kung ang mga variable ng Gok ay naiiba nang magkakaiba sa tunay na random na kulay: kung gayon, ipakita ang hulaan sa loob ng tatlong segundo, kumurap berde at baguhin ulit ang kulay, magdagdag ng isang antas na abd gawing mas maliit ang pinapayagan na pagkakaiba // kung hindi, ipakita ang hulaan sa loob ng tatlong segundo, blink red at ibawas ang isang buhay // kung wala ka sa buhay, magsisimula muli ang laro kung (abs ((rood + groen + blauw) - (roodGok + groenGok + blauwGok)) <= diff) { analogWrite (redPin, abs (255 - roodGok)); analogWrite (greenPin, abs (255 - groenGok)); analogWrite (bluePin, abs (255 - blauwGok)); pagkaantala (3000); analogWrite (redPin, 255); analogWrite (greenPin, 0); analogWrite (bluePin, 255); pagkaantala (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); pagkaantala (300); analogWrite (redPin, 255); analogWrite (greenPin, 0); analogWrite (bluePin, 255); pagkaantala (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); pagkaantala (300);
Serial.print ("roodGok =");
Serial.println (roodGok); Serial.print ("groenGok ="); Serial.println (groenGok); Serial.print ("blauwGok ="); Serial.println (blauwGok); resetColor (); randomColor (); levelNumber ++; diff - = 50; } iba pa {analogWrite (redPin, abs (255 - roodGok)); analogWrite (greenPin, abs (255 - groenGok)); analogWrite (bluePin, abs (255 - blauwGok)); pagkaantala (3000); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); pagkaantala (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); pagkaantala (300); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); pagkaantala (300); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); pagkaantala (300); Serial.print ("roodGok ="); Serial.println (roodGok); Serial.print ("groenGok ="); Serial.println (groenGok); Serial.print ("blauwGok ="); Serial.println (blauwGok);
resetColor ();
buhay--; } kung (nabubuhay == 0) {analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); pagkaantala (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); pagkaantala (100); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); pagkaantala (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); pagkaantala (100); analogWrite (redPin, 0); analogWrite (greenPin, 255); analogWrite (bluePin, 255); pagkaantala (100); analogWrite (redPin, 255); analogWrite (greenPin, 255); analogWrite (bluePin, 255); pagkaantala (100); i-reset ang Lahat (); }
}
void resetColor () {// gamitin para sa mga halaga ng pag-reset, para sa isang maling pindutin o bawat bagong hula (para lamang sa katiyakan)
kulay [0] = -1; kulay [1] = -1; kulay [2] = -1;
indexNumber = 0;
indexColor = 0; }
void resetEverything () {// i-restart ang laro
kulay [0] = -1; kulay [1] = -1; kulay [2] = -1;
indexNumber = 0;
indexColor = 0;
nabubuhay = 3;
rood = 0; singit = 0; blauw = 0;
roodRandom = 0;
groenRandom = 0; blauwRandom = 0;
levens1 = 255;
levens2 = 255; levens3 = 255;
antas1 = 255;
antas2 = 0; antas3 = 0; antas4 = 0;
levelNumber = 1;
t = 0;
}
void displayEverything () {// gamitin ito upang maipakita ang mahalagang impormasyon sa serial monitor
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); }
Hakbang 3: Bumuo
![Magtayo Magtayo](https://i.howwhatproduce.com/images/006/image-16848-20-j.webp)
![Magtayo Magtayo](https://i.howwhatproduce.com/images/006/image-16848-21-j.webp)
![Magtayo Magtayo](https://i.howwhatproduce.com/images/006/image-16848-22-j.webp)
![Magtayo Magtayo](https://i.howwhatproduce.com/images/006/image-16848-23-j.webp)
Malinaw na nais mo ang isang magandang build para sa proyektong ito. ang bahaging ito ay bukas sa interpretasyon, ngunit may ilang mga bagay na dapat tandaan sa ito: - panatilihing payat ang front panel, upang maaari mo pa ring idikit ang iyong mga leds dito at gagana pa rin ang IR-receiver
- panatilihin ang sapat na puwang sa build para sa arduino at isang solder board
- tiyakin na mayroong isang butas sa likod para sa lakas ng arduino
Nagdagdag ako ng isang magaspang na pamamaraan para sa mga kable.
Good luck, at magsaya!
Inirerekumendang:
Isang Simpleng Laro ng Hulaan - Python + XBees + Arduino: 10 Hakbang
![Isang Simpleng Laro ng Hulaan - Python + XBees + Arduino: 10 Hakbang Isang Simpleng Laro ng Hulaan - Python + XBees + Arduino: 10 Hakbang](https://i.howwhatproduce.com/images/008/image-23574-j.webp)
Isang Simpleng Laro ng Hulaan - Python + XBees + Arduino: Narito kung paano gumagana ang laro: Mayroon kang 4 na pagsubok na hulaan ang isang liham sa pagitan ng 'a' - 'h' - > Hulaan ang tamang letra: Manalo ka! ? - > Hulaan ang maling titik: Game over? - > Hulaan ang anumang iba pang mga character sa labas ng 'a' - 'h': Tapos na ang laro? Papayagan ka ng iyong Arduino
Tagapili ng Kulay ng Arduino RGB - Pumili ng Mga Kulay Mula sa Tunay na Mga Bagay sa Buhay: 7 Mga Hakbang (na may Mga Larawan)
![Tagapili ng Kulay ng Arduino RGB - Pumili ng Mga Kulay Mula sa Tunay na Mga Bagay sa Buhay: 7 Mga Hakbang (na may Mga Larawan) Tagapili ng Kulay ng Arduino RGB - Pumili ng Mga Kulay Mula sa Tunay na Mga Bagay sa Buhay: 7 Mga Hakbang (na may Mga Larawan)](https://i.howwhatproduce.com/images/010/image-27955-j.webp)
Tagapili ng Kulay ng Arduino RGB - Pumili ng Mga Kulay Mula sa Mga Bagay na Tunay na Buhay: Madaling pumili ng mga kulay mula sa mga pisikal na bagay gamit ang tagapili ng kulay na RGB na batay sa Arduino, na nagbibigay-daan sa iyo upang muling likhain ang mga kulay na nakikita mo sa mga totoong bagay sa iyong pc o mobile phone. Itulak lamang ang isang pindutan upang i-scan ang kulay ng object gamit ang isang murang TCS347
Simpleng Laro sa Hulaan ng Numero ng Python: 11 Mga Hakbang
![Simpleng Laro sa Hulaan ng Numero ng Python: 11 Mga Hakbang Simpleng Laro sa Hulaan ng Numero ng Python: 11 Mga Hakbang](https://i.howwhatproduce.com/images/004/image-10212-31-j.webp)
Simpleng Laro sa Hulaan ng Numero ng Python: Sa tutorial na ito magtuturo kami kung paano lumikha ng simpleng laro ng paghula ng numero ng Python sa application ng Pycharm. Ang Python ay isang wika ng scripting na mahusay para sa parehong mga nagsisimula at eksperto. Ang estilo ng pag-coding sa Python ay madaling basahin at mag-follo
Laro Hulaan ng Python: 9 Mga Hakbang
![Laro Hulaan ng Python: 9 Mga Hakbang Laro Hulaan ng Python: 9 Mga Hakbang](https://i.howwhatproduce.com/images/004/image-11629-27-j.webp)
Laro sa Hulaan ng Python: Ang mga sumusunod na tagubilin ay nagbibigay ng sunud-sunod na patnubay sa kung paano magsulat ng isang programa gamit ang random module at lumikha ng isang hulaan na laro na nakikipag-ugnay sa gumagamit. Upang makapagsimula kakailanganin mong magkaroon ng naka-install na sawa sa iyong computer at op din
Ano ang Pag-iisip ng Bit? Gumawa ng isang Simpleng Laro ng Hulaan Sa BBC Microbit !: 10 Hakbang
![Ano ang Pag-iisip ng Bit? Gumawa ng isang Simpleng Laro ng Hulaan Sa BBC Microbit !: 10 Hakbang Ano ang Pag-iisip ng Bit? Gumawa ng isang Simpleng Laro ng Hulaan Sa BBC Microbit !: 10 Hakbang](https://i.howwhatproduce.com/images/005/image-12331-10-j.webp)
Ano ang Pag-iisip ng Bit? Gumawa ng isang Simpleng Laro ng Hulaan Sa BBC Microbit !: Kinuha ko ang isang pares ng mga Microbits ng BBC pagkatapos basahin ang mga positibong pagsusuri tungkol sa kanila sa maraming mga online na artikulo. Sa isang pagtatangka na pamilyar ang aking sarili sa BIT, naglaro ako sa online na Microsoft Blocks Editor para sa ng ilang oras at dumating up wi