TP M2 P6 K1
Percobaan 5 kondisi 1
Buzzer & Push
Button
1. Rangkai rangkaian di website wokwi
sesuai dengan kondisi percobaan.
2. Buat program di website wokwi.
4. Setelah program selesai, jalankan simulasi rangkaian pada website wokwi sesuai kondisi.
2. Buat program di website wokwi.
4. Setelah program selesai, jalankan simulasi rangkaian pada website wokwi sesuai kondisi.
5. Selesai.
2. Hardware dan Diagram Blok[Kembali]
Hardware :
- Raspberry pi pico
- LED
3. Rangkaian Simulasi[Kembali]
- Rangkaian setelah di running
- Prinsip Kerja
Rangkaian ini terdiri dari Raspberry Pi Pico, LED, Potensiometer, Motor Servo, dimana inputan dari rangkaian ini iyalah dari Potensiometer yang dimana mengatur keadaan dari sistem dengan sinyal analog yang akan di coding ke Raspbery Pi Pico dimana dan akan di konversikan menjadi bit yang akan di kkirim ke motor servo sebagai acuan sudah pada kondisi sudut berpa dan lampu LED yang menandakan hasil keluaran berupa cahaya yang kita set di codingan kita untuk mengetahui lampu apa yanng hdiup pada keadaaan sudut tertentu.
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(0, 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
Percobaan 6 Kondisi 1
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
HTML [Download]
Rangkaian [Download]
Listing Program [Download]
Video Simulasi [Download]
Comments
Post a Comment