LA 1 MIKRO M2





PERCOBAAN 6 Motor Servo, LED RGB, & Potensiometer

1. Prosedur[Kembali]

  • 1.Rangkai semua komponen sesuai dengan percobaan 6 pada modul 
  • 2.Buat program untuk Rspberry pi pico, sesuaikan konfigurasinya dengan rangkaian dan         kondisi yang dipakai
  • 3.Masukkan Program ke Thony (micropython)
  • 4.Upload program ke Raspberry Pi Pico
.

2. Hardware dan Diagram Blok[Kembali]

a) Raspberry Pi Pico



 

 

Diagram Blok  :


3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]

Rangkaian Simulasi: 





Prinsip Kerja:

    Sistem ini bekerja dengan membaca nilai dari potensiometer yang terhubung ke pin analog GP28. Nilai yang terbaca berkisar antara 0 sampai 65.535. Nilai tersebut kemudian dikonversi menjadi sudut antara 0° hingga 180°, yang akan digunakan untuk mengatur posisi motor servo.

Setelah mendapatkan sudutnya, sistem mengubah sudut tersebut menjadi nilai PWM (duty cycle) antara 1500 hingga 7500. Nilai ini dikirim ke motor servo melalui pin GP16, sehingga servo bergerak mengikuti posisi potensiometer.

Selain itu, terdapat LED RGB yang dikendalikan berdasarkan posisi potensiometer juga. LED ini terdiri dari tiga warna (Merah di GP1, Hijau di GP2, dan Biru di GP3). Jika sudut potensiometer berada di antara 0°–60°, LED Merah akan berkedip setiap 1 detik. Jika berada di 61°–120°, maka LED Hijau yang berkedip. Dan jika sudutnya 121°–180°, LED Biru yang menyala berkedip. Proses kedipan ini diatur menggunakan variabel led_state dan last_blink dengan jeda waktu 1 detik.

Fungsi map_value() berperan penting dalam sistem ini untuk mengubah nilai dari satu rentang ke rentang lainnya—baik saat mengubah nilai potensiometer ke sudut servo, maupun saat mengubah sudut servo ke nilai PWM.

4. Flowchart dan Listing Program[Kembali] 


Flowchart:







Listing Program:

from machine import Pin, PWM, ADC
import utime

# =============================
# Inisialisasi Pin
# =============================

# Servo Motor pada pin GP16
servo = PWM(Pin(16))
servo.freq(50)  # Frekuensi PWM untuk servo

# Potensiometer pada pin GP28 (ADC2)
pot = ADC(Pin(28))

# LED RGB pada pin GP1 (Merah), GP2 (Hijau), GP3 (Biru)
led_red = Pin(1, Pin.OUT)
led_green = Pin(2, Pin.OUT)
led_blue = Pin(3, Pin.OUT)

# =============================
# 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 LED berkedip
# =============================
last_blink = utime.ticks_ms()
led_state = True

# =============================
# Loop Utama
# =============================
while True:
    # Baca 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 ke nilai duty cycle (1500 - 7500)
    duty = map_value(angle, 0, 180, 1500, 7500)
    servo.duty_u16(duty)

    # Debug info (optional)
    print(f"Potensiometer: {pot_value} | Sudut: {angle} | Duty: {duty}")

    # Waktu sekarang untuk LED berkedip
    now = utime.ticks_ms()
    if utime.ticks_diff(now, last_blink) >= 1000:
        led_state = not led_state
        last_blink = now

    # Kontrol 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:  # 121 - 180
        led_red.value(0)
        led_green.value(0)
        led_blue.value(led_state)

    # Delay pendek
    utime.sleep_ms(50)


5. Video demo[Kembali]




6. Analisa[Kembali]









7. Download File[Kembali]

Video simulasi [download]
Datasheet Raspberry Pi Pico [Download]



Komentar

Postingan populer dari blog ini