Слишком много инициализаторов для 2D-массива (Arduino IDE)

#arrays #matrix #arduino #initializer

#массивы #матрица #arduino #инициализатор

Вопрос:

В настоящее время я работаю над программой светодиодной матрицы 8×8 и наткнулся на код, который использует матричный движок 8×10.

РЕДАКТИРОВАТЬ ‘A’ и ‘R’ являются определенными заданными строками:

 #define A     {B00000000,B00111100,B01000010,B01000010,B01000010,B01111110,B01000010,B01000010,B01000010,B00000000}
  

и #define R {B00000000,B00111100,B01000010,B01000010,B01000010,B01111100,B01000100,B01000010,B01000010,B00000000}

В настоящее время я пытаюсь изменить эту строку (матричный массив 8×10)

 const int numPatterns = 16;//this is the number of patterns you want to display
byte patterns[numPatterns][10]={A,R,A,R,A,R,A,R,A,R,A,R};// the patterns order
  

К этому:

 const int numPatterns = 16;//this is the number of patterns you want to display
byte patterns[numPatterns][8]={A,R,A,R,A,R,A,R,A,R};// the patterns order
  

Тем не менее, он продолжает выдавать мне ошибку, я сам пытался понять концепции 2D-массивов на других языках, за исключением моего базового опыта в этой среде IDE, похоже, ему не нравятся какие-либо реальные изменения в 2D-массивах.

Комментарии:

1. Я отредактировал свой пост, надеюсь, теперь это имеет больше смысла.

Ответ №1:

Это работает:

 #define A {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
#define R {21, 22, 23, 24, 25, 26, 27, 28, 29, 30}

const int numPatterns = 16;//this is the number of patterns you want to display
byte patterns[numPatterns][10]={A,R,A,R,A,R,A,R,A,R,A,R};// the patterns order
  

Изменение «10» на «8» вызывает сообщение об ошибке.

Это также работает:

 #define A {1, 2, 3, 4, 5, 6, 7, 8}
#define R {21, 22, 23, 24, 25, 26, 27, 28}

const int numPatterns = 16;//this is the number of patterns you want to display
byte patterns[numPatterns][8]={A,R,A,R,A,R,A,R,A,R,A,R};// the patterns order
  

Количество элементов в каждом из A и R должно соответствовать второму измерению в объявлении массива. Чтобы получить 8 на 8, вам также придется ограничить общее количество элементов «A» или «R» в шаблонах не более 8.

Комментарии:

1. Извините, забыл написать, что такое «A» и «R», я сомневаюсь, что это решит мою проблему, потому что вы переопределяете «A» и «R» (я виноват, что не опубликовал их определения)

2. Патриция прибила это к голове, у ваших A и R слишком много элементов. Часть «8» шаблонов [numPatterns] [8] гласит, что A и R должны содержать 8 элементов, а найденный вами код определяет 10.

3. @user3739406 В 8-элементном массиве не может быть столько элементов, сколько в 10-элементном массиве. Вам нужно либо сохранить размер массива, либо переопределить A и R, чтобы соответствовать.