Big Number On LCD 16x2

Bosan dengan tampilan LCD 16x2 yang itu-itu aja? Atau ingin menambahkan sedikit typography untuk display project Arduino kamu? Kali ini kita akan mencoba membuat tampilan angka yang besar. Jika biasanya setiap karakter pada LCD 16x2 itu menempati 1 baris dan 1 kolom, maka pada percobaan kita ini angka yang tampil akan berukuran 2 baris 3 kolom. Cukup besar, dan pastinya masih jelas terlihat untuk jarak 3-5 meter.
Menurut datasheet, LCD 16x2 yang terinstall chip Hitachi HD44780 sebagaimana yang Gerai Cerdas jual : LCD Module 16x2 Blue Backlight HD447 dan LCD Module 16x2 (I2C/TWI Connector) memiliki memory yang dapat menyimpan 8 slot design yang kita buat sendiri. Nah, dengan 8 slot design itulah kita dapat membuat karakter-karakter khusus. Adapun design karakter khusus yang akan kita buat adalah sebagai berikut :
Untuk mempraktekkan tulisan ini, kamu hanya memerlukan :
- Arduino UNO Simple Pack / DFRduino UNO V3.0
- LCD Module 16x2 (I2C/TWI Connector)
Rangkaiannya adalah sebagai berikut :
Jika kamu memiliki LCD 16x2 yang tanpa module I2C, maka rangkaiannya bisa merefer ke sini
Sekarang bagian programmingnya (untuk LCD 16x2 dengan I2C):
#include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x20,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display byte LT[8] = { B00111, B01111, B11111, B11111, B11111, B11111, B11111, B11111 }; byte UB[8] = { B11111, B11111, B11111, B00000, B00000, B00000, B00000, B00000 }; byte RT[8] = { B11100, B11110, B11111, B11111, B11111, B11111, B11111, B11111 }; byte LL[8] = { B11111, B11111, B11111, B11111, B11111, B11111, B01111, B00111 }; byte LB[8] = { B00000, B00000, B00000, B00000, B00000, B11111, B11111, B11111 }; byte LR[8] = { B11111, B11111, B11111, B11111, B11111, B11111, B11110, B11100 }; byte MB[8] = { B11111, B11111, B11111, B00000, B00000, B00000, B11111, B11111 }; byte block[8] = { B11111, B11111, B11111, B11111, B11111, B11111, B11111, B11111 }; // loop counter int count = 0; void setup() { lcd.init(); lcd.backlight(); // assignes each segment a write number lcd.createChar(0,LT); lcd.createChar(1,UB); lcd.createChar(2,RT); lcd.createChar(3,LL); lcd.createChar(4,LB); lcd.createChar(5,LR); lcd.createChar(6,MB); lcd.createChar(7,block); // sets the LCD's rows and colums: lcd.begin(16, 2); } void custom0() { // uses segments to build the number 0 lcd.setCursor(0,0); // set cursor to column 0, line 0 (first row) lcd.write(0); // call each segment to create lcd.write(1); // top half of the number lcd.write(2); lcd.setCursor(0, 1); // set cursor to colum 0, line 1 (second row) lcd.write(3); // call each segment to create lcd.write(4); // bottom half of the number lcd.write(5); } void custom1() { lcd.setCursor(0,0); lcd.write(1); lcd.write(2); lcd.setCursor(0,1); lcd.write(4); lcd.write(7); lcd.write(4); } void custom2() { lcd.setCursor(0,0); lcd.write(6); lcd.write(6); lcd.write(2); lcd.setCursor(0, 1); lcd.write(3); lcd.write(4); lcd.write(4); } void custom3() { lcd.setCursor(0,0); lcd.write(6); lcd.write(6); lcd.write(2); lcd.setCursor(0, 1); lcd.write(4); lcd.write(4); lcd.write(5); } void custom4() { lcd.setCursor(0,0); lcd.write(3); lcd.write(4); lcd.write(7); lcd.setCursor(2, 1); lcd.write(7); } void custom5() { lcd.setCursor(0,0); lcd.write(3); lcd.write(6); lcd.write(6); lcd.setCursor(0, 1); lcd.write(4); lcd.write(4); lcd.write(5); } void custom6() { lcd.setCursor(0,0); lcd.write(0); lcd.write(6); lcd.write(6); lcd.setCursor(0, 1); lcd.write(3); lcd.write(4); lcd.write(5); } void custom7() { lcd.setCursor(0,0); lcd.write(1); lcd.write(1); lcd.write(2); lcd.setCursor(2, 1); lcd.write(7); } void custom8() { lcd.setCursor(0,0); lcd.write(0); lcd.write(6); lcd.write(2); lcd.setCursor(0, 1); lcd.write(3); lcd.write(4); lcd.write(5); } void custom9() { lcd.setCursor(0,0); lcd.write(0); lcd.write(6); lcd.write(2); lcd.setCursor(2, 1); lcd.write(7); } void clearnumber() { // clears the area the custom number is displayed in lcd.setCursor(0,0); lcd.print(" "); lcd.setCursor(0,1); lcd.print(" "); } void loop() { lcd.setCursor(5,0); // puts cursor at columb 5, line 0 lcd.print("Loop Count:"); // displays the words on LCD lcd.setCursor(9,1); // sets cursor to column 9, line 1 lcd.print(count); // displays loop count on LCD clearnumber(); // clears the custom number custom0(); // displays custom 0 on the LCD delay(1000); // delay 1 second clearnumber(); custom1(); delay(1000); clearnumber(); custom2(); delay(1000); clearnumber(); custom3(); delay(1000); clearnumber(); custom4(); delay(1000); clearnumber(); custom5(); delay(1000); clearnumber(); custom6(); delay(1000); clearnumber(); custom7(); delay(1000); clearnumber(); custom8(); delay(1000); clearnumber(); custom9(); delay(1000); count++; // adds 1 to the loop count }
Kalau belum menginstall library LCD 16x2 dengan koneksi I2C maka bisa mendownload dulu di sini
Ok, selamat mencoba!
Sumber :
http://www.instructables.com/id/Custom-Large-Font-For-16x2-LCDs/?ALLSTEPS
Comments