2015-05-11 4 views
0

Я пытаюсь создать список названий волновых имен soundList, чтобы играть через щит WAV adafruit ontop arduino UNO. Так как эти имена файлов никогда не изменится, и я бегу из SRAM, я хотел бы хранить их в PROGMEM, но я получаю сообщение об ошибке:Конкатенация строк в PROGMEM для arduino UNO

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]))); 

любые слова мудрости?

ответ

0

A 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