#include <LiquidCrystal_I2C.h>
#define I2C_ADDR 0x27
#define LCD_COLUMNS 20
#define LCD_LINES 4
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
byte custchar[8][8] = { // eight custom characters
{B11111, B11111, B11111, B00000, B00000, B00000, B00000, B00000}, // 0th
{B00000, B00000, B00000, B00000, B00000, B11111, B11111, B11111}, // 1st
{B11111, B11111, B11111, B00000, B00000, B11111, B11111, B11111}, // 2nd
{B00000, B00000, B00000, B00000, B00000, B01110, B01110, B01110}, // 3rd
{B00000, B00000, B00000, B01110, B01110, B01110, B00000, B00000}, // 4th
{B00000, B00000, B00000, B00000, B00000, B00000, B00000, B00000}, // 5th
{B00000, B00000, B00000, B00000, B00000, B00000, B00000, B00000}, // 6th
{B00000, B00000, B00000, B00000, B00000, B00000, B00000, B00000} // 7th
};
byte bignums[10][2][3] = {
{{255, 0, 255}, {255, 1, 255}}, // 0 // two rows per character
{{ 0, 255, 254}, { 1, 255, 1}}, // 1
{{ 2, 2, 255}, {255, 1, 1}}, // 2
{{ 0, 2, 255}, { 1, 1, 255}}, // 3
{{255, 1, 255}, {254, 254, 255}}, // 4
{{255, 2, 2}, { 1, 1, 255}}, // 5
{{255, 2, 2}, {255, 1, 255}}, // 6
{{ 0, 0, 255}, {254, 255, 254}}, // 7
{{255, 2, 255}, {255, 1, 255}}, // 8
{{255, 2, 255}, {254, 254, 255}} // 9
};
void loadchars() {
for (int i = 0; i < 8; i++)
lcd.createChar(i, custchar[i]);
lcd.home();
}
void printbigchar(byte digit, byte col, byte row, byte symbol = 0) {
if (digit > 9) return;
for (int i = 0; i < 2; i++) {
lcd.setCursor(col, row + i);
for (int j = 0; j < 3; j++) {
lcd.write(bignums[digit][i][j]);
}
lcd.write(254);
}
if (symbol == 1) {
lcd.setCursor(col + 3, row + 1);
lcd.write(3);
} else if (symbol == 2) {
lcd.setCursor(col + 3, row);
lcd.write(4);
lcd.setCursor(col + 3, row + 1);
lcd.write(4);
}
lcd.setCursor(col + 4, row);
}
void setup() {
lcd.init();
lcd.backlight();
loadchars();
printbigchar(0, 0, 0);
printbigchar(1, 4, 0);
printbigchar(2, 8, 0);
printbigchar(3, 12, 0);
printbigchar(4, 16, 0, 1);
printbigchar(5, 0, 2);
printbigchar(6, 4, 2);
printbigchar(7, 8, 2);
printbigchar(8, 12, 2);
printbigchar(9, 16, 2, 2);
}
void loop() {}