Работа с матричной клавиатурой 4×4 и Arduino (обучение работе с Proteus)
Данная статья написана специально для обучения работе с симулятором Proteus и предназначена для пошагового понимания принципов работы с матричной клавиатурой 4×4 на базе Arduino.
Проект позволяет на практике разобраться, как происходит опрос клавиш, как используется готовая библиотека Keypad, и как проверить работу схемы без подключения реального оборудования.
В качестве результата вы получите полностью рабочий проект в 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 — мигание светодиода