将 Arduino F() 宏与字符串数组一起使用

Cyb*_*771 5 memory string macros arduino

我正在研究一个 Arduino 项目,该项目将随机报价打印到 LCD 屏幕。大约有一百种不同的引用,但其中超过 10 种会使 SRAM 过载。

我已经研究过它,似乎我需要使用PROGMEMF()将字符串存储在闪存而不是 SRAM 中,但我无法弄清楚要存储的语法,然后检索它们。当前程序看起来像这样(删除不相关部分的伪代码):

String quotes[] = {"quote 1", "quote2", "quote3", ... "quoteN"};
String currentQuote;    

void setup() {
  currentQuote = quotes[0];
}

void loop() {
  if (condition)
      currentQuote = quotes[random(N)];
}
Run Code Online (Sandbox Code Playgroud)

如何将字符串数组存储在闪存中,然后在需要时检索单个元素?

mpf*_*aga 1

我在代码中看到 String 类支持 F()。但我不知道如何使用它。

我建议查看http://arduino.cc/en/Reference/PROGMEM它很好地解释了 PROGMEM 的使用并且与您的应用程序相关。我认为 PROGMEM 更原始地适用于 char 字符串,而不是 String。