Tugas Pendahuluan 1 M2
PERCOBAAN 6 KONDISI 1
1. Prosedur[Kembali]
- Rangkai semua komponen di Wokwi sesuai dengan percobaan pada modul
- Buat program untuk Rspberry pi pico, sesuaikan konfigurasinya dengan rangkaian pada wokwi dan kondisi yang dipakai
- Masukkan Program ke wokwi (micropython)
- Simulasikan rangkaian
2. Hardware dan Diagram Blok[Kembali]
1. Raspberry PI PICO
3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]
Rangkaian Simulasi:
Hasil dari potensio akan menghasilkan sinyal analog yang dikonversikan menjadi bit yang nanti bit itu akan dimasukan menjadi inputan pada motor servo, yang dimana sudut pada motor servo ini akan mempengaruhi kondisi pada kodingan pada led rgb nya
4. Flowchart dan Listing Program[Kembali]
Flowchart:
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
# Loop utama
while True:
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 servo (1500 - 7500)
duty = map_value(angle, 0, 180, 1500, 7500)
servo.duty_u16(duty)
# Debug output
print(f"Pot Value: {pot_value}, Angle: {angle}, Duty: {duty}")
# Toggle LED state setiap 2 detik (2000 ms)
if utime.ticks_diff(now, last_blink) >= 2000:
led_state = not led_state
last_blink = now
# Kontrol LED berdasarkan sudut servo
if 0 <= angle <= 60:
led_red.value(led_state)
led_green.value(0)
led_blue.value(led_state)
elif 60 < angle <= 90:
led_red.value(led_state)
led_green.value(0)
led_blue.value(0)
elif 90 < angle <= 120:
led_red.value(0)
led_green.value(0)
led_blue.value(0)
else: # 120 - 180
led_red.value(0)
led_green.value(0)
led_blue.value(led_state)
utime.sleep_ms(50) # Delay pendek agar pembacaan stabil
5. Kondisi[Kembali]
Buatlah rangkaian seperti gambar pada percobaan 6, Buatlah ketika servo 0° - 60° (Merah & Biru menyala, Hijau mati), 60° - 90° (Merah menyala, Hijau & Biru mati), 90° - 120° (Semua LED mati), dan 120° - 180° (Biru menyala, Merah & Hijau mati). Masing-masing LED berkedip 2 Detik
Rangkaian [Klik disini]
Video simulasi [download]
Datasheet Raspberry Pi Pico [Download]
Datasheet Resistor [Download]
Datasheet LED [Download]
Komentar
Posting Komentar