Оглавление:
- Шаг 1. Начало работы
- Шаг 2. Использование 12-значной клавиатуры
- Шаг 3. Использование 16-значной клавиатуры
- Шаг 4: Пример проекта - система доступа по PIN-коду
Видео: Использование цифровых клавиатур с Arduino: 4 шага
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
Цифровые клавиатуры могут предоставить конечному пользователю простую альтернативу различным интерфейсам для ваших проектов. Или, если вам нужно много кнопок, они могут сэкономить вам много времени в отношении строительства. Мы рассмотрим их подключение с помощью библиотеки Arduino, а затем закончим с полезным примером эскиза.
Шаг 1. Начало работы
Независимо от того, откуда вы берете свои клавиатуры, убедитесь, что вы можете получить лист данных - это упростит жизнь при их подключении. Например - изображение в этом шаге.
Лист данных важен, поскольку он скажет вам, какие контакты или разъемы на клавиатуре предназначены для строк и столбцов. Если у вас нет таблицы данных, вам нужно будет вручную определить, какие контакты относятся к строкам и столбцам.
Это можно сделать с помощью функции непрерывности мультиметра (зуммера). Начните с размещения одного датчика на контакте 1, другого датчика на контакте 2 и нажимайте клавиши по очереди. Запишите, когда кнопка завершает цепь, затем переходите к следующему выводу. Скоро вы узнаете, что есть что. Например, в данном примере контакты 1 и 5 клавиатуры предназначены для кнопки «1», 2 и 5 - для кнопки «4» и т. Д.
На этом этапе загрузите и установите библиотеку Arduino для клавиатуры. Теперь мы продемонстрируем, как использовать обе клавиатуры на простых примерах.
Шаг 2. Использование 12-значной клавиатуры
Мы будем использовать маленькую черную клавиатуру, Arduino Uno-совместимый и ЖК-дисплей с интерфейсом I2C для отображения. Если у вас нет ЖК-дисплея, вы всегда можете отправить текст на монитор последовательного порта.
Подключите ЖК-дисплей, затем подключите клавиатуру к Arduino следующим образом: ряд клавиатуры 1 к цифровому Arduino 5 ряд клавиатуры 2 к цифровому Arduino 4 ряду 3 клавиатуры к цифровому Arduino 3 ряду 4 клавиатуры к цифровому Arduino 2 столбцу клавиатуры 1 к цифровому Arduino 8 столбцу клавиатуры 2 к Цифровая клавиатура Arduino 7: от колонки 3 до цифровой клавиатуры Arduino 6. Если ваша клавиатура отличается от нашей, обратите внимание на линии на эскизе:
// определение типа клавиатуры
Так же нужно изменить числа в массивах rowPins [ROWS] и colPins [COLS]. Вы вводите цифровые пин-коды, подключенные к строкам и столбцам клавиатуры соответственно.
Кроме того, клавиши массива хранят значения, отображаемые на ЖК-дисплее при нажатии определенной кнопки. Вы можете видеть, что мы сопоставили ее с используемой физической клавиатурой, однако вы можете изменить ее на все, что вам нужно. Но пока введите и загрузите следующий эскиз, как только вы будете удовлетворены назначением номеров строк / выводов:
/ * Цифровая клавиатура и ЖК-дисплей I2C https://tronixstuff.com Использует библиотеку клавиатуры для Arduino https://www.arduino.cc/playground/Code/Keypad от Марка Стэнли, Александра Бревига * /
#include "Keypad.h"
#include "Wire.h" // для ЖК-дисплея I2C #include "LiquidCrystal_I2C.h" // для ЖК-модуля с шиной I2C // https://www.dfrobot.com/wiki/index.php/I2C/TWI_LCD1602_Module_(SKU: _DFR0063) ЖК-дисплей LiquidCrystal_I2C (0x27, 16, 2); // устанавливаем адрес ЖК-дисплея на 0x27 для 16-символьного и 2-строчного дисплея
// определение типа клавиатуры
const byte ROWS = 4; // четыре строки const byte COLS = 3; // трехколоночные символьные ключи [ROWS] [COLS] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}};
byte rowPins [ROWS] = {
5, 4, 3, 2}; // подключаемся к выводам строки байта клавиатуры colPins [COLS] = {8, 7, 6}; // подключаемся к распиновке колонки клавиатуры
int count = 0;
Keypad keypad = Keypad (makeKeymap (keys), rowPins, colPins, ROWS, COLS);
установка void ()
{lcd.init (); // инициализируем ЖК-дисплей lcd.backlight (); // включаем подсветку ЖК-дисплея}
пустой цикл ()
{char key = keypad.getKey (); если (ключ! = NO_KEY) {lcd.print (ключ); count ++; если (счетчик == 17) {lcd.clear (); count = 0; }}}
А результаты скетча показаны на видео. Итак, теперь вы можете увидеть, как нажатия кнопок могут быть преобразованы в данные для использования в эскизе. Теперь мы повторим эту демонстрацию с большей клавиатурой.
Шаг 3. Использование 16-значной клавиатуры
Мы будем использовать более крупную клавиатуру 4 × 4, несовместимую с Arduino и для замены ЖК-дисплея I2C от Akafugu для отображения. Опять же, если у вас нет ЖК-дисплея, вы всегда можете вместо этого отправить текст на монитор последовательного порта. Подключите ЖК-дисплей, а затем подключите клавиатуру к Arduino следующим образом:
- Ряд клавиатуры 1 (контакт восемь) к Arduino digital 5
- Ряд клавиатуры 2 (контакт 1) к Arduino digital 4
- Ряд клавиатуры 3 (контакт 2) к Arduino digital 3
- Ряд клавиатуры 4 (контакт 4) к Arduino digital 2
- Столбец клавиатуры 1 (контакт 3) к Arduino digital 9
- Столбец клавиатуры 2 (контакт 5) к Arduino digital 8
- Столбец клавиатуры 3 (контакт 6) к Arduino digital 7
- Столбец клавиатуры 4 (вывод 7) к Arduino digital 6
Теперь что касается скетча - обратите внимание, как мы приспособили для большей цифровой клавиатуры: дополнительный столбец в массиве char keys дополнительный вывод в массиве colPins и байт COLS = 4.
/ * Цифровая клавиатура и ЖК-дисплей I2C https://tronixstuff.com Использует библиотеку клавиатуры для Arduino https://www.arduino.cc/playground/Code/Keypad от Марка Стэнли, Александра Бревига * /
#include "Keypad.h"
#include "Wire.h" // для ЖК-дисплея I2C #include "TWILiquidCrystal.h" // https://store.akafugu.jp/products/26 LiquidCrystal lcd (12, 11, 5, 4, 3, 2);
const byte ROWS = 4; // четыре строки
константный байт COLS = 4; // четыре символьных ключа столбцов [ROWS] [COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}}; byte rowPins [ROWS] = {5, 4, 3, 2}; // подключаемся к выводам строки байта клавиатуры colPins [COLS] = {9, 8, 7, 6}; // подключаемся к выводам столбцов клавиатуры int count = 0;
Keypad keypad = Keypad (makeKeymap (keys), rowPins, colPins, ROWS, COLS);
установка void ()
{Serial.begin (9600); lcd.begin (16, 2); lcd.print («Тест клавиатуры!»); задержка (1000); lcd.clear (); }
пустой цикл ()
{char key = keypad.getKey (); если (ключ! = NO_KEY) {lcd.print (ключ); Serial.print (ключ); count ++; если (счетчик == 17) {lcd.clear (); count = 0; }}}
И снова вы можете увидеть результаты скетча выше на видео.
Теперь для примера проекта, который, вероятно, является наиболее востребованным использованием цифровой клавиатуры …
Шаг 4: Пример проекта - система доступа по PIN-коду
Наиболее востребованным использованием цифровой клавиатуры является приложение в стиле «PIN», когда Arduino получает указание делать что-то на основе правильного числа, вводимого в клавиатуру. В следующем эскизе используется оборудование, описанное для предыдущего эскиза, и реализована система ввода шестизначного PIN-кода.
Выполняемые действия могут быть вставлены в функции correPIN () и invalidPIN (). И PIN устанавливается в массиве char PIN [6]. Приложив немного дополнительных усилий, вы также можете создать свою собственную функцию смены PIN-кода.
// ПИН-код с 16-значной цифровой клавиатурой // https://tronixstuff.com #include "Keypad.h" #include #include LiquidCrystal lcd (12, 11, 5, 4, 3, 2);
const byte ROWS = 4; // четыре строки
константный байт COLS = 4; // четыре символьных ключа столбца [ROWS] [COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}}; byte rowPins [ROWS] = {5, 4, 3, 2}; // подключаемся к выводам строки байта клавиатуры colPins [COLS] = {9, 8, 7, 6}; // подключаемся к распиновке колонки клавиатуры
Keypad keypad = Keypad (makeKeymap (keys), rowPins, colPins, ROWS, COLS);
символ PIN [6] = {
«1», «2», «А», «D», «5», «6»}; // наш секретный (!) номер попытка символа [6] = {'0', '0', '0', '0', '0', '0'}; // используется для сравнения int z = 0;
установка void ()
{Serial.begin (9600); lcd.begin (16, 2); lcd.print («Блокировка PIN-кода»); задержка (1000); lcd.clear (); lcd.print («Введите ПИН-код…»); }
void correctivePIN () // делаем это, если введен правильный PIN
{lcd.print ("* правильный PIN *"); задержка (1000); lcd.clear (); lcd.print («Введите PIN…»); }
void invalidPIN () // делаем это, если введен неверный PIN
{lcd.print ("* Попробуйте еще раз *"); задержка (1000); lcd.clear (); lcd.print («Введите PIN…»); }
void checkPIN ()
{int правильно = 0; int i; for (i = 0; i <6; i ++) {
if (попытка == PIN )
{правильный ++; }} если (правильное == 6) {правильное ПИН (); } еще {неверный ПИН (); }
for (int zz = 0; zz <6; zz ++) {попытка [zz] = '0'; }}
недействительным readKeypad ()
{char key = keypad.getKey (); если (ключ! = NO_KEY) {попытка [z] = ключ; z ++; переключатель (ключ) {case '*': z = 0; перерыв; case '#': z = 0; задержка (100); // для дополнительной задержки lcd.clear (); checkPIN (); перерыв; }}}
пустой цикл ()
{readKeypad (); }
Проект демонстрируется на видео.
Итак, теперь у вас есть возможность использовать клавиатуру с двенадцатью и шестнадцатью кнопками с вашими системами Arduino. Я уверен, что в ближайшем будущем вы придумаете что-то полезное и интересное с использованием клавиатур.
Этот пост предоставлен pmdway.com - все для производителей и любителей электроники с бесплатной доставкой по всему миру.
Рекомендуемые:
Интерфейс Yaesu FT-100 PC Link для цифровых режимов: 3 шага
Интерфейс связи с ПК Yaesu FT-100 для цифровых режимов: Здесь я представляю рекомендации по созданию интерфейса связи с ПК для Yaesu FT-100. Этот интерфейс позволяет передавать и принимать аудиосигналы от звуковой карты для работы в цифровых режимах HAM (FT8, PSK31 и т. Д.). Доступна дополнительная информация
ЖК-дисплей I2C / IIC - Использование ЖК-дисплея SPI для ЖК-дисплея I2C Использование модуля SPI-IIC с Arduino: 5 шагов
ЖК-дисплей I2C / IIC | Используйте ЖК-дисплей SPI для ЖК-дисплея I2C Использование модуля SPI-IIC с Arduino: Привет, ребята, так как обычный ЖК-дисплей SPI 1602 имеет слишком много проводов для подключения, поэтому его очень сложно связать с Arduino, но на рынке доступен один модуль, который может преобразовать дисплей SPI в дисплей IIC, поэтому вам нужно подключить только 4 провода
Сетевой светодиодный матричный дисплей Mirolo для цифровых вывесок: 22 шага (с изображениями)
Сетевой светодиодный матричный дисплей Mirolo для цифровых вывесок: цифровые вывески могут быть полезны на мероприятиях, чтобы информировать посетителей о предстоящих панелях, изменениях в расписании или динамически предоставлять информацию. Использование светодиодных матричных дисплеев для этого делает сообщения читаемыми даже издалека и привлекает внимание, например
Наследие - керамика в контексте цифровых и аналоговых технологий 2015: 3 шага (с изображениями)
Наследие - керамика в контексте цифровых и аналоговых технологий 2015: До сих пор керамика была ремеслом, не имевшим большого цифрового влияния. По этой причине было интересно соединить это ремесло с новой технологией. Отправной точкой была древняя форма и стилорез с ЧПУ
Дистанционный спуск затвора для цифровых фотоаппаратов: 4 шага
Дистанционный спуск затвора для цифровых фотоаппаратов: сделайте дистанционный спуск затвора для цифровой камеры Canon (и некоторых других брендов, таких как Pentax, sony и некоторые nikons) примерно за 3 доллара менее чем за 5 минут, даже первоклассник может это сделать. Это отлично подходит для получения идеальной экспозиции и позволяет