LCD Menu Dynamischer Speicher

Hallo zusammen,

ich bin aktuell mit meinem ersten Arduino Projekt beschäftigt, welches ein Adventskalender werden soll.
Bislang funktioniert auch alles so wie ich es möchte, aber ich bin leider auf ein Problem mit dem Speicher gestoßen.
Umso mehr ich mit den Funktionen, die am Tag des Türchen passieren sollen, am Display anzeige(Mehrere Zeilen ):

lcd.clear();
lcd.setCursor(0,0);
lcd.print("123");
lcd.setCursor(0,1);
lcd.print("123");
lcd.setCursor(0,2);
lcd.print("123");
lcd.setCursor(0,3);
delay(5000); //Lesezeit
lcd.clear(); //Neue Seite und weiter im Text
lcd.setCursor(0,0);
lcd.print("123");
lcd.setCursor(0,1);
lcd.print("123");
lcd.setCursor(0,2);
lcd.print("123");
lcd.setCursor(0,3);
delay(5000);

oder Ausgänge geschaltet werden umso kleiner wird mein RAM, ich frage mich allerdings, warum?
Die Funktionen werden doch nur durch Auswahl aufgerufen?
Mir ist beim Rumspielen auch aufgefallen, dass das ganze mit lcd.print zutun hat. Ich kann mir das ganze leider nicht so wirklich erklären, dafür fehlt mir auch einfach die entsprechende Erfahrung.
Vielleicht hat ja jemand einen flinken Vorschlag oder Rat für mich.

Vielen Dank schon mal. :slight_smile:
Anbei mal der Code…

Advent.ino (13.6 KB)

Deine ganzen Texte landen im RAM. Nutze das F-Macro, um sie in den Flashspeicher zu legen.

// Text im RAM
lcd.print("> T\365rchen 1    ");
// Text im Flash
lcd.print(F("> T\365rchen 1    "));

Gruß Tommy

kfl_:
ich frage mich allerdings, warum?

Weil die meisten Assembler-Befehle nur mit Daten im RAM umgehen können und keinen Zugriff auf das Flash haben. Daher wird der Einfachheit halber einfach alle Texte ins RAM kopiert.

Es gibt aber Wege das zu umgehen. F()-Makro, PROGMEM, PSTR(), etc.

Super vielen Dank für eure Hilfen.
Ich werde mich damit mal befassen, funktioniert aber nun! :slight_smile: