LAPORAN AKHIR 1 MODUL 2

 

 By: Rahmad Fajril Ilhami

2210951016



Modul 1 Percobaan 4
Motor Servo, Buzzer, & Potensiometer


1. Jurnal [Kembali]


2. Alat dan Bahan [Kembali]

Rasberry Pi Pico

Potentiometer

Buzzer

Motor Servo




3. Rangkaian [Kembali]



4. Prinsip Kerja Rangkaian [Kembali]

potensiometer, buzzer, dan servo motor. Potensiometer berfungsi sebagai input analog yang terhubung ke pin GP26 (ADC0) Raspberry Pi Pico. Saat potensiometer diputar, nilai tegangan analog yang keluar dari pin tengah potensiometer berubah, dan Raspberry Pi Pico membacanya sebagai nilai digital 16-bit (kisaran 0 hingga 65535). Nilai ini kemudian di-mapping ke sudut antara 0° hingga 180°, yang mewakili posisi sudut servo. Nilai sudut ini selanjutnya dikonversi ke sinyal PWM dengan frekuensi 50 Hz, lalu dikirimkan ke pin GP16 untuk mengatur posisi servo motor. Secara bersamaan, buzzer yang terhubung ke pin GP14 akan mengeluarkan bunyi jika sudut servo berada di antara 0° dan 180° (tidak pada batas ekstrim). Buzzer dibunyikan menggunakan sinyal PWM dengan frekuensi 1000 Hz dan duty cycle 50%. Namun, jika servo berada tepat di posisi 0° atau 180°, maka buzzer akan mati karena tidak menerima sinyal PWM. Rangkaian ini memungkinkan interaksi langsung antara posisi potensiometer dengan gerakan servo dan bunyi buzzer sebagai indikator aktifnya pergerakan.


from machine import Pin, PWM, ADC
from time import sleep

# Inisialisasi
pot = ADC(26)             # Potensiometer di GP26 (ADC0)
servo = PWM(Pin(16))      # Servo di GP16
buzzer = PWM(Pin(14))     # Buzzer di GP14

# Konfigurasi frekuensi awal
servo.freq(50)            # Frekuensi untuk servo (50 Hz)
buzzer.freq(1000)         # Frekuensi awal buzzer

# Fungsi mapping dari satu rentang ke rentang lain
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 dari potensiometer (0 - 65535)

    # === Kontrol Servo Motor ===
    angle = map_value(val, 0, 65535, 0, 180)                   # Mapping ke sudut 0–180°
    duty = map_value(angle, 0, 180, 1500, 7500)                # Duty cycle untuk PWM servo
    servo.duty_u16(duty)

    # Debug output
    print(f"Pot Value: {val}, Angle: {angle}, Duty: {duty}")

    # === Kontrol Buzzer ===
    freq = int(200 + (val / 65535) * (2000 - 200))             # Mapping ke frekuensi 200–2000 Hz
    buzzer.freq(freq)
    buzzer.duty_u16(30000)                                     # Volume buzzer (50% duty cycle)

    sleep(0.05)  # Delay untuk kestabilan


5. Video Rangkaian [Kembali]


6. Analisa [Kembali]







7. Link Download [Kembali]

Download video Rangkaian [Download]


Komentar

Postingan populer dari blog ini

MATA KULIAH ELEKTRONIKA

PRATIKUM SISTEM DIGITAL

PRATIKUM MIKROKONTROLEL DAN MIKROPROSESOR