MODE 3 — SAFE COMBO
Medium · 1h · Fast kostenlos
Ziel & Anwendung
Ein echtes Kombinationsschloss aus Encoder und drei Ziffern: nur wenn alle drei Encoder-Werte exakt die geheime Kombination treffen (z.B. 5, -3, 7), öffnet S3 den Servo-Riegel. touch1 bestätigt jede Ziffer, touch2 setzt alles zurück — präzises Knacken wie bei einem echten Tresor.
- Dreistellige Encoder-Kombination mit touch1-Bestätigung pro Stelle implementieren.
- Kombinationsprüfung die nur bei exakter Übereinstimmung aller drei Stellen öffnet.
- S3-Servo-Riegel der bei korrekter Kombination öffnet und sich selbst verriegelt bei Fehlversuch.
Anschluss & Funktion
Motoren am Board
| Anschluss | Motor | Aufgabe |
|---|---|---|
| S1 | 180°-Servo | Zeigt den aktuell eingestellten Encoder-Wert der aktiven Ziffer |
| S2 | 180°-Servo | Zeigt an welche Ziffer (1/2/3) gerade eingestellt wird |
| S3 | 180°-Servo | Riegel — öffnet nur bei korrekter Kombination |
| S4 | 360°-Servo | Kurzer Dreh-Ausschlag als Klick-Feedback bei jedem Ziffernwechsel |
| S5 | 360°-Servo | Dreht gegenläufig zu S4 als zweiter Zahlenschloss-Indikator |
| S6 | 180°-Servo | Zeigt an ob der Tresor gerade offen ist |
| STEPPER | Schrittmotor | Mechanischer Fehlversuch-Zähler, dreht bei jeder falschen Kombination weiter |
| DC | DC-Motor | Kurze Vibration im Moment des Aufschließens |
Materialliste
- Kleines Karton-Tresor-Gehäuse ca. 15 × 15 × 10 cm
- Servo-Riegel aus Karton ca. 10 × 2 cm für S3
- Kleines Schild mit Ziffern-Anzeige (Papier-Aufkleber)
- Optionaler Vorhängeschloss-Look: Karton-Bügel über S3-Riegel
- Klebeband und Heißkleber
Step-by-Step Tutorial
Tresor-Gehäuse mit Riegel aufbauen
Karton-Tresor (15 × 15 × 10 cm) mit Öffnungs-Klappe auf einer Seite. S3 innen montiert, Karton-Arm auf Plastik-Horn. Bei 1000 µs: Arm liegt qür — Klappe blockiert. Bei 2000 µs: Arm dreht weg — Klappe frei. Gehäuse von innen mit ProtoPeaks-Controller beschweren.
Check: Karton-Box mit S3-Riegel. Riegel blockiert eine Klappe bei 1000 µs, gibt frei bei 2000 µs.
Tipp: Riegel-Mechanismus: S3 mit Karton-Arm (10 × 2 cm). Arm liegt qür vor Klappe (1000 µs = verriegelt). Dreht weg bei 2000 µs = Klappe kann öffnen.
Dreistellige Kombination einprogrammieren
Im Code: int target[3] = {5, -3, 7}. Erster Wert: 5 Klicks rechts. Zweiter: 3 Klicks links. Dritter: 7 Klicks rechts. Encoder ändert combo[digitPos]. Display zeigt aktuellen Eingabe-Wert und welche Stelle (1/2/3) aktiv ist.
Check: Ziel-Kombination target[] = {5, -3, 7} ist im Code definiert. Encoder ändert combo[digitPos].
Tipp: Kombination im Code definieren: int target[3] = {5, -3, 7}. Werte können negativ sein (links drehen). Encoder-Wertebereich: ±10 pro Stelle.
Ziffer-Eingabe mit touch1 bestätigen
touch1 drücken: combo[digitPos] einfrieren, weiter zur nächsten Stelle. Display zeigt 'Stelle 2/3'. touch2 drücken: vollständiger Reset — Stelle 1, alle Werte auf 0. Nach der dritten Stelle: Prüfung. Alle drei korrekt → S3 öffnet, kurzes Surren am DC-Motor. Falsch: kein Ton, aber der Fehlversuch-Zähler auf dem Stepper dreht sichtbar ein Stück weiter, und es geht wieder bei Stelle 1 los — die bisher eingestellten Werte bleiben aber stehen und müssen einfach neu überschrieben werden.
Check: touch1 bestätigt aktuelle Stelle und springt zur nächsten. Nach Stelle 3: Prüfung.
Tipp: digitPos springt von 0→1→2→Prüfung. Wenn digitPos == 3: alle drei combo[]-Werte mit target[] vergleichen.
Leichtgängigkeits-Test ohne Strom
S3 von Hand auf 1000 µs (verriegelt): Klappe versuchen zu öffnen — blockiert? Dann S3 auf 2000 µs: Klappe öffnet frei? Kein Klemmen zwischen Riegel und Klappe-Kante? Spielraum 2 mm einplanen. Erst dann einschalten.
Check: S3-Riegel dreht frei. Klappe öffnet wenn Riegel weggedreht. Klappe klemmt nicht.
Tipp: Riegel und Klappe müssen aufeinander abgestimmt sein: Riegel-Arm genau vor Klappe-Kante, aber nicht zu fest anliegend.
MODE 3 aktivieren — Kombination knacken
Safe-Einbruch → MODE 3. Display zeigt 'Stelle 1/3: 0'. Encoder drehen bis gewünschter Wert — S1 zeigt den Wert, S4/S5 klicken kurz mit. touch1: Bestätigung, weiter zu Stelle 2. Nach Stelle 3: wenn combo == target → S3 öffnet, Buzzer HEARTBEAT, DC-Motor surrt kurz, S6 zeigt offen. Wenn falsch: alles bleibt still, nur der Stepper-Fehlversuchszähler dreht weiter, und es geht wieder bei Stelle 1 los.
Check: Encoder drehen, touch1 bestätigen, dreimal. Bei korrekter Kombi: S3 öffnet, HEARTBEAT.
Tipp: Test: Falsche Kombination eingeben → kein Ton, aber der Stepper-Zähler dreht ein Stück weiter, es geht wieder bei Stelle 1 los. Dann korrekte Kombination → HEARTBEAT, S3 öffnet, S6-Klappe zeigt offen.
Sicherheits-Kombination ändern und geheim halten
Eigene Kombination festlegen: z.B. {12, -8, 3} für 12 rechts, 8 links, 3 rechts. Code flashen. Kombination nicht aufschreiben (Zettel neben Tresor wäre kontraproduktiv). Encoder-Klicks sind gut hörbar — leise Eingabe in lauter Umgebung.
Check: Andere Kombination im Code einstellen. Dritte Person kann Code ohne Kenntnis der Kombi nicht öffnen.
Tipp: Kombination im Code ändern: target[0], target[1], target[2]. Negative Werte: links drehen. Positiv: rechts. Wertebereich ±10 pro Stelle.
Troubleshooting
- Tresor öffnet nicht obwohl Kombination korrekt eingegeben — combo[]-Werte akkumulieren über Encoder-Drehungen. Wenn Encoder überdreht: combo[0] = 7 statt 5. Encoder-Wert auf Display genau beobachten. EncoderPos = 0 nach jeder Auslese sicherstellen.
- Tresor öffnet sich sofort nach Reset — combo[0]=combo[1]=combo[2]=0. Wenn target[0]==0 UND target[1]==0 UND target[2]==0: Kombination ist 0-0-0 und öffnet nach Reset sofort. Kombination darf nie 0-0-0 sein — mindestens einen Wert != 0 verwenden.
Modifikationen & Sicherheit
- Pro-Tipp: Maximale Fehlversuche (3) mit Alarm-Sperre — nach 3 Fehlversuchen für 30 Sekunden sperren.
- Erweiterung: touch1 als Bestätigung, JoystickButton als zusätzlicher Sicherheits-Auslöser (Zwei-Faktor).
- Sicherheit: Kombination nicht im Klartext im Code lassen wenn andere den Code sehen können — Hash oder Offset verwenden.
Wichtige Code-Teile
// Encoder: aktive Stelle ändern
if(!cracked) {
combo[digitPos] = constrain(combo[digitPos] + (int)EncoderPos, -10, 10);
EncoderPos = 0;
if(isButtonPressed(touch1, lastTouch1_2)) {
digitPos = (digitPos + 1) % 3;
if(digitPos == 0) { // Nach 3. Stelle: Prüfung
cracked = (combo[0]==target[0] && combo[1]==target[1] && combo[2]==target[2]);
wrongAttempt = !cracked;
}
}
if(touch2) { combo[0]=combo[1]=combo[2]=0; digitPos=0; cracked=false; }
}
// S3: Riegel öffnet nur bei cracked
if(!ismoving[3]) servocontroller.startMove(3, cracked ? 2000 : 1000, 500);
if(cracked) Buzzer.setMode(HEARTBEAT); else Buzzer.setValue(0);
// Stepper: mechanischer Fehlversuch-Zähler
if(wrongAttempt) stepper.move(20);
// DC: kurze Vibration im Moment des Öffnens
if(cracked && !lastCracked) crackedVibUntil = millis() + 150;
if(millis() < crackedVibUntil) setMotorspeed(45);Ähnliche Projekte
- MODE 5 — SECRET CODE — Ein Schloss das sich nur mit dem richtigen Morse-Code öffnet: touch1 kurz antippen = kurz, touch1 lang halten (>500ms) = lang. Die Geheim-Sequenz (z.B. kurz-lang-kurz = 0-1-0) muss exakt stimmen — S2 öffnet den Servo-Riegel, S1 zeigt den Eingabe-Fortschritt, S3 die Live-Berührung.
- MODE 1 — LASER TRAP — Eine echte Lichtschranke aus Laser-Pointer und LDR: sobald der Laserstrahl unterbrochen wird, schlägt der Alarm an — S1 hebt die Alarm-Fahne, S2 verriegelt einen Servo-Riegel, der Stepper dreht die Alarm-Fläche und der DC-Motor surrt. Perfekt als Diebstahlsicherung für die Schreibtischschublade oder als Einbruch-Spielzeug.
- MODE 9 — SPOTLIGHT — Ein rotierender Überwachungs-Scheinwerfer: Stepper dreht in 45°-Sektoren von Sektor zu Sektor, S2 zeigt die aktuelle Scan-Phase und S3 den LDR-Helligkeitswert. Sobald der PIR-Sensor Bewegung erkennt, bleibt der Stepper für 3 Sekunden auf der Alarm-Position fixiert — SHORT_BLINK warnt.