DIY Arcade: 1D-Shooter mit Arduino, LED-Streifen und OLED

Vor ein paar Wochen hat mir ein Kumpel ein richtig cooles Video geschickt – ein simpler, aber genialer 1D-Shooter, bei dem man mit Tasten angreifende Pixel auf einem LED-Streifen abwehrt. Das sah so verdammt einfach und gleichzeitig so befriedigend aus, dass ich direkt dachte: „Das baue ich nach!“ Und weil ich eh gerade Lust auf ein neues Bastelprojekt hatte, ging’s los.

Der erste Prototyp: Quick und dirty, aber funktioniert!

Ich hatte noch einen Arduino Uno, einen Rest WS2812B-LED-Streifen (die bunten RGB-Dinger) und ein paar Taster in meiner Bastelkiste rumliegen. Rot, grün, blau – perfekt für die drei Farben, die im Spiel vorkommen sollten. Also alles schnell zusammengesteckt:

  • LED-Streifen an 5V und die Datenleitung an Pin 6 des Uno.
  • Taster an Pin 2, 3 und 4 (mit Pull-Down-Widerständen, damit die Eingaben sauber sind).
  • Ein kurzes Testprogramm reingehauen – und zack: Schon funktionierte die Grundmechanik!

Die Regeln sind simpel:

  • Von rechts kommen bunte Pixel (rot, grün, blau) angerauscht.
  • Drückst du den richtigen Taster, wird das Pixel zerstört – boom!
  • Drückst du den falschen oder lässt die Pixel bis zum Ende durchlaufen, ist Game Over.

Das lief auf Anhieb. Kein Gefrickel, kein Debugging – einfach plopp, und es hat funktioniert. Das Gefühl, wenn so ein Projekt direkt tut, was es soll? Unbezahlbar.

Von „funktioniert“ zu „richtig geil“ – die Upgrades

Okay, der erste Wurf war schon cool, aber jetzt ging’s ans Eingemachte:

  1. Sound! Ein Piezo-Speaker musste her – Arcade-Sounds machen einfach alles besser.
  2. Punkteanzeige! Bisher hatte ich nur die LEDs als Feedback, aber eine Highscore-Anzeige wäre doch mal was.
  3. Portabel! Das Ding sollte nicht nur auf dem Schreibtisch rumliegen, sondern auch mitgenommen werden können. Also: Alles in eine kleine Holzbox gepackt.

Für die Anzeige hatte ich noch ein OLED-Display (SSH1106, 128×64 Pixel) von einem alten Projekt rumliegen. Perfekt, dachte ich – klein, scharf, und über I2C einfach anzuschließen. Also Display dran, Code angepasst… und dann ging der Ärger los.

Das große Rätsel: Warum hängt alles?

Zuerst dachte ich, ich hätte einen Kurzschluss oder einen Wackelkontakt. Aber:

  • LED-Streifen allein? Läuft wie geschmiert.
  • OLED allein? Kein Problem.
  • Beides zusammen? Nach ein paar Sekunden: Freeze.

Ich habe alles durchprobiert:

  • Andere Pins? Kein Erfolg.
  • Andere Kabel? Nichts.
  • Spannungsversorgung gecheckt? Alles stabil.

Dann der Geistesblitz: Vielleicht ist der Arduino einfach zu schwach? Ich hatte noch einen Arduino Leonardo rumliegen – Pinbelegung gleich wie beim Uno, also schnell getauscht. Und tatsächlich: Es lief etwas besser, aber immer noch nicht stabil. Immer wieder Stocken, Freezes, Neustarts.

Die Lösung: Mehr Power!

Jetzt wurde’s ernst. Ich habe mich schlau gemacht:

  • Arduino Uno: 2 KB SRAM
  • Arduino Leonardo: 2,5 KB SRAM
  • WS2812B-LED-Streifen: Jede LED braucht Speicher für ihre Farbwerte.
  • OLED-Display (SSH1106): Auch nicht gerade sparsam mit dem RAM.

Fazit: Der Uno und der Leonardo haben einfach nicht genug Arbeitsspeicher, um beides gleichzeitig sauber zu betreiben. Also musste ein Arduino Mega her – der hat 8 KB SRAM und sollte das Problem lösen.

Am nächsten Tag kam die Lieferung, ich habe den Mega eingebaut… und boom: Alles läuft wie am Schnürchen! Kein Hängen, kein Stocken, einfach perfekt.

Feinschliff: Jetzt wird’s richtig arcade-mäßig!

Jetzt ging’s ans Feintuning:

  • Schwierigkeitsgrad steigt mit der Spielzeit – je länger du überlebst, desto schneller kommen die Pixel.
  • Nachzieheffekte – wenn du einen Treffer landest, gibt’s eine kleine Animation.
  • Bessere Sounds – der Piezo-Speaker klingt jetzt weniger wie ein sterbender Roboter und mehr wie ein echter Arcade-Automat.
  • Highscore-Anzeige auf dem OLED – damit du deinen Freunden beweisen kannst, wer der bessere Pixel-Jäger ist.

Das Ergebnis: Ein portabler 1D-Shooter zum Mitnehmen

Hier seht ihr die finale Version in Aktion:

Was kommt als Nächstes? Ideen für Erweiterungen

Das Spiel ist schon jetzt richtig geil, aber es gibt noch so viel Potenzial:

  • Eine vierte Farbe (z. B. gelb) für noch mehr Chaos.
  • Ein richtiges Soundmodul (z. B. DFPlayer Mini) für bessere Audioqualität.
  • Mehrere Schwierigkeitsstufen oder ein Endlos-Modus.
  • Multiplayer? Vielleicht mit zwei LED-Streifen und getrennten Tastern?

Download: Download LED_Guardian_Final_byMiHu-Works.zip

Falls ihr das nachbaut, würde ich mich mega freuen, wenn ihr mich in euren Posts verlinkt oder mir ein Foto schickt – ich bin gespannt, was ihr daraus macht!

2 Kommentare

  1. Hallo,
    super Projekt, würde ich gerne nachbauen,
    gibt es da auch eine art Schaltplan, Pinningplan wo ich alles anschliesen muss.

    vielen Dank

    • Hi Stefan, anbei die komplette beschaltung. Wie im Artikel beschrieben, ist es wichtig den Arduino MEGA einzusetzen. Wenn du keine Punkteanzeige benötigst, langt auch ein UNO. Viele Grüße und Viel Spaß beim nachbauen.

      ┌──────────────────────────────┐
      │ ARDUINO MEGA │
      │ │
      │ D2 ──────┐ │
      │ │ │
      │ D3 ──────┐ │
      │ │ │
      │ D4 ──────┐ │
      │ │ │
      │ D5 ─────────────── Piezo + │
      │ │
      │ D6 ─────────────── NeoPixel DIN │
      │ │
      │ D7 ──────┐ │
      │ │ │
      │ A0 ────── (optional Floating für Random) │
      │ │
      │ 20 ───────────── OLED SDA │
      │ 21 ───────────── OLED SCL │
      │ │
      │ 5V ──────┬──── OLED VCC │
      │ ├──── NeoPixel +5V │
      │ │
      │ GND ─────┬──── OLED GND │
      │ ├──── NeoPixel GND │
      │ ├──── Piezo – │
      │ ├──── Button Rot │
      │ ├──── Button Grün │
      │ ├──── Button Blau │
      │ └──── Restart Btn │
      └──────────────────────────────┘

Schreibe einen Kommentar

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