Съдържание:

Клавиатура на таблото с LCD дисплей и Arduino Uno: 9 стъпки
Клавиатура на таблото с LCD дисплей и Arduino Uno: 9 стъпки

Видео: Клавиатура на таблото с LCD дисплей и Arduino Uno: 9 стъпки

Видео: Клавиатура на таблото с LCD дисплей и Arduino Uno: 9 стъпки
Видео: Подключение семисегментного индикатора к АРДУИНО / Как подключить семисегментный индикатор 2024, Юли
Anonim
Image
Image
Клавиатура на таблото с LCD дисплей и Arduino Uno
Клавиатура на таблото с LCD дисплей и Arduino Uno
Клавиатура на таблото с LCD дисплей и Arduino Uno
Клавиатура на таблото с LCD дисплей и Arduino Uno

Това е матрична клавиатура, работеща заедно с LCD дисплей и Arduino Uno, най -основното, което съществува днес. Целта на тази настройка е да създаде програма, която получава парола, въведена на матричната клавиатура, сравнява я с правилната парола и показва съобщение за потвърждение на дисплея.

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

Както можете да видите, захранваме веригата с Arduino с USB, тъй като не използваме външен източник. Осем проводника, свързани по много прост начин към портовете на Arduino, правят връзката на нашата клавиатура. Тази клавиатура няма мощност и е пасивна, което значително улеснява връзките.

Дисплеят е свързан с Arduino чрез UART, серийния порт, който също захранва устройството.

В демонстрация ние показваме във видеото нашата верига, проверяваща дали паролата, въведена на клавиатурата, е правилна или не.

В PDF файла, използван във видеото и достъпен тук, имаме пълното извеждане на използвания чип.

Стъпка 1: Сериен дисплей

Сериен дисплей
Сериен дисплей
Сериен дисплей
Сериен дисплей

Това е серийният дисплей, който комуникира с UART, който е RS с TXRX. Съществува и във версии I2C, но други модели ще останат за предстоящо сглобяване. В този случай този дисплей работи от UART от RS.

Стъпка 2: Матрична клавиатура

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

Примерът за матричната клавиатура, която използваме, е тази на снимката и е от дясната страна. Имаме диаграма, която показва как работи. Всъщност има само 4x4 линии. По този начин той използва минималното количество проводници; по един проводник за всеки ред и колона, така че да има общо осем проводника.

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

Важно е да запомните, че всяка 4x4 клавиатура, която е матрична, ще работи в този монтаж.

Стъпка 3: Монтаж

Монтаж
Монтаж

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

Стъпка 4: Изходен код

В изходния код на този проект трябва да включите серийния и клавиатурата. Той има набор RX_PIN и TX_PIN, необходим за серийния софтуер, а също и INVERTED 1. Това е поставено отдолу за усилване на сигнала, който използва вход с обърната логика.

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

Стъпка 5: Показване на команди

Показване на команди
Показване на команди

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

Така че ние създадохме ARRAY за улесняване на нещата, което е колекция от променливи, до които се осъществява достъп с цифров индекс. Това ще бъде изпратено на дисплея като първоначална конфигурация.

// comando para limpar toda a tela do displayconst char limparTela = {254, 1}; // comandos de configuração inicial/ * 254, 254 acende или backlight 254, 1 limpa a tela 254, 253, 1 конфигурация за контраст em nível alto 254, 13 лига или курсор paraficar piscando */const char configInicial = {254, 254, 254, 1, 254, 253, 1, 254, 13};

Стъпка 6: Работа с клавиатурата

Как функционира клавиатурата? Първо, той монтира масив. Този масив е от символа, който всъщност ще бъде показан там. Така че, ако сложа X, когато натисна първия ляв бутон отгоре, той се показва. Това е съдържанието на клавиатурата, което тя ще командва.

Други неща, за които имаме дефиниция, са ред номер 4 и колона номер 4, в случай на ARRAY на тази клавиатура. Все още имаме щифтове на линиите, които са щифтовете на Arduino и щифтовете на колоната. Все още имаме персонализиран конструктор на клавиатура с клавиатура със параметри, символ, щифт, ред и колона.

const байт LINHAS = 4; // numero de linhas do tecladoconst byte COLUNAS = 4; // número de colunas do teclado // дефинирайте 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 que indicam като linhas do teclado byte PINOS_COLUNA [COLUNAS] = {4, 5, 6, 7}; // pinos que indicam as colunas do teclado // instancia de Keypad, response to capturar a tecla pressionada Keypad customKeypad = Keypad (makeKeymap (SIMBOLOS), PINOS_LINHA, PINOS_COLUNA, LINHAS, COLUNAS);

Стъпка 7: Настройка на парола

В тази част ние дефинираме паролата и след това трябва да въведем парола, която е празен низ. По -долу поставяме екземпляра на softwareSerial.

// варира респонсиране на armazenar като senhasconst String SENHA_ESPERADA = "1234ABCD"; Низ SENHA_DIGITADA = ""; // instancia de SoftwareSerial para no comunicar com o Показване чрез сериен SoftwareSerial displaySerial = SoftwareSerial (RX_PIN, TX_PIN, INVERTED);

Стъпка 8: Настройка

Що се отнася до настройката, тук е displaySerial.begin (2, 400), което е за скоростта. В нашия случай това е достатъчно за изпращане на байт. След това се чака 700 милисекунди. Включваме displaySerial.print (initialConfig) от първоначалната конфигурация с ново закъснение от 10 милисекунди и отиваме към стартовата функция. В стартовата функция поставяме displaySerial.print ("парола:").

void setup () {Serial.begin (2400); // inicializando a serial de comunicação com o display // importante o baud rate ser de 2400 displaySerial.begin (2400); // tempo de espera pela inicialização do display delay (700); // определя конфигурация на дисплея displaySerial.print (configInicial); забавяне (10); inicio (); } // função responsável por imprimir na tela a mensagem para digitar a senha // é chamada toda vez q a senha foi digitada e comparada, também quando // a tecla limpar display foi pressionada. void inicio () {displaySerial.print ("Senha:"); }

Стъпка 9: Цикъл

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

// заснемам a tecla pressionada до teclado char customKey = customKeypad.getKey (); // caso alguma tecla foi pressionada 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': // concatena o novo símbolo a senha que estamos digitando SENHA_DIGITADA+= customKey; Serial.println (SENHA_DIGITADA); // imrpime na tela o símbolo pressionado displaySerial.print (customKey); прекъсване;

Превключвател на контур, част 2

В този код показваме сценарий за това дали е натиснат клавиш CLEAR. Ако въведете буквата C и изчистите променливата, която съдържа паролата, която въвеждате, тя извиква командата, за да изчисти екрана и рестартира.

// caso a tecla CLEAR tenha sido pressionada case 'c': // limpa a variável que guarda a senha que está sendo digitada SENHA_DIGITADA = ""; // chama o comando para limpar a tela displaySerial.print (limparTela); // конфигурираме mensagem para digitar a senha inicio (); прекъсване;

Превключвател на контур, част 3

Друга възможност е, ако въведете буквата Е. В този случай екранът ще бъде почистен и анализиран дали въведената парола е правилна или неправилна. След това ще дадем ново закъснение от 2 секунди, ще изчистим екрана, ще нулираме променливата на паролата и ще се върнем в началото.

// caso a tecla ВЪВЕЖДАЙТЕ сея натиснат, сравнителен пример като senhas case 'e': // limpa a tela displaySerial.print (limparTela); // се показва цифров знак за ESPERADA, ако (SENHA_ESPERADA == SENHA_DIGITADA) {Serial.println ("Senha Correta!"); // imprime mensagem de senha correta displaySerial.print ("Senha Correta !!!"); } // caso senha esteja errada else {Serial.println ("Senha Incorreta!"); // imprime mensagem de senha incoreta displaySerial.print ("Senha Incorreta!"); } // aguarda 2 segundos para limpar a tela novamente e esperar uma nova senha ser digitada delay (2000); displaySerial.print (limparTela);

Препоръчано: