#include <ESP32Servo.h>
// ================= DEKLARASI =================
const int servoPin = 13; // Pin sinyal servo dihubungkan ke GPIO 13
// Membuat objek bernama "motorServo" untuk dikendalikan
Servo motorServo;
void setup() {
Serial.begin(115200);
// Pengaturan khusus ESP32: Mengalokasikan timer memori untuk sinyal PWM
ESP32PWM::allocateTimer(0);
ESP32PWM::allocateTimer(1);
ESP32PWM::allocateTimer(2);
ESP32PWM::allocateTimer(3);
// Standar frekuensi motor servo SG90/MG996R adalah 50Hz
motorServo.setPeriodHertz(50);
// Menyambungkan objek servo ke pin 13
// Angka 500 dan 2400 adalah batas minimal dan maksimal pulsa motor (dalam mikrodetik)
motorServo.attach(servoPin, 500, 2400);
Serial.println("Sistem Servo Siap!");
// Mengembalikan servo ke posisi awal (0 derajat) saat mesin menyala
motorServo.write(0);
delay(2000);
}
void loop() {
// 1. Bergerak ke 90 Derajat (Tengah)
Serial.println("Posisi: 90 Derajat");
motorServo.write(90);
delay(2000); // Tunggu 2 detik agar motor punya waktu untuk bergerak
// 2. Bergerak ke 180 Derajat (Maksimal Kanan/Kiri)
Serial.println("Posisi: 180 Derajat");
motorServo.write(180);
delay(2000);
// 3. Bergerak kembali ke 90 Derajat
Serial.println("Posisi: 90 Derajat");
motorServo.write(90);
delay(2000);
// 4. Kembali ke 0 Derajat (Posisi Awal)
Serial.println("Posisi: 0 Derajat");
motorServo.write(0);
delay(2000);
}