LA 1M2





PERCOBAAN 6 Motor Servo, LED RGB, & Potensiometer

1. Prosedur[Kembali]

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

2. Hardware dan Diagram Blok[Kembali]

1. Raspberry PI PICO


 

 


3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]

Rangkaian: 





Prinsip Kerja:
  1. Pembacaan Potensiometer (GP28 - ADC)

    • Potensiometer dihubungkan ke pin analog GP28.

    • Nilai dari potensiometer dibaca menggunakan pot.read_u16(), menghasilkan nilai antara 0 hingga 65535.

  2. Kontrol Sudut Motor Servo (GP16 - PWM)

    • Nilai dari potensiometer dikonversi ke sudut servo (0° hingga 180°) menggunakan fungsi map_value().

    • Sudut servo diubah lagi menjadi nilai PWM duty cycle (antara 1500 sampai 7500) dan dikirim ke motor servo melalui servo.duty_u16(duty).

    • Servo akan berputar sesuai posisi potensiometer.

  3. Pengendalian LED RGB (GP1, GP2, GP3)

    • LED RGB terdiri dari tiga LED biasa (Merah, Hijau, Biru).

    • Berdasarkan nilai sudut dari potensiometer:

      • 0–60°: LED Merah akan berkedip tiap 1 detik.

      • 61–120°: LED Hijau akan berkedip.

      • 121–180°: LED Biru yang berkedip.

    • Kedipan diatur menggunakan variabel led_state dan waktu last_blink dengan interval 1000ms.

  4. Fungsi map_value()

    • Fungsi ini mengkonversi nilai dari satu rentang ke rentang lain (seperti fungsi map() di Arduino), digunakan dua kali:

      • Untuk mengubah nilai potensiometer ke sudut servo.

      • Untuk mengubah sudut servo ke duty cycle PWM.


4. Flowchart dan Listing Program[Kembali] 



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





6. Video Demo[Kembali]



7. Download File[Kembali]

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


Posting Komentar

Lebih baru Lebih lama