Матричная клавиатура 4х1

Описание

Матричная клавиатура на 4 кнопки. Отличается своей малой толщиной (1-2мм) и высокой надежностью в работе. Обратная сторона снабжена клейкой поверхностью. Габаритные размеры: 20х70мм

Технические характеристики

  • Количество кнопок: 4

Физические размеры

  • Клавиатура (Д х Ш х В): 20 х 69 х 1 мм
  • Соединение (Д х Ш х В): 89 х 14 х 3 мм

Плюсы использования

  • Простое и недорогое решение
  • Прост в подключении

Минусы использования

  • Малое количество кнопок

Примеры подключения и использования

Пример 1: В примере иллюстрируется подключение модуля к контроллеру и получение данных с кнопки с последующим выводом данных в Serial-порт.(Примеры тестировались на контроллере Smart UNO)

Схема подключения:

Скетч для загрузки:

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)

Схема подключения:

Скетч для загрузки:

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