Что имею: Сначала размещаю во флеше 3 строки, и там же во флеше создаю массив указателей на эти строки: Код (C++): #include <avr/pgmspace.h> const char code_0[] PROGMEM = "string1"; const char code_1[] PROGMEM = "string2"; const char code_2[] PROGMEM = "string3"; PGM_P const codes_names[] PROGMEM = // массив указателей на строки { code_0 , code_1 , code_2 }; Далее, если не создавать функцию, а просто считывать строки из флеша например так: Код (C++): char buff[30]; strcpy_P(buff, (PGM_P)pgm_read_word(&(codes_names[1]))); , вместо единицы подставляя 0,1 или 2 - все работает. Сложность возникает при создании фунции... Например такой: Код (C++): void printCode (char _codes_names[], uint8_t code ){ char buff[30]; strcpy_P(buff, (PGM_P)pgm_read_word(&(_codes_names[code]))); Serial.println (buff); } Ничего не получается... Есть сведующие люди способные помочь в этой проблеме начинающему ардуинщику? Задача в целом такая: передать в функцию данные из массива строк во флеше, далее, по указанному параметру (номер строки в массиве) вытащить данные (массив символов) и сравнить их с другим массивом чаров. Предвосхищая вопросы зачем это нужно - просто нужно и все. Хотелось бы не только кусок кода, но и хотя бы кратких пояснений.
Вот здесь тема специально про это. По ссылке как бы всё собрано, но если непонятно, можно тему с начала почитать. http://arduino.ru/forum/programmirovanie/ocherednoi-raz-progmem#comment-336371
В функцию передаёте массив символов (точнее указатель на первый элемент массива). А нужно передавать массив указателей. Код (C++): void printCode(const char * const _codes_names[], uint8_t code )