2025 Autor: John Day | [email protected]. Viimati modifitseeritud: 2025-01-23 14:40
Selle projekti eesmärk oli luua Arduino abil lihtne mäng, mis oleks lastele interaktiivne ja meelelahutuslik. Mäletan, et Cyclone'i arkaadmäng oli nooremana üks mu lemmikmänge, nii et otsustasin seda korrata. See on väga lihtne projekt, mis koosneb Arduino'st, individuaalselt adresseeritavate LED -ide stringist ja nupust.
Mängu eesmärk on peatada jalgrattatuli, kui see jõuab näidatud (punase) valgusdioodini. Kui see õnnestub, suureneb raskusaste. Kui see ebaõnnestub, algab valgustsükkel uuesti praegusel raskusastmel.
See juhend oli minu kodeerimise tuuma jaoks tohutu ressurss.
Samm: koguge tarvikuid
-
Peamised komponendid:
- Arduino (ma kasutasin UNO -d)
- Individuaalselt adresseeritavate LED -ide string (kasutasin linki)
- Vajutage nuppu (kasutasin linki)
- Trükkplaat (PCB) või leivaplaat
-
Toiteallikas (kasutasin kahte eraldi toiteallikat, võite loovuse korral ühest pääseda)
- 5V 3A LED -ide jaoks
- 9V 1A Arduino jaoks
-
Raamistik:
- Elektroonika korpus (muutsin firmaväärtusest puidust lambivalgustit)
- LED -korpus (muutsin teie tavalist seinakella ja puurisin auke, kasutades aukude märgistustena minuti identifikaatoreid. Puurimise hõlbustamiseks kasutage võimaluse korral puidust kella.)
- Nuppude korpus (kasutasin küünarnukist PVC toru)
-
Tööriistad / muud materjalid:
- Varundage oma vooluahela juhtmestik
- 10K (lüliti allatõmmatav takisti) ja 470 oomi (andmesidejuhtmete puhul LED-idel) takistid
- Puurige aukude loomiseks oma LED -ide paigutamiseks ja vajalike aukude tegemiseks oma seadmesse juhtmete läbimiseks
- Jootekolb ahela jootmiseks trükkplaadile
- Kuum liimipüstol LED -de kinnitamiseks teie seadme külge
- Velcro või mõni vahend raami kokku kinnitamiseks
- Tihendid valikulised juhtmete läbimiseks puuritud aukude jaoks
2. toiming: koodi üleslaadimine
Laadige kindlasti alla ja lisage "FastLED" kogu
Koodi tuum (tühine tsükkel) koosneb kahest olekust: surunupp kõrgel (Lõpeta mäng) ja nupp madalal (Mängimine). Kui kasutaja nupule vajutab, võrreldakse LED -aadressi, millel tuli peatati, ja keskmise LED -i aadressi. Kui need pole samad, vilguvad kõik tuled kaks korda punaselt ja praegune tase taaskäivitub. Kui need on samad, käivitatakse cylon (FastLED raamatukogu skript) kaks korda, raskusaste suureneb ja mängimine jätkub. Kui mängija alistab viimase taseme, jookseb cylon kaheksandat korda ja mäng algab uuesti tasemelt 1.
// Tsüklonimäng
#include "FastLED.h" // kuni 50 #define NUM_LEDS 40 #define CENTER_LED 21 #define DATA_PIN 7 #define LED_TYPE WS2811 #define COLOR_ORDER RGB // vahemik 0-64 #define BRIGHTNESS 50 // raskusastmete määratlus #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 // Alustamisraskused int raskus = 1; // Määra ledide massiiv CRGB LEDid [NUM_LEDS]; // Kas mängija võitis selle vooru? Seda märgendit kasutatakse raskusparameetrite jaoks. bool wonThisRound = vale; // Jalgrattatule lähtekoht int LEDaddress = 0; // Kas mäng töötab? bool Mängimine = tõsi; // Kas see on esimene võit? bool CycleEnded = tõsi; // Nupu üksikasjad const int nuppPin = 9; int buttonState = 0; // Initsialiseeri led -teegi ja arduino funktsioonid void setup () {FastLED.addLeds (ledid, NUM_LEDS); FastLED.setBrightness (Heledus); pinMode (buttonPin, INPUT); Seriaalne algus (9600); } // Liha ja kartul // Kaks režiimi - mängimine ja mängu lõpp void loop () {// END GAME buttonState = digitalRead (buttonPin); if (buttonState == HIGH) {Mängib = false; // Kasutaja on nuppu vajutanud ja valgusdiood on võitja aadressil peatunud. jaoks (int i = 0; i <NUM_LEDS; i ++) {leds = CRGB:: Black; } LEDid [CENTER_LED] = CRGB:: Punane; ledid [LEDaddress] = CRGB:: Roheline; FastLED.show (); if (CycleEnded = true) {int diff = abs (CENTER_LED - LED -aadress); // Leiab kauguse valgustatud LED -i ja keskjoone vahel, kui (diff == 0) {wonThisRound = true; // Mängija edukalt ületas taseme, kui (raskus! = MISSION_IMPOSSIBLE) {for (int i = 0; i <2; i ++) {cylon (); }} kui (raskusaste == MISSION_IMPOSSIBLE) {jaoks (int i = 0; i <8; i ++) {cylon (); } raskusaste = 0; } suurenemineKoormus (); wonThisRound = vale; } muu {viivitus (1000); jaoks (int i = 0; i <2; i ++) {flash (); }} CycleEnded = vale; } LED -aadress = 0; viivitus (250); buttonState = digitalRead (buttonPin); if (buttonState == LOW) {Mängib = true; }} // MÄNGIMINE kui (Mängib) {for (int i = 0; i <NUM_LEDS; i ++) {leds = CRGB:: Black; // Lülitab kõik ledid välja} LEDid [CENTER_LED] = CRGB:: Red; // Seab keskjoone värvi rohelisteks LED -ideks [LEDaddress] = CRGB:: Green; // Seab silindri ledi värvi punaseks FastLED.show (); // Initsialiseerib valgustsükli LED -aadress ++; // Seab valgustsükli ühele ledile korraga, kui (LEDaddress == NUM_LEDS) {LEDaddress = 0; } viivitus (getTime (raskus)); buttonState = digitalRead (buttonPin); if (buttonState == HIGH) {Mängib = false; CycleEnded = tõsi; }}} // Taseparameetrid int getTime (int diff) // Tagastab ajaviite LED -liikumise baasile raskuse {int timeValue = 0; lüliti (dif) {case EASY: timeValue = 100; murda; juhtum MEDIUM: timeValue = 80; murda; juhtum HARD: timeValue = 60; murda; juhtum ON_SPEED: timeValue = 40; murda; juhtum SONIC_SPEED: timeValue = 30; murda; juhtum ROCKET_SPEED: timeValue = 20; murda; juhtum LIGHT_SPEED: timeValue = 13; murda; juhtum MISSION_IMPOSSIBLE: timeValue = 7; } return timeValue; // Tagasta viivituse summa} // Võitmisraskuse suurendamise parameetrid void padidDifrighty () {if (raskus! = MISSION_IMPOSSIBLE && wonThisRound) {raskus ++; }} // Lost LED Show void flash () {fill_solid (ledid, NUM_LEDS, CRGB:: Red); FastLED.show (); viivitus (500); fill_solid (ledid, NUM_LEDS, CRGB:: must); FastLED.show (); viivitus (500); } // Won LED Show void fadeall () {for (int i = 0; i <NUM_LEDS; i ++) {leds .nscale8 (250); }} tühine silinder () {staatiline uint8_t toon = 0; Serial.print ("x"); // Lükake esmalt LED-i ühes suunas (int i = 0; i = 0; i--) {// Määrake i-nda LED-i punased LED-id = CHSV (toon ++, 255, 255); // Näita LED -e FastLED.show (); // nüüd, kui oleme LED -e näidanud, lähtestage esimene led mustaks // leds = CRGB:: Black; fadeall (); // Oota natuke, enne kui ringi teeme ja seda uuesti tegema viivitame (10); }}
Samm: paigaldage kinnitusseadmesse
Ma ei hakka selles osas üksikasjadesse laskuma. Selle osa jaoks on tuhat erinevat viisi ja ma arvan, et peaksite olema loominguline, et see näeks välja nii, nagu teile meeldib. Nagu öeldud, oli kella LED -de paigutamiseks üsna mugav kasutada, kuna sellel olid minutinäitajad, mida sain kasutada puurimärgistustena. Samuti võimaldab klaaskate seda kasutada lauaks.
Velcro oli väga kasulik ka LED -i kinnitamiseks elektroonika korpuse külge. Kasutasin Arduino peal ka takjakinnitust. See muutis Arduino väljatõmbamise väga mugavaks, kui tahan kunagi koodi muuta.
Soovitan:
FPGA Cyclone IV DueProLogic Controls Raspberry Pi kaamera: 5 sammu
FPGA Cyclone IV DueProLogic Controls Raspberry Pi kaamera: Vaatamata FPGA DueProLogic'ile on ametlikult loodud Arduino jaoks, muudame FPGA ja Raspberry Pi 4B suheldavaks. Selles juhendis on rakendatud kolm ülesannet: (A) Vajutage samaaegselt kahte nuppu FPGA nurga pööramiseks
FPGA Cyclone IV DueProLogic - nupp ja LED: 5 sammu
FPGA Cyclone IV DueProLogic - nupp ja LED: selles õpetuses kasutame välise LED -ahela juhtimiseks FPGA -d. Me rakendame järgmisi ülesandeid (A) Kasutage LED -i juhtimiseks FPGA Cyclone IV DuePrologic nuppe. (B) Välklamp põleb & perioodiliselt välja lülitatud Video demolabor
FPGA Cyclone IV DueProLogic juhib servomootorit: 4 sammu
FPGA Cyclone IV DueProLogic juhib servomootorit: selles õpetuses kirjutame servomootori juhtimiseks Verilogi koodi. Servo SG-90 toodab Waveshare. Servomootori ostmisel võite saada andmelehe, mis loetleb tööpinge, maksimaalse pöördemomendi ja kavandatava Pu
Vertikaalne Bartop Arcade integreeritud PIXEL LED -ekraaniga: 11 sammu (piltidega)
Vertikaalne Bartop Arcade koos integreeritud PIXEL LED -ekraaniga: **** Uuendatud uue tarkvaraga juulis 2019, üksikasjad siin ****** Bartop -arkaad, millel on ainulaadne omadus, mida LED -maatriksite telk muudab valitud mänguga sobivaks. Kapi külgede tegelaskujundus on laserlõikega sissekanded ja mitte kleepuvad
LED -riba Atari Pong Arcade Machine: 8 sammu
LED -riba Atari Pong Arcade Machine: Minu nimi on Gabriel Podevin ja see on minu esimene intructable. Olen praegu 16 -aastane keskkooliõpilane, kes armastab luua ja ehitada asju, olles samal ajal väga huvitatud elektroonikast, robootikast, vooluringidest ja programmeerimisest. Loodan, et saate f