ዝርዝር ሁኔታ:
ቪዲዮ: IR-Remote Color Guessing Game: 3 ደረጃዎች
2024 ደራሲ ደራሲ: John Day | [email protected]. ለመጨረሻ ጊዜ የተሻሻለው: 2024-01-30 07:32
በዚህ አስተማሪ ውስጥ ፣ የ IR-remote ን በመጠቀም የ RGB መሪን እንዴት እንደሚቆጣጠሩ አሳያለሁ ፣ እና ከእሱ አስደሳች ጨዋታ ያድርጉ!
ደረጃ 1: ክፍሎች ያስፈልጋሉ
ለዚህ ፕሮጀክት የሚያስፈልጉዎት ክፍሎች -
- arduino one- RGB Led- IR-Sensor
(የመሪነት ብዛት በጨዋታው ፣ በህይወት ብዛት ወይም)- 2 አረንጓዴ ሊድ- 1 ቢጫ መሪ- 1 ብርቱካናማ መሪ- 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 level1 = 255;
int level2 = 0; int level3 = 0; int level4 = 0;
int ሕይወት = 3;
int levens1 = 255; int levens2 = 255; int levens3 = 255;
int roodGok = 0;
int groenGok = 0; int blauwGok = 0;
ባዶነት ማዋቀር () {
Serial.begin (9600); irrecv.enableIRIn (); // ተቀባዩን ፒን ሞዶን (redPin ፣ OUTPUT) ይጀምሩ። pinMode (አረንጓዴ ፒን ፣ ውፅዓት); pinMode (ሰማያዊ ፒን ፣ ውፅዓት);
pinMode (levensPin1 ፣ OUTPUT);
pinMode (levensPin2 ፣ OUTPUT); pinMode (levensPin3 ፣ OUTPUT);
}
ባዶነት 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 dinging power
መያዣ ቀለም (); ሰበር; መያዣ 109562878: // oud ding cancel/L CLK resetColor (); ሰበር;
ጉዳይ 109562866: // lege knop midden
randomColor (); ሰበር;
ጉዳይ 109562830: // pijltje naar rechts
ማሳያ ሁሉንም ነገር (); ሰበር; መያዣ 109562838: // esc case 109562822: // AV ምንጭ resetEverything (); ሰበር; }
// ቀለሙን ለመቆጣጠር በርቀት መቆጣጠሪያ ላይ አዝራሮችን ይመድቡ -በዚህ መንገድ ተጫዋቾች ቀለሞች ምን እንደሚመስሉ እና እንዴት እንደሚጣመሩ ማየት ይችላሉ ፣
// ጨዋታ ከመጀመርዎ በፊት። መቀየሪያ (results.value) {case 109562840: rood = 255; ሰበር;
ጉዳይ 109562844
ግሬንስ = 255; ሰበር;
ጉዳይ 109562850
blauw = 255; ሰበር;
ጉዳይ 109562836
rood = 0; ግሬንስ = 0; blauw = 0; ሰበር; }
}
analogWrite (redPin ፣ abs (255 - rood)); // የ RGB መሪን መቆጣጠር - በተቃራኒው ፣ የእኔ በተቃራኒው የተገጠመ ስለሆነ።
አናሎግ ፃፍ (አረንጓዴ ፒን ፣ አብስ (255 - ግሬንስ)); analogWrite (bluePin ፣ abs (255 - blauw));
// የቀጥታ ሊዶችን መቆጣጠር
ከሆነ (ይኖራል == 2) {levens1 = 0; } ከሆነ (ይኖራል == 1) {levens2 = 0; } ከሆነ (ይኖራል == 0) {levens3 = 0; } የአናሎግ ፃፍ (levensPin1 ፣ levens1); analogWrite (levensPin2 ፣ levens2); አናሎግ ፃፍ (levensPin3 ፣ levens3);
// ደረጃን ሊድስ መቆጣጠር
ከሆነ (levelNumber == 1) {level1 = 255; } ከሆነ (levelNumber == 2) {level1 = 255; ደረጃ 2 = 255; } ከሆነ (levelNumber == 3) {level1 = 255; ደረጃ 2 = 255; ደረጃ 3 = 255; } ከሆነ (levelNumber == 4) {level1 = 255; ደረጃ 2 = 255; ደረጃ 3 = 255; ደረጃ 4 = 255; } የአናሎግ ፃፍ (ደረጃ ፒን 1 ፣ ደረጃ 1); አናሎግ ፃፍ (ደረጃ ፒን 2 ፣ ደረጃ 2); አናሎግ ፃፍ (ደረጃ ፒን 3 ፣ ደረጃ 3); አናሎግ ፃፍ (ደረጃ ፒን 4 ፣ ደረጃ 4);
}
ባዶነት addWaarde (int value) {// ወደ ዝርዝር የተጨመቀ እሴት ያክሉ
ከሆነ (indexNumber == 3) {
መመለስ; }
ከሆነ (ግቤት [indexNumber] == -1) {
ግብዓት [indexNumber] = እሴት; ጠቋሚ ቁጥር ++; }}
ባዶነት handleInput () {// ከዝርዝሩ ውስጥ 'ዋርዴ' (እሴት) ያድርጉ
waarde = abs (ግቤት [0] * 100 + ግብዓት [1] * 10 + ግብዓት [2]); ግብዓት [0] = -1; // ዳግም de signalen ግብዓት [1] = -1; ግብዓት [2] = -1;
indexNumber = 0;
Serial.print ("waarde opgeslagen:"); Serial.println (waarde); addColor (ዋርዴ); }
ባዶነት addColor (int waarde) {// ባለ 3-አሃዝ ‹ዋርዴ› ን ወደ ዝርዝር ያክሉ
ከሆነ (indexColor == 3) {
መመለስ; }
ከሆነ (ቀለም [indexColor] == -1) {
ቀለም [indexColor] = waarde; ከሆነ (ቀለም [indexColor]> 255) {ቀለም [indexColor] = 255; } ጠቋሚ ቀለም ++; }
}
ባዶ (የዘፈቀደ) ቀለም () {// ብርሃኑ የዘፈቀደ ቀለም እንዲለውጥ እና በተለዋጮች ውስጥ እንዲያስቀምጥ ያድርጉት
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);
}
ባዶ እጀታ ቀለም () {// ከዝርዝሩ ውስጥ 'ውጊያውን' ወደ 'ጎክ' (ግምቶች) ተለዋዋጮች ይለውጡ
roodGok = ቀለም [0]; groenGok = ቀለም [1]; blauwGok = ቀለም [2]; // የጎክ ተለዋዋጮች ከእውነተኛው የዘፈቀደ ቀለም ጋር በጣም የሚለያዩ መሆናቸውን ይፈትሹ - እንደዚያ ከሆነ ግምቱን ለሦስት ሰከንዶች ያሳዩ ፣ አረንጓዴውን ያንፀባርቁ እና ቀለሙን እንደገና ይለውጡ ፣ የተፈቀደውን ልዩነት አነስ ያድርጉት/ ካልሆነ ደረጃን አብዝ/ ካልሆነ ፣ ያሳዩ ለሶስት ሰከንዶች ገምቱ ፣ ቀይ ብልጭ ድርግም ያድርጉ እና ህይወትን ይቀንሱ // ከሕይወት ውጭ ከሆኑ ጨዋታው እንደገና ይጀምራል (abs ((rood + groen + blauw) - (roodGok + groenGok + blauwGok)) <= diff) { analogWrite (redPin ፣ abs (255 - roodGok)); አናሎግ ፃፍ (አረንጓዴ ፒን ፣ ABS (255 - groenGok)); analogWrite (bluePin ፣ abs (255 - blauwGok)); መዘግየት (3000); analogWrite (redPin ፣ 255); አናሎግ ፃፍ (አረንጓዴ ፒን ፣ 0); አናሎግ ፃፍ (ሰማያዊ ፒን ፣ 255); መዘግየት (300); analogWrite (redPin ፣ 255); አናሎግ ፃፍ (አረንጓዴ ፒን ፣ 255); አናሎግ ፃፍ (ሰማያዊ ፒን ፣ 255); መዘግየት (300); analogWrite (redPin ፣ 255); አናሎግ ፃፍ (አረንጓዴ ፒን ፣ 0); አናሎግ ፃፍ (ሰማያዊ ፒን ፣ 255); መዘግየት (300); analogWrite (redPin ፣ 255); አናሎግ ፃፍ (አረንጓዴ ፒን ፣ 255); አናሎግ ፃፍ (ሰማያዊ ፒን ፣ 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)); አናሎግ ፃፍ (አረንጓዴ ፒን ፣ ABS (255 - groenGok)); analogWrite (bluePin ፣ abs (255 - blauwGok)); መዘግየት (3000); analogWrite (redPin ፣ 0); አናሎግ ፃፍ (አረንጓዴ ፒን ፣ 255); አናሎግ ፃፍ (ሰማያዊ ፒን ፣ 255); መዘግየት (300); analogWrite (redPin ፣ 255); አናሎግ ፃፍ (አረንጓዴ ፒን ፣ 255); አናሎግ ፃፍ (ሰማያዊ ፒን ፣ 255); መዘግየት (300); analogWrite (redPin ፣ 0); አናሎግ ፃፍ (አረንጓዴ ፒን ፣ 255); አናሎግ ፃፍ (ሰማያዊ ፒን ፣ 255); መዘግየት (300); analogWrite (redPin ፣ 255); አናሎግ ፃፍ (አረንጓዴ ፒን ፣ 255); አናሎግ ፃፍ (ሰማያዊ ፒን ፣ 255); መዘግየት (300); Serial.print ("roodGok ="); Serial.println (roodGok); Serial.print ("groenGok ="); Serial.println (groenGok); Serial.print ("blauwGok ="); Serial.println (blauwGok);
resetColor ();
ይኖራል--; } ከሆነ (ይኖራል == 0) {analogWrite (redPin ፣ 0) ፤ አናሎግ ፃፍ (አረንጓዴ ፒን ፣ 255); አናሎግ ፃፍ (ሰማያዊ ፒን ፣ 255); መዘግየት (100); analogWrite (redPin ፣ 255); አናሎግ ፃፍ (አረንጓዴ ፒን ፣ 255); አናሎግ ፃፍ (ሰማያዊ ፒን ፣ 255); መዘግየት (100); analogWrite (redPin ፣ 0); አናሎግ ፃፍ (አረንጓዴ ፒን ፣ 255); አናሎግ ፃፍ (ሰማያዊ ፒን ፣ 255); መዘግየት (100); analogWrite (redPin ፣ 255); አናሎግ ፃፍ (አረንጓዴ ፒን ፣ 255); አናሎግ ፃፍ (ሰማያዊ ፒን ፣ 255); መዘግየት (100); analogWrite (redPin ፣ 0); አናሎግ ፃፍ (አረንጓዴ ፒን ፣ 255); አናሎግ ፃፍ (ሰማያዊ ፒን ፣ 255); መዘግየት (100); analogWrite (redPin ፣ 255); አናሎግ ፃፍ (አረንጓዴ ፒን ፣ 255); አናሎግ ፃፍ (ሰማያዊ ፒን ፣ 255); መዘግየት (100); ሁሉንም ነገር ዳግም አስጀምር (); }
}
ባዶ ዳግም ማስጀመሪያ ቀለም () {// ለዳግም ማስጀመሪያ እሴቶች ፣ ለተሳሳተ ፕሬስ ወይም ለእያንዳንዱ አዲስ ግምት (በእርግጠኝነት)
ቀለም [0] = -1; ቀለም [1] = -1; ቀለም [2] = -1;
indexNumber = 0;
ጠቋሚ ቀለም = 0; }
ባዶነት ዳግም ማስጀመር ሁሉም ነገር () {// ጨዋታውን እንደገና ያስጀምሩ
ቀለም [0] = -1; ቀለም [1] = -1; ቀለም [2] = -1;
indexNumber = 0;
ጠቋሚ ቀለም = 0;
ህይወት = 3;
rood = 0; ግሬንስ = 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;
}
ባዶ ማሳያ ሁሉም ነገር () {// ይህንን ይጠቀሙ በተከታታይ ማሳያው ላይ አስፈላጊ መረጃን ለማሳየት
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: ይገንቡ
ለዚህ ፕሮጀክት ጥሩ ግንባታ እንደሚፈልጉ ግልፅ ነው። ይህ ክፍል ለትርጓሜ በጣም ክፍት ነው ፣ ግን ከዚህ ጋር ሊታሰብባቸው የሚገቡ አንዳንድ ነገሮች አሉ - - የፊት ፓነልዎን ቀጭን ያድርጉት ፣ ስለዚህ አሁንም ሌዶችዎን በእሱ ውስጥ እንዲጣበቁ እና የ IR ተቀባዩ አሁንም ይሠራል
- ለአርዱዲኖ እና ለሽያጭ ቦርድ በግንባታው ውስጥ በቂ ቦታ ይያዙ
- ለአርዱዲኖ ኃይል በስተጀርባ ቀዳዳ መኖሩን ያረጋግጡ
እኔ ለሽቦው አስቸጋሪ የሆነ መርሃግብር ጨምሬያለሁ።
መልካም ዕድል ፣ እና ይደሰቱ!
የሚመከር:
DIY Arduino LED Color Organ 2.0: 5 ደረጃዎች
DIY Arduino LED Color Organ 2.0: በዚህ ፕሮጀክት ውስጥ በሙዚቃዎችዎ ውስጥ ለተለያዩ ድግግሞሽ ባንዶች ከብርሃን ትዕይንቶች ጋር የሚገናኝበትን የአርዱዲኖ LED ቀለም አካል እንዴት እንደሚገነቡ አሳያችኋለሁ። በእኔ ሁኔታ ቀይ መብራት ባስ ይወክላል ፣ አረንጓዴ ብርሃን መካከለኛ ድግግሞሽ እና ሰማያዊ ከፍተኛ ማስታወሻ ነው
M&M Color Sorter: 3 ደረጃዎች
የ M&M ቀለም ፈላጊ - በዚህ ፕሮጀክት መጀመሪያ ላይ የተለያዩ ባለቀለም ከረሜላዎችን በተቀላጠፈ ፍጥነት በራስ -ሰር ወደ ተለያዩ ጎድጓዳ ሳህኖች ለመደርደር ተነሳን። በጣቢያው ላይ አንድ ልጥፍ ስናይ መጀመሪያ በዚህ ሀሳብ ተነሳስተናል https://howtomechatronics.com/projects/arduino-col
ኒዮፒክስል RGB LED 5-Color Cycler (Arduino): 3 ደረጃዎች
Neopixel RGB LED 5-Color Cycler (Arduino): ይህ ፕሮጀክት በተንሸራታች ፖታቲሞሜትር ተቃውሞ ላይ በመመስረት የተለያዩ የተቀናጁ ቀለሞችን (በፈገግታ ንድፍ) ለማሳየት ቁጥጥር የሚደረግበት የ 12 RGB LED ዎች ቀለበት ነው። መሻሻሎች ሁል ጊዜ ሊደረጉ ስለሚችሉ እነሱን በማንበብ ደስተኛ ይሁኑ።
UCL-IIoT Color Sorter: 7 ደረጃዎች
UCL-IIoT Color Sorter: መግቢያ በዚህ መመሪያ ውስጥ ለማብራራት እንሞክራለን ፣ እንዴት ወደ መርሃ ግብር እንደምንሄድ እና የቀለም ዓይነት ማሽን እንዴት እንደምንሰበስብ። በአርዱዲኖ ሶፍትዌር በኩል በአርዱዲኖ ኡኖ ውስጥ ፕሮግራም ይደረጋል። ይህ ፕሮጀክት በጥናታችን ላይ መራጭ ነው። ትርጉሙ
Resistor Color Wheel Tool: 5 ደረጃዎች (ከስዕሎች ጋር)
Resistor Color Wheel Tool: በመስመር ላይ መፈለግ ሳያስፈልገን ትክክለኛውን ተከላካይ እንድናገኝ እንዲረዳን ይህንን የወረቀት ማጣቀሻ መሣሪያ ሠራሁ። ተንቀሳቃሽ ፣ ባለቀለም እና ለመሥራት ቀላል ነው። የሚያስፈልጉ መሣሪያዎች (አታሚ እና ሙጫ በትር) ወይም (ፕሮራክተር እና ኮምፓስ) እርሳስ ከእርሳስ ኳስ ጠቋሚ ጋር