Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Erstellen Sie ein Arduino-Memory-Spiel

Komponenten und Verbrauchsmaterialien

Arduino UNO
× 1
SparkFun 330 Ohm Widerstände
wir brauchen nur 4 davon
× 1
SparkFun 10k Ohm Widerstände
wir brauchen nur 4 davon
× 1
SparkFun verschiedene LEDs
wir brauchen 4 LEDs in verschiedenen Farben
× 1
SparkFun Mini-Lautsprecher
Sie können darauf verzichten, wenn Ihnen der Klang egal ist
× 1
SparkFun BreadBoard (volle Größe)
× 1
Jumper (generisch)
× 1

Apps und Onlinedienste

Arduino-IDE

Über dieses Projekt

Erinnern Sie sich an das Spiel "Simon"? Viele Leute in meinem Alter (geboren in den 70ern) haben viel Zeit mit dem Spielen verloren. Das Spiel war einfach, es hatte 4 Knöpfe in verschiedenen Farben, die nacheinander aufleuchteten und man musste die Sequenz wiederholen. Jedes Mal, wenn Sie es richtig gemacht haben, gab Ihnen das Spiel die Sequenz erneut mit einer zusätzlichen Farbe am Ende.

Ich habe vor langer, langer Zeit eine zu Weihnachten bekommen, aber dann bin ich umgezogen und umgezogen und noch mehr umgezogen, so dass das Spiel in einer der vielen Kisten verloren ging, die nie von einem Umzug zum anderen ausgepackt werden...

Als "Erwachsener" entdeckte ich die Freuden von Arduino und bekam damit die Gelegenheit, meinen lange verlorenen, zeitverschwendenden Freund wiederzubeleben.

Dieses Tutorial zeigt Ihnen, wie Sie ein ähnliches Spiel mit einem Arduino Uno, ein paar LEDs und Widerständen und einer relativ einfachen Schaltung erstellen.

Das Programm selbst mag für einen Anfänger etwas kompliziert sein, daher habe ich versucht, im Code zu erklären, was es tut und wie.

Der einfachste Weg, dieses Spiel zum Laufen zu bringen, ist dieser.

1) Schließen Sie den Stromkreis genau wie im Diagramm gezeigt an. Die Farbe der Drähte ist nicht relevant, wenn Sie also keine schwarzen Drähte mehr haben, ist es in Ordnung. :)

2) Fügen Sie den Quellcode in Ihren bevorzugten Arduino-Editor ein und laden Sie ihn auf das Board hoch

3) Spielen Sie das Spiel

Das Spiel beginnt nach ca. 3 Sekunden mit 5 langsamen Blinken aller LEDs.

Wenn eine oder mehrere LEDs nicht blinken, überprüfen Sie die Verkabelung. Auf meinem Board sitzen die sehr kleinen Knöpfe nicht immer richtig und neigen dazu, herauszuspringen.

Wenn die Verkabelung richtig aussieht, versuchen Sie, eine funktionierende LED mit einer nicht funktionierenden zu invertieren, um zu sehen, ob es sich um die Verkabelung oder die LED selbst handelt.

Nachdem die 5 Blinkvorgänge abgeschlossen sind, leuchtet eine LED auf. Ich kann Ihnen nicht sagen, welche, es ist eine Überraschung :) Drücken Sie die Taste für diese LED. Diese LED wird wieder aufleuchten, gefolgt von einer neuen. Drücke der Reihe nach die richtigen Tasten... Du siehst, wohin ich damit gehe...

Dann, ziemlich bald, werden Sie sie alle schnell blinken sehen. Das bedeutet, Sie haben verloren. :D

Die letzte Sequenz, die Sie erhalten haben, wird abgespielt, damit Sie Ihre Punkte zählen können, gefolgt von den 5 langsamen Blinkzeichen von vorhin, die anzeigen, dass das Spiel wieder beginnt.

Sie haben 2 Sekunden Zeit, um jede Taste zu drücken.

Los geht's! Viel Spaß!

Willst du es etwas schwieriger machen? Warum nicht die oberste Zeile im Code auf einen anderen Wert ändern?

#define PLAYER_WAIT_TIME 2000  

Oder Sie könnten eine weitere LED hinzufügen, wenn Sie eine haben ... Dazu müssen Sie zuerst diesen Teil der Schaltung reproduzieren:

Das orangefarbene Kabel hier geht zu jedem unbenutzten Pin auf Ihrem Arduino (Vermeiden Sie jedoch 0 und 1)

Ändern Sie dann die folgenden Zeilen im Code:

byte noPins =4byte pins[] ={2, 13, 10, 8};  

Wenn Sie eine LED an Pin 6 hinzufügen, wird der Code zu

byte noPins =5byte pins[] ={2, 13, 10, 8, 6};  

Ein kleiner Tipp zum Schreiben von Arduino-Code:

void setup() { delay(3000); Serial.begin (9600); Zurücksetzen(); }  

Geben Sie als erste Anweisung Ihrer setup()-Funktion eine kurze Verzögerung ein. Es ist sehr einfach, das Arduino in eine Endlosschleife zu bringen oder es auf irgendeine Weise zu sperren. Wenn das passiert, können Sie mit dieser kurzen Verzögerung Ihr Arduino zurücksetzen und eine leere Skizze hochladen, bevor es wieder gesperrt wird. .

Irgendwann habe ich diese kleine Idee genommen und sie portabel gemacht...

Wenn Sie eine wirklich coole Idee für ein ähnliches (aber viel fortgeschritteneres) Spiel sehen möchten. Überprüfen Sie dieses https://www.instructables.com/id/Lego-Mini-Memory-Game von Peter Kent. Er machte das Spiel auf dem Handy mit einer Schnittstelle zu einem Lego-Auto. Es ist wirklich super!

Code

  • Speicher-Spielcode
SpeicherspielcodeArduino
Dies ist der gesamte Code für das Spiel. Einfach kopieren und in Ihre Lieblings-IDE einfügen und auf den Arduino hochladen.
#define PLAYER_WAIT_TIME 2000 // Die erlaubte Zeit zwischen den Tastendrücken - 2s Bytefolge [100]; // Speicher für das Lichtsequenzbyte curLen =0; // Aktuelle Länge des Sequenzbytes inputCount =0; // Die Häufigkeit, mit der der Spieler eine (richtige) Taste in einer bestimmten Runde gedrückt hat Byte lastInput =0; // Letzte Eingabe vom Playerbyte expRd =0; // Die LED, die vom Player aufleuchten sollbool btnDwn =false; // Wird verwendet, um zu überprüfen, ob eine Schaltfläche gedrückt istbool wait =false; // Wartet das Programm darauf, dass der Benutzer eine Schaltfläche drückt. resetFlag =false; // Wird verwendet, um dem Programm anzuzeigen, dass der Spieler einmal verloren hat byte soundPin =5; // Lautsprecherausgangsbyte noPins =4; // Anzahl der Tasten/LEDs (während der Arbeit habe ich nur 2 LEDs verwendet) // Sie könnten das Spiel erschweren, indem Sie eine zusätzliche Kombination aus LED/Taste/Widerständen hinzufügen.byte pins[] ={2, 13, 10 , 8}; // Tasteneingangspins und LED-Ausgangspins - ändern Sie diese Werte, wenn Sie Ihre Tasten mit anderen Pins verbinden möchten // Die Anzahl der Elemente muss mit noPins unter long inputTime =0 übereinstimmen; // Timer-Variable für die Verzögerung zwischen Benutzereingabenvoid setup () { delay (3000); // Dies soll mir Zeit zum Atmen geben, nachdem das Arduino angeschlossen wurde - kann entfernt werden, wenn Sie möchten Serial.begin (9600); // Starten Sie den seriellen Monitor. Dies kann auch entfernt werden, solange Sie alle Verweise auf Serial unter Reset() entfernen;}////// Setzt alle Pins entweder als INPUT oder OUTPUT basierend auf dem Wert von 'dir' ///void setPinDirection(byte dir) { for (byte i =0; i  schnell | große Zahl -> langsam ///void flash (kurze Frequenz) { setPinDirection (OUTPUT); /// Wir aktivieren jetzt die LEDs for(int i =0; i <5; i++){ writeAllPins(HIGH); Signalton (50); Verzögerung (Frequenz); writeAllPins(LOW); Verzögerung (Frequenz); }}//////Diese Funktion setzt alle Spielvariablen auf ihre Standardwerte zurück ///void Reset(){ flash(500); curLen =0; inputCount =0; letzte Eingabe =0; expRd =0; btnDwn =falsch; warten =falsch; resetFlag =false;} ////// Benutzer verloren ///void Lose () { flash (50); } /////// Das Arduino zeigt dem Benutzer, was gespeichert werden muss /// Wird auch nach dem Verlieren aufgerufen, um Ihnen zu zeigen, was Ihre letzte Sequenz war ///void playSequence () {/Loop durch die gespeicherte Sequenz und zünde die entsprechende an LEDs wiederum für (int i =0; i  PLAYER_WAIT_TIME){ // Wenn der Spieler mehr als die erlaubte Zeit braucht, DoLoseProcess(); // Alles ist verloren :( return; } if(!btnDwn){ // expRd =sequence[inputCount]; // Finden Sie den Wert, den wir vom Player erwarten Serial.print("Expected:"); // Serial Monitor Output - Sollte entfernt werden, wenn Sie Serial.begin über Serial.println (expRd) entfernt haben; // Serial Monitor Output - Sollte entfernt werden, wenn Sie Serial.begin oben entfernt haben für (int i =0; i  

Schaltpläne

simonsays_siKds3Jmk2.fzz

Herstellungsprozess

  1. Erstellen von Monitor-Ambilight mit Arduino
  2. Arduino-Gyroskop-Spiel mit MPU-6050
  3. Gyroskop-Spaß mit NeoPixel-Ring
  4. Arduino Pong-Spiel - OLED-Display
  5. Arduino-Gamecontroller
  6. Arduino Touch Breakout-Spiel
  7. Pixie:Eine Arduino-basierte NeoPixel-Armbanduhr
  8. Pixel-Chaser-Spiel
  9. Automatisiertes Dino-Spiel mit Arduino
  10. Mobile Fernüberwachungskamera