LA modul 2 percobaan 1
1. Prosedur [kembali]
- Siapkan alat dan bahan
- Rangkai alat dan bahan sesuai dengan gambar pada modul
- Hubungkan hardware pada software
- Inputkan listing program
- Uji Coba hasilnya
2. Hardware dan Diagram Blok [kembali]
- raspberry pi pico
- RGB LED
- RESISTOR
- Potensiometer
- Motor Servo
3. Rangkaian Simulasi dan Prinsip Kerja [kembali]
prinsip kerja
Potensiometer dalam rangkaian ini berfungsi sebagai input analog yang menghasilkan tegangan antara 0 hingga 3.3 volt, tergantung pada posisi sudut putarannya. Tegangan ini kemudian dibaca oleh Raspberry Pi Pico melalui salah satu pin ADC, misalnya GP26, dan dikonversi menjadi nilai digital dengan rentang tertentu, seperti 0 hingga 65535 atau 0 hingga 1023, tergantung pada resolusi ADC yang digunakan. Nilai digital ini kemudian digunakan untuk mengendalikan sudut putar dari sebuah servo motor. Raspberry Pi Pico mengirimkan sinyal PWM melalui salah satu pin output, misalnya GP16, untuk mengatur posisi servo. Dengan demikian, pergerakan servo akan mengikuti perubahan nilai potensiometer secara proporsional, biasanya dalam rentang 0 hingga 180 derajat.
Selain mengatur servo, nilai dari potensiometer juga dimanfaatkan untuk mengontrol tampilan warna pada LED RGB. LED ini terhubung ke tiga pin GPIO yang masing-masing mengatur intensitas warna merah, hijau, dan biru melalui sinyal PWM. Raspberry Pi Pico mengatur tingkat kecerahan tiap warna sesuai dengan nilai potensiometer, sehingga kombinasi ketiga sinyal PWM tersebut menghasilkan warna yang bervariasi. Warna yang ditampilkan LED akan berubah secara dinamis mengikuti perubahan posisi potensiometer, menciptakan efek visual yang menarik dan interaktif.
Potensiometer dalam rangkaian ini berfungsi sebagai input analog yang menghasilkan tegangan antara 0 hingga 3.3 volt, tergantung pada posisi sudut putarannya. Tegangan ini kemudian dibaca oleh Raspberry Pi Pico melalui salah satu pin ADC, misalnya GP26, dan dikonversi menjadi nilai digital dengan rentang tertentu, seperti 0 hingga 65535 atau 0 hingga 1023, tergantung pada resolusi ADC yang digunakan. Nilai digital ini kemudian digunakan untuk mengendalikan sudut putar dari sebuah servo motor. Raspberry Pi Pico mengirimkan sinyal PWM melalui salah satu pin output, misalnya GP16, untuk mengatur posisi servo. Dengan demikian, pergerakan servo akan mengikuti perubahan nilai potensiometer secara proporsional, biasanya dalam rentang 0 hingga 180 derajat.
Selain mengatur servo, nilai dari potensiometer juga dimanfaatkan untuk mengontrol tampilan warna pada LED RGB. LED ini terhubung ke tiga pin GPIO yang masing-masing mengatur intensitas warna merah, hijau, dan biru melalui sinyal PWM. Raspberry Pi Pico mengatur tingkat kecerahan tiap warna sesuai dengan nilai potensiometer, sehingga kombinasi ketiga sinyal PWM tersebut menghasilkan warna yang bervariasi. Warna yang ditampilkan LED akan berubah secara dinamis mengikuti perubahan posisi potensiometer, menciptakan efek visual yang menarik dan interaktif.
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)
5. Video Demo [kembali]
6. Kondisi [kembali]
percobaan 6
7. Video Simulasi [kembali]
8. Download file [kembali]
Download Video Disini
Download Video Disini
Komentar
Posting Komentar