MODE 6 — BUTTONS

Easy · 45 min · Fast kostenlos

Ziel & Anwendung

Bewegungssensor, Joystick-Taste und Encoder-Knopf — jeder Eingang steuert einen eigenen Aktor: PIR winkt mit dem Servo, JoystickButton togglet einen Schalter, EncoderButton dreht den Stepper.

  • Digitale Eingaben (Tasten, PIR) auf verschiedene Aktoren mappen.
  • Toggle-Logik mit Flankenerkennung (steigende Flanke) implementieren.
  • Sinuswelle per Millis für kontinuierliche Servo-Bewegung nutzen.

Anschluss & Funktion

Motoren am Board

AnschlussMotorAufgabe
S1180°-ServoPIR-Winke-Servo — schwingt sinusförmig bei Bewegungserkennung
S2180°-ServoToggle-Servo — schaltet bei jedem Joystick-Tastendruck
S3180°-ServoEndschalter-Test — schlägt bei Betätigung kurz aus
S4360°-ServoTest-Rotation — Vierteldrehung bei jedem PIR-Ereignis
S5360°-ServoTest-Rotation 2 — Vierteldrehung bei jedem PIR-Ereignis
S6180°-ServoZeiger — zeigt, welcher Eingang zuletzt ausgelöst hat
STEPPERSchrittmotorDreht eine volle Umdrehung pro Encoder-Tastendruck
DCDC-MotorKurze Vibration bei PIR-Aktivierung

Materialliste

  • 1 Kartonzeiger 6 × 1 cm für S1 (PIR-Servo)
  • 1 Kartonfahne 5 × 2 cm für S2 (Toggle-Servo)
  • Optional: kleines Pappschild 'WILLKOMMEN' auf S1 kleben

Step-by-Step Tutorial

  1. PIR-Winke-Servo vorbereiten

    Schraube Servo-Horn auf S1. Klebe einen 6 cm Kartonzeiger (oder ein 'WILLKOMMEN'-Schild) flächig auf das Horn. Der Zeiger wird bei PIR-Aktivierung wie eine Flagge wedeln.

    Check: S1 hat einen langen Zeiger (6 cm) — soll bei PIR-Auslösung sinusförmig wedeln

    Tipp: Der Sinus im Code schwingt S1 kontinuierlich hin und her solange PIR aktiv ist. Zeiger muss leichtgängig sein.

  2. Toggle-Servo S2 vorbereiten

    Schraube Servo-Horn auf S2. Klebe eine 5 × 2 cm Kartonfahne auf das Horn. Bei 1000µs liegt sie links, bei 2000µs rechts. Klebe beide Servos auf die Basis.

    Check: S2 hat eine kurze Fahne — zwei klare Positionen: links = AUS, rechts = EIN

    Tipp: Die Fahne soll klar zwei Schaltstellungen zeigen — breite Fahne ist besser sichtbar als schmaler Zeiger.

  3. Leichtgängigkeits-Test

    Beide Servos von Hand durchdrehen. Erst wenn beide leicht laufen, ProtoPeaks einschalten.

    Check: S1 und S2 drehen leicht von Hand, kein Hakeln

    Tipp: S1 wird sinusförmig geschwungen — muss besonders leichtgängig sein damit der Servo nicht überhitzt.

  4. MODE 6 aktivieren — PIR-Reaktion testen

    EasySensors → MODE 6. Hand vor den PIR-Sensor halten: S1 beginnt zu wedeln (Sinusbewegung). Buzzer gibt SHORT_BLINK. Hand wegnehmen: S1 stoppt bei 1000µs. Display zeigt PIR-Status (0/1).

    Check: Hand vor PIR bewegen: S1-Zeiger schwingt hin und her, Buzzer piept kurz

    Tipp: PIR braucht ca. 2 Sek. zum Einschwingen nach dem Einschalten. Kurz warten.

  5. JoystickButton Toggle testen

    Joystick-Knopf drücken: S2-Fahne klappt von 1000µs auf 2000µs. Nochmal drücken: zurück. Die Flanken-Erkennung verhindert Prellen — kurz und fest drücken.

    Check: Joystick-Taste drücken: S2 wechselt Position. Zweimal drücken: zurück.

    Tipp: Toggle bleibt auch wenn PIR aktiv ist — beide Eingaben arbeiten unabhängig.

  6. Endschalter, Trigger-Zeiger und Test-Rotation anbringen

    Baue einen Endschalter-Test-Servo, einen Zeiger, der anzeigt welcher Eingang zuletzt ausgelöst hat, sowie zwei kleine Test-Servos, die bei jedem PIR-Ereignis eine kurze Vierteldrehung machen.

    Check: Endschalter-Servo, Trigger-Zeiger und beide Test-Servos bewegen sich frei von Hand

  7. EncoderButton → Stepper testen

    EncoderButton einmal kurz drücken: Stepper macht 200 Schritte. Nochmals drücken: weitere 200 Schritte. Display zeigt aktuellen Stepper-Schrittzähler nicht, aber das Drehen ist hörbar und sichtbar.

    Check: Einmal EncoderButton drücken: Stepper dreht 200 Schritte (1 Umdrehung)

    Tipp: 200 Schritte = eine volle Umdrehung beim Standard-Stepper. Stepper dreht nach rechts (positive Richtung).

Troubleshooting

  • PIR reagiert nicht oder löst zu oft aus — PIR braucht 2 Sek. Einschaltzeit. Direktes Licht (Sonne, LED) kann Fehltrigger verursachen. Sensor von direkten Lichtquellen abschirmen.
  • S1 wedelt nicht sinusförmig sondern springt — Der Code wird alle 250ms aufgerufen (displayUpdate-Timer). Der Sinus ist dadurch abgetastet, nicht kontinuierlich. Für flüssigere Bewegung displayUpdate auf 50ms reduzieren.
  • Stepper dreht sich nicht — stepper.run() muss in jeder Loop-Iteration aufgerufen werden — ist im Code bereits oben in handleMode_EASYSENSORS(). Prüfen ob stepper.move(200) korrekt aufgerufen wird (EncoderButton-Flanke).

Modifikationen & Sicherheit

  • Pro-Tipp: Frequenz der Sinuswelle anpassen — `sin(millis() * 0.02)` ist schneller als `0.01`.
  • Erweiterung: Stepper-Schritte auf 400 erhöhen für 2 Umdrehungen pro Button-Druck.
  • Erweiterung: PIR-Reaktion für eine Begrüßungs-Maschine nutzen — wedelnder Arm begrüßt Besucher.

Wichtige Code-Teile

// PIR → S1 (180°) winkt sinusförmig solange aktiv
if(PIRHigh) servocontroller.setServoPulse(1, 1500 + (int)(sin(millis() * 0.01) * 400));
else        servocontroller.setServoPulse(1, 1000);
// JoystickButton → S2 Toggle
static bool btnS2 = false, lastJoyBtn = false;
toggleState(JoystickButton, lastJoyBtn, btnS2);
servocontroller.setServoPulse(2, btnS2 ? 2000 : 1000);
// EncoderButton → Stepper 200 Schritte (1 Umdrehung)
static bool lastEncBtn = false;
if(isButtonPressed(EncoderButton, lastEncBtn)) stepper.move(200);
// Buzzer bei PIR
if(PIRHigh) Buzzer.setMode(SHORT_BLINK); else Buzzer.setValue(0);

Ähnliche Projekte

  • MODE 5 — TOUCH — Kapazitive Touch-Eingaben schalten Servos als Toggle-Schalter — berühren = ein, nochmal berühren = aus. Zwei Touch-Pads gleichzeitig lösen einen Sonderton aus.
  • MODE 7 — SWITCHES — Alle digitalen Schalter (S1gnd, GameReset, Displayswitch) steuern direkt Servos — plus Logik-Verknüpfungen: AND-Servo und OR-Servo zeigen kombinierte Schaltzustände. DC läuft nur wenn alle drei gleichzeitig aktiv.
  • MODE 10 — System-Check — Drei Sensoren werden gleichzeitig überwacht — zu heiß, zu nah oder zu schief, und die Alarm-Flagge wedelt los. Ein Zeiger verrät sofort, welcher der drei Grenzwerte gerade ausgelöst hat.