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

AnschlussMotorAufgabe
S1180°-ServoZeigt den aktuell eingestellten Encoder-Wert der aktiven Ziffer
S2180°-ServoZeigt an welche Ziffer (1/2/3) gerade eingestellt wird
S3180°-ServoRiegel — öffnet nur bei korrekter Kombination
S4360°-ServoKurzer Dreh-Ausschlag als Klick-Feedback bei jedem Ziffernwechsel
S5360°-ServoDreht gegenläufig zu S4 als zweiter Zahlenschloss-Indikator
S6180°-ServoZeigt an ob der Tresor gerade offen ist
STEPPERSchrittmotorMechanischer Fehlversuch-Zähler, dreht bei jeder falschen Kombination weiter
DCDC-MotorKurze 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

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.