🎮

Memory Game

Projekt A05 - Simon Says mit Arduino

Advanced
4 LEDs
4 Buttons
Piezo
1

Was du lernst

  • Arrays - Sequenzen speichern und verwalten
  • Spiellogik - Zustände und Übergänge programmieren
  • tone() Funktion - Töne mit dem Piezo erzeugen
  • Zufallszahlen - random() für Spielvariationen

Komponenten

Arduino Uno, 4x LEDs (rot, gelb, grün, blau), 4x Taster, Piezo-Summer

2

Schaltung

Pin-Belegung

  • D2-D5 - LEDs (rot, gelb, grün, blau)
  • D6-D9 - Buttons (INPUT_PULLUP)
  • D10 - Piezo-Summer

Spielprinzip

Das Spiel zeigt eine Sequenz von LEDs. Der Spieler muss sie nachspielen. Jedes Level fügt ein Element hinzu!

Der Code

const int LED[] = {2, 3, 4, 5};
const int BTN[] = {6, 7, 8, 9};
const int TONES[] = {262, 330, 392, 523};
int sequence[20];
int level = 0;

void showSequence() {
  for (int i = 0; i < level; i++) {
    int led = sequence[i];
    digitalWrite(LED[led], HIGH);
    tone(10, TONES[led], 400);
    delay(500);
    digitalWrite(LED[led], LOW);
    delay(200);
  }
}

void addToSequence() {
  sequence[level] = random(0, 4);
  level++;
}
3

Spielablauf

Spielzyklus

  1. Neues Element zur Sequenz hinzufügen
  2. Gesamte Sequenz mit LEDs und Tönen anzeigen
  3. Spieler drückt Buttons in richtiger Reihenfolge
  4. Richtig? Nächstes Level. Falsch? Game Over!

Töne

Jede Farbe hat einen eigenen Ton: C (262Hz), E (330Hz), G (392Hz), C' (523Hz)

4

Eingabe prüfen

int getButtonPress() {
  for (int i = 0; i < 4; i++) {
    if (digitalRead(BTN[i]) == LOW) {
      digitalWrite(LED[i], HIGH);
      tone(10, TONES[i], 150);
      while (digitalRead(BTN[i]) == LOW);
      digitalWrite(LED[i], LOW);
      return i;
    }
  }
  return -1;
}

// In loop(): Eingabe vergleichen
if (button == sequence[position]) {
  position++;  // Richtig!
} else {
  gameOver = true;  // Falsch!
}
5

Erweiterungen

Ideen

  • Highscore im EEPROM speichern
  • Schwierigkeitsgrade (schneller, mehr LEDs)
  • Zwei-Spieler-Modus
  • LCD-Anzeige für Level und Punkte
🎮

Geschafft!

Du hast ein Memory Game programmiert!

Nächstes Projekt

A06: Binary Counter

← →
1 / 8