Laporan Akhir 1

                                                         [KEMBALI KE MENU SEBELUMNYA]



1. Prosedur
 
[Kembali]




Percobaan 4

  1. Siapkan komponen-komponen yang akan dirangkai sesuai percobaan
  2. Rangkai komponen pada breadboard
  3. Buka aplikasi Thonny IDE pada laptop
  4. Masukkan Listing program
  5. Hubungkan rangkaian breadboard dengan laptop
  6. Upload Listing program pada rangkaian
  7. Rangkaian sudah dapat dijalankan




2. Alat dan Bahan [Kembali]

  • Rasberry Pi Pico

    Potentiometer

    Buzzer

    Motor Servo



    • Diagram Blok


3. Rangkaian Simulasi [Kembali]







4. Prinsip Kerja Rangkaian & Listing Code [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.

Listing Code:
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 ===
    # Buzzer hanya aktif saat sudut antara 0° dan 180° eksklusif
    if 0 < angle < 180:
        # Ubah val ke frekuensi (200 Hz - 2000 Hz)
        freq = int(200 + (val / 65535) * (2000 - 200))
        buzzer.freq(freq)
        buzzer.duty_u16(30000)  # Volume/suaranya
    else:
        buzzer.duty_u16(0)             # Matikan suara


    sleep(0.05)



5. Video Rangkaian [Kembali]









6. Analisa 
[Kembali]












7. Link Download [Kembali]

Video Simulasi klik disini

Tidak ada komentar:

Posting Komentar

Tugas Pendahuluan

[KEMBALI KE MENU SEBELUMNYA] DAFTAR ISI 1.Kondisi 2. Gambar Rangkaian Simulasi 3. Prinsip Kerja 4. Download File 1. Soal [...