MODE 4 — JOYSTICK
Easy · 45 min · Fast kostenlos
Ziel & Anwendung
Steuere zwei Servos direkt mit dem Joystick — mit eingebautem Deadzone-Filter für ruhige Nullstellung — und ein dritter Servo folgt automatisch dem Lichtsensor.
- Joystick-Rohdaten mit Deadzone-Kalibrierung verarbeiten.
- Analogen Lichtsensor (LDR) als automatische Servo-Steuerung nutzen.
- Unterschied zwischen manueller und automatischer Aktorsteuerung verstehen.
Anschluss & Funktion
Motoren am Board
| Anschluss | Motor | Aufgabe |
|---|---|---|
| S1 | 180°-Servo | Joystick X — mit Deadzone-Filter |
| S2 | 180°-Servo | Joystick Y — mit Deadzone-Filter |
| S3 | 180°-Servo | Licht-Zeiger — folgt automatisch dem LDR |
| S4 | 360°-Servo | Turbo-Anzeige — dreht bei extremem Joystick-Ausschlag |
| S5 | 360°-Servo | Turbo-Anzeige 2 — gegenläufig zu S4 |
| S6 | 180°-Servo | Extrem-Fähnchen — merkt sich die weiteste X-Auslenkung |
| STEPPER | Schrittmotor | Zählt jeden vollen Joystick-Bewegungszyklus |
| DC | DC-Motor | Kurzer Impuls bei jedem Tastendruck der Joystick-Taste |
Materialliste
- 3 Kartonzeiger ca. 6 × 1 cm für S1/S2/S3
- 1 Kartonbasis
- Optional: kleines Spiegel- oder Alufolie-Stück für LDR-Tests
Step-by-Step Tutorial
Drei Anzeigeservos mit Zeigern bestücken
Schneide drei Kartonpfeile. Schraube Servo-Horn auf S1, klebe Zeiger auf Horn. Wiederhole für S2 und S3. Auf Basis aufkleben, Beschriftung: 'JX', 'JY', 'LDR'.
Check: S1 = Joystick X, S2 = Joystick Y, S3 = LDR-Licht — alle beschriftet
Tipp: S1 und S2 reagieren auf den Joystick. S3 ist automatisch und folgt dem Licht — beschrifte ihn anders (z. B. gelb) zur Unterscheidung.
Leichtgängigkeits-Test
Alle Zeiger von Hand durchdrehen. Erst wenn alle leicht laufen, ProtoPeaks einschalten.
Check: Alle 3 Zeiger drehen leicht von Hand
Tipp: Besonders S3 (LDR) sollte sehr leichtgängig sein, da er sich automatisch und langsam bewegt.
MODE 4 aktivieren — Joystick testen
EasySensors → MODE 4. Joystick langsam aus der Mitte bewegen: S1 und S2 folgen. In der Nullstellung stehen die Zeiger still — das ist die Deadzone. Display zeigt Joystick X/Y-Rohwerte (0–4095) und LDR-Wert.
Check: Joystick links/rechts bewegt S1, vor/zurück bewegt S2. Bei Nullstellung stehen beide Zeiger in der Mitte.
Tipp: Die Deadzone von 150 Units filtert kleine Joystick-Zitterbewegungen heraus — der Zeiger bleibt in der Mitte solange der Joystick kaum bewegt wird.
LDR-Automatik testen
Hand über den LDR halten: S3 dreht sich. Taschenlampe darauf richten: S3 in andere Richtung. Der LDR-Wert (0–4095) wird auf 1000–2000µs gemappt. Heller = höherer Wert = Zeiger in eine Richtung.
Check: S3 dreht sich wenn Licht auf LDR fällt oder verdeckt wird
Tipp: Taschenlampe oder Hand über den LDR halten für schnellen Wechsel.
Turbo und Extrem-Fähnchen testen
Baue zwei kleine Scheiben für die Turbo-Anzeige und ein Fähnchen, das die bisher weiteste X-Auslenkung markiert. Joystick bis zum Anschlag drücken: Turbo-Scheiben drehen an, das Fähnchen bleibt auf der Extremposition stehen, auch wenn du zurück zur Mitte gehst.
Check: Joystick bis zum Anschlag auslenken: Turbo-Scheiben drehen gegenläufig, Extrem-Fähnchen merkt sich die weiteste Auslenkung
Joystick-Button und Buzzer testen
Joystick-Knopf drücken und halten: Buzzer gibt HEARTBEAT-Rhythmus. Loslassen: Buzzer stoppt. Das ist das gesamte Verhalten von MODE 4 — übersichtlich und erweiterbar.
Check: Joystick-Knopf drücken aktiviert HEARTBEAT-Muster im Buzzer
Tipp: Der Joystick-Button ist nützlich als Bestätigungs-Signal in eigenen Projekten.
Troubleshooting
- Zeiger driften langsam von der Mitte auch ohne Joystick-Eingabe — Deadzone auf 200 erhöhen: `applyDeadzone(..., 0, 200)`. Joystick hat mechanischen Nullpunkt-Versatz.
- S3 (LDR) bewegt sich kaum — LDR braucht deutlichen Helligkeitsunterschied. Im Zimmer ist oft zu wenig Kontrast. Taschenlampe direkt auf LDR halten oder mit der Hand vollständig abdecken.
- Joystick-Button wird nicht erkannt — JoystickButton ist ein digitaler Eingang. Prüfen ob er im ProtoPeaks als aktiv LOW oder HIGH konfiguriert ist.
Modifikationen & Sicherheit
- Pro-Tipp: Die Deadzone von 150 im Code anpassen — größere Werte machen den Joystick träger, kleinere Werte sensibler.
- Erweiterung: S3 (LDR) auf einen Sonnennachführungs-Arm montieren — der Servo dreht sich automatisch zur hellsten Lichtquelle.
- Erweiterung: Mit dem LDR-Wert den DC-Motor steuern statt S3 — helles Licht = schneller Motor.
Wichtige Code-Teile
// Joystick mit Deadzone-Filter (150 Units Schwelle)
int jxRaw = applyDeadzone((int)JoystickX - 2048, 0, 150);
int jyRaw = applyDeadzone((int)JoystickY - 2048, 0, 150);
servocontroller.setServoPulse(1, constrain(1500 + jxRaw / 2, 1000, 2000));
servocontroller.setServoPulse(2, constrain(1500 + jyRaw / 2, 1000, 2000));
// S3 folgt LDR automatisch
servocontroller.setServoPulse(3, mapLDR);
// Joystick-Button = Buzzer-Feedback
if(JoystickButton) Buzzer.setMode(HEARTBEAT); 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 1 — GYRO TRACK — Drei Servos spiegeln die Lage von ProtoPeaks in Echtzeit auf allen Achsen — kippe das Board, die Zeiger folgen sofort. Bei Neigung über 45° warnt der Buzzer.
- MODE 1 — RC-CAR — Dein Karton-Flitzer mit allem Drumherum: Der Steuerknüppel gibt Gas und lenkt, während Heckspoiler, Kurvenlicht und Bremslicht wie bei einem echten Sportwagen ganz von allein mitspielen. Die Animation oben zeigt, wie die beiden Antriebsräder Gas und Lenkung mischen — genau dieses Auto rollt gleich durch dein Wohnzimmer.