Innehållsförteckning:

Cyklon LED Arcade Game: 4 steg
Cyklon LED Arcade Game: 4 steg

Video: Cyklon LED Arcade Game: 4 steg

Video: Cyklon LED Arcade Game: 4 steg
Video: Explain: Steph Curry and Warriors steal Game 4 in Boston 2024, September
Anonim
Image
Image
Installera i fixtur
Installera i fixtur

Avsikten med detta projekt var att skapa ett enkelt spel med en Arduino som skulle vara interaktiv och underhållande för barn. Jag kommer ihåg att Cyclone arkadespel var ett av mina favorit arkadspel när jag var yngre, så jag bestämde mig för att replikera det. Detta är ett mycket enkelt projekt som består av en Arduino, sträng av individuellt adresserbara lysdioder och en tryckknapp.

Målet med spelet är att stoppa cykelljuset när det når den angivna (röda) lysdioden. Om det lyckas kommer svårighetsgraden att öka. Om det inte lyckas kommer ljuscykeln att starta om vid den aktuella svårighetsgraden.

Denna instruerbara var en enorm resurs för kärnan i min kodning.

Steg 1: Samla förbrukningsmaterial

  • Huvudkomponenter:

    • Arduino (jag använde en UNO)
    • Sträng av individuellt adresserbara lysdioder (jag använde länk)
    • Tryckknapp (jag använde länk)
    • Tryckt kretskort (PCB) eller brödbräda
    • Strömförsörjning (jag använde två separata nätaggregat, du kan komma undan med en om du är kreativ)

      • 5V 3A för lysdioder
      • 9V 1A för Arduino
  • Ramverk:

    • Elektronikhus (jag modifierade en trälampa från Goodwill)
    • LED -hus (jag modifierade din vanliga väggklocka och borrade hål med hjälp av minutidentifierarna som hålmarkeringar. Använd om möjligt en träklocka för att underlätta borrningen.)
    • Knapphölje (jag använde ett armbåge PVC -rör)
  • Verktyg / andra material:

    • Reservkablar för din krets
    • 10K (neddragningsmotstånd för omkopplare) och 470 ohm (för datakabel på lysdioder) motstånd
    • Borra för att skapa hål för att hysa dina lysdioder och för att göra nödvändiga hål i din armatur för att leda igenom ledningar
    • Lödkolv för lödning av din krets till ett kretskort
    • Het limpistol för att fästa lysdioderna på din armatur
    • Kardborre eller något sätt att säkra ramverket tillsammans
    • Tätningar som tillval för hål som borrats för att ledningar ska passera

Steg 2: Ladda upp kod

Se till att du laddar ner och lägger till "FastLED" -biblioteket

Kärnan i koden (void loop) består av två tillstånd: tryckknapp hög (slutspel) och tryckknapp låg (uppspelning). När användaren trycker på knappen jämförs den LED -adress som lampan stoppades på med adressen för den centrala lysdioden. Om de inte är desamma blinkar alla lampor rött två gånger och den aktuella nivån startar om. Om de är desamma körs cylon (FastLED -bibliotekskript) två gånger, svårighetsgraden ökar och spelet fortsätter. När spelaren slår den sista nivån kör cylon åttonde gånger och spelet startar om på nivå 1.

// Cyklonspel

#inkludera "FastLED.h" // upp till 50 #define NUM_LEDS 40 #define CENTER_LED 21 #define DATA_PIN 7 #define LED_TYPE WS2811 #define COLOR_ORDER RGB // intervall 0-64 #define BRIGHTNESS 50 // Definition av svårighetsgrader #define Lätt 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 // Startsvårigheter svårighetsgrad = 1; // Definiera matrisen av leds CRGB -leds [NUM_LEDS]; // Vann spelaren den här omgången? Denna tagg används för svårighetsparametrar. bool wonThisRound = false; // Startplats för cykelljuset int LEDaddress = 0; // Spelar spelet? bool Spela = sant; // Är detta den första vinsten? bool CycleEnded = true; // Knappdetaljer const int buttonPin = 9; int buttonState = 0; // Initiera ledbiblioteket och arduino -funktioner ogiltiga inställningar () {FastLED.addLeds (leds, NUM_LEDS); FastLED.setBrightness (BRIGHTNESS); pinMode (buttonPin, INPUT); Serial.begin (9600); } // Köttet och potatisen // Två lägen - Spela och avsluta spel void loop () {// END GAME buttonState = digitalRead (buttonPin); if (buttonState == HIGH) {Playing = false; // Användaren har tryckt på knappen och lysdioden har stannat på den vinnande adressen. för (int i = 0; i <NUM_LEDS; i ++) {leds = CRGB:: Svart; } leds [CENTER_LED] = CRGB:: Röd; leds [LEDaddress] = CRGB:: Grön; FastLED.show (); if (CycleEnded = true) {int diff = abs (CENTER_LED - LEDaddress); // Hittar avståndet mellan den tända lysdioden och den mellersta lysdioden om (diff == 0) {wonThisRound = true; // Spelaren lyckades slå nivån om (svårighet! = MISSION_IMPOSSIBLE) {för (int i = 0; i <2; i ++) {cylon (); }} if (svårighet == MISSION_IMPOSSIBLE) {för (int i = 0; i <8; i ++) {cylon (); } svårighet = 0; } öka svårigheten (); wonThisRound = false; } annat {fördröjning (1000); för (int i = 0; i <2; i ++) {flash (); }} CycleEnded = false; } LEDadress = 0; fördröjning (250); buttonState = digitalRead (buttonPin); if (buttonState == LOW) {Playing = true; }} // SPELAR om (spelar) {för (int i = 0; i <NUM_LEDS; i ++) {leds = CRGB:: Black; // Stänger av alla leds} leds [CENTER_LED] = CRGB:: Röd; // Ställer mittledd färg till gröna lysdioder [LEDaddress] = CRGB:: Grön; // Ställer in cylindrig led -färg till röd FastLED.show (); // Initierar ljuscykel LEDaddress ++; // Ställer in ljuscykeln till en led i taget om (LEDaddress == NUM_LEDS) {LEDaddress = 0; } fördröjning (getTime (svårighet)); buttonState = digitalRead (buttonPin); if (buttonState == HIGH) {Playing = false; CycleEnded = true; }}} // Nivåparametrar int getTime (int diff) // Returnerar tidsfördröjning för LED -rörelsebas på svårighetsgrad {int timeValue = 0; switch (diff) {case EASY: timeValue = 100; ha sönder; fall MEDIUM: timeValue = 80; ha sönder; fall HARD: timeValue = 60; ha sönder; fall ON_SPEED: timeValue = 40; ha sönder; fall SONIC_SPEED: timeValue = 30; ha sönder; fall ROCKET_SPEED: timeValue = 20; ha sönder; fall LIGHT_SPEED: timeValue = 13; ha sönder; fall MISSION_IMPOSSIBLE: timeValue = 7; } return timeValue; // Returnera fördröjningsbeloppet} // Vinningssvårigheter öka parametrarna void ökaDifidity () {if (svårighet! = MISSION_IMPOSSIBLE && wonThisRound) {svårighet ++; }} // Förlorad LED Visa tomrumsblixt () {fill_solid (leds, NUM_LEDS, CRGB:: Röd); FastLED.show (); fördröjning (500); fill_solid (leds, NUM_LEDS, CRGB:: Black); FastLED.show (); fördröjning (500); } // Vann LED Visa void fadeall () {för (int i = 0; i <NUM_LEDS; i ++) {leds .nscale8 (250); }} void cylon () {statisk uint8_t nyans = 0; Serial.print ("x"); // Skjut först lysdioden i en riktning för (int i = 0; i = 0; i--) {// Ställ in den första ledningen till röda lysdioder = CHSV (nyans ++, 255, 255); // Visa lysdioderna FastLED.show (); // nu när vi har visat lysdioderna, återställ ith led till svart // leds = CRGB:: Black; fadeall (); // Vänta lite innan vi går runt och gör det igen fördröjning (10); }}

Steg 3: Installera i fixtur

Installera i fixtur
Installera i fixtur
Installera i fixtur
Installera i fixtur

Jag tänker inte gå in på detaljer i det här avsnittet. Det finns tusen olika sätt att gå om den här delen och jag tycker att du ska vara kreativ för att få det att se ut som du gillar det. Med detta sagt var klockan ganska bekväm att använda för att hysa lysdioderna eftersom den hade små indikatorer som jag kunde använda som borrmarkeringar. Glaslocket låter mig också använda detta som ett bord.

Kardborrbandet var också mycket användbart för att fästa LED -armaturen till elektronikhuset. Jag använde också kardborre på Arduino. Detta gjorde det mycket bekvämt att dra ut Arduino om jag någonsin vill ändra koden.

Rekommenderad: