Работа с матричной клавиатурой 4×4 и Arduino (обучение работе с Proteus)

Данная статья написана специально для обучения работе с симулятором Proteus и предназначена для пошагового понимания принципов работы с матричной клавиатурой 4×4 на базе Arduino.
Проект позволяет на практике разобраться, как происходит опрос клавиш, как используется готовая библиотека Keypad, и как проверить работу схемы без подключения реального оборудования.

Работа с клавиатурой 4×4

В качестве результата вы получите полностью рабочий проект в Proteus, в котором нажатия клавиш на виртуальной клавиатуре будут выводиться в Serial Monitor.

Назначение проекта

Проект демонстрирует базовые принципы работы с матричными клавиатурами и может использоваться как основа для:

  • калькуляторов;
  • кодовых замков;
  • меню навигации;
  • систем ввода паролей;
  • проектов с LCD-дисплеями и пользовательским вводом.

Использование Proteus позволяет полностью отладить логику работы до сборки схемы «в железе».

Необходимые компоненты

  • Arduino UNO;
  • Матричная клавиатура 4×4;
  • Proteus 8 или 9 с установленной Arduino-библиотекой;
  • Библиотека Keypad;
  • Serial Monitor (встроенный в Arduino IDE).

Что такое матричная клавиатура

Матричная клавиатура состоит из строк и столбцов. В клавиатуре 4×4:

  • 4 строки (ROWS);
  • 4 столбца (COLS);

Каждая кнопка замыкает определённую строку и столбец. Arduino поочерёдно опрашивает линии и определяет, какая клавиша нажата. Такой подход позволяет использовать меньше пинов по сравнению с отдельным подключением каждой кнопки.

Подключение клавиатуры к Arduino

В данном проекте используется следующее подключение:

  • Строки клавиатуры → пины 2, 3, 4, 5 Arduino;
  • Столбцы клавиатуры → пины 6, 7, 8, 9 Arduino.

Важно соблюдать порядок пинов, так как он напрямую связан с массивом символов в программе.

Принцип работы программы

В скетче используется библиотека Keypad.h, которая полностью берёт на себя:

  • опрос строк и столбцов;
  • устранение дребезга контактов;
  • определение нажатой клавиши.

В начале программы задаётся карта клавиш — двумерный массив, который определяет, какой символ соответствует каждой кнопке.

В основном цикле выполняется функция getKey(), которая возвращает символ нажатой клавиши или NULL, если нажатий нет. При обнаружении нажатия символ выводится в Serial Monitor.

Arduino-скетч

#include <Keypad.h>

const byte ROWS = 4;
const byte COLS = 4;

char keys[ROWS][COLS] = {
  {'7','8','9',':'},
  {'4','5','6','x'},
  {'1','2','3','-'},
  {'C','0','=','+'}
};

byte rowPins[ROWS] = {2, 3, 4, 5};
byte colPins[COLS] = {6, 7, 8, 9};

Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);

void setup() {
  Serial.begin(9600);
}

void loop() {
  char key = keypad.getKey();
  if (key) {
    Serial.println(key);
  }
}

Запуск проекта в Proteus

Для запуска проекта в Proteus выполните следующие шаги:

  • распакуйте архив с проектом;
  • откройте файл .pdsprj;
  • проверьте, что Arduino UNO содержит путь к .hex файлу;
  • запустите симуляцию кнопкой Run;
  • нажимайте кнопки на виртуальной клавиатуре;
  • наблюдайте символы в окне Serial Monitor.

Важно: значения выводятся только при нажатии клавиш. Если клавиша не нажата, в Serial Monitor ничего не отображается.

Файлы проекта

В конце статьи доступен архив, содержащий:

  • .ino — исходный код Arduino;
  • .hex — скомпилированный файл для Proteus;
  • .pdsprj — проект Proteus.
Все файлы находятся в одной папке, что исключает ошибки с путями.

Данный пример рекомендуется использовать как базу для проектов с дисплеями, кодовыми замками и пользовательским интерфейсом.

Если что-то не работает

Если у вас возникают сложности с запуском проекта или вы не уверены в базовых шагах, рекомендуется сначала пройти вводный урок.

Подробно разобран первый проект в Proteus:
Первый проект в Proteus — мигание светодиода

📁 Скачать примеры