Rabu, 08 Maret 2017

Tutorial Belajar Arduino Part 12: Termometer Digital/ LCD Character

Dalam hal ini kita akan menyiapkan LCD untuk menampilkan informasi suhu yang telah kita buat. Sebab melihat informasi suhu dengan komputer tentu kurang praktis bukan?

LCD merupakan singkatan dari Liquid Crystal Display, atau umumnya disebut dengan LCD atau display saja. Di pasaran beragam jenis LCD dan berbagai ukuran yang bisa Anda gunakan. LCD bisa untuk menampilkan huruf dan angka, bahkan ada yang bisa untuk menampilkan gambar.

Dalam ebook ini, kita akan berkenalan dengan LCD yang umum digunakan dan harganya juga relatif terjangkau. LCD ini berukuran 16x2 (2 baris 16 kolom) yang cukup untuk menampilkan informasi suhu atau informasi yang tidak terlalu panjang. LCD ini dikenal juga dengan LCD 1602 dengan beberapa varian seperti 1602A, dll.

LCD ini bisa bekerja pada 5 volt, sehingga Anda bisa menyambungkannya secara langsung ke pin VCC pada board Arduino. Perlu diperhatikan, jika Anda menggunakan LCD jenis lainnya, ada juga LCD yang bekerja pada voltase yang berbeda. Sehingga kesalahan pemasangan sumber tegangan bisa membuat LCD rusak.


Gambar LCD 1602


LCD 1602 memiliki 16 pin dengan fungsi-fungsi sebagai berikut:
Simbol
Value
Fungsi
VSS
0V
Ground
VDD
+ 5V
Power Supply / VCC
V0
-
Pengaturan kontras backlight
RS
H/L
H = data, L = command
R/W
H/L
H = read, L = write
E
H.H - L
Enable Signal
D1-D3
H/L
Jalur untuk transfer 8 bit data
D4-D7
H/L
Jalur untuk transfer 4 & 8 bit data
A
+ 5V
VCC untuk backlight
K
0V
GND untuk backlight
Berdasarkan karakteristik tersebut, maka semua pin akan digunakan kecuali pin D1 — D3 sebab kita akan menggunakan jalur data untuk transfer 4 bit atau 8 bit. Penjelasan singkat tentang RS, R/W, dan E-RS merupakan kependekan dari Register Selector, pin ini berfungsi untuk memilih register control atau register data. Register control digunakan untuk mengkonfigurasi LCD, sedangkan register data digunakan untuk menuliskan data berupa karakter untuk ditampilkan di LCD.

-           R/W atau Read/Write, digunakan untuk memilih aliran data mikrokontroller akan membaca data yang ada di LCD atau menuliskan data ke LCD. Jika LCD hanya digunakan untuk menulis / menampilkan data, maka pin ini bisa langsung disambungkan ke GND sehingga logika bisa diset menjadi L (Low).
-             E atau Enable, digunakan untuk mengaktifkan LCD ketika proses penulisan data ke register control dan regiter data.

Rangkaian Dasar LCD 1602
Untuk merangkai LCD, yang Anda butuhkan adalah beberapa kabel jumper dan sebuah potensiometer. Potensiometer ini berfungsi untuk mengatur kontras backlight LCD. Perhatikan Rangkaian Menghubungkan LCD 1602 ke Arduino.



1.        Pin V0 pada LCD disambungkan ke kaki tengah potensiometer, sementara masing-masing kaki potensiometer yang ada di pinggir disambungkan ke VCC dan GND. Jika nanti tampilan tulisannya kurang jelas, silakan putar-putar potensiometernya.
2.        Pin R/W pada LCD disambungkan ke GND
3.        Pin RS pada LCD disambungkan ke pin 6 pada Arduino
4.        Pin E pada LCD disambungkan ke pin 7 pada Arduino
5.        Pin untuk data (D4 — D7) pada LCD disambungkan ke pin 9 — 12 pada Arduino
6.        VDD dan A pada LCD disambungkan ke +5v
7.        VSS dan K pada LCD disambungkan ke GND





Program Dasar LCD

// Sketch Program LCD dasar
#include <LiquidCrystal.h>
// Setting LCD RS E D4 D5 D6 D7
LiquidCrystal lcd(6, 7, 9, 10, 11, 12);
void setup(){
 // pilih LCD 16 x 2
 lcd.begin(16,2);
 lcd.print("BELAJAR ARDUINO");
}
int hitung = 0;
void loop(){
 // pindah ke baris kolom 1 baris ke 2
 // array selalu dimulai dari 0
 lcd.setCursor(0,1);
 lcd.print( hitung++ );
 delay(1000);
}

Pada Arduino kita bisa menggunakan library untuk menulis LCD. Library tersebut adalah LiquidCrystal.h. Untuk menggunakan library tersebut Anda bisa meng-include-nya seperti pada baris .

// Setting LCD RS E D4 D5 D6 D7
LiquidCrystal lcd(7, 6, 9, 10, 11, 12);

Perintah pada baris di atas adalah untuk melakukan setting LCD sesuai dengan library yang dipakai. Fungsi lcd() adalah instansiasi dari class LiquidCrystal yang dipanggil pada baris memiliki parameter berturut-turut pin RS, E, D4, D5, D6, dan D7. Jika Anda ingin menggunakan format lainnya, maka Anda bisa menggunakan beberapa pilihan parameter seperti di bawah ini:

LiquidCrystal(RS, E, D0, D1, D2, D3);
LiquidCrystal(RS, RW, E, D0, D1, D2, D3); 
LiquidCrystal(RS, E, D0, D1, D2, D3, D4, D5, D6, D7); 
LiquidCrystal(RS, RW, E, D0, D1, D2, D3, D4, D5, D6, D7);

Selanjutnya perhatikan baris
// pilih LCD 16 x 2
 lcd.begin(16,2);

Fungsi begin(kolom, baris, charsize) memiliki 2 parameter wajib dan 1 parameter tambahan. Parameter wajibnya adalah informasi kolom dan informasi baris pada LCD. Sedangkan informasi tambahannya adalah charsize untuk masing-masing karakter yang akan digunakan. Standarnya, charsize berukuran 5x8 pixel untuk setiap karakter, jika Anda memiliki LCD dengan pixel yang berbeda, silakan disesuaikan.Fungsi begin() juga digunakan untuk inisialisasi jenis LCD yang akan digunakan. Mungkin ini agak mirip dengan Serial.begin() yang berfungsi untuk inisialisasi komunikasi serial dengan parameter berupa baud rate yang akan digunakan.

 // pindah ke baris kolom 1 baris ke 2
 // array selalu dimulai dari 0
 lcd.setCursor(0,1);
 lcd.print( hitung++ );
 delay(1000);

Fungsi setCursor(kolom, baris) berfungsi untuk memindah kursor aktif sesuai kolom dan baris yang kita tentukan. Kolom ke-0 berarti kolom ke 1 pada LCD (ingat, angka pertama dalam array adalah 0, bukan 1), sedangkan baris ke-1 berarti adalah baris ke 2 pada LCD.

Pada baris lcd.print( hitung++ );, kenapa menggunakan print() dan bukan println()? Penggunaan println() dalam LCD maka akan secara otomatis menambahkan 2 karakter tambahan untuk pindah baris (CR dan LF), maka jika Anda menggunakan println(), akan muncul 2 karakter aneh pada LCD. Jadi, gunakanlahprint() untuk menulis ke LCD.


Sensor Suhu dengan LCD

Setelah kita tahu bagaimana cara membuat sensor suhu dengan IC LM35 dan cara memasang LCD, mari kita gabungkan keduanya sehingga menjadi termometer digital.

Rangkaian


Gabungan sensor suhu dan rangkaian LCD terbentuk Rangkaian di atas. Dalam hal ini, rangkaian sudah siap untuk diprogram sehingga menjadi termometer digital.



Program

// Sketch Program termometer digital
// Termometer digital
#include <LiquidCrystal.h>
const int pSuhu = A0;
float suhu, data;
// Setting LCD RS E D4 D5 D6 D7
LiquidCrystal lcd(6, 7, 9, 10, 11, 12);
void setup(){
 // mengubah tegangan referensi ke internal, 1.1 volt
 analogReference(INTERNAL);
 // pinSuhu sebagai input
 pinMode(pSuhu, INPUT);
 // pilih LCD 16 x 2
 lcd.begin(16,2);
 lcd.print("BELAJAR ARDUINO");
}
void loop(){
 data = analogRead(pSuhu);
 suhu = data * 110 / 1024;
 // pindah ke baris kolom 1 baris ke 2
 // array selalu dimulai dari 0
 lcd.setCursor(0,1);
 lcd.print("Suhu: ");
 lcd.print(suhu);
 lcd.print("C");
 delay(1000);
}

Selamat, Anda sudah bisa membuat termometer digital. Selanjutnya, silakan Anda berkreasi dengan mengubah posisi atau mengubah tulisan yang ada di LCD. Silakan juga Anda mencoba untuk melakukan konversi dari celcius ke Fahrenheit, ke Kelvin, dan Reamur kemudian tampilkan di LCD.

Tidak ada komentar:

Posting Komentar