Motor servo adalah salah satu komponen yang sangat populer dalam proyek Arduino, terutama pada bidang robotika, otomasi, dan sistem mekanik. Servo motor mampu bergerak ke sudut tertentu dengan presisi tinggi sehingga sangat cocok digunakan untuk lengan robot, pintu otomatis, sistem pengunci, hingga mekanisme penggerak lainnya. Pada tutorial ini, kita akan mempelajari cara membuat tombol untuk mengontrol motor servo menggunakan Arduino Uno. Sistem yang dibuat sangat sederhana tetapi sangat berguna untuk memahami konsep dasar input dan output pada Arduino.
Fungsi Tombol pada Motor Servo
Pada project ini, push button digunakan untuk mengubah posisi motor servo secara bergantian. Sistem bekerja seperti toggle switch sehingga setiap kali tombol ditekan, posisi servo akan berubah.
Cara kerjanya:
- Motor servo akan bergerak ke sudut 90 derajat saat tombol ditekan
- Ketika tombol ditekan lagi, servo akan kembali ke posisi 0 derajat
- Proses ini akan terus berulang setiap kali tombol ditekan
Metode yang Digunakan
Tutorial ini membahas dua metode utama dalam mengontrol servo menggunakan tombol, yaitu mengontrol motor servo dengan tombol tanpa debouncing, mengontrol motor servo menggunakan debouncing. Metode debounce sangat penting karena tombol mekanis sering menghasilkan pembacaan ganda saat ditekan. Tanpa debounce, servo dapat bergerak tidak stabil atau langsung berpindah posisi beberapa kali dalam satu penekanan tombol.
Perangkat Keras yang Dibutuhkan
- Arduino UNO R3
- Kabel USB
- Breadboard
- Kabel jumper
- Modul tombol tekan
- Motor servo (SG90 Micro Servo, MG90S, atau MG996R)
Baca juga: Arduino Button Toggle LED - Cara Menyalakan dan Mematikan LED dengan Satu Tombol
Wiring Diagram Arduino Button Motor Servo
Mengenal Motor Servo
Motor servo adalah motor DC yang dilengkapi sistem kontrol posisi sehingga dapat bergerak ke sudut tertentu dengan akurat. Berbeda dengan motor DC biasa yang berputar terus-menerus, servo bergerak berdasarkan sudut tertentu, misalnya:
- 0°
- 45°
- 90°
- 180°
Servo biasanya memiliki tiga kabel, yaitu:
- Merah → VCC 5V
- Cokelat/Hitam → GND
- Kuning/Oranye → Signal
Kabel signal dihubungkan ke pin PWM Arduino.
Cara Kerja Arduino Button Servo Motor
Pada tutorial ini, push button digunakan sebagai input untuk mengubah posisi motor servo secara bergantian. Servo akan mulai dari posisi 0 derajat, kemudian saat tombol ditekan pertama kali servo bergerak ke posisi 90 derajat. Ketika tombol ditekan kembali, servo akan kembali ke posisi 0 derajat. Proses toggle sudut ini akan terus berulang setiap kali tombol ditekan. Arduino membaca perubahan status tombol menggunakan mode INPUT_PULLUP, sehingga saat tombol tidak ditekan bernilai HIGH, sedangkan saat tombol ditekan akan terbaca sebagai LOW.
Kode Program Arduino Servo Motor dengan Tombol Tanpa Debouncing
#include <Servo.h>
// constants won't change
const int BUTTON_PIN = 7; // Arduino pin connected to button's pin
const int SERVO_PIN = 9; // Arduino pin connected to servo motor's pin
Servo servo; // create servo object
// variables will change:
int angle = 0;
int lastButtonState;
int currentButtonState;
void setup() {
Serial.begin(9600);
pinMode(BUTTON_PIN, INPUT_PULLUP);
servo.attach(SERVO_PIN);
servo.write(angle);
currentButtonState = digitalRead(BUTTON_PIN);
}
void loop() {
lastButtonState = currentButtonState;
currentButtonState = digitalRead(BUTTON_PIN);
if(lastButtonState == HIGH && currentButtonState == LOW) {
Serial.println("The button is pressed");
// change servo angle
if(angle == 0)
angle = 90;
else if(angle == 90)
angle = 0;
// move servo
servo.write(angle);
}
}
Penjelasan Program
Library berikut digunakan untuk mengontrol motor servo:
#include <Servo.h>
Kemudian kita menentukan pin tombol dan servo.
const int BUTTON_PIN = 7;
const int SERVO_PIN = 9;
Objek servo dibuat menggunakan:
Servo servo;
Pada fungsi setup(), servo dihubungkan ke pin PWM Arduino.
servo.attach(SERVO_PIN);
Servo mulai dari posisi awal 0 derajat.
servo.write(angle);
Arduino membaca status tombol menggunakan:
digitalRead(BUTTON_PIN);
Jika tombol ditekan, sudut servo akan berubah.
if(angle == 0)
angle = 90;
else if(angle == 90)
angle = 0;
Servo kemudian bergerak ke sudut baru menggunakan:
servo.write(angle);
Cara Kerja Toggle Sudut Servo
Kode berikut digunakan untuk membuat efek toggle.
angle = !angle;
Namun karena servo menggunakan nilai sudut tertentu, program menggunakan logika kondisi agar sudut berpindah antara 0° dan 90°. Metode ini sangat umum digunakan pada pintu otomatis, robot arm, pengunci elektronik, dan sistem buka tutup otomatis.
Kelemahan Program Tanpa Debouncing
Meskipun program di atas sudah dapat menggerakkan servo menggunakan push button, terkadang pergerakan servo menjadi tidak stabil akibat efek bouncing pada tombol. Saat tombol ditekan, Arduino bisa membaca satu tekanan sebagai beberapa kali input sehingga menyebabkan servo bergerak bolak-balik terlalu cepat, tidak berhenti pada sudut yang diinginkan, atau bahkan merespons lebih dari satu kali dalam sekali tekan. Oleh karena itu, penggunaan teknik debounce sangat disarankan agar pembacaan tombol menjadi lebih stabil dan pergerakan servo lebih akurat pada proyek nyata.
Mengapa Debouncing Penting?
Push button mekanis tidak langsung menghasilkan sinyal yang stabil saat ditekan. Ketika tombol disentuh, kontak logam di dalam tombol dapat bergetar sangat cepat dalam beberapa milidetik sehingga Arduino bisa membaca perubahan status HIGH dan LOW secara berulang dalam waktu yang sangat singkat. Fenomena ini disebut bouncing. Jika tidak ditangani, bouncing dapat menyebabkan input terbaca beberapa kali meskipun tombol hanya ditekan satu kali. Untuk mengatasinya, kita dapat menggunakan beberapa metode seperti teknik debounce manual, fungsi millis(), maupun library khusus seperti ezButton.
Langkah Pengujian
1. Hubungkan Arduino ke komputer menggunakan kabel USB.
2. Buka Arduino IDE.
3. Pilih board Arduino UNO dan port yang sesuai.
4. Salin kode program ke Arduino IDE.
5. Klik tombol Upload.
6. Tekan tombol beberapa kali.
7. Perhatikan gerakan motor servo.
Servo akan bergerak bergantian antara posisi 0° dan 90° setiap kali tombol ditekan.
Aplikasi Arduino Servo Motor dengan Tombol
Konsep ini dapat digunakan pada berbagai proyek elektronik dan IoT, seperti:
- Pintu otomatis
- Sistem parkir otomatis
- Robot arm
- Pengunci pintu elektronik
- Smart home
- Sistem buka tutup otomatis
- Katup otomatis
- Mini robotic project
Tips Menggunakan Servo dengan Arduino
Saat menggunakan servo motor, ada beberapa hal yang perlu diperhatikan:
- Jangan mengambil daya servo langsung dari pin Arduino jika servi besar.
- Gunakan power supply eksternal untuk servi berdaya tinggi.
- Pastikan ground Arduino dan power supply servo terhubung bersama.
- Gunakan kapasitor tambahan jika servo menyebabkan Arduino restart.
Baca juga: Arduino Button Piezo Buzzer - Cara Mengontrol Buzzer dengan Tombol Menggunakan Arduino UNO
Dalam praktik, hasil dan kendala yang ditemui bisa berbeda tergantung perangkat, konfigurasi, versi library, dan sistem yang digunakan.
- Diskusi umum dan tanya jawab praktik: https://t.me/edukasielektronika
- Kendala spesifik dan kasus tertentu: http://bit.ly/Chatarduino



0 on: "Arduino Button Motor Servo- Mengontrol Motor Servo dengan Tombol Menggunakan Arduino UNO"