This example demonstrates how to display a string stored in flash memory.
#include <LiquidCrystal.h>
#include <avr/pgmspace.h>
const byte LCD_RS = 12;
const byte LCD_E = 11;
const byte LCD_D4 = 5;
const byte LCD_D5 = 4;
const byte LCD_D6 = 3;
const byte LCD_D7 = 2;
LiquidCrystal lcd(LCD_RS, LCD_E, LCD_D4, LCD_D5, LCD_D6, LCD_D7);
const char text1[] PROGMEM = "Lorem ipsum dolo";
const char text2[] PROGMEM = "r sit amet, cons";
const char text3[] PROGMEM = "ectetur adipisci";
const char text4[] PROGMEM = "ibendum, sem ac ";
const char text5[] PROGMEM = "venenatis rhoncu";
const char text6[] PROGMEM = "s, nisi justo eu";
const char text7[] PROGMEM = "ismod lectus, eu";
const char text8[] PROGMEM = " eleifend ante n";
const char text9[] PROGMEM = "isl vitae eros. ";
const char text10[] PROGMEM = "Pellentesque hab";
const char text11[] PROGMEM = "itant morbi tris";
const char text12[] PROGMEM = "tique senectus e";
const char text13[] PROGMEM = "t netus et males";
const char text14[] PROGMEM = "uada fames ac tu";
const char text15[] PROGMEM = "rpis egestas. Or";
const char text16[] PROGMEM = "ci varius natoqu";
const char text17[] PROGMEM = "e penatibus et m";
const char text18[] PROGMEM = "agnis dis partur";
const char text19[] PROGMEM = "ient montes, nas";
const char text20[] PROGMEM = "cetur ridiculus ";
LiquidLine welcome_line2(0, 1,
"PROGMEM example");
void setup() {
Serial.begin(250000);
lcd.begin(16, 2);
line11.set_asProgmem(1);
line12.set_asProgmem(1);
line21.set_asProgmem(1);
line22.set_asProgmem(1);
line31.set_asProgmem(1);
line32.set_asProgmem(1);
line41.set_asProgmem(1);
line42.set_asProgmem(1);
line51.set_asProgmem(1);
line52.set_asProgmem(1);
line61.set_asProgmem(1);
line62.set_asProgmem(1);
line71.set_asProgmem(1);
line72.set_asProgmem(1);
line81.set_asProgmem(1);
line82.set_asProgmem(1);
line91.set_asProgmem(1);
line92.set_asProgmem(1);
line101.set_asProgmem(1);
line102.set_asProgmem(1);
menu.add_screen(welcome_screen);
menu.add_screen(screen1);
menu.add_screen(screen2);
menu.add_screen(screen3);
menu.add_screen(screen4);
menu.add_screen(screen5);
menu.add_screen(screen6);
menu.add_screen(screen7);
menu.add_screen(screen8);
menu.add_screen(screen9);
menu.add_screen(screen10);
}
void loop() {
static unsigned long lastMs_nextScreen = 0;
static unsigned int period_nextScreen = 1000;
if (millis() - lastMs_nextScreen > period_nextScreen) {
lastMs_nextScreen = millis();
menu.next_screen();
}
}