Falls du dich schon mal gefragt hast, wie man einen Modellbauservo mithilfe eines Arduino/Genuino Boards ansteuert, bist du hier genau richtig.
Im heutigen Tutorial möchten wir dir eine kleine Einführung in die Verwendung der Servo-Bibliothek geben und dir zeigen, wie du die Position des Servos ganz einfach über deinen Computer festlegen kannst.
Zur Ansteuerung verwenden wir folgende Bauteile:
1x Genuino Uno Rev3
1x TowerPro MG996R
3x Steckverbindungen M-M
Los geht’s!
Verbinde den Servo mit den Steckverbindungen mit deinem Genuino Uno. Für unser Beispiel verbinden wir die Signalleitung des Servos mit dem Ausgang 9. 5V und GND werden entsprechend der Abbildung mit dem Servo verbunden. Schließe das Board nun mit einem USB-Kabel an deinen Computer an.
Kommen wir zur Programmierung des Mikrocontrollers. Wir möchten zum einen den Servo über das Genuino Uno steuern können und diesem zum anderen die Position über den Computer mitteilen können.
Folgenden Code haben wir vorbereitet, den du direkt kopieren und mithilfe der Arduino IDE auf dein Board spielen kannst. Auf GitHub haben wir dir auch die .ino-Projektdatei zur Verfügung gestellt.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
// Einbinden der Servobibliothek #include <Servo.h> // Erstellen eines Servo-Objekts Servo servo; void setup() { // Einrichten der seriellen Schnittstelle Serial.begin(9600); // unser Servo ist an Pin 9 angeschlossen servo.attach(9); } void loop() {} // wird aufgerufen, sobald Daten verfügbar sind void serialEvent() { // Einlesen des übergebenen Sollwertes und parsen zu Integer int soll = Serial.parseInt(); // Ausgabe des Wertes zur Kontrolle Serial.print(soll); // Fahren auf gewünschte Position servo.write(soll); // Einlesen der Servoposition int ist = servo.read(); // Ausgabe des Wertes Serial.print(" Servoposition: "); Serial.println(ist, DEC); } |
Wie im Quellcode beschrieben, erzeugen wir ein Servo-Objekt und teilen dem Mikrocontroller mit, dass wir den Servo an Pin 9 angeschlossen haben. Wir verwenden die ereignisgesteuerte Funktion
serialEvent(), die aufgerufen wird, sobald Daten an der seriellen Schnittstelle verfügbar sind und sparen uns damit das manuelle Abfragen innerhalb der
loop(). Bitte beachte, dass diese Funktion nicht für das Arduino/Genuino Esplora, Leonardo und Micro zur Verfügung steht.
Über den seriellen Monitor der Arduino IDE können wir nun mit dem Genuino Uno kommunizieren. Sende z.B.
90, um den Servo auf die Position 90° zu fahren.

Die Eingabe der zu fahrenden Winkelposition des Servos wird zunächst innerhalb der Funktion
serialEvent() zum Typ Integer geparst und der Variablen
soll zugewiesen. Dieser Wert eignet sich nun für den Servo und kann ihm direkt übergeben werden:
Welche Winkelposition fährt der Servo, wenn negative Werte oder Werte größer als 180 übergeben werden?
Überprüfen kannst du das Ergebnis mit der Abfrage der Servoposition, die in Zeile 24 erfolgt:
Hast du alles richtig gemacht, solltest du den Servo nun einfach über den seriellen Monitor der Arduino Software steuern können.
Sollest du Fragen haben, hinterlasse uns einfach einen Kommentar. Weitere Informationen zur Verwendung der seriellen Schnittstelle und der Servo-Bibliothek erhältst du hier und hier.