#include <LiquidCrystal.h>
int cont = 0, col = 3;
LiquidCrystal lcd(5, 6, 7, 8, 9, 10);
byte p0[] = {
B00000,
B00000,
B00000,
B00000,
B00000,
B00000,
B00000,
B00000
};
byte p2[] = {
B10000,
B10000,
B10000,
B10000,
B10000,
B10000,
B10000,
B10000
};
byte p4[] = {
B11000,
B11000,
B11000,
B11000,
B11000,
B11000,
B11000,
B11000
};
byte p6[] = {
B11100,
B11100,
B11100,
B11100,
B11100,
B11100,
B11100,
B11100
};
byte p8[] = {
B11110,
B11110,
B11110,
B11110,
B11110,
B11110,
B11110,
B11110
};
byte p10[] = {
B11111,
B11111,
B11111,
B11111,
B11111,
B11111,
B11111,
B11111
};
void setup() {
lcd.begin(16, 2);
lcd.setCursor(10, 0);
lcd.createChar(0, p0);
lcd.createChar(1, p2);
lcd.createChar(2, p4);
lcd.createChar(3, p6);
lcd.createChar(4, p8);
lcd.createChar(5, p10);
delay(1000);
}
void loop() {
//lcd.clear();
String porcent = String(cont) + "%";
int largoTexto = porcent.length();
lcd.setCursor(8 - largoTexto + 2, 0);
lcd.print(porcent);
if (cont < 10) col = 3;
if (cont > 10) col = 4;
if (cont > 20) col = 5;
if (cont > 30) col = 6;
if (cont > 40) col = 7;
if (cont > 50) col = 8;
if (cont > 60) col = 9;
if (cont > 70) col = 10;
if (cont > 80) col = 11;
if (cont > 90) col = 12;
if (cont > 100) col = 13;
if ((cont - int(cont / 10) * 10) >= 2) {
lcd.setCursor(col, 1);
lcd.write(byte(1));
}
if ((cont - int(cont / 10) * 10) >= 4) {
lcd.setCursor(col, 1);
lcd.write(byte(2));
}
if ((cont - int(cont / 10) * 10) >= 6) {
lcd.setCursor(col, 1);
lcd.write(byte(3));
}
if ((cont - int(cont / 10) * 10) >= 8) {
lcd.setCursor(col, 1);
lcd.write(byte(4));
}
if (((cont - int(cont / 10) * 10) == 0) && cont != 0) {
lcd.setCursor(col, 1);
lcd.write(byte(5));
}
delay(100);
cont++;
if (cont > 100) cont = 100;
if (cont < 0) cont = 0;
}