Inhaltsverzeichnis:
Video: Cyclone LED Arcade-Spiel - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:18
Die Absicht dieses Projekts war es, ein einfaches Spiel mit einem Arduino zu erstellen, das für Kinder interaktiv und unterhaltsam ist. Ich erinnere mich, dass das Arcade-Spiel Cyclone eines meiner Lieblings-Arcade-Spiele war, als ich jünger war, also beschloss ich, es zu replizieren. Dies ist ein sehr einfaches Projekt, das aus einem Arduino, einer Reihe von einzeln adressierbaren LEDs und einem Druckknopf besteht.
Das Ziel des Spiels ist es, das Fahrradlicht zu stoppen, wenn es die angezeigte (rote) LED erreicht. Bei Erfolg wird der Schwierigkeitsgrad erhöht. Wenn dies nicht erfolgreich ist, wird der Lichtzyklus mit dem aktuellen Schwierigkeitsgrad neu gestartet.
Dieses instructable war eine riesige Ressource für den Kern meiner Codierung.
Schritt 1: Vorräte sammeln
-
Hauptbestandteile:
- Arduino (ich habe eine UNO verwendet)
- Reihe von einzeln adressierbaren LEDs (ich habe Link verwendet)
- Druckknopf (ich habe Link verwendet)
- Leiterplatte (PCB) oder Steckbrett
-
Netzteil (Ich habe zwei separate Netzteile verwendet, wenn Sie kreativ sind, können Sie mit einem davonkommen)
- 5V 3A für LEDs
- 9V 1A für Arduino
-
Rahmen:
- Elektronikgehäuse (ich habe eine hölzerne Lampenfassung von Goodwill modifiziert)
- LED-Gehäuse (Ich habe Ihre Standard-Wanduhr modifiziert und Löcher mit den Minutenmarkierungen als Lochmarkierungen gebohrt. Verwenden Sie nach Möglichkeit eine Holzuhr, um das Bohren zu erleichtern.)
- Knopfgehäuse (ich habe ein PVC-Winkelrohr verwendet)
-
Werkzeuge / Andere Materialien:
- Ersatzverkabelung für Ihre Schaltung
- 10K (Pulldown-Widerstand für Schalter) und 470 Ohm (für Datenkabel auf LEDs) Widerstände
- Bohren Sie zum Erstellen von Löchern zur Aufnahme Ihrer LEDs und zum Herstellen aller erforderlichen Löcher in Ihrer Leuchte, um Drähte hindurchzuführen
- Lötkolben zum Löten Ihrer Schaltung auf eine Leiterplatte
- Heißklebepistole zum Befestigen der LEDs an Ihrer Leuchte
- Klettverschluss oder ein Mittel zur Befestigung des Rahmens
- Optionale Dichtungen für Löcher für Kabeldurchführungen
Schritt 2: Code hochladen
Stellen Sie sicher, dass Sie die Bibliothek "FastLED" herunterladen und hinzufügen
Der Kern des Codes (Void Loop) besteht aus zwei Zuständen: Push Button High (End Game) und Push Button Low (Playing). Sobald der Benutzer die Taste drückt, wird die LED-Adresse, an der das Licht gestoppt wurde, mit der Adresse der mittleren LED verglichen. Wenn sie nicht gleich sind, blinken alle Lichter zweimal rot und die aktuelle Ebene wird neu gestartet. Wenn sie gleich sind, wird cylon (FastLED-Bibliotheksskript) zweimal ausgeführt, der Schwierigkeitsgrad erhöht sich und das Spiel wird fortgesetzt. Sobald der Spieler das letzte Level besiegt hat, läuft cylon achtmal und das Spiel startet mit Level 1 neu.
//Cyclone-Spiel
#include "FastLED.h" //bis zu 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 //Definition der Schwierigkeitsstufen #define EINFACH 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 //Anfangsschwierigkeit int Schwierigkeit = 1; // Definiere das Array von LEDs CRGB leds[NUM_LEDS]; // Hat der Spieler diese Runde gewonnen? Dieses Tag wird für Schwierigkeitsparameter verwendet. bool wonThisRound = false; // Startposition des Fahrradlichts int LEDaddress = 0; // Läuft das Spiel? bool Spielen = true; // Ist das der erste Sieg? bool CycleEnded = true; // Schaltflächendetails const int buttonPin = 9; int buttonState = 0; // Initialisieren Sie die LED-Bibliothek und die Arduino-Funktionen void setup () { FastLED.addLeds (leds, NUM_LEDS); FastLED.setHelligkeit (HELLIGKEIT); pinMode (buttonPin, INPUT); Serial.begin (9600); } // Das Fleisch und die Kartoffeln // Zwei Modi - Spielen und Beenden des Spiels void loop () {// END GAME buttonState = digitalRead (buttonPin); if (buttonState == HIGH) { Spielen = false; // Der Benutzer hat die Taste gedrückt und die LED an der Gewinneradresse hat aufgehört. für (int i = 0; i < NUM_LEDS; i++) {leds = CRGB::Schwarz; } LEDs[CENTER_LED] = CRGB::Rot; leds[LEDadresse] = CRGB::Grün; FastLED.show(); if (CycleEnded = true) { int diff = abs (CENTER_LED - LEDaddress); // Findet den Abstand zwischen der beleuchteten LED und der mittleren LED if (diff == 0) { WonThisRound = true; //Spieler erfolgreich das Level meistern if (schwierigkeit != MISSION_IMPOSSIBLE) { for (int i = 0; i < 2; i++) { cylon(); }} if (Schwierigkeit == MISSION_IMPOSSIBLE) { for (int i = 0; i < 8; i++) { cylon(); } Schwierigkeit = 0; } erhöhenSchwierigkeit(); wonThisRound = false; aufrechtzuerhalten. Sonst { Verzögerung (1000); für (int i = 0; i < 2; i ++) { flash (); } } CycleEnded = false; } LED-Adresse = 0; Verzögerung (250); buttonState = digitalRead (buttonPin); if (buttonState == LOW) { Spielen = true; }} //SPIELEN if (Playing) { for (int i = 0; i <NUM_LEDS; i++) {leds = CRGB::Black; // Schaltet alle LEDs aus} leds[CENTER_LED] = CRGB::Red; // Setzt die Farbe der mittleren LED auf grüne LEDs [LEDaddress] = CRGB::Green; // Setzt die LED-Farbe auf Rot FastLED.show (); // Initialisiert Lichtzyklus LEDaddress++; // Setzt den Lichtzyklus auf eine LED nach der anderen if (LEDaddress == NUM_LEDS) { LEDaddress = 0; } Verzögerung (getTime (Schwierigkeit)); buttonState = digitalRead (buttonPin); if (buttonState == HIGH) { Spielen = false; CycleEnded = wahr; } } } // Level-Parameter int getTime(int diff) // Gibt die Zeitverzögerung für die LED-Bewegung basierend auf der Schwierigkeit zurück { int timeValue = 0; Schalter (diff) { Fall EINFACH: timeValue = 100; brechen; Fall MEDIUM: timeValue = 80; brechen; Fall HARD: timeValue = 60; brechen; Fall ON_SPEED: timeValue = 40; brechen; Fall SONIC_SPEED: timeValue = 30; brechen; Fall ROCKET_SPEED: timeValue = 20; brechen; Fall LIGHT_SPEED: timeValue = 13; brechen; Fall MISSION_IMPOSSIBLE: timeValue = 7; } timeValue zurückgeben; // Verzögerungsbetrag zurückgeben } // Schwierigkeitssteigerungsparameter beim Gewinnen void raiseDifficulty() { if (Schwierigkeit != MISSION_IMPOSSIBLE && wonThisRound) { schwierigkeit++; }} // Verlorene LED-Anzeige void flash () {fill_solid (leds, NUM_LEDS, CRGB::Red); FastLED.show(); Verzögerung (500); fill_solid (LEDs, NUM_LEDS, CRGB::Schwarz); FastLED.show(); Verzögerung (500); } // Gewonnene LED-Show void fadeall () { for (int i = 0; i < NUM_LEDS; i ++) {leds.nscale8(250); aufrechtzuerhalten. aufrechtzuerhalten. Void zylon () {statisch uint8_t Farbton = 0; Serial.print("x"); // Schieben Sie zuerst die LED in eine Richtung for(int i = 0; i = 0; i--) {// Setzen Sie die i-te LED auf rote LEDs = CHSV(hue++, 255, 255); // Zeigt die LEDs FastLED.show(); // jetzt, wo wir die leds gezeigt haben, setze die i-te led auf schwarz zurück // leds = CRGB::Black; Fadeall(); // Warten Sie ein wenig, bevor wir eine Schleife machen und es erneut tun delay(10); } }
Schritt 3: Installation im Gerät
Ich werde in diesem Abschnitt nicht auf Details eingehen. Es gibt tausend verschiedene Möglichkeiten, diesen Teil zu gestalten, und ich denke, Sie sollten kreativ sein, um ihn so aussehen zu lassen, wie Sie ihn mögen. Davon abgesehen war die Uhr ziemlich praktisch für die Unterbringung der LEDs, da sie Minutenindikatoren hatte, die ich als Bohrmarkierungen verwenden konnte. Durch die Glasabdeckung kann ich dies auch als Tisch verwenden.
Der Klettverschluss war auch sehr nützlich, um die LED-Halterung an der Elektronikgehäusehalterung zu befestigen. Ich habe auch Klettverschluss auf dem Arduino verwendet. Dies machte es sehr praktisch, den Arduino herauszuziehen, wenn ich den Code jemals ändern möchte.
Empfohlen:
Video-Tutorials De Tecnologías Creativas 04: ¿Para Qué Servirá Un Potenciómetro Y Un Led?: 4 Schritte
Video-Tutorials De Tecnologías Creativas 04: ¿Para Qué Servirá Un Potenciómetro Y Un Led?: En este Tutorial vamos a prender como modificar la intensid de la luz de un led con einer potenciómetro sobre una placa Arduino Uno. Este ejercicio lo realizaremos mediante simulación y para ello utilizaremos Tinkercad Circuits (utilizando una cuen
Arduino Ampel-Controller mit RBG Led - 4-Wege: 3 Schritte
Arduino Ampel-Controller mit RBG Led | 4-Wege: In diesem Beitrag erfahren Sie, wie Sie einen Arduino-Ampelcontroller herstellen. Mit diesem Ampelsteuergerät wird der Verkehrsfluss gesteuert. Diese können in stark frequentierten Bereichen angewendet werden, um Verkehrsblockaden oder Unfälle zu vermeiden
Ein riesiges leuchtendes LED-Schild herstellen – wikiHow
Wie man ein riesiges leuchtendes LED-Schild herstellt: In diesem Projekt zeige ich Ihnen, wie Sie ein riesiges Schild mit einem benutzerdefinierten Schriftzug bauen, der mit Hilfe von RGB-LEDs aufleuchten kann. Das Schild kann aber auch als primäre Lichtquelle in Ihrem Raum verwendet werden, indem warmweiße LED-Streifen verwendet werden. Lass uns st
Arcade: 3 Schritte (mit Bildern)
Arcade: Vor 20 Jahren habe ich Run and Gun @ the Arcade gespielt und jetzt beschlossen, meine eigene Arcade zu bauen Entwurf
So bauen Sie eine Nintendo-Arcade: 5 Schritte (mit Bildern)
So bauen Sie eine Nintendo-Arcade: Dieses Instructable zeigt Ihnen, wie ich meine Nintendo-Arcade gebaut habe. Es ist ein Bartop-Schrank, der ein originales Nintendo-Spiel spielt. Die Spielhalle ist komplett eigenständig mit einem Netzschalter für alles. Sie können ein Video der Spielhalle in Aktion sehen unter