/*
* Kontrol Motor Servo dengan ESP32
* Menggunakan library ESP32Servo
*
* KONEKSI HARDWARE:
* Motor Servo ESP32
* VCC (Merah) 5V atau VIN
* GND (Coklat) GND
* Signal (Orange) GPIO 18 (bisa diganti)
*
* CATATAN: Untuk servo yang membutuhkan arus besar,
* gunakan power supply eksternal 5V
*/
#include <ESP32Servo.h>
Servo myServo; // Buat objek servo
const int servoPin = 18; // Pin GPIO untuk servo
void setup() {
Serial.begin(115200);
// Konfigurasi ESP32 PWM untuk servo
// ESP32Servo menggunakan timer dan channel secara otomatis
myServo.attach(servoPin); // Attach servo ke pin
Serial.println("Motor Servo siap!");
Serial.println("Servo akan bergerak 0° - 180° - 0°");
}
void loop() {
// Contoh 1: Gerak sederhana 0° ke 180°
Serial.println("Gerak ke 0°");
myServo.write(0);
delay(1000);
Serial.println("Gerak ke 90°");
myServo.write(90);
delay(1000);
Serial.println("Gerak ke 180°");
myServo.write(180);
delay(1000);
Serial.println("Gerak ke 90°");
myServo.write(90);
delay(1000);
// Contoh 2: Gerak smooth/halus
Serial.println("\nGerak smooth dari 0° ke 180°");
for(int pos = 0; pos <= 180; pos++) {
myServo.write(pos);
delay(15); // Delay kecil untuk gerakan halus
}
delay(500);
Serial.println("Gerak smooth dari 180° ke 0°");
for(int pos = 180; pos >= 0; pos--) {
myServo.write(pos);
delay(15);
}
delay(1000);
}
/*
FUNGSI-FUNGSI TAMBAHAN YANG BISA DIGUNAKAN:
// Fungsi untuk gerak ke sudut tertentu dengan delay
void moveToAngle(int angle) {
myServo.write(angle);
delay(500);
}
// Fungsi untuk gerak smooth/halus
void smoothMove(int startAngle, int endAngle, int delayTime) {
if(startAngle < endAngle) {
for(int pos = startAngle; pos <= endAngle; pos++) {
myServo.write(pos);
delay(delayTime);
}
} else {
for(int pos = startAngle; pos >= endAngle; pos--) {
myServo.write(pos);
delay(delayTime);
}
}
}
// Fungsi untuk sweep/ayun
void sweep(int minAngle, int maxAngle, int cycles) {
for(int i = 0; i < cycles; i++) {
for(int pos = minAngle; pos <= maxAngle; pos++) {
myServo.write(pos);
delay(15);
}
for(int pos = maxAngle; pos >= minAngle; pos--) {
myServo.write(pos);
delay(15);
}
}
}
INSTALASI LIBRARY:
1. Buka Arduino IDE
2. Pergi ke Sketch > Include Library > Manage Libraries
3. Cari "ESP32Servo" oleh Kevin Harrington
4. Klik Install
ATAU via PlatformIO:
Tambahkan di platformio.ini:
lib_deps = madhephaestus/ESP32Servo@^0.13.0
TIPS:
- Servo standar bergerak 0° - 180°
- Untuk servo continuous rotation, nilai 90 = stop, 0 = putar satu arah, 180 = putar arah lain
- Jika servo jitter/bergetar, coba tambahkan kapasitor 100-470µF di VCC dan GND servo
- Untuk kontrol multiple servo, buat objek servo terpisah untuk tiap servo
*/