Может кто-нибудь объяснить мне, что означает этот код:
byte rowPins[numRows] = {9, 8, 7, 6}; //Rows 0 to 3
byte colPins[numCols]= {5, 4, 3, 2}; //Columns 0 to 3
Как они получают количество {9, 8, 7, 6}
а также {5, 4, 3, 2}
, Вот полный код:
/*4x4 Matrix Keypad connected to Arduino
This code prints the key pressed on the keypad to the serial port*/
#include <Keypad.h>
const byte numRows= 4; //number of rows on the keypad
const byte numCols= 4; //number of columns on the keypad
//keymap defines the key pressed according to the row and columns just as appears on the keypad
char keymap[numRows][numCols]= {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
//Code that shows the the keypad connections to the arduino terminals
byte rowPins[numRows] = {9, 8, 7, 6}; //Rows 0 to 3
byte colPins[numCols]= {5, 4, 3, 2}; //Columns 0 to 3
//initializes an instance of the Keypad class
Keypad myKeypad= Keypad(makeKeymap(keymap), rowPins, colPins, numRows, numCols);
void setup() {
Serial.begin(9600);
}
//If key is pressed, this key is stored in 'keypressed' variable
//If key is not equal to 'NO_KEY', then this key is printed out
//if count=17, then count is reset back to 0 (this means no key is pressed during the whole keypad scan process
void loop() {
char keypressed = myKeypad.getKey();
if (keypressed != NO_KEY) {
Serial.print(keypressed);
}
}
Все в коде кажется простым для понимания. Вместе с комментарием это ясно, как кристалл. Но, как вы сказали, вам нужно объяснение, я дам ответ:
const byte numRows= 4; //number of rows on the keypad
const byte numCols= 4; //number of columns on the keypad
В приведенном выше фрагменте кода две байтовые переменные будут объявлены с именем numRows
а также numCols
и инициализировал каждый значением 4.
byte rowPins[numRows] = {9, 8, 7, 6}; //Rows 0 to 3
byte colPins[numCols]= {5, 4, 3, 2}; //Columns 0 to 3
Итак, вот код, в котором вы застряли. Двухбайтовый массив будет объявлен с именем rowPins
а также colPins
каждый размером 4 (так как значение numRows
а также numCols
4). Который будет в диапазоне от 0 до 3 (как массив в C или Java). В этих числах 9,8,7,6 будет присвоено массиву rowPins
и 5,4,3,2 будут назначены массиву colPins
, Теперь, как или где эти значения будут. Они будут храниться последовательно от индекса 0 до индекса 3. т.е.
rowPins[0]=9
rowPins[1]=8
rowPins[2]=7
rowPins[3]=6
colPins[0]=5
colPins[1]=4
colPins[2]=3
colPins[3]=2
Вот как они получают эти цифры.
Они не получают номера, которые назначают на контакты Arduino 2,3,4,5,6,7,8,9
byte rowPins[numRows] = {9, 8, 7, 6}; //Rows 0 to 3
byte colPins[numCols]= {5, 4, 3, 2}; //Columns 0 to 3
Вы также можете использовать 4,5,6,7,8,9,10,11 булавки тоже. Просто проверьте, какие выводы вы назначаете для ввода строки и столбца, а затем напишите код в соответствии с ним.