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
| Anschluss | Motor | Aufgabe |
|---|---|---|
| S1 | 180°-Servo | PIR-Winke-Servo — schwingt sinusförmig bei Bewegungserkennung |
| S2 | 180°-Servo | Toggle-Servo — schaltet bei jedem Joystick-Tastendruck |
| S3 | 180°-Servo | Endschalter-Test — schlägt bei Betätigung kurz aus |
| S4 | 360°-Servo | Test-Rotation — Vierteldrehung bei jedem PIR-Ereignis |
| S5 | 360°-Servo | Test-Rotation 2 — Vierteldrehung bei jedem PIR-Ereignis |
| S6 | 180°-Servo | Zeiger — zeigt, welcher Eingang zuletzt ausgelöst hat |
| STEPPER | Schrittmotor | Dreht eine volle Umdrehung pro Encoder-Tastendruck |
| DC | DC-Motor | Kurze 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
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.
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.
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.
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.
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.
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
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.