Percobaan 1
LED & Push Button
1. Rangkai semua komponen pada breadboard yang terhubung ke mikrokontroler Raspberry Pi Pico.
2. Buat program untuk mikrokontroler Raspberry Pi Pico di software Thonny.
3. Inputkan program ke dalam mikrokontroler melalui USB.
4. Uji rangkaian yang telah dirangkai sesuai dengan output yang ditentukan.
5. Selesai.
2. Buat program untuk mikrokontroler Raspberry Pi Pico di software Thonny.
3. Inputkan program ke dalam mikrokontroler melalui USB.
4. Uji rangkaian yang telah dirangkai sesuai dengan output yang ditentukan.
5. Selesai.
3. Rangkaian Simulasi dan Prinsip Kerja
[Kembali]
Rangkaian ini memanfaatkan potensiometer sebagai input analog untuk mengendalikan posisi servo motor serta frekuensi buzzer. Potensiometer bekerja dengan mendeteksi perubahan resistansi akibat putaran knopnya, yang kemudian diubah menjadi nilai digital oleh ADC (Analog-to-Digital Converter) dalam rentang 0 hingga 65535. Nilai digital ini digunakan untuk menjalankan dua fungsi utama dalam sistem: pengaturan posisi servo dan penyesuaian frekuensi buzzer.
Pada pengendalian servo motor, nilai ADC yang diperoleh dari potensiometer terlebih dahulu dikonversikan menjadi sudut antara 0° hingga 180°. Sudut ini kemudian diterjemahkan ke dalam duty cycle PWM, dengan rentang antara 1500 hingga 7500. Nilai PWM ini menentukan posisi akhir servo motor, memungkinkan pengguna mengatur arah atau posisi mekanis dengan akurasi tinggi.
Di sisi lain, nilai ADC yang sama dimanfaatkan untuk mengatur frekuensi buzzer. Nilai tersebut diubah menjadi frekuensi dalam kisaran 200 Hz sampai 2000 Hz. Sehingga, saat potensiometer diputar, frekuensi suara dari buzzer akan berubah sesuai dengan perubahan nilai ADC — semakin besar nilainya, semakin tinggi nada yang dihasilkan. Volume suara buzzer dijaga tetap stabil menggunakan duty cycle PWM konstan sebesar 30000, sehingga hanya frekuensinya yang berubah, bukan volumenya.
Seluruh operasi ini berjalan dalam loop yang terus diperbarui, di mana sistem secara rutin membaca input dari potensiometer, mengatur posisi servo, dan menyelaraskan frekuensi buzzer secara langsung. Dengan desain ini, potensiometer berfungsi sebagai kontrol utama yang secara bersamaan memengaruhi dua output yang berbeda: satu berupa gerakan mekanis pada servo, dan satu lagi berupa perubahan suara pada buzzer.
4. Flowchart dan Listing Program
[Kembali]
Listing Program :
from machine import Pin, PWM, ADC
from time import sleep
import utime
# Inisialisasi
pot = ADC(26) # GP26 = ADC0
servo = PWM(Pin(16))
buzzer = PWM(Pin(14))
# Konfigurasi PWM
servo.freq(50) # 50 Hz untuk servo
buzzer.freq(1000) # Awal frekuensi buzzer
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)
while True:
val = pot.read_u16() # Nilai ADC 16-bit (0 - 65535)
# === Servo Motor ===
# 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}")
# === Buzzer ===
# Ubah val ke frekuensi (200 Hz - 2000 Hz)
freq = int(200 + (val / 65535) * (2000 - 200))
buzzer.freq(freq)
buzzer.duty_u16(30000) # Volume/suaranya
sleep(0.05)
5. Video Demo
[Kembali]
6. Analisa
[Kembali]
7. Download File
[Kembali]
Download Video Demo [Download]
Download Listing Program [Download]
Tidak ada komentar:
Posting Komentar