Anda di halaman 1dari 6

EMBEDDED SYSTEM

LAPORAN PRAKTIKUM 9

Oleh :
Amrullah Salafi Setiono 2141170162
Kelas 2D – D4

Dosen Pengajar :
Leonardo Kamajaya, S.ST., M.Sc.

PROGRAM STUDI D-IV TEKNIK ELEKTRONIKA


JURUSAN TEKNIK ELEKTRO
POLITEKNIK NEGERI MALANG
2023
I. TUJUAN
1. Mahasiswa/i mampu menjalankan dan menganalisis program Debouncing
pada push button
2. Mahasiswa/i mampu menjalankan dan menganalisis program interrupt

II. DASAR TEORI

1. Debouncing
Debouncing adalah proses untuk mengatasi getaran (bouncing) yang terjadi
pada saklar atau tombol fisik saat ditekan atau dilepaskan. Getaran ini dapat
menyebabkan nilai input yang tidak stabil dan dapat mengganggu operasi program yang
bergantung pada input yang akurat.
Pada Raspberry Pi atau perangkat lain yang menggunakan GPIO, getaran pada
saklar dapat terjadi saat saklar ditekan atau dilepaskan. Ketika saklar ditekan, kontak-
kontak dalam saklar bergerak secara fisik dan menyebabkan kontak yang tidak stabil
sebelum akhirnya mencapai posisi yang stabil. Hal yang sama juga terjadi saat saklar
dilepaskan.
Getaran ini dapat menyebabkan kondisi fluktuasi nilai input, yang dapat
mengakibatkan perilaku yang tidak diinginkan dalam program. Misalnya, dalam kasus
penggunaan saklar untuk mengontrol LED, getaran pada saklar dapat menyebabkan
LED berkedip secara tidak terduga atau tidak konsisten.
Dengan menerapkan teknik debouncing, program dapat memastikan bahwa
input dari saklar atau tombol fisik yang digunakan pada Raspberry Pi stabil dan
konsisten, sehingga menghasilkan operasi yang diharapkan dan menghindari efek
bouncing yang tidak diinginkan.

2. Interrupt
Pada Raspberry Pi, program interrupt digunakan untuk merespons perubahan
keadaan pada pin GPIO dengan cara yang lebih efisien daripada polling (mengulang
terus menerus). Dalam konteks ini, interrupt merujuk pada mekanisme yang
memungkinkan program berhenti sejenak dan menangani perubahan status pada pin
GPIO tertentu saat terjadi perubahan keadaan.
Interrupt memungkinkan Raspberry Pi untuk merespons perubahan input
dengan cepat dan akurat tanpa harus secara terus-menerus memeriksa status pin GPIO
secara manual. Hal ini sangat berguna dalam situasi di mana respons yang cepat
diperlukan, seperti saat menggunakan tombol atau saklar untuk mengontrol perangkat.
Dalam penggunaan interrupt, dapat mengatur pin GPIO sebagai input dan
memprogram fungsi yang akan dipanggil ketika terjadi perubahan pada pin tersebut.
Ketika perubahan terjadi, Raspberry Pi akan memberikan sinyal interrupt ke program
dan menjalankan fungsi yang telah ditentukan tanpa harus melakukan polling terus
menerus.
Dalam implementasinya, terdapat beberapa jenis interrupt yang dapat digunakan
pada Raspberry Pi, seperti rising edge interrupt (interrupt ketika sinyal input naik dari
rendah ke tinggi), falling edge interrupt (interrupt ketika sinyal input turun dari tinggi
ke rendah), atau level change interrupt (interrupt ketika terjadi perubahan keadaan pada
sinyal input, baik naik maupun turun).
Dengan menggunakan program interrupt, dapat merespons perubahan input
secara tepat waktu, menghindari pemborosan sumber daya dengan polling
berkepanjangan, dan mengoptimalkan efisiensi program dalam memantau dan
merespons perubahan pada pin GPIO pada Raspberry Pi.
III. PROSEDUR PRAKTIKUM
Prosedur praktikum untuk memulai pemrograman GPIO pada Raspberry Pi :
1. Menyiapkan alat dan bahan
a) Raspberry Pi
b) Project board
c) Kabel USB
d) LED
e) Resistor
f) Tombol
g) Laptop
2. Sambungkan internet laptop dengan WiFi menggunakan alamat yang sama, pada
praktikum ini menggunakan router dengan alamat EmbeddedSystem, selanjutnya
hubungkan Raspberry Pi yang sudah terinstall Debian OS didalamnya dan sudah
diberikan alamat IP address, pada praktikum kali ini alamat IP address adalah
192.168.0.207.
3. Membuka software PuTTy yang digunakan sebagai emulator Raspberry Pi tanpa
memerlukan tampilan Layar yang terhubung pada Raspberry Pi.
4. Kemudian masukkan IP address Raspberry Pi yang digunakan ke dalam PuTTy
kemudian tekan open

5. Setelah terbuka terminal seperti dibawah ini, masukkan ID dan Password yang telah
disetting, ID (pi) Pass(polinema)
6. Agar Raspi terhubung ke dalam internet, ketikkan sudo route add default
gw 192.168.0.2, perintah tersebut merupakan perintah yang digunakan untuk
menambahan sebuah rute default, dengan menambahkan rute default, sistem
akan menggunakan gateway tersebut untuk raspi memungkinkan terakses ke
jaringan luar atau internet
7. Kemudian buat sebuah folder untuk file yang akan dikerjakan dengan
perintah mkdir Kelompok 7, setelah membuat folder, untuk memilih
direktori ke folder tersebut ketikkan cd Kelompok7
8. Cek versi python yang digunakan dengan perintah python3, kemudian lihat
apakah sudah menggunakan versi python 3.9.2 atau belum.
9. Untuk membuat file python ketik perintah touch namafile.py
10. Untuk memulai memprogram file python yang telah dibuat ketikkan
perintah sudo nano namafile.py
11. Membuat program yang telah ditentukan pada tugas
a) Tugas 1
Mencoba program Debouncing

import RPi.GPIO as GPIO


import time
GPIO.setmode(GPIO.BCM)
switch_pin = 21
led_pin = 25
GPIO.setup(switch_pin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(led_pin, GPIO.OUT)
led_state = False
old_input_state = True # pulled-up
while True:
new_input_state = GPIO.input(switch_pin)
if new_input_state == False and old_input_state == True:
led_state = not led_state
time.sleep(0.2)
old_input_state = new_input_state
GPIO.output(led_pin, led_state)
b) Tugas 2
Mencoba program Interrupt

import RPi.GPIO as GPIO


import time
GPIO.setmode(GPIO.BCM)
def my_callback(channel):
print('You pressed the button')
GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.add_event_detect(18, GPIO.FALLING,
callback=my_callback)
i = 0
while True:
i = i + 1
print(i)
time.sleep(1)

IV. ANALISA
 Tugas 1
Dalam tugas pertama, kita menggunakan Library gpiozero untuk mengendalikan
LED dan tombol push pada Raspberry Pi. LED terhubung ke pin GPIO 25, sementara
tombol switch terhubung ke pin GPIO 21. Tombol switch diatur sebagai input dengan
resistor pull-up R, yang berarti saat tidak ditekan, nilainya adalah logika 1, dan saat
ditekan, nilainya adalah 0. LED berfungsi sebagai output. Variabel led_state dengan
nilai False menunjukkan bahwa LED dalam kondisi mati, dan variabel old_input_state
dengan nilai True menunjukkan bahwa saklar tidak ditekan pada kondisi awal.

Saat memasuki perulangan, terdapat variabel new_input_state yang digunakan


untuk membaca input dari pin saklar, dan nilainya disimpan. Kemudian, kita memeriksa
apakah saklar telah ditekan (nilai input rendah) dan pada keadaan sebelumnya saklar
tidak ditekan (nilai input tinggi). Jika kondisi ini terpenuhi, maka keadaan LED akan
dibalik, sehingga LED akan berubah antara menyala dan mati dengan interval 0,2 detik.

 Tugas 2
Dalam tugas kedua, kita masih menggunakan Library gpiozero. Terdapat definisi
fungsi my_callback dengan parameter channel. Fungsi ini akan dieksekusi saat terjadi
perubahan keadaan pada pin GPIO yang terkait. Saat fungsi my_callback dipanggil,
kita mencetak pesan "You pressed the button" ke monitor serial. Tombol switch
terhubung ke pin GPIO 18 sebagai input dengan resistor pull-up, dan kita
menambahkan deteksi perubahan keadaan pada switch menggunakan metode Falling
Edge (perubahan dari tinggi ke rendah). Saat terjadi perubahan tersebut, fungsi
my_callback akan dipanggil. Selanjutnya, terdapat program perulangan yang
menghitung dari 0 hingga program dihentikan, dengan jeda waktu 1 detik, dan hasilnya
ditampilkan di monitor serial. Oleh karena itu, dalam konteks ini, interupsi terjadi saat
tombol switch ditekan, dan akan menampilkan pesan "You pressed the button" saat
program perulangan sedang berjalan.

V. KESIMPULAN
Setelah menjalani praktikum, berikut adalah kesimpulan yang dapat diambil:
 Dalam praktikum ini, ketiga tugas menggunakan pustaka gpiozero untuk
mengendalikan LED dan tombol (push button).
 Pada tugas 1, diterapkan program debouncing untuk mengatasi fenomena bouncing
yang terjadi pada tombol saat ditekan atau dilepaskan. Penggunaan waktu jeda
membantu menghindari respons yang tidak stabil akibat getaran pada tombol.
 Dengan menerapkan program debouncing, input dari tombol menjadi lebih stabil dan
efek bouncing yang tidak diinginkan dapat dihindari.
 Pada tugas 2, diterapkan program interrupt yang berfungsi untuk merespons perubahan
keadaan pada pin GPIO dengan cara yang lebih efisien, tanpa perlu melakukan polling
secara terus-menerus.
 Dengan menggunakan interrupt dan debouncing, program ini memberikan respons yang
cepat dan akurat terhadap perubahan keadaan pada saklar atau tombol fisik yang
digunakan pada Raspberry Pi.

Anda mungkin juga menyukai