Heute zeige ich dir, wie du mit einem Arduino Servo einen Motor präzise steuerst und damit spannende Projekte wie Roboterarme, bewegliche Kamerahalterungen oder automatische Türöffner bauen kannst. Servomotoren sind perfekt für Anfänger geeignet, da sie sich ohne komplexe Motorsteuerung auf einen exakten Winkel zwischen 0 und 180 Grad positionieren lassen. In diesem Tutorial lernst du die Grundlagen der Servo-Ansteuerung, den korrekten Anschluss und erhältst funktionierende Code-Beispiele zum direkten Nachbauen.
Das brauchst du – Materialliste
- Arduino Board (z.B. Uno, Nano oder Mega) – Auf Amazon ansehen
- Standard-Servomotor (z.B. SG90 Mikroservo) – Auf Amazon ansehen
- Potentiometer 10kΩ – Auf Amazon ansehen
- Verbindungskabel (Jumperkabel) – Auf Amazon ansehen
- Adafruit Robot Shield (optional, für mehrere Servos) – Auf Amazon ansehen
- SunFounder Servo Shield (günstigere Alternative) – Auf Amazon ansehen
- Externes Netzteil 5-6V (für mehrere Servos) – Auf Amazon ansehen
Kostenpunkt: Die Grundausstattung bekommst du bereits ab ca. 10-15 Euro.
So funktioniert ein Servomotor – Technische Grundlagen
Aufbau eines Servomotors
Ein Servomotor besteht aus drei Hauptkomponenten:

- DC-Motor: Erzeugt die eigentliche Bewegung
- Getriebe: Übersetzt die hohe Motorgeschwindigkeit in höheres Drehmoment
- Steuerplatine mit Potentiometer: Regelt die Position und gibt Feedback über die aktuelle Stellung
Das PWM-Signal (Pulsweitenmodulation)
Servos werden über ein PWM-Signal gesteuert. Die Länge des Impulses bestimmt die Zielposition:
- 1,0 ms Impuls = 0° (linker Anschlag)
- 1,5 ms Impuls = 90° (Mittelstellung)
- 2,0 ms Impuls = 180° (rechter Anschlag)
Das Signal wird alle 20 ms (50 Hz) wiederholt. Die Arduino Servo-Library übernimmt diese Zeitsteuerung automatisch für dich.
Stromversorgung beachten!
Wichtig: Einen einzelnen Mikroservo kannst du direkt vom Arduino mit Strom versorgen. Bei mehreren Servos oder unter Last brauchst du zwingend ein externes 5V-Netzteil, da dein Arduino sonst abstürzen kann. In diesem Fall verbindest du nur GND mit dem Arduino, die Stromversorgung erfolgt separat.
Verkabelung – So schließt du den Arduino Servo an
Grundschaltung: Arduino + Servo + Potentiometer

Servo-Anschluss (Standard-Farbcodierung):
- Orange/Gelb (Signal) → Arduino Pin 9 (PWM-fähig)
- Rot (VCC) → Arduino 5V
- Braun/Schwarz (GND) → Arduino GND
Potentiometer-Anschluss:
- Linker Pin → Arduino 5V
- Mittlerer Pin (Schleifer) → Arduino A0 (Analog Input)
- Rechter Pin → Arduino GND
Alternative Montage-Optionen

Servos lassen sich hervorragend mit Lego, Holz oder 3D-gedruckten Halterungen kombinieren. Die Standard-Befestigungslöcher passen oft zu Maker-Bausätzen.
Der Arduino Servo Code
Beispiel 1: Servo mit Potentiometer steuern (Knob)
Dieser Code liest die Position des Potentiometers aus und überträgt sie direkt auf den Servo. Drehe am Potentiometer und beobachte, wie der Servo sich sofort mitbewegt:
#include <Servo.h>
Servo myservo; // erstellt ein Servo-Objekt, um einen Servomotor zu steuern
int potpin = 0; // Analog Pin, an dem das Potentiometer angeschlossen ist
int val; // Variable um den Wert des Analogen Pin zwischenzuspeichern
void setup() {
myservo.attach(9); // verknüpft den Servomotor an Pin 9 mit dem Servo-Objekt
}
void loop() {
val = analogRead(potpin); // liest das Potentiometer aus (Wert zwischen 0 und 1023)
val = map(val, 0, 1023, 0, 180); // rechnet den Wert in den Wertebereich des Servomotors (zwischen 0 und180)
myservo.write(val); // überträgt die Zielposition an den Servomotors
delay(15); // lässt dem Servomotor Zeit, die Zielposition zu erreichen
}
Beispiel 2: Sweep – Automatisches Hin- und Herschwenken
Ideal zum Testen deines Servos ohne zusätzliche Hardware. Der Motor bewegt sich automatisch von 0° bis 180° und zurück:
// Sweep
// by BARRAGAN
#include <Servo.h>
Servo myservo; // erzeugt ein Servomotor-Objekt
// maximal können acht Servomotor-Objekte erzeugt werden
int pos = 0; // Variable, die die Servoposition (Winkel) speichert
void setup(){
myservo.attach(9); // an welchem Pin ist der Servomotor angeschlossen
}
void loop(){
for(pos = 0; pos < 180; pos += 1) { // von 0 bis 180 Grad, in Schritten von einem Grad
myservo.write(pos); // sagt dem Servomotor, in welche Position sich drehen soll
delay(15); // wartet 15 Millisekunden
}
for(pos = 180; pos>=1; pos-=1) { // und das gleiche zurück
myservo.write(pos);
delay(15);
}
}
Beispiel 3: Manuelle Steuerung ohne Library
Für fortgeschrittene Anwender – direktes PWM-Signal ohne Servo.h:
digitalWrite(myServo,HIGH); delayMicroseconds(1500); digitalWrite(myServo,LOW); delayMicroseconds(18500);
Hinweis: Diesen Code musst du in einer Schleife alle 20 ms ausführen. Die Servo-Library ist für dich als Einsteiger deutlich einfacher.
Fazit – Dein Einstieg in die Servo-Steuerung
Die Ansteuerung eines Servos mit Arduino ist eines der einsteigerfreundlichsten Projekte in der Maker-Welt. Mit nur drei Kabelverbindungen und wenigen Zeilen Code bewegst du präzise mechanische Bauteile. Die mitgelieferte Servo-Library macht die komplexe PWM-Steuerung kinderleicht.
Zusammenfassung:
✅ Einfache Verkabelung (Signal, VCC, GND)
✅ Fertige Arduino-Library verfügbar
✅ Präzise Positionierung von 0-180°
✅ Perfekt für Robotik-, Automatisierungs- und Modellbauprojekte
Nächste Schritte: Probiere mehrere Servos gleichzeitig aus, baue einen Roboterarm oder kombiniere Servos mit Sensoren für autonome Projekte. Mit einem Shield kannst du problemlos 16+ Servos gleichzeitig steuern.
Viel Erfolg bei deinem Servo-Projekt!
Wenn dir das Projekt gefallen hat und du von weiteren interessanten Projekten inspiriert werden willst, sieh dir doch mal mein neues E-Book »Arduino Projekte Volume 1« an!
- Die beliebtesten Arduino-Projekte von StartHardware
- Inklusive Schaltplan, Beschreibung und Code
- Arduino-Schnellstart-Kapitel
- Kompakter Programmierkurs

Der Sketch kann nicht kopiert werden. So wird er nicht funktionieren. Es müssen folgende Zeilen geändert werden:
#include // hier fehlte die Datei
int potpin=2; // In der Abbildung ist er an 2 und nicht 0 angeschlossen
Es ist zwar schönüberall die gleichen Beispiele zu finde, aber leider sind sie nur kopiert und nicht getestet. Was passiert, wenn so ein Beispiel auf einenm UNO, vorausgesetzt es hat vorher schon mal funktioniert, einen Servo in Dauerlauf versetzt? Er sollte ja nur von 0 bis 180 Grad laufen bzw. zurück und nicht weiter und nach 360 merkt man nur einen kurze Verlangsamung und dann wieder volle Power.
Antwort: Nicht nur den Pin deklarieren, sondern auch den Wertebereich.
Früher im Ferienlager haben wir damit rumgespielt. Dat war große Sahne. Isch kann mich noch daran erinnern wie wir mit den Gurken gespielt haben, obwohl wie diese essen sollten. Der gute Willie war auch mit dabei. Ich bin nicht mehr der jüngste aber wer eine kleine Nummer schieben will soll sich melden.
Lange Lunte
Iiiiiich Niiiiiicht Deuuuuutsch
Was passiert, wenn ich einen Servo von einem Meccanoid G15 Roboter anschließe und diesen um über 180 Grad drehen lasse? Schaltet der intern dann ab oder wird er dadurch zerstört?
Ja du kannst eine Pause einlegen, dafür kannst du im Programm was du geschrieben/ abgeschrieben hast im void loop() teil ein weiteren digital pin hinzufügen, der für eine bestimmte zeit Strom bekommt aber ja nichts machen muss und da hast du dann deine Pause.
Gibt es in der Servo-Libery eine Variable mit der man die Stellgeschwindigkeit des Servos einstellen kann? Ich möchte auf meiner Modellbahn einen Kran mit einem Servo steuern. Wenn ich das Poti zu schnell drehe dreht sich der Kran irrsinnig schnell. Ich möchte erreichen, dass mit dem Poti die Position eingestellt wird und der Kran sich dann langsam auf dies Position dreht.
Hey gutes tutorial
Hallo :)
Ich möchte gerne einen Servo (Digitales Segelwindservo RS-10 von Conrad : Betriebsspannung: 4,8- 7,2 V, max. Laufweg 5 x 360 Grad) mit dem Arduino so ansteuern, dass er sich um 180 Grad dreht und eine Pause einlegt. Meine Fragen sind jetzt nun: Brauche ich einen zusätzlichen Motortreiber und wenn ja welchen? Wie muss ich das genau verbinden, evt. auch mit einem zusätzlichen Netzteil? Benötige ich noch zusätzliche Bauelemente? Ist es überhaupt möglich eine Pause einzulegen, in der sich der Motor nicht bewegt? Wie schreibe ich dies in den Programmcode, da ich bisher leider nur Programmcodes gefunden habe, in denen sich der Servomotor ohne Pause dreht. Ich freue mich sehr über eine Antwort. Vielen Dank.
Liebe Grüße
digitalWrite(myServo,HIGH);
delayMicroseconds(1500);
digitalWrite(myServo.LOW);
delayMicroseconds(18500);
bei digitalWrite(myServo.LOW); gehört ein „,“, nicht ein Punkt
Sure. Thank you.