Indholdsfortegnelse:
Video: Cyklon LED -arkadespil: 4 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:27
Hensigten med dette projekt var at skabe et simpelt spil ved hjælp af en Arduino, der ville være interaktiv og underholdende for børn. Jeg kan huske, at Cyclone -arkadespillet var et af mine foretrukne arkadespil, da jeg var yngre, så jeg besluttede at gentage det. Dette er et meget enkelt projekt, der består af en Arduino, en række individuelt adresserbare lysdioder og en trykknap.
Målet med spillet er at stoppe cykellampen, når den når den angivne (røde) LED. Hvis det lykkes, vil sværhedsgraden stige. Hvis det ikke lykkes, genstarter lyscyklussen ved det aktuelle sværhedsgrad.
Denne instruerbare var en enorm ressource for kernen i min kodning.
Trin 1: Saml forbrugsvarer
-
Hovedkomponenter:
- Arduino (jeg brugte en UNO)
- String af individuelt adresserbare lysdioder (jeg brugte link)
- Trykknap (jeg brugte link)
- Printkort (PCB) eller brødbræt
-
Strømforsyning (jeg brugte to separate strømforsyninger, du slipper måske med en, hvis du er kreativ)
- 5V 3A til LED'er
- 9V 1A til Arduino
-
Ramme:
- Elektronikhus (jeg modificerede en trælampe fra Goodwill)
- LED -hus (jeg ændrede dit standardvægur og borede huller ved hjælp af minutidentifikatorerne som hulmarkeringer. Brug et træur, hvis det er muligt for at gøre boringen lettere.)
- Knaphus (jeg brugte et albue PVC -rør)
-
Værktøjer / andre materialer:
- Reserve ledninger til dit kredsløb
- 10K (pull-down modstand til switch) og 470 ohm (til datakabel på LED'er) modstande
- Bor til at skabe huller til at rumme dine lysdioder og til at lave de nødvendige huller i din armatur for at føre ledninger igennem
- Loddejern til lodning af dit kredsløb til et printkort
- Varm limpistol til fastgørelse af lysdioderne til din armatur
- Velcro eller nogle midler til at sikre rammen sammen
- Pakninger er valgfri til huller, der er boret for, at ledninger kan passere igennem
Trin 2: Upload kode
Sørg for at downloade og tilføje biblioteket "FastLED"
Kernen i koden (void loop) består af to tilstande: trykknap høj (Afslut spil) og trykknap lav (Afspilning). Når brugeren trykker på knappen, sammenlignes LED -adressen, lyset blev stoppet på, med adressen på den midterste LED. Hvis de ikke er de samme, blinker alle lysene rødt to gange, og det aktuelle niveau genstarter. Hvis de er ens, kører cylon (FastLED biblioteks script) to gange, sværhedsgraden stiger, og afspilningen genoptages. Når spilleren slår det sidste niveau, kører cylon ottende gange, og spillet genstarter på niveau 1.
// Cyklon spil
#include "FastLED.h" // op til 50 #define NUM_LEDS 40 #define CENTER_LED 21 #define DATA_PIN 7 #define LED_TYPE WS2811 #define COLOR_ORDER RGB // interval 0-64 #define BRIGHTNESS 50 // Definition af sværhedsgrader #define NEM 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 // Startproblemer int sværhedsgrad = 1; // Definer matrixen af leds CRGB leds [NUM_LEDS]; // Vandt spilleren denne runde? Dette mærke bruges til vanskelighedsparametre. bool wonThisRound = false; // Startplacering af cykellampen int LEDaddress = 0; // Kører spillet? bool Afspilning = sandt; // Er dette den første sejr? bool CycleEnded = true; // Knapdetaljer const int buttonPin = 9; int buttonState = 0; // Initialiser led -biblioteket og arduino -funktioner tomrumsopsætning () {FastLED.addLeds (leds, NUM_LEDS); FastLED.setBrightness (BRIGHTNESS); pinMode (buttonPin, INPUT); Serial.begin (9600); } // Kødet og kartoflerne // To tilstande - Afspilning og afslutning af tomrumsløkken () {// END GAME buttonState = digitalRead (buttonPin); hvis (buttonState == HIGH) {Playing = false; // Bruger har trykket på knappen, og lysdioden er stoppet på den vindende adresse. for (int i = 0; i <NUM_LEDS; i ++) {leds = CRGB:: Sort; } leds [CENTER_LED] = CRGB:: Rød; leds [LEDaddress] = CRGB:: Grøn; FastLED.show (); hvis (CycleEnded = true) {int diff = abs (CENTER_LED - LEDadresse); // Finder afstanden mellem den tændte LED og den midterste LED, hvis (diff == 0) {wonThisRound = true; // Spilleren har med succes slået niveauet hvis (vanskeligheder! = MISSION_IMPOSSIBLE) {for (int i = 0; i <2; i ++) {cylon (); }} hvis (vanskeligheder == MISSION_IMPOSSIBLE) {for (int i = 0; i <8; i ++) {cylon (); } sværhedsgrad = 0; } øge vanskeligheden (); wonThisRound = falsk; } ellers {forsinkelse (1000); for (int i = 0; i <2; i ++) {flash (); }} CycleEnded = false; } LEDadresse = 0; forsinkelse (250); buttonState = digitalRead (buttonPin); hvis (buttonState == LOW) {Playing = true; }} // PLAYING if (Playing) {for (int i = 0; i <NUM_LEDS; i ++) {leds = CRGB:: Black; // Slukker for alle leds} leds [CENTER_LED] = CRGB:: Rød; // Indstiller centerled -farve til grønne lysdioder [LEDadresse] = CRGB:: Grøn; // Sætter cylindret led -farve til rød FastLED.show (); // Initialiserer lyscyklus LEDaddress ++; // Indstiller lyscyklus til en led ad gangen, hvis (LEDaddress == NUM_LEDS) {LEDaddress = 0; } forsinkelse (getTime (vanskeligheder)); buttonState = digitalRead (buttonPin); hvis (buttonState == HIGH) {Playing = false; CycleEnded = true; }}} // Niveauparametre int getTime (int diff) // Returnerer tidsforsinkelse for LED -bevægelsesbase på vanskeligheder {int timeValue = 0; switch (diff) {case EASY: timeValue = 100; pause; sag MEDIUM: timeValue = 80; pause; sag HARD: timeValue = 60; pause; sag ON_SPEED: timeValue = 40; pause; sag SONIC_SPEED: timeValue = 30; pause; sag ROCKET_SPEED: timeValue = 20; pause; sag LIGHT_SPEED: timeValue = 13; pause; sag MISSION_IMPOSSIBLE: timeValue = 7; } return timeValue; // Returner forsinkelsesbeløbet} // Vinderproblemer øger parametre void increaseDif vanskelighed () {hvis (vanskeligheder! = MISSION_IMPOSSIBLE && wonThisRound) {vanskeligheder ++; }} // Tabt LED Vis ugyldig flash () {fill_solid (leds, NUM_LEDS, CRGB:: Rød); FastLED.show (); forsinkelse (500); fill_solid (lysdioder, NUM_LEDS, CRGB:: sort); FastLED.show (); forsinkelse (500); } // Vundet 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--) {// Indstil den første led til røde lysdioder = CHSV (hue ++, 255, 255); // Vis lysdioderne FastLED.show (); // nu hvor vi har vist lysdioderne, skal du nulstille i'th førte til sort // leds = CRGB:: Sort; fadeall (); // Vent lidt, før vi går rundt og gør det igen forsinkelse (10); }}
Trin 3: Installer i Fixture
Jeg vil ikke gå i detaljer i dette afsnit. Der er tusind forskellige måder at gå om denne del på, og jeg synes, du skal være kreativ for at få det til at se ud, som du kan lide det. Når det er sagt, var uret ret bekvemt at bruge til at huse LED'erne, da det havde små indikatorer, som jeg kunne bruge som boremærker. Glassdækslet lader mig også bruge dette som bord.
Velcroen var også meget nyttig til at fastgøre LED -armaturet til elektronikhuset. Jeg brugte også velcro på Arduino. Dette gjorde det meget bekvemt at trække Arduino ud, hvis jeg nogensinde vil ændre koden.
Anbefalede:
Arduino bil omvendt parkering alarmsystem - Trin for trin: 4 trin
Arduino bil omvendt parkering alarmsystem. Trin for trin: I dette projekt vil jeg designe en simpel Arduino bil omvendt parkeringssensorkreds ved hjælp af Arduino UNO og HC-SR04 ultralydssensor. Dette Arduino -baserede bilomvendt alarmsystem kan bruges til en autonom navigation, robotafstand og andre rækkevidde
Trin for trin pc -bygning: 9 trin
Trin for trin PC Building: Supplies: Hardware: MotherboardCPU & CPU -køler PSU (strømforsyningsenhed) Opbevaring (HDD/SSD) RAMGPU (ikke påkrævet) CaseTools: Skruetrækker ESD -armbånd/mathermal pasta m/applikator
Tre højttalerkredsløb -- Trin-for-trin vejledning: 3 trin
Tre højttalerkredsløb || Trin-for-trin vejledning: Højttalerkredsløb styrker lydsignalerne, der modtages fra miljøet til MIC og sender det til højttaleren, hvorfra forstærket lyd produceres. Her vil jeg vise dig tre forskellige måder at lave dette højttalerkredsløb på:
Akustisk levitation med Arduino Uno trin for trin (8 trin): 8 trin
Akustisk levitation med Arduino Uno Step-by Step (8-trin): ultralyds lydtransducere L298N Dc kvindelig adapter strømforsyning med en han-DC-pin Arduino UNOBreadboard Sådan fungerer det: Først uploader du kode til Arduino Uno (det er en mikrokontroller udstyret med digital og analoge porte til konvertering af kode (C ++)
Cyklon (Arduino LED -spil): 6 trin (med billeder)
Cyklon (Arduino LED -spil): I denne vejledning vil jeg lære dig, hvordan du opretter et LED -spil med meget lidt kode eller erfaring! Jeg havde denne idé i et stykke tid og kom endelig til at skabe den. Det er et sjovt spil, der minder os alle om arkadespil. Der er andre tutorials til