Percobaan 3
Buzzer & Push Button
1. Persiapkan semua alat dan bahan yang diperlukan.
2. Rangkai semua komponen pada breadboard yang telah disediakan.
3. Buatlah program di aplikasi Thonny untuk mikrokontroler Raspberry Pi Pico.
4. Rangkaian dihubungkan ke laptop dengan kabel USB dan dirunning.
5. Amati hasilnya, apakah output sesuai dengan program yang diinputkan.
6. Selesai.
.
2. Hardware dan Diagram Blok[Kembali]
A. Hardware
1. Raspberry Pi Pico
Raspberry Pi Pico adalah sebuah mikrokontroler kecil dan murah yang dirancang oleh Raspberry Pi Foundation. Berbeda dengan Raspberry Pi versi sebelumnya yang berbentuk mini PC, Raspberry Pi Pico lebih mirip seperti Arduino, yaitu sebuah papan sirkuit kecil yang khusus digunakan untuk mengendalikan berbagai perangkat elektronik dan sensor.
Raspberry Pi Pico menggunakan chip RP2040 buatan Raspberry Pi sendiri, yang merupakan otak dari papan ini. Chip ini berbasis dual-core ARM Cortex-M0+ yang cukup cepat untuk berbagai aplikasi sederhana hingga menengah, mulai dari sistem kontrol, sensor, hingga proyek-proyek robotika.
2. Touch Sensor
3. Buzzer
3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]
Rangkaian Percobaan:
Prinsip Kerja Rangkaian:
Rangkaian ini menggunakan
Raspberry Pi Pico, dua push button, dan buzzer untuk memberikan umpan balik
suara saat tombol ditekan. Berikut cara kerja rangkaiannya:
- Push Button (Tombol 1 dan Tombol 2)
Kedua tombol memiliki konfigurasi pull-up internal, sehingga dalam keadaan
normal tombol memberikan logika HIGH (1).
Saat tombol ditekan, sinyal berubah menjadi LOW (0), yang akan dideteksi
oleh Raspberry Pi Pico.
- Buzzer
Buzzer terhubung ke pin GPIO 12 dan dikendalikan oleh Raspberry Pi Pico.
Ketika tombol ditekan, Raspberry Pi Pico akan mengaktifkan buzzer (HIGH/1)
selama durasi tertentu, kemudian mematikannya.
- Proses Deteksi Tombol
Program memantau perubahan status tombol dengan teknik edge detection (dari
HIGH ke LOW).
Jika tombol ditekan (transisi dari 1 ke 0), maka buzzer berbunyi selama
100ms sebagai tanda respons.
Untuk menghindari pembacaan ganda akibat getaran mekanis tombol, program
menggunakan delay debounce (1ms).
Prinsip Kerja Program:
A. Inisialisasi Perangkat
Keras
- Menentukan Pin untuk Buzzer dan Tombol:
Buzzer didefinisikan sebagai output pada Pin 12.
Push button 1 dan 2 didefinisikan sebagai input pada Pin 10 dan 7, dengan pull-up
internal diaktifkan.
Pull-up internal berfungsi untuk memastikan bahwa saat tombol tidak
ditekan, nilai default dari tombol adalah HIGH (1), dan saat ditekan nilainya
berubah menjadi LOW (0).
- Membuat Variabel untuk Menyimpan Status
Tombol:
lastButton1State dan lastButton2State digunakan untuk mencatat status
terakhir tombol, sehingga program dapat mendeteksi perubahan status dari HIGH
ke LOW.
B. Fungsi untuk
Mengaktifkan Buzzer
Program memiliki fungsi
bernama buzz(duration), yang bertanggung jawab untuk mengontrol buzzer. Cara
kerjanya:
- Mengaktifkan buzzer dengan mengatur pin
output menjadi HIGH (1).
- Menunggu selama durasi tertentu (dalam
milidetik) menggunakan utime.sleep_ms().
- Mematikan buzzer dengan mengatur pin output
menjadi LOW (0).
- Fungsi ini memungkinkan kita untuk dengan
mudah mengatur durasi bunyi buzzer setiap kali tombol ditekan.
C. Loop Utama Program
Program berjalan dalam loop
utama (infinite loop) yang terus menerus membaca status tombol dan mengambil
tindakan jika tombol ditekan. Langkah-langkahnya sebagai berikut:
- Membaca Status Tombol
Program membaca nilai dari Button1.value() dan Button2.value().
Jika tombol ditekan, nilainya berubah menjadi LOW (0).
- Mendeteksi Perubahan Status
Jika status tombol berubah dari HIGH (1) ke LOW (0) (artinya tombol baru
saja ditekan), maka program akan menjalankan perintah tertentu.
Ini berguna untuk menghindari pembacaan ganda akibat efek bouncing dari
tombol mekanis.
- Menyalakan Buzzer saat Tombol Ditekan
Jika tombol 1 ditekan, program mencetak pesan "Tombol 1 Ditekan"
di terminal dan menjalankan fungsi buzz(100), yang akan membunyikan buzzer
selama 100 milidetik.
Jika tombol 2 ditekan, program mencetak pesan "Tombol 2 Ditekan"
dan juga membunyikan buzzer selama 100 milidetik.
- Menyimpan Status Tombol Terakhir
Program menyimpan status terakhir tombol ke dalam variabel lastButton1State
dan lastButton2State, sehingga perubahan status dapat dideteksi pada iterasi
berikutnya.
- Menggunakan Delay Debounce (1 ms)
utime.sleep_ms(1) digunakan untuk mencegah efek bouncing, yaitu pembacaan
tombol yang tidak stabil akibat sifat mekanis tombol saat ditekan.
4. Flowchart dan Listing Program[Kembali]
Flowchart:
Listing Program:
from machine import Pin
import utime
# Konfigurasi pin
BUZZER = Pin(12, Pin.OUT)
Button1= Pin(10, Pin.IN, Pin.PULL_UP)
Button2= Pin(7, Pin.IN, Pin.PULL_UP)
lastButton1State = True
lastButton2State = True
def buzz(duration):
BUZZER.value(1) # Nyalakan buzzer
utime.sleep_ms(duration)
BUZZER.value(0) # Matikan buzzer
while True:
Button1State = Button1.value()
Button2State = Button2.value()
if Button1State == 0 and lastButton1State == 1:
print("Tombol 1 Ditekan")
buzz(100)
lastButton1State = Button1State
if Button2State == 0 and lastButton2State == 1:
print("Tombol 2 Ditekan")
buzz(100)
lastButton2State = Button2State
utime.sleep_ms(1) # Debounce sederhana
Tidak ada komentar:
Posting Komentar