Sisällysluettelo:
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-23 14:42
Tämän projektin tarkoituksena oli luoda yksinkertainen peli Arduinolla, joka olisi interaktiivinen ja viihdyttävä lapsille. Muistan, että Cyclone -arcade -peli oli yksi suosikki arcade -peleistäni nuorempana, joten päätin toistaa sen. Tämä on hyvin yksinkertainen projekti, joka koostuu Arduinosta, merkkijonosta yksilöllisesti osoitettavia LED -valoja ja painikkeesta.
Pelin tavoitteena on pysäyttää pyöräilyvalo, kun se saavuttaa ilmoitetun (punaisen) LED -valon. Jos onnistuu, vaikeustaso kasvaa. Jos epäonnistuu, valosykli käynnistyy uudelleen nykyisellä vaikeustasolla.
Tämä ohje oli valtava resurssi koodaukseni ytimelle.
Vaihe 1: Kerää tarvikkeita
-
Pääkomponentit:
- Arduino (käytin UNO: ta)
- Jono yksilöllisesti osoitettavia LED -valoja (käytin linkkiä)
- Painike (käytin linkkiä)
- Painettu piirilevy (PCB) tai leipälevy
-
Virtalähde (käytin kahta erillistä virtalähdettä, saatat päästä eroon yhdestä, jos olet luova)
- 5V 3A LEDeille
- 9V 1A Arduinolle
-
Kehys:
- Elektroniikkakotelo (muutin Goodwillin puulamppulamppua)
- LED -kotelo (muutin tavallista seinäkelloa ja porasin reikiä käyttämällä minuutti -tunnisteita reikämerkintöinä. Käytä puukelloa, jos mahdollista porauksen helpottamiseksi.)
- Nappikotelo (käytin kyynärpää PVC -putkea)
-
Työkalut / muut materiaalit:
- Varajohdot piirillesi
- 10K (alasvetovastus kytkimelle) ja 470 ohmia (LED-valojen datajohdolle) vastukset
- Poraa reikien luomiseen LEDien sijoittamiseksi ja tarvittavien reikien tekemiseen johtojen johtamiseksi
- Juotosrauta piirin juottamiseen piirilevyyn
- Kuuma liimapistooli LEDien kiinnittämiseen kiinnikkeeseesi
- Tarranauha tai jokin keino kehyksen kiinnittämiseksi yhteen
- Tiivisteet valinnaiset johtojen poraamiseen tarkoitettuihin reikiin
Vaihe 2: Lähetä koodi
Varmista, että lataat ja lisäät FastLED -kirjaston
Koodin ydin (mitätön silmukka) koostuu kahdesta tilasta: painike korkea (Lopeta peli) ja painike matala (Toisto). Kun käyttäjä on painanut painiketta, LED -osoitetta, johon valo sammutettiin, verrataan keskimmäisen LED -osoitteen osoitteeseen. Jos ne eivät ole samat, kaikki valot vilkkuvat punaisena kahdesti ja nykyinen taso käynnistyy uudelleen. Jos ne ovat samat, cylon (FastLED -kirjastoskripti) suoritetaan kahdesti, vaikeustaso kasvaa ja toisto jatkuu. Kun pelaaja voittaa viimeisen tason, cylon juoksee kahdeksannen kerran ja peli käynnistyy uudelleen tasolta 1.
// Cyclone Game
#include "FastLED.h" // enintään 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 // vaikeustasojen määritelmä #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 // Aloitusvaikeus int vaikeus = 1; // Määritä ledien ryhmä CRGB -ledit [NUM_LEDS]; // Voittiko pelaaja tämän kierroksen? Tätä tagia käytetään vaikeusparametreihin. bool wonThisRound = epätosi; // Pyöräilyvalon lähtöpaikka int LED -osoite = 0; // Onko peli käynnissä? bool Playing = totta; // Onko tämä ensimmäinen voitto? bool CycleEnded = tosi; // Painikkeiden tiedot const int buttonPin = 9; int -painike Tila = 0; // Alusta led -kirjasto ja arduino -toiminnot void setup () {FastLED.addLeds (ledit, NUM_LEDS); FastLED.setBrightness (KIRKKAUS); pinMode (buttonPin, INPUT); Sarja.alku (9600); } // Liha ja perunat // Kaksi tilaa - Playing ja End Game void loop () {// END GAME buttonState = digitalRead (buttonPin); if (buttonState == HIGH) {Toistetaan = false; // Käyttäjä on painanut painiketta, ja LED on pysähtynyt voittajaosoitteessa. for (int i = 0; i <NUM_LEDS; i ++) {leds = CRGB:: Black; } ledit [CENTER_LED] = CRGB:: Punainen; ledit [LED -osoite] = CRGB:: Vihreä; FastLED.show (); if (CycleEnded = true) {int diff = abs (CENTER_LED - LED -osoite); // Etsii valaistun ledin ja keskijohtimen välisen etäisyyden, jos (diff == 0) {wonThisRound = true; // Pelaaja voitti tason onnistuneesti, jos (vaikeus! = MISSION_IMPOSSIBLE) {for (int i = 0; i <2; i ++) {cylon (); }} jos (vaikeus == MISSION_IMPOSSIBLE) {for (int i = 0; i <8; i ++) {cylon (); } vaikeus = 0; } lisäysVaikeus (); wonThisRound = epätosi; } else {delay (1000); for (int i = 0; i <2; i ++) {flash (); }} CycleEnded = false; } LED -osoite = 0; viive (250); buttonState = digitalRead (buttonPin); if (buttonState == LOW) {Toistetaan = totta; }} // PELAA, jos (toistetaan) {for (int i = 0; i <NUM_LEDS; i ++) {leds = CRGB:: Black; // Sammuttaa kaikki ledit} ledit [CENTER_LED] = CRGB:: Punainen; // Asettaa keskijohdon värin vihreiksi lediksi [LED -osoite] = CRGB:: Vihreä; // Asettaa sylinterin led -värin punaiseksi FastLED.show (); // Alustaa valosyklin LED -osoite ++; // Asettaa valosyklin yhdeksi lediksi kerrallaan, jos (LED -osoite == NUM_LEDS) {LED -osoite = 0; } viive (getTime (vaikeus)); buttonState = digitalRead (buttonPin); if (buttonState == HIGH) {Toistetaan = false; CycleEnded = tosi; }}} // Tasoparametrit int getTime (int diff) // Palauttaa aikaviiveen johtamalle liikekannalle vaikeudessa {int timeValue = 0; kytkin (diff) {tapaus EASY: timeValue = 100; tauko; tapaus MEDIUM: timeValue = 80; tauko; tapaus HARD: timeValue = 60; tauko; tapaus ON_SPEED: timeValue = 40; tauko; tapaus SONIC_SPEED: timeValue = 30; tauko; tapaus ROCKET_SPEED: timeValue = 20; tauko; tapaus LIGHT_SPEED: timeValue = 13; tauko; tapaus MISSION_IMPOSSIBLE: timeValue = 7; } return timeValue; // Palauta viivästysmäärä} // Voittamisvaikeuksien lisäysparametrit void IncreDiflengy () {if (vaikeus! = MISSION_IMPOSSIBLE && wonThisRound) {vaikeus ++; }} // Lost LED Show void flash () {fill_solid (ledit, NUM_LEDS, CRGB:: Red); FastLED.show (); viive (500); fill_solid (ledit, NUM_LEDS, CRGB:: musta); FastLED.show (); viive (500); } // Won LED Show void fadeall () {for (int i = 0; i <NUM_LEDS; i ++) {leds .nscale8 (250); }} void cylon () {staattinen uint8_t sävy = 0; Serial.print ("x"); // Liu'uta lediä ensin yhteen suuntaan (int i = 0; i = 0; i--) {// Aseta ensimmäinen led punaisiksi lediksi = CHSV (sävy ++, 255, 255); // Näytä ledit FastLED.show (); // nyt kun olemme osoittaneet ledit, nollaa ensimmäinen led mustaksi // ledit = CRGB:: Musta; fadeall (); // Odota vähän ennen kuin kiertämme ja teemme sen uudelleen viiveellä (10); }}
Vaihe 3: Asenna Fixtureen
En aio mennä yksityiskohtiin tässä osiossa. Tässä osassa on tuhansia eri tapoja edetä, ja mielestäni sinun pitäisi olla luova, jotta se näyttää siltä, mistä pidät. Tästä huolimatta kello oli melko kätevä käyttää LED -valojen asentamiseen, koska sillä oli minuutti -indikaattoreita, joita pystyin käyttämään porausmerkintöinä. Lisäksi lasikansi antaa minulle mahdollisuuden käyttää tätä pöytänä.
Tarranauha oli erittäin hyödyllinen myös LED -valaisimen kiinnittämiseksi elektroniikkakoteloon. Käytin myös tarranauhaa Arduinossa. Tämä teki erittäin käteväksi Arduinon vetämisen ulos, jos haluan koskaan muuttaa koodia.
Suositeltava:
FPGA Cyclone IV DueProLogic - Painike ja LED: 5 vaihetta
FPGA Cyclone IV DueProLogic - Painike ja LED: Tässä opetusohjelmassa aiomme käyttää FPGA: ta ulkoisen LED -piirin ohjaamiseen. Toteutamme seuraavat tehtävät (A) Käytä FPGA Cyclone IV DuePrologicin painikkeita LED: in ohjaamiseen. (B) Salaman merkkivalo palaa & pois käytöstä ajoittainVideoesittelylaboratorio
Arduino Cyclone Game: 5 vaihetta (kuvilla)
Arduino Cyclone Game: En ole koskaan pelannut todellista syklonipelipeliä, mutta pidän ajatuksesta pelata reaktioaikamme kanssa. Se koostuu 32 LEDistä, jotka muodostavat ympyrän, LEDit syttyvät yksitellen led -jahtajana. Tavoitteena on painaa nappia
Cyclone (Arduino LED Game): 6 vaihetta (kuvilla)
Cyclone (Arduino LED Game): Tässä opetusohjelmassa opetan sinulle, kuinka luoda LED -peli, jossa on hyvin vähän koodia tai kokemusta! Minulla oli tämä idea jonkin aikaa ja lopulta ryhdyin sen luomiseen. Se on hauska peli, joka muistuttaa meitä kaikkia arcade -pelejä. On myös muita opetusohjelmia
Arduino Cyclone Arcade Game: 6 vaihetta
Arduino Cyclone Arcade -peli: Blinky flashy lights! Arduino! Peli! Mitä muuta tarvitsee sanoa? Tämä peli perustuu Cyclone -arcade -peliin, jossa pelaaja yrittää estää ledin vierityksen ympyrän ympäri tietyllä paikalla
Arduino LED Laser Arcade Game: 3 vaihetta (kuvilla)
Arduino LED -laser -arcadepeli: Tässä opastettavassa esittelen, kuinka tehdä laser -arcade -peli LED- ja valoanturien avulla. Koodi on mukana, eikä sen rakentamiseen tarvita paljon osia. En kerro sinulle, miten rakennan kotelon, sinun on tehtävä se itse! T