Оглавление:
Видео: Cyclone LED Arcade Game: 4 шага
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
Целью этого проекта было создание простой игры с использованием Arduino, которая была бы интерактивной и занимательной для детей. Я помню, что аркадная игра Cyclone была одной из моих любимых аркадных игр, когда я был моложе, поэтому я решил повторить ее. Это очень простой проект, состоящий из Arduino, цепочки светодиодов с индивидуальным адресом и кнопки.
Цель игры - остановить велосипедный свет, когда он достигнет указанного (красного) светодиода. В случае успеха уровень сложности увеличится. В случае неудачи световой цикл перезапустится с текущим уровнем сложности.
Это руководство было огромным ресурсом для моей основы кодирования.
Шаг 1. Соберите припасы
-
Основные компоненты:
- Arduino (я использовал UNO)
- Строка индивидуально адресуемых светодиодов (я использовал ссылку)
- Нажимаем кнопку (я использовал ссылку)
- Печатная плата (PCB) или макет
-
Блок питания (я использовал два отдельных блока питания, вы можете обойтись одним, если будете изобретательны)
- 5V 3A для светодиодов
- 9V 1A для Arduino
-
Фреймворк:
- Корпус электроники (доработал деревянный светильник от Goodwill)
- Светодиодный корпус (я модифицировал ваши стандартные настенные часы и просверливал отверстия, используя минутные идентификаторы в качестве отметок отверстий. По возможности используйте деревянные часы, чтобы упростить сверление).
- Корпус пуговицы (я использовал коленчатую ПВХ трубу)
-
Инструменты / другие материалы:
- Запасная проводка для вашей схемы
- Резисторы 10 кОм (понижающий резистор для переключателя) и 470 Ом (для провода передачи данных на светодиодах)
- Просверлите отверстия для размещения светодиодов и сделайте все необходимые отверстия в светильнике для пропуска проводов.
- Паяльник для пайки схемы на печатную плату
- Пистолет для горячего клея для крепления светодиодов к светильнику
- Липучка или какое-либо средство для скрепления каркаса вместе
- Прокладки опционально для отверстий, просверленных для пропуска проводов
Шаг 2. Загрузите код
Убедитесь, что вы скачали и добавили библиотеку FastLED
Ядро кода (недействительный цикл) состоит из двух состояний: высокий уровень нажатия кнопки (конец игры) и низкий уровень нажатия кнопки (игра). Как только пользователь нажимает кнопку, адрес светодиода, на котором был остановлен свет, сравнивается с адресом центрального светодиода. Если они не совпадают, все индикаторы дважды мигают красным, и текущий уровень возобновляется. Если они совпадают, цилон (скрипт библиотеки FastLED) запускается дважды, уровень сложности увеличивается, и игра возобновляется. Как только игрок преодолевает последний уровень, цилон запускается восьмой раз, и игра перезапускается на уровне 1.
// Игра Cyclone
#include "FastLED.h" // до 50 #define 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 leds [NUM_LEDS]; // Выиграл ли игрок этот раунд? Этот тег используется для параметров сложности. bool wonThisRound = false; // Начальное местоположение велосипедного света int LEDaddress = 0; // Игра запущена? bool Playing = true; // Это первая победа? bool CycleEnded = true; // Детали кнопки const int buttonPin = 9; int buttonState = 0; // Инициализируем библиотеку светодиодов и функции arduino void setup () {FastLED.addLeds (leds, NUM_LEDS); FastLED.setBrightness (ЯРКОСТЬ); pinMode (buttonPin, ВВОД); Serial.begin (9600); } // Мясо и картофель // Два режима - Игра и конец игры void loop () {// КОНЕЦ ИГРЫ buttonState = digitalRead (buttonPin); if (buttonState == HIGH) {Играет = false; // Пользователь нажал кнопку, и светодиод на выигравшем адресе погас. для (int я = 0; я <NUM_LEDS; я ++) {светодиоды [я] = CRGB:: черный; } светодиоды [CENTER_LED] = CRGB:: Красный; светодиоды [LEDaddress] = CRGB:: Зеленый; FastLED.show (); if (CycleEnded = true) {int diff = abs (CENTER_LED - адрес светодиода); // Находит расстояние между горящим светодиодом и центральным светодиодом if (diff == 0) {wonThisRound = true; // Игрок успешно прошел уровень if (сложность! = MISSION_IMPOSSIBLE) {for (int i = 0; i <2; i ++) {cylon (); }} если (сложность == МИССИЯ_ВОЗМОЖНАЯ) {для (int я = 0; я <8; я ++) {cylon (); } сложность = 0; } увеличитьDifficulty (); wonThisRound = false; } else {задержка (1000); для (int я = 0; я <2; я ++) {вспышка (); }} CycleEnded = false; } LEDaddress = 0; задержка (250); buttonState = digitalRead (buttonPin); if (buttonState == LOW) {Играет = true; }} // ИГРАЕМ if (Играем) {for (int i = 0; i <NUM_LEDS; i ++) {leds = CRGB:: Black; // Выключает все светодиоды} leds [CENTER_LED] = CRGB:: Red; // Устанавливает цвет центрального светодиода на зеленые светодиоды [LEDaddress] = CRGB:: Green; // Устанавливает красный цвет светодиода цикла FastLED.show (); // Инициализирует световой цикл LEDaddress ++; // Устанавливает световой цикл для одного светодиода за раз if (LEDaddress == NUM_LEDS) {LEDaddress = 0; } задержка (getTime (сложность)); buttonState = digitalRead (buttonPin); if (buttonState == HIGH) {Играет = false; CycleEnded = true; }}} // Параметры уровня int getTime (int diff) // Возвращает временную задержку для движения ведомого на основе сложности {int timeValue = 0; переключатель (diff) {case EASY: timeValue = 100; перерыв; case MEDIUM: timeValue = 80; перерыв; case HARD: timeValue = 60; перерыв; case ON_SPEED: timeValue = 40; перерыв; case SONIC_SPEED: timeValue = 30; перерыв; case ROCKET_SPEED: timeValue = 20; перерыв; case LIGHT_SPEED: timeValue = 13; перерыв; case MISSION_IMPOSSIBLE: timeValue = 7; } return timeValue; // Возвращаем величину задержки} // Параметры увеличения сложности победы void УвеличитьDifficulty () {if (сложность! = MISSION_IMPOSSIBLE && wonThisRound) {сложность ++; }} // Утерянный светодиод показывает void flash () {fill_solid (leds, NUM_LEDS, CRGB:: Red); FastLED.show (); задержка (500); fill_solid (светодиоды, NUM_LEDS, CRGB:: Black); FastLED.show (); задержка (500); } // Выигранный светодиодный индикатор void fadeall () {for (int i = 0; i <NUM_LEDS; i ++) {leds .nscale8 (250); }} void cylon () {static uint8_t hue = 0; Serial.print («х»); // Сначала сдвиньте светодиод в одном направлении for (int i = 0; i = 0; i--) {// Установите i-й светодиод на красный свет = CHSV (hue ++, 255, 255); // Показать светодиоды FastLED.show (); // теперь, когда мы показали светодиоды, сбросим i-й светодиод на черный // светодиоды = CRGB:: Black; fadeall (); // Подождите немного, прежде чем мы перейдем к циклу и сделаем это снова delay (10); }}
Шаг 3: Установите в приспособление
Я не буду вдаваться в подробности в этом разделе. Есть тысячи разных способов сделать эту часть работы, и я думаю, вы должны проявить творческий подход, чтобы она выглядела так, как вам нравится. При этом часы было довольно удобно использовать для размещения светодиодов, поскольку у них были индикаторы минут, которые я мог использовать в качестве разметки сверла. Кроме того, стеклянная крышка также позволяет мне использовать это как стол.
Липучка также была очень полезна для крепления светодиодного светильника к креплению корпуса электроники. Я также использовал липучку на Arduino. Это очень удобно для извлечения Arduino, если я когда-нибудь захочу изменить код.
Рекомендуемые:
FPGA Cyclone IV DueProLogic управляет камерой Raspberry Pi: 5 шагов
FPGA Cyclone IV DueProLogic управляет камерой Raspberry Pi: несмотря на то, что FPGA DueProLogic официально разработана для Arduino, мы собираемся сделать FPGA и Raspberry Pi 4B совместимыми. В этом руководстве реализованы три задачи: (A) Одновременно нажмите две кнопки на FPGA для изменения угла
FPGA Cyclone IV DueProLogic - кнопка и светодиод: 5 шагов
FPGA Cyclone IV DueProLogic - кнопка и светодиод: в этом руководстве мы собираемся использовать FPGA для управления внешней светодиодной схемой. Мы собираемся реализовать следующие задачи: (A) Используйте кнопки на FPGA Cyclone IV DuePrologic для управления светодиодом. (B) Светодиод мигает & периодически выключаетсяДемонстрационная видео-лаборатория
FPGA Cyclone IV DueProLogic Controls Servo Motor: 4 шага
FPGA Cyclone IV DueProLogic управляет серводвигателем: в этом руководстве мы собираемся написать код Verilog для управления серводвигателем. Сервопривод SG-90 производится Waveshare. При покупке серводвигателя вы можете получить техническое описание, в котором указаны рабочее напряжение, максимальный крутящий момент и предлагаемый Pu
Aruduino LED Game Fast Clicking Two Player Game: 8 шагов
Aruduino LED Game Игра для двух игроков с быстрым щелчком: этот проект вдохновлен @HassonAlkeim. Если вы хотите глубже изучить, вот ссылка, которую вы можете проверить https://www.instructables.com/id/Arduino-Two-Player-Fast-Button-Clicking-Game/. Эта игра является улучшенной версией Alkeim's. Это
Arduino LED Laser Arcade Game: 3 шага (с изображениями)
Arduino LED Laser Arcade Game: в этом руководстве я продемонстрирую, как создать лазерную аркадную игру, используя светодиоды и датчики света. Код включен, и вам не нужно много частей для его создания. Я не буду рассказывать, как я строю корпус, вам придется сделать это самостоятельно! Т