2. Buat program untuk mikrokontroler Raspberry Pi Pico di software Thonny.
3. Inputkan program ke dalam mikrokontroler melalui USB.
4. Setelah program diinputkan, uji rangkaian yang telah dirangkai sesuai dengan output yang ditentukan.
Rangkaian ini terdiri dari tiga komponen utama, yaitu motor servo, buzzer, dan potensiometer, yang dikendalikan oleh mikrokontroler Raspberry Pi Pico. Tujuan dari rangkaian ini adalah untuk membaca nilai analog dari potensiometer dan menggunakannya untuk mengatur posisi sudut motor servo serta frekuensi buzzer, sesuai dengan alur kerja yang ditunjukkan dalam diagram flowchart.
Potensiometer berfungsi sebagai input utama yang menghasilkan sinyal analog berdasarkan posisi knop-nya. Nilai analog ini dibaca oleh mikrokontroler untuk dijadikan acuan pengaturan. Motor servo digunakan sebagai aktuator yang bergerak sesuai sudut tertentu berdasarkan nilai yang dikonversi dari potensiometer. Sementara itu, buzzer menghasilkan suara dengan frekuensi yang juga ditentukan oleh nilai potensiometer. Dengan demikian, satu input dari potensiometer dapat mengontrol dua output, yaitu sudut servo dan suara buzzer.
Prinsip kerja sistem dimulai dengan inisialisasi seluruh komponen, yaitu konfigurasi pin untuk potensiometer, buzzer, dan servo. Program kemudian masuk ke dalam loop utama, di mana potensiometer dibaca secara terus-menerus. Nilai analog yang terbaca dikonversi ke dua bentuk: sudut servo (dalam derajat) dan frekuensi buzzer (dalam Hertz). Nilai sudut servo selanjutnya diubah ke dalam bentuk duty cycle PWM, yang digunakan untuk mengatur posisi motor servo. Nilai frekuensi dari buzzer dikirim ke buzzer untuk menghasilkan suara yang sesuai, lalu data hasil konversi ditampilkan (kemungkinan melalui serial monitor). Terakhir, program akan menunggu selama 0,05 detik sebelum mengulangi proses kembali.
from machine import Pin, PWM, ADC
from time import sleep
# ======================= Inisialisasi ==========================
pot = ADC(26) # GP26 = ADC0
servo = PWM(Pin(16)) # Servo di pin GP16
buzzer = PWM(Pin(14)) # Buzzer di pin GP14
# ======================= Konfigurasi PWM ========================
servo.freq(50) # Servo biasanya menggunakan 50 Hz
buzzer.freq(1000) # Frekuensi awal buzzer
# ======================= Fungsi Mapping ========================
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)
# ======================= Loop Utama ============================
while True:
val = pot.read_u16() # Nilai ADC 16-bit (0 - 65535)
# === Servo Motor ===
# Konversi nilai potensiometer ke sudut (0° - 180°)
angle = map_value(val, 0, 65535, 0, 180)
# Konversi sudut ke duty cycle (1500 - 7500) sesuai dengan servo PWM
duty = map_value(angle, 0, 180, 1500, 7500)
servo.duty_u16(duty)
# Debug print
print(f"Pot Value: {val}, Angle: {angle}, Duty: {duty}")
# === Buzzer ===
# Ubah nilai ADC ke frekuensi (200 Hz - 2000 Hz)
freq = int(200 + (val / 65535) * (2000 - 200))
buzzer.freq(freq)
buzzer.duty_u16(30000) # Volume/suara buzzer
sleep(0.05)
Tidak ada komentar:
Posting Komentar