#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4); // Set the LCD address to 0x27 by Teach Me Something
int s, m, h, a, d, state, state1, state2, dg, cnt;
int xx = 0;
int yy = 0;
byte arrow[8] = {B00000, B00000, B00000, B00000, B11100, B01111, B11100, B00000,};
// 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 custom0(int col)
{
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 setup()
{
lcd.init();
lcd.backlight();
lcd.createChar(1, arrow);
for (yy = 0; yy < 2; yy++)
{
for (xx = 0; xx < 16; xx++)
{
lcd.setCursor(xx, yy);
lcd.print(char(1));
delay(130);
lcd.setCursor(xx, yy);
if (yy == 0)
lcd.print(" Subscribe "[xx]);
else
lcd.print("TeachMeSomething"[xx]);
}
}
delay(2000);
lcd.clear();
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);
}
void loop()
{
show_number(99999);
lcd.setCursor(18, 1);
lcd.print("CC");
lcd.setCursor(0, 3);
a = 10;
lcd.print("Size S :" + String(a));
delay(1000);
}
void show_number(long int a) {
// หลักหมื่น
int tenThousands = a / 10000;
// หลักพัน
int thousands = (a % 10000) / 1000;
// หลักร้อย
int hundreds = (a % 1000) / 100;
// หลักสิบ
int tens = (a % 100) / 10;
// หลักหน่วย
int units = a % 10;
if (tenThousands != 0) {
printNumber(tenThousands, 0);
} else {
// If tenThousands is 0, don't display anything for this digit
lcd.setCursor(0, 0);
lcd.write(' ');
lcd.write(' ');
lcd.write(' ');
}
if (thousands != 0 || tenThousands != 0) {
printNumber(thousands, 3);
} else {
// If thousands is 0 and tenThousands is 0, don't display anything for this digit
lcd.setCursor(3, 0);
lcd.write(' ');
lcd.write(' ');
lcd.write(' ');
}
if (hundreds != 0 || thousands != 0 || tenThousands != 0) {
printNumber(hundreds, 7);
} else {
// If hundreds is 0 and thousands is 0 and tenThousands is 0, don't display anything for this digit
lcd.setCursor(7, 0);
lcd.write(' ');
lcd.write(' ');
lcd.write(' ');
}
if (tens != 0 || hundreds != 0 || thousands != 0 || tenThousands != 0) {
printNumber(tens, 11);
} else {
// If hundreds is 0 and thousands is 0 and tenThousands is 0, don't display anything for this digit
lcd.setCursor(11, 0);
lcd.write(' ');
lcd.write(' ');
lcd.write(' ');
}
printNumber(units, 15);
}