Inhoudsopgave:
Video: Cyclone LED Arcade Game - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
De bedoeling van dit project was om een eenvoudig spel te maken met een Arduino dat interactief en vermakelijk zou zijn voor kinderen. Ik herinner me dat het Cyclone-arcadespel een van mijn favoriete arcade-spellen was toen ik jonger was, dus besloot ik het te repliceren. Dit is een heel eenvoudig project dat bestaat uit een Arduino, een reeks individueel adresseerbare LED's en een drukknop.
Het doel van het spel is om het fietslicht te stoppen wanneer het de aangegeven (rode) LED bereikt. Als dit lukt, wordt de moeilijkheidsgraad verhoogd. Als dit niet lukt, wordt de lichtcyclus opnieuw gestart op de huidige moeilijkheidsgraad.
Deze instructable was een enorme bron voor de kern van mijn codering.
Stap 1: Verzamel benodigdheden
-
Hoofd onderdelen:
- Arduino (ik gebruikte een UNO)
- String van individueel adresseerbare LED's (ik gebruikte link)
- Drukknop (ik gebruikte link)
- Printplaat (PCB) of breadboard
-
Voeding (ik heb twee aparte voedingen gebruikt, misschien kom je er wel mee weg als je creatief bent)
- 5V 3A voor LED's
- 9V 1A voor Arduino
-
Kader:
- Elektronicabehuizing (ik heb een houten lamparmatuur van Goodwill aangepast)
- LED-behuizing (ik heb uw standaard wandklok aangepast en gaten geboord met behulp van de minuutaanduidingen als gatmarkeringen. Gebruik indien mogelijk een houten klok om het boren gemakkelijker te maken.)
- Knopbehuizing (ik gebruikte een elleboog PVC-buis)
-
Gereedschap / Overige materialen:
- Reserve bedrading voor uw circuit
- 10K (aftrekweerstand voor schakelaar) en 470 ohm (voor datakabel op LED's) weerstanden
- Boor voor het maken van gaten om uw LED's te huisvesten en voor het maken van de nodige gaten in uw armatuur om draden door te leiden
- Soldeerbout voor het solderen van je schakeling op een PCB
- Heet lijmpistool voor het bevestigen van de LED's aan uw armatuur
- Klittenband of een ander middel om het raamwerk aan elkaar te bevestigen
- Pakkingen optioneel voor geboorde gaten om draden door te laten gaan
Stap 2: Upload code
Zorg ervoor dat u de "FastLED"-bibliotheek downloadt en toevoegt
De kern van de code (void loop) bestaat uit twee toestanden: drukknop hoog (End Game) en drukknop laag (Playing). Zodra de gebruiker op de knop drukt, wordt het LED-adres waarop het licht was gestopt vergeleken met het adres van de middelste LED. Als ze niet hetzelfde zijn, knipperen alle lampjes twee keer rood en wordt het huidige niveau opnieuw gestart. Als ze hetzelfde zijn, wordt cylon (FastLED-bibliotheekscript) twee keer uitgevoerd, neemt de moeilijkheidsgraad toe en wordt het spelen hervat. Zodra de speler het laatste niveau verslaat, wordt cylon achtste keer uitgevoerd en begint het spel opnieuw op niveau 1.
// Cycloon Game
#include "FastLED.h" //tot 50 #define NUM_LEDS 40 #define CENTER_LED 21 #define DATA_PIN 7 #define LED_TYPE WS2811 #define COLOR_ORDER RGB //bereik 0-64 #define BRIGHTNESS 50 //Definitie van moeilijkheidsgraden #define GEMAKKELIJK 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 //Beginmoeilijkheid int moeilijkheid = 1; // Definieer de reeks leds CRGB leds [NUM_LEDS]; // Heeft de speler deze ronde gewonnen? Deze tag wordt gebruikt voor moeilijkheidsparameters. bool wonThisRound = false; // Startlocatie van het fietslicht int LEDaddress = 0; // Draait het spel? bool Spelen = waar; // Is dit de eerste overwinning? bool CycleEnded = waar; // Knopdetails const int buttonPin = 9; int knopState = 0; // Initialiseer de led-bibliotheek en arduino-functies void setup () { FastLED.addLeds (leds, NUM_LEDS); FastLED.setHelderheid (HELDERHEID); pinMode (knopPin, INPUT); Serieel.begin(9600); } // Het vlees en de aardappelen // Twee modi - Spelen en einde spel void loop () {// END GAME buttonState = digitalRead (buttonPin); if (buttonState == HOOG) { Spelen = false; // Gebruiker heeft op de knop gedrukt en de LED is gestopt op het winnende adres. for (int i = 0; i <NUM_LEDS; i++) { leds = CRGB::Black; } leds[CENTER_LED] = CRGB::Rood; leds[LEDadres] = CRGB::Groen; FastLED.show(); if (CycleEnded = true) {int diff = abs (CENTER_LED - LEDaddress); // Vindt afstand tussen de verlichte led en de middelste led if (diff == 0) { wonThisRound = true; // Speler heeft het niveau met succes verslagen if (moeilijkheid! = MISSION_IMPOSSIBLE) { for (int i = 0; i < 2; i++) { cylon (); } } if (moeilijkheid == MISSION_IMPOSSIBLE) { for (int i = 0; i < 8; i++) { cylon(); } moeilijkheid = 0; } verhoogde moeilijkheidsgraad(); wonThisRound = false; } anders { vertraging(1000); voor (int i = 0; i < 2; i++) { flash(); } } CycleEnded = false; } LED-adres = 0; vertraging (250); buttonState = digitalRead (buttonPin); if (buttonState == LAAG) { Spelen = waar; } } // PLAYING if (Playing) { for (int i = 0; i < NUM_LEDS; i++) { leds = CRGB::Black; // Schakelt alle leds uit } leds [CENTER_LED] = CRGB::Rood; // Stelt de kleur van de middelste led in op groene leds [LED-adres] = CRGB::Groen; // Stelt cyling led-kleur in op rood FastLED.show(); //Initialiseert lichtcyclus LEDaddress++; // Stelt de lichtcyclus in op één led tegelijk als (LEDaddress == NUM_LEDS) {LEDaddress = 0; } vertraging (getTime (moeilijkheid)); buttonState = digitalRead (buttonPin); if (buttonState == HOOG) { Spelen = false; CycleEnded = waar; } } } //Niveauparameters int getTime (int diff) // Retourneert tijdvertraging voor led-beweging op basis van moeilijkheidsgraad { int timeValue = 0; switch (diff) { case EASY: timeValue = 100; pauze; geval MEDIUM: timeValue = 80; pauze; geval HARD: timeValue = 60; pauze; geval ON_SPEED: timeValue = 40; pauze; geval SONIC_SPEED: timeValue = 30; pauze; geval ROCKET_SPEED: timeValue = 20; pauze; geval LIGHT_SPEED: timeValue = 13; pauze; geval MISSION_IMPOSSIBLE: timeValue = 7; } return timeValue;// Retourneer het vertragingsbedrag } //Winnen moeilijkheidsgraad verhogen parameters void verhogingDifficulty() { if (moeilijkheidsgraad!= MISSION_IMPOSSIBLE && wonThisRound) { moeilijkheidsgraad++; } } // Lost LED Show void flash () {fill_solid (leds, NUM_LEDS, CRGB::Red); FastLED.show(); vertraging (500); fill_solid(leds, NUM_LEDS, CRGB::Zwart); FastLED.show(); vertraging (500); } //Won LED Show void fadeall() { for(int i = 0; i <NUM_LEDS; i++) { leds.nscale8(250); } } void cylon () { static uint8_t tint = 0; Serieel.print("x"); // Schuif eerst de led in één richting for(int i = 0; i = 0; i--) { // Zet de i'th led op rode leds = CHSV(hue++, 255, 255); // Toon de leds FastLED.show(); // nu we de leds hebben getoond, zet de i-de led terug op zwart // leds = CRGB::Black; fadeall(); // Wacht een beetje voordat we een rondje maken en het opnieuw doen delay (10); } }
Stap 3: Installeer in armatuur
In deze paragraaf ga ik niet in details treden. Er zijn duizend verschillende manieren om dit onderdeel aan te pakken en ik denk dat je creatief moet zijn om het eruit te laten zien zoals jij het wilt. Dat gezegd hebbende, de klok was best handig om te gebruiken voor het huisvesten van de LED's, omdat hij minuutindicatoren had die ik als boormarkeringen kon gebruiken. Door de glazen kap kan ik dit ook als tafel gebruiken.
Het klittenband was ook erg handig om de LED-armatuur aan de elektronicabehuizing te bevestigen. Ik gebruikte ook klittenband op de Arduino. Dit maakte het erg handig om de Arduino eruit te halen als ik ooit de code wil wijzigen.
Aanbevolen:
POiNG! - Arduino Arcade Game!: 3 stappen
POiNG! - Arduino Arcade Game!: We gaan een arcadespel in PONG-stijl bouwen dat gebruik maakt van onderdelen uit het "The Most Complete Starter Kit UNO R3 Project" kit van Elegoo Inc.Full Disclosure - De meeste onderdelen die voor deze Instructable zijn geleverd, zijn door Elegoo aan de auteur verstrekt
8x16 LED Matrix Pong Game (2 peddels per spelerversie): 3 stappen
8x16 LED Matrix Pong-spel (2 paddles per spelerversie): Ik ben geïnspireerd door vele variaties van het klassieke Pong-spel dat op Arduino is geïmplementeerd met behulp van een 8x8 LED-matrix. In deze instructable laat ik je zien hoe je mijn favoriete Pong-versie kunt bouwen met twee peddels - spits en keeper - per speler
Hou op! LED-game (aangedreven door Arduino): 6 stappen
Hou op! LED-game (aangedreven door Arduino): dit project is geïnspireerd op deze video van YouTube en de Pendulum Challenge Kit (gebroken link. Probeer deze eens.) van Makershed.com. Het is een eenvoudig spel bestaande uit vijf LED-lampjes en één drukknop. De LED's knipperen in volgorde en het afspelen
LED Matrix Game of Life 32 X 32: 8 stappen
LED Matrix Game of Life 32 X 32: Ik was geïnspireerd door Jptrsn's 16 x16 Game of Life, maar werd uiteindelijk vier keer groter. Ik vond een MAX7219 Dot Matrix Module 4-in-1 Display voor Arduino-boards op Bangood.com voor £ 3.50 toen ze aankwamen bleek het vrij moeilijk om de
Hoe u kunt controleren of een game op uw computer kan worden uitgevoerd voordat u de game koopt: 4 stappen
Hoe u kunt controleren of een game op uw computer kan worden uitgevoerd voordat u de game koopt.: Ik heb onlangs Call of Duty 4 van een vriend gekocht (gratis zou ik kunnen toevoegen) omdat hij niet op zijn computer zou draaien. Wel, zijn computer is vrij nieuw, en het verbaasde me waarom hij niet zou werken. Dus na een paar uur zoeken op internet kwam ik