Spisu treści:
Wideo: Gra zręcznościowa Cyclone LED: 4 kroki
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:30
Intencją tego projektu było stworzenie prostej gry przy użyciu Arduino, która byłaby interaktywna i zabawna dla dzieci. Pamiętam, że gra zręcznościowa Cyclone była jedną z moich ulubionych gier zręcznościowych, kiedy byłem młodszy, więc postanowiłem ją powtórzyć. Jest to bardzo prosty projekt, który składa się z Arduino, ciągu indywidualnie adresowalnych diod LED i przycisku.
Celem gry jest zatrzymanie cyklicznego światła, gdy osiągnie wskazaną (czerwoną) diodę LED. Jeśli się powiedzie, poziom trudności wzrośnie. Jeśli się nie powiedzie, cykl świetlny zostanie wznowiony na obecnym poziomie trudności.
Ta instrukcja była ogromnym źródłem dla rdzenia mojego kodowania.
Krok 1: Zbierz zapasy
-
Główne składniki:
- Arduino (użyłem UNO)
- Ciąg indywidualnie adresowalnych diod LED (użyłem linku)
- Przycisk (użyłem linku)
- Płytka drukowana (PCB) lub płytka stykowa
-
Zasilacz (użyłem dwóch oddzielnych zasilaczy, jeden może ci ujść na sucho, jeśli jesteś kreatywny)
- 5V 3A dla diod LED
- 9V 1A dla Arduino
-
Struktura:
- Obudowa elektroniki (zmodyfikowałem drewnianą oprawę lampy z Goodwill)
- Obudowa LED (zmodyfikowałem twój standardowy zegar ścienny i wywierciłem otwory, używając identyfikatorów minut jako oznaczeń otworów. Użyj drewnianego zegara, jeśli to możliwe, aby ułatwić wiercenie.)
- Obudowa przycisku (użyłem kolanka PCV)
-
Narzędzia / Inne materiały:
- Zapasowe okablowanie dla twojego obwodu
- Rezystory 10K (rezystor pull-down dla przełącznika) i 470 omów (dla przewodu danych na diodach LED)
- Wiertło do tworzenia otworów do umieszczenia diod LED i wykonywania niezbędnych otworów w urządzeniu, aby przepuścić przez nie przewody
- Lutownica do lutowania obwodu do płytki drukowanej
- Pistolet do klejenia na gorąco do mocowania diod LED do oprawy
- Rzep lub jakieś środki do zabezpieczenia ramy razem
- Uszczelki opcjonalne do otworów wywierconych w celu przeprowadzenia przewodów
Krok 2: Prześlij kod
Upewnij się, że pobierasz i dodajesz bibliotekę „FastLED”
Rdzeń kodu (pętla pusta) składa się z dwóch stanów: wysoki przycisk (Zakończ grę) i niski przycisk (Granie). Gdy użytkownik naciśnie przycisk, adres diody, na której światło zostało zatrzymane, jest porównywany z adresem środkowej diody LED. Jeśli nie są takie same, wszystkie kontrolki migają na czerwono dwa razy i aktualny poziom jest ponownie uruchamiany. Jeśli są takie same, Cylon (skrypt biblioteki FastLED) uruchamia się dwukrotnie, poziom trudności wzrasta, a gra zostaje wznowiona. Gdy gracz pokona ostatni poziom, Cylon biegnie ósmy raz, a gra rozpoczyna się od nowa na poziomie 1.
//Gra w cyklon
#include "FastLED.h" //do 50 #define NUM_LEDS 40 #define CENTER_LED 21 #define DATA_PIN 7 #define LED_TYPE WS2811 #define COLOR_ORDER RGB //zakres 0-64 #define BRIGHTNESS 50 //Define poziomów trudności #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 //Początkowa trudność int trudność = 1; // Zdefiniuj tablicę diod LED Diody CRGB[NUM_LEDS]; // Czy gracz wygrał tę rundę? Ten tag jest używany do parametrów trudności. bool wonThisRound = false; // Lokalizacja początkowa światła rowerowego int LEDaddress = 0; // Czy gra działa? bool Gra = prawda; // Czy to pierwsza wygrana? bool CycleEnd = prawda; // Szczegóły przycisku const int buttonPin = 9; int Stan przycisku = 0; // Zainicjuj bibliotekę led i funkcje arduino void setup() { FastLED.addLeds(leds, NUM_LEDS); FastLED.setJasność(JASNOŚĆ); pinMode(buttonPin, INPUT); Serial.początek(9600); } // Mięso i ziemniaki //Dwa tryby - Gra i Koniec gry void loop() { //KONIEC GRY buttonState = digitalRead(buttonPin); if (buttonState == HIGH) { Playing = false; //Użytkownik nacisnął przycisk i dioda LED zatrzymała się na zwycięskim adresie. for (int i = 0; i < NUM_LEDS; i++) { diody = CRGB::Black; } diody LED[CENTER_LED] = CRGB::Czerwony; diody [Adres LED] = CRGB::Zielony; FastLED.show(); if (CycleEnded = true) { int diff = abs(CENTER_LED - LEDaddress); //Znajdź odległość między zapaloną diodą a środkową diodą if (diff == 0) { wonThisRound = true; //Gracz pomyślnie pokonał poziom if (trudność != MISSION_IMPOSSIBLE) { for (int i = 0; i < 2; i++) { cylon(); } } if (trudność == MISSION_IMPOSSIBLE) { for (int i = 0; i < 8; i++) { cylon(); } trudność = 0; } wzrost trudności(); wonThisRound = false; } inny { opóźnienie(1000); for (int i = 0; i < 2; i++) { flash(); } } CycleEnded = false; } adres LED = 0; opóźnienie(250); buttonState = digitalRead(buttonPin); if (buttonState == LOW) { Playing = true; } } //PLAYING if(Playing) { for (int i = 0; i < NUM_LEDS; i++) { diody = CRGB::Black; //Wyłącza wszystkie diody } diody LED[CENTER_LED] = CRGB::Czerwony; //Ustawia kolor środkowej diody led na zielony diody [LEDaddress] = CRGB::Green; //Ustawia czerwony kolor diody LED FastLED.show(); //Inicjuje diodę LEDaddress ++; //Ustawia cykl świecenia na jedną diodę na raz if (LEDaddress == NUM_LEDS) { LEDaddress = 0; } delay(getTime(trudność)); buttonState = digitalRead(buttonPin); if (buttonState == HIGH) { Playing = false; Cykl zakończony = prawda; } } } //Parametry poziomu int getTime(int diff) // Zwraca opóźnienie czasowe dla ruchu led na podstawie trudności { int timeValue = 0; switch (diff) { case EASY: timeValue = 100; przerwa; przypadek ŚREDNI: timeValue = 80; przerwa; wielkość liter HARD: timeValue = 60; przerwa; przypadek ON_SPEED: timeValue = 40; przerwa; przypadek SONIC_SPEED: timeValue = 30; przerwa; przypadek ROCKET_SPEED: timeValue = 20; przerwa; przypadek LIGHT_SPEED: timeValue = 13; przerwa; przypadek MISSION_IMPOSSIBLE: timeValue = 7; } return timeValue;// Zwróć wartość opóźnienia } //Parametry wzrostu trudności wygranej void IncreaseDifficulty() { if (trudność != MISSION_IMPOSSIBLE && wonThisRound) { trudność++; } } //Zgubiony pokaz LED void flash() { fill_solid(leds, NUM_LEDS, CRGB::Red); FastLED.show(); opóźnienie (500); fill_solid(ledy, NUM_LEDS, CRGB::Czarny); FastLED.show(); opóźnienie (500); } //Won LED Show void fadeall() { for(int i = 0; i < NUM_LEDS; i++) { leds.nscale8(250); } } void cylon() { statyczny uint8_t barwa = 0; Serial.print("x"); // Najpierw przesuń diodę w jednym kierunku for(int i = 0; i = 0; i--) { // Ustaw i-tą diodę na czerwone diody = CHSV(hue++, 255, 255); // Pokaż diody FastLED.show(); // teraz, gdy pokazaliśmy diody, zresetuj i-tą diodę na czarną // diody = CRGB::Black; fadeall(); // Poczekaj chwilę, zanim wykonamy pętlę i zrobimy to ponownie delay(10); } }
Krok 3: Zainstaluj w urządzeniu
Nie będę wchodził w szczegóły w tej sekcji. Jest tysiąc różnych sposobów na wykonanie tej części i myślę, że powinieneś być kreatywny, aby wyglądać tak, jak lubisz. Biorąc to pod uwagę, zegar był całkiem wygodny w użyciu do przechowywania diod LED, ponieważ miał minuty wskaźniki, które mogłem wykorzystać jako oznaczenia wierteł. Ponadto szklana osłona pozwala mi również użyć tego jako stolika.
Rzep był również bardzo przydatny do mocowania oprawy LED do oprawy obudowy elektroniki. Użyłem również rzepów na Arduino. Dzięki temu bardzo wygodnie było wyciągnąć Arduino, jeśli kiedykolwiek będę chciał zmodyfikować kod.
Zalecana:
Gra zręcznościowa Stackers: 6 kroków (ze zdjęciami)
Stackers Arcade Game: Cześć wam, dzisiaj chcę podzielić się z Wami tą niesamowitą grą arcade, którą można zrobić z kilkoma diodami LED Ws2812b i mikrokontrolerem/FPGA. Behold Stack Overflow - nasza sprzętowa implementacja klasycznej gry zręcznościowej. Co zaczęło się jako projekt szkolny, qui
Inteligentna gra zręcznościowa w koszykówkę z obręczami do liczenia punktów za pomocą wbudowanej platformy Eveve-Arduino: 13 kroków
Inteligentna gra zręcznościowa do koszykówki z obręczami liczącymi punkty za pomocą wbudowanej platformy Eveve-Arduino: Ze wszystkich dostępnych gier najbardziej rozrywkowe są gry zręcznościowe. Pomyśleliśmy więc, dlaczego nie zrobić tego sami w domu! I oto jesteśmy, najbardziej zabawna gra DIY, w jaką kiedykolwiek grałeś do tej pory - DIY Arcade Basketball Game! Nie tylko jest to
Halloweenowa gra zręcznościowa wyścigów konnych: 6 kroków
Gra zręcznościowa o wyścigach konnych na Halloween: W tym roku postanowiliśmy stworzyć grę zręcznościową o wyścigach konnych na Halloween. Zainspirowała nas wersja mechaniczna o nazwie Roll-a-Ball Horse Racing. Naszym celem było stworzenie gry z prostym sterowaniem, która spodoba się szerokiemu gronu graczy. Na podstawie
Mini 2-osobowa gra zręcznościowa ze starego laptopa i deski do krojenia Ikea.: 32 kroki (ze zdjęciami)
Mini 2-osobowa gra zręcznościowa ze starego laptopa i deski do krojenia Ikea.: Uwielbiam gry w stylu retro. Wszystkie te stare automaty arkadowe i konsole były po prostu świetną zabawą. Chciałbym mieć własny automat, ale po prostu nie mam miejsca. Granie za pomocą gamepada przez konsolę w telewizorze po prostu nie wydaje się odpowiednie, więc musiałem zrobić
CheminElectrique (gra zręcznościowa) - SRO2002: 9 kroków
CheminElectrique (gra umiejętności) - SRO2002: Przedstawiam Wam dzisiaj wykonanie gry, którą zrobiłem na przyjęcie z okazji zakończenia roku szkolnego dla mojego syna. We Francji nazywamy te festiwale „kermesses”, nie wiem, czy istnieją w innych krajach i jak się nazywają… Na tych imprezach jest