Das _P und PSTR() lässt den Format-String im Flash, statt das RAM voll zumüllen. PSTR() ist dabei ein Makro, das mit PROGMEM einen Flash String deklariert und die _P Versionen der String Funktionen erwarten so einen String.
Du hast allerdings auch sonst so viele Strings im RAM, dass das hier keine Rolle spielt. ![]()
Bei print() kannst du einfach das machen:
Serial.print(F("String im Flash"));
file.print(F("String im Flash"));
Spart sehr viel RAM.
Ich muss allerdings kein #include <avr/pgmspace.h> einfügen
Mhh, in der Arduino IDE anscheinend nicht. Ich programmiere in Visual Studio, da ist es nötig was ich so sehe. Etwas seltsam, aber na ja.
Zu meinen anderen Fragen : der Mega dürfte mit der gleichen Taktfrequenz nicht schneller sein, oder ?
Nein. Du musst dir nur abgewöhnen delay() zu verwenden und statt dessen mit millis() abfragen ob schon eine gewisse Zeit vergangen ist. delay() blockiert den Prozessor völlig für die Zeit.