Матричная клавиатура 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; //вернуть результат
}