#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, чтобы соответствовать.