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

AnschlussMotorAufgabe
S1180°-ServoCountdown-Zeiger, fällt mit ablaufender Zeit
S2180°-ServoGegenläufiger Sanduhr-Zeiger
S3180°-ServoAlarm-Fahne, klappt bei Ablauf aus
S4360°-ServoDreht durchgehend als Sekunden-Fortschrittsrad
S5360°-ServoGegenläufig zu S4 für Doppel-Dreheffekt
S6180°-ServoKleine Klappe öffnet sich erst bei Ablauf
STEPPERSchrittmotorSchaukelt als mechanischer Alarm-Vibrator
DCDC-MotorKurzer 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

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

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

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

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

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

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

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