Modul 2
(Percobaan 6)

1. Prosedur 
[Kembali]

1. Rangkai rangkaian di wokwi sesuai dengan kondisi percobaan.
2. Buat program dengan bahasa python.
3. Jalankan simulasi rangkaian.
4. Selesai.

analisa :



2. Hardware dan Diagram Blok [Kembali]

Hardware :

a) Raspberry Pi Pico









2. Push Button






3. Motor Servo


4. LED RGB



5. Potensio





Diagram Blok  :




3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]

Rangkaian Simulasi :





Prinsip Kerja : 

Potensiometer digunakan sebagai pengatur sudut pada motor servo dengan menghasilkan sinyal analog dalam kisaran 0 hingga 3.3 volt, yang kemudian dibaca oleh mikrokontroler melalui pin ADC, misalnya GP28. Nilai analog tersebut, yang berada dalam rentang 0 hingga 65535, diubah menjadi sudut antara 0° hingga 180° menggunakan fungsi pemetaan tertentu (seperti map_value). Nilai sudut tersebut lalu dikonversi menjadi sinyal PWM dengan duty cycle antara 1500 hingga 7500, dan dikirim ke motor servo melalui pin GP16, sehingga motor bergerak mengikuti posisi potensiometer.

Sistem ini juga mengontrol LED RGB berdasarkan nilai sudut servo. LED RGB dikendalikan oleh tiga pin terpisah, yakni GP1 untuk warna merah, GP2 untuk hijau, dan GP3 untuk biru. Setiap detik, sistem akan mengevaluasi sudut servo dan menentukan warna LED yang harus berkedip. Bila sudut berada antara 0° hingga 60°, maka LED merah akan menyala berkedip. Untuk sudut antara 61° hingga 120°, LED hijau yang berkedip. Sedangkan jika sudut berada pada rentang 121° hingga 180°, LED biru akan menyala secara berkedip. Efek berkedip dicapai dengan mengatur kondisi hidup dan mati LED secara bergantian setiap satu detik menggunakan variabel status, misalnya led_state.

Seluruh proses ini berjalan secara terus-menerus di dalam sebuah perulangan tak hingga (loop while True), sehingga sistem dapat merespons perubahan posisi potensiometer secara dinamis, mengatur posisi servo secara real-time, serta memperbarui warna dan kedipan LED sesuai dengan sudut servo yang terdeteksi.


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
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)

5. Kondisi [Kembali]

Percobaan 6, sesuai percobaan yang ada pada modul.

6. Video Simulasi [Kembali]





7. Download File [Kembali]

Download File Rangkaian [Download]
Link Wokwi [Link]

Komentar

Postingan populer dari blog ini