MODE 9 — SERVO DEMO

Easy · 30 min · Fast kostenlos

Ziel & Anwendung

Steuere alle 6 Servo-Ausgänge einzeln per Joystick — EncoderButton wechselt zwischen S1 bis S6, JoystickX setzt den Pulswert, JoystickButton fährt den gewählten Servo sanft zur Mitte zurück.

  • Servo-Pulsbreite (1000–2000 µs) direkt manuell einstellen und verstehen.
  • Unterschied zwischen sofortigem setServoPulse und weichem startMove erkennen.
  • Alle 6 Servo-Kanäle von ProtoPeaks individuell testen und kalibrieren.

Anschluss & Funktion

Motoren am Board

AnschlussMotorAufgabe
S1180°-ServoTestkanal, per EncoderButton auswählbar
S2180°-ServoTestkanal, per EncoderButton auswählbar
S3180°-ServoTestkanal, per EncoderButton auswählbar
S4360°-ServoTestkanal, per EncoderButton auswählbar
S5360°-ServoTestkanal, per EncoderButton auswählbar
S6180°-ServoTestkanal, per EncoderButton auswählbar
STEPPERSchrittmotorTestmodus per Langdruck der EncoderButton
DCDC-MotorTestmodus — Joystick Y steuert die Drehzahl

Materialliste

  • Optional: 1–2 kleine Kartonzeiger für sichtbare Servo-Ausschläge
  • Optional: Marker für Pulswert-Skala auf der Basis

Step-by-Step Tutorial

  1. Optional: Zeiger auf aktiven Servos montieren

    Schneide einen Kartonpfeil (6 × 1 cm). Schraube Servo-Horn auf S1, klebe Zeiger auf Horn. Optional: weitere Zeiger auf S2–S6 für vollständige Visualisierung.

    Check: Mindestens S1 hat einen Zeiger für visülle Kontrolle

    Tipp: Für diesen Mode reicht ein Zeiger auf S1 — die anderen lassen sich trotzdem steuern, nur ohne sichtbaren Ausschlag.

  2. MODE 9 aktivieren

    EasySensors → MODE 9. Display zeigt: Servo-Nummer (1–6), aktuellen Pulswert und 'EncBtn=next'. Joystick links/rechts bewegen: Pulswert ändert sich von 1000 bis 2000µs.

    Check: Display zeigt 'SERVO DEMO', aktuell gewählter Servo (1–6) und Pulswert (1000–2000)

    Tipp: Beim Start ist S1 ausgewählt. EncoderButton wechselt zu S2, S3, ... S6, dann wieder S1.

  3. Servo auswählen und steuern

    EncoderButton einmal drücken: Display zeigt 'Servo: 2'. JoystickX bewegen: S2 fährt. EncoderButton nochmal: 'Servo: 3' usw. So kann jeder der 6 Ausgänge einzeln getestet werden.

    Check: EncoderButton drücken wechselt Servo-Nummer von 1 nach 2 nach ... 6 nach 1

    Tipp: Jeder Servo behält seinen letzten Pulswert wenn zu einem anderen Servo gewechselt wird.

  4. Sanfte Rückfahrt zur Mitte testen

    Einen Servo auf Endstellung fahren (1000µs oder 2000µs). Dann JoystickButton drücken: der Servo fährt in 500ms sanft auf 1500µs zurück. Das ist ideal zum Kalibrieren der Nullstellung.

    Check: JoystickButton drücken → aktiver Servo fährt weich in 500ms auf 1500µs

    Tipp: startMove(servoNum, 1500, 500) ist eine sanfte Fahrt — der Servo bremst nicht abrupt, sondern gleitet zur Mitte.

  5. Alle 6 Kanäle durchfirmen

    Alle 6 Servos nacheinander auswählen und mit Joystick in beide Endstellungen fahren. Verhalten notieren: 180°-Servos haben mechanische Endanschläge, 360°-Servos drehen endlos. Nicht zu lange gegen Endanschlag drücken.

    Check: Alle 6 Servo-Ausgänge reagieren auf Joystick-Eingabe

    Tipp: S4 und S5 sind 360°-Servos — bei 1500µs stehen sie still, bei 1000 und 2000 drehen sie sich in verschiedene Richtungen.

Troubleshooting

  • Servo dreht sich nicht obwohl Joystick bewegt wird — Prüfen ob der richtige Servo-Kanal ausgewählt ist (Display zeigt Nummer 1–6). Servo an dem ausgewählten Kanal angeschlossen?
  • 360°-Servo dreht dauerhaft ohne Joystick-Eingabe — 360°-Servos (S4/S5) sind bei 1500µs im Idealfall still. Aber der Nullpunkt variiert ±30µs — JoystickButton drücken für Mittelstellung, dann prüfen ob der Servo wirklich stoppt.
  • startMove (JoystickButton) funktioniert nicht sichtbar — startMove ist eine interne Animation — sie überschreibt nur wenn `!ismoving[servoNum]`. Wenn der Servo gerade ein laufendes startMove hat, wartet die neue Anfrage. Kurz warten dann erneut drücken.

Modifikationen & Sicherheit

  • Pro-Tipp: Dieser Mode eignet sich perfekt zum Kalibrieren von Servo-Nullstellungen vor einem neun Bauprojekt.
  • Erweiterung: Encoder (statt Joystick) für feinfühligere Pulswert-Einstellung nutzen — im Code `mapEncoder` für den Pulswert verwenden.
  • Erweiterung: Pulswert auf dem Display ablesen und in den eigenen Code als feste Konstante übernehmen.

Wichtige Code-Teile

// EncoderButton wählt nächsten Servo (1→2→...→6→1)
static int selServo = 1;
static bool lastEncBtn2 = false;
if(isButtonPressed(EncoderButton, lastEncBtn2)) selServo = (selServo % 6) + 1;
// JoystickX setzt Pulswert des gewählten Servos
servocontroller.setServoPulse(selServo, mapJoystickX);
// JoystickButton → sanfte Rückfahrt zur Mitte in 500ms
if(JoystickButton) servocontroller.startMove(selServo, 1500, 500);
// Display: Servo-Nummer, Pulswert, Hinweis
updateDisplay("SERVO DEMO", 8, selServo, "Servo:", 1, 6, mapJoystickX, "Pulse:", 1000, 2000, 0, "EncBtn=next", 0, 0);

Ähnliche Projekte

  • 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 4 — JOYSTICK — Steuere zwei Servos direkt mit dem Joystick — mit eingebautem Deadzone-Filter für ruhige Nullstellung — und ein dritter Servo folgt automatisch dem Lichtsensor.
  • MODE 3 — Der Nachahmer-Arm — Bewege den Arm von Hand in zwei oder drei Positionen und drücke jeweils eine Taste zum Merken — danach fährt er diese Positionen ganz von selbst im Kreis ab, immer wieder. Genau so lernen echte Industrieroboter ihre Handgriffe.