Эта страница только для чтения. Вы можете посмотреть исходный текст, но не можете его изменить. Сообщите администратору, если считаете, что это неправильно. ====== Матричная клавиатура 4х1 ====== ===== Описание ===== Матричная клавиатура на 4 кнопки. Отличается своей малой толщиной (1-2мм) и высокой надежностью в работе. Обратная сторона снабжена клейкой поверхностью. Габаритные размеры: 20х70мм ==== Технические характеристики ==== * Количество кнопок: 4 ==== Физические размеры ==== * Клавиатура (Д х Ш х В): 20 х 69 х 1 мм * Соединение (Д х Ш х В): 89 х 14 х 3 мм ==== Плюсы использования ==== * Простое и недорогое решение * Прост в подключении ==== Минусы использования ==== * Малое количество кнопок ===== Примеры подключения и использования ===== **Пример 1:** В примере иллюстрируется подключение модуля к контроллеру и получение данных с кнопки с последующим выводом данных в Serial-порт.(Примеры тестировались на контроллере Smart UNO) ^ Что нужно ^ Кол-во, шт ^ | [[https://smartelements.ru/collection/kontrollery/product/kontroller-smart-uno|Контроллер Smart UNO]] | 1 | | [[https://smartelements.ru/collection/moduli/product/matrichnaya-klaviatura-4h1|Матричная клавиатура 4х1]] | 1 | | [[https://smartelements.ru/collection/provoda-i-kabeli/product/nabor-provodov-20-sht-20sm-papa-papa|Провода папа-папа]] | 5 | **Схема подключения:** {{ :главная:модули:matrix41.jpg |}} **Скетч для загрузки:** <file Arduino> 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); //вернуть ток на выходной пин } </file> **Пример 2:** В примере иллюстрируется подключение модуля к контроллеру и проверка ввода пользователем пин-кода из 4 цифр. После ввода пинкода, в Serial - порт выводится результат сравнения с эталонным пинкодом (после чего делается вывод о корректности введенного пин-кода).(Примеры тестировались на контроллере Smart UNO) ^ Что нужно ^ Кол-во, шт ^ | [[https://smartelements.ru/collection/kontrollery/product/kontroller-smart-uno|Контроллер Smart UNO]] | 1 | | [[https://smartelements.ru/collection/moduli/product/matrichnaya-klaviatura-4h1|Матричная клавиатура 4х1]] | 1 | | [[https://smartelements.ru/collection/provoda-i-kabeli/product/nabor-provodov-20-sht-20sm-papa-papa|Провода папа-папа]] | 5 | **Схема подключения:** {{ :главная:модули:matrix41.jpg |}} **Скетч для загрузки:** <file Arduino> 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; //вернуть результат } </file>