Taula de continguts:
Vídeo: Cyclone LED Arcade Game: 4 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:13
La intenció d’aquest projecte era crear un joc senzill amb un Arduino que fos interactiu i entretingut per als nens. Recordo que el joc arcade Cyclone era un dels meus jocs d’arcade preferits quan era més jove, així que vaig decidir replicar-lo. Es tracta d’un projecte molt senzill que consisteix en un Arduino, una cadena de LED adreçables individualment i un polsador.
L’objectiu del joc és aturar la llum de ciclisme quan arriba al LED (vermell) indicat. Si té èxit, el nivell de dificultat augmentarà. Si no té èxit, el cicle de llum es reiniciarà al nivell de dificultat actual.
Aquesta instrucció va ser un recurs enorme per al nucli de la meva codificació.
Pas 1: reuniu subministraments
-
Components principals:
- Arduino (he utilitzat un UNO)
- Cadena de LED adreçables individualment (he utilitzat enllaç)
- Polsador (he utilitzat l'enllaç)
- Placa de circuits impresos (PCB) o taulers de suport
-
Font d'alimentació (he utilitzat dues fonts d'alimentació separades; pot ser que se'n surti una si es creatiu)
- 5V 3A per a LEDs
- 9V 1A per Arduino
-
Marc:
- Carcassa electrònica (he modificat un llum de fusta de Goodwill)
- Carcassa LED (he modificat el rellotge de paret estàndard i he fet forats utilitzant els identificadors de minuts com a marques de forats. Utilitzeu un rellotge de fusta si és possible per facilitar la perforació).
- Carcassa de botons (he utilitzat un tub de colze de PVC)
-
Eines / Altres materials:
- Cablatge de recanvi per al vostre circuit
- Resistències de 10K (resistència desplegable per commutador) i 470 ohm (per cable de dades en LED)
- Trepant per crear forats per allotjar els vostres LEDs i fer els forats necessaris al vostre dispositiu per fer passar els cables
- Soldador per soldar el vostre circuit a un PCB
- Pistola de cola calenta per fixar els LED al vostre dispositiu
- Velcro o algun mitjà per assegurar el marc junts
- Juntes opcionals per a forats foradats perquè passin cables
Pas 2: pengeu el codi
Assegureu-vos de descarregar i afegir la biblioteca "FastLED"
El nucli del codi (bucle buit) consta de dos estats: polsador alt (Finalitzar joc) i polsador baix (Jugant). Un cop l’usuari prem el botó, es compara l’adreça LED en què es va parar la llum amb l’adreça del LED central. Si no són el mateix, tots els llums parpellaran en vermell dues vegades i es reiniciarà el nivell actual. Si són iguals, cylon (script de biblioteca FastLED) s'executa dues vegades, el nivell de dificultat augmenta i la reproducció es reprèn. Un cop el jugador supera l’últim nivell, cylon corre vuitena vegada i el joc es reinicia al nivell 1.
// Joc de ciclons
#include "FastLED.h" // fins a 50 #define NUM_LEDS 40 #define CENTER_LED 21 #define DATA_PIN 7 #define LED_TYPE WS2811 #define COLOR_ORDER RGB // range 0-64 #define BRIGHTNESS 50 // Definició dels nivells de dificultat #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 // Dificultat inicial int difficult = 1; // Definiu la matriu de leds leds CRGB [NUM_LEDS]; // Ha guanyat el jugador aquesta ronda? Aquesta etiqueta s’utilitza per a paràmetres de dificultat. bool wonThisRound = false; // Lloc inicial de la llum de bicicleta int LEDaddress = 0; // El joc s'està executant? bool Jugant = cert; // És la primera victòria? bool CycleEnded = cert; // Detalls del botó const int buttonPin = 9; int buttonState = 0; // Inicialitzeu la biblioteca de leds i les funcions arduino void setup () {FastLED.addLeds (leds, NUM_LEDS); FastLED.setBrightness (BRIGHTNESS); pinMode (buttonPin, INPUT); Serial.begin (9600); } // The meat and potatoes // Two Modes: Playing and End Game void loop () {// END GAME buttonState = digitalRead (buttonPin); if (buttonState == HIGH) {Jugant = fals; // L'usuari ha premut el botó i el LED s'ha aturat a l'adreça guanyadora. for (int i = 0; i <NUM_LEDS; i ++) {leds = CRGB:: Negre; } leds [CENTRE_LED] = CRGB:: Vermell; leds [LEDaddress] = CRGB:: Verd; FastLED.show (); if (CycleEnded = true) {int diff = abs (CENTRE_LED - adreça LED); // Cerca la distància entre el led il·luminat i el led central si (diff == 0) {wonThisRound = true; // El jugador supera amb èxit el nivell if (dificultat! = MISSIÓ_IMPOSSIBLE) {for (int i = 0; i <2; i ++) {cylon (); }} if (dificultat == MISSIÓ_IMPOSSIBLE) {per (int i = 0; i <8; i ++) {cylon (); } dificultat = 0; } augmentarDificultat (); wonThisRound = false; } else {delay (1000); for (int i = 0; i <2; i ++) {flash (); }} CycleEnded = false; } LEDaddress = 0; retard (250); buttonState = digitalRead (buttonPin); if (buttonState == BAIX) {Jugant = true; }} // PLAYING if (Playing) {for (int i = 0; i <NUM_LEDS; i ++) {leds = CRGB:: Black; // Apaga tots els leds} leds [CENTRE_LED] = CRGB:: Vermell; // Estableix el color del led central en leds verds [LEDaddress] = CRGB:: Green; // Estableix el color del led cilindre en vermell FastLED.show (); // Inicialitza l'adreça LED del cicle de llum ++; // Estableix el cicle de llum a un led alhora si (LEDaddress == NUM_LEDS) {LEDaddress = 0; } delay (getTime (dificultat)); buttonState = digitalRead (buttonPin); if (buttonState == HIGH) {Jugant = fals; CycleEnded = cert; }}} // Paràmetres de nivell int getTime (int diff) // Retorna el temps de retard del moviment del led en base a dificultat {int timeValue = 0; commutador (diferència) {cas FÀCIL: TimeValue = 100; trencar; cas MITJÀ: valorValor = 80; trencar; cas DUR: valorValor = 60; trencar; cas ON_SPEED: timeValue = 40; trencar; cas SONIC_SPEED: timeValue = 30; trencar; cas ROCKET_SPEED: timeValue = 20; trencar; majúscula LIGHT_SPEED: timeValue = 13; trencar; cas MISSIÓ_IMPOSSIBLE: valorValor = 7; } retornar el tempsValor; // Retornar la quantitat de retard} // Guanyar dificultat augmentar paràmetres void augmentar Dificultat () {si (dificultat! = MISSIÓ_IMPOSSIBLE && wonThisRound) {dificultat ++; }} // Lost LED Show void flash () {fill_solid (leds, NUM_LEDS, CRGB:: Red); FastLED.show (); retard (500); fill_solid (leds, NUM_LEDS, CRGB:: Negre); FastLED.show (); retard (500); } // Won LED Show void fadeall () {for (int i = 0; i <NUM_LEDS; i ++) {leds .nscale8 (250); }} void cylon () {static uint8_t tonalitat = 0; Serial.print ("x"); // Primer feu lliscar el led en una direcció per (int i = 0; i = 0; i--) {// Establiu el led i'th a leds vermells = CHSV (tonalitat ++, 255, 255); // Mostra els leds FastLED.show (); // ara que hem mostrat els leds, restableix el led i'th a negre // leds = CRGB:: Black; fadeall (); // Espereu una mica abans de fer una volta i fer-ho de nou endarreriu (10); }}
Pas 3: instal·leu a Fixture
No entraré en detalls en aquesta secció. Hi ha mil maneres diferents d’aconseguir aquesta part i crec que hauríeu de ser creatius per fer que sembli com us agrada. Dit això, el rellotge era bastant còmode d’utilitzar per allotjar els LED, ja que tenia indicadors de minuts que era capaç d’utilitzar com a marques de perforació. A més, la coberta de vidre també em permet utilitzar-lo com a taula.
El velcro també va ser molt útil per fixar el dispositiu LED al dispositiu electrònic de la carcassa. També vaig fer servir velcro a l’Arduino. Això va fer que sigui molt convenient treure l'Arduino si mai vull modificar el codi.
Recomanat:
2 Arcade Stand-Up Retro Arcade de Micro Center: 20 passos
2 Arcade Stand-Up Retro Arcade de Micro Center: el vostre Micro Center local ara porta tot el necessari per fabricar el vostre propi gabinet Retro Arcade basat en Raspberry Pi. Els kits són totalment personalitzables, inclouen l’armari, el Raspberry Pi, els botons, els joysticks, els accessoris d’àudio i vídeo i molt més. És
FPGA Cyclone IV Controls DueProLogic Càmera Raspberry Pi: 5 passos
FPGA Cyclone IV Controls DueProLogic Controls Càmera Raspberry Pi: Tot i que el FPGA DueProLogic està dissenyat oficialment per a Arduino, farem que el FPGA i el Raspberry Pi 4B siguin comunicables. En aquest tutorial s’implementen tres tasques: (A) Premeu simultàniament els dos botons FPGA per capgirar l'angle de
FPGA Cyclone IV DueProLogic: polsador i LED: 5 passos
FPGA Cyclone IV DueProLogic - Pulsador i LED: en aquest tutorial, utilitzarem el FPGA per controlar el circuit LED extern. Implementarem les tasques següents (A) Utilitzeu els botons de control de FPGA Cyclone IV DuePrologic per controlar el LED. (B) LED de flaix a & desactivat periòdicament Laboratori de demostració de vídeo
Servomotor FPGA Cyclone IV DueProLogic Controls: 4 passos
FPGA Cyclone IV DueProLogic Controls Servo Motor: En aquest tutorial, escriurem el codi Verilog per controlar el servo motor. El servo SG-90 està fabricat per Waveshare. Quan compreu el servomotor, és possible que rebeu un full de dades que enumera la tensió de funcionament, el parell màxim i el Pu proposat
Arduino Cyclone Arcade Joc: 6 passos
Arduino Cyclone Arcade Joc: llums intermitents parpellejants! Arduino! Joc Què cal dir més? Aquest joc es basa en el joc arcade Cyclone, on el jugador intenta aturar un desplaçament de leds al voltant d'un cercle en un punt específic