Sadržaj:

Tastatura nadzorne ploče s LCD zaslonom i Arduino Uno: 9 koraka
Tastatura nadzorne ploče s LCD zaslonom i Arduino Uno: 9 koraka

Video: Tastatura nadzorne ploče s LCD zaslonom i Arduino Uno: 9 koraka

Video: Tastatura nadzorne ploče s LCD zaslonom i Arduino Uno: 9 koraka
Video: Сводные таблицы Excel с нуля до профи за полчаса + Дэшборды! | 1-ое Видео курса "Сводные Таблицы" 2024, Juli
Anonim
Image
Image
Tastatura na nadzornoj ploči s LCD zaslonom i Arduino Uno
Tastatura na nadzornoj ploči s LCD zaslonom i Arduino Uno
Tastatura na nadzornoj ploči s LCD zaslonom i Arduino Uno
Tastatura na nadzornoj ploči s LCD zaslonom i Arduino Uno

Ovo je matrična tastatura koja radi zajedno sa LCD ekranom i Arduino Uno, najosnovnijim koji postoji danas. Svrha ovog postavljanja je stvaranje programa koji prima lozinku otkucanu na matričnoj tastaturi, uspoređuje je s ispravnom lozinkom i prikazuje poruku potvrde na ekranu.

Važno je zapamtiti da i matrična tastatura i ovaj ekran rade sa ESP8266 i ESP32.

Kao što vidite, napajamo krug Arduinom putem USB -a, jer ne koristimo vanjski izvor. Osam žica spojenih na vrlo jednostavan način na Arduinove portove povezuju našu tastaturu. Ova tastatura nema snagu i pasivna je, što uvelike olakšava povezivanje.

Zaslon je povezan s Arduinom putem UART -a, serijskog porta, koji također napaja uređaj.

U demonstraciji pokazujemo u videu naše kolo provjeravajući je li lozinka upisana na tastaturi ispravna ili nije.

U PDF -u koji se koristi u videu i koji je dostupan ovdje, imamo potpunu identifikaciju čipa koji se koristi.

Korak 1: Serijski prikaz

Serijski ekran
Serijski ekran
Serijski ekran
Serijski ekran

Ovo je serijski ekran koji komunicira sa UART -om, koji je RS sa TXRX -om. Postoji i u verzijama I2C, ali drugi će modeli ostati za nadolazeću montažu. U ovom slučaju, ovaj zaslon radi pomoću UART -a RS.

Korak 2: Matrična tastatura

Matrix Keyboard
Matrix Keyboard

Primjer matrične tipkovnice koju koristimo je fotografija, a nalazi se na desnoj strani. Imamo dijagram koji prikazuje kako to funkcionira. Zapravo ima samo 4x4 linije. Dakle, koristi minimalnu količinu žica; po jedna žica za svaki red i stupac, tako da ima ukupno osam žica.

Ne treba mu napajanje jer radi na sljedeći način: kada se pritisne 7, tastatura uzima 7 i povezuje se s linijom i kolonom, što omogućava identifikaciju automatskim skeniranjem algoritma.

Važno je zapamtiti da će svaka 4x4 tastatura koja je matrična raditi u ovom sklopu.

Korak 3: Montaža

Montaža
Montaža

U općoj shemi, povezujemo osam žica izravno na portove Arduina, jer tipkovnica nema napajanje. Na displeju imamo signal RS 232, pozitivne i negativne snage. Pozadinsko osvjetljenje je i dalje prisutno, koje je također već povezano (identificirano BKL -om).

Korak 4: Izvorni kod

U izvornom kodu ovog projekta morate uključiti serijsku i tastaturu. Ima skup RX_PIN i TX_PIN, neophodne za serijski softver, a takođe i INVERTED 1. Ovo je postavljeno ispod za pojačavanje signala koji koristi ulaz sa obrnutom logikom.

// biblioteca responvel pela comunicação com o display LCD #include // biblioteca responsável por capturar a tecla que foi pressionada no teclado #include // pino invalido apenas usado ne contrutor do SoftwareSerial #define RX_PIN 255 // pino TX bez veze za Arduino x Zaslon LCD #define TX_PIN 3 // invertirajte dosje RX e Tx, tratando LOW kao HIGH ili obratno #define INVERTED 1

Korak 5: Prikažite naredbe

Naredbe za prikaz
Naredbe za prikaz

Važno: U ovom prikazu nije dovoljno samo staviti niz. Morate poslati kontrolne znakove. PDF sadrži vezu na web lokaciju na kojoj imate priručnik za ovaj prikaz. No, ako imate serijski zaslon druge marke, dobro je pogledati njihove kontrolne kodove koji se na to odnose. U ovom modelu, na primjer, kada šaljemo određenu kontrolu (informacije za ovaj prikaz, na primjer), moramo poslati prefiks, broj 254, kako bismo omogućili komunikaciju.

Stoga smo postavili ARRAY za olakšavanje stvari, koji je skup varijabli kojima se pristupa numeričkim indeksom. Ovo će biti poslano na ekran kao početna konfiguracija.

// komanda para limpar toda i tela do displayconst char limparTela = {254, 1}; // komande za konfiguraciju inicial/ * 254, 254 sa pozadinskim osvjetljenjem 254, 1 limpa a tijelo 254, 253, 1 konfiguracija za kontrast na visini od 254, 13 liga ili parametar kursora za pisanje */const char configInicial = {254, 254, 254, 1, 254, 253, 1, 254, 13};

Korak 6: Rad sa tastaturom

Kako funkcioniše tastatura? Prvo, montira niz. Ovaj niz je karaktera koji će se tamo zaista prikazati. Dakle, ako stavim X, kad pritisnem prvo lijevo dugme na vrhu, ono se prikazuje. Ovo je sadržaj tastature, čime će ona komandovati.

Ostale stvari za koje imamo definiciju su red 4 i stupac broj 4, u slučaju NIZA ove tastature. Još uvijek imamo igle linija, koje su Arduino igle kolone. Još uvijek imamo customKeypad Keypad builder sa simbolima, pin -om, redovima i parametrima stupaca.

const bajt LINHAS = 4; // número de linhas do tecladoconst byte COLUNAS = 4; // número de colunas do teclado // definirati 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 '}}; bajt PINOS_LINHA [LINHAS] = {8, 9, 10, 11}; // pinos que indicam as linhas do teclado byte PINOS_COLUNA [COLUNAS] = {4, 5, 6, 7}; // pinos que indicam as colunas do teclado // instancia de Keypad, response to capturar and tecla pressionada Keypad customKeypad = Keypad (makeKeymap (SIMBOLOS), PINOS_LINHA, PINOS_COLUNA, LINHAS, COLUNAS);

Korak 7: Postavljanje lozinke

U ovom dijelu definiramo lozinku, a zatim moramo unijeti lozinku, koja je prazan niz. U nastavku stavljamo instancu softverske serije.

// varijacija odgovora na armazenar kao senhasconst String SENHA_ESPERADA = "1234ABCD"; String SENHA_DIGITADA = ""; // instanca de SoftwareSerial para comunicar com o Prikaz putem serijskog SoftwareSerial displaySerial = SoftwareSerial (RX_PIN, TX_PIN, INVERTED);

Korak 8: Postavljanje

Što se tiče postavljanja, ovdje je displaySerial.begin (2, 400), koji govori o brzini. U našem slučaju, ovo je dovoljno za slanje bajta. Nakon toga, čeka se 700 milisekundi. Uključujemo displaySerial.print (initialConfig) iz početne konfiguracije s novim kašnjenjem od 10 milisekundi i idemo na funkciju start. U startnu funkciju stavljamo displaySerial.print ("lozinka:").

void setup () {Serial.begin (2400); // inicializando serial de comunicação com o display // važno za brzinu prijenosa od 2400 displaySerial.begin (2400); // tempo de espera pela inicialização do odgode prikaza (700); // postavlja konfiguraciju za prikaz displaySerial.print (configInicial); kašnjenje (10); inicio (); } // função responsável por imprimir na tela a mensagem para digitar a senha // é chamada toda vez q a senha foi digitada and comparada, também quando // a tecla limpar display foi pressionada. void inicio () {displaySerial.print ("Senha:"); }

Korak 9: Petlja

U petlji stvaramo customKey = customKeypad.getKey () i u nizu unosimo naredbu Switch.

// snima tecla pressionada do teclado char customKey = customKeypad.getKey (); // caso alguma tecla foi pressionada if (customKey) {Serial.println (customKey); prekidač (customKey) { /… /}}

Prekidač petlje, dio 1

Unutar naredbe Switch: prikazuje listu mogućnosti tastera za štampanje, ako se pritisne, i povećava lozinku: uzima customKey i povezuje unesenu lozinku. Zatim displaySerial.print (customKey) prikazuje sadržaj ključa.

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': slučaj '4': slučaj '5': slučaj '6': slučaj '7': slučaj '8': slučaj '9': // spajanje na novo símbolo i senha que estamos digitando SENHA_DIGITADA+= customKey; Serial.println (SENHA_DIGITADA); // imprime na tijelu o símbolo pressionado displaySerial.print (customKey); break;

Prekidač petlje, dio 2

U ovom kodu prikazujemo scenarij ako se pritisne tipka CLEAR. Ako upišete slovo C i obrišete varijablu koja sadrži lozinku koju upisujete, ona poziva naredbu za brisanje ekrana i ponovno pokretanje.

// caso a tecla CLEAR tenha sido pressionada case 'c': // limpa a variável que guarda and senha que está sendo digitada SENHA_DIGITADA = ""; // Chama o comando para limpar a tela displaySerial.print (limparTela); // konfiguriše mensagem para digitar a senha inicio (); break;

Prekidač petlje, dio 3

Druga mogućnost je ako upišete slovo E. U tom slučaju zaslon će se očistiti i analizirati je li unesena lozinka točna ili netočna. Zatim ćemo dati novo kašnjenje od 2 sekunde, očistiti ekran, poništiti varijablu lozinke i vratiti se na početak.

// caso a tecla ENTER unesite pritisnutu tipku, usporedite je s velikim slučajem 'e': // limpa a tela displaySerial.print (limparTela); // prikazuje digitalnu vrijednost za ESPERADU ako (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);

Preporučuje se: