Escape Game: Lichtlabyrinth

Aus HSHL Mechatronik
Version vom 11. Januar 2026, 16:53 Uhr von Jonas.von-doellen@stud.hshl.de (Diskussion | Beiträge) (Grundlegende Funktionsweise der RGB-Matrix eingefügt)
Zur Navigation springen Zur Suche springen


Abb: 1 Lichtlabyrinth ausgeschaltet
Autoren: Jonas von Döllen & Julius von Agris
Betreuer: Prof. Schneider


Einleitung

Das Escape-Game „Lichtlabyrinth“ basiert auf einer RGB-8x8-LED-Matrix. Ziel des Spiels ist es, von einem Bewegungs-Lichtpunkt (z. B. Farbe x) zu einem Ziel-Lichtpunkt (z. B. Farbe y)zu gelangen. Der Anwender kann sich mit einem Steuerkreuz in Form von Tastern bewegen, um zur Ziel-LED zu gelangen. Die Schwierigkeit dabei liegt darin, dass der Anwender nicht einen beliebigen Weg einschlagen kann, sondern aus verschiedenen Labyrinth-Weg-Karten, die richtige herausfinden muss. Der Spieler erkennt somit auf der Matrix nicht direkt die möglichen Wege. Um die richtige Labyrinth-Weg-Karte zu finden, werden auf dem Spielfeld neben der Start-/ und der Ziel-LED, auch zwei weitere LEDs (z. B. Farbe z) leuchten, die auf den Labyrinth-Weg-Karten an unterschiedlichen Stellen mit einem Kreis gekennzeichnet sind. Diese LEDs muss der Anwender mit seinen Labyrinth-Weg-Karten abgleichen und die richtige auswählen. Hat der Anwender die richtige Karte ausgewählt, muss er dem Weg der Karte folgen, um das Rätsel zu lösen. Wählt der Anwender allerdings eine falsche Karte aus, macht einen Fehler (z. B. Betätigung eines falschen Tasters) auf dem Weg ins Ziel oder läuft die vorgegebene Zeit (wird durch eine immer schneller blinkende LED, welche nicht zu dem Spielfeld gehört, angezeigt) ab, verändern sich die LEDs auf dem Spielfeld und der Anwender muss von neu starten.

Schwierigkeitslevel: Mittel

Lernziele: Schüler schaffen es, räumlich und abstrakt zu denken. Die Informationen von der zweidimensionalen Karte müssen auf das Gerät (die Lichtmatrix) eigenständig projiziert werden.

Bezug zum MTR Studium: Die Vorstellungen von Räumen und äußerlichen Gegebenheiten sind grundlegend für CAD-Programme und zum Konstruieren. Das Gerät mit der Lichtmatrix bildet auch eigenständig ein mechatronisches System, welches Sensoren (Taster), Aktoren (die Lichtmatrix) und eine zentrale Prozesseinheit (Arduino) umfasst.

Anforderungen

Tabelle 1: Anforderungen an das Lichtlabyrinth
Nr Inhalt Prüfbarkeit Prio Ersteller Datum
1 Die LEDs auf der Matrix müssen einzeln mit dem Arduino Controller angesteuert werden. Sichtkontrolle auf der Matrix 1 Jonas von Döllen 3.10.2025
2 Taster müssen einzeln über einen Tastendruck per Hand ansteuerbar sein und nur einzeln ein Signal zulassen Auswertung der Tastersignale über Seriellenmonitor 1 Julius von Agris 3.10.2025
3 Countdown LED muss immer schneller blinken und nach 40 Sekunden mit der Anfangsblinkgeschwindigkeit wieder beginnen Sichtkontrolle auf dem Breadboard 1 Jonas von Döllen 3.10.2025
4 LED Matrix muss die Zahlen für das nächste Schloss in Form einer Segmentanzeige nacheinander anzeigen können Sichtkontrolle auf der Matrix 1 Jonas von Döllen 3.10.2025
5 Die vier Spielfelder-LEDs müssen auf dem Bildschrim angezeigt werden Sichtkontrolle auf der Matrix 1 Julius von Agris 3.10.2025
6 Bewegungs-LED muss mit den Tastern auf der Matrix bewegbar sein Sichtkontrolle auf der Matrix 1 Julius von Agris 3.10.2025
7 Unzulässige Bewegungen von der Wegkarte müssen das Spiel neu starten und das Feld soll rot aufleuchten Sichtkontrolle auf der Matrix und der Countdown-LED 1 Julius von Agris 3.10.2025
8 Bei Erreichen des Ziel-Lichtpunktes müssen die Zahlen auf der LED Matrix ausgegeben werden Sichtkontrolle auf der Matrix 1 Jonas von Döllen 3.10.2025


Funktionaler Systementwurf

Das Gehäuse beinhaltet eine Seite, in der 4 Taster eingebaut werden. Mittig davon ist die LED Matrix gut ersichtlich, welche einen Blick auf die 4 LED in 3 unterschiedlichen Farben (1 Rote für das Ziel, 1 blaue für den Bewegungspunkt und 2 grüne für Orientierungspunkte) anzeigen. Zusätzlich muss die Countdown-LED ersichtlich sein, welche die noch verbliebene Zeit durch ein immer schnelleres blinken anzeigt.

Um das Spiel durchführen zu können, muss der Spieler Informationen über den Topologie des Labyrinthes haben. Daher werden zwei Zettel mit jeweils 2 Labyrinthwegen aufgezeichnet. Zu Unterscheidung der Labyrinthe werden die Orientierungspunkte markiert. Dies kann entweder mit einem Kreis, wie die Abbildung 2 zeigt oder farblich mit einem Punkt geschehen.

Das Escape Game soll anhand dieses Programmablaufsplan erfolgen. (siehe abbildung)

Technischer Systementwurf

Der Arduino diese Schaltung wird mit einem Netzteil über die DC Jack Buchse am Arduino versorgt. Die LED-Matrix wird mit den 5V des Arduinos versorgt. Eine weitere Leitung zur Ansteuerung der LED führt in die Digitalen I/O Pins des Arduinos. Hiermit wird per PWM Signalen, die LED-Matrix angesteuert. Des Weiteren wurden 4 Taster aufgebaut. Vom Ground-Potential der Taster führt jeweils eine grüne Leitung in den Arduino. Die Taster selber besitzen ein Pull-Up Widerstand. Der Ausgang des Tasters gehen jeweils an einem digitalem I/O Pin des Arduinos. Die Countdown LED wird dann noch mittels einem Vorwiderstandes auch wieder über einen digitalem I/O Pin angesteuert. Die digitalen I/O Ausgänge können bis auf die der LED-Matrix, da diesen ein digitalen I/O Pin mit PWM signal braucht, frei auswählen. Für die wirkliche Verdrahtung der einzelnen Bauelementen wird eine Leiterplatte designt, welche die Bauelemente untereinander verbindet und fixiert. (siehe Kapitel: Hardware)


Materialliste / Komponentenspezifikationen

Tabelle 2: Materialliste
Nr. Anz. Preis Beschreibung / Link Spezifikationen Abbildungen
1 1 19,90 € Arduino UNO R3
  • min. 6 digitale I/O Pins wobei einer PWM unterstützt
  • 5V Ausgangsspannung
  • 9V Eingangsspannung per Jack Buschse
  • Prozessor ATmega328p
  • gleiche Lochabmaße S.12
  • 16MHz Oszillator
  • 2KB SRAM
  • 32KB Flasch
Abb xx: Arduino UNO R3
2 1 8,99 € WS2812B RGB LED Digital Individually Addressable Panel Light LED Module Matrix Screen DC5V Controllers Image Video Text Display (2pcs 8x8 Pixels)
  • 5V Versorgungsspannung
  • 3840 mA Maximalstrom (immer max.Betriebsstrom vom Mircocontroller bei entsprechender Helligkeit ausrechnen. Beim Arduino nie mehr als 400mA)
  • Anzahl LEDx 64 (8x8)
  • LED Type WS2812B (SMD5050)
  • Interface IO
  • Abmaße 65mm x 65mm x 3mm
Abb xx: LED Matrix 8x8
3 1 0,26 € LED, 10 mm, THT, rot, Diffus, 900 mcd, 30°
  • 10mm Durchmesser
  • 1,95V Betriebsspannung
  • 20mA Betriebsstrom
Abb: xx Countdown LED
4 4 4,33 € Leuchttaster
  • 5V Versorgungsspannung
  • weiß LEDfarbe
  • 19mm Außendurchmesser vom Gewinde
Abb: xx Leuchttaste
5 1 3,90 € Netzteil für Mikrocontroller 9V 1A
  • 230VAC 50Hz Eingangsspannung
  • 9V Ausgangsspannung
  • 1A max. Ausgangsstrom
Abb: xx Netzteil
6 10 2,40 € Blechschrauben,
  • 2,9 x 6,5 mm Abmaße
  • PAN Head
  • PZD
7 1 - 3D-Druck Gehäuse (von HSHL)
  • schwarzes PLA-Filament
8 1 - 150 Ohm Widerstand für die Countdown-LED (von HSHL)
  • für THT-Montage
9 div. - Leitungen (von HSHL)
  • 22 AWG
10 div. - Lötzinn (von HSHL)
11 1 - Kupferleiterplatte (Hergestellt von HSHL)
  • 8x6cm Abmaße
  • für PCB Fräse geeignet
Bei Verwendung der Lochrasterplatte: 
Nr. Anz. Preis Beschreibung / Link Spezifikationen Abbildungen
12 1 2,60€ Lochrasterplatte
  • 2,54mm Lochraster
  • 7cm x 90cm Abmaße
Lochraster

Werkzeugliste

Tabelle 3: Werkzeugliste
Nr. Beschreibung Größe
1 Lötkolben
2 Abisolierzange
3 Kreuzschlitz-Schraubendreher 2mm
4 Schlitz-Schraubendreher 1mm
5 Schraubenschlüssel S22

Grundlegende Funktionsweise der RGB-Matrix

Umsetzung (HW/SW)

Hardware

Zur Verbindung der einzelnen Taster, der LED-Matrix und der Countdown-LED wurde eine Leiterplatte entworfen, die später dann mit einfach als Arduino Shield auf dem Arduino Uno R3 aufgesteckt werden kann. Diese Leiterplatte wird dann auch über die 4 Bohrungen der mit dem Gehäuse über die Schrauben verbunden. Die Leiterplatte wurde von Hand verlötet. Die Taster wurden mit flexibler Leitung verlötet und dann in die Schraubklemmen der Leiterplatte eingefügt. Zusätzlich wurde der Vorwiderstand der LED mit angelötet.

Für das Gehäuse wurde eine CAD Modell in Solid Works erstellt, welche die Taster, Arduino, Schrauben, Leiterplatte und die LED-Matrix beinhalten (Siehe Abbildung: )Die Montage erfolgt dann anhand der Explosionsansicht. Das Gehäuse sowie der Deckel wurden per 3D Druck angefertigt.

Die Taster sind beleuchtet und besitzen daher zwei GND Anschlüsse. Um eine Buchse auf der Leiterplatte zu sparen werden diese zusammengelötet.

Aufgrund von schlechter Lötstellen an der selbst designten Leiterplatte, war keine zuversichtlicher Kontakt gegeben. Aus zeitlichen Gründen konnte keine neue Leiterplatte gefräßt werden. Daher ist man dann auf eine vorhandene lochrasterplatte gewechselt. Hierbei ist zu beachten, dass durch den Versatz der der Female-Headerpins beim Arduino bei dem digitalem I/O Pins nur die digitalen I/O Pins von 0 - 7 verwendet werden können. Daher muss man die digitalen Ein- und Ausgänge anhand der Abbildung: in dem Simulink Programm abgeändert werden. Mehr dazu in Kapitel Software.

Software

Abb: xx Beispiel generiertes Labyrinth

Das Programm wurde wie in der PAP in ein Simulink Programm realisiert (siehe Funktionaler Systementwurf). Die einzelnen Labyrinthe wurden über die obigen Konstanten in einer Matrix [8][8] mit dem Datentyp uint8 abgespeichert. Hierfür wurde in Matlab ein Script geschrieben, welches die entsprechende Labyrinth zufällig über ein Backtracking-Algorithmus ausgibt. Bei dem Datentyp uint8 werden die ersten 4 bits verantwortlich für die möglichen zugänglichen Bewegungsrichtungen, wobei die Bitsstelle 0 die Richtung nach oben beschreibt, 1 nach rechts, 2 nach unten und 3 nach links. Die Dimensionen der Matirx gibt an, welche Lichtpunkt gemeint ist. Man kann es sich wie eine Tabelle mit Zeilen und Spalten vorstellen. Somit wäre für die für das Feld, welches die 10 beinhaltet, der dazugehörige Matrixausschnitt und das dahinterstehende Bitmuster für den uint8 Wert so sein:

Labyrinth1(2,3) = 0b0000 1001

Bitstelle 0 ist eine 1 daher ist der Weg nach oben erlaubt
Bitstelle 1 ist eine 0 daher ist der Weg nach rechts blockiert
Bitstelle 2 ist eine 0 daher ist der Weg nach unten blockiert
Bitstelle 3 ist eine 1 daher ist der Weg nach links erlaubt

Diese Konstanten kann man in diesem Programmen an den weißen Konstanten-Blöcken in dem folgendem Simulinkprogramm wiederfinden.

Für die Software wurden C-Funktion Blöcke genutzt, da diese wenig Speicherplatz bei der Compilierung benötigen. In den Blöcken wurde die Datentypen immer angezeigt, daher wurde bei diesem Programm auf die Typenendung, die sonst bei der Programmierrichtlinie vorgesehen ist, zur Übersichtlichkeit weggelassen. Der blaue Block wird zur Erfassung der Tastereingänge genutzt. Hierbei werden die Signale von Arduino an den digitalen Inputs der Taster eingelesen und in der C Funktion ausgewertet. Ein Taster-Signal wird hier nur weitergeleitet, wenn ausschließlich einer der Taster gedrückt wurde. Für den jeweilen Taster wird dann eine Zahl von 1 bis 4 entsprechend der Taster weitergegeben.

Die eigentliche Spielmechanik wird in dem gelben C-Funtion-Block realisiert. Und erfolgt nach der PAP. Der Timer, welcher die vergangene Zeit des aktuellen Spiels anzeigt und ein Ereignis bei Ablauf der Zeit auslöst, wurde ebenfalls mit einer C-Funkton-Block realisiert und ist an der orangen Farbe zu erkennen. Die aktuelle Zeit wird dann noch in eine separten, türkisen C-Funktion-Block weitergeleitet, der dann das gewünschte PWM Signal an die Countdown LED über den digitalen Output des Arduinos sendet.

Für die LED-Matrix wurde über den I/O Builder ein eigenen Block realisiert, welcher dann die aktuellen Felder der LEDs anzeigt und die beim Erreichen des Zielpunktes den Zahlencode auf der RGB Matrix anzeigt.

Um nun auch die Software nutzen zu können, muss der Spieler wissen, welche Richtungen er mit dem Bewegungslichtpunkt gehen darf. Hierfür werden die Lichtlabyrinthwege ausgedruckt. Dies kann man mit dem Matlabscript realisieren, welches aus den Labyrinthkonstanten die jeweiligen Wege zeichnet.

Systemtest

Tabelle 4: Geprüfte Anforderungen

ID Inhalt Bereich Autoren Geprüft am Status Testmethodik Anzahl Tests
1 Die LEDs auf der Matrix müssen einzeln mit dem Arduino Controller angesteuert werden. Hardware/Software Julius von Agris & Jonas von Döllen 10.01.2026 i.O. Durch das Erreichen jeder LED mithilfe der Taster werden alle Spielpunkte in jeder Matrix überprüft 5
2 Taster müssen einzeln über einen Tastendruck per Hand ansteuerbar sein und nur einzeln ein Signal zulassen Hardware/Software Julius von Agris & Jonas von Döllen 10.01.2026 i.O. Beim Durchspielen des Spiels werden alle Taster gedrückt und deren Funktionen getestet. Dabei werden alle auch mehrere Taster gleichzeitig gedrückt 20
3 Countdown LED muss immer schneller blinken und nach 40 Sekunden mit der Anfangsblinkgeschwindigkeit wieder beginnen Hardware/Software Julius von Agris & Jonas von Döllen 10.01.2026 i.O. Das Spielfeld wird in Ruhe gelassen und man stoppt die Zeit mit einer externen Stoppuhr. 10
4 LED Matrix muss die Zahlen für das nächste Schloss in Form einer Segmentanzeige nacheinander anzeigen können Hardware/Software Julius von Agris & Jonas von Döllen 10.01.2026 i.O.
5 Die vier Spielfelder-LEDs müssen auf dem Bildschrim angezeigt werden Hardware/Software Julius von Agris & Jonas von Döllen 10.01.2026 i.O.
6 Bewegungs-LED muss mit den Tastern auf der Matrix bewegbar sein Hardware/Software Julius von Agris & Jonas von Döllen 10.01.2026 i.O.
7 Unzulässige Bewegungen von der Wegkarte müssen das Spiel neu starten und das Feld soll rot aufleuchten Hardware/Software Julius von Agris & Jonas von Döllen 10.01.2026 i.O.
8 Bei Erreichen des Ziel-Lichtpunktes müssen die Zahlen auf der LED Matrix ausgegeben werden Hardware/Software Julius von Agris & Jonas von Döllen 10.01.2026 i.O.

Ergebnis

Abb: xx

Das Escape Game "Lichtlabyrinth" konnte erfolgreich Umgesetzt werden.

Es ermöglicht die Bewegung von einem Startpunkt zu einem Zielpunkt durch die Betätigung von vier Tastern, mit denen der Anwender die Richtung der Bewegung bestimmen kann. Dies ist allerdings nur möglich, solange der Anwender keine unerlaubten Begegnungen macht und dies in einer Zeit von 40 Sekunden schafft. Hat der Anwender es geschafft das Ziel zu erreichen, erscheint auf der RGB-Matrix ein Lauflicht in dem der Zahlencode zu erkennen ist.

Zusammenfassung

Fazit

Das Escape Game "Lichtlabyrinth" konnte erfolgreich Umgesetzt werden. Zu erst wurden die Anforderungen an das Lichtlabyrinth definiert. Anschließend wurde für das Lichtlabyrinth ein Funktionaler Systementwurf erstellt. In diesem wurde eine Skizze des Aufbaus und ein Programmablaufplan erstellt. Nach der Erstellung des Funktionalen Systementwurf wurde ein Technischer Entwurf erstellt. In diesem ist die technische Realisierung zu erkennen. Anschließend mussten die benötigten Bauteile zusammengetragen und bestellt werden. Des Weiteren wurde eine Platine designt und gefertigt. Auf Grund von Beschädigungen an der Platine durch das Löten, musste auf eine Lochrasterplatte umgestiegen werden. Ein weiter Schritt war die Erstellung eines Gehäuses mit CAD. Dieses Konnte anschließend gedruckt und montiert werden. Ein weiterer Schritt die Programmierung für den Arduino in Matlab Simulink werden. Nach all diesen Schritten konnte das Lichtlabyrinth erfolgreich hergestellt und montiert werden.

Lessons Learned

Bei der Durchführung dieses Projektes konnte viel Wissen und Erfahrung gesammelt werden. Es konnten Erfahrungen mit dem Arduino und dem Umgang mit Matlab Simulink gesammelt werden. Außerdem konnten Erfahrungen im Bereich der Projektplanung allgemein gesammelt werden. Dazu gehört sowohl die Planung des Projektes als auch die zeitliche Organisation. Bei der Durchführung dieses Projektes sind auch einige Probleme aufgetreten, welche behoben werden mussten. Ein gute Beispiel dafür ist die Platine, welche korrekt und Funktionsfähig designend wurde aber letztendlich beim Löten beschädigt wurde.

Abschließend ist anzumerken, dass viele Erfahrungen gesammelt werden konnten.


Projektunterlagen

Projektplan

Projektdurchführung

Weblinks

[1] https://www.bombmanual.com/web/index.html (Seite 15)

Literatur


→ zurück zur Übersicht: WS 25/26: Escape Game