Kazalo:

Tipkovnica na armaturni plošči z LCD zaslonom in Arduino Uno: 9 korakov
Tipkovnica na armaturni plošči z LCD zaslonom in Arduino Uno: 9 korakov

Video: Tipkovnica na armaturni plošči z LCD zaslonom in Arduino Uno: 9 korakov

Video: Tipkovnica na armaturni plošči z LCD zaslonom in Arduino Uno: 9 korakov
Video: Rumba - Custom Boot Screen 2024, November
Anonim
Image
Image
Tipkovnica na armaturni plošči z LCD zaslonom in Arduino Uno
Tipkovnica na armaturni plošči z LCD zaslonom in Arduino Uno
Tipkovnica na armaturni plošči z LCD zaslonom in Arduino Uno
Tipkovnica na armaturni plošči z LCD zaslonom in Arduino Uno

To je matrična tipkovnica, ki deluje skupaj z LCD zaslonom in Arduino Uno, najosnovnejšim, ki obstaja danes. Namen te nastavitve je ustvariti program, ki prejme geslo, vneseno na matrično tipkovnico, ga primerja s pravilnim geslom in na zaslonu prikaže potrditveno sporočilo.

Pomembno si je zapomniti, da matrična tipkovnica in ta zaslon delujeta z ESP8266 in ESP32.

Kot lahko vidite, napajamo vezje z Arduinom z USB -jem, saj ne uporabljamo zunanjega vira. Osem žic, ki so na zelo preprost način priključene na vrata Arduino, povezuje našo tipkovnico. Ta tipkovnica nima moči in je pasivna, kar močno olajša povezave.

Zaslon je povezan z Arduinom prek serijskih vrat UART, ki napajajo tudi napravo.

V predstavitvi pokažemo v videu naše vezje, ki preverja, ali je geslo, vneseno na tipkovnici, pravilno ali ne.

V PDF -ju, ki je uporabljen v videoposnetku in je na voljo tukaj, imamo celoten pinout uporabljenega čipa.

1. korak: serijski prikaz

Serijski zaslon
Serijski zaslon
Serijski zaslon
Serijski zaslon

To je serijski zaslon, ki komunicira z UART, ki je RS s TXRX. Obstaja tudi v različicah I2C, drugi modeli pa bodo ostali za prihajajočo montažo. V tem primeru ta zaslon deluje z UART po RS.

2. korak: Matrična tipkovnica

Matrična tipkovnica
Matrična tipkovnica

Primer matrične tipkovnice, ki jo uporabljamo, je fotografija in je na desni strani. Imamo diagram, ki prikazuje, kako deluje. Pravzaprav ima samo 4x4 vrstice. Tako uporablja minimalno količino žic; ena žica za vsako vrstico in stolpec, tako da je skupaj osem žic.

Ne potrebuje napajanja, ker deluje na naslednji način: ko pritisnete 7, tipkovnica pobere 7 in se poveže z vrstico in stolpcem, kar omogoča identifikacijo s samodejnim skeniranjem algoritma.

Pomembno si je zapomniti, da bo v tem sklopu delovala vsaka tipkovnica 4x4, ki je matrična.

3. korak: Montaža

Montaža
Montaža

V splošni shemi povežemo osem žic neposredno na vrata Arduino, saj tipkovnica nima napajanja. Na zaslonu imamo signal RS 232 ter pozitivno in negativno moč. Še vedno je prisotna osvetlitev ozadja, ki je tudi že povezana (označena z BKL).

4. korak: izvorna koda

V izvorno kodo tega projekta morate vključiti serijsko in tipkovnico. Ima niz RX_PIN in TX_PIN, ki sta potrebna za serijsko programsko opremo, in tudi INVERTED 1. To je bilo postavljeno spodaj za ojačanje signala, ki uporablja vhod z obrnjeno logiko.

// 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 // obrnite a logico dos pinos Rx e Tx, tratando LOW como HIGH e obratno #define INVERTED 1

5. korak: Prikaz ukazov

Prikaz ukazov
Prikaz ukazov

Pomembno: Pri tem zaslonu ni dovolj, da nanj postavite samo niz. Morate poslati kontrolne znake. PDF vsebuje povezavo do spletnega mesta, kjer imate priročnik za ta zaslon. Če pa imate serijski zaslon druge znamke, je dobro pogledati njihove kontrolne kode, ki se na to nanašajo. V tem modelu, na primer, ko pošljemo določeno kontrolo (na primer informacije za ta zaslon), moramo poslati predpono, številko 254, da omogočimo komunikacijo.

Zato smo za olajšanje stvari nastavili NIZ, ki je zbirka spremenljivk, do katerih dostopamo s številskim indeksom. To bo poslano na zaslon kot zač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};

6. korak: Delovanje tipkovnice

Kako deluje tipkovnica? Najprej namesti matriko. Ta matrika je znaka, ki bo tam dejansko prikazan. Če torej vstavim X, se prikaže prvi levi gumb na vrhu. To je vsebina tipkovnice, ki ji bo ukazala.

Druge stvari, za katere imamo definicijo, sta vrstica 4 in stolpec številka 4, v primeru NIZ te tipkovnice. Še vedno imamo zatiče linij, ki so zatiči Arduino in zatiči stolpca. Še vedno imamo graditelja tipkovnice po meri s parametri simbola, zatiča, vrstice in stolpca.

const bajt LINHAS = 4; // número de linhas do tecladoconst byte COLUNAS = 4; // número de colunas do teclado // definiraj 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 kot 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. korak: Nastavitev gesla

V tem delu definiramo geslo, nato pa moramo vnesti geslo, ki je prazen niz. Spodaj navajamo primerek softwareSerial.

// variáveis resposnsáveis por armazenar as senhasconst String SENHA_ESPERADA = "1234ABCD"; Niz SENHA_DIGITADA = ""; // instancia de SoftwareSerial para comunicar com o Prikaz prek serijske programske opreme SoftwareSerial displaySerial = SoftwareSerial (RX_PIN, TX_PIN, INVERTED);

8. korak: Nastavitev

Kar se tiče namestitve, je tukaj displaySerial.begin (2, 400), ki govori o hitrosti. V našem primeru je to dovolj za pošiljanje bajta. Sledi čakanje 700 milisekund. V začetno konfiguracijo vključimo displaySerial.print (initialConfig) z novo zamudo 10 milisekund in gremo na funkcijo zagona. V funkcijo zagona postavimo displaySerial.print ("geslo:").

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 zakasnitve prikaza (700); // določi in konfigurira začetni prikaz displaySerial.print (configInicial); zamuda (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. korak: Zanka

V zanki ustvarimo customKey = customKeypad.getKey () in v zaporedju vnesemo ukaz Switch.

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

Stikalo zanke 1. del

Znotraj ukaza Switch: prikaže seznam možnosti tipk za tiskanje, če jih pritisnete, in poveča geslo: vzame customKey in združi vneseno geslo. Nato displaySerial.print (customKey) prikaže vsebino ključa.

switch (customKey) {// caso alguma das teclas imprimíveis foi pressionada primer 'A': primer 'B': primer 'C': primer 'D': primer '0': primer '1': primer '2': primer '3': primer '4': primer '5': primer '6': primer '7': primer '8': primer '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); prekiniti;

Stikalo zanke 2. del

V tej kodi prikazujemo scenarij, če pritisnete tipko CLEAR. Če vnesete črko C in počistite spremenljivko, ki vsebuje geslo, ki ga vnašate, pokliče ukaz, da počisti zaslon in se znova zažene.

// 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); // konfigurira mensagem para digitar a senha inicio (); prekiniti;

Stikalo zanke 3. del

Druga možnost je, če vnesete črko E. V tem primeru bo zaslon očiščen in analiziran, če je geslo pravilno ali napačno. Nato bomo dali 2 sekundi nove zakasnitve, počistili zaslon, ponastavili spremenljivko gesla in se vrnili na začetek.

// caso a tecla ENTER seja pressionada, devemos comparar as senhas case 'e': // limpa a tela displaySerial.print (limparTela); // se senga 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);

Priporočena: