M2_LA2
Laporan Akhir
Percobaan 4
Motor Servo, Buzzer, & Potensiomter
1. Buat rangkaian dipapan rangkaian sesuai dengan percobaan yang dilakukan pada modul.
2. Buat program di thonny ide.
2. Buat program di thonny ide.
3. Connect Raspberry pi pico dengan laptop
4. Jalankan program
5. Selesai.
2. Hardware dan Diagram Blok[Kembali]
Hardware :
- Raspberry pi pico
- Push button
- LED
3. Rangkaian Simulasi[Kembali]
- Rangkaian
- Prinsip Kerja
Rangkaian ini menggunakan satu potensiometer sebagai input dan dua output, yaitu satu buzzer dan satu servo motor, yang semuanya dikendalikan oleh Raspberry Pi Pico. Potensiometer dihubungkan ke pin ADC pada Raspberry Pi Pico untuk membaca nilai tegangan analog dengan rentang 0 hingga 65535. Nilai ini kemudian digunakan untuk mengontrol sudut putar servo dan duty cycle pada buzzer. Ketika potensiometer diputar, nilai ADC berubah secara proporsional, sehingga sudut servo ikut menyesuaikan dari 0° hingga sekitar 180°, tergantung posisi potensiometer. Pada saat yang sama, buzzer juga merespons perubahan nilai tersebut dengan menyesuaikan duty cycle-nya, sehingga menghasilkan intensitas suara yang berubah sesuai hambatan potensiometer. Dengan demikian, perputaran potensiometer secara bersamaan mengontrol pergerakan servo dan kekuatan suara buzzer, sesuai logika yang diprogram pada Raspberry Pi Pico.
4. Flowchart dan Listing Program[Kembali]
-
Flowchart
- Listing Program
from machine import Pin, PWM, ADC
from time import sleep
# Inisialisasi ADC dan PWM
pot = ADC(26) # GP26 = ADC0
servo = PWM(Pin(16)) # GP16 untuk servo
buzzer = PWM(Pin(14)) # GP14 untuk buzzer
# Konfigurasi frekuensi PWM
servo.freq(50) # 50 Hz untuk servo
buzzer.freq(1000) # Default frekuensi buzzer
# Fungsi untuk mapping nilai
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)
while True:
# === Baca ADC ===
pot_value = pot.read_u16() # Nilai 0 - 65535
# === Servo Motor ===
angle = map_value(pot_value, 0, 65535, 0, 180) # Derajat
duty_servo = map_value(angle, 0, 180, 1500, 7500) # Duty cycle PWM
servo.duty_u16(duty_servo)
# === Buzzer ===
freq_buzzer = map_value(pot_value, 0, 65535, 200, 2000) # Frekuensi buzzer
buzzer.freq(freq_buzzer)
buzzer.duty_u16(30000) # Duty untuk suara
# === Debug Output ===
print(f"Pot Value: {pot_value}, Angle: {angle}, Servo Duty: {duty_servo}, Buzzer Freq: {freq_buzzer}")
sleep(0.05)
Komentar
Posting Komentar