Simon: Tasten und Töne
Teil des Abschnitts Projekte der Arduino-Journey von Coddy. Lektion 13 von 24.
Simon ist ein Gedächtnisspiel: Das Spielfeld spielt ein Muster aus farbigen Lichtern und Tönen ab, und du wiederholst es mit den Tasten. In jeder Runde wächst das Muster um eins, bis du einen Fehler machst. Es gibt vier Farben, jede mit einer Taste, einer LED und einem Ton.
Bei vier von allem halten Arrays den Sketch kurz. Eintrag 0 jedes Arrays ist rot, 1 ist grün, 2 ist blau und 3 ist gelb, sodass eine Zahl, i, überall eine Farbe bezeichnet:
const int ledPins[4] = {9, 10, 11, 12};
const int buttonPins[4] = {2, 3, 4, 5};
const int notes[4] = {262, 330, 392, 523};Eine for-Schleife prüft alle vier Tasten. Reagiere auf zwei Zeitpunkte: Eine Taste wird gedrückt (LOW jetzt, HIGH beim letzten Mal) und wieder losgelassen (HIGH jetzt, LOW beim letzten Mal). Das Array lastState speichert den letzten Messwert jeder Taste. In späteren Schritten wird ein Tastendruck gezählt, wenn die Taste wieder losgelassen wird. Diese Tasten prellen nicht, daher reichen die Flankenerkennungen aus.
Aufgabe
MittelLass die vier Farben spielen:
- in
setup()setzt einefor-Schleife die LED-Pins als Ausgänge und die Tasten-Pins aufINPUT_PULLUP - wenn Taste
igedrückt wird, schalteledPins[i]ein und spielenotes[i]auf Pin 8 - wenn sie wieder losgelassen wird, schalte die LED aus und rufe
noTone()auf
Drücke Run, spiele mit den Tasten und klicke dann auf Check.
Probier es selbst
// Ein Eintrag pro Farbe: Rot, Grün, Blau, Gelb
const int ledPins[4] = {9, 10, 11, 12};
const int buttonPins[4] = {2, 3, 4, 5};
const int notes[4] = {262, 330, 392, 523}; // C, E, G und hohes C
const int buzzerPin = 8;
int lastState[4] = {HIGH, HIGH, HIGH, HIGH}; // der letzte Messwert jedes Tasters
void setup() {
// LEDs sind Ausgänge, Taster verwenden INPUT_PULLUP
}
void loop() {
// Für jeden Taster: Wenn er gedrückt wird, seine LED einschalten und seinen Ton spielen;
// wenn er losgelassen wird, beides ausschalten
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Projekte
Übe selbstständig: Arduino-Playground