MODE 1 — COUNTDOWN
Easy · 45 min · Fast kostenlos
Ziel & Anwendung
Ein mechanischer Countdown-Timer: S1 zeigt die verbleibende Zeit als Zeiger, S2 dreht sich gegenläufig wie eine visülle Sanduhr. Encoder stellt die Zeit (5–600 Sekunden), JoystickButton startet oder stoppt. Bei Ablauf: S3 fährt auf Alarm-Fahne, Stepper vibriert als mechanischer Alarm und Buzzer ertönt dauerhaft.
- Encoder-basierte Zeiteinstellung (5–600 Sekunden) mit Start/Stopp per JoystickButton aufbauen.
- Zwei gegenläufige Servo-Zeiger als visülle Sanduhr-Mechanik implementieren.
- Mechanischen Stepper-Alarm (Vibrations-Bewegung) bei Zeitablauf auslösen.
Anschluss & Funktion
Motoren am Board
| Anschluss | Motor | Aufgabe |
|---|---|---|
| S1 | 180°-Servo | Countdown-Zeiger, fällt mit ablaufender Zeit |
| S2 | 180°-Servo | Gegenläufiger Sanduhr-Zeiger |
| S3 | 180°-Servo | Alarm-Fahne, klappt bei Ablauf aus |
| S4 | 360°-Servo | Dreht durchgehend als Sekunden-Fortschrittsrad |
| S5 | 360°-Servo | Gegenläufig zu S4 für Doppel-Dreheffekt |
| S6 | 180°-Servo | Kleine Klappe öffnet sich erst bei Ablauf |
| STEPPER | Schrittmotor | Schaukelt als mechanischer Alarm-Vibrator |
| DC | DC-Motor | Kurzer Vibrationsimpuls zusätzlich zum Alarm |
Materialliste
- Kartonstreifen je ca. 10 × 2 cm als Zeiger (3 Stück)
- Halbkreis-Skala Ø 14 cm für S1/S2 (als Sanduhr-Anzeige)
- Kleiner Karton-Alarm-Fähnchen für S3 (rot, auffällig)
- Filzstift für Zeit-Einteilung auf der Skala
- Klebeband und Heißkleber
Step-by-Step Tutorial
Sanduhr-Anzeige aufbauen
Zwei Halbkreis-Skalen (Ø 14 cm) nebeneinander. S1 links: beginnt bei 2000 µs und fällt auf 1000 µs (Zeit läuft ab). S2 rechts: beginnt bei 1000 µs und steigt auf 2000 µs (gegenläufig). Beide mit Zeigern und Zeit-Einteilung. S3 darunter als Alarm-Fahne.
Check: Zwei nebeneinander gespiegelte Halbkreis-Skalen — S1 fährt von voll nach leer, S2 von leer nach voll
Tipp: Optisch wirkungsvoll: S1 und S2 auf einer gemeinsamen Achse gespiegelt montieren — visülle Sanduhr-Wirkung ohne Mechanik.
Alarm-Fahne S3 aufbauen
S3 (180°) mit Plastik-Horn und rotem Karton-Fähnchen (6 × 4 cm). In Ruhe (1000 µs): Fähnchen nach unten. Bei Alarm (2000 µs): Fähnchen nach oben. Alarm-Zustand: expired = (counting && remaining <= 0).
Check: S3 bei 1000 µs eingeklappt (kein Alarm). Bei 2000 µs: Alarm-Fahne ausgeklappt sichtbar.
Tipp: Alarm-Fahne rot oder orange — bei Ablauf muss sie von weitem erkennbar sein.
Stepper als mechanischer Alarm-Vibrator aufbauen
Kleines Karton-Fähnchen auf Stepper-Mitnehmer kleben. Im Alarm: Stepper schaukelt hin und her — mechanische Vibrations-Alarm-Anzeige. Im normalen Betrieb: Stepper ruhig. Buzzer HEARTBEAT gleichzeitig, kurze Vibration am Rüttel-Motor obendrauf.
Check: Stepper bewegt sich bei Alarm hin und her (±20 Schritte alle 500 ms) als sichtbare Vibration
Tipp: Stepper-Vibration: if(millis() % 500 < 250) stepper.move(20) else stepper.move(-20). Kleine Schaukel-Bewegung sichtbar machen.
S4/S5 Doppel-Drehräder und Enthüllungsklappe S6
S4 und S5 (je Plastik-Horn) mit kleinen Papprädchen bestücken — sie drehen gegenläufig durchgehend, solange der Countdown läuft, und stehen in Ruhe. S6 mit kleiner Klappe: bleibt geschlossen, öffnet sich erst im Alarm-Moment als kleiner 'Enthüllungs'-Effekt.
Check: S4 und S5 drehen gegenläufig, solange gezählt wird. S6-Klappe bleibt geschlossen bis zum Alarm.
Tipp: S4/S5 auf einer gemeinsamen Achse mit kleinen Papprädern montieren — der hypnotische Gegendreheffekt zieht Blicke an.
Leichtgängigkeits-Test ohne Strom
S1 bei 2000 µs (voll), S2 bei 1000 µs (leer): beide von Hand prüfen. S3 von Hand auf 1000 und 2000: Fahne klappt klar? Stepper-Fähnchen von Hand hin und her: frei? Erst dann einschalten.
Check: S1 und S2 drehen frei. S3-Fahne klappt frei auf/zu. Stepper dreht leicht.
Tipp: S1 und S2 auf gespiegelten Skalen: beide müssen in korrekter Startposition (bei countdown-Start) positioniert sein.
MODE 1 aktivieren — Countdown starten
Timer → MODE 1. Encoder drehen: Zeit einstellen (5–600 s). JoystickButton: Start. S1 fällt, S2 steigt. Bei 0: S3-Fahne auf, Stepper schaukelt, Buzzer HEARTBEAT. JoystickButton erneut: Stopp. EncoderButton: Alarm quittieren und Reset.
Check: Encoder dreht Zeit ein. JoystickButton startet. Zeiger bewegen sich. Bei 0: Alarm.
Tipp: Encoder dreht: jeder Klick = 1 Sekunde. Für 30 Sekunden: 30 Klicks. Display zeigt Rem (verbleibend) und Set (eingestellt).
Verschiedene Zeitintervalle testen
30 Sekunden einstellen und starten. Nach 30 Sekunden: Alarm aktiv? S3-Fahne oben? Buzzer? Stepper schaukelt? Alarm durch erneuten JoystickButton-Druck quittieren. Dann 60 Sekunden und 5 Sekunden testen.
Check: 30-Sekunden-Test: Zeiger bewegen sich gleichmäßig. Bei 0 korrekter Alarm.
Tipp: Für 30-Sekunden-Test: 30 Encoder-Klicks. Bei Start: Zeiger sollten sich sichtbar alle 5 Sekunden bewegen.
Troubleshooting
- S1 und S2 bewegen sich nicht während Countdown läuft — counting muss true sein. JoystickButton-Druck als rising edge prüfen. Display-Wert 'Rem:' verringert sich? Wenn ja, aber Servos stehen: map()-Funktion prüfen.
- Alarm löst nicht aus bei 0 Sekunden — expired = (counting && remaining <= 0). counting darf nicht zwischendurch auf false gesprungen sein. JoystickButton während Lauf nicht erneut drücken.
Modifikationen & Sicherheit
- Pro-Tipp: Skala in Minuten statt Sekunden beschriften für längere Koch-/Backzeiten bis 10 Minuten.
- Erweiterung: Encoder-Button als Pause-Funktion (Countdown einfrieren und fortsetzen).
- Sicherheit: Stepper-Vibration nicht dauerhaft laufen lassen (>5 Minuten) — Überhitzungsgefahr. Alarm nach 60 Sekunden automatisch stoppen.
Wichtige Code-Teile
// Encoder: Zeit einstellen
if(!counting) { countSec = constrain(countSec + EncoderPos * 1.0f, 5.0f, 600.0f); EncoderPos = 0; }
// JoystickButton: Start/Stopp
if(isButtonPressed(JoystickButton, lastJoyBtn0)) {
if(!counting) { counting = true; countStart = millis(); }
else { counting = false; }
}
float remaining = counting ? constrain(countSec - (millis()-countStart)/1000.0f, 0, countSec) : countSec;
bool expired = (counting && remaining <= 0);
// S1: Countdown-Zeiger, S2: gegenläufig (Sanduhr)
servocontroller.setServoPulse(1, map(remaining, 0, countSec, 1000, 2000));
servocontroller.setServoPulse(2, map(remaining, 0, countSec, 2000, 1000));
// S3: Alarm-Fahne
servocontroller.setServoPulse(3, expired ? 2000 : 1000);
// S4/S5: Doppel-Drehrad waehrend des Countdowns
servocontroller.setServoPulse(4, counting ? 1700 : 1500);
servocontroller.setServoPulse(5, counting ? 1300 : 1500);
// S6: Enthuellungsklappe erst bei Ablauf
servocontroller.setServoPulse(6, expired ? 2000 : 1000);
// Stepper: mechanische Alarm-Vibration, DC: kurzer Zusatzimpuls
if(expired) {
if(millis() % 500 < 250) stepper.move(20); else stepper.move(-20);
Buzzer.setMode(HEARTBEAT);
setMotorspeed(50);
}Ähnliche Projekte
- MODE 2 — STOPWATCH — Eine analoge Stoppuhr mit drei Servo-Zeigern: S1 zeigt Sekunden (0–60 s zyklisch), S2 Minuten (0–60 min) und S3 die gespeicherte Rundenzeit. JoystickButton startet/stoppt, EncoderButton speichert die Runden-Zeit. touch1 und touch2 gleichzeitig: Gesamt-Reset auf 0. Unbegrenzte Laufzeit.
- MODE 7 — SEQ DELAY — Drei Servo-Klappen öffnen sich nacheinander mit individuell einstellbaren Verzögerungen: d1, d2 und d3 können per Encoder und Touch-Auswahl frei konfiguriert werden. JoystickButton startet die Sequenz — perfekt als automatische Briefkasten-Sortierklappe, Staffelrennen-Startanlage oder Theatervorhang.
- MODE 10 — SERVO CLOCK — Eine echte Analoguhr aus drei Servo-Zeigern: Sekunden-, Minuten- und Stunden-Zeiger laufen im echten Tempo mit. Zur vollen Stunde öffnet sich eine kleine Kuckucksuhr-Klappe, der Schrittmotor dreht eine komplette Runde als sichtbares Uhrwerk mit.