LA M2 P2




PERCOBAAN 1

1. Prosedur[Kembali]

  • Rangkai semua komponen sesuai dengan percobaan 2 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

1. Raspberry PI PICO



2. LED RGB











3. Potensiometer







4. Motor Servo

3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]

Rangkaian: 







Prinsip Kerja:

Rangkaian ini menggunakan Raspberry Pi Pico sebagai mikrokontroler utama yang mengontrol dimana potensiometer yang bertugas sebagai inputan akan mengirimkan sinyal analog ke Raspberry Pi Pico yang dikonversi ke Sinyal PWM yang akan di kirim ke motor servo sebagai Output untuk membaca sudut yang terbentuk atas putaran dari potensiometer dan juga lampu LED RGB akan mengindikasi hal yang terjadi dimana apabila motor servo menujukkan sudut 0-60 maka akan bewarna merah dan sudut 60-120 berwarna hijau dan sudut 120-180 berwarna biru sebagai outputnya.


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 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)
        led_blue.value(led_state)

    utime.sleep_ms(50)  # Delay pendek untuk kestabilan pembacaan


5. Analisa[Kembali]






6. Video Demo[Kembali]






7. Download File[Kembali]

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



Comments

Popular posts from this blog