Циклы (AVR) в двумерном массиве

Дед прав с &

const char Err_11[] PROGMEM = "One";
const char Err_12[] PROGMEM = "two";
const char Err_21[] PROGMEM = "Three";
const char Err_22[] PROGMEM = "Four";
const char* const Err[2][2] PROGMEM = {{Err_11, Err_12}, {Err_21, Err_22}};

void setup() {
  Serial.begin(115200);
}

void loop() {
  Serial.println((char)pgm_read_byte(     pgm_read_word(&Err[0][0])     ));
  Serial.println((char)pgm_read_byte(     pgm_read_word(&Err[0][1])     ));
  Serial.println((char)pgm_read_byte(     pgm_read_word(&Err[1][0])     ));
  Serial.println((char)pgm_read_byte(     pgm_read_word(&Err[1][1])     ));
  while (1);
}


O
t
T
F
const char Err_11[] PROGMEM = "One";
const char Err_12[] PROGMEM = "Two";
const char Err_21[] PROGMEM = "Three";
const char Err_22[] PROGMEM = "Four";
const char* const Err[2][2] PROGMEM = {{Err_11, Err_12}, {Err_21, Err_22}};

void setup() {
  Serial.begin(115200);
}

void loop() {
  for (uint8_t i = 0; i <= 1; i++)
    for (uint8_t j = 0; j <= 1; j++)
      Serial.println((__FlashStringHelper*)(pgm_read_word(&Err[i][j])));
  while (1);
}


One
Two
Three
Four

так и напишите, я Вам давно про это говорил - минимальный код демонстрирующий проблемы.

В том, что Вы привели даже нет описания массива! Откуда нам знать как он описан?

Обсуждение программы не видя её кода - чистой воды мастурбация.

1 лайк
const char Msg_11_1[] PROGMEM = "Как тихо веет над долиной";
const char Msg_11_2[] PROGMEM = "Далекий колокольный звон,";
const char Msg_11_3[] PROGMEM = "Как шум от стаи журавлиной, —";
const char Msg_11_4[] PROGMEM = "И в звучных листьях замер он.";
const char Msg_11_5[] PROGMEM = "Как море вешнее в разливе,";
const char Msg_11_6[] PROGMEM = "Светлея, не колыхнет день, —";
const char Msg_11_7[] PROGMEM = "И торопливей, молчаливей";
const char Msg_11_8[] PROGMEM = "Ложится по долине тень";

const char Msg_12_1[] PROGMEM = "Лениво дышит полдень мглистый,";
const char Msg_12_2[] PROGMEM = "Лениво катится река,";
const char Msg_12_3[] PROGMEM = "В лазури пламенной и чистой";
const char Msg_12_4[] PROGMEM = "Лениво тают облака.";
const char Msg_12_5[] PROGMEM = "И всю природу, как туман,";
const char Msg_12_6[] PROGMEM = "Дремота жаркая объемлет,";
const char Msg_12_7[] PROGMEM = "И сам теперь великий Пан";
const char Msg_12_8[] PROGMEM = "В пещере нимф покойно дремлет.";

const char Msg_13_1[] PROGMEM = "Как мимолетна тень осенних ранних дней,";
const char Msg_13_2[] PROGMEM = "Как хочется сдержать их раннюю тревогу,";
const char Msg_13_3[] PROGMEM = "И этот желтый лист, упавший на дорогу,";
const char Msg_13_4[] PROGMEM = "И этот чистый день, исполненный теней, –";
const char Msg_13_5[] PROGMEM = "Затем, что тени дня – избытки красоты,";
const char Msg_13_6[] PROGMEM = "Затем, что эти дни спокойного волненья";
const char Msg_13_7[] PROGMEM = "Несут, дарят последним вдохновеньям";
const char Msg_13_8[] PROGMEM = "Избыток отлетающей мечты.";

const char Msg_14_1[] PROGMEM = "Горные вершины";
const char Msg_14_2[] PROGMEM = "Спят во тьме ночной";
const char Msg_14_3[] PROGMEM = "Тихие долины";
const char Msg_14_4[] PROGMEM = "Полны свежей мглой,";
const char Msg_14_5[] PROGMEM = "Не пылит дорога,";
const char Msg_14_6[] PROGMEM = "Не дрожат листы…";
const char Msg_14_7[] PROGMEM = "Подожди немного,";
const char Msg_14_8[] PROGMEM = "Отдохнешь и ты.";
const char* const Msg_11_14[4][8] PROGMEM = { { Msg_11_1, Msg_11_2, Msg_11_3, Msg_11_4, Msg_11_5, Msg_11_6, Msg_11_7, Msg_11_8 },
                                              { Msg_12_1, Msg_12_2, Msg_12_3, Msg_12_4, Msg_12_5, Msg_12_6, Msg_12_7, Msg_12_8 },
                                              { Msg_13_1, Msg_13_2, Msg_13_3, Msg_13_4, Msg_13_5, Msg_13_6, Msg_13_7, Msg_13_8 },
                                              { Msg_14_1, Msg_14_2, Msg_14_3, Msg_14_4, Msg_14_5, Msg_14_6, Msg_14_7, Msg_14_8 }};

#define FPSTR(pstr) (const __FlashStringHelper*)(pstr)  // Макрос для преобразования PGM-строк
String Message_11_14 = "";

String Macros_11_14(uint8_t _Array, uint8_t _NumberOfArray){
  String _Message_11_14 = "";

  _Message_11_14 += FPSTR(pgm_read_word((&Msg_11_14  [ _Array ] [ _NumberOfArray ])));
  
  return _Message_11_14;
}

void setup() {
Serial.begin(9600);
String Message_11_14  = Macros_11_14(3, 7);
Serial.println(Message_11_14);
}

void loop() {
}

Огромная благодарность Komandir за помощь.