1

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

我想做什么:

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

打印时我在液晶显示器上得到了什么: https ://imgur.com/2waPkgZ

有人能帮我吗?

4

1 回答 1

3

您可以使用printwhich 需要一个程序字符串。print程序字符串的重载具有__FlashStringHelper*作为参数。这通常用于Arduino F() 宏

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

#define FSH_P const __FlashStringHelper*

然后我以这种方式使用它

  lcd.print((FSH_P) textSDFailed);

如果可以,直接使用 F 宏:

  lcd.print(F("Filesys failed"));
于 2020-07-21T18:06:27.687 回答