PERCOBAAN 6
1. Prosedur[Kembali]
- Rangkai semua komponen
- Buat program di website wokwi
- Jalankan program dan cobakan sesuai kondisi
3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]
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
Flowchart:
Tidak ada komentar:
Posting Komentar