ዝርዝር ሁኔታ:

IR-Remote Color Guessing Game: 3 ደረጃዎች
IR-Remote Color Guessing Game: 3 ደረጃዎች

ቪዲዮ: IR-Remote Color Guessing Game: 3 ደረጃዎች

ቪዲዮ: IR-Remote Color Guessing Game: 3 ደረጃዎች
ቪዲዮ: 12 Locks 3: Around The World FULL GAME 2024, ሀምሌ
Anonim
IR- የርቀት ቀለም መገመት ጨዋታ
IR- የርቀት ቀለም መገመት ጨዋታ

በዚህ አስተማሪ ውስጥ ፣ የ 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 ተቀባዩ አሁንም ይሠራል

- ለአርዱዲኖ እና ለሽያጭ ቦርድ በግንባታው ውስጥ በቂ ቦታ ይያዙ

- ለአርዱዲኖ ኃይል በስተጀርባ ቀዳዳ መኖሩን ያረጋግጡ

እኔ ለሽቦው አስቸጋሪ የሆነ መርሃግብር ጨምሬያለሁ።

መልካም ዕድል ፣ እና ይደሰቱ!

የሚመከር: