WWW.USBINOV.COMPiranti USB untuk PC, Laptop dan Raspberry Pi.

Membuat Sendiri Penampil Pesan Pada LCD 2×16 Karakter Menggunakan Bahasa Python

Halo, Pembaca. Selamat berjumpa lagi di Catatan Eksperimen Raspberry Pi. Pada catatan eksperimen kali ini saya akan membahas tentang bagaimana membuat program penampil pesan pada LCD 2×16 karakter menggunakan bahasa Python. Eksperimen ini membutuhkan Raspberry Pi dan board LCD 2×16 karakter. Pada catatan-catatan eksperimen sebelumnya saya menggunakan bahasa REBOL. Tapi mengingat Python jauh lebih populer dibanding REBOL, maka saya membuat juga versi Python dengan harapan semoga lebih banyak Pembaca yang bisa mengambil manfaatnya.

Pada catatan eksperimen ini saya akan memberikan skematik rangkaian LCD 2×16 karakter dan kode program penampil pesan dalam bahasa Python. Program yang saya berikan adalah orisinil buatan saya dan tidak menggunakan modul RPLCD. Jadi hanya menggunakan modul RPi.GPIO saja.

Namun demikian, kode program yang saya buat tidaklah selengkap modul RPLCD. Program yang akan saya berikan adalah program utilitas sederhana untuk menampilkan pesan pada LCD 2×16. Dengan program Python ini, kita dapat menampilkan pesan pada LCD secara sangat mudah dengan memberikan perintah sebagai berikut:

$ sudo python lcd.py "Raspberry Pi LCD" "Chandra MDE"

Perintah di atas akan menampilkan tulisan Raspberry Pi LCD pada baris pertama dan Chandra MDE pada baris kedua. Dengan sedikit trik, kita dapat menampilkan data yang kita inginkan seperti suhu CPU Raspberry Pi, hasil pembacaan sensor suhu DS18B20 dan lain sebagainya. Perhatikan contoh penggunaan berikut ini.

$ SUHU=$(vcgencmd measure_temp)
$ sudo python lcd.py "Raspi LCD Python" $SUHU

Perintah di atas akan menampilkan Raspi LCD Python pada baris pertama dan temp=40.1’C pada baris kedua. String pada baris kedua adalah hasil keluaran dari perintah vcgencmd measure_temp. Perintah SUHU=$(vcgencmd measure_temp) akan menyimpan string keluaran vcgencmd measure_temp pada variabel $SUHU.

raspi_lcd_python2

Nah, menarik sekali bukan? Dengan program yang kodenya relatif singkat ini, Anda akan memiliki utilitas untuk menampilkan pesan pada LCD 2×16 karakter yang dapat Anda panggil dari skrip atau program apapun semisal Shell, PHP, REBOL atau dari Python sendiri.

Penasaran dan pengen segera mencobanya? Silakan membaca kelanjutan catatan eksperimen ini.

Skematik Rangkaian LCD

Rangkaian LCD memerlukan beberapa komponen tambahan yakni diode dan trimpot (variable resistor). Skematik selengkapnya adalah sebagai berikut:

Skema LCD Raspberry Pi

Skematik ini adalah skematik rangkaian LCD dengan mode 4-bit. Pin LCD-RS terhubung ke GPIO-20, LCD-E ke GPIO-21, LCD-D4 ke GPIO-26, LCD-D5 ke GPIO-19, LCD-D6 ke GPIO-13 dan LCD-D7 ke GPIO-6. Pastikan rangkaian yang Anda buat sudah benar dan pastikan juga koneksi pin LCD dan pin GPIO sudah benar. Check and recheck.

Kode Program lcd.py

#!/usr/bin/python

# lcd.py
# Penampil pesan pada LCD 2x16 karakter
# Chandra MDE
# 28/01/2016
# Linux Forte - http://linux.teknikelektrolinks.com
import RPi.GPIO as GPIO
import time, sys

#LCD-GPIO  [RS  E   D4  D5  D6 D7]
LCD_GPIO = [20, 21, 26, 19, 13, 6]
LCD_DATA = [26, 19, 13, 6]
LCD_RS = 20
LCD_E  = 21
LCD_D4 = 26
LCD_D5 = 19
LCD_D6 = 13
LCD_D7 = 6

def write_lcd(dest, data):
	if dest == 0: #control
		GPIO.output(LCD_RS, False)
	else: #data
		GPIO.output(LCD_RS, True)

	GPIO.output(LCD_DATA, False) #semua data low
	if data & 0x10 == 0x10:
		GPIO.output(LCD_D4, True)
		time.sleep(0.001)
	if data & 0x20 == 0x20:
		GPIO.output(LCD_D5, True)
		time.sleep(0.001)
	if data & 0x40 == 0x40:
		GPIO.output(LCD_D6, True)
		time.sleep(0.001)
	if data & 0x80 == 0x80:
		GPIO.output(LCD_D7, True)
		time.sleep(0.001)
	GPIO.output(LCD_E, True)
	time.sleep(0.001)
	GPIO.output(LCD_E, False)

	GPIO.output(LCD_DATA, False) #semua data low
	if data & 0x01 == 0x01:
		GPIO.output(LCD_D4, True)
		time.sleep(0.001)
	if data & 0x02 == 0x02:
		GPIO.output(LCD_D5, True)
		time.sleep(0.001)
	if data & 0x04 == 0x04:
		GPIO.output(LCD_D6, True)
		time.sleep(0.001)
	if data & 0x08 == 0x08:
		GPIO.output(LCD_D7, True)
		time.sleep(0.001)
	GPIO.output(LCD_E, True)
	time.sleep(0.001)
	GPIO.output(LCD_E, False)

def init_lcd():
	write_lcd(0, 0x33)
	write_lcd(0, 0x32)
	write_lcd(0, 0x28)
	write_lcd(0, 0x0C)
	write_lcd(0, 0x06)
	write_lcd(0, 0x01)

def puts_lcd(s):
	for ch in s:
		write_lcd(1, ord(ch))

#program utama
GPIO.setmode(GPIO.BCM)
GPIO.setup(LCD_GPIO, GPIO.OUT)
init_lcd()
puts_lcd(sys.argv[1])
write_lcd(0, 0xC0)
puts_lcd(sys.argv[2])
time.sleep(1)
GPIO.cleanup()

Cukup singkat, bukan? Tapi jika Anda membutuhkan pemrograman LCD yang lebih menyeluruh, Anda bisa menggunakan modul RPLCD. Modul ini komplit sekali. Atau Anda bisa mengembangkan kode program lcd.py sesuai kebutuhan Anda.

Penjelasan Singkat Program

Setelah import RPi.GPIO dengan memberikan nama alias GPIO, maka kita perlu memilih mode penomoran pin GPIO dengan perintah:

GPIO.setmode(GPIO.BCM)

Mode BCM lebih umum digunakan dibandingkan dengan mode penomoran pin secara fisik.

Baris-baris perintah selanjutnya adalah deklarasi variabel-variabel untuk pin-pin LCD. Variabel list LCD_GPIO dan LCD_DATA digunakan untuk mempersingkat proses setup dan penulisan data. Karena semua GPIO berfungsi sebagai OUTPUT, maka dengan singkat kita bisa melakukan setup untuk semua GPIO LCD dengan perintah:

GPIO.setup(LCD_GPIO, GPIO.OUT)

Dan untuk mereset semua pin GPIO data LCD, kita bisa menggunakan perintah:

GPIO.output(LCD_DATA, False)

Menyenangkan bukan?

Kode program selanjutnya adalah definisi fungsi write_lcd yang berfungsi untuk menulis data ke LCD, fungsi init_lcd (inisialisasi LCD) dan fungsi puts_lcd yang berfungsi untuk menampilkan tulisan ke layar LCD.

Perlu diingat: Jumlah karakter per baris adalah 16 karakter. Sesuaikan pesan informasi yang ingin ditampilkan dengan space yang ada.

Pada bagian utama program, program akan mengambil nilai argumen yang diberikan pada saat program dipanggil dan langsung menampilkannya ke layar LCD. Nilai argumen ke-1 akan ditampilkan pada baris pertama dan nilai argumen ke-2 akan ditampilkan pada baris kedua. Program akan langsung berakhir setelah proses cleanup dilakukan.

Contoh Penggunaan

Contoh penggunaan skrip lcd.py adalah sebagai berikut:

$ sudo python lcd.py "Pesan baris 1" "Pesan baris 2"

Perintah di atas akan menampilkan Pesan baris 1 pada baris pertama dan Pesan baris 2 pada baris kedua.

$ sudo python lcd.py Chandra MDE

Perintah di atas ini akan menampilkan Chandra pada baris pertama dan MDE pada baris kedua.

Untuk memudahkan pemakaian, aktifkan atribut executable pada file lcd.py dengan perintah:

$ chmod +x lcd.py

Dan letakkan file lcd.py pada direktori yg masuk dalam daftar $PATH semisal /bin atau /usr/bin. Copy saja file lcd.py ke /usr/bin dengan perintah:

$ sudo cp lcd.py /usr/bin

Selanjutnya kita dapat dengan memanggil skrip lcd.py kapanpun dan dimanapun dengan perintah:

$ sudo lcd.py "LCD Python" "Tanpa RPLCD"

Nah, silakan Anda siapkan board LCD Anda, rangkai dengan benar dan cobalah kode program lcd.py di atas.

Selamat mencoba dan sampai berjumpa lagi pada Catatan Eksperimen Raspberry Pi selanjutnya.

 

 

4 Comments

Add a Comment

Your email address will not be published. Required fields are marked *