ዝርዝር ሁኔታ:

አውሎ ነፋስ የ LED የመጫወቻ ማዕከል ጨዋታ 4 ደረጃዎች
አውሎ ነፋስ የ LED የመጫወቻ ማዕከል ጨዋታ 4 ደረጃዎች

ቪዲዮ: አውሎ ነፋስ የ LED የመጫወቻ ማዕከል ጨዋታ 4 ደረጃዎች

ቪዲዮ: አውሎ ነፋስ የ LED የመጫወቻ ማዕከል ጨዋታ 4 ደረጃዎች
ቪዲዮ: Милосердие порождает множество грехов ► 2 Прохождение Dante’s Inferno (Ад Данте) 2024, መስከረም
Anonim
Image
Image
በመጫኛ ውስጥ ጫን
በመጫኛ ውስጥ ጫን

የዚህ ፕሮጀክት ዓላማ ለልጆች መስተጋብራዊ እና መዝናኛ የሚሆን አርዱዲኖን በመጠቀም ቀላል ጨዋታ መፍጠር ነበር። ሲክሎኔ የመጫወቻ ማዕከል ጨዋታ በወጣትነቴ ከምወዳቸው የመጫወቻ ማዕከል ጨዋታዎች አንዱ እንደነበረ አስታውሳለሁ ፣ ስለዚህ እሱን ለመድገም ወሰንኩ። ይህ አርዱዲኖን ፣ በተናጥል ሊስተካከሉ የሚችሉ የኤልዲዎች ሕብረቁምፊ እና የግፋ ቁልፍን ያካተተ በጣም ቀላል ፕሮጀክት ነው።

የጨዋታው ግብ ወደ አመላካች (ቀይ) LED ሲደርስ የብስክሌት መብራቱን ማቆም ነው። ከተሳካ የችግር ደረጃው ይጨምራል። ካልተሳካ የብርሃን ዑደቱ አሁን ባለው የችግር ደረጃ እንደገና ይጀምራል።

ይህ አስተማሪ ለኮድዬ ዋናው ነገር ትልቅ ሀብት ነበር።

ደረጃ 1 - አቅርቦቶችን ይሰብስቡ

  • ዋና አካላት:

    • አርዱinoኖ (UNO ን እጠቀም ነበር)
    • በተናጥል ሊደረስባቸው የሚችሉ የኤልዲዎች ሕብረቁምፊ (አገናኝን ተጠቅሜያለሁ)
    • የግፋ አዝራር (አገናኝ ተጠቅሜያለሁ)
    • የታተመ የወረዳ ሰሌዳ (ፒሲቢ) ወይም የዳቦ ሰሌዳ
    • የኃይል አቅርቦት (ሁለት የተለያዩ የኃይል አቅርቦቶችን እጠቀም ነበር ፣ እርስዎ ፈጠራ ከፈጠሩ በአንዱ ሊያመልጡ ይችላሉ)

      • 5V 3A ለ LEDs
      • 9V 1A ለአርዱዲኖ
  • መዋቅር:

    • የኤሌክትሮኒክስ መኖሪያ ቤት (ከእንጨት አምፖል ከመልካም ፈቃድ ቀይሬያለሁ)
    • የ LED መኖሪያ ቤት (መደበኛ የግድግዳ ሰዓትዎን ቀይሬያለሁ እና የደቂቃ ለ identዎችን እንደ ቀዳዳ ምልክቶች በመጠቀም ቀዳዳዎችን ቆፍሬያለሁ። ቁፋሮውን ቀላል ለማድረግ ከተቻለ የእንጨት ሰዓት ይጠቀሙ።)
    • የአዝራር መኖሪያ ቤት (በክርን የ PVC ቧንቧ እጠቀም ነበር)
  • መሣሪያዎች / ሌሎች ቁሳቁሶች

    • ለወረዳዎ መለዋወጫ ሽቦ
    • 10 ኪ (ለመቀያየር ወደታች መጎተቻ) እና 470 ohm (በ LEDs ላይ ለመረጃ ሽቦ) መከላከያዎች
    • የእርስዎን ኤልኢዲዎች ለማኖር ቀዳዳዎችን ለመፍጠር እና ሽቦዎችን ለማለፍ በእቃ መጫዎቻዎ ውስጥ ማንኛውንም አስፈላጊ ቀዳዳዎችን ያድርጉ
    • የወረዳዎን ለፒሲቢ ለመሸጥ ብረትን መሸጥ
    • ኤልኢዲዎችን ከእርስዎ መሣሪያ ጋር ለማቆየት ትኩስ ሙጫ ጠመንጃ
    • ቬልክሮ ወይም አንዳንድ ማዕቀፉን በአንድነት የማስጠበቅ ዘዴዎች
    • ለማለፍ ሽቦዎች ለተቆፈሩት ቀዳዳዎች Gaskets እንደ አማራጭ

ደረጃ 2: ኮድ ይስቀሉ

“FastLED” ቤተ -መጽሐፍቱን ማውረዱ እና ማከልዎን ያረጋግጡ

የኮዱ ዋና (ባዶ ባዶ ሉፕ) ሁለት ግዛቶችን ያጠቃልላል -የግፊት ቁልፍ ከፍ (ጨዋታው ጨርስ) እና የግፊት ቁልፍ ዝቅተኛ (መጫወት)። አንዴ ተጠቃሚው አንዴ አዝራሩን ከተጫነ ፣ መብራቱ የቆመበት የ LED አድራሻ ከማዕከሉ LED አድራሻ ጋር ይነፃፀራል። እነሱ ተመሳሳይ ካልሆኑ ፣ ሁሉም መብራቶች ሁለት ጊዜ ቀይ ያበራሉ እና የአሁኑ ደረጃ እንደገና ይጀምራል። እነሱ ተመሳሳይ ከሆኑ ፣ ሳይሎን (FastLED ቤተ -መጽሐፍት ስክሪፕት) ሁለት ጊዜ ይሠራል ፣ የችግር ደረጃ ይጨምራል ፣ እና መጫወት ይቀጥላል። አንዴ ተጫዋቹ የመጨረሻውን ደረጃ ካሸነፈ ፣ ሳይሎን ስምንተኛ ጊዜን ያካሂዳል እና ጨዋታው በደረጃ 1 እንደገና ይጀምራል።

// አውሎ ነፋስ ጨዋታ

#‹FastLED.h› ን // /እስከ 50 #የሚገልጹ NUM_LEDS 40 #ገላጭ CENTER_LED 21 #መግለፅ DATA_PIN 7 #define LED_TYPE WS2811 #ጥራት COLOR_ORDER RGB // ክልል 0-64 #የጥራት ደረጃዎች 50 /ፍቺ የችግር ደረጃዎች #መግለጫ ቀላል 1 #ገላጭ ሜዲየም 2 #ገላጭ 3 #መግለፅ ON_SPEED 4 #ገላጭ SONIC_SPEED 5 #ገላጭ ROCKET_SPEED 6 #መግለፅ LIGHT_SPEED 7 #መግለፅ ተልዕኮ_አቅም 8 // ችግርን በመጀመር ላይ = 1; // የሊድ CRGB ሌዶችን [NUM_LEDS] ድርድር ይግለጹ ፤ // ተጫዋች በዚህ ዙር አሸን Didል? ይህ መለያ ለችግር መለኪያዎች ያገለግላል። bool wonThisRound = ሐሰት; // የብስክሌት መብራቱ መነሻ ቦታ LED LED = 0; // ጨዋታው እየሄደ ነው? bool Playing = እውነት; // ይህ የመጀመሪያው ድል ነው? bool CycleEnded = እውነት; // የአዝራር ዝርዝሮች const int buttonPin = 9; int buttonState = 0; // የሚመራውን ቤተ -መጽሐፍት እና የአሩዲኖ ተግባራት ባዶ ቅንብርን ያስጀምሩ () {FastLED.addLeds (ሌድ ፣ NUM_LEDS) ፤ FastLED.set ብሩህነት (ብሩህነት); pinMode (አዝራር ፒን ፣ ግቤት); Serial.begin (9600); } // ስጋው እና ድንቹ // ሁለት ሁነታዎች - የመጫወት እና የመጨረስ ጨዋታ ባዶ ዙር () {// END GAME buttonState = digitalRead (buttonPin); ከሆነ (buttonState == HIGH) {መጫወት = ሐሰት; // ተጠቃሚው አዝራሩን ተጭኗል ፣ እና ኤልኢዲ በአሸናፊው አድራሻ ላይ ቆሟል። ለ (int i = 0; i <NUM_LEDS; i ++) {leds = CRGB:: Black; } ሊድስ [CENTER_LED] = CRGB:: ቀይ; leds [LEDaddress] = CRGB:: አረንጓዴ; FastLED.show (); ከሆነ (CycleEnded = true) {int diff = abs (CENTER_LED - LEDaddress); // (diff == 0) {wonThisRound = true; // ተጫዋች (ችግር! = MISSION_IMPOSSIBLE) {ለ (int i = 0; i <2; i ++) {cylon (); }} ከሆነ (ችግር == MISSION_IMPOSSIBLE) {ለ (int i = 0; i <8; i ++) {cylon (); } ችግር = 0; } የችግር መጨመር (); wonThisRound = ሐሰት; } ሌላ {መዘግየት (1000); ለ (int i = 0; i <2; i ++) {flash (); }} CycleEnded = ሐሰት; } LEDaddress = 0; መዘግየት (250); buttonState = digitalRead (buttonPin); ከሆነ (buttonState == LOW) {መጫወት = እውነት; }} // መጫወት (መጫወት) {ለ (int i = 0; i <NUM_LEDS; i ++) {leds = CRGB:: Black; // ሁሉንም ሌዲዎች} ሌዲዎችን [CENTER_LED] = CRGB:: ቀይ ያጠፋል። // ማዕከላዊ መሪ ቀለም ወደ አረንጓዴ ሊድስ ያዘጋጃል [LEDaddress] = CRGB:: Green; // የሳይክል መሪ ቀለም ወደ ቀይ FastLED.show () ያዘጋጃል። // የብርሃን ዑደትን ያስጀምራል LEDaddress ++; // (LEDaddress == NUM_LEDS) {LEDaddress = 0; } መዘግየት (getTime (ችግር)); buttonState = digitalRead (buttonPin); ከሆነ (buttonState == HIGH) {መጫወት = ሐሰት; CycleEnded = እውነት; }}} // የደረጃ መለኪያዎች int getTime (int diff) // በችግር ላይ ለሚመራ የመንቀሳቀስ መሠረት የጊዜ መዘግየትን ይመልሳል {int timeValue = 0; መቀየሪያ (ልዩነት) {case EASY: timeValue = 100; ሰበር; ጉዳይ MEDIUM: timeValue = 80; ሰበር; ጉዳይ HARD: timeValue = 60; ሰበር; ጉዳይ ON_SPEED: timeValue = 40; ሰበር; መያዣ SONIC_SPEED: timeValue = 30; ሰበር; መያዣ ROCKET_SPEED: timeValue = 20; ሰበር; መያዣ LIGHT_SPEED: timeValue = 13; ሰበር; መያዣ MISSION_IMPOSSIBLE: የጊዜ እሴት = 7; } የመመለሻ ጊዜ እሴት ፤ // የመዘግየቱን መጠን ይመልሱ} // የማሸነፍ ችግር ግቤቶችን የመጨመር ባዶነት መጨመር () (ከሆነ (ችግር! = MISSION_IMPOSSIBLE && wonThisRound) {ችግር ++; }} // የጠፋ LED ባዶ ፍላሽ አሳይ () {fill_solid (ሊድስ ፣ NUM_LEDS ፣ CRGB:: ቀይ); FastLED.show (); መዘግየት (500); fill_solid (ሊዶች ፣ NUM_LEDS ፣ CRGB:: ጥቁር); FastLED.show (); መዘግየት (500); } // አሸነፈ የ LED አሳይ ባዶነት () (ለ (int i = 0; i <NUM_LEDS; i ++) {leds .nscale8 (250); }} ባዶ ባዶ ሳይሎን () {static uint8_t hue = 0; Serial.print ("x"); // መጀመሪያ መሪውን በአንድ አቅጣጫ ያንሸራትቱ ለ (int i = 0; i = 0; i--) {// I'th ን ወደ ቀይ ቀይ ሊድ = CHSV (hue ++ ፣ 255 ፣ 255) አመሩ ፤ // መሪዎቹን አሳይ FastLED.show (); // አሁን ሌዶቹን ስላሳየነው ፣ ወደ ጥቁር የተመራውን i’th ን እንደገና ያስጀምሩ // leds = CRGB:: Black; መውደቅ (); // ዙሪያውን ከመዞራችን በፊት ትንሽ ይጠብቁ እና እንደገና እንዲዘገዩ (10); }}

ደረጃ 3: በቋሚነት ውስጥ ይጫኑ

በመጫኛ ውስጥ ጫን
በመጫኛ ውስጥ ጫን
በመጫኛ ውስጥ ጫን
በመጫኛ ውስጥ ጫን

በዚህ ክፍል ውስጥ ወደ ዝርዝር ጉዳዮች አልገባም። ይህንን ክፍል በተመለከተ አንድ ሺህ የተለያዩ መንገዶች አሉ እና እርስዎ እንዴት እንደወደዱት እንዲታዩ ፈጠራ መሆን አለብዎት ብዬ አስባለሁ። ይህ በእንዲህ እንዳለ ፣ እኔ እንደ መሰርሰሪያ ምልክቶች መጠቀም የቻልኩበት ደቂቃ ጠቋሚዎች ስላሉት ኤልዲዎቹን ለመኖሪያነት ለመጠቀም በጣም ምቹ ነበር። እንዲሁም ፣ የመስታወቱ ሽፋን እንዲሁ ይህንን እንደ ጠረጴዛ እንድጠቀም ይፈቅድልኛል።

ቬልክሮ በጣም ጠቃሚ ነበር ፣ እንዲሁም የኤሌዲኤፍ መሣሪያውን በኤሌክትሮኒክስ የቤት ዕቃዎች ላይ ለማቆየት። እኔ ደግሞ በአርዱዲኖ ላይ ቬልክሮ ተጠቀምኩ። እኔ ኮዱን ማሻሻል ከፈለግኩ ይህ አርዱዲኖን ለማውጣት በጣም ምቹ አድርጎታል።

የሚመከር: