我正在尝试创建一个波文件名的列表,soundList通过一个adafruit盾牌在arduino 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;
}另外,我很难读到soundList中的波形文件吗?
pgm_read_word(&(soundList[i])));有智慧的话吗?
发布于 2015-05-11 04:02:34
for循环是一个运行时操作。您不能执行分配给PROGMEM变量的运行时操作,因为该变量将存储在(运行时为只读)闪存中。
但是,由于唯一的可变部分是数字,所以将其他两个部分存储在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 filesuffixhttps://stackoverflow.com/questions/30158480
复制相似问题