Innholdsfortegnelse:
Video: Cyclone LED Arcade Game: 4 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:23
Hensikten med dette prosjektet var å lage et enkelt spill ved hjelp av en Arduino som ville være interaktiv og underholdende for barn. Jeg husker at Cyclone arkadespill var et av mine favoritt arkadespill da jeg var yngre, så jeg bestemte meg for å replikere det. Dette er et veldig enkelt prosjekt som består av en Arduino, en rekke individuelt adresserbare lysdioder og en trykknapp.
Målet med spillet er å stoppe sykkellampen når den når den angitte (røde) LED -en. Hvis det lykkes, vil vanskelighetsgraden øke. Hvis det ikke lykkes, starter lyssyklusen på nytt med det nåværende vanskelighetsgraden.
Denne instruerbare var en enorm ressurs for kjernen i kodingen min.
Trinn 1: Samle rekvisita
-
Hovedkomponenter:
- Arduino (jeg brukte en UNO)
- Streng av individuelt adresserbare lysdioder (jeg brukte link)
- Trykknapp (jeg brukte lenke)
- Trykt kretskort (PCB) eller brødbrett
-
Strømforsyning (jeg brukte to separate strømforsyninger, du kan komme unna med en hvis du er kreativ)
- 5V 3A for lysdioder
- 9V 1A for Arduino
-
Rammeverk:
- Elektronikkhus (jeg modifiserte en lampe i tre fra Goodwill)
- LED -hus (jeg modifiserte din standard veggklokke og borede hull ved å bruke minuttidentifikatorene som hullmarkeringer. Bruk en treklokke om mulig for å gjøre boringen enklere.)
- Knapphus (jeg brukte et albue PVC -rør)
-
Verktøy / andre materialer:
- Reserve ledninger for kretsen din
- 10K (nedtrekksmotstand for bryter) og 470 ohm (for datakabel på LED) motstander
- Bor for å lage hull for lysdioder og for å lage nødvendige hull i armaturet for å føre ledninger gjennom
- Loddejern for lodding av kretsen til en PCB
- Varm limpistol for å feste lysdiodene til armaturet
- Borrelås eller noen midler for å sikre rammen sammen
- Pakninger er valgfrie for hull som er boret for at ledninger skal passere
Trinn 2: Last opp kode
Sørg for å laste ned og legge til "FastLED" -biblioteket
Kjernen i koden (void loop) består av to tilstander: trykknapp høy (sluttspill) og trykknapp lav (spiller). Når brukeren trykker på knappen, blir LED -adressen lyset ble stoppet på, sammenlignet med adressen til senterlampen. Hvis de ikke er de samme, blinker alle lysene rødt to ganger og gjeldende nivå starter på nytt. Hvis de er de samme, kjører cylon (FastLED bibliotekskript) to ganger, vanskelighetsgraden øker og spillet fortsetter. Når spilleren slår det siste nivået, løper cylon åttende ganger og spillet starter på nytt på nivå 1.
// Cyclone Game
#inkludere "FastLED.h" // opptil 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 // Definisjon av vanskelighetsgrader #define LETT 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 // Startvansker int vanskelighetsgrad = 1; // Definer matrisen med leds CRGB leds [NUM_LEDS]; // Vant spilleren denne runden? Denne koden brukes for vanskelighetsparametere. bool wonThisRound = false; // Startsted for sykkellampen int LEDaddress = 0; // Kjører spillet? bool Spiller = sant; // Er dette den første seieren? bool CycleEnded = true; // Knappdetaljer const int buttonPin = 9; int buttonState = 0; // Initialiser led -biblioteket og arduino -funksjoner ugyldig oppsett () {FastLED.addLeds (leds, NUM_LEDS); FastLED.setBrightness (BRIGHTNESS); pinMode (buttonPin, INPUT); Serial.begin (9600); } // Kjøttet og potetene // To moduser - Playing and End Game void loop () {// END GAME buttonState = digitalRead (buttonPin); if (buttonState == HIGH) {Playing = false; // Brukeren har trykket på knappen, og lysdioden har stoppet på den vinnende adressen. for (int i = 0; i <NUM_LEDS; i ++) {leds = CRGB:: Svart; } leds [CENTER_LED] = CRGB:: Rød; leds [LEDaddress] = CRGB:: Grønn; FastLED.show (); hvis (CycleEnded = true) {int diff = abs (CENTER_LED - LEDadresse); // Finner avstanden mellom lysdioden og senterledningen hvis (diff == 0) {wonThisRound = true; // Spilleren slo nivået vellykket hvis (vanskeligheter! = MISSION_IMPOSSIBLE) {for (int i = 0; i <2; i ++) {cylon (); }} if (vanskelighetsgrad == MISSION_IMPOSSIBLE) {for (int i = 0; i <8; i ++) {cylon (); } vanskelighetsgrad = 0; } øke vanskelighetsgrad (); wonThisRound = false; } annet {forsinkelse (1000); for (int i = 0; i <2; i ++) {flash (); }} CycleEnded = false; } LEDadresse = 0; forsinkelse (250); buttonState = digitalRead (buttonPin); if (buttonState == LOW) {Playing = true; }} // PLAYING if (Playing) {for (int i = 0; i <NUM_LEDS; i ++) {leds = CRGB:: Black; // Slår av alle lysdiodene} lysdioder [CENTER_LED] = CRGB:: Rød; // Setter senterfarget farge til grønne lysdioder [LEDadresse] = CRGB:: Grønn; // Angir sylindert led -farge til rød FastLED.show (); // Initialiserer lyssyklus LEDadresse ++; // Angir lyssyklus til en led om gangen hvis (LEDadresse == NUM_LEDS) {LEDadresse = 0; } forsinkelse (getTime (vanskelighetsgrad)); buttonState = digitalRead (buttonPin); if (buttonState == HIGH) {Playing = false; CycleEnded = true; }}} // Nivåparametere int getTime (int diff) // Returnerer tidsforsinkelse for ledet bevegelsesbase på vanskelighetsgrad {int timeValue = 0; switch (diff) {case EASY: timeValue = 100; gå i stykker; sak MEDIUM: timeValue = 80; gå i stykker; sak HARD: timeValue = 60; gå i stykker; sak ON_SPEED: timeValue = 40; gå i stykker; sak SONIC_SPEED: timeValue = 30; gå i stykker; sak ROCKET_SPEED: timeValue = 20; gå i stykker; sak LIGHT_SPEED: timeValue = 13; gå i stykker; sak MISSION_IMPOSSIBLE: timeValue = 7; } return timeValue; // Returner forsinkelsesbeløpet} // Vinningsvanskeligheter øke parametere ugyldig økningDivilitet () {if (vanskelighetsgrad! = MISSION_IMPOSSIBLE && wonThisRound) {vanskelighetsgrad ++; }} // Tapt LED Vis ugyldig blits () {fill_solid (leds, NUM_LEDS, CRGB:: Rød); FastLED.show (); forsinkelse (500); fill_solid (leds, NUM_LEDS, CRGB:: Black); FastLED.show (); forsinkelse (500); } // Vant LED Vis void fadeall () {for (int i = 0; i <NUM_LEDS; i ++) {leds .nscale8 (250); }} void cylon () {statisk uint8_t hue = 0; Serial.print ("x"); // Før først lysdioden i en retning for (int i = 0; i = 0; i--) {// Sett lysdioden til røde lysdioder = CHSV (hue ++, 255, 255); // Vis lysdiodene FastLED.show (); // nå som vi har vist lysdiodene, tilbakestiller jeg ledningen til svart // leds = CRGB:: Svart; fadeall (); // Vent litt før vi går rundt og gjør det igjen forsinkelse (10); }}
Trinn 3: Installer i Fixture
Jeg kommer ikke til å gå inn på detaljer i denne delen. Det er tusen forskjellige måter å gå om denne delen på, og jeg synes du bør være kreativ for å få den til å se slik du liker den. Når det er sagt, var klokken ganske praktisk å bruke for LED -lysene, da den hadde små indikatorer som jeg kunne bruke som boremarkeringer. Glassdekselet lar meg også bruke dette som bord.
Borrelåsen var også veldig nyttig for å feste LED -armaturet til elektronikkhuset. Jeg brukte også borrelås på Arduino. Dette gjorde det veldig praktisk å trekke Arduino ut hvis jeg noen gang vil endre koden.
Anbefalt:
FPGA Cyclone IV DueProLogic - Trykknapp og LED: 5 trinn
FPGA Cyclone IV DueProLogic - Trykknapp og LED: I denne opplæringen skal vi bruke FPGA til å kontrollere ekstern LED -krets. Vi skal implementere følgende oppgaver (A) Bruk trykknappene på FPGA Cyclone IV DuePrologic for å kontrollere LED. (B) Flash LED på & av periodisk Video demo Lab
Arduino Cyclone Game: 5 trinn (med bilder)
Arduino Cyclone Game: Jeg har aldri spilt det virkelige syklonspillet, men jeg liker tanken på å spille med reaksjonstiden min. Jeg designet et miniatyrisert spill. Den består av 32 lysdioder som danner en sirkel, lysdiodene lyser en etter en som en leddjager. Målet er å trykke på en rumpe
Cyclone (Arduino LED Game): 6 trinn (med bilder)
Cyclone (Arduino LED Game): I denne opplæringen vil jeg lære deg hvordan du lager et LED -spill med veldig lite kode eller erfaring! Jeg hadde denne ideen en stund, og endelig kom jeg til å lage den. Det er et morsomt spill som minner oss alle om arkadespillene. Det finnes andre opplæringsprogrammer for
Arduino Cyclone Arcade Game: 6 trinn
Arduino Cyclone Arcade Game: Blinkende prangende lys! Arduino! Spill! Hva mer må sies? Dette spillet er basert på Cyclone -arkadespillet, hvor spilleren prøver å stoppe en LED -rulling rundt en sirkel på et bestemt sted
Arduino LED Laser Arcade Game: 3 trinn (med bilder)
Arduino LED Laser Arcade Game: I dette instruktive skal jeg demonstrere hvordan du lager et Laser Arcade Game ved hjelp av LED- og lyssensorer. Koden er inkludert, og du trenger ikke mange deler for å bygge den. Jeg vil ikke fortelle deg hvordan jeg bygger saken, du må lage det selv! T