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
3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]
Rangkaian:
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.
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]
Datasheet Raspberry Pi Pico [Download]
Comments
Post a Comment