raspi_lcd_rebol

Bagaimana Cara Memrogram LCD Menggunakan Raspberry Pi dan REBOL


raspi_lcd_rebol

LCD 2 x 16-karakter merupakan komponen tampilan yang populer dan relatif mudah digunakan, baik secara rangkaian (hardware) maupun secara pemrograman (software). Pada tulisan kali ini saya akan memberikan catatan eksperimen tentang bagaimana memrogram LCD menggunakan bahasa REBOL.

Pada eksperimen ini saya menggunakan modul prototipe LCD dengan konfigurasi pin header konektor sebagai berikut:

Pin Nama Pin
1 GND
2 VCC
3 LCD-RS
4 LCD-E
5 DATA-4
6 DATA-5
7 DATA-6
8 DATA-7

Untuk mengontrol LCD yang kita butuhkan adalah sumber tegangan untuk LCD (VCC-GND) dan 6 buah pin GPIO yang difungsikan sebagai OUTPUT. Kita dapat menggunakan GPIO yang mana saja. Namun akan lebih baik jika kita menggunakan GPIO tanpa fitur tambahan seperti I2C, SPI atau UART, jadi GPIO yang murni untuk digital-input atau digital-output. Untuk Raspi B+, kita bisa gunakan GPIO dengan nomor pin header 29 hingga 40 yang meliputi antara lain GPIO05, GPIO06, GP12, GPIO13 dan seterusnya.

Pada eksperimen ini saya menggunakan pin-pin GPIO berikut ini:

Pin LCD Pin Raspberry Pi
LCD-RS GPIO-20
LCD-E GPIO-21
DATA-4 GPIO-26
DATA-5 GPIO-19
DATA-6 GPIO-13
DATA-7 GPIO-6
VCC VCC
GND GND

Keenam pin GPIO tersebut harus diaktifkan dan difungsikan sebagai OUTPUT. Berikut adalah penggalan program yang bertugas mengaktifkan dan mengeset fungsi GPIO-GPIO untuk LCD tersebut.

;Konfigurasi GPIO untuk LCD
;LCD-GPIO [RS,  E, D4, D5, D6, D7]
LCD-GPIO: [20  21  26  19  13   6]
LCD-RS: LCD-GPIO/1
LCD-E: LCD-GPIO/2
LCD-D4: LCD-GPIO/3
LCD-D5: LCD-GPIO/4
LCD-D6: LCD-GPIO/5
LCD-D7: LCD-GPIO/6

init-gpio: func [
   gpios [block!]
][
   foreach n gpios [
      either exists? to file! ajoin [%/sys/class/gpio/gpio n] [
         write to file! ajoin [%/sys/class/gpio/gpio n "/direction"] "out^/"
      ][
         write %/sys/class/gpio/export ajoin [n newline]
         write to file! ajoin [%/sys/class/gpio/gpio n "/direction"] "out^/"
      ]
   ]
]

Anda dapat menggunakan GPIO yang lain sesuai dengan kebutuhan aplikasi. Namun jika Anda perhatikan pada layout pin Raspberry Pi, maka pemilihan GPIO di atas, selain dipilih GPIO yang tidak memiliki fungsi/fitur tambahan, maka keenam pin GPIO itu terletak pada satu area pin (bagian bawah) sehingga diharapkan akan lebih rapi dan lebih mudah pemasangannya.

Pemrograman LCD Menggunakan REBOL

LCD perlu diinisialisasi terlebih dahulu sebelum dapat digunakan. Inisialisasi meliputi pemilihan mode pemrograman antara lain mode 8-bit dan mode-4 bit, pengesetan properti kursor dan penghapusan layar LCD (clear-screen).

Btw, pemrograman mode 8-bit tentu lebih mudah dibandingkan dengan mode 4-bit karena kita bisa langsung menuliskan data 8-bit dalam satu kali proses. Namun demikian, demi menghemat penggunaan pin GPIO, maka kita harus menggunakan mode 4-bit sehingga kita bisa menghemat 4 pin GPIO untuk keperluan yang lain.

Pada mode 4-bit, kita harus mengirimkan data yang berukuran 8-bit dalam 2 kali proses dengan pembagian 4-bit (nibble). Adapun urutan pengirimannya adalah high-nibble (bit4-bit7) dan kemudian low-nibble (bit0-bit3).

Untuk mengatur konfigurasi LCD, data ditulis ke Control-Register. Untuk menulis ke Control-Register, maka pin LCD-RS (Register Selector) harus diberi logika “0”. Dan untuk menampilkan karakter ke LCD, data ditulis ke Data-Register. Untuk menulis ke Data-Register, maka pin LCD-RS harus diberi logika “1”.

Setelah register tujuan ditentukan dengan mengeset/mereset LCD-RS, maka data bisa ditulis ke pin-pin data DATA-4, DATA-5, DATA-6 dan DATA-7 dengan urutan seperti yang telah dijelaskan sebelumnya. Dan untuk memasukkan data ke register yang dituju, maka digunakanlah pin LCD-E. LCD-E digunakan untuk meng-update atau memasukkan data ke register. Perubahan kondisi logika dari logika “1” ke logika “0” pada pin LCD-E akan menyebabkan data pada pin-pin data ditulis/masuk ke register yang dituju.

Penasaran bagaimana programnya? Berikut adalah penggalan program untuk menulis data ke LCD dan inisialisasi LCD.

write-lcd: func [
   d [binary!]
   /DATA
][
   either DATA [set-gpio LCD-RS "1"] [set-gpio LCD-RS "0"]
   set-gpio LCD-D4 "0"
   set-gpio LCD-D5 "0"
   set-gpio LCD-D6 "0"
   set-gpio LCD-D7 "0"
   all [equal? #{10} d and #{10} set-gpio LCD-D4 "1"]
   all [equal? #{20} d and #{20} set-gpio LCD-D5 "1"]
   all [equal? #{40} d and #{40} set-gpio LCD-D6 "1"]
   all [equal? #{80} d and #{80} set-gpio LCD-D7 "1"]
   set-gpio LCD-E "1"
   set-gpio LCD-E "0"  ;tulis 4-bit high-nibble

   set-gpio LCD-D4 "0"
   set-gpio LCD-D5 "0"
   set-gpio LCD-D6 "0"
   set-gpio LCD-D7 "0"
   all [equal? #{01} d and #{01} set-gpio LCD-D4 "1"]
   all [equal? #{02} d and #{02} set-gpio LCD-D5 "1"]
   all [equal? #{04} d and #{04} set-gpio LCD-D6 "1"]
   all [equal? #{08} d and #{08} set-gpio LCD-D7 "1"]
   set-gpio LCD-E "1"
   set-gpio LCD-E "0"   ;tulis 4-bit low-nibble
]

init-lcd: func [ 
][
  write-lcd #{33}
  write-lcd #{32}
  write-lcd #{28}
  write-lcd #{0C}  
  write-lcd #{06}
  write-lcd #{01}  
]

Nah, begitulah cerita singkat tentang proses pemrograman LCD yang disertai penggalan program dalam bahasa  REBOL.

Untuk program selengkapnya, saya mohon maaf hanya menampilkan screenshot-nya sahaja karena listingnya cukup panjang. Anda dapat menghubungi saya melalui email atau SMS jika berminat dengan file-file program REBOL pada eksperimen ini. Nah, berikut adalah beberapa screenshot program REBOL untuk menampilkan tulisan pada LCD 2 x 16 karakter.

rebol3_lcd_1

rebol_lcd_2

Menjalankan Program LCD REBOL

Untuk menjalankan program LCD REBOL, kita bisa menggunakan perintah berikut ini:

$ sudo ./r3 rpilcd.r

Dan selain foto pada awal tulisan, berikut ini adalah foto lain hasil pengujian yang saya lakukan.

raspi_lcd_raspi

raspi_lcd_suhu

Dengan adanya LCD meskipun cuma berukuran 2 x 16 karakter, kita bisa menampilkan informasi-informasi penting seperti suhu CPU, sisa memori, hasil pembacaan sensor suhu, sensor kelembaban dan lain sebagainya.

Nah, sekian dulu Catatan Eksperimen Raspberry Pi untuk kali ini. Nantikan catatan eksperimen selanjutnya.

Informasi Modul LCD Raspberry Pi

Modul LCD 2 x 16 karakter untuk Raspberry Pi sedang saya siapkan. Informasi harga dan cara pemesanan akan saya sampaikan setelah modul siap. Modul akan dilengkapi dengan program Command-Line Interface (CLI) untuk memudahkan menampilkan tulisan pada LCD melalui Shell. Dengan program CLI, kita akan dapat menampilkan tulisan pada LCD menggunakan program apapun seperti Python, PHP dan BASH.

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