Съдържание:
Видео: Циклон LED аркадна игра: 4 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:52
Целта на този проект беше да се създаде проста игра, използваща Arduino, която да бъде интерактивна и забавна за децата. Спомням си, че аркадната игра Cyclone беше една от любимите ми аркадни игри, когато бях по -млад, затова реших да я повторя. Това е много прост проект, който се състои от Arduino, низ от индивидуално адресируеми светодиоди и бутон за натискане.
Целта на играта е да спре колоезденето, когато достигне посочения (червен) светодиод. При успех нивото на трудност ще се увеличи. Ако не успее, светлинният цикъл ще се рестартира на текущото ниво на трудност.
Тази инструкция беше огромен ресурс за ядрото на моето кодиране.
Стъпка 1: Съберете консумативи
-
Главни компоненти:
- Arduino (използвах UNO)
- Низ от индивидуално адресируеми светодиоди (използвах връзка)
- Бутон (използвах връзка)
- Печатна платка (PCB) или платка
-
Захранване (използвах две отделни захранвания, може да се измъкнете с едно, ако сте креативни)
- 5V 3A за светодиоди
- 9V 1A за Arduino
-
Рамка:
- Корпус за електроника (модифицирах дървена лампа от Goodwill)
- LED корпус (модифицирах стандартния стенен часовник и пробих дупки, използвайки идентификаторите на минутите като маркировки на дупки. Използвайте дървен часовник, ако е възможно, за да улесните пробиването.)
- Корпус с копчета (използвах лакътна PVC тръба)
-
Инструменти / Други материали:
- Резервно окабеляване за вашата верига
- 10K (издърпващ се резистор за превключвател) и 470 ома (за проводник за данни на светодиоди) резистори
- Пробийте за създаване на дупки за поставяне на вашите светодиоди и за направа на всички необходими отвори във вашето тяло, за да прокарате проводници
- Поялник за запояване на вашата верига към печатна платка
- Пистолет за горещо лепило за закрепване на светодиодите към вашето тяло
- Велкро или някакво средство за обезопасяване на рамката
- Уплътнения по избор за пробити отвори за преминаване на проводници
Стъпка 2: Качване на код
Не забравяйте да изтеглите и добавите библиотеката "FastLED"
Ядрото на кода (void loop) се състои от две състояния: бутон бутон високо (Край на играта) и бутон бутон ниско (Възпроизвеждане). След като потребителят натисне бутона, LED адресът, на който е спряла светлината, се сравнява с адреса на централния светодиод. Ако те не са еднакви, всички лампички мигат два пъти в червено и текущото ниво се рестартира. Ако те са едни и същи, cylon (FastLED библиотечен скрипт) работи два пъти, нивото на трудност се увеличава и играта се възобновява. След като играчът победи последното ниво, cylon бяга осми пъти и играта се рестартира на ниво 1.
// Игра с циклон
#include "FastLED.h" // до 50 #deteine NUM_LEDS 40 #define CENTER_LED 21 #define DATA_PIN 7 #define LED_TYPE WS2811 #define COLOR_ORDER RGB // диапазон 0-64 #define BRIGHTNESS 50 // Определяне на нивата на трудност #define EASY 1 #define MEDIUM 2 #define HARD 3 #define ON_SPEED 4 #define SONIC_SPEED 5 #define ROCKET_SPEED 6 #define LIGHT_SPEED 7 #define MISSION_IMPOSSIBLE 8 // Трудност при стартиране int трудност = 1; // Определяме масива от светодиоди CRGB светодиоди [NUM_LEDS]; // Играчът спечели ли този рунд? Този маркер се използва за параметри на трудност. bool wonThisRound = false; // Начално местоположение на колоездачната светлина int LEDaddress = 0; // Играта работи ли? bool Играе = вярно; // Това ли е първата победа? bool CycleEnded = вярно; // Подробности за бутоните const int buttonPin = 9; int buttonState = 0; // Инициализиране на led библиотеката и arduino функции void setup () {FastLED.addLeds (светодиоди, NUM_LEDS); FastLED.setBrightness (BRIGHTNESS); pinMode (buttonPin, INPUT); Serial.begin (9600); } // Месото и картофите // Два режима - Игра и прекратяване на играта void loop () {// END GAME buttonState = digitalRead (buttonPin); if (buttonState == HIGH) {Възпроизвеждане = невярно; // Потребителят е натиснал бутона и светодиодът спря на печелившия адрес. for (int i = 0; i <NUM_LEDS; i ++) {leds = CRGB:: Черен; } светодиоди [CENTER_LED] = CRGB:: Червено; светодиоди [LED адрес] = CRGB:: Зелено; FastLED.show (); if (CycleEnded = true) {int diff = abs (CENTER_LED - LEDaddress); // Намира разстояние между светещия светодиод и централния светодиод, ако (diff == 0) {wonThisRound = true; // Играчът успешно победи нивото if (трудност! = MISSION_IMPOSSIBLE) {for (int i = 0; i <2; i ++) {cylon (); }} ако (трудност == MISSION_IMPOSSIBLE) {for (int i = 0; i <8; i ++) {cylon (); } трудност = 0; } увеличаване на трудността (); wonThisRound = false; } else {забавяне (1000); for (int i = 0; i <2; i ++) {flash (); }} CycleEnded = false; } LEDадрес = 0; забавяне (250); buttonState = digitalRead (buttonPin); if (buttonState == LOW) {Playing = true; }} // ПЪРВАНЕ, ако (Играе) {for (int i = 0; i <NUM_LEDS; i ++) {leds = CRGB:: Black; // Изключва всички светодиоди} светодиоди [CENTER_LED] = CRGB:: Червен; // Задава цвета на централния светодиод към зелени светодиоди [LEDaddress] = CRGB:: Green; // Задава цветния светодиоден цвят в червено FastLED.show (); // Инициализира светлинен цикъл LEDaddress ++; // Задава светлинен цикъл на един светодиод наведнъж if (LEDaddress == NUM_LEDS) {LEDaddress = 0; } забавяне (getTime (трудност)); buttonState = digitalRead (buttonPin); if (buttonState == HIGH) {Възпроизвеждане = невярно; CycleEnded = вярно; }}} // Параметри на нивото int getTime (int diff) // Връща забавяне на времето за базата на движението на LED при трудност {int timeValue = 0; switch (разл.) {случай EASY: timeValue = 100; прекъсване; случай СРЕДНА: 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 увеличениеDifficulty () {if (трудност! = MISSION_IMPOSSIBLE && wonThisRound) {трудност ++; }} // Изгубен светодиод Show void flash () {fill_solid (светодиоди, NUM_LEDS, CRGB:: червен); FastLED.show (); забавяне (500); fill_solid (светодиоди, NUM_LEDS, CRGB:: черен); FastLED.show (); забавяне (500); } // Спечелен светодиод 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-тото доведено до червени светодиоди = CHSV (нюанс ++, 255, 255); // Показване на светодиодите FastLED.show (); // сега, след като показахме светодиодите, нулирайте i -тата светлина към черен // светодиоди = CRGB:: Черен; fadeall (); // Изчакайте малко преди да се въртим и да го направим отново delay (10); }}
Стъпка 3: Инсталирайте в Fixture
Няма да навлизам в подробности в този раздел. Има хиляди различни начини да разгледате тази част и мисля, че трябва да бъдете креативни, за да изглеждате така, както ви харесва. Като се има предвид това, часовникът беше доста удобен за използване за поставяне на светодиодите, тъй като имаше минутни индикатори, които успях да използвам като маркировка за бормашина. Също така, стъкленият капак също ми позволява да го използвам като маса.
Велкрото беше много полезно и за закрепване на LED осветителното тяло към корпуса на електрониката. Използвах и велкро на Arduino. Това го направи много удобен за изваждане на Arduino, ако някога искам да променя кода.
Препоръчано:
ПОИНГ! - Аркадна аркадна игра!: 3 стъпки
ПОИНГ! - Аркадна игра Arduino !: Ще изграждаме аркадна игра в стил PONG, която използва части от „Най-пълния стартов комплект UNO R3 Project“комплект от Elegoo Inc. Пълно разкриване - Повечето от частите, предоставени за тази инструкция, са предоставени на автора от Elegoo
Циклон (Arduino LED игра): 6 стъпки (със снимки)
Циклон (Arduino LED игра): В този урок ще ви науча как да създавате LED игра с много малко код или опит! Имах тази идея за известно време и най -накрая се заех да я създам. Това е забавна игра, която ни напомня на всички аркадни игри. Има и други уроци за
Аркуино циклон Аркадна игра: 6 стъпки
Аркуино циклон Аркадна игра: Блестящи блестящи светлини! Arduino! Игра! Какво повече трябва да се каже? Тази игра е базирана на аркадната игра Cyclone, където играчът се опитва да спре светодиодно превъртане около кръг на определено място
Аркадна игра Stackers: 6 стъпки (със снимки)
Аркадна игра Stackers: Здравейте момчета, днес искам да споделя с вас тази невероятна аркадна игра, която можете да направите с куп светодиоди Ws2812b и микроконтролер/FPGA. Behold Stack Overflow - нашата хардуерна реализация на класическа аркадна игра. Това, което започна като училищен проект
Arduino LED лазерна аркадна игра: 3 стъпки (със снимки)
Arduino LED лазерна аркадна игра: В тази инструкция ще демонстрирам как да направя лазерна аркадна игра, използвайки LED и светлинни сензори. Кодът е включен и не се нуждаете от много части, за да го изградите. Няма да ви казвам как изграждам корпуса, ще трябва да го направите сами! T