#include LiquidCrystal_I2C lcd(0x27, 16, 2); //address, columns, rows // the 8 arrays that form each segment of the custom numbers byte bar1[8] = { B11100, B11110, B11110, B11110, B11110, B11110, B11110, B11100 }; byte bar2[8] = { B00111, B01111, B01111, B01111, B01111, B01111, B01111, B00111 }; byte bar3[8] = { B11111, B11111, B00000, B00000, B00000, B00000, B11111, B11111 }; byte bar4[8] = { B11110, B11100, B00000, B00000, B00000, B00000, B11000, B11100 }; byte bar5[8] = { B01111, B00111, B00000, B00000, B00000, B00000, B00011, B00111 }; byte bar6[8] = { B00000, B00000, B00000, B00000, B00000, B00000, B11111, B11111 }; byte bar7[8] = { B00000, B00000, B00000, B00000, B00000, B00000, B00111, B01111 }; byte bar8[8] = { B11111, B11111, B00000, B00000, B00000, B00000, B00000, B00000 }; void setup() { // assigns each segment a write number lcd.createChar(1,bar1); lcd.createChar(2,bar2); lcd.createChar(3,bar3); lcd.createChar(4,bar4); lcd.createChar(5,bar5); lcd.createChar(6,bar6); lcd.createChar(7,bar7); lcd.createChar(8,bar8); lcd.begin(); } void custom0(int col) { // uses segments to build the number 0 lcd.setCursor(col, 0); lcd.write(2); lcd.write(8); lcd.write(1); lcd.setCursor(col, 1); lcd.write(2); lcd.write(6); lcd.write(1); } void custom1(int col) { lcd.setCursor(col,0); lcd.write(32); lcd.write(32); lcd.write(1); lcd.setCursor(col,1); lcd.write(32); lcd.write(32); lcd.write(1); } void custom2(int col) { lcd.setCursor(col,0); lcd.write(5); lcd.write(3); lcd.write(1); lcd.setCursor(col, 1); lcd.write(2); lcd.write(6); lcd.write(6); } void custom3(int col) { lcd.setCursor(col,0); lcd.write(5); lcd.write(3); lcd.write(1); lcd.setCursor(col, 1); lcd.write(7); lcd.write(6); lcd.write(1); } void custom4(int col) { lcd.setCursor(col,0); lcd.write(2); lcd.write(6); lcd.write(1); lcd.setCursor(col, 1); lcd.write(32); lcd.write(32); lcd.write(1); } void custom5(int col) { lcd.setCursor(col,0); lcd.write(2); lcd.write(3); lcd.write(4); lcd.setCursor(col, 1); lcd.write(7); lcd.write(6); lcd.write(1); } void custom6(int col) { lcd.setCursor(col,0); lcd.write(2); lcd.write(3); lcd.write(4); lcd.setCursor(col, 1); lcd.write(2); lcd.write(6); lcd.write(1); } void custom7(int col) { lcd.setCursor(col,0); lcd.write(2); lcd.write(8); lcd.write(1); lcd.setCursor(col, 1); lcd.write(32); lcd.write(32); lcd.write(1); } void custom8(int col) { lcd.setCursor(col, 0); lcd.write(2); lcd.write(3); lcd.write(1); lcd.setCursor(col, 1); lcd.write(2); lcd.write(6); lcd.write(1); } void custom9(int col) { lcd.setCursor(col, 0); lcd.write(2); lcd.write(3); lcd.write(1); lcd.setCursor(col, 1); lcd.write(7); lcd.write(6); lcd.write(1); } void printNumber(int value, int col) { if (value == 0) { custom0(col); } if (value == 1) { custom1(col); } if (value == 2) { custom2(col); } if (value == 3) { custom3(col); } if (value == 4) { custom4(col); } if (value == 5) { custom5(col); } if (value == 6) { custom6(col); } if (value == 7) { custom7(col); } if (value == 8) { custom8(col); } if (value == 9) { custom9(col); } } void loop() { for (int i = 0; i <= 9; i++) { lcd.clear; lcd.setCursor(0, 0); printNumber(i, 0); delay(500); }