Как я подключал матричную клавиатуру 4х3 к arduino
Привет!! Сегодня речь пойдет о том как прикрутить к arduino вот такую вот клаву:
Итак что понадобится:
- любая arduina (мини, микро, надо, гига)😀
- библиотека для работы с клавой (можете найти в инете, или скачать под моим видео на ютубу ссылка на него чуть ниже)
- сама клавиатура 4х3 ну можно и 4х4
- Светодиод, серва, LCD, ну или то что есть под рукой.
Купил значит на алише вот тут: http://ali.ski/VeHkyt
сей девайс за 40 рублей (наши рАссийские магазины в край охерели цены ломить), нашел в интернете готовую библиотеку под нее и понеслась!
Включил короче ее вот так:
И давай выяснять, как ее можно использовать и как она работает. Все кто имел дело с ардуино наверняка подключали тактовую кнопку. Принцип работы основан на чтении состояния пина (HIGH или LOW) и по изменению состояния происходит какое-то событие. Клава вместе с библиотекой и вот таким массивом:
(Массив для клавы 4х3)
char hexaKeys[ROWS][COLS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
Работает так:
1) Подключаем библиотеку
2) Определение строк и столбцов
3) Сосздание массива (см. Выше)
4) Назначение пинов для строк и столбов
5) Обьявление класса для клавы
6) Обьявление локальной переменной типа char
7) Запись значения нажатой кнопки в переменную
8) Назначение событий для каждой кнопки
9) Ну и собстно событие для данной кнопки
А теперь подробно:
1) Подключается библиотека (ну это дажу гуманитарии знают как)
2) Определение строк и столбцов
const byte ROWS = 4; // 4 строки
const byte COLS = 3; // 3 столбца
3) Массив смотрите выше
4) Назначение пинов для строк и столбцов. Слева на право по шлейфу клавы - сначало первыми идут строки, затем столбцы.
byte rowPins[ROWS] = {8, 7, 6, 5}; //Подключение пинов строк
byte colPins[COLS] = {4, 3, 2}; // Подключение пинов столбцов
5) Обьявляем класс
Keypad Keypres = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
6-7) В лупе обьявляем переменную типа char, и сразу же ей передаем значение нажатой кнопки.
char Key = Keypres.getKey();
8-9) Назначение события для каждой кнопки. Ну нажал я допустим кнопку 1. Основная переменная которая работает с клавой у меня char, и значения она хранит не цифры, а символы. Но это не беда! Операторам if или switch с ней работать просто. Я выбрал if.
if (Key == '1'){
digitalWrite(LED, HIGH);
}
Как только условие if совпало со значением кнопки, у меня загорается светодиод.
Более подробно тут:
https://youtu.be/cfzE2QLOgBw
Вроде ничего сложного. Итого у меня клава заняла 7 цифровых пинов. Для проектов сойдет более чем. Кстати чтоб не париться за наличием малого числа свободных программируемых пинов есть сдвиговые регистры - занимают примерно 4 пина. А есть такая штука, как PCF8574T
дак она садится на шину I2C к которой можно присобачить овердохера девайсов, дает 8 новых вход/выход пинов. Ну для аналоговой части есть мультиплексоры.
В будующих постах обо всем поговорим.











