Arduino uno的Progmem中的串联字符串

Concatenating strings in PROGMEM for arduino UNO

本文关键字:字符串 Progmem uno Arduino      更新时间:2023-10-16

我正在尝试创建一个Wavefile名称soundlist的列表,以通过Adafruit Wav Shield Ontop Anduino Uno播放。由于这些文件名永远不会更改,而且我已经用完了SRAM,因此我想将它们存储在Progmem中,但我会遇到一个错误:

invalid operands of types 'const char*' and 'const char [5]' 
to binary 'operator+'

我无法在progmem中加入字符串吗?我不明白为什么。

for (int i = 1; i < 19; ++i)
  {
    const char soundList[i] PROGMEM = "Track" + i + ".WAV";
    return soundList;
  }

我也很艰难,然后从音符列表中读取波弹器?

pgm_read_word(&(soundList[i])));

有智慧的话?

for循环是一个运行时操作。您无法执行分配给PROGMEM变量的运行时操作,因为该变量将存储在(运行时只读)flash中。

,但由于唯一的变量部分是数字,请将其他两个部分存储在flash中,然后在运行时创建文件名。

#define FILEPREFIXLEN 5
char fileprefix[] PROGMEM = "Track";
#define FILESUFFIXLEN 4
char filesuffix[] PROGMEM = ".WAV";
#define FILEMIDLEN 2
 ...
char filename[FILEPREFIXLEN + FILEMIDLEN + FILESUFFIXLEN + 1];
// Read fileprefix into filename, append number, append filesuffix