Агуулгын хүснэгт:

Циклон LED аркад тоглоом: 4 алхам
Циклон LED аркад тоглоом: 4 алхам

Видео: Циклон LED аркад тоглоом: 4 алхам

Видео: Циклон LED аркад тоглоом: 4 алхам
Видео: FRIDAY THE 13TH KILLER PUZZLE LIVE 2024, Есдүгээр
Anonim
Image
Image
Бэхэлгээнд суулгах
Бэхэлгээнд суулгах

Энэхүү төслийн зорилго нь хүүхдүүдэд зориулсан интерактив, зугаатай Arduino ашиглан энгийн тоглоом бүтээх явдал байв. Би циклон аркад тоглоомыг бага байхдаа дуртай аркад тоглоомуудын нэг байсныг санаж байсан тул үүнийг давтахаар шийдсэн юм. Энэ бол маш энгийн төсөл бөгөөд Arduino, тус тусад нь хаягдах LED гэрлүүд, товчлууруудаас бүрдэнэ.

Тоглоомын зорилго нь дугуйны гэрлийг заасан (улаан) LED -д хүрэхэд зогсоох явдал юм. Хэрэв амжилтанд хүрвэл бэрхшээлийн түвшин нэмэгдэх болно. Хэрэв амжилтгүй болбол гэрлийн мөчлөг одоогийн хүндрэлийн түвшинд дахин эхлэнэ.

Энэхүү зааварчилгаа нь миний кодчиллын гол эх сурвалж болсон юм.

Алхам 1: хангамж цуглуулах

  • Үндсэн бүрэлдэхүүн хэсгүүд:

    • Ардуино (би НҮБ -ыг ашигласан)
    • Тус тусад нь хаягдах LED хэлхээ (би линк ашигласан)
    • Товчлуур дарах (би линк ашигласан)
    • Хэвлэмэл хэлхээний самбар (ПХБ) эсвэл талхны самбар
    • Цахилгаан хангамж (би хоёр тусдаа цахилгаан хангамж ашигладаг байсан, хэрэв та бүтээлч байвал та нэгээс салж болно)

      • LED -ийн хувьд 5V 3A
      • Arduino -д зориулсан 9V 1A
  • Хүрээ:

    • Электроникийн орон сууц (Би сайн санааны модон чийдэнгийн бэхэлгээг өөрчилсөн)
    • LED орон сууц (Би чиний стандарт хананы цагийг өөрчилж, нүхийг тэмдэглэгээ болгон минутын танигчийг ашиглан өрөмдсөн. Өрөмдлөгийг хөнгөвчлөхийн тулд боломжтой бол модон цаг ашиглана уу.)
    • Товчны орон сууц (би тохойн PVC хоолой ашигласан)
  • Багаж хэрэгсэл / бусад материал:

    • Таны хэлхээний сэлбэг утас
    • 10K (унтраалгыг татах эсэргүүцэл) ба 470 ом (LED дээрх өгөгдлийн утсанд зориулсан) резистор
    • LED -ээ байрлуулах нүх гаргаж, бэхэлгээнд утас дамжуулах шаардлагатай нүхийг өрөмдөх
    • ПХБ -д хэлхээгээ гагнах зориулалттай гагнуурын төмөр
    • LED -ийг бэхэлгээнд бэхлэх зориулалттай халуун цавуу буу
    • Velcro эсвэл хүрээ бэхлэх зарим хэрэгсэл
    • Утас дамжин өнгөрөхийн тулд өрөмдсөн цоорхойтой жийргэвч

Алхам 2: Кодыг байршуулах

"FastLED" номын санг татаж аваад нэмсэн эсэхээ шалгаарай

Кодын цөм (хоосон давталт) нь хоёр төлөвөөс бүрдэнэ: өндөр товчлуур (Тоглоомыг дуусгах) ба товчлуур бага (Тоглуулах). Хэрэглэгч товчлуурыг дарсны дараа гэрэл зогссон LED хаягийг төвийн LED хаягаар харьцуулна. Хэрэв тэдгээр нь ижил биш бол бүх гэрэл хоёр удаа улаан гэрэл асч, одоогийн түвшин дахин асна. Хэрэв тэдгээр нь ижил байвал цилон (FastLED номын сангийн скрипт) хоёр удаа ажиллуулж, хүндрэлийн түвшин нэмэгдэж, тоглуулалт үргэлжилнэ. Тоглогч сүүлийн түвшинг давсны дараа цилон найм дахь удаагаа гүйж, тоглоомыг 1 -р түвшинд эхлүүлнэ.

// Циклон тоглоом

#"FastLED.h" -ийг оруулаарай // 50 хүртэл #NUM_LEDS тодорхойлох 40 #CENTER_LED 21-ийг тодорхойлох #DATA_PIN 7-ийг тодорхойлох #LED_TYPE WS2811 #COLOR_ORDER RGB-ийг тодорхойлох // 0-64 #BRIGHTNESS 50-ийг тодорхойлох #Хэцүү байдлын түвшинг тодорхойлох # Хялбар 1 #тодорхойлох ДУНД 2 #тодорхойлох ХАТУУ 3 #тодорхойлох_ОД_ХУРД 4 #ТОГТООХ_ХУРД 5 -ийг тодорхойлох #ЧУЛУУ_ХУРДАА тодорхойлох 6 #ХӨНГИЙН_ХУРДАА тодорхойлох 7 #ЭРХЭМ ЗОРИЛГО_ДУГААРААГҮЙ 8 // Эхлэхэд бэрхшээлийн хүндрэл = 1; // leds CRGB leds [NUM_LEDS] массивыг тодорхойлох; // Тоглогч энэ тойрогт ялсан уу? Энэ шошгыг хүндрэлийн параметрүүдэд ашигладаг. bool wonThisRound = худал; // Унадаг дугуйн гэрлийн эхлэх байршил int LEDaddress = 0; // Тоглоом ажиллаж байна уу? bool тоглох = үнэн; // Энэ бол анхны ялалт уу? bool CycleEnded = үнэн; // Button details const int buttonPin = 9; int buttonState = 0; // Удирдсан номын сан болон arduino функцуудыг хүчингүй болгох тохиргоог эхлүүлэх () {FastLED.addLeds (leds, NUM_LEDS); FastLED.setBrightness (BRIGHTNESS); pinMode (buttonPin, INPUT); Цуваа эхлэх (9600); } // Мах ба төмс // Хоёр горим - Тоглоом тоглуулах ба дуусгах void loop () {// GAME END buttonState = digitalRead (buttonPin); if (buttonState == HIGH) {Playing = false; // Хэрэглэгч товчлуурыг дарсан бөгөөд LED нь ялсан хаяг дээр зогссон байна. for (int i = 0; i <NUM_LEDS; i ++) {leds = CRGB:: Хар; } leds [CENTER_LED] = CRGB:: Улаан; leds [LEDaddress] = CRGB:: Ногоон; FastLED.show (); if (CycleEnded = true) {int diff = abs (CENTER_LED - LEDaddress); // (diff == 0) {wonThisRound = true; // Тоглогч түвшинг амжилттай давсан бол (бэрхшээл! = MISSION_IMPOSSIBLE) {for (int i = 0; i <2; i ++) {cylon (); }} if (бэрхшээл == MISSION_IMPOSSIBLE) {for (int i = 0; i <8; i ++) {cylon (); } бэрхшээл = 0; } нэмэгдүүлэхDifficulty (); wonThisRound = худал; } өөр {саатал (1000); for (int i = 0; i <2; i ++) {flash (); }} CycleEnded = худал; } LED хаяг = 0; саатал (250); buttonState = digitalRead (buttonPin); if (buttonState == LOW) {Тоглох = үнэн; }} // PLAYING if (Playing) {for (int i = 0; i <NUM_LEDS; i ++) {leds = CRGB:: Black; // Бүх leds унтраана} leds [CENTER_LED] = CRGB:: Улаан; // Төвийн гэрлийн өнгийг ногоон гэрэл рүү тохируулна [LEDaddress] = CRGB:: Green; // Цилиндрийн LED өнгийг улаан FastLED.show () болгож тохируулна; // LEDaddress ++ гэрлийн мөчлөгийг эхлүүлнэ; // (LEDaddress == NUM_LEDS) {LEDaddress = 0; } саатал (getTime (бэрхшээл)); buttonState = digitalRead (buttonPin); if (buttonState == HIGH) {Playing = false; CycleEnded = үнэн; }}} // Түвшингийн параметрүүд int getTime (int diff) // {int timeValue = 0 хүндрэл дээр удирдсан хөдөлгөөний суурийг хойшлуулах хугацааг буцаана. switch (diff) {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: timeValue = 7; } return timeValue; // Саатлын дүнг буцаана уу} // Хожсон бэрхшээл нь параметрүүдийг нэмэгдүүлэх хүчингүй болгохDifficulty () {if (бэрхшээл! = MISSION_IMPOSSIBLE && wonThisRound) {бэрхшээл ++; }} // Lost LED Show void flash () {fill_solid (leds, NUM_LEDS, CRGB:: Red); FastLED.show (); саатал (500); fill_solid (leds, NUM_LEDS, CRGB:: Black); FastLED.show (); саатал (500); } // LED Show void fadeall () {for (int i = 0; i <NUM_LEDS; i ++) {leds .nscale8 (250); }} void cylon () {static uint8_t hue = 0; Serial.print ("x"); // Эхлээд удирдагчийг нэг чиглэлд гулсуулна уу (int i = 0; i = 0; i--) {// i'th led-ийг улаан leds болгон тохируулна уу = CHSV (hue ++, 255, 255); // LED -ийг харуулах FastLED.show (); // одоо бид leds -ийг харуулсны дараа i'th led -ийг хар болгож тохируулна уу // leds = CRGB:: Black; fadeall (); // Бид тойрч гарахаасаа өмнө жаахан хүлээгээд дахин хийгээрэй (10); }}

Алхам 3: бэхэлгээнд суулгана уу

Бэхэлгээнд суулгах
Бэхэлгээнд суулгах
Бэхэлгээнд суулгах
Бэхэлгээнд суулгах

Би энэ хэсэгт дэлгэрэнгүй мэдээлэл өгөхгүй байна. Энэ хэсгийг хийх олон мянган арга байдаг бөгөөд үүнийг танд таалагдаж байгаа мэт харагдуулахын тулд бүтээлч байх ёстой гэж би бодож байна. Үүнийг хэлэхдээ цагийг LED -ийг байрлуулахад ашиглахад маш тохиромжтой байсан, учир нь миний өрмийн тэмдэглэгээ болгон ашиглах боломжтой минутын үзүүлэлтүүд байсан. Түүнчлэн, шилэн таг нь үүнийг ширээ болгон ашиглах боломжийг надад олгодог.

Velcro нь LED бэхэлгээг электроникийн орон сууцны бэхэлгээнд бэхлэхэд маш ашигтай байв. Би бас Arduino дээр velcro ашигладаг байсан. Энэ нь хэрэв би кодыг өөрчлөхийг хүсч байвал Arduino -ийг татаж авахад маш тохиромжтой болсон.

Зөвлөмж болгож буй: