Матричная клавиатура 4х1
Описание
Матричная клавиатура на 4 кнопки. Отличается своей малой толщиной (1-2мм) и высокой надежностью в работе. Обратная сторона снабжена клейкой поверхностью. Габаритные размеры: 20х70мм
Технические характеристики
- Количество кнопок: 4
Физические размеры
- Клавиатура (Д х Ш х В): 20 х 69 х 1 мм
- Соединение (Д х Ш х В): 89 х 14 х 3 мм
Плюсы использования
- Простое и недорогое решение
- Прост в подключении
Минусы использования
- Малое количество кнопок
Примеры подключения и использования
Пример 1: В примере иллюстрируется подключение модуля к контроллеру и получение данных с кнопки с последующим выводом данных в Serial-порт.(Примеры тестировались на контроллере Smart UNO)
Что нужно | Кол-во, шт |
---|---|
Контроллер Smart UNO | 1 |
Матричная клавиатура 4х1 | 1 |
Провода папа-папа | 5 |
Скетч для загрузки:
int PinOut = 8; // пин-выход int PinIn[4] {10, 9, 12, 11}; // пины входа //массив значений кнопок const char value[4] {'1','2','3','4'}; void setup() { //установить выходной пин на вывод pinMode (PinOut, OUTPUT); //установить входные пины на ввод //и подать на них ток for (int i=0; i < 4; i++) { pinMode (PinIn[i], INPUT); digitalWrite(PinIn[i], HIGH); } Serial.begin(9600); // инициализация Serial - порта } void loop() { digitalWrite(PinOut, LOW); //подать 0 на выходной пин for (int i = 1; i <= 4; i++) // обойти цикл по кнопкам (колнкам кнопок) { if (digitalRead(PinIn[i - 1]) == LOW) // если один из указанных портов входа равен 0, то.. { Serial.println(value[i - 1]); // получить значение нажатой кнопки из массива delay(175); } } digitalWrite(PinOut, HIGH); //вернуть ток на выходной пин }
Пример 2: В примере иллюстрируется подключение модуля к контроллеру и проверка ввода пользователем пин-кода из 4 цифр. После ввода пинкода, в Serial - порт выводится результат сравнения с эталонным пинкодом (после чего делается вывод о корректности введенного пин-кода).(Примеры тестировались на контроллере Smart UNO)
Что нужно | Кол-во, шт |
---|---|
Контроллер Smart UNO | 1 |
Матричная клавиатура 4х1 | 1 |
Провода папа-папа | 5 |
Скетч для загрузки:
int PinOut = 8; // пин-выход int PinIn[4] {10, 9, 12, 11}; // пины входа //массив значений кнопок const char value[4] {'1','2','3','4'}; //верный пин-код const char correctPin[4] {'3','3','4','1'}; //массив для ввода пин-кода char inputPin[4]; //позиция введенного с клавиатуры символа int pinPosition = 0; void setup() { //установить выходной пин на вывод pinMode (PinOut, OUTPUT); //установить входные пины на ввод //и подать на них ток for (int i=0; i < 4; i++) { pinMode (PinIn[i], INPUT); digitalWrite(PinIn[i], HIGH); } Serial.begin(9600); // инициализация Serial - порта } void loop() { digitalWrite(PinOut, LOW); //подать 0 на выходной пин for (int i = 1; i <= 4; i++) // обойти цикл по кнопкам (колнкам кнопок) { if (digitalRead(PinIn[i - 1]) == LOW) // если один из указанных портов входа равен 0, то.. { Serial.print("*"); // вывести на экран * inputPin[pinPosition] = value[i-1]; //записать введенный символ в массив вводимого пин-кода if (pinPosition == 3) { //если уже введено 4 символа boolean isCorrectPin = checkIsPinCorrect(); //проверить корректность введенного пин-кода pinPosition = 0; //сбросить позицию в 0 Serial.print(" pin is "); //вывод сообщения if (!isCorrectPin) Serial.println("NOT correct! Please, try one more time!"); //если пин не верен, сообщить об ошибке else Serial.println("correct!"); //если верен сообщить о корректности } else pinPosition = pinPosition + 1; //увеличить позицию вводимых значений delay(175); //задержка } } digitalWrite(PinOut, HIGH); //вернуть ток на выходной пин } //функция проверки корректности введенного пин-кода boolean checkIsPinCorrect() { boolean isCorrect = true; //переменная - результат проверки for(int i=0; i < 4; i++){ //обход массивов пин-кодов //если хоть один символ введен неверно, принимаем решение о неверном вводе всего пин-кода if (inputPin[i] != correctPin[i]) isCorrect = false; } return isCorrect; //вернуть результат }