Laporan Akhir 2 M2




PERCOBAAN 2

1. Prosedur[Kembali]

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



2. LED RGB


3. Motor Servo



4. Potensio


3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]

Rangkaian: 



Prinsip Kerja:

Rangkaian ini menggunakan Raspberry Pi Pico sebagai mikrokontroler utama yang disini memiliki inputan dari potensio yang menghasilkan sinyal analog yang nantinya akan menjadi masukan pada motor servo dan nantinya sudut pada motor servo akan menjadi kondisi pada led rgb nya.


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:
    now = utime.ticks_ms()  # Waktu sekarang

    # 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]









Komentar

Postingan populer dari blog ini

Modul 1 Pratikum Mikro

Modul 1 Pratikum Sistem Digital

Modul 2 Pratikum SISDIG