LED-Licht Whack-a-mole
Komponenten und Verbrauchsmaterialien
| × | 1 | ||||
| × | 7 | ||||
| × | 7 | ||||
| × | 1 | ||||
| × | 8 | ||||
| × | 4 |
Über dieses Projekt
Dies war mein erstes Arduino-Projekt, ich habe es basierend auf dem aufgebaut, was ich aus den frühen Tutorials zu LEDs und grundlegenden Bedienelementen gelernt habe.
Dieses "Whack-a-mole"-Spiel verwendet 7 LEDs und einen Joystick. Es gibt 4 "Maulwürfe", dargestellt durch das 2., 3., 4. und 5. Licht von links auf meinem Board. Eines der vier Lichter leuchtet nach dem Zufallsprinzip auf und gibt eine festgelegte Zeit, um die entsprechende Richtung auf dem Joystick zu treffen. Ich habe meine Lichter so angeordnet, dass die Auswahlmöglichkeiten auf dem Joystick von links nach rechts sind:links, oben, unten, rechts. Dies ist nur die Konvention, die ich gewählt habe, also kreativ und probiere andere aus!
Die beiden Lichter auf der linken Seite sind rot und grün, was auf eine falsche oder richtige Wahl hindeutet. Das gelbe Licht ganz rechts blinkt den Zähler für den aktuellen Highscore und zeigt den Score jedes Mal an, wenn ein Lauf vorbei ist (wenn eine falsche Wahl getroffen wird). Natürlich ersetzt ein neuer Highscore den alten.
Der vielleicht komplizierteste Teil dieses Projekts ist der analoge Joystick. Für beide Richtungen des Joysticks gibt es Maximalwerte von 0 und 1024 (für meine musste ich 1023 verwenden, wenn Sie also die Auswahl nicht richtig treffen, können Sie das versuchen). Ich glaube, diese Werte können auch mit einem seriellen Fenster gemessen werden. Ich habe diese Eingabewerte mit switch-Anweisungen sowohl für die x- als auch für die y-Eingabe vereinfacht. Ich bin mir nicht sicher, ob dies der beste Weg ist, aber da ich nur die maximalen Werte jeder Richtung benötigte (dh nur 4 Optionen, 4 LED-Mole), habe ich jeder Möglichkeit ganzzahlige Werte zugewiesen:1, 2, 3, 4 entspricht Links, Rechts, Oben, Unten.
Die Schwierigkeitsstufen, die ich als Konstanten in meinen Code geschrieben habe, sind die Zeit in Millisekunden, die die Person zur Auswahl hat. Sie können mit diesen Zeiten herumspielen, um den Schwierigkeitsgrad nach Ihren Wünschen zu ändern. Ich dachte darüber nach, eine Auswahl über Tasten oder vielleicht den Joystick zu Beginn einer Runde zu integrieren, aber die Arbeit hat sich nicht wirklich gelohnt, da ich das Gefühl habe, dass es ziemlich kompliziert und nicht wirklich benutzerfreundlich wäre.
Lassen Sie mich auf jeden Fall wissen, welche Modifikationen und Verbesserungen vorgenommen werden können! :)
Code
- WhackALED
WhackALEDArduino
// Schlag eine LED // Joystick-Variablenint sX =A0; // Joystick x-Achse, analoge Eingabeint sY =A1; // Joystick-Y-Achse, analoge Eingabeint sSX; //Zustand von x, Lesen von sXint sSY; //Zustand von y, Lesen von sYint sS; //konvertierter Zustand (ist möglicherweise nicht der effizienteste) // Spielvariablenint rNum; // zufällige Int Auswahl des zufälligen Lichts zum Einschaltenint wins =0; //aufeinanderfolgende Winsint zählen HighScore=0; //Speichern der höchsten Punktzahl von aufeinander folgenden Siegen// Schwierigkeitskonstanten, Reaktionszeitconst int easy=1000;const int medium=500;const int hard=325;const int dumm=250;int ledPins[]={5,2, 4,3,6,7,8}; // Initialisieren von led'sint pinCount=7; // Anzahl der LED-Pinsvoid-Setup () {Serial.begin (9600); PinMode (sX, INPUT); PinMode (sY, INPUT); for (int thisPin =0; thisPinhighScore) { //Wenn die aufeinanderfolgenden Siege höher sind als der vorherige Highscore, wird der neue Highscore gesetzt. HighScore=gewinnt; gewinnt=0; } for (int i=0; i<=3; i++) {//blinkendes rotes Licht zeigt falsche Wahl an DigitalWrite (ledPins[5], HIGH); Verzögerung (50); digitalWrite (ledPins[5], LOW); Verzögerung (50); } for (int w=0; w
Schaltpläne
Alles sollte mit Ausnahme des Joysticks dem realen Bild des Projekts entsprechen. Mein Joystick hat 5 Pins, 4 oder die ich verwendet habe:von oben nach unten "GND", "+5V", "VRx" und "VRy" genannt. "GND" und "+5V" sind mit GND und 5V auf dem Arduino verbunden, "VRx" und "VRy" sind mit A0 und A1 verbunden. Alles sollte mit Ausnahme des Joysticks dem realen Bild des Projekts entsprechen. Mein Joystick hat 5 Pins, 4 oder die ich verwendet habe:von oben nach unten "GND", "+5V", "VRx" und "VRy" genannt. "GND" und "+5V" sind mit GND und 5V auf dem Arduino verbunden, "VRx" und "VRy" sind mit A0 und A1 verbunden. whack_a_mole_schematic_CBciL9GiCP.fzzHerstellungsprozess