Miniprojekt: Reaktionsspiel Arduino mit Knöpfen

Das Reaktionsbrett-Spiel ist ein einfaches Arduino-Projekt, für das man nur LEDs, Knopfwiderstände und ein Breadboard benötigt. In diesem Artikel haben wir einen Schaltplan des Spiels und eine funktionierende Skizze mit detaillierten Kommentaren veröffentlicht. In den Einstellungen können Sie den Betriebsmodus ändern – ändern Sie die Zeitintervalle, die Anzahl der Versuche und die Anzahl der Tasten in der Schaltung.




Bestandteile:

  • Arduino Uno / Arduino Nano
  • LEDs und Widerstände
  • Takt-Tasten
  • Breadboard
  • Dupont-Kabel

Das Spielprinzip ist einfach: Nach dem Einschalten der LEDs (sie werden nach dem Zufallsprinzip eingeschaltet) muss man schnell die entsprechende Taste drücken. Das Zeitintervall für das Einschalten der LEDs und andere Einstellungen können geändert werden. Nachdem alle Versuche gemacht wurden, zeigt der Arduino IDE Port Monitor die Anzahl der richtigen Versuche, die durchschnittliche und die beste Reaktionszeit an.

Reaktionsspiel Arduino mit Knöpfen und LEDs

Reaktionsspiel Arduino mit Knöpfen und LEDs

Das Diagramm zeigt den Anschluss von drei Paaren von LEDs und Tastern, aber Sie können bis zu sechs Paare anschließen, indem Sie die Einstellungen in der Skizze ändern. Wichtig: Schließen Sie die LEDs in Reihe an, beginnend von Pin 4 bis 9 und die Taster von Arduino Pin A0 bis A5. Das Spiel Reaction game Arduino startet, wenn alle LEDs kurz aufleuchten. Falls gewünscht, kann ein Piezo-Lautsprecher zur akustischen Anzeige angeschlossen werden.

Programm für Reaktionsspiel mit Knöpfen auf Arduino




/* welche Einstellungen geändert werden können */
int d1 = 1000;   // d1 und d2 sind der Bereich in mlsec des LED-Leuchtens
int d2 = 2000;
int d3 = 3000;   // Wartezeit für das Drücken der Taste
byte tarrgr = 5; // Anzahl der Versuche
byte knp = 3;    // Anzahl der Paare LED / Taste
/* welche Einstellungen geändert werden können */
 
byte pinD = 4 + knp;
byte pinA = 14 + knp;
byte ext = 9;
byte hit;
byte err;
byte tarrgn;
boolean finich = true;

unsigned long timing;
unsigned long setreakt;
unsigned long bestreakt = 99999;
unsigned long medreakt;

void setup() {
   Serial.begin(9600);
   for (byte i = 4; i < pinD; i++) {pinMode(i, OUTPUT);digitalWrite(i, HIGH);}
   delay(500); 
   for (byte i = 4; i < pinD; i++) { digitalWrite(i, LOW); }
   for (byte i = 14; i < pinA; i++) { pinMode(i, INPUT); }
   for (byte i = 14; i < pinA; i++) { analogWrite(i, LOW); }
}

void loop() {
   while (tarrgn < tarrgr) {
    
      int LED = random(4, 4 + knp);
      int BTN = LED + 10;

      int DEL = random(d1, d2);
      delay(DEL);
      digitalWrite(LED, HIGH);
      timing = millis();

      ext = 9;

      while (ext < 10 && tarrgn < tarrgr) {

         if (digitalRead(BTN) == HIGH) {
            digitalWrite(LED, LOW);
            setreakt = millis() - timing;
            delay(300); hit++; tarrgn++; ext = 11;
         }

         if (millis() - timing > d3) {
            digitalWrite(LED, LOW);
            delay(300); setreakt = 0; err++; tarrgn++; ext = 11;
         }
      }

    if (setreakt < bestreakt && setreakt > 100) { bestreakt = setreakt; }
    medreakt = medreakt + setreakt;
  }

    if (tarrgn == tarrgr && finich == true) {
       medreakt = medreakt / hit;
       if (medreakt > 99998) { medreakt = 0; }
       if (bestreakt > 99998) { bestreakt = 0; }

       Serial.println();
       Serial.println("--- End of Raund ---");
       Serial.println();
       Serial.println("Hits - " + String(hit));
       Serial.println("Fehler - " + String(err));
       Serial.println("Beste Reaktion - " + String(bestreakt));
       Serial.println("Mittlere Reaktion - " + String(medreakt));
       Serial.println();
       Serial.println("Reboot for restart");
       finich = false;
  }
}
  1. Alle Einstellungen im Sketch können zu Beginn des Programms geändert werden;
  2. Die falsche Reihenfolge der LEDs und Tasten hat Auswirkungen auf den Betrieb der Software. Schließen Sie nicht mehr als sechs Paare von LEDs und Tasten an.

Schlussfolgerung. Es ist möglich, ein Arduino-LCD-Display an das Board anzuschließen und die Ergebnisse bereits auf dem Bildschirm anzuzeigen. Außerdem ist es möglich, sich verschiedene Optionen für das Einschalten der LEDs auszudenken, z.B. um zwei LEDs gleichzeitig einzuschalten. Wenn du Fragen hast, kannst du sie in den Kommentaren zu diesem Beitrag hinterlassen – wir versuchen, die Probleme zu lösen.

5/5 - (1 vote)


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert