Pengendalian Motor Servo tidak bisa dilepaskan dari penerapan PWM (Pulse Width Modulation), besar Duty Cycle akan menentukan arah putaran motor servo. Untuk mengingatkan kembali bentuk sinyal PWM dengan besar Duty Cycle yang berbeda-beda.
Rangkaian pengawatan motor servo berbasis PWM dengan menggunakan pengendali Arduino seperti pada gambar di bawah ini.


Rangkaian dalam bentuk simulasi dengan sensor atau knob yang dibuat seperti gambar di bawah ini dengan pergerakan motor sensor berputar 180 derajat arah CW (Clock Wise) jika sensor atau potensiometer berubah besar tahanannya.

List Program kendali Motor Servo dengan sensor atau knob sesuai gambar di atas bisa dibuat seperti berikut :
#include <Servo.h> Servo myservo; // create servo object to control a servo int potpin = 0; // analog pin used to connect the potentiometer int val; // variable to read the value from the analog pin void setup() { myservo.attach(9); // attaches the servo on pin 9 to the servo object } void loop() { val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023) val = map(val, 0, 1023, 0, 180); // scale it to use it with the servo (value between 0 and 180) myservo.write(val); // sets the servo position according to the scaled value delay(15); // waits for the servo to get there }
Rangkaian dalam bentuk simulasi tanpa sensor atau knob yang dibuat seperti gambar di bawah ini dengan pergerakan motor sensor berputar 180 derajat arah CW (Clock Wise) kemudian kembali lagi berputar 180 derajat arah CCW (Counter Clock Wise) secara terus menerus.

Pada rangkaian di atas, sinyal PWM berasal dari keluaran arduino pin 9 yang dihubungkan dengan terminal masukan motor servo. Pada terminal catu daya motor servo bisa sama dengan catu daya pada arduino atau terpisah.
Program Kendali Motor Servo Berputar CW dan CCW 180 derajat Berbasis Arduino Uno sebagai berikut:
#include <Servo.h> Servo myservo; // create servo object to control a servo // twelve servo objects can be created on most boards int pos = 0; // variabel menentukan posisi motor servo void setup() { myservo.attach(9); // pin keluaran arduino } void loop() { for (pos = 0; pos <= 180; pos += 1) { // berputar dari 0 derajat ke 180 derajat // langkah dalam 1 derajat myservo.write(pos); // memberitahukan motor servo untuk ke posisi sesuai variabel 'pos' delay(15); // tunda 15ms untuk bergerak posisi ke 180 derajat } for (pos = 180; pos >= 0; pos -= 1) { // berputar dari 180 derajat ke 0 derajat myservo.write(pos); // memberitahukan motor servo untuk ke posisi sesuai variabel 'pos' delay(15); // tunda 15ms untuk bergerak posisi ke 0 derajat } }
Untuk lebih jelasnya silahkan lihat pergerakan motor servo dalam video simulasi di bawah ini :