2 : WidgetLCD with double progressBar
use to time, level, etc …
easy to adapt

/*************** Progress bar init ***************/
int Progress = 0;
int col=0; //(col from 0 to 15 LCD)
int Flag = 0;
int Flag1=0;
boolean PgrsTimer ;
WidgetLCD lcd(V18);
String C1 = "\u258F";
String C2 = "\u258E";
String C3 = "\u258D";
String C4 = "\u258C";
String C5 = "\u258B"; // HORIZONTAL BAR
String C6 = "\u258A";
String C7 = "\u2589";
String C8 = "\u2588";
String E1 = "\u2581";
String E2 = "\u2582"; //
String E3 = "\u2583" ; //
String E4 = "\u2584" ; //
String E5 = "\u2585" ; //VERTICAL BAR
String E6 = "\u2586" ; //
String E7 = "\u2587" ; //
String E8 = "\u2588" ; //
void setup()
{
...
PgrsTimer = timer.setInterval(100L, ProgressBar);
timer.disable(PgrsTimer);
/***************** Initialize LCD *****************/
Start();
.....
}
/*********************** start button ************************/
BLYNK_WRITE(V18) {// progressbar start
timer.enable(PgrsTimer);
}
/************************* ProgressBar ******************/
void ProgressBar() {
if (Progress < 100.01) {
lcd.print(0, 0, "Progress " + String(Progress) + "% ");
Flag++; // HORIZONTAL BAR
switch (col) {
case 0 :
lcd.print(15 , 1, E1);
break;
case 2 :
lcd.print(15 , 1, E2);
break;
case 4 :
lcd.print(15 , 1, E3);
break;
case 6 :
lcd.print(15 , 1, E4);
break;
case 8 :
lcd.print(15 , 1, E5);
break;
case 10 :
lcd.print(15 , 1, E6);
break;
case 12 :
lcd.print(15 , 1, E7);
break;
case 13 :
lcd.print(15 , 1, E8);
break;
}
switch (Flag) { //VERTICAL BAR
case 1:
lcd.print(col , 1, C1);
break;
case 2:
lcd.print(col , 1, C2);
break;
case 3 :
lcd.print(col , 1, C3);
break;
case 4:
lcd.print(col , 1, C4);
break;
case 5:
lcd.print(col , 1, C5);
break;
case 6:
lcd.print(col , 1, C6);
break;
case 7:
lcd.print(col , 1, C7);
break;
case 8:
lcd.print(col , 1, C8);
Flag = 0;
col++;
break;
}
Progress++;
} else {
lcd.print(col , 1, C8);
lcd.print(15 , 1, E8);
col = 0;
Progress = 0;
timer.disable(PgrsTimer); // end , stop timer
timer.setTimer(500L, Completion, 10); // Pulse msg times
timer.setTimer(6000L, Start,1); // Start, new message
}
}
/****************** blink msg *********************/
void Completion() {
if (Flag1 == 0) {
lcd.print(0, 0, " completed 100% ");
Flag1 = 1;
}
else {
lcd.print(0, 0, " ");
Flag1 = 0;
}
}
/**************** press Start ***************/
void Start() {
lcd.clear();
lcd.print(1, 0, "Press START");
}