2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-23 15:04
Intenția acestui proiect a fost de a crea un joc simplu folosind un Arduino care să fie interactiv și distractiv pentru copii. Îmi amintesc că jocul arcade Cyclone era unul dintre jocurile mele arcade preferate când eram mai tânăr, așa că am decis să îl reproduc. Acesta este un proiect foarte simplu care constă dintr-un Arduino, un șir de LED-uri adresabile individual și un buton.
Scopul jocului este de a opri lumina de ciclism când atinge LED-ul indicat (roșu). Dacă aveți succes, nivelul de dificultate va crește. Dacă nu reușește, ciclul de lumină va reporni la nivelul curent de dificultate.
Acest instructable a fost o resursă imensă pentru nucleul codării mele.
Pasul 1: Strângeți consumabilele
-
Componentele principale:
- Arduino (am folosit un UNO)
- Șir de LED-uri adresabile individual (am folosit link)
- Buton de apăsare (am folosit link)
- Placă de circuite imprimate (PCB) sau panou de testare
-
Sursa de alimentare (am folosit două surse de alimentare separate, s-ar putea să scapi de una dacă ești creativ)
- 5V 3A pentru LED-uri
- 9V 1A pentru Arduino
-
Cadru:
- Carcasă electronică (am modificat un corp de iluminat din lemn din Goodwill)
- Carcasă cu LED (V-am modificat ceasul de perete standard și găurile găurite folosind identificatorii de minute ca marcaje ale găurilor. Folosiți un ceas din lemn, dacă este posibil, pentru a ușura găurirea.)
- Carcasă buton (am folosit o țeavă din cot cot)
-
Unelte / Alte materiale:
- Cablare de rezervă pentru circuitul dvs.
- Rezistențe de 10K (rezistență pull-down pentru comutator) și 470 ohm (pentru firul de date pe LED-uri)
- Găuri pentru a crea găuri pentru adăpostirea LED-urilor dvs. și pentru a face orificiile necesare în dispozitivul dvs. pentru a trece firele
- Fier de lipit pentru lipirea circuitului pe un PCB
- Pistol de lipit fierbinte pentru fixarea LED-urilor la corpul dvs.
- Velcro sau unele mijloace de securizare a cadrului împreună
- Garnituri opționale pentru găurile forate pentru trecerea firelor
Pasul 2: Încărcați codul
Asigurați-vă că descărcați și adăugați biblioteca „FastLED”
Nucleul codului (bucla nulă) este alcătuit din două stări: apăsarea butonului înalt (Încheierea jocului) și apăsarea butonului joasă (Joc). Odată ce utilizatorul apasă butonul, adresa LED-ului pe care a fost oprită lumina este comparată cu adresa LED-ului central. Dacă nu sunt la fel, toate luminile clipesc roșu de două ori și nivelul curent repornește. Dacă sunt la fel, cylon (scriptul de bibliotecă FastLED) rulează de două ori, nivelul de dificultate crește și redarea se reia. Odată ce jucătorul bate ultimul nivel, cylon rulează de opt ori și jocul repornește la nivelul 1.
// Joc de ciclon
#includeți "FastLED.h" // până la 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 LUMINOSITATE 50 // Definirea nivelurilor de dificultate #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 // Dificultate inițială int difficult = 1; // Definiți matricea de leduri CRGB [NUM_LEDS]; // A câștigat jucătorul această rundă? Această etichetă este utilizată pentru parametrii de dificultate. bool wonThisRound = false; // Locația de pornire a lămpii de ciclism int LEDaddress = 0; // Jocul rulează? bool Joc = adevărat; // Este prima victorie? bool CycleEnded = adevărat; // Detalii buton const int buttonPin = 9; int buttonState = 0; // Inițializați funcțiile bibliotecii led și arduino void setup () {FastLED.addLeds (led-uri, NUM_LEDS); FastLED.setBrightness (LUMINOSITATE); pinMode (buttonPin, INPUT); Serial.begin (9600); } // Carnea și cartofii // Două moduri - Jocul și sfârșitul jocului bucla nulă () {// ÎNCHEI JOC butonulStat = digitalRead (buttonPin); if (buttonState == HIGH) {Redare = false; // Utilizatorul a apăsat butonul, iar LED-ul s-a oprit pe adresa câștigătoare. for (int i = 0; i <NUM_LEDS; i ++) {leds = CRGB:: Black; } leduri [CENTER_LED] = CRGB:: Red; leduri [LEDaddress] = CRGB:: Verde; FastLED.show (); if (CycleEnded = true) {int diff = abs (CENTER_LED - LEDaddress); // Găsește distanța dintre ledul aprins și ledul central dacă (diff == 0) {wonThisRound = true; // Jucătorul a reușit să bată nivelul dacă (dificultate! = MISSION_IMPOSSIBLE) {for (int i = 0; i <2; i ++) {cylon (); }} if (dificultate == MISSION_IMPOSSIBLE) {for (int i = 0; i <8; i ++) {cylon (); } dificultate = 0; } mărireDificultate (); wonThisRound = false; } else {delay (1000); for (int i = 0; i <2; i ++) {flash (); }} CycleEnded = false; } LEDaddress = 0; întârziere (250); buttonState = digitalRead (buttonPin); if (buttonState == LOW) {Redare = true; }} // PLAYING if (Playing) {for (int i = 0; i <NUM_LEDS; i ++) {leds = CRGB:: Black; // Oprește toate ledurile} leduri [CENTER_LED] = CRGB:: Red; // Setează culoarea ledului central pe ledurile verzi [LEDaddress] = CRGB:: Green; // Setează culoarea led-ului cilindru la roșu FastLED.show (); // Inițializează LED-ul ciclului de lumină ++; // Setează ciclul de lumină la un led la un moment dat dacă (LEDaddress == NUM_LEDS) {LEDaddress = 0; } întârziere (getTime (dificultate)); buttonState = digitalRead (buttonPin); if (buttonState == HIGH) {Redare = false; CycleEnded = adevărat; }}} // Parametri de nivel int getTime (int diff) // Returnează întârzierea timpului pentru mișcarea bazată pe dificultate {int timeValue = 0; switch (diff) {caz EASY: timeValue = 100; pauză; caz MEDIU: timeValue = 80; pauză; caz HARD: timeValue = 60; pauză; caz ON_SPEED: timeValue = 40; pauză; caz SONIC_SPEED: timeValue = 30; pauză; caz ROCKET_SPEED: timeValue = 20; pauză; caz LIGHT_SPEED: timeValue = 13; pauză; caz MISSION_IMPOSSIBLE: timeValue = 7; } return timeValue; // Returnează suma de întârziere} // Câștigarea dificultății crește parametrii void increaseDifficulty () {if (dificultate! = MISSION_IMPOSSIBLE && wonThisRound) {difficult ++; }} // Lost LED Show void flash () {fill_solid (leds, NUM_LEDS, CRGB:: Red); FastLED.show (); întârziere (500); fill_solid (led-uri, NUM_LEDS, CRGB:: Negru); FastLED.show (); întârziere (500); } // Won LED Show void fadeall () {for (int i = 0; i <NUM_LEDS; i ++) {leds .nscale8 (250); }} void cylon () {static uint8_t hue = 0; Serial.print ("x"); // Glisați mai întâi ledul într-o direcție pentru (int i = 0; i = 0; i--) {// Setați ledul i'th la leduri roșii = CHSV (nuanță ++, 255, 255); // Afișați ledurile FastLED.show (); // acum că am arătat led-urile, resetați ledul i'th la negru // leds = CRGB:: Black; fadeall (); // Așteptați puțin înainte de a face o buclă și faceți-o din nou întârziere (10); }}
Pasul 3: Instalați în dispozitiv
Nu voi intra în detalii în această secțiune. Există o mie de moduri diferite de a parcurge această parte și cred că ar trebui să fii creativ pentru a face să arate cum îți place. Acestea fiind spuse, ceasul a fost destul de convenabil de utilizat pentru adăpostirea LED-urilor, deoarece avea indicatori de minute pe care i-am putut folosi ca marcaje de foraj. De asemenea, capacul de sticlă îmi permite, de asemenea, să folosesc acest lucru ca masă.
Velcro-ul a fost foarte util și pentru fixarea corpului cu LED-uri la corpul electronic al carcasei. Am folosit și velcro pe Arduino. Acest lucru a făcut-o foarte convenabilă pentru extragerea Arduino dacă vreodată vreau să modific codul.
Recomandat:
Joc Ciclon Arduino: 5 pași (cu imagini)
Joc Arduino Cyclone: Nu am jucat niciodată jocul arcade adevărat ciclon, dar îmi place ideea de a juca cu timpul nostru de reacție. Am proiectat un joc miniaturizat. Acesta constă în 32 de LED-uri care formează un cerc, LED-urile se aprind unul câte unul ca un led chaser. Scopul este de a apăsa un butto
Joc Simon - Joc distractiv !: 5 pași
Joc Simon - Joc distractiv !: Referință: Aici După un weekend lung, trebuie să fii cu adevărat greu să îndeplinești toate sarcinile și munca de care ești responsabil. Este timpul să ne antrenăm creierul, nu-i așa? Pe lângă acele jocuri plictisitoare și fără sens, există și un joc numit Simon Game
Controler de joc DIY bazat pe Arduino - Controler de joc Arduino PS2 - Jucând Tekken cu DIY Arduino Gamepad: 7 pași
Controler de joc DIY bazat pe Arduino | Controler de joc Arduino PS2 | Jucând Tekken cu DIY Arduino Gamepad: Bună, băieți, jocul este întotdeauna distractiv, dar jocul cu propriul controler personalizat DIY este mai distractiv
Ciclon (joc LED Arduino): 6 pași (cu imagini)
Cyclone (Arduino LED Game): În acest tutorial, vă voi învăța cum să creați un joc LED cu foarte puțin cod sau experiență! Am avut această idee pentru o vreme și în cele din urmă am reușit să o creez. Este un joc distractiv care ne amintește toate jocurile arcade. Există și alte tutoriale pentru
Joc Arcade Ciclon Arduino: 6 pași
Joc Arcade Ciclon Arduino: Luminile intermitente! Arduino! Joc! Ce mai trebuie spus? Acest joc se bazează pe jocul arcade Cyclone, în care jucătorul încearcă să oprească derularea unui cerc în jurul unui anumit loc