from machine import Pin, PWM
import time
# Konfigurasi PWM pada GPIO 18
# Frekuensi standar untuk sebagian besar servo adalah 50Hz
servo = PWM(Pin(18), freq=50)
def set_angle(angle):
"""
Mengubah derajat (0-180) menjadi duty cycle PWM.
Rumus umum untuk servo SG90:
0 derajat -> duty sekitar 26 (0.5ms)
180 derajat -> duty sekitar 123 (2.5ms)
"""
# Menghitung duty cycle (rentang 20-120 biasanya aman untuk SG90)
duty = int(((angle / 180) * 100) + 20)
servo.duty(duty)
# Loop utama untuk menggerakkan servo
try:
while True:
print("Menuju 0 derajat")
set_angle(0)
time.sleep(1)
print("Menuju 90 derajat")
set_angle(90)
time.sleep(1)
print("Menuju 180 derajat")
set_angle(180)
time.sleep(1)
except KeyboardInterrupt:
# Mematikan PWM saat program dihentikan
servo.deinit()
print("Program berhenti")