a) Prosedur[Kembali]

  1. Menyusun rangkaian sesuai pada percobaan 4 pada modul di breadboard.
  2. Buka software Thonny IDE.
  3. Masukkan codingan sesuai kondisi dan konfigurasi pin pada rangkaian.
  4. Transfer codingan dari software ke Raspberry Pi Pico.
  5. Jalankan rangkaian.
  6. Cek apakah setiap komponen rangkaian pada breadboard berfungsi dan berjalan sesuai algoritma program.
  7. Jika terdapat kendala atau masalah pada rangkaian maka lakukan problem solving terlebih dahulu hingga rangkaian berjalan sebagaimana mestinya.
  8. Selesai.

b) Hardware dan Diagram Blok[Kembali]

  • Hardware
  1. Raspberry Pi Pico
  2. Motor Servo
  3. Buzzer
  4. Potensiometer
  • Diagram Blok

c) Rangkaian Simulasi dan Prinsip Kerja[Kembali]


  • Rangkaian Simulasi
Gambar 1. Rangkaian Percobaan.


  • Prinsip Kerja

Prinsip kerja percobaan ini ialah mengatur pergerakan servo motor dan mengubah bunyi dari buzzer dengan menggunakan potensiometer sebagai kendali utama. Potensiometer dihubungkan ke pin ADC pada board Raspberry Pi Pico. Saat potensiometer diputar, tegangan analog yang keluar akan terbaca oleh ADC dan langsung dikonversi menjadi nilai digital dengan rentang antara 0 sampai 65535.

Setelah nilai digital diperoleh, sistem memanfaatkannya untuk dua hal utama. Pertama, nilai tersebut diubah ke dalam bentuk sudut rotasi servo, antara 0° hingga 180°. Sudut ini kemudian diterjemahkan ke dalam sinyal PWM yang sesuai, dan dikirimkan ke pin servo. Dengan cara ini, sudut servo bisa disesuaikan hanya dengan memutar potensiometer.

Kedua, nilai dari potensiometer juga digunakan untuk mengatur frekuensi suara buzzer. Nilai digital dikonversi ke frekuensi dalam rentang 200 Hz sampai 2000 Hz. Jadi, semakin besar nilai potensiometer, semakin tinggi nada yang dihasilkan oleh buzzer. Sinyal PWM dengan frekuensi tersebut dikirim ke pin buzzer, dan duty cycle-nya diatur untuk mengatur volume.

Seluruh proses ini berjalan secara terus-menerus dalam loop. Setiap kali posisi potensiometer berubah, sistem langsung membaca nilai terbarunya dan menyesuaikan posisi servo serta bunyi buzzer secara real-time.



d) Flowchart dan Listing Program[Kembali]



  • Flowchart
Gambar 2. Flowchart Percobaan.


  • Listing Program
from machine import Pin, PWM, ADC
from time import sleep
import utime
# Inisialisasi
pot = ADC(26) # GP26 = ADC0
servo = PWM(Pin(16))
buzzer = PWM(Pin(14))
# Konfigurasi PWM
servo.freq(50) # 50 Hz untuk servo
buzzer.freq(1000) # Awal frekuensi buzzer
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:
val = pot.read_u16() # Nilai ADC 16-bit (0 - 65535)
# === Servo Motor ===
# Membaca nilai potensiometer (0 - 65535)
pot_value = pot.read_u16()
# Konversi ke sudut servo (0° - 180°)
angle = map_value(pot_value, 0, 65535, 0, 180)
# Konversi sudut ke duty cycle (1500 - 7500) → sesuai servo PWM
duty = map_value(angle, 0, 180, 1500, 7500)
servo.duty_u16(duty)
# Print untuk debugging
print(f"Pot Value: {pot_value}, Angle: {angle}, Duty: {duty}")
# === Buzzer ===
# Ubah val ke frekuensi (200 Hz - 2000 Hz)
freq = int(200 + (val / 65535) * (2000 - 200))
buzzer.freq(freq)
buzzer.duty_u16(30000) # Volume/suaranya
sleep(0.05)


e) Video Demo[Kembali]



Video 1. Video Percobaan.


f) Download File[Kembali]

Download video percobaan [klik]