Skip to content

Technik Blog

IoT, Smart Home & Mikrocontroller einfach erklärt

Menu
  • Smarthome
  • Gartenautomation
  • Mikrocontroller
    • Arduino
    • ESP32 & Co.
    • Calliope Mini
    • Raspberry Pi & Pico
  • Solo Mining
  • Über mich
Menu

LED-Reaktionsspiel mit dem XIAO ESP32-C6 in MicroPython

Veröffentlicht am 3. September 20263. September 2026 von Stefan Draeger

Vier Taster, ein LED-Stripe – und plötzlich wird aus ein paar Bauteilen ein richtig hektisches Reaktionsspiel.

Genau so eine Idee ist mir in einem Instagram-Reel begegnet. Eine farbige LED wandert von oben nach unten, du musst blitzschnell den passenden Taster drücken und schickst damit deine eigene LED nach oben. Treffen die richtigen Farben aufeinander, gibt es einen Punkt. Klingt einfach? Ist es am Anfang auch. 😄

Doch mit jedem Treffer wird das Spiel schneller – und irgendwann merkst du, wie aus einem kleinen Elektronikprojekt plötzlich echter Ehrgeiz wird.

LED-Reaktionsspiel mit XIAO ESP32-C6 & MicroPython 🎮 | WS2812B Projekt
Dieses Video auf YouTube ansehen.

Ich fand die Idee sofort so cool, dass ich sie unbedingt mit dem XIAO ESP32-C6 nachbauen wollte. In diesem Beitrag zeige ich dir Schritt für Schritt, wie mein eigenes LED-Reaktionsspiel mit WS2812B LED-Stripe, vier farbigen Tastern, OLED-Display und Piezo-Buzzer entstanden ist – natürlich programmiert mit MicroPython.

Wenn du also Lust auf ein Projekt hast, das schnell aufgebaut ist, richtig Spaß macht und sich später noch wunderbar erweitern lässt, dann solltest du unbedingt weiterlesen.

Hinweis zur Kooperation: Den in diesem Projekt verwendeten XIAO ESP32-C6 habe ich kostenfrei von OpenELAB und Seeed Studio zur Verfügung gestellt bekommen. Auf Inhalt, Umsetzung und Bewertung dieses Projekts hatte dies keinen Einfluss.

Den XIAO ESP32-C6 bekommst du derzeit im Shop von OpenELAB für knapp 8 € zzgl. Versandkosten.

Inhaltsverzeichnis

  • So funktioniert das LED-Reaktionsspiel
  • Aufbau der Schaltung
    • Benötigte Bauteile
    • Schaltung des LED-Reaktionsspiels
  • 3D-gedruckte Halterung für LED-Stripe und Platine
  • Der MicroPython-Code
    • Zentrale Einstellungen an einer Stelle
    • Je höher der Score, desto mehr Gegner
    • Die Taster werden entprellt
    • Gegner nach unten, Schüsse nach oben
    • Treffen sich die LEDs wirklich?
    • Treffer bedeutet: Score hoch, Tempo hoch
    • Drei einfache Spielzustände
  • Fazit

So funktioniert das LED-Reaktionsspiel

Das Spielprinzip ist schnell erklärt – und genau das macht den Reiz aus. Auf dem LED-Stripe wandern farbige LEDs von oben nach unten. Jede LED besitzt eine der vier Farben Blau, Gelb, Rot oder Grün.

Deine Aufgabe ist es, möglichst schnell mit dem passenden Taster zu reagieren. Drückst du zum Beispiel den roten Taster, startet am unteren Ende des LED-Stripes eine rote LED und bewegt sich nach oben. Trifft sie auf eine rote LED, werden beide gelöscht und du bekommst einen Treffer.

Drückst du die falsche Farbe und dieser Schuss trifft auf einen andersfarbigen Gegner, ist das Spiel sofort vorbei. Du musst also nicht nur schnell reagieren, sondern auch genau auf die Farbe achten. Erreicht eine gegnerische LED das untere Ende des Stripes, ist das Spiel vorbei.

Am Anfang ist das noch recht entspannt. Doch mit zunehmender Rundenzahl wird es immer hektischer.

Ab Runde 5 sind bereits zwei gegnerische LEDs gleichzeitig unterwegs. Ab Runde 10 kommen drei LEDs gleichzeitig, später entsprechend noch mehr.

Dadurch musst du nicht mehr nur auf eine einzelne Farbe reagieren, sondern mehrere LEDs gleichzeitig im Blick behalten und in der richtigen Reihenfolge abschießen.

Das bedeutet beispielsweise:

  • Runde 1–4 – 1 gegnerische LED
  • Runde 5–9 – 2 gegnerische LEDs gleichzeitig
  • Runde 10–14 – 3 gegnerische LEDs gleichzeitig
  • Runde 15–19 – 4 gegnerische LEDs gleichzeitig
  • usw.

Zusätzlich wird das Spiel mit jeder Runde schneller. Die LEDs bewegen sich also immer zügiger über den Stripe, während gleichzeitig immer mehr Gegner auftauchen.

Was am Anfang noch ziemlich einfach aussieht, entwickelt sich dadurch schnell zu einem kleinen Reaktionstest:

8-Bit-Schaubild zum LED-Reaktionsspiel mit XIAO ESP32-C6: Farbe erkennen, passenden Taster drücken, nächsten Gegner beobachten, reagieren und den Überblick behalten.
Das Spielprinzip im Überblick: Farbe erkennen, passenden Taster drücken und die Gegner auf dem LED-Stripe rechtzeitig abwehren.

Genau dieser stetige Anstieg aus mehr LEDs und höherer Geschwindigkeit sorgt dafür, dass jede Runde etwas schwieriger wird und man automatisch versucht, den eigenen letzten Score noch einmal zu schlagen.

Aufbau der Schaltung

Für den Aufbau des LED-Reaktionsspiels benötigst du nur wenige Komponenten. Die komplette Steuerung übernimmt der XIAO ESP32-C6.

Benötigte Bauteile

BauteilAnzahlVerwendung
XIAO ESP32-C6*1Mikrocontroller und Steuerung des Spiels
WS2812B LED-Streifen* mit 144 LEDs/mca. 18 cmSpielfeld mit rund 26 LEDs
Taster*4Rot, Gelb, Blau und Grün
Tasterkappen*4passend zu den vier Spielfarben
OLED-Display*1Anzeige von Score und Spielstatus
Piezo-Buzzer*1Akustische Rückmeldung
Widerstand 470 Ω*1in der Datenleitung zum LED-Streifen
Elektrolytkondensator* 470 µF / 10 V1Stabilisierung der 5-V-Versorgung
Netzteil* 5 V / 3 A1externe Versorgung des LED-Streifens
Verbindungskabel*diverseVerdrahtung der Komponenten

Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!

Das OLED-Display ist für das eigentliche Spiel nicht zwingend notwendig, macht den Aufbau aber deutlich komfortabler. Ich nutze es unter anderem für den aktuellen Score und Meldungen wie „Game Over“.

Schaltung des LED-Reaktionsspiels

Die folgende Fritzing-Grafik zeigt die vollständige Verdrahtung meines Aufbaus.

Schaltung - LED Reaktionsspiel mit XIAO ESP32-C6
Schaltung – LED Reaktionsspiel mit XIAO ESP32-C6

Aus dem Schaltbild lassen sich die Anschlüsse direkt ablesen. Besonders wichtig sind dabei nur drei Punkte:

  • Der LED-Streifen wird separat mit 5 V / 3 A versorgt.
  • GND des externen Netzteils und GND des XIAO ESP32-C6 müssen verbunden sein.
  • Zwischen GPIO0 und DIN des LED-Streifens sitzt ein 470-Ω-Widerstand.

Direkt an der Spannungsversorgung des LED-Streifens befindet sich zusätzlich ein 470-µF-Kondensator zwischen +5 V und GND. Dieser hilft dabei, kurze Spannungsschwankungen beim Schalten der LEDs abzufangen.

Die vier Taster werden direkt zwischen GPIO und GND angeschlossen. Im MicroPython-Code nutze ich die internen Pull-up-Widerstände des ESP32-C6, sodass keine zusätzlichen Widerstände für die Taster notwendig sind.

Der Piezo-Buzzer übernimmt später die akustische Rückmeldung bei Treffern, falschen Eingaben und beim Game Over.

Damit ist die Hardware bereits komplett aufgebaut. Im nächsten Schritt geht es an den MicroPython-Code, der aus dem LED-Streifen, den vier Tastern und dem XIAO ESP32-C6 das eigentliche Spiel macht.

3D-gedruckte Halterung für LED-Stripe und Platine

Damit der Aufbau nicht nur auf dem Breadboard funktioniert, sondern auch etwas ordentlicher aussieht, habe ich für das LED-Reaktionsspiel eine kleine 3D-gedruckte Halterung konstruiert.

3D Druck Modell im Bambu Lab A1 Mini für LED Reaktionsspiel
3D Druck Modell im Bambu Lab A1 Mini für LED Reaktionsspiel

Die Halterung nimmt sowohl die Platine mit dem XIAO ESP32-C6 als auch den LED-Stripe auf. Der LED-Streifen steht dabei schräg nach oben und lässt sich so beim Spielen gut beobachten.

Für die Funktion des Spiels ist die Halterung natürlich nicht zwingend notwendig. Wenn du das Projekt zunächst nur ausprobieren möchtest, kannst du die Schaltung genauso gut auf einem Breadboard aufbauen.

Wenn du das Spiel jedoch dauerhaft aufbauen möchtest, kannst du dir meine STL-Dateien herunterladen und selbst ausdrucken.

Download: 3D-Modell für das LED-Reaktionsspiel

  • Grundplatte für die Platine
  • Halterung für den LED-Stripe
STL Datei für das LED Reaktionsspiel zum selber druckenSTL-Datei herunterladen

Der MicroPython-Code

Den vollständigen Quellcode stelle ich dir als fertige reaction_game.py zum Download bereit. Du musst also nicht jede einzelne Codezeile nachbauen. Trotzdem lohnt sich ein kurzer Blick auf die wichtigsten Stellen, denn genau dort steckt die eigentliche Spiellogik.

LED Reaktiongame – Micropython Codefertiger Micropython Code für das LED Reaktiongame

Zentrale Einstellungen an einer Stelle

Damit sich das Spiel später leicht anpassen lässt, befinden sich die wichtigsten Werte direkt am Anfang des Programms. Dazu gehören unter anderem die Anzahl der LEDs, die verwendeten GPIOs, die Helligkeit und die Spielgeschwindigkeit.

LED_PIN = 0
NUM_LEDS = 26

BRIGHTNESS = 0.15

START_INTERVAL_MS = 250
INTERVAL_DECREASE_MS = 6
MIN_INTERVAL_MS = 60

Das Spiel startet also mit 250 ms pro Bewegungsschritt. Nach jedem Treffer wird dieses Intervall um 6 ms reduziert, bis schließlich bei 60 ms Schluss ist.

Die Helligkeit habe ich bewusst auf 15 % begrenzt. Für das Spiel reicht das vollkommen aus und gleichzeitig wird der Stromverbrauch des LED-Streifens deutlich reduziert.

Je höher der Score, desto mehr Gegner

Die Anzahl der gleichzeitig aktiven Gegner wird über eine kleine Tabelle gesteuert:

ENEMY_COUNT_SCHEDULE = [
    (0, 1),
    (5, 2),
    (10, 3),
]

Bis Score 4 ist also nur eine LED unterwegs. Ab Score 5 werden es zwei und ab Score 10 drei Gegner gleichzeitig. Dieses Prinzip lässt sich sehr einfach erweitern, beispielsweise mit (15, 4).

Damit die neuen Gegner nicht direkt übereinander erscheinen, sorgt MIN_ENEMY_GAP zusätzlich für einen Mindestabstand auf dem LED-Streifen.

Die Taster werden entprellt

Mechanische Taster liefern beim Drücken nicht immer sofort ein sauberes Signal. Deshalb enthält der Code eine kleine Entprellung von 50 ms.

DEBOUNCE_MS = 50

Nur wenn sich der Zustand eines Tasters lange genug stabil verändert hat, wird daraus tatsächlich ein Tastendruck. Da die internen Pull-up-Widerstände des ESP32-C6 genutzt werden, bedeutet dabei 0: Taster gedrückt.

Gegner nach unten, Schüsse nach oben

Die Gegner und die vom Spieler abgefeuerten LEDs werden in zwei Listen verwaltet:

enemies = []
shots = []

Ein Gegner startet an der obersten LED und bewegt sich nach unten. Ein Tastendruck erzeugt dagegen einen neuen Schuss auf LED 0, der sich nach oben bewegt. Es können dabei sogar mehrere Schüsse gleichzeitig unterwegs sein.

Besonders wichtig: Die Bewegung wird nicht über lange sleep()-Aufrufe gesteuert. Stattdessen prüft das Programm mit time.ticks_ms(), ob genügend Zeit für den nächsten Schritt vergangen ist. Dadurch können währenddessen weiterhin Taster abgefragt, LEDs aktualisiert und Kollisionen erkannt werden.

Treffen sich die LEDs wirklich?

Eine kleine Besonderheit steckt in der Kollisionsprüfung. Es reicht nicht aus, nur zu prüfen, ob Gegner und Schuss gerade auf derselben LED stehen.

Bei höherer Geschwindigkeit könnte beispielsweise Folgendes passieren:

vorher:
Gegner = LED 13
Schuss  = LED 12

danach:
Gegner = LED 12
Schuss  = LED 13

Die beiden LEDs haben sich gekreuzt, waren aber zu keinem Zeitpunkt auf derselben Position.

Deshalb speichert das Programm zusätzlich die vorherige Position und erkennt auch dieses Überkreuzen. Erst wenn sich Gegner und Schuss treffen und dieselbe Farbe besitzen, gibt es einen Punkt.

Trifft dagegen ein Schuss auf einen Gegner mit der falschen Farbe, ist das Spiel sofort vorbei.

Treffer bedeutet: Score hoch, Tempo hoch

Nach einem erfolgreichen Treffer passiert gleich einiges:

score += 1

enemy_interval = max(
    MIN_INTERVAL_MS,
    enemy_interval - INTERVAL_DECREASE_MS
)

Der Gegner und der passende Schuss werden entfernt, der Score steigt um eins und das Spiel wird etwas schneller. Anschließend wird geprüft, ob aufgrund des neuen Scores zusätzliche Gegner erscheinen sollen.

Gleichzeitig gibt es über den Piezo-Buzzer eine kurze Tonfolge und das OLED-Display zeigt den aktuellen Score, die Anzahl der Gegner und das derzeitige Tempo an.

Drei einfache Spielzustände

Intern kennt das Programm lediglich drei Zustände:

STATE_WAITING
STATE_PLAYING
STATE_GAME_OVER

Dadurch bleibt die Hauptschleife übersichtlich: Im Wartezustand startet ein Tastendruck das Spiel, während des Spiels werden Gegner und Schüsse verarbeitet und nach einem Game Over startet der nächste Tastendruck eine neue Runde.

Genau diese Aufteilung gefällt mir an dem Projekt besonders gut: Hinter dem sichtbaren LED-Spiel steckt keine riesige oder komplizierte Software. Mit ein paar Listen, Zeitstempeln und einer überschaubaren Zustandslogik entsteht bereits ein kleines Spiel, das mit jedem Treffer anspruchsvoller wird.

Fazit

Aus einer kurzen Idee aus einem Instagram-Reel ist am Ende ein kleines, aber überraschend unterhaltsames LED-Reaktionsspiel mit dem XIAO ESP32-C6 geworden. Gerade die Mischung aus WS2812B LED-Stripe, vier Tastern, OLED-Display und Piezo-Buzzer macht aus dem einfachen Aufbau ein richtig kleines Arcade-Projekt.

Besonders gut gefällt mir, dass das Spiel sehr schnell erklärt ist, aber trotzdem von Runde zu Runde anspruchsvoller wird. Mit steigendem Score kommen mehr Gegner hinzu und gleichzeitig erhöht sich das Tempo – irgendwann reicht eine kleine Unachtsamkeit und das Spiel ist vorbei.

Technisch steckt dabei trotzdem einiges drin: Taster entprellen, mehrere LEDs gleichzeitig verwalten, Bewegungen zeitgesteuert umsetzen und Kollisionen korrekt erkennen. Genau das macht das Projekt auch für Einsteiger interessant, die mit MicroPython mehr als nur einzelne LEDs ein- und ausschalten möchten.

Mit der 3D-gedruckten Halterung lässt sich der Aufbau außerdem schön kompakt und dauerhaft umsetzen. Die Schaltung, den MicroPython-Code und die STL-Dateien kannst du direkt aus diesem Beitrag übernehmen und das Spiel selbst nachbauen.

Und natürlich lässt sich die Idee noch erweitern – etwa mit Highscore-Speicherung, zusätzlichen Schwierigkeitsstufen, anderen Sounds oder sogar einem Zwei-Spieler-Modus.

Wie weit kommst du? Wenn du das Spiel nachbaust, schreib mir gerne deinen Highscore in die Kommentare.

Transparenzhinweis: Dieser Beitrag wurde mit Unterstützung künstlicher Intelligenz erstellt und redaktionell geprüft. Mehr zur Nutzung von KI

Letzte Aktualisierung am: 03. September 2026

Foto von Stefan Draeger
Über den Autor

Stefan Draeger — Entwickler & Tech-Blogger

Ich zeige praxisnah, wie du Projekte mit Arduino, ESP32 und Smarthome-Komponenten umsetzt – Schritt für Schritt, mit Code und Schaltplänen.

Mehr Artikel von Stefan →

Schreibe einen Kommentar Antwort abbrechen

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

Kategorien

Kontakt & Hilfe

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden? Erstelle einfach ein Support-Ticket.

Support-Ticket erstellen
Keine Beiträge verpassen

Newsletter abonnieren

Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32, Smarthome und IoT direkt in dein Postfach.

Newsletter abonnieren
Videos & Tutorials

Draeger-IT auf YouTube

Entdecke meine Videos zu Arduino, ESP32, Raspberry Pi, Smarthome und spannenden Elektronikprojekten – mit Tutorials, Tests und Praxisbeispielen.

YouTube-Kanal besuchen
Freiwillige Unterstützung

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee. So hilfst du dabei, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

Auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kostenlose Online-Werkzeuge

Tools

Praktische Generatoren, Rechner und Hilfsmittel für deine Elektronik- und Entwicklungsprojekte.

Generatoren & Konverter

  • QR-Code Generator
  • Passwort Generator
  • PNG zu WebP konvertieren
  • Bilder online komprimieren
  • Code online formatieren

Rechner & Tabellen

  • Unix-Zeitstempel-Rechner
  • ASCII-Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner

LED-Matrix

  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix Generator
Kontakt

Anschrift & Kontaktdaten

Stefan Draeger

Königsberger Str. 13
38364 Schöningen

Telefon 01556 5432686

E-Mail info@draeger-it.blog

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com
Social Media

Folge mir auf

Weitere Projekte, Videos und Neuigkeiten findest du auch auf meinen Social-Media-Kanälen.

  • f Facebook
  • in LinkedIn
  • ▶ YouTube
  • ♪ TikTok
  • P Pinterest
  • ◎ Instagram
Rechtliche Informationen

Rechtliches

  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
  • KI-Transparenz bei draeger-it.blog
©2026 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
  • Optionen verwalten
  • Dienste verwalten
  • Verwalten von {vendor_count}-Lieferanten
  • Lese mehr über diese Zwecke
Einstellungen anzeigen
  • {title}
  • {title}
  • {title}