Πίνακας περιεχομένων:
Βίντεο: Cyclone LED Arcade Game: 4 Βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:35
Ο σκοπός αυτού του έργου ήταν να δημιουργήσει ένα απλό παιχνίδι χρησιμοποιώντας ένα Arduino που θα ήταν διαδραστικό και διασκεδαστικό για τα παιδιά. Θυμάμαι ότι το παιχνίδι Cyclone arcade ήταν ένα από τα αγαπημένα μου παιχνίδια arcade όταν ήμουν νεότερος, οπότε αποφάσισα να το επαναλάβω. Αυτό είναι ένα πολύ απλό έργο που αποτελείται από ένα Arduino, μια σειρά από ξεχωριστά διευθετήσιμα LED και ένα κουμπί.
Ο στόχος του παιχνιδιού είναι να σταματήσει το φως ποδηλασίας όταν φτάσει στην ενδεικτική (κόκκινη) λυχνία LED. Εάν είναι επιτυχής, το επίπεδο δυσκολίας θα αυξηθεί. Εάν δεν είναι επιτυχής, ο κύκλος φωτός θα επανεκκινηθεί στο τρέχον επίπεδο δυσκολίας.
Αυτό το διδακτικό ήταν ένας τεράστιος πόρος για τον πυρήνα της κωδικοποίησης μου.
Βήμα 1: Συγκέντρωση προμηθειών
-
Κύρια εξαρτήματα:
- Arduino (χρησιμοποίησα UNO)
- Συμβολοσειρά LED με ξεχωριστή διεύθυνση (χρησιμοποίησα σύνδεσμο)
- Κουμπί (χρησιμοποίησα σύνδεσμο)
- Τυπωμένος πίνακας κυκλωμάτων (PCB) ή breadboard
-
Τροφοδοσία (χρησιμοποίησα δύο ξεχωριστά τροφοδοτικά, μπορεί να ξεφύγετε με ένα αν είστε δημιουργικοί)
- 5V 3A για LED
- 9V 1A για Arduino
-
Δομή:
- Ηλεκτρονικό περίβλημα (τροποποίησα ένα ξύλινο φωτιστικό από την καλή θέληση)
- Περίβλημα LED (τροποποίησα το τυπικό ρολόι τοίχου και άνοιξα τρύπες χρησιμοποιώντας τα αναγνωριστικά λεπτών ως σημάδια οπών. Χρησιμοποιήστε ξύλινο ρολόι αν είναι δυνατόν για να διευκολύνετε τη διάτρηση.)
- Περίβλημα κουμπιού (χρησιμοποίησα σωλήνα PVC αγκώνα)
-
Εργαλεία / Άλλα υλικά:
- Εφεδρική καλωδίωση για το κύκλωμά σας
- Αντίσταση 10K (πτυσσόμενη αντίσταση για διακόπτη) και 470 ohm (για καλώδιο δεδομένων σε LED)
- Τρυπάνι για τη δημιουργία οπών για τη στέγαση των LED και την πραγματοποίηση τυχόν απαραίτητων οπών στο εξάρτημα σας για να περάσετε τα καλώδια
- Συγκολλητικό σίδερο για συγκόλληση του κυκλώματος σας σε PCB
- Πιστόλι ζεστής κόλλας για τη στερέωση των LED στο φωτιστικό σας
- Velcro ή κάποια μέσα διασφάλισης του πλαισίου μαζί
- Φλάντζες προαιρετικές για οπές που ανοίγονται για να περάσουν καλώδια
Βήμα 2: Μεταφόρτωση κώδικα
Βεβαιωθείτε ότι έχετε κατεβάσει και προσθέσετε τη βιβλιοθήκη "FastLED"
Ο πυρήνας του κώδικα (κενός βρόχος) αποτελείται από δύο καταστάσεις: πατήστε το κουμπί ψηλά (Τέλος παιχνιδιού) και το κουμπί χαμηλό (Αναπαραγωγή). Μόλις ο χρήστης πατήσει το κουμπί, η διεύθυνση LED στην οποία έχει σταματήσει η φωτεινή ένδειξη συγκρίνεται με τη διεύθυνση της κεντρικής λυχνίας LED. Εάν δεν είναι τα ίδια, όλες οι λυχνίες αναβοσβήνουν δύο φορές κόκκινο και το τρέχον επίπεδο επανεκκινείται. Εάν είναι τα ίδια, το cylon (σενάριο βιβλιοθήκης FastLED) εκτελείται δύο φορές, το επίπεδο δυσκολίας αυξάνεται και η αναπαραγωγή συνεχίζει. Μόλις ο παίκτης κερδίσει το τελευταίο επίπεδο, ο κύλινδρος τρέχει όγδοος φορές και το παιχνίδι ξεκινά ξανά στο επίπεδο 1.
// Cyclone Game
#include "FastLED.h" // up to 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 // ορισμός επιπέδων δυσκολίας #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 // Δυσκολία εκκίνησης σε δυσκολία = 1; // Ορίστε τη σειρά των led led CRGB [NUM_LEDS]. // Ο παίκτης κέρδισε αυτόν τον γύρο; Αυτή η ετικέτα χρησιμοποιείται για παραμέτρους δυσκολίας. bool wonThisRound = false; // Θέση εκκίνησης του φωτιστικού ποδηλάτου int LEDaddress = 0; // Λειτουργεί το παιχνίδι; bool Παίζοντας = true; // Είναι η πρώτη νίκη; bool CycleEnded = true; // Λεπτομέρειες κουμπιού const int buttonPin = 9; int buttonState = 0; // Αρχικοποιήστε τη βιβλιοθήκη led και τις λειτουργίες arduino void setup () {FastLED.addLeds (leds, NUM_LEDS); FastLED.setBrightness (BRIGHTNESS); pinMode (buttonPin, INPUT); Serial.begin (9600); } // Το κρέας και οι πατάτες // Two Modes - Playing and End Game void loop () {// END GAME buttonState = digitalRead (buttonPin); εάν (buttonState == Υ HIGHΗΛΗ) {Αναπαραγωγή = ψευδής; // Ο χρήστης πάτησε το κουμπί και η λυχνία LED σταμάτησε στη νικήτρια διεύθυνση. για (int i = 0; i <NUM_LEDS; i ++) {leds = CRGB:: Black; } leds [CENTER_LED] = CRGB:: Κόκκινο; leds [LEDaddress] = CRGB:: Green; FastLED.show (); εάν (CycleEnded = true) {int diff = abs (CENTER_LED - LEDaddress); // Βρίσκει απόσταση μεταξύ του φωτισμένου led και του κεντρικού led εάν (diff == 0) {wonThisRound = true; // Ο παίκτης κέρδισε με επιτυχία το επίπεδο εάν (δυσκολία! = MISSION_IMPOSSIBLE) {για (int i = 0; i <2; i ++) {cylon (); }} if (δυσκολία == MISSION_IMPOSSIBLE) {για (int i = 0; i <8; i ++) {cylon (); } δυσκολία = 0; } raiseDifficulty (); wonThisRound = false; } else {καθυστέρηση (1000); για (int i = 0; i <2; i ++) {flash (); }} CycleEnded = false; } Διεύθυνση LED = 0; καθυστέρηση (250)? buttonState = digitalRead (buttonPin); εάν (buttonState == LOW) {Παίζοντας = true? }} // ΠΑΙΖΟΝΤΑΣ αν (Παίζει) {για (int i = 0; i <NUM_LEDS; i ++) {leds = CRGB:: Black; // Απενεργοποιεί όλα τα leds} leds [CENTER_LED] = CRGB:: Red; // Ορίζει το χρώμα του κέντρου led σε πράσινα led [LEDaddress] = CRGB:: Green; // Ρυθμίζει το χρώμα led led στο κόκκινο FastLED.show (); // Αρχικοποιεί τον κύκλο φωτός LEDaddress ++; // Ορίζει τον κύκλο φωτός σε ένα led κάθε φορά εάν (LEDaddress == NUM_LEDS) {LEDaddress = 0; } καθυστέρηση (getTime (δυσκολία)); buttonState = digitalRead (buttonPin); εάν (buttonState == Υ HIGHΗΛΗ) {Αναπαραγωγή = ψευδής; CycleEnded = true; }}} // Παράμετροι επιπέδου int getTime (int diff) // Επιστρέφει την χρονική καθυστέρηση για βάση κίνησης led βάσει δυσκολίας {int timeValue = 0; switch (diff) {case EASY: timeValue = 100; Διακοπή; θήκη MEDIUM: timeValue = 80; Διακοπή; θήκη HARD: timeValue = 60; Διακοπή; περίπτωση ON_SPEED: timeValue = 40; Διακοπή; θήκη SONIC_SPEED: timeValue = 30; Διακοπή; θήκη ROCKET_SPEED: timeValue = 20; Διακοπή; θήκη LIGHT_SPEED: timeValue = 13; Διακοπή; περίπτωση MISSION_IMPOSSIBLE: timeValue = 7; } return timeValue; // Επιστροφή του ποσού καθυστέρησης} // Η δυσκολία νίκης αυξάνει τις παραμέτρους void افزایشΔυσκολία () {if (δυσκολία! = MISSION_IMPOSSIBLE && wonThisRound) {δυσκολία ++; }} // Lost LED Show void flash () {fill_solid (leds, NUM_LEDS, CRGB:: Red); FastLED.show (); καθυστέρηση (500)? fill_solid (led, NUM_LEDS, CRGB:: Black); FastLED.show (); καθυστέρηση (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"); // Πρώτα σύρετε το led προς μία κατεύθυνση για (int i = 0; i = 0; i--) {// Ορίστε το led i'th σε κόκκινα led = CHSV (απόχρωση ++, 255, 255); // Εμφάνιση των οδηγήσεων FastLED.show (); // τώρα που δείξαμε τα led, επαναφέρετε το led i'th σε μαύρο // leds = CRGB:: Black; fadeall (); // Περιμένετε λίγο πριν κάνουμε ένα βρόχο και ξανακάνουμε καθυστέρηση (10). }}
Βήμα 3: Εγκατάσταση στο Fixture
Δεν πρόκειται να μπω σε λεπτομέρειες σε αυτήν την ενότητα. Υπάρχουν χίλιοι διαφορετικοί τρόποι για να ακολουθήσετε αυτό το κομμάτι και νομίζω ότι πρέπει να είστε δημιουργικοί για να φαίνεται πώς σας αρέσει. Τούτου λεχθέντος, το ρολόι ήταν αρκετά βολικό για χρήση για τη στέγαση των LED καθώς είχε ενδείξεις λεπτών που μπορούσα να χρησιμοποιήσω ως σήμανση τρυπανιών. Επίσης, το γυάλινο κάλυμμα μου επιτρέπει επίσης να το χρησιμοποιήσω ως τραπέζι.
Το velcro ήταν πολύ χρήσιμο επίσης για τη στερέωση του φωτιστικού LED στο εξάρτημα του ηλεκτρονικού περιβλήματος. Χρησιμοποίησα επίσης velcro στο Arduino. Αυτό το έκανε πολύ βολικό για να τραβήξω το Arduino αν θέλω ποτέ να τροποποιήσω τον κώδικα.
Συνιστάται:
FPGA Cyclone IV DueProLogic - Push Button & LED: 5 Βήματα
FPGA Cyclone IV DueProLogic - Push Button & LED: Σε αυτό το σεμινάριο, θα χρησιμοποιήσουμε το FPGA για τον έλεγχο εξωτερικού κυκλώματος LED. Θα υλοποιήσουμε τις ακόλουθες εργασίες (Α) Χρησιμοποιήστε τα κουμπιά στο FPGA Cyclone IV DuePrologic για τον έλεγχο της λυχνίας LED. (Β) Αναβοσβήνει το LED & απενεργοποιείται περιοδικάVideo demo Lab
Arduino Cyclone Game: 5 βήματα (με εικόνες)
Παιχνίδι Arduino Cyclone: Δεν έχω παίξει ποτέ το πραγματικό παιχνίδι κυκλώνας arcade, αλλά μου αρέσει η ιδέα να παίζω με τον χρόνο αντίδρασής μας. Σχεδίασα ένα μικροσκοπικό παιχνίδι. Αποτελείται από 32 LED που σχηματίζουν έναν κύκλο, τα LED ανάβουν ένα ένα ως led chaser. Ο στόχος είναι να πατήσετε ένα κουμπί
Cyclone (Arduino LED Game): 6 βήματα (με εικόνες)
Cyclone (Arduino LED Game): Σε αυτό το σεμινάριο, θα σας διδάξω πώς να δημιουργήσετε ένα παιχνίδι LED με πολύ λίγο κώδικα ή εμπειρία! Είχα αυτή την ιδέα για λίγο και τελικά άρχισα να τη δημιουργώ. Είναι ένα διασκεδαστικό παιχνίδι που μας θυμίζει όλα τα παιχνίδια arcade. Υπάρχουν και άλλα μαθήματα
Arduino Cyclone Arcade Παιχνίδι: 6 Βήματα
Arduino Cyclone Arcade Παιχνίδι: Blinky λαμπερά φώτα! Arduino! Παιχνίδι! Τι άλλο χρειάζεται να ειπωθεί; Αυτό το παιχνίδι βασίζεται στο παιχνίδι Cyclone arcade, όπου ο παίκτης προσπαθεί να σταματήσει ένα led που κάνει κύλιση γύρω από έναν κύκλο σε ένα συγκεκριμένο σημείο
Arduino LED Laser Arcade Game: 3 βήματα (με εικόνες)
Arduino LED Laser Arcade Παιχνίδι: Σε αυτό το διδακτικό θα σας δείξω πώς να φτιάξετε ένα Laser Arcade Game χρησιμοποιώντας LED και αισθητήρες φωτός. Ο κώδικας περιλαμβάνεται και δεν χρειάζεστε πολλά μέρη για την κατασκευή του. Δεν θα σας πω πώς φτιάχνω τη θήκη, θα πρέπει να το φτιάξετε μόνοι σας! T