Оглавление:

Клавиатура приборной панели с ЖК-дисплеем и Arduino Uno: 9 шагов
Клавиатура приборной панели с ЖК-дисплеем и Arduino Uno: 9 шагов

Видео: Клавиатура приборной панели с ЖК-дисплеем и Arduino Uno: 9 шагов

Видео: Клавиатура приборной панели с ЖК-дисплеем и Arduino Uno: 9 шагов
Видео: 7 ПОЛЕЗНЫХ устройств на АРДУИНО, которые можно собрать за 15 минут. 2024, Июль
Anonim
Image
Image
Клавиатура приборной панели с ЖК-дисплеем и Arduino Uno
Клавиатура приборной панели с ЖК-дисплеем и Arduino Uno
Клавиатура приборной панели с ЖК-дисплеем и Arduino Uno
Клавиатура приборной панели с ЖК-дисплеем и Arduino Uno

Это матричная клавиатура, работающая вместе с ЖК-дисплеем и Arduino Uno, самая простая из существующих сегодня. Цель этой настройки - создать программу, которая получает пароль, набранный на матричной клавиатуре, сравнивает его с правильным паролем и отображает сообщение подтверждения на дисплее.

Важно помнить, что и матричная клавиатура, и этот дисплей работают с ESP8266 и ESP32.

Как видите, мы запитываем схему от Arduino через USB, так как мы не используем внешний источник. Восемь проводов, очень простым способом подключенных к портам Arduino, обеспечивают подключение нашей клавиатуры. Эта клавиатура не имеет питания и является пассивной, что значительно облегчает подключение.

Дисплей подключен к Arduino через последовательный порт UART, который также обеспечивает питание устройства.

В демонстрации мы показываем на видео нашу схему, проверяющую, правильный ли пароль, введенный на клавиатуре, или нет.

В PDF-файле, который используется в видео и доступен здесь, представлена полная распиновка используемого чипа.

Шаг 1. Последовательный дисплей

Последовательный дисплей
Последовательный дисплей
Последовательный дисплей
Последовательный дисплей

Это последовательный дисплей, который обменивается данными с UART, который является RS с TXRX. Он также существует в версиях I2C, но другие модели останутся для следующей сборки. В этом случае этот дисплей работает через UART от RS.

Шаг 2: матричная клавиатура

Матричная клавиатура
Матричная клавиатура

Пример матричной клавиатуры, которую мы используем, изображен на фотографии, и он находится справа. У нас есть диаграмма, показывающая, как это работает. На самом деле у него есть только линии 4x4. Таким образом, используется минимальное количество проводов; по одному проводу для каждой строки и столбца, так что всего получается восемь проводов.

Ему не требуется питание, потому что он работает следующим образом: при нажатии 7 клавиатура берет 7 и подключается к строке и столбцу, что делает возможной идентификацию путем автоматического сканирования алгоритма.

Важно помнить, что в этой сборке будет работать любая клавиатура 4x4 с точечной матрицей.

Шаг 3: Сборка

сборка
сборка

В общей схеме мы подключаем восемь проводов напрямую к портам Ардуино, так как на клавиатуру нет питания. На дисплее у нас есть сигнал RS 232, а также положительная и отрицательная мощность. Подсветка все еще присутствует, которая также уже подключена (определяется BKL).

Шаг 4: Исходный код

В исходный код этого проекта вы должны включить серийный номер и клавиатуру. У него есть набор RX_PIN и TX_PIN, необходимые для последовательного программного обеспечения, а также ИНВЕРТИРОВАННАЯ 1. Он был помещен внизу для усиления сигнала, который использует вход с инвертированной логикой.

// biblioteca responsável pela comunicação com o display LCD # include // biblioteca responseável por capturar a tecla que foi pressionada no teclado #include // pino invalido apenas usado no contrutor do SoftwareSerial #define RX_PãIN 255 // pino TX da nossa ligaça x Дисплей ЖК-дисплей #define TX_PIN 3 // инвертировать сигнал Rx e Tx, tratando LOW como HIGH e наоборот #define INVERTED 1

Шаг 5: Показать команды

Команды дисплея
Команды дисплея

Важно: на этом дисплее недостаточно просто наложить на него строку. Вам нужно отправить управляющие символы. PDF-файл содержит ссылку на сайт, на котором у вас есть руководство по эксплуатации этого дисплея. Но если у вас есть серийный дисплей другой марки, хорошо бы взглянуть на их управляющие коды, которые относятся к этому. В этой модели, например, когда мы отправляем определенный элемент управления (например, информацию для этого дисплея), нам нужно отправить префикс, число 254, для обеспечения связи.

Итак, мы создали ARRAY для упрощения работы, который представляет собой набор переменных, доступ к которым осуществляется с помощью числового индекса. Это будет отправлено на дисплей в качестве начальной конфигурации.

// команда для лимита, чтобы сделать телепередачу displayconst char limparTela = {254, 1}; // начальные команды конфигурации / * 254, 254 и подсветка 254, 1 яркость на экране 254, 253, 1 конфигурация или контраст на нижнем уровне 254, 13 строк или параболический курсор * / const char configInicial = {254, 254, 254, 1, 254, 253, 1, 254, 13};

Шаг 6: Работа с клавиатурой

Как работает клавиатура? Сначала он монтирует массив. Этот массив имеет символ, который на самом деле будет там отображаться. Итак, если я поставлю X, когда я нажму первую левую кнопку вверху, она отобразится. Это содержимое клавиатуры, которым она будет управлять.

Другие вещи, для которых у нас есть определение, - это строка номер 4 и столбец номер 4 в случае ARRAY этой клавиатуры. У нас все еще есть контакты линий, которые являются контактами Arduino, и контакты столбца. У нас все еще есть собственный конструктор клавиатуры с параметрами символа, вывода, строки и столбца.

const byte LINHAS = 4; // количество строк для текущего байта COLUNAS = 4; // número de colunas do teclado // define uma matriz com os símbolos que deseja ser lido do teclado char SIMBOLOS [LINHAS] [COLUNAS] = {{'A', '1', '2', '3'}, { 'B', '4', '5', '6'}, {'C', '7', '8', '9'}, {'D', 'c', '0', 'e '}}; байт PINOS_LINHA [LINHAS] = {8, 9, 10, 11}; // символы для обозначения, как для строк, чем для байтов PINOS_COLUNA [COLUNAS] = {4, 5, 6, 7}; // отображение индикаторов в качестве символов // отображение клавиатуры, реагирование на ввод текста с клавиатуры customKeypad = Keypad (makeKeymap (SIMBOLOS), PINOS_LINHA, PINOS_COLUNA, LINHAS, COLUNAS);

Шаг 7: Установка пароля

В этой части мы определяем пароль, а затем нам нужно ввести пароль, который представляет собой пустую строку. Ниже мы помещаем экземпляр softwareSerial.

// различные варианты ответов в качестве исходных значений String SENHA_ESPERADA = "1234ABCD"; Строка SENHA_DIGITADA = ""; // экземпляр SoftwareSerial для связи с отображением через последовательный порт SoftwareSerial displaySerial = SoftwareSerial (RX_PIN, TX_PIN, INVERTED);

Шаг 8: настройка

Что касается Setup, вот displaySerial.begin (2, 400), который говорит о скорости. В нашем случае этого достаточно для отправки байта. После этого следует ожидание 700 миллисекунд. Мы включаем displaySerial.print (initialConfig) из начальной конфигурации с новой задержкой в 10 миллисекунд, и переходим к функции запуска. В стартовой функции мы помещаем displaySerial.print («пароль:»).

void setup () {Serial.begin (2400); // инициализация последовательного порта для вывода на дисплей // значение скорости передачи данных ser de 2400 displaySerial.begin (2400); // темп начала задержки отображения (700); // установка начальной конфигурации do display displaySerial.print (configInicial); задержка (10); inicio (); } // função responseável por imprimir na tela a mensagem para digitar a senha // é chamada toda vez q a senha foi digitada e compare, também quando // tecla limpar display foi pressionada. void inicio () {displaySerial.print ("Senha:"); }

Шаг 9: цикл

В цикле мы создаем customKey = customKeypad.getKey (), а в последовательности вводим команду Switch.

// захват текста для печати на экране char customKey = customKeypad.getKey (); // можно использовать для печати if (customKey) {Serial.println (customKey); переключатель (customKey) {/… /}}

Переключатель петли, часть 1

Внутри команды Switch: он показывает список возможных клавиш для печати при нажатии и увеличивает пароль: принимает customKey и объединяет введенный пароль. Затем displaySerial.print (customKey) показывает содержимое ключа.

switch (customKey) {// caso alguma das teclas imprimíveis foi pressionada case 'A': case 'B': case 'C': case 'D': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': // конкатенация нового символа с последующим введением цифрового кода SENHA_DIGITADA + = customKey; Serial.println (SENHA_DIGITADA); // напечатано на теле или символе displaySerial.print (customKey); перерыв;

Переключатель петли, часть 2

В этом коде мы показываем сценарий нажатия клавиши CLEAR. Если вы наберете букву C и очистите переменную, содержащую вводимый вами пароль, она вызовет команду для очистки экрана и перезапустится.

// caso a tecla CLEAR tenha sido pressionada case 'c': // limpa a varável que guarda a senha que está sendo digitada SENHA_DIGITADA = ""; // chama o comando para limpar a tela displaySerial.print (limparTela); // настроить сообщение для цифрового ввода (); перерыв;

Переключатель петли, часть 3

Другой вариант - ввести букву E. В этом случае экран будет очищен и проанализирован, если введенный пароль правильный или неправильный. Затем мы зададим новую задержку в 2 секунды, очистим экран, сбросим переменную пароля и вернемся к началу.

// может быть введено значение ENTER seja pressionada, devemos comparar as senhas case 'e': // limpa a tela displaySerial.print (limparTela); // установить цифровую версию для ESPERADA if (SENHA_ESPERADA == SENHA_DIGITADA) {Serial.println ("Senha Correta!"); // очистить сообщение от отправки displaySerial.print ("Senha Correta !!!"); } // caso senha esteja errada else {Serial.println ("Senha Incorreta!"); // удалить сообщение об ошибке displaySerial.print ("Senha Incorreta!"); } // aguarda 2 segundos para limpar a tela novamente e esperar uma nova senha ser digitada delay (2000); displaySerial.print (limparTela);

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