from machine import Pin, PWM, ADC
from time import sleep
# Inisialisasi
pot = ADC(26) # Potensiometer di pin ADC0 (GP26)
servo = PWM(Pin(16)) # Servo motor di pin GP16
buzzer = PWM(Pin(14)) # Buzzer di pin GP14
# Konfigurasi PWM
servo.freq(50) # 50 Hz sesuai standar servo
buzzer.freq(1000) # Frekuensi awal buzzer
# Fungsi map seperti Arduino
def map_value(value, in_min, in_max, out_min, out_max):
return int((value - in_min) * (out_max - out_min) / (in_max - in_min) + out_min)
prev_angle = 90 # Sudut awal servo
# Loop utama
while True:
pot_value = pot.read_u16() # Baca nilai dari potensiometer
angle = map_value(pot_value, 0, 65535, 0, 180) # Ubah ke rentang sudut 0–180
duty = map_value(angle, 0, 180, 1500, 7500) # Ubah ke nilai duty PWM
servo.duty_u16(duty)
# === Logika arah rotasi (hanya informasi arah) ===
if angle < prev_angle:
direction = "Berlawanan jarum jam"
elif angle > prev_angle:
direction = "Searah jarum jam"
else:
direction = "Diam"
# === Kontrol buzzer ===
if 0 < angle < 180:
buzzer.duty_u16(30000) # Nyala
else:
buzzer.duty_u16(0) # Mati
# Debug info
print(f"Pot: {pot_value}, Angle: {angle}°, Duty: {duty}, Arah: {direction}")
prev_angle = angle
sleep(0.05)