Корзина пуста
Наиболее популярные клавиатуры для Arduino– 16-ти кнопочные. Они позволяют опрашивать16 кнопок всего лишь 8-ю пинами. Используются обычно в проектах с вводом чисел: калькуляторах, кодовых замках. Наиболее распространены два варианта:
Рис.1
Рис.2
Данная клавиатура(Рис 2.) представляет собой матрицу кнопок, то есть кнопки стоящие на пересечении проводов (в этом случае – дорожек). Схема представлена ниже. Она построена на мембранных кнопках и включает в себя все их достоинства и недостатки (мягкость, тонкий корпус). Аналог (Рис 1.) можно найти по ссылке: http://umnaya-elektronika.ru/market/5/modul_klavat... .
Рис.3
Алгоритм
работы с такой матрицей следующий:
- Назначаем пины 5-8 на выход, а 1-4 на вход, создаем двухмерный массив типа char и вносим в него символы или числа, соответствующие нашим кнопкам.
- Подаем на 5-й пин логический 0, записываем его в переменную, на 6,7,8 – логическую 1
- Считываем сигнал с 1-го пина, если 0, то записываем его в переменную, если 1, то перебираем 2,3и 4 пины с тем же условием.
Так мы выясним, нажата ли какая-нибудь кнопка в 1-ом столбце. 0 на 1-ом пине соответствует нажатая кнопка 1-го столбца 1-ой строки, 0 на 2-ом – нажатая кнопка 1-го столбца 2-ой строки и т.д.
- Повторяем операции 2) и 3) для 6,7 и 8 пинов
- В результате получим координаты кнопки: 1-я переменная хранит номер столбца, 2-я переменная хранит номер строки. Записываем эти переменные в массив как аргументы и получаем символ или число соответствующее нажатой кнопке.
ПРИМЕР ПРОГРАММЫ:
/* @file CustomKeypad.pde || @version 1.0 || @author Alexander Brevig || @contact alexanderbrevig@gmail.com || || @description || | Demonstrates changing the keypad size and key values. || # */ #include <keypad.h> const byte ROWS = 4; //four rows const byte COLS = 4; //four columns //define the cymbols on the buttons of the keypads char hexaKeys[ROWS][COLS] = { {'1','2','3','A'}, {'4','5','6','B'}, {'7','8','9','C'}, {'*','0','#','D'} }; byte rowPins[ROWS] = {9, 8, 7, 6}; //connect to the row pinouts of the keypad byte colPins[COLS] = {5, 4, 3, 2}; //connect to the column pinouts of the keypad 9, 8, 7, 6 //initialize an instance of class NewKeypad Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); void setup(){ Serial.begin(9600); } void loop(){ char customKey = customKeypad.getKey(); if (customKey){ Serial.println(customKey); } }</keypad.h>
У данной библиотеки есть один подводный камень. В ней по умолчанию стоит ограничение в 10 строк и 10 столбцов. Это ограничит вашу матрицу размером 10х10 кнопок. Но если вам все же нужно подключить матрицу большего размера, то особо отчаянные могут в коде библиотеки найти это ограничивающее значение (оно устанавливается как #define) и изменить его на любое им угодное.
Ссылки:
http://mypractic.ru/urok-18-podklyuchenie-matricy-...
https://elekt.kz/arduino/modules-and-sensors/the-c...
https://lesson.iarduino.ru/page/urok-13-podklyuche...
Габариты (Д х Ш х В):
161мм х 70мм х 2,54мм
Вес:
6.7г.
Сообщения не найдены