Мазмұны:

Циклон LED аркада ойыны: 4 қадам
Циклон LED аркада ойыны: 4 қадам

Бейне: Циклон LED аркада ойыны: 4 қадам

Бейне: Циклон LED аркада ойыны: 4 қадам
Бейне: ОЖИДАНИЕ или РЕАЛЬНОСТЬ! ИГРЫ в РЕАЛЬНОЙ ЖИЗНИ! Маленькие кошмары 2 в реальной жизни! 2024, Маусым
Anonim
Image
Image
Арматураға орнатыңыз
Арматураға орнатыңыз

Бұл жобаның мақсаты балаларға арналған интерактивті және қызықты болатын Arduino көмегімен қарапайым ойын құру болды. Есімде, циклон аркада ойыны жас кезімде менің сүйікті аркада ойындарының бірі болды, сондықтан мен оны қайталауды шештім. Бұл өте қарапайым жоба, ол Arduino, жеке адрестелетін жарықдиодты жолдар мен батырмадан тұрады.

Ойынның мақсаты - велосипед жарығын көрсетілген (қызыл) жарықдиодқа жеткенде тоқтату. Егер сәтті болса, қиындық деңгейі артады. Егер сәтсіз болса, жарық циклы ағымдағы қиындық деңгейінде қайта басталады.

Бұл нұсқаулық менің кодтаудың негізі үшін үлкен ресурс болды.

1 -қадам: Жабдықтарды жинаңыз

  • Негізгі компоненттер:

    • Ардуино (мен БҰҰ қолдандым)
    • Жеке адрестелетін жарық диодтарының тізбегі (мен сілтемені қолдандым)
    • Басу түймесі (сілтемені қолдандым)
    • Баспа платасы (ПХД) немесе нан тақтасы
    • Қуат көзі (мен екі бөлек қуат көзін қолдандым, егер сіз шығармашылықпен айналысатын болсаңыз, сіз оны алып тастай аласыз)

      • Светодиодтар үшін 5В 3А
      • Arduino үшін 9V 1A
  • Негіздеме:

    • Электроника корпусы (Мен Goodwill ағаш шамының қондырғысын өзгерттім)
    • Жарықдиодты корпус (мен сіздің стандартты қабырға сағатын өзгерттім және тесік белгісі ретінде минуттық идентификаторларды пайдаланып тесіктер жасадым. Бұрғылауды жеңілдету үшін мүмкіндігінше ағаш сағатты қолданыңыз.)
    • Түймелік корпус (мен шынтақтан жасалған ПВХ құбырын қолдандым)
  • Құралдар / басқа материалдар:

    • Сіздің тізбекке қосалқы сымдар
    • 10K (қосқыш үшін тартылатын резистор) және 470 Ом (светодиодтардағы деректер сымы үшін) резисторлары
    • Жарық диодты жарықтандыру үшін тесіктер жасауға және сымдарды өткізуге арналған қондырғыға қажетті тесіктер жасауға арналған бұрғылау
    • Электр тізбегін ПХД -ге дәнекерлеуге арналған дәнекерленген темір
    • Жарықдиодты бекітпеге бекітуге арналған ыстық желім пистолеті
    • Velcro немесе раманы бекітудің кейбір құралдары
    • Сымдар өтетін тесіктер үшін міндетті емес тығыздағыштар

2 -қадам: кодты жүктеңіз

«FastLED» кітапханасын жүктеп, қосқаныңызға көз жеткізіңіз

Кодтың ядросы (void loop) екі күйден тұрады: жоғары батырмасы (Ойынды аяқтау) және төмен түймесі (Ойнату). Пайдаланушы түймені басқаннан кейін, жарық диоды адресі орталық жарықдиодты мекен -жаймен салыстырылады. Егер олар бірдей болмаса, барлық шамдар екі рет қызыл болып жыпылықтайды және ағымдағы деңгей қайта қосылады. Егер олар бірдей болса, цилон (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 #анықта SONIC_HIZIL 5 #рокты_жылдамдықты анықта 6 #анықтаушы ЖАРЫҚТЫ_жылдамдықты 7 #анықта МИССИОНЫҢ_МҮМКІНДІГІ 8 // қиыншылықтағы қиыншылық = 1; // leds CRGB leds жиынын анықтаңыз [NUM_LEDS]; // Ойыншы бұл турда жеңді ме? Бұл тег қиыншылық параметрлері үшін қолданылады. bool wonThisRound = жалған; // велосипед жарығының басталу орны int LEDaddress = 0; // Ойын жүріп жатыр ма? bool Playing = ақиқат; // Бұл бірінші жеңіс пе? bool CycleEnded = ақиқат; // Button details const int buttonPin = 9; int buttonState = 0; // Жетекші кітапхананы және arduino функцияларын жарамсыз күйге келтіру () {FastLED.addLeds (leds, NUM_LEDS); FastLED.setBrightness (BRIGHTNESS); pinMode (buttonPin, INPUT); Serial.begin (9600); } // Ет пен картоп // Екі режим - Ойынның аяқталмауы және тоқтатылуы () {// GAME END түймесіState = digitalRead (buttonPin); if (buttonState == HIGH) {Playing = false; // Пайдаланушы түймені басады, ал жарық диодты жеңімпаз адресте тоқтайды. 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) {үшін (int i = 0; i <8; i ++) {cylon (); } қиындық = 0; } жоғарылату Қиындық (); wonThisRound = жалған; } else {delay (1000); for (int i = 0; i <2; i ++) {flash (); }} CycleEnded = жалған; } LEDaddress = 0; кешіктіру (250); buttonState = digitalRead (buttonPin); if (buttonState == LOW) {Playing = true; }} // PLAYING if (Playing) {for (int i = 0; i <NUM_LEDS; i ++) {leds = CRGB:: Black; // Барлық ледтерді өшіреді} leds [CENTER_LED] = CRGB:: Red; // Ортаңғы түстерді жасыл жарыққа қояды [LEDaddress] = CRGB:: Green; // Цилиндрлік жарықдиодты қызыл 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; үзіліс; case 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; // Кешіктіру сомасын қайтару} // Жеңіс қиындықтары параметрлерді жоғарылатады void boostDifficulty () {if (қиындық! = MISSION_IMPOSSIBLE && wonThisRound) {қиындық ++; }} // Lost LED Show void flash () {fill_solid (leds, NUM_LEDS, CRGB:: Red); FastLED.show (); кешіктіру (500); fill_solid (LED, NUM_LEDS, CRGB:: Қара); FastLED.show (); кешіктіру (500); } // Won LED Show void foidall () {for (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-ші светодиодты қызыл ледтерге орнатыңыз = CHSV (реңк ++, 255, 255); // FastLED.show () шамдарын көрсету; // енді біз жарықдиодты көрсеткеннен кейін, i жолын қара күйге келтіріңіз // leds = CRGB:: Black; fadeall (); // Біз айналдырмастан бұрын сәл күтіңіз және оны қайталаңыз (10); }}

3 -қадам: Арматураға орнатыңыз

Арматураға орнатыңыз
Арматураға орнатыңыз
Арматураға орнатыңыз
Арматураға орнатыңыз

Мен бұл бөлімде егжей -тегжейлі айтқым келмейді. Бұл бөлікті алудың мың түрлі әдісі бар, және менің ойымша, бұл сізге ұнайтындай көрінуі үшін креативті болу керек. Айтуынша, светодиодты орналастыру үшін сағатты қолдану өте ыңғайлы болды, өйткені менде бұрғылау белгісі ретінде қолдануға болатын минуттық индикаторлар болды. Сондай -ақ, шыны қақпақ маған оны үстел ретінде пайдалануға мүмкіндік береді.

Велкро жарықдиодты шамды электроника корпусына бекіту үшін өте пайдалы болды. Мен Arduino -да велкро қолдандым. Егер мен кодты өзгерткім келсе, бұл Arduino -ны шығаруға өте ыңғайлы болды.

Ұсынылған: