ServoTimer2 Library meistern: Einfache Anleitung für Servo-Sweep
Komponenten und Zubehör
| Servo (z. B. Tower Pro MG996R oder SG90) | × | 1 |
| Arduino UNO | × | 1 |
| Jumper-Kabel | × | 1 |
Projektbeschreibung
Hintergrund: Timer-Konflikt
Bei meinem humanoiden Roboter-Projekt wollte ich Sprachausgabe (TMRpcm-Library) und Servo-Steuerung gleichzeitig nutzen. Beide Bibliotheken nutzen standardmäßig Timer 1 des Arduino – sie blockieren sich gegenseitig.
Lösung: ServoTimer2 Library, die stattdessen Timer 2 verwendet. Im Netz fand ich kaum Tutorials dazu – daher diese Anleitung.
Schritt 1: Hardware zusammenbauen
- Servo (z. B. Micro-Servo SG90) an Arduino anschließen:
- Rot (VCC) → 5 V
- Grau/Braun (GND) → GND
- Orange/Gelb (Signal) → Digital Pin 6
- Optional: Servo-Arm an Karton kleben für bessere Sichtbarkeit der Winkel
Schritt 2: ServoTimer2 Library installieren
- Herunterladen: github.com/nabontra/ServoTimer2
- ZIP-Datei in Arduino-Bibliotheken-Ordner entpacken oder in Arduino IDE: Sketch → Bibliothek einbinden → .ZIP-Bibliothek hinzufügen
Schritt 3: Der Code – Vergleich Servo.h vs. ServoTimer2
Standard Servo.h (Winkel in Grad)
#include <Servo.h>
Servo servo1;
void setup() {
servo1.attach(6);
}
void loop() {
servo1.write(0); delay(1000);
servo1.write(90); delay(1000);
servo1.write(180); delay(1000);
}
ServoTimer2 (Pulsweite in Mikrosekunden)
#include "ServoTimer2.h"
ServoTimer2 servo1;
void setup() {
servo1.attach(6);
}
void loop() {
servo1.write(750); // ~0° (min. Pulsweite)
delay(1000);
servo1.write(1500); // ~90° (Mittelstellung)
delay(1000);
servo1.write(2250); // ~180° (max. Pulsweite)
delay(1000);
}
Wichtig: Die Pulsweiten (750–2250 µs) variieren je nach Servo-Modell. Experimentieren Sie mit Werten – das beschädigt den Servo nicht. Typisch: 750 µs = 0°, 1500 µs = 90°, 2250 µs = 180°. Manche Servos benötigen bis 2700 µs für 180°.
Schritt 4: Testen & Kalibrieren
- Arduino mit Strom versorgen
- Mit Winkelmesser oder Skala prüfen, welcher Pulsweite welcher Winkel entspricht
- Werte für Ihr Projekt notieren
Code-Beispiele
Standard Servo Sweep
#include <Servo.h>
Servo servo1;
void setup() { servo1.attach(6); }
void loop() {
servo1.write(0); delay(1000);
servo1.write(90); delay(1000);
servo1.write(180); delay(1000);
}
ServoTimer2 Sweep
#include "ServoTimer2.h"
ServoTimer2 servo1;
void setup() { servo1.attach(6); }
void loop() {
servo1.write(750); delay(1000);
servo1.write(1500); delay(1000);
servo1.write(2250); delay(1000);
}
Schaltplan

Quellcode & mehr: GitHub Repository
Herstellungsprozess
- Wie Molybdän die moderne Industrie formt: Nutzung, Vorteile und Versorgungsdynamik
- Arduino-Roboter mit Raspberry Pi bauen: Schritt-für-Schritt-Anleitung
- Simple Pi Robot: 2-WD Autonomer Rover mit Raspberry Pi bauen
- Der komplette Leitfaden zur Glasfaserproduktion
- realloc() in C: Syntax, Best Practices & Beispiel
- C's free() Funktion meistern: Praktischer Leitfaden & Beispiel
- Thermistor (NTC) einfach nutzen: Schritt-für-Schritt Arduino-Anleitung
- Progressive Cutaway Animation in SolidWorks erstellen – Tutorial
- Gewinnbringenden Prototyp bauen: Schritt-für-Schritt-Anleitung für schnelle Produktentwicklung
- Schleiftechniken für Werkzeugschleifmaschinen meistern: Praktischer Leitfaden