Cari Blog Ini

Tugas Pendahuluan 2 - M2 Prak. uP & uC



Modul 2
Percobaan 4 Kondisi 5

1. Prosedur[Kembali]

  1. Rangkai dengan inputnya yaitu potensiometer dan outputnya yaitu 1 motor servo dan 1 Buzzer.
  2. Buatlah program dengan konfigurasi pin input dan output berdasarkan pada pin GP Raspberry yang telah dirangkai sebelumnya. Kemudian buatlah program untuk menghasilkan output motor servo bergerak searah jarum jam dan output Buzzer berbunyi bertambah keras seiring diputar potensiometer kearah kiri.
  3. Run program, putar potensiometer untuk melihat output motor servo dan buzzer
  4. Program selesai

2. Hardware dan Diagram Blok[Kembali]

A. Hardware

1. Raspberry Pi Pico


2. Buzzer



3. Potensiometer


4. Motor Servo


B. Blok Diagram



3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]

A. Rangkaian Simulasi


B. Prinsip Kerja

Rangkaian ini bekerja dengan sebuah potensiometer sebagai input dan motor servo serta buzzer sebagai output.

Pada saat potensiometer bernilai 0, buzzer tidak akan berbunyi dan motor servo berada pada sudut 0°.

Seiiring potensiometer diperbesar nilainya maka akan menggerakkan motor servo searah jarum jam dan bunyi buzzer bertambah keras suaranya.

Pada akhirnya, potensiometer berada pada nilai maksimumnya maka motor servo berada pada sudut 180° dan buzzer berhenti berbunyi


4. Flowchart dan Listing Program[Kembali]

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. Kondisi[Kembali]

Percobaan 4 Kondisi 5
Buatlah rangkaian seperti gambar pada percobaan 4, jika nilai pada potensiometer diperbesar maka servo bergerak searah jarum jam dan jika jika sudut servo >0 ° dan <180 ° buzzer berbunyi

6. Video Simulasi[Kembali]



7. Download File[Kembali]

Rangkaian Simulasi Klik Disini

Video Simulasi Klik Disini

DataSheet Raspberry Pi Pico Klik Disini 

DataSheet Buzzer Klik Disini

DataSheet Motor Servo Klik Disini

BAHAN PRESENTASI MATA KULIAH MIKROPROSESOR DAN MIKROKONTROLER 2024      Oleh : Zumar Ahmad (2210951027) Dosen Pengampu : Dr. Darwison, M.T. ...