Escape Game: Memory-Safe: Das Farbcode-Rätsel: Unterschied zwischen den Versionen
| Zeile 684: | Zeile 684: | ||
1- Geddes M. Arduino Project Handbook: 25 Practical Projects to Get You Started. No Starch Press; 2016. | 1- Geddes M. Arduino Project Handbook: 25 Practical Projects to Get You Started. No Starch Press; 2016. | ||
2- Raft snieders, Nordhorn 2021. alle Rechte vorbehalten, Arduino Anleitungen mit Praxisaufgaben und Beispielen. Auflage 2,2010. | 2-Geddes M. Arduino-Projekte: 25 Bastelprojekte für Maker zum Loslegen. dpunkt.verlag; 2017. | ||
3- Raft snieders, Nordhorn 2021. alle Rechte vorbehalten, Arduino Anleitungen mit Praxisaufgaben und Beispielen. Auflage 2,2010. | |||
Version vom 6. Januar 2026, 14:30 Uhr
| Autoren: | Delmas Ngoumtsa , Christian Teyou, Raoul Yemtsa |
| Betreuer: | Prof. Krome |
Einleitung
Im Rahmen des Fachpraktikums an der Hochschule Hamm-Lippstadt im Studiengang Mechatronik soll jede Gruppe ein mechatronisches Rätsel entwickeln, das innerhalb von ca. fünf Minuten lösbar ist. Die entwickelten Rätsel verbleiben an der HSHL und werden zu einem Escape-Game kombiniert, das von Schülern und Studierenden gespielt werden kann.
Das vorliegende Rätsel trägt den Titel „Memory-Safe: Das Farbcode-Rätsel“. Ziel des Spiels ist es, einen Safe zu öffnen, indem sich der Spieler eine zufällig generierte Farbreihenfolge merkt und diese anschließend in der richtigen Reihenfolge über entsprechende Taster eingibt. Der Safe öffnet sich nur, wenn die eingegebene Farbfolge vollständig bei jeden Levels(Schwierigkeitsstufen) korrekt ist. Im Rahmen dieses Projekts werden fünf LEDs unterschiedlicher Farben (rot, grün, blau, gelb und weiß) eingesetzt, die jeweils einem eigenen Taster mit der selben Farbe zugeordnet sind. Sobald eine oder mehrere LED(s) einer oder mehrere bestimmten Farbe aufleuchtet, dann gibt der Buzzer einen kurzen Ton aus. Der Spieler muss daraufhin den oder die passenden Taster betätigen, um die Sequenz korrekt nachzubilden. Der Safe wird mithilfe eines Servomotors verriegelt und durch einen Infrarotsensor überwacht. Sollte ein Spieler versuchen, die Tür des Safes gewaltsam oder ohne die richtige Farbreihenfolge zu öffnen, reagiert das System sofort, indem der Buzzer alarmiert.
Das gesamte Spiel umfasst 60 Sequenzen deren 20 Sequenzen in 4 Zyklen pro Level und wird wie folgt geteilt:
• Level 1 (Leicht):
- Zyklus 1 (nur eine LED leuchtet) in dieser Reihenfolge :[rot] ,[grün],[blau], [gelb],[weiß];
- Zyklus 2 ( zwei LEDs leuchten) in dieser Reihenfolge :[rot, weiß],[gelb, grün],[blau, weiß],[grün, weiß],[rot, blau];
- Zyklus 3 ( drei LEDs leuchtet) in dieser Reihenfolge :[rot, grün, blau],[grün, blau, gelb],[blau, gelb, weiß],[rot, blau, weiß],[rot, grün, gelb];
- Zyklus 4 ( vier LEDs leuchtet) in dieser Reihenfolge :[rot, gelb, grün, blau],[grün, blau, gelb, weiß],[rot, blau, gelb, weiß],[rot, grün, gelb, weiß],[rot ,grün, blau, weiß]. Werden die 20 Sequenzen richtig in Reihenfolge eingegeben, leuchten zuerst alle fünf LEDs in einer Sekunde, dann gibt der Buzzer gleichzeitig einen Ton aus.
• Level 2 (Mittel): - Zyklus 1 ( eine oder mehrere LED(s) leuchten) in dieser Reihenfolge :[rot, blau, weiß],[gelb],[blau],[rot, blau],[rot, grün, blau, weiß];
- Zyklus 2 ( eine oder mehrere LED(s) leuchten) in dieser Reihenfolge :[rot, grün, gelb, weiß],[rot, gelb, grün, blau],[blau, gelb, weiß],[grün],[grün, weiß];
- Zyklus 3 ( eine oder mehrere LED(s) leuchten) in dieser Reihenfolge :[rot, grün, gelb],[rot, blau, gelb, weiß],[blau, weiß],[rot, weiß],[grün, blau, gelb, weiß];
- Zyklus 4 ( eine oder mehrere LED(s) leuchten) in dieser Reihenfolge :[weiß],[gelb, grün],[grün, blau, gelb],[rot, grün, blau],[rot] Werden die 20 Sequenzen richtig in Reihenfolge eingegeben, leuchten zuerst alle fünf LEDs in einer Sekunde und schalten sie sich aus ,nach halber Sekunde leuchten sie wieder in einer Sekunde , dann gibt der Buzzer gleichzeitig einen Ton aus.
• Level 3 (Schwierig) : Die Sequenzen des Levels 3 sollten vorher nicht bekannt werden ,da die Sequenz der Leuchte einer oder mehrerer LED(s) wird oder werden zufällig generiert.
- Zyklus 1 (nur eine LED leuchtet zufällig): Beispielsweise [weiß] ,[grün],[blau], [gelb],[weiß] oder [rot] ,[rot],[rot], [gelb],[weiß] usw.
- Zyklus 2 ( zwei LEDs leuchten zufällig): Beispielsweise [rot, weiß],[weiß, rot],[blau, weiß],[grün, weiß],[rot, blau] oder [rot, weiß],[gelb, grün],[blau, weiß],[grün, weiß],[rot, blau] usw.
- Zyklus 3 ( drei LEDs leuchtet zufällig): Beispielsweise [rot, grün, blau],[grün, blau, rot],[blau, gelb, weiß],[rot, blau, weiß],[rot, grün, gelb] oder [rot, grün, blau],[grün, blau, gelb],[blau, gelb, weiß],[rot, gelb, weiß],[rot, grün, gelb] usw.
- Zyklus 4 ( vier LEDs leuchtet zufällig): Beispielsweise [rot, gelb, grün, blau],[rot, gelb, grün, blau],[rot, gelb, grün, blau],[rot, grün, gelb, weiß],[rot ,grün, blau, weiß] oder [rot, gelb, grün, blau],[grün, blau, gelb, weiß],[grün, blau, gelb, weiß],[grün, blau, gelb, weiß],[rot ,grün, blau, weiß]usw. Werden die 20 Sequenzen richtig in Reihenfolge eingegeben, blinken alle fünf LEDs in einer Sekunde und der Buzzer gibt gleichzeitig einen Ton aus, um den Erfolg zu signalisieren. Parallel desaktiviert sich die Sicherung der Infrarotsensor und der Servomotor entriegelt den Safe.
• Wird eine falsche Reihenfolge eingegeben, leuchtet die rote LED, gibt der Buzzer einen Ton aus und der Spieler muss einen neuen Versuch starten.
Das Spiel kann in verschiedenen Schwierigkeitsstufen gespielt werden, abhängig von der Geschwindigkeit der fünf Farbreihenfolge. Man kann folgenden Farbreihenfolge Situationen haben:
Der Spieler hat pro Sequenz maximal 2,5 Sekunden Zeit, um die korrekte Kombinationsfarbe(n) zu finden. Nach dieser Zeit ohne den oder die richtigen Taster zu drücken , leuchtet(en) die richtige LED(s) Standardmäßig ,dann gibt der Buzzer gleichzeitig einen Ton aus und das Spiel geht zum Ende: Der Spieler hat verloren und muss einen neuen Versuch starten.
Das Ziel dieses Rätsels ist es, das Kurzzeitgedächtnis, die Reaktionsfähigkeit und die Aufmerksamkeit des Spielers zu trainieren.
• Die unterschiedlichen Schwierigkeitsstufen ermöglichen ein gezieltes Training von Merkfähigkeit, Aufmerksamkeit und Konzentration, da das präzise Beobachten der Farbkombinationen die visuelle Wahrnehmung sowie Mustererkennung und Reaktionsgeschwindigkeit fördert. Im hohen Schwierigkeitsgrad treten mehrere Farben gleichzeitig auf, wodurch die parallele Informationsverarbeitung gefordert und Multitasking-Fähigkeit, Kurzzeitgedächtnis sowie Entscheidungsfähigkeit unter Zeitdruck gestärkt werden. Durch die schrittweise Steigerung der Anforderungen wird die Konzentrationsfähigkeit systematisch aufgebaut und gefestigt. Gleichzeitig vermittelt das Spiel ein praxisnahes Verständnis für Wahrnehmungs-, Reaktions- und Informationsverarbeitungsprozesse in mechatronischen Systemen und verdeutlicht das Zusammenspiel von Sensorik, Aktorik und Benutzerinteraktion.
• Lernziele: Die Studierenden lernen, Sensoren und Aktoren wie LEDs, Taster, Servomotor und Infrarotsensor gezielt einzusetzen. Durch die Programmierung eines Mikrocontrollers wird das Verständnis für logische Steuerungen und Zustandsmaschinen vertieft. Gleichzeitig trainiert das Spiel das Kurzzeitgedächtnis, die Reaktionsgeschwindigkeit und die Konzentrationsfähigkeit der Spieler. Die Signalauswertung und Fehlersignalisierung vermitteln praxisnah den Aufbau sicherer und robuster Systemarchitekturen.
• Bezug zum MTR Studium: Das Projekt „Memory-Safe“ verknüpft praxisnah die drei Kernbereiche der Mechatronik: Mechanik, Elektronik und Informatik. Im mechanischen Teil wird der Safe konstruiert und über einen Servoantrieb verriegelt und entriegelt. Die elektronische Ebene umfasst die Signalverarbeitung durch Taster, LEDs, Sensoren und Aktoren. Im Bereich der Informatik wird die Steuerungs- und Sicherheitslogik mithilfe eines Mikrocontrollers programmiert. Dadurch lernen die Studierenden, mechanische, elektrische und softwaretechnische Komponenten zu einem funktionalen System zu integrieren. Das Projekt fördert somit systemorientiertes Denken und vermittelt zentrale Kompetenzen der mechatronischen Systementwicklung.
• Woraus besteht das Rätsel?
Das Rätsel besteht aus mehreren mechatronischen Komponenten, die gemeinsam das Spielsystem bilden. Die Eingabeeinheit umfasst fünf Farbtaster, über die der Spieler die Farbreihenfolge eingibt. Zur Anzeige dienen fünf LEDs, die die Sequenz und den Systemstatus visualisieren. Ein Servomotor übernimmt die Verriegelung und Entriegelung des Safes, während ein Infrarotsensor die Türbewegung überwacht. Ein Buzzer gibt akustisches Feedback bei Erfolg, Fehler oder unzulässiger Aktion. Die gesamte Steuerung und Signalverarbeitung erfolgen über einen Arduino-Mikrocontroller, der alle Komponenten koordiniert.
Anforderungen
| Nr. | Inhalt | Ersteller | Erstellungsdatum | Geprüft von | Prüfungsdatum |
|---|---|---|---|---|---|
| 1 | Das Farbcode-Rätsel wird gebaut, sodass man es in 5 min lösen kann . | Delmas Ngoumtsa ; Christian Teyou & Raoul Yemtsa | 08.10.2025 | Delmas Ngoumtsa ; Christian Teyou & Raoul Yemtsa | 29.12.2025 |
| 2 | Das Rätsel beginnt am Startpunkt mit dem Verschluss des Tresors und die Aktivierung der Sicherheit durch den Infrarotsensor. | Delmas Ngoumtsa ; Christian Teyou & Raoul Yemtsa | 08.10.2025 | Delmas Ngoumtsa ; Christian Teyou & Raoul Yemtsa | 29.12.2025 |
| 3 | Dann fängt an mit einer gleichzeitig blinkenden LED und seiner Tonausgabe :das ist die erste Aufgabe ,um der Weg zur Lösung des Rätsel zu finden . | Delmas Ngoumtsa ; Christian Teyou & Raoul Yemtsa | 08.10.2025 | Delmas Ngoumtsa ; Christian Teyou & Raoul Yemtsa | 29.12.2025 |
| 4 | Betätigt der Spieler/in auf dem richtigen Farbknopf der vorherigen geblinkten LED, gibt der Buzzer gleichzeitig den selben vorherigen Ton aus. Hingegen betätigt der Spieler/in auf dem falschen Farbknopf der vorherigen geblinkten LED, gibt der Buzzer gleichzeitig einen kurzfristigen (2,5 s) Niederlageton aus und signalisiert somit das Ende des Spiels. | Delmas Ngoumtsa ; Christian Teyou & Raoul Yemtsa | 08.11.2025 | Delmas Ngoumtsa ; Christian Teyou & Raoul Yemtsa | 29.12.2025 |
| 5 | Die Betätigungen auf den richtigen Farbknöpfe in der Reihenfolge alle Levels wird gleichzeitige mit dem Blinken von allen LEDs und einem Sieg-Ton signalisiert. | Delmas Ngoumtsa ; Christian Teyou & Raoul Yemtsa | 08.11.2025 | Delmas Ngoumtsa ; Christian Teyou & Raoul Yemtsa | 29.12.2025 |
| 6 | und bezeichnet somit das Ende des Spiels bzw. des Schwierigkeitslevel. | Delmas Ngoumtsa ; Christian Teyou & Raoul Yemtsa | 08.11.2025 | Delmas Ngoumtsa ; Christian Teyou & Raoul Yemtsa | 29.12.2025 |
| 7 | Danach wir der Tür der Tresor von dem Infrarotesensor entsichert und das Türverriegelungsmechanismus entriegelt | Delmas Ngoumtsa ; Christian Teyou & Raoul Yemtsa | 08.11.2025 | Delmas Ngoumtsa ; Christian Teyou & Raoul Yemtsa | 29.12.2025 |
| 8 | Man muss das Rätsel konzipiert ,dass das in einer Schulkarton reinpasst | Delmas Ngoumtsa ; Christian Teyou & Raoul Yemtsa | 08.11.2025 | Delmas Ngoumtsa ; Christian Teyou & Raoul Yemtsa | 29.12.2025 |
| 9 | Das Rätselprinzip und Lösungsprinzip muss sowohl für Kinder als auch Erwachsene geeignet sein | Delmas Ngoumtsa ; Christian Teyou & Raoul Yemtsa | 08.11.2025 | Delmas Ngoumtsa ; Christian Teyou & Raoul Yemtsa | 29.12.2025 |
| 10 | Die Musterlösung und Tipps müssen von der Herstellergruppe zur Verfügung gestellt werden | Delmas Ngoumtsa ; Christian Teyou & Raoul Yemtsa | 08.11.2025 | Delmas Ngoumtsa ; Christian Teyou & Raoul Yemtsa | 29.12.2025 |
| 11 | Die Herstellergruppe muss aufpassen, dass die Lösung des Rätsel sich nicht im Internet befindet sondern in Fachbücher | Delmas Ngoumtsa ; Christian Teyou & Raoul Yemtsa | 08.11.2025 | Delmas Ngoumtsa ; Christian Teyou & Raoul Yemtsa | 29.12.2025 |
Funktionaler Systementwurf
Der in der Abb.1 dargestellten Verlauf zeigt schrittweise wie das Memory-Safe: Das Farbcode-Rätsel systematisch funktioniert.
Zuerst: das ganzes System befindet sich Außerbetrieb.
Zweiten: Klappt der Spieler/in der Tresortür zu, dann wird das System sofort in Betrieb und der Arm der Servomotor rotiert um 90° um die Tresortür zu riegeln .Gleichzeitig nach dem Türverriegelungsmechanismus aktiviert sich das Sicherheitssystem durch den Infrarotsensor.
Drittens: Dann fängt an (Startpunk) mit einer gleichzeitig blinkenden LED und seiner Tonausgabe :das ist die erste Aufgabe ,um der Weg zur Lösung des Rätsel zu finden .
4.:Betätigt der Spieler/in auf dem richtigen Farbknopf der vorherigen geblinkten LED, gibt der Buzzer gleichzeitig den selben vorherigen Ton aus. Hingegen betätigt der Spieler/in auf dem falschen Farbknopf der vorherigen geblinkten LED, gibt der Buzzer gleichzeitig einen kurzfristigen (3s) Niederlageton aus und signalisiert somit das Ende des Spiels.
5.:Die Betätigungen auf den richtigen Farbknöpfe in der Reihenfolge eines Spielzyklus wird gleichzeitige mit dem Blinken von allen LEDs und einem Sieg-Ton signalisiert.
6.:Dieser Signal bezeichnet somit das Ende des Spiels bzw. des Schwierigkeitslevel.
7.: Zum Schluss wird der Tür der Tresor von dem Infrarotesensor entsichert und das Türverriegelungsmechanismus entriegelt .

Technischer Systementwurf und Verdrahtungsplan
Die folgende Abb.2 darstellt den Aussicht den Verbindungen zwischen Bauteilen und den MiKrocontroller mit der Hilfe des Breadboards (Steckbrett) als Test-Platine.Aber Für die Form des fertigen Rätsels,wird Lochrasterplatine für eine stabile und dauerhafte Lötverbindungen und zur mechanischen Befestigung der Bauteile wie auf den Abb.9 zu sehen ist.

Materialliste
- Das Mikrocontroller-Board Arduino Uno R3 als zentrale Steuereinheit
- Der Servomotor als Tresorverriegelung.
- Der Infrarotsensor als Sicherheit des Systems
- Der Buzzer als Meldungsalarm
- Die 5 LEDs(rot, grün, blau, gelb, weiß) als Leuchtmeldung
- Die 5 Taster(rot, grün, blau, gelb, weiß) als Steuerungsmittel
- Lochrasterplatine für dauerhafte Lötverbindungen und zur mechanischen Befestigung der Bauteile
- Breadboard Jumper / Überbrückungskabel für Verbindungselemente zwischen Komponenten
Komponentenspezifikation
Für eine weitere Durchführung dieses Projekts ist es wichtig die Spezifikation von Hauptkomponenten zu erwähnen.
Die sich in der Tabelle 3 befundeten Komponentenspezifikation:
| Komponenten | Spezifikationen |
|---|---|
| Mikrocontroller Arduino Uno (Rev3) | dient zur Steuerung aller elektronischen Komponenten (Taster, LEDs, Servo, Sensor etc.).Spannung: 5 V
Eingangsspannung: 7–12 V (empfohlen) Digitale Pins: 14 (davon 6 PWM) Analoge Eingänge: 6 Taktfrequenz: 16 MHz Schnittstellen: USB, UART, SPI, I²C |
| Servomotor | Tresorverriegelung (Verriegelung der Safe-Tür) mit der Betriebsspannung: 5 V, dem Drehmoment: ca. 2–3 kg·cm, dem Stellwinkel: 0–180°, der Steuerung: PWM |
| IR-Sensor | Entfernung 0–10 cm, 5 V, Türüberwachung (Tresorverriegelung-Status-Erkennung: offen/geschlossen).Versorgung: 5 V, Reichweite: 2–10 cm, Ausgang: Digital (HIGH/LOW) |
| Buzzer (aktiv) | Akustisches Signal (z. B. Warnung oder Alarm).Spannung: 5 V, Stromaufnahme: 30 mA, Frequenz: ~2 kHz und Geräusch-Entwicklung: 85 dB |
| LED(rot, grün, blau, gelb, weiß) | Leuchtmeldung bzw. Anzeigeelemente zur Signalisierung von Zuständen (z. B. Status, Fehler, Freigabe etc.).Typ: 5 mm, Betriebsspannung: ca. 2 V (rot, gelb), 3 V (grün, blau, weiß), Strom: 20 mA |
| Taster | 12 mm Drucktaster, Schließer, 5 V, Bedienereingabe oder Steuerungsmittel |
| Lochrasterplatine | Dient als stabile Trägerplatine für dauerhafte Lötverbindungen und zur mechanischen Befestigung der Bauteile. Material: FR4 Epoxidharz ;Rastermaß: 2,54 mm ;Größe: z. B. 7 × 9 cm oder 10 × 15 cm ;Bohrungsdurchmesser: 1 mm |
| Breadboard Jumper / Überbrückungskabel | Verbindungselemente zwischen Komponenten und Steckpunkten auf der Lochrasterplatine bzw. dem Breadboard oder zum Arduino. Typen: Male–Male, Male–Female, Female–Female ;Längen: 10 – 30 cm ;Leiterquerschnitt: AWG 22–24 |
Umsetzung (SW/HW)
Umsetzung der Software
Programmierugsplan:
Der folgende Programmierugsplan für den Programmablauf dieses Projekts in Abb.11 wurde von dem Programm PapDisigner erstellt.

Simulink Modell:
Das in Abb. 12 dargestellte Simulink-Modell stellt die Blöcke dar, die anhand des in Abb. 11 dargestellten Gesamtablaufs des Programms erstellt wurden.

Bei Kalibrierung der Infrarotsensorkennlinie (Sharp GP2Y0A21YK0F) wurde eine Simulink Blöke bzw. 1-D Lookup Table ( siehe Abb. 12) mit den folgenden Werten in Tabelle 4 .
| Gemessenen Messabstände in cm auf dem Bildschirm | Position des Gegenstands (Reflektor) in cm |
|---|---|
| 640 | 25 |
| 600 | 24 |
| 549 | 23 |
| 508 | 22 |
| 470 | 21 |
| 435 | 18 |
| 405 | 17 |
| 380 | 16 |
| 356 | 15 |
| 336 | 14 |
| 325 | 13 |
| 310 | 12 |
| 275 | 11 |
| 259 | 10 |
| 248 | 9 |
| 239 | 8 |
Programm_Code
Die Hauptblöcke in Abb.13 stellt die MATLAB-function dar. Mithilfe dieser Funktion werden Aktoren und Sensoren über eine bestimmte Spannung miteinander verbunden. Das Programmcode der Schnittstelle dieser MATLAB-function ist wie folgt:

%****************************************************************************************
% Hochschule Hamm-Lippstadt - Studiengang Mechatronik - WS25-26 *
%****************************************************************************************
% Modul : Fachpraktikum Mechatronik *
% Datum : 25. September 2025 - 16. Januar 2026 *
% Funktion : Escape Game: Memory-Safe: Das Farbcode-Rätsel *
% Hardware : Matlab Simulink *
% Implementation : Arduino Micro-controller UNO_R3 *
% Device : LEDs,Schalter,Infrarotsensor,Servo_Motor,Buzzer *
% Prüfer : Prof. Dr.-Ing. Krome *
% Authoren : Delmas Ngoumtsa,Christian Teyou & Raoul Yemtsa *
%****************************************************************************************
function [T,Servo_Motor,IR_Buzzer,Buzzer,rote_LED, gruene_LED,blaue_LED,gelbe_LED,weisse_LED,roter_Taster,gruener_Taster,blauer_Taster,gelber_Taster,weisser_Taster]= fcn(Time, U_Buzzer, U_LED,U_roter_Taster,U_gruener_Taster,U_blauer_Taster,U_gelber_Taster,U_weisser_Taster,U_Infra_Rot_Sensor)
persistent lastTrigger phase_1 phase_2 phase_3 phase_4 phase_5
if isempty(lastTrigger)
lastTrigger = 0; % Startwert: außerhalb des Intervalls
phase_1 = 0;
phase_2 = 0;
phase_3 = 0;
phase_4 = 0;
phase_5 = 0;
end
% --- Konstante Parameter ---
lockTime = 5; % Sperrzeit: 10 s und abhängig mit zeile 37
dt = 5; % Zeitschritt für Simulation (1 ms)und abhängig mit zeile 37
N = round(lockTime / dt); % Anzahl Schritte pro 10 s
rote_LED = 0 ;
gruene_LED= 0;
blaue_LED = 0;
gelbe_LED = 0;
weisse_LED =0;
Buzzer = 0 ;
roter_Taster = U_roter_Taster ;
gruener_Taster = U_gruener_Taster ;
blauer_Taster = U_blauer_Taster;
gelber_Taster = U_gelber_Taster;
weisser_Taster = U_weisser_Taster;
T=Time;
Servo_Motor = U_LED*90; % Tür Schliessen
while U_Infra_Rot_Sensor ~= 2 % Infrarotsensor aktualisieren
if Time >= 9 && Time <= 10
rote_LED = U_LED;
Buzzer= U_Buzzer;
phase_1 = 1;
end
switch phase_1
case 1
% if U_gruener_Taster == 1 || U_blauer_Taster == 1 || U_gelber_Taster == 1 || U_weisser_Taster == 1 && Time > 20 && Time <= 28
%rote_LED = U_LED;
%Buzzer= U_Buzzer; % auf dem Bildschirm " bitte der richtige Taster Drücken" zeigen lassen
%end
for i1 = 1:N
t = Time + (i1-1)*dt;
% Bedingung: Taster gedrückt + 10s seit letztem Trigger vorbei
% von 10 bis 10 hat ma N=round 1 also jede 10 s kann ein round gespiel und abhängig mit Zeile 11 und 12
if U_roter_Taster == 1 && Time >= 10 && Time <= 20 && (t - lastTrigger) >= lockTime
rote_LED = U_LED;
Buzzer= U_Buzzer;
lastTrigger = t;
phase_1 = 2;
else
if (Time >= 21 && Time <= 21.5)
rote_LED = U_LED;
Buzzer= U_Buzzer;
end
if (Time >= 23 && Time <= 23.5)
rote_LED = U_LED;
Buzzer= U_Buzzer;
end
if (Time >= 25 && Time <= 25.5)
rote_LED = U_LED;
Buzzer= U_Buzzer;
end
if (Time >= 27 && Time <= 27.5)
rote_LED = U_LED;
Buzzer= U_Buzzer;
end
end
end
case 2
if Time > 20 && Time <= 21
gruene_LED = U_LED;
Buzzer= U_Buzzer;
phase_2 = 1;
end
end
switch phase_2
case 1
for i2 = 1:N
t = Time + (i2-1)*dt;
% Bedingung: Taster gedrückt + 10s seit letztem Trigger vorbei
if U_gruener_Taster == 1 && Time >= 22 && Time <= 32 && (t - lastTrigger) >= lockTime
gruene_LED = U_LED;
Buzzer= U_Buzzer;
lastTrigger = t;
phase_2 = 2;
else
if (Time >= 33 && Time <= 33.5)
gruene_LED = U_LED;
Buzzer= U_Buzzer;
end
if (Time >= 35 && Time <= 35.5)
gruene_LED = U_LED;
Buzzer= U_Buzzer;
end
if (Time >= 37 && Time <= 37.5)
gruene_LED = U_LED;
Buzzer= U_Buzzer;
end
if (Time >= 39 && Time <= 39.5)
gruene_LED = U_LED;
Buzzer= U_Buzzer;
end
end
end
case 2
if Time > 32 && Time <= 33
blaue_LED = U_LED;
Buzzer= U_Buzzer;
phase_3 = 1;
end
switch phase_3
case 1
for i3 = 1:N
t = Time + (i3-1)*dt;
% Bedingung: Taster gedrückt + 10s seit letztem Trigger vorbei
if U_blauer_Taster == 1 && Time >= 34 && Time <= 44 && (t - lastTrigger) >= lockTime
blaue_LED = U_LED;
Buzzer= U_Buzzer;
lastTrigger = t;
phase_3 = 2;
else
if (Time >= 45 && Time <= 45.5)
blaue_LED = U_LED;
Buzzer= U_Buzzer;
end
if (Time >= 47 && Time <= 47.5)
blaue_LED = U_LED;
Buzzer= U_Buzzer;
end
if (Time >= 49 && Time <= 49.5)
blaue_LED = U_LED;
Buzzer= U_Buzzer;
end
if (Time >= 51 && Time <= 51.5)
blaue_LED = U_LED;
Buzzer= U_Buzzer;
end
end
end
case 2
if Time > 45 && Time <= 46
gelbe_LED = U_LED;
Buzzer= U_Buzzer;
phase_4 = 1;
end
end
switch phase_4
case 1
for i4 = 1:N
t = Time + (i4-1)*dt;
% Bedingung: Taster gedrückt + 10s seit letztem Trigger vorbei
if U_gelber_Taster == 1 && Time >= 46 && Time <= 56 && (t - lastTrigger) >= lockTime
gelbe_LED = U_LED;
Buzzer= U_Buzzer;
lastTrigger = t;
phase_4 = 2;
else
if (Time >= 57 && Time <= 57.5)
gelbe_LED = U_LED;
Buzzer= U_Buzzer;
end
if (Time >= 59 && Time <= 59.5)
gelbe_LED = U_LED;
Buzzer= U_Buzzer;
end
if (Time >= 61 && Time <= 61.5)
gelbe_LED = U_LED;
Buzzer= U_Buzzer;
end
if (Time >= 63 && Time <= 63.5)
gelbe_LED = U_LED;
Buzzer= U_Buzzer;
end
end
end
case 2
if Time > 57 && Time <= 58
weisse_LED = U_LED;
Buzzer= U_Buzzer;
phase_5 = 1;
end
end
switch phase_5
case 1
for i5 = 1:N
t = Time + (i5-1)*dt;
% Bedingung: Taster gedrückt + 10s seit letztem Trigger vorbei
if U_weisser_Taster == 1 && Time >= 59 && Time <= 69 && (t - lastTrigger) >= lockTime
weisse_LED = U_LED;
Buzzer= U_Buzzer;
lastTrigger = t;
phase_5 = 2;
else
if (Time >= 70 && Time <= 70.5)
gelbe_LED = U_LED;
Buzzer= U_Buzzer;
end
if (Time >= 72 && Time <= 72.5)
gelbe_LED = U_LED;
Buzzer= U_Buzzer;
end
if (Time >= 74 && Time <= 74.5)
gelbe_LED = U_LED;
Buzzer= U_Buzzer;
end
if (Time >= 76 && Time <= 76.5)
gelbe_LED = U_LED;
Buzzer= U_Buzzer;
end
end
end
case 2
if (Time >= 70 && Time <= 70.5)
rote_LED = U_LED;
gruene_LED = U_LED;
blaue_LED = U_LED;
gelbe_LED = U_LED;
weisse_LED = U_LED;
Buzzer= U_Buzzer;
end
if (Time >= 72 && Time <= 72.5)
rote_LED = U_LED;
gruene_LED = U_LED;
blaue_LED = U_LED;
gelbe_LED = U_LED;
weisse_LED = U_LED;
Buzzer= U_Buzzer;
end
if (Time >= 74 && Time <= 74.5)
rote_LED = U_LED;
gruene_LED = U_LED;
blaue_LED = U_LED;
gelbe_LED = U_LED;
weisse_LED = U_LED;
Buzzer= U_Buzzer;
end
if (Time >= 76 && Time <= 76.5)
rote_LED = U_LED;
gruene_LED = U_LED;
blaue_LED = U_LED;
gelbe_LED = U_LED;
weisse_LED = U_LED;
Buzzer= U_Buzzer;
end
if (Time > 76.5)
Servo_Motor = U_LED-1; % Tür öffnen
end
end
end
IR_Buzzer = 1;
end
end
Umsetzung der Hardware
Die Abb.14 darstellt die technische Zeichnung ,die schon in Abb.1 erläutert wurde. Dies ist eine CAD-Baugruppe mit einer Gehäusedicke von 5 mm und den folgenden Abmaßen :
- Hauptbaugruppe (20 X 12 X 7 cm)
- Tür (14 X 60 X 0,2 cm)

Komponententest
Der in Abb. 14 zeigt die Funktionsweise der Komponenten aus Tabelle 2.

Montage
Die folgende Abb.16 zeigt die Montage von Baukomponenten mithilfe dem Weichlöten auf der PCB Board Lochplatine.

Ergebnis
Nach der Montage von Komponenten im Gehäuse der Farbe Memory-Safe (Abb.14) erhält man die folgenden Abb.17.
Zusammenfassung
Während dieses Semesters ermöglichte uns das Projekt „Escape Game: Memory-Safe: Das Farbcode-Rätsel“, Kenntnisse und Erfahrungen in der Planung und Umsetzung eines Projekts unter Einhaltung den Voraussetzungen und Fristen zu erwerben. Außerdem konnten wir unser im ersten Semester erworbenes Wissen in die Praxis umsetzen und unsere Kenntnisse über Programme wie MATLAB Simulink vertiefen.
Lessons Learned
Allerdings lief nicht alles auf Anhieb wie geplant: Bei der Programmierung des MATLAB Function Block beispielsweise wurden bestimmte Schleifen (for und while) aufgrund der Verwendung des Blocks Digital-Time oder Clock von MATLAB-Simulink nicht normal ausgeführt, sodass wir mehr Zeit für die Neuprogrammierung benötigten. Ein weiteres Problem besteht darin, dass der Speicher des UNO R3 zu klein ist, um den von Simulink geschriebenen Programmcode aufzunehmen und zu speichern. Daher kann das Programm nur während der Kompilierung ausgeführt werden, was bedeutet, dass der UNO R3-Mikrocontroller während der Kompilierung über das USB-Anschlusskabel mit dem PC verbunden bleiben muss, um den Programmcode ausführen zu können.
Um dieses Speicherproblem zu beheben, wäre es sinnvoll, bei der weiteren Entwicklung dieses Projekts einen Mikrocontroller mit einer Speicherkapazität von mindestens 256 KB Flash und 8 KB RAM zu verwenden, wie beispielsweise einen Mega 2560 oder einen ESP32.
Die Wahl eines dieser Mikrocontroller mit Flash und RAM würde es auch ermöglichen, einen Aktor wie das LCD-Display (siehe Abb.XX )hinzuzufügen, um die Spielschritte (Reaktionszeit) visuell darzustellen, die vom Spieler gesehen werden.
Projektunterlagen
ZIP-Archiv mit allen Projektdaten
Datei:185 Memory-Safe Das Farbcode-Raetsel.zip.zip
Projektplan

Projektdurchführung
YouTube Video
Weblinks
Literatur
1- Geddes M. Arduino Project Handbook: 25 Practical Projects to Get You Started. No Starch Press; 2016.
2-Geddes M. Arduino-Projekte: 25 Bastelprojekte für Maker zum Loslegen. dpunkt.verlag; 2017.
3- Raft snieders, Nordhorn 2021. alle Rechte vorbehalten, Arduino Anleitungen mit Praxisaufgaben und Beispielen. Auflage 2,2010.







