Только три контакта для клавиатуры 4x3
Компоненты и расходные материалы
| × | 1 | ||||
| × | 3 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Необходимые инструменты и машины
|
Приложения и онлайн-сервисы
|
Об этом проекте
Введение
Цель этого проекта - значительно уменьшить количество контактов, необходимых для цифровой клавиатуры. Это связано с тем, что нам часто требуется больше контактов ввода-вывода по сравнению с теми, которые доступны на Arduino Uno или Nanoboards.
Обычные цифровые клавиатуры имеют матричную структуру:клавиатура 4x3, требует 4 + 3 цифровых контакта Arduino. В сети доступно множество библиотек для использования с Arduino.
Мое решение
Предлагаемое мной решение намного лучше, поскольку оно использует только три аналоговых входа со схемой, подобной показанной на следующем рисунке.
Для каждого столбца есть только 4 значения напряжения, соответствующие каждой из 4 клавиш, плюс ноль вольт, если никакая клавиша не нажата. В эквивалентной схеме (b) R1e обозначает один из четырех резисторов R1-R4, а R2e - один из трех резисторов R5-R7.
Теперь посмотрим, как сделать четыре максимально широких интервала. Прежде всего, резисторы R2e =R5 =R6 =R7 можно сделать равными, затем мы можем установить R1 =0, чтобы на выходах, соответствующих первой линии, было 5 Вольт.
При R2 =330 Ом, R3 =1 кОм, R4 =3 кОм и R5, R6, R7 =1 кОм для каждого выхода получаются следующие интервалы:
Как видите, интервалы на трех выходах являются максимально возможными, и вы можете использовать шесть стандартных резисторов с допуском ± 5%. С дополнительным аналоговым входом и еще одним резистором можно использовать клавиатуру 4x4 и так далее. На следующем рисунке показаны соединения с Arduino.
На схеме резистор R1 подключен к линии 2, потому что резистор на линии 1 протянул его вместе с проводом, поэтому ссылки на резисторы были увеличены на единицу. Назначение контактов может быть изменено в соответствии с потребностями, если они конфигурируются как аналоговые.
Конечно, если Arduino запитан от 3,3 В, ничего не изменится, потому что преобразователь АЦП по умолчанию использует напряжение питания, а номера АЦП не меняются.
Чтобы протестировать программу, не имея клавиатуры этого типа, я построил ее с переработанными клавишами, на рисунке ниже показан мой прототип. Правый 5-контактный разъем используется для подключения к Arduino.
Код
- Analog4x3Keybf.ino
Analog4x3Keybf.ino Arduino
Простая программа для проверки функции KeyPad ()/ * программа Analog4x3Keybf * тест для клавиатуры с 4x3 клавишами с 3 аналоговыми выходами * G. Carrera - 19/11/2018 * /// пределы значений вывода клавиатуры:const int NADCm100 [4 ] ={923,669,412,156}; const int NADCp100 [4] ={1123,869,612,356}; ключ const char [13] ={'1', '4', '7', 'C', '2', '5' , '8', '0', '3', '6', '9', 'E'}; int keyval [3]; int i, colp, val; void setup () {Serial.begin (9600); // используется с последовательным монитором} void loop () {char k; k =KeyPad (); // считываем клавиатуру if (k! ='N') {// была нажата клавиша Serial.print ("key ="); Serial.println (k); задержка (500); }} / ******** Функции, используемые программой ******** / char KeyPad () {// чтение с клавиатуры и возвращение символьной клавиши // key ='N', если нет KeyScan (); // считываем аналоговую клавиатуру if (keyval [0] + keyval [1] + keyval [2] <40) {return 'N'; } else {// была нажата клавиша delay (10); // antibounce KeyScan (); // повторно считываем аналоговую клавиатуру for (i =0; i <3; i ++) {// определяем, к какому столбцу она принадлежит if (keyval [я]> 40) {colp =я; val =keyval [i]; // это соответствующее значение для (int j =0; j <4; j ++) {// определить, какая клавиша была нажата в столбце if (val> =NADCm100 [j] &&keyval <=NADCp100 [j]) {ключ возврата [colp * 4 + j]; ломать; }}}}}} void KeyScan () {// читать аналоговую клавиатуру keyval [0] =analogRead (A0); задержка (1); keyval [1] =analogRead (A1); задержка (1); keyval [2] =analogRead (A2); задержка (1); }
Схема
Производственный процесс
- Анимация светодиодной матрицы RGB в Excel для WS2812
- Сигнал тревоги для растений, предупреждающий о жажде
- Итальянские часы со словами
- Счетчик кВтч Sigfox
- Монитор температуры Bluetooth
- Блокировка, управляемая жестами
- Компаньон IC
- USB-MIDI-адаптер
- Изолированный аналоговый вход для Arduino
- Измерьте время реакции