LA mPuP M2 P6




Modul 2
(Percobaan 6)

1. Prosedur
[Kembali]

1. Rangkai rangkaian di wokwi sesuai dengan kondisi percobaan.
2. Buat program dengan bahasa python.
3. Jalankan simulasi rangkaian.
4. Selesai.

analisa :



2. Hardware dan Diagram Blok [Kembali]

Hardware :

a) Raspberry Pi Pico









2. Push Button






3. Motor Servo


4. LED RGB



5. Potensio





Diagram Blok  :




3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]

Rangkaian Simulasi :





Prinsip Kerja : 

Potensiometer sebagai Pengendali Sudut Servo:
    • Potensiometer menghasilkan sinyal analog (0–3.3V) yang dibaca melalui pin ADC (GP28).

    • Nilai ADC (0–65535) diubah ke rentang sudut (0°–180°) menggunakan fungsi map_value.

    • Sudut ini kemudian dikonversi ke duty cycle PWM yang sesuai (1500–7500) dan dikirim ke motor servo lewat pin GP16, sehingga motor bergerak sesuai posisi potensiometer.

  • Kontrol Warna LED RGB Berdasarkan Sudut:

    • LED RGB dikontrol oleh tiga pin terpisah (GP1 = merah, GP2 = hijau, GP3 = biru).

    • Setiap 1 detik (1000 milidetik), warna LED akan berkedip berdasarkan sudut servo:

      • 0°–60° → LED merah berkedip

      • 61°–120° → LED hijau berkedip

      • 121°–180° → LED biru berkedip

    • LED menyala dan mati secara bergantian tiap detik menggunakan variabel led_state.

  • Looping dan Respons Dinamis:

    • Semua fungsi dilakukan dalam loop tak hingga (while True), membuat sistem selalu membaca nilai potensiometer, mengatur servo, dan mengubah LED sesuai waktu dan posisi.


  • 4. Flowchart dan Listing Program [Kembali]

    Flowchart :

       


    Listing Program :
    from machine import Pin, PWM, ADC
    import utime
    # Definisi pin
    servo = PWM(Pin(16)) # Servo pada GP16
    pot = ADC(Pin(28)) # Potensiometer pada GP28
    led_red = Pin(1, Pin.OUT) # LED Merah pada GP1
    led_green = Pin(2, Pin.OUT) # LED Hijau pada GP2
    led_blue = Pin(3, Pin.OUT) # LED Biru pada GP3
    # Konfigurasi servo (frekuensi 50Hz)
    servo.freq(50)
    # Fungsi map seperti di Arduino
    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)
    # Variabel untuk kontrol kedipan LED
    last_blink = utime.ticks_ms()
    led_state = True # Mulai dalam keadaan menyala
    while True:
    # Waktu sekarang
    now = utime.ticks_ms()
    # 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}")
    # Jika sudah lewat 1000 ms (1 detik), ubah status LED RGB
    if utime.ticks_diff(now, last_blink) >= 1000:
    led_state = not led_state
    last_blink = now # reset waktu blink
    # Nyalakan salah satu warna LED berdasarkan sudut
    if 0 <= angle <= 60:
    led_red.value(led_state)
    led_green.value(0)
    led_blue.value(0)
    elif 60 < angle <= 120:
    led_red.value(0)
    led_green.value(led_state)
    led_blue.value(0)
    else:
    led_red.value(0)
    led_green.value(0)

    5. Kondisi [Kembali]

    Percobaan 6, sesuai percobaan yang ada pada modul.

    6. Video Simulasi [Kembali]





    7. Download File [Kembali]

    Download File Rangkaian [Download]
    Link Wokwi [Link]






















    Komentar

    Postingan populer dari blog ini