Sadržaj:

Tipkovnica na nadzornoj ploči s LCD zaslonom i Arduino Uno: 9 koraka
Tipkovnica na nadzornoj ploči s LCD zaslonom i Arduino Uno: 9 koraka

Video: Tipkovnica na nadzornoj ploči s LCD zaslonom i Arduino Uno: 9 koraka

Video: Tipkovnica na nadzornoj ploči s LCD zaslonom i Arduino Uno: 9 koraka
Video: CS50 2013 - Week 9 2024, Srpanj
Anonim
Image
Image
Tipkovnica na nadzornoj ploči s LCD zaslonom i Arduino Uno
Tipkovnica na nadzornoj ploči s LCD zaslonom i Arduino Uno
Tipkovnica na nadzornoj ploči s LCD zaslonom i Arduino Uno
Tipkovnica na nadzornoj ploči s LCD zaslonom i Arduino Uno

Ovo je matrična tipkovnica koja radi zajedno s LCD zaslonom i Arduino Uno, najosnovnijim koji postoji danas. Svrha ovog postavljanja je stvoriti program koji prima lozinku upisanu na matričnoj tipkovnici, uspoređuje je s ispravnom lozinkom i prikazuje poruku potvrde na zaslonu.

Važno je zapamtiti da i matrična tipkovnica i ovaj zaslon rade s ESP8266 i ESP32.

Kao što vidite, napajamo krug s Arduinom putem USB -a jer ne koristimo vanjski izvor. Osam žica spojenih na vrlo jednostavan način na Arduinove priključke povezuju našu tipkovnicu. Ova tipkovnica 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š krug koji provjerava je li lozinka upisana na tipkovnici točna 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 zaslon
Serijski zaslon
Serijski zaslon
Serijski zaslon

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

Korak 2: Matrična tipkovnica

Matrična tipkovnica
Matrična tipkovnica

Primjer matrične tipkovnice koju koristimo je fotografija, a nalazi se s desne strane. Imamo dijagram koji prikazuje kako to radi. 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, tipkovnica uzima 7 i povezuje se s retkom i stupcem, što omogućuje identifikaciju automatskim skeniranjem algoritma.

Važno je zapamtiti da će svaka 4x4 tipkovnica koja ima matricu raditi u ovom sklopu.

Korak 3: Montaža

Skupština
Skupština

U općoj shemi, osam žica povezujemo izravno na priključke Arduina, budući da tipkovnica nema napajanje. Na ekranu imamo signal RS 232, te pozitivnu i negativnu snagu. Pozadinsko osvjetljenje je i dalje prisutno, koje je također već spojeno (identificirano BKL -om).

Korak 4: Izvorni kod

U izvorni kod ovog projekta morate uključiti serijski broj i tipkovnicu. Ima skup RX_PIN i TX_PIN, neophodne za serijski softver, a također i INVERTED 1. Ovo je postavljeno ispod za pojačavanje signala koji koristi ulaz s obrnutom logikom.

// biblioteca responsável 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 no contrutor do SoftwareSerial #define RX_PIN 255 // pino TX da nossa ligação Arduino x Zaslon LCD #define TX_PIN 3 // inverte a lógica dos pinos Rx e Tx, tratando LOW como HIGH e obratno #define INVERTED 1

Korak 5: Prikaz naredbi

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 mjesto na kojem imate priručnik za ovaj zaslon. 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 kako bismo olakšali stvari, što je skup varijabli kojima se pristupa numeričkim indeksom. To će biti poslano na zaslon kao početna konfiguracija.

// comando para limpar toda a tela do displayconst char limparTela = {254, 1}; // comandos de configuração inicial/ * 254, 254 acende o backlight 254, 1 limpa a tela 254, 253, 1 configura o contraste em nível alto 254, 13 liga o cursor paraficar piscando */const char configInicial = {254, 254, 254, 1, 254, 253, 1, 254, 13};

Korak 6: Rad tipkovnice

Kako funkcionira tipkovnica? Prvo, montira niz. Ovaj niz je karaktera koji će se tamo zapravo prikazati. Dakle, ako stavim X, kad pritisnem prvu lijevu tipku na vrhu, prikazuje se. Ovo je sadržaj tipkovnice, čime će zapovijedati.

Ostale stvari za koje imamo definiciju su red 4 i stupac broj 4, u slučaju NIZA ove tipkovnice. Još uvijek imamo igle linija, koje su Arduino igle stupaca. Još uvijek imamo customKeypad Keypad Builder sa parametrima simbola, pina, retka i stupca.

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, responsável por capturar a 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 donosimo instancu softverske serije.

// variáveis resposnsáveis por armazenar as senhasconst String SENHA_ESPERADA = "1234ABCD"; Niz SENHA_DIGITADA = ""; // instancia de SoftwareSerial para nos 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), što 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 funkciju start stavljamo displaySerial.print ("lozinka:").

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); // 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 e comparada, também quando // a tecla limpar display foi pressionada. void inicio () {displaySerial.print ("Senha:"); }

Korak 9: Petlja

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

// kaptura a tecla pressionada do teclado char customKey = customKeypad.getKey (); // caso alguma tecla foi pressionada if (customKey) {Serial.println (customKey); switch (customKey) { /… /}}

Prekidač petlje, dio 1

Unutar naredbe Switch: prikazuje popis mogućnosti tipki za ispis, 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': case '4': case '5': case '6': case '7': case '8': case '9': // concatena o novom símbolo a senha que estamos digitando SENHA_DIGITADA+= customKey; Serial.println (SENHA_DIGITADA); // imrpime na tela o símbolo pressionado displaySerial.print (customKey); pauza;

Prekidač petlje, dio 2

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

// 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); // konfiguracija mensagema para digitar a senha inicio (); pauza;

Prekidač petlje, dio 3

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

// caso a tecla ENTER seja pressionada, devemos comparar as senhas case 'e': // limpa a tela displaySerial.print (limparTela); // vidi senha digitada foi igual a ESPERADA if (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čeni: