Arduino - PROGMEM a avr/pgmspace.h 有问题

Arduino - Trouble with PROGMEM a avr/pgmspace.h

我试图在静态字符上使用 progmem 来保存一些有价值的东西 space。一切似乎都很好,但串行和液晶显示一些奇怪的换行符而不是我的文本。

我想做什么:

...
#include <avr/pgmspace.h>
const static char PROGMEM textSDFailed[]        = "Filesys failed";
const static char PROGMEM textSDAvailable[]     = "Filesys is avail.";
...
lcd.print(textSDFailed);
...

以及打印时我在 lcd 上看到的内容: https://imgur.com/2waPkgZ

有人可以帮助我吗?

您可以使用带有程序字符串的 print。 progmem 字符串的重载 print 具有 __FlashStringHelper* 作为参数。这通常用于 the Arduino F() macro.

为了重复使用我做的演员表

#define FSH_P const __FlashStringHelper*

那我就这样用

  lcd.print((FSH_P) textSDFailed);

可以的话,直接用F宏:

  lcd.print(F("Filesys failed"));