И снова PROGMEM

Vik648
Offline
Зарегистрирован: 22.10.2015

Знаю что уже в миллионный раз поднимается тема и со строками все выходит и с чтением элементов массива, но вот в следующей задаче не получается никак.

const uint8_t mas1[] PROGMEM = {4,5,6};

const uint8_t mas2[] PROGMEM = {7,8,9};

const uint8_t * const arrays[] PROGMEM = {mas1,mas2};

Мне в зависимости от выбранного индекса в массиве arrays нужно перебирать элементы соответствующего массива, как это сделать?

sadman41
Offline
Зарегистрирован: 19.10.2016

Если подмассивы будут одной размерности, то почему просто двумерный массив не использовать?

Vik648
Offline
Зарегистрирован: 22.10.2015

Разной размерности и часть 8 битные так и часть 16 битные

sadman41
Offline
Зарегистрирован: 19.10.2016

Придумали себе занятие, конечно. Как будете отличать подмассив с однобайтными элементами от подмассива с двубайтными и где собрались их размерности хранить?

Vik648
Offline
Зарегистрирован: 22.10.2015

Нет , у меня будет

arrays1 с. 8 битными массивами

arrays2 с их размерами ( можно не в прогмем)

arrays 3 с 16-ти битными

arrays4 с их размерами(можно не в прогмем)

           

Schwarz78
Offline
Зарегистрирован: 19.01.2019

Vik648 пишет:

 как это сделать?

Например так:

void setup() {

const uint8_t * ar_mas1,* ar_mas2;
uint8_t x, y;

  ar_mas1 = arrays[0];
  ar_mas2 = arrays[1];
  x = ar_mas1[0];
  y = ar_mas2[0];

}

Или так:

void setup() {

uint8_t x, y;

  x = arrays[0][0];
  y = arrays[1][0];
}

 

Vik648
Offline
Зарегистрирован: 22.10.2015

Хм, как то не очень красиво но вроде работает)