Оглавление:

Использование цифровых клавиатур с Arduino: 4 шага
Использование цифровых клавиатур с Arduino: 4 шага

Видео: Использование цифровых клавиатур с Arduino: 4 шага

Видео: Использование цифровых клавиатур с Arduino: 4 шага
Видео: Матричные клавиатуры 2024, Ноябрь
Anonim
Использование цифровых клавиатур с Arduino
Использование цифровых клавиатур с Arduino

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

Рекомендуемые: