My little LCD menu. Several options and features.

mySerial.print("?y0?x00"); // cursor to beginning of line 0
mySerial.print(" .");
delay(10);

mySerial.print("?D40000001F1F1F1F1F");
delay(300);
mySerial.print("?y0?x00"); // cursor to beginning of line 0
mySerial.print(" .");
delay(10);

mySerial.print("?D500001F1F1F1F1F1F");
delay(300);
mySerial.print("?y0?x00"); // cursor to beginning of line 0
mySerial.print(" . ");
delay(10);

mySerial.print("?D6001F1F1F1F1F1F1F");
delay(300);
mySerial.print("?y0?x00"); // cursor to beginning of line 0
mySerial.print(". ");
delay(10);

mySerial.print("?D71F1F1F1F1F1F1F1F");
delay(300);
mySerial.print("?y0?x00"); // cursor to beginning of line 0
mySerial.print(" . ");
delay(10);

mySerial.print("?c0"); // turn cursor off
delay(300
);

mySerial.print("?f"); // clear the LCD

delay(1000);

mySerial.print("?y0?x00"); // cursor to beginning of line 0
delay(10);
mySerial.print("?l"); // clear line
delay(10);
mySerial.print(" Vertical Bar ");
delay(10);
mySerial.print("?n"); // cursor to beginning of line 1 + clear line 1
mySerial.print(" Demo ");
delay(500);

// vertical bar graph demo - increasing bar
for ( N = 0; N <= 15; N++){
mySerial.print("?y1?x00"); // cursor to beginning of line 1
delay(10);

if (N < 8){
mySerial.print("?y0?x00 "); // cursor to beginning of line 1 and writes blank space
mySerial.print("?y1?x00");
Remainder = (N % 8); // % sign is modulo operator - calculates remainder
// now print the remainder
mySerial.print("?"); // first half of the custom character command
mySerial.print(Remainder, DEC); // prints the custom character equal to remainder
delay(10);

}
else{
mySerial.print("?y1?x00?7"); // cursor to beginning of line 1 and writes black character
mySerial.print("?y0?x00");
Remainder = (N % 8); // % sign is modulo operator - calculates remainder
// now print the remainder
mySerial.print("?"); // first half of the custom character command
mySerial.print(Remainder, DEC); // prints the custom character equal to remainder
delay(10);

}

}
delay(100);

for ( N = 15; N >= 0; N--){
mySerial.print("?y1?x00"); // cursor to beginning of line 1
delay(10);

if (N < 8){
mySerial.print("?y0?x00 "); // cursor to beginning of line 1 and writes blank space
mySerial.print("?y1?x00");
Remainder = (N % 8); // % sign is modulo operator - calculates remainder
// now print the remainder
mySerial.print("?"); // first half of the custom character command
mySerial.print(Remainder, DEC); // prints the custom character equal to remainder
delay(10);

}
else{
mySerial.print("?y1?x00?7"); // cursor to beginning of line 1 and writes black character
mySerial.print("?y0?x00");
Remainder = (N % 8); // % sign is modulo operator - calculates remainder
// now print the remainder
mySerial.print("?"); // first half of the custom character command
mySerial.print(Remainder, DEC); // prints the custom character equal to remainder
delay(10);

}

}
delay(50);
for ( N = 0; N <= 15; N++){ // decreasing bar
mySerial.print("?y1?x00"); // cursor to beginning of line 1
delay(10);

if (N < 8){
mySerial.print("?y0?x00 "); // cursor to beginning of line 1 and writes blank space
mySerial.print("?y1?x00");
Remainder = (N % 8); // % sign is modulo operator - calculates remainder
// now print the remainder
mySerial.print("?"); // first half of the custom character command
mySerial.print(Remainder, DEC); // prints the custom character equal to remainder
delay(10);

}
else{
mySerial.print("?y1?x00?7"); // cursor to beginning of line 1 and writes black character
mySerial.print("?y0?x00");
Remainder = (N % 8); // % sign is modulo operator - calculates remainder
// now print the remainder
mySerial.print("?"); // first half of the custom character command
mySerial.print(Remainder, DEC); // prints the custom character equal to remainder
delay(10);

}

}
delay(100);

for ( N = 15; N >= 0; N--){
mySerial.print("?y1?x00"); // cursor to beginning of line 1
delay(10);