raspi_led_tombol

Bagaimana Cara Membaca Tombol Menggunakan Raspberry Pi dan REBOL


Pada postingan sebelumnya saya memberikan contoh bagaimana cara mengontrol lampu LED menggunakan Raspberry Pi. Dan sesuai janji saya di akhir postingan tersebut, saya akan memberikan contoh bagaimana cara membaca masukan menggunakan Raspberry Pi. Pada contoh ini saya akan menggunakan sebuah Push-Button sebagai tombol untuk mengaktifkan rangkaian flip-flop. Jadi flip-flop akan bekerja jika dan selama tombol ditekan dan flip-flop akan berhenti bekerja jika dan selama tombol tidak ditekan (dilepas). Tipe masukan (dalam hal ini tombol) adalah aktif-tinggi. Jika ditekan, pin akan bertegangan 3V3 (berlogika tinggi) dan jika tidak ditekan, pin akan bertegangan 0V (berlogika rendah).

raspi_led_tombol

LED1 dan LED2 masih tetap dikontrol oleh pin GPIO-5 dan GPIO-6, sedangkan tombol PB1 dihubungkan ke pin GPIO-26.

Membaca Status Masukan GPIO (SHELL)

Untuk membaca status masukan GPIO, kita bisa menggunakan perintah cat. Berikut adalah langkah-langkahnya:

  1. Buka terminal
  2. Aktifkan akses root
    $ sudo -i
  3. Konfigurasi GPIO-26 sebagai INPUT
    $ echo "26" > /sys/class/gpio/export
    $ echo "in" > /sys/class/gpio/gpio26/direction
  4. Tanpa ditekan tombolnya, baca masukan GPIO-26
    $ cat /sys/class/gpio/gpio26/value
  5. Tombol ditekan dan baca masukan GPIO-26
    $ cat /sys/class/gpio/gpio26/value

Hasil eksperimen perintah-perintah tersebut dapat dilihat pada screenshot berikut ini.

raspi_gpio_in_shell

Nampak pada screenshot di atas bahwa perintah cat /sys/class/gpio/gpio26/valuemenghasilkan nilai 0 ketika tombol tidak ditekan dan menghasilkan nilai 1 ketika tombol ditekan.

Flip-Flop Terkendali Tombol (REBOL)

Untuk membuat rangkaian flip-flop terkendali tombol, berikut adalah listing program REBOL-nya.

Listing Program flipflop.r3

REBOL [
	filename: %flipflop.r3
	title: "Flip-Flop Terkendali Tombol"
	programmer: "Chandra MDE"
	website: http://raspi.teknikelektrolinks.com
]

DPB1: %/sys/class/gpio/gpio26/direction
VPB1: %/sys/class/gpio/gpio26/value
DLED1: %/sys/class/gpio/gpio5/direction
DLED2: %/sys/class/gpio/gpio6/direction
VLED1: %/sys/class/gpio/gpio5/value
VLED2: %/sys/class/gpio/gpio6/value

;inisialisasi GPIO-5 dan GPIO-6 = OUTPUT, GPIO-26 = INPUT
init-gpio: func [
][
	write %/sys/class/gpio/export "5"
	write DLED1 "out"
	write VLED1 "0"
	
	write %/sys/class/gpio/export "6"
	write DLED2 "out"
	write VLED2 "0"
	
	write %/sys/class/gpio/export "26"
	write DPB1 "in"
]

;lampu kedip alias flipflop
flip-flop: func [
][
	write VLED1 "1" ;on
	wait .1  ;100ms - cepat
	write VLED1 "0" ;off
	write VLED2 "1" ;on
	wait .1
	write VLED2 "0" ;off
]

n: 0
i: []

init-gpio
print "Tekan TOMBOL untuk mengaktifkan flip-flop..."
forever [
	i: read VPB1
	if i == #{310A} [ ;jika tombol ditekan
		n: n + 1
		print ["Perulangan ke-" n]
		flip-flop
                ;selesai jika sudah blinking 15 kali
		if n == 15 [print "Selesai." quit]
	]
]

Menjalankan flipflop.r3

Untuk menjalankan program flipflop.r3, gunakan perintah:

$ sudo ./r3 flipflop.r3

Dan berikut ini adalah hasil eksekusi program flipflop.r3:

raspi_flipflop_tombol

Nah, cukup sekian Catatan Eksperimen Raspberry Pi kali ini, semoga ada guna dan manfaatnya.

Jika Anda berminat dengan file aplikasi REBOL3 dan file program flipflop.r3, silakan menuliskan komentar di bawah postingan ini dengan menyertakan nama dan alamat emailnya. File-file akan saya kirimkan ke alamat email Anda masing-masing.

Selamat berkarya.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s