Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Только три контакта для клавиатуры 4x3

Компоненты и расходные материалы

Резистор 330 Ом
× 1
Резистор 1 кОм
× 3
Резистор 3 кОм
× 1
Матрица 4x3 матрица 12 клавишная панель переключения массива
× 1
Arduino UNO
× 1

Необходимые инструменты и машины

Паяльник (универсальный)

Приложения и онлайн-сервисы

IDE Arduino

Об этом проекте

Введение

Цель этого проекта - значительно уменьшить количество контактов, необходимых для цифровой клавиатуры. Это связано с тем, что нам часто требуется больше контактов ввода-вывода по сравнению с теми, которые доступны на 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); } 

Схема


Производственный процесс

  1. Анимация светодиодной матрицы RGB в Excel для WS2812
  2. Сигнал тревоги для растений, предупреждающий о жажде
  3. Итальянские часы со словами
  4. Счетчик кВтч Sigfox
  5. Монитор температуры Bluetooth
  6. Блокировка, управляемая жестами
  7. Компаньон IC
  8. USB-MIDI-адаптер
  9. Изолированный аналоговый вход для Arduino
  10. Измерьте время реакции