TP M2 Percobaan 6

 




 1. Prosedur  [kembali]

  1. 1. Persiapan Alat dan Bahan

  • Raspberry Pi Pico

  • 1 buah servo

  • 1 buah potentiometer

  • 1 buah LED RGB

  • 3 buah resistor

  • Kabel jumper

  • Aplikasi Wokwi

            

  1. 2. Perakitan Rangkaian

  1. Potensiometer:

    • Pin tengah ke GP28 (ADC).

    • Pin kiri ke 3.3V, pin kanan ke GND.

  2. Servo motor:

    • Kabel merah ke 5V.

    • Kabel coklat/ hitam ke GND.

    • Kabel oranye/kuning ke GP16 (PWM).

  3. LED RGB:

    • Kaki R → GPIO (misalnya GP1) dengan resistor.

    • Kaki G → GPIO (misalnya GP2) dengan resistor.

    • Kaki B → GPIO (misalnya GP3) dengan resistor.

    • Katoda ke GND.

  4. Pemrograman

    Buat program MicroPython dengan aturan logika berikut:

    • Sudut 0°–60° → LED Merah & Biru menyala (kedip 2 detik), Hijau mati.

    • Sudut 60°–90° → LED Merah menyala (kedip 2 detik), Hijau & Biru mati.

    • Sudut 90°–120°Semua LED mati.

    • Sudut 120°–180° → LED Biru menyala (kedip 2 detik), Merah & Hijau mati.

2. Hardware dan Diagram Blok [kembali]


 2.1 Daftar Komponen

  • 1 × Raspberry Pi Pico (atau kompatibel RP2040)

Gambar Raspberry Pi Pico 
Spesifikasi Raspberry Pi Pico

  • 1 ×Servo

Gambar Servo


  • 1 × Potentiometer

Gambar Potentiometer

  • 1 x LED RGB

Gambar LED RGB

  • 3 x Resistor 220 Ohm 

Gambar Resistor

  • Kabel Jumper

Gambar Kabel Jumper

2.2 Diagram Blok






       

3. Rangkaian Simulasi dan Prinsip Kerja [kembali]

3.1 Rangkaian Simulasi

Gambar Rangkaian Percobaan 5

3.2 Prinsip Kerja

Rangkaian ini bekerja dengan memanfaatkan potensiometer sebagai masukan analog untuk mengatur sudut servo motor melalui Raspberry Pi Pico. Pin ADC pada Pico membaca nilai tegangan dari potensiometer, kemudian nilai tersebut diolah dan dikonversi menjadi sudut servo antara 0° sampai 180°.

Berdasarkan sudut yang terbentuk, Raspberry Pi Pico akan mengontrol LED RGB dengan logika tertentu:

  • Saat servo berada di 0°–60°, LED merah dan biru menyala (berkedip dengan interval 2 detik), sedangkan LED hijau mati.

  • Saat servo berada di 60°–90°, hanya LED merah yang menyala berkedip setiap 2 detik, sedangkan LED hijau dan biru mati.

  • Saat servo berada di 90°–120°, semua LED mati.

  • Saat servo berada di 120°–180°, hanya LED biru yang menyala berkedip setiap 2 detik, sedangkan LED merah dan hijau mati.

Dengan demikian, potensiometer berfungsi sebagai pengendali posisi servo, servo menjadi aktuator yang bergerak sesuai input, dan LED RGB sebagai indikator visual untuk menunjukkan rentang sudut servo.


4. Flowchart dan Listing Program [kembali]
    





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 2000 ms (2 detik), ubah status LED RGB
    if utime.ticks_diff(now, last_blink) >= 2000:
        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(led_state)
    elif 60 < angle <= 90:
        led_red.value(led_state)
        led_green.value(0)
        led_blue.value(0)
    elif 90 < angle <= 120:
        led_red.value(0)
        led_green.value(0)
        led_blue.value(0)
    else:
        led_red.value(0)
        led_green.value(0)
        led_blue.value(led_state)
    utime.sleep_ms(50) # Delay pendek untuk kestabilan pembacaan


5. Kondisi [kembali]
    
Buatlah rangkaian seperti gambar pada percobaan 6. Buatlah ketika servo 0° - 60° (Merah & Biru menyala, Hijau mati), 60° - 90° (Merah menyala, Hijau & Biru mati), 90° - 120° (Semua LED mati), dan 120° - 180° (Biru menyala, Merah & Hijau mati). Masing-masing LED berkedip 2 detik.
    
6. Video Simulasi [kembali]   





8. Download File  [kembali]
   
   Download rangkaian simulasi [link]
    Download Video [link]
    Download datasheet Raspberry pi pico [link]
    Download datasheet Servo [link]
    Download datasheet Potentiometer [link]
    Download datasheet Resistor [link]
    Download datasheet LED RGB [link]

   

Comments

Popular posts from this blog