Big Number On LCD 16×2

Bosan dengan tampilan LCD 16×2 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 16×2 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 16×2 yang terinstall chip Hitachi HD44780 sebagaimana yang Gerai Cerdas jual : LCD Module 16×2 Blue Backlight HD447 dan LCD Module 16×2 (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 :

font design

Untuk mempraktekkan tulisan ini, kamu hanya memerlukan :

– Arduino UNO Simple Pack / DFRduino UNO V3.0

– LCD Module 16×2 (I2C/TWI Connector)

– Jumper Female to Male

Rangkaiannya adalah sebagai berikut :

800px-Connection diagram

Jika kamu memiliki LCD 16×2 yang tanpa module I2C, maka rangkaiannya bisa merefer ke sini

Sekarang bagian programmingnya (untuk LCD 16×2 dengan I2C):

#include  
#include 

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 16×2 dengan koneksi I2C maka bisa mendownload dulu di sini

Ok, selamat mencoba!

Sumber :
http://www.instructables.com/id/Custom-Large-Font-For-16×2-LCDs/?ALLSTEPS

Thanks! You've already liked this