LA 1 M2 UP UC



Percobaan 4

modul 2


1. Prosedur[Kembali]

  • Rangkai semua komponen 
  • Buatlah program dengan konfigurasi pin input (potensiometer di GP26) dan output (servo di GP15 dan buzzer di GP14).

  • Jalankan program dan cobakan sesuai kondisi
  • putar potensiometer dan amati sudut servo

.

2. Hardware dan Diagram Blok[Kembali]

  •    Prinsip Kerja
        Rangkaian dan program ini menggunakan potensiometer sebagai input analog untuk mengendalikan servo motor dan buzzer lewat Raspberry Pi Pico. Saat potensiometer diputar, tegangan analog dibaca oleh pin GP26 dan dikonversi menjadi nilai digital 16-bit. Nilai ini dipetakan untuk dua output: sudut 0–180° untuk mengatur posisi servo melalui pin GP16 dengan sinyal PWM 50 Hz, dan frekuensi 200–2000 Hz untuk buzzer di pin GP14. Duty cycle buzzer dijaga tetap agar suaranya jelas. Semua proses berjalan terus-menerus, sehingga perubahan potensiometer langsung mengubah gerak servo dan suara buzzer. Sistem ini menunjukkan cara sederhana mengubah sinyal analog menjadi aksi digital melalui PWM.

4. Flowchart dan Listing Program[Kembali]

    • Flowchart





    • Listing Program

    from machine import Pin, PWM, ADC

    from time import sleep

    import utime

    # Inisialisasi

    pot = ADC(26) # GP26 = ADC0

    servo = PWM(Pin(16)) # GP16 untuk servo

    buzzer = PWM(Pin(14)) # GP14 untuk buzzer

    # Konfigurasi PWM

    servo.freq(50) # 50 Hz untuk servo

    buzzer.freq(1000) # Awal 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:

    val = pot.read_u16() # Nilai ADC 16-bit (0 - 65535)

    # === Servo Motor ===

    pot_value = val

    angle = map_value(pot_value, 0, 65535, 0, 180)

    duty = map_value(angle, 0, 180, 1500, 7500)

    servo.duty_u16(duty)

    # Debugging output

    print(f"Pot Value: {pot_value}, Angle: {angle}, Duty: {duty}")

     

    # === Buzzer ===

    freq = int(200 + (val / 65535) * (2000 - 200))

    buzzer.freq(freq)

    buzzer.duty_u16(30000)

    sleep(0.05)

5. Analisa[Kembali]










6. Video Demo[Kembali]



7. Download File[Kembali]

datasheet raspberry pi pico download

datasheet buzzer download

datasheet motor servo download



Komentar

Postingan populer dari blog ini

MODUL 1

modul 2 sistem digital

Tugas Pendahuluan 1 Modul 1 (Percobaan 1 Kondisi 10)