Ein einfaches Arduino-Projekt mit Tasten, bei dem Sie den vom Mikrocontroller generierten Code erraten müssen. Falls gewünscht, können LEDs an das Arduino-Board angeschlossen werden, um die korrekte und falsche Codeeingabe anzuzeigen. Alle Informationen (der generierte Code und die Antwort des Benutzers) werden auf dem Monitor des Arduino-IDE-Ports angezeigt. Falls gewünscht, kann optional ein Display angeschlossen werden.
Bestandteile:
- Arduino Uno / Arduino Nano / Arduino Mega
- LEDs und Widerständen
- Tasten
- Breadboard
- Dupont-Kabel
Das Programm verwendet sechs Varianten von Codes (alle Varianten sind im Array char* kod angegeben), die im Sketch zufällig ausgewählt werden. Um den Code zu erraten, muss jede Taste nur einmal gedrückt werden, wobei es im Programm keine Begrenzung für die Anzahl der Betätigungen gibt. Nach der Eingabe von drei Zahlen (dreimaliges Drücken der Tasten) wird der generierte Code mit der eingegebenen Antwort verglichen.
Arduino-Spiel mit Tasten „Errate den Code“
Das obige Bild zeigt den Aufbau der Projektschaltung mit Tasten – „Guess the code“. Man beachte, dass die Knöpfe ohne Widerstand an den Arduino angeschlossen sind, da die Pins der Platine mit INPUT_PULLUP konfiguriert sind, was 20kOhm-Widerstände zu den Ports im Mikrocontroller selbst hochzieht. Wenn die entsprechende Taste gedrückt wird, werden die entsprechenden Zahlen „1“, „2“ oder „3“ zum String antwort hinzugefügt.
Programm für Arduino-Spiel mit Tasten Errate den Code
byte x; byte w = 1; String antwort = ""; String KOD = ""; // eine Reihe von Code-Varianten char* kod[6] = {"123", "132", "231", "213", "321", "312"}; boolean button1WasUp = true; boolean button2WasUp = true; boolean button3WasUp = true; void setup() { Serial.begin(9600); // Stifte für Tastenanschluss pinMode(5, INPUT_PULLUP); pinMode(4, INPUT_PULLUP); pinMode(3, INPUT_PULLUP); // LED-Anschlussstifte pinMode(13, OUTPUT); pinMode(10, OUTPUT); } void loop() { /// CODEGENERIERUNGSFUNKTION /// while (w == 1) { delay(500); digitalWrite(13, HIGH); digitalWrite(10, HIGH); delay(100); digitalWrite(13, LOW); digitalWrite(10, LOW); x = random(0, 5); KOD = String(kod[x]); Serial.print("KOD - "); Serial.println(KOD); Serial.println(""); Serial.print("ANTWORT - "); w = 2; } /// GEBEN SIE DIE ERSTE ZAHL EIN /// while (w == 2) { boolean button1IsUp = digitalRead(5); boolean button2IsUp = digitalRead(4); boolean button3IsUp = digitalRead(3); // wenn die erste Taste gedrückt wurde, "1" hinzufügen if (button1WasUp && !button1IsUp) { delay(10); button1IsUp = digitalRead(5); if (!button1IsUp) {antwort = antwort + "1"; Serial.print("1"); w = 3;} } button1WasUp = button1IsUp; // wenn die zweite Taste gedrückt wurde, "2" hinzufügen if (button2WasUp && !button2IsUp) { delay(10); button2IsUp = digitalRead(4); if (!button2IsUp) {antwort = antwort + "2"; Serial.print("2"); w = 3;} } button2WasUp = button2IsUp; // wenn die dritte Taste gedrückt wurde, "3" hinzufügen if (button3WasUp && !button3IsUp) { delay(10); button3IsUp = digitalRead(3); if (!button3IsUp) {antwort = antwort + "3"; Serial.print("3"); w = 3;} } button3WasUp = button3IsUp; } /// DIE ZWEITE ZAHL EINGEBEN /// while (w == 3) { boolean button1IsUp = digitalRead(5); boolean button2IsUp = digitalRead(4); boolean button3IsUp = digitalRead(3); // wenn die erste Taste gedrückt wurde, "1" hinzufügen if (button1WasUp && !button1IsUp) { delay(10); button1IsUp = digitalRead(5); if (!button1IsUp) {antwort = antwort + "1"; Serial.print("1"); w = 4;} } button1WasUp = button1IsUp; // wenn die zweite Taste gedrückt wurde, "2" hinzufügen if (button2WasUp && !button2IsUp) { delay(10); button2IsUp = digitalRead(4); if (!button2IsUp) {antwort = antwort + "2"; Serial.print("2"); w = 4;} } button2WasUp = button2IsUp; // wenn die dritte Taste gedrückt wurde, "3" hinzufügen if (button3WasUp && !button3IsUp) { delay(10); button3IsUp = digitalRead(3); if (!button3IsUp) {antwort = antwort + "3"; Serial.print("3"); w = 4;} } button3WasUp = button3IsUp; } /// DIE DRITTE ZAHL EINGEBEN /// while (w == 4) { boolean button1IsUp = digitalRead(5); boolean button2IsUp = digitalRead(4); boolean button3IsUp = digitalRead(3); // wenn die erste Taste gedrückt wurde, "1" hinzufügen if (button1WasUp && !button1IsUp) { delay(10); button1IsUp = digitalRead(5); if (!button1IsUp) {antwort = antwort + "1"; Serial.println("1"); w = 5;} } button1WasUp = button1IsUp; // wenn die zweite Taste gedrückt wurde, "2" hinzufügen if (button2WasUp && !button2IsUp) { delay(10); button2IsUp = digitalRead(4); if (!button2IsUp) {antwort = antwort + "2"; Serial.println("2"); w = 5;} } button2WasUp = button2IsUp; // wenn die dritte Taste gedrückt wurde, "3" hinzufügen if (button3WasUp && !button3IsUp) { delay(10); button3IsUp = digitalRead(3); if (!button3IsUp) {antwort = antwort + "3"; Serial.println("3"); w = 5;} } button3WasUp = button3IsUp; } /// VERGLEICHEN SIE DIE ANTWORT MIT DEM CODE /// if (KOD == antwort ) { Serial.println(""); Serial.println("JA!"); Serial.println(""); digitalWrite(10, HIGH); delay(1000); digitalWrite(10, LOW); antwort = ""; w = 1; } else { Serial.println(""); Serial.println("NO!"); Serial.println(""); digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); antwort = ""; w = 2; } }
- Der neue Code wird auf dem Arduino IDE Port Monitor angezeigt;
- Wenn der Code falsch eingegeben wurde, kann der Piezo-Lautsprecher durch Hinzufügen der erforderlichen Zeilen im Programm eingeschaltet werden.
Schlussfolgerung. Dieses Programm kann in verschiedenen Projekten verwendet werden, z.B. um einen Alarm auf dem Arduino zu erzeugen, bei dem der Summer nur dann ausgeschaltet wird, wenn die Chiffre korrekt eingegeben wurde. Oder um ein Codeschloss zu erstellen, aber in diesem Fall muss die Chiffre nicht jedes Mal neu generiert werden und die Chiffre kann komplexer gestaltet werden und aus mehr als drei Zahlen bestehen.
Schreibe einen Kommentar