Я пытаюсь создать список имен звуковых файлов для воспроизведения через WAV-щит 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])));
какие-нибудь слова мудрости?
for
цикл является операцией во время выполнения. Вы не можете выполнять во время выполнения операции, которые назначают PROGMEM
переменная, поскольку переменная будет храниться во флэш-памяти (только для чтения во время выполнения).
Но поскольку единственная переменная часть — это число, сохраните две другие части во флэш-памяти и создайте имя файла во время выполнения.
#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