TP1 M2




PERCOBAAN 4 KONDISI 8

1. Prosedur[Kembali]

  • Rangkai semua komponen di Wokwi sesuai dengan percobaan pada modul 
  • Buat program untuk Rspberry pi pico, sesuaikan konfigurasinya dengan rangkaian pada wokwi dan kondisi yang dipakai
  • Masukkan Program ke wokwi (micropython)
  • Simulasikan rangkaian

2. Hardware dan Diagram Blok[Kembali]

1. Raspberry PI PICO





3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]

Rangkaian Simulasi: 




Prinsip Kerja:

1.      Potensiometer (GP26/ADC0):

·       Digunakan untuk menghasilkan nilai analog sebagai input.

·       Nilai ini dibaca melalui pin ADC dan dikonversi menjadi angka digital (0–65535).

2.      Servo Motor (GP16):

·       Nilai potensiometer digunakan untuk mengatur sudut putar servo antara 0° hingga 180°.

·       Sudut ini dikonversi ke sinyal PWM (duty cycle) dengan frekuensi 50 Hz.

3.      Buzzer (GP14):

·       Jika nilai sudut servo berada di luar rentang valid (kurang dari 0° atau lebih dari 180°), buzzer akan menyala (duty 30000).

·       Jika nilai sudut valid, buzzer akan dimatikan (duty 0).

4.      Loop Berulang:

·       Sistem membaca input potensiometer terus-menerus, mengubah posisi servo, dan memantau apakah buzzer perlu diaktifkan.


4. Flowchart dan Listing Program[Kembali] 


Flowchart:






Listing Program:
from machine import Pin, PWM, ADC
from time import sleep

# Inisialisasi
pot = ADC(26)  # GP26 = ADC0
servo = PWM(Pin(16))
buzzer = PWM(Pin(14))

# Konfigurasi PWM
servo.freq(50)  # Frekuensi standar servo
buzzer.freq(1000)  # Default 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:
    pot_value = pot.read_u16()  # Nilai ADC (0 - 65535)

    # Konversi ke sudut servo (0° - 180°)
    angle = map_value(pot_value, 0, 65535, -1, 181)

    # Validasi sudut dan kontrol buzzer
    if angle < 0 or angle > 180:
        buzzer.duty_u16(30000)  # Bunyikan buzzer
    else:
        buzzer.duty_u16(0)      # Matikan buzzer

    # Konversi sudut ke duty cycle servo
    duty = map_value(angle, 0, 180, 1500, 7500)
    servo.duty_u16(duty)

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

    sleep(0.05)


5. Kondisi[Kembali]
Buatlah rangkaian seperti gambar pada percobaan 4, jika nilai pada potensiometer diperkecil maka servo bergerak berlawanan jarum jam dan jika jika sudut servo <0 ° dan >180 ° buzzer berbunyi

6. Video Simulasi[Kembali]





7. Download File[Kembali]

Rangkaian [Klik disini]
Video simulasi [download]
Datasheet Raspberry Pi Pico [Download]




Posting Komentar

Lebih baru Lebih lama