PERCOBAAN 2
1. Prosedur[Kembali]
- Rangkai semua komponen sesuai dengan percobaan 1 pada modul
- Buat program untuk Rspberry pi pico, sesuaikan konfigurasinya dengan rangkaian dan kondisi yang dipakai
- Masukkan Program ke Thony (micropython)
- Upload program ke Raspberry Pi Pico
2. Hardware dan Diagram Blok[Kembali]
1. Raspberry PI PICO
4. Potensio
3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]
Rangkaian:
Rangkaian ini menggunakan Raspberry Pi Pico sebagai mikrokontroler utama yang disini memiliki inputan dari potensio yang menghasilkan sinyal analog yang nantinya akan menjadi masukan pada motor servo dan nantinya sudut pada motor servo akan menjadi kondisi pada led rgb nya.
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:
now = utime.ticks_ms() # Waktu sekarang
# 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
5. Analisa[Kembali]
1.Analisa bagaimana perbedaan implementasi PWM antara STM32 dan Raspberry Pi Pico serta dampaknya terhadap kontrol motor dan buzzer
Jawaban:
STM32 punya kontrol yang lebih fleksibel dan presisi terhadap PWM, sangat cocok untuk sistem yang butuhkan kontrol motor / buzzer dengan presisi tinggi. Raspberry Pi Pico lebih mudah dikonfigurasikan tetapi sedikit terbatas dalam aplikasi yang kompleks.
2.Pembacaan nilai sensor analog (LDR) menggunakan ADC
Jawaban:
Pembacaan LDR, keduanya mampu (stm32/raspberry), namun STM32 lebih fleksibel dan cocok untuk proyek ADC kompleks. Pi Pico cocok untuk pembacaan dan aplikasi yang sederhana.
3.Penggunaan interrupt eksternal untuk mendeteksi input dari sensor atau tombol
Jawabannya:
Sinyal dari luar dari dev board yang punya mekannisme menghentikan program utama saat ada kejadian yang diprioritaskan, seperti input dari sensor atau pushbutton.
4.Analisa bagaimana cara kerja fungsi time.ticks_ms() pada Raspberry Pi Pico dalam menghitung waktu sejak sistem dinyalakan
Jawaban:
Memiliki fungsi untuk mengamati waktu dan multitasking sederhana (tanpa blocking, delay).
Pico menggunakan fungsi ini untuk alternatif millis.
5. Perbedaan fungsi/kerja dan lokasi pin PWM ketika memanfaatkan timer internal dalam menghasilkan sinyal gelombang persegi
Jawaban:
Pada PWM itu sendiri timer sangat mempengaruhi duty cycle yang ada, yang ini akan mempengaruhi sinyal output yang menyebabkan hasil dari PWM tersebut.
Tidak ada komentar:
Posting Komentar