INHOUDSOPGAWE:

Dashboard -sleutelbord met LCD -skerm en Arduino Uno: 9 stappe
Dashboard -sleutelbord met LCD -skerm en Arduino Uno: 9 stappe

Video: Dashboard -sleutelbord met LCD -skerm en Arduino Uno: 9 stappe

Video: Dashboard -sleutelbord met LCD -skerm en Arduino Uno: 9 stappe
Video: Bedien LED's met een IR-afstandsbediening in Tinkercad Circuits 2023 2024, November
Anonim
Image
Image
Dashboard -sleutelbord met LCD -skerm en Arduino Uno
Dashboard -sleutelbord met LCD -skerm en Arduino Uno
Dashboard -sleutelbord met LCD -skerm en Arduino Uno
Dashboard -sleutelbord met LCD -skerm en Arduino Uno

Dit is 'n matriks -sleutelbord met 'n LCD -skerm en 'n Arduino Uno, die mees basiese wat vandag bestaan. Die doel van hierdie opstelling is om 'n program te skep wat 'n wagwoord ontvang wat op die matriks -sleutelbord getik is, dit vergelyk met die regte wagwoord en 'n bevestigingsboodskap op die skerm vertoon.

Dit is belangrik om te onthou dat beide die matriks -sleutelbord en hierdie skerm met ESP8266 en ESP32 werk.

Soos u kan sien, stuur ons die kring met die Arduino met 'n USB, aangesien ons nie 'n eksterne bron gebruik nie. Agt drade wat op 'n baie eenvoudige manier aan die Arduino -poorte gekoppel is, maak die verbinding van ons sleutelbord. Hierdie sleutelbord het geen krag nie en is passief, wat die verbindings baie vergemaklik.

Die skerm is verbind met 'n Arduino via die UART, die seriële poort, wat ook die toestel aandryf.

In 'n demonstrasie wys ons in die video hoe ons stroombaan kyk of die wagwoord wat op die sleutelbord getik is, korrek is of nie.

In die PDF wat in die video gebruik word en hier beskikbaar is, het ons die volledige pinout van die chip wat gebruik word.

Stap 1: Seriële vertoning

Seriële vertoning
Seriële vertoning
Seriële vertoning
Seriële vertoning

Dit is die seriële skerm wat kommunikeer met die UART, wat RS is met 'n TXRX. Dit bestaan ook in I2C -weergawes, maar ander modelle bly vir die komende vergadering. In hierdie geval werk hierdie skerm deur die UART by RS.

Stap 2: Matriks -sleutelbord

Matriks -sleutelbord
Matriks -sleutelbord

Die voorbeeld van die matriks -sleutelbord wat ons gebruik, is die van die foto, en dit is aan die regterkant. Ons het 'n diagram wat wys hoe dit werk. Dit het eintlik net 4x4 lyne. Dit gebruik dus die minimum hoeveelheid drade; een draad vir elke ry en kolom, sodat daar altesaam agt drade is.

Dit benodig nie krag nie, want dit werk soos volg: as die 7 ingedruk word, tel die sleutelbord die 7 op en maak verbinding met die reël en kolom, wat identifisering moontlik maak deur die algoritme outomaties te skandeer.

Dit is belangrik om te onthou dat enige 4x4 -sleutelbord met 'n puntmatriks in hierdie samestelling werk.

Stap 3: Montering

Vergadering
Vergadering

In die algemene skema verbind ons agt drade direk aan die Arduino -poorte, aangesien die sleutelbord nie krag het nie. Op die skerm het ons 'n sein van RS 232 en positiewe en negatiewe krag. Die agtergrond is nog steeds teenwoordig, wat ook reeds verbind is (geïdentifiseer deur BKL).

Stap 4: Bronkode

In die bronkode van hierdie projek moet u die reeks en die bedieningspaneel insluit. Dit het 'n stel RX_PIN en 'n TX_PIN, wat nodig is vir die seriële sagteware, en ook die INVERTED 1. Dit is onder geplaas om die sein wat ingang gebruik met omgekeerde logika, te versterk.

// biblioteca responsável pela comunicação com display display #include // biblioteca responsável por capturar a tecla que foi pressionada no teclado #include // pino invalido apenas usado no controller do SoftwareSerial #define RX_PIN 255 // pino TX da nossa ligação Vertoon LCD #define TX_PIN 3 // inverte a lógica dos pinos Rx e Tx, tratando LOW como HIGH en vice versa #define INVERTED 1

Stap 5: Vertoon bevele

Vertoon bevele
Vertoon bevele

Belangrik: in hierdie skerm is dit nie genoeg om net 'n tou daarop te sit nie. U moet kontrolekarakters stuur. Die PDF bevat die skakel van die webwerf waar u 'n handleiding van hierdie skerm het. Maar as u 'n reeks vertoning van 'n ander handelsmerk het, is dit goed om te kyk na die kontrolekodes wat hierop betrekking het. In hierdie model, byvoorbeeld, as ons 'n sekere kontroleknoppie stuur (byvoorbeeld inligting vir hierdie skerm), moet ons 'n voorvoegsel, die nommer 254, stuur om kommunikasie moontlik te maak.

Daarom het ons 'n ARRAY opgestel om dinge te vergemaklik, 'n versameling veranderlikes wat met 'n numeriese indeks verkry word. Dit sal as 'n aanvanklike opset na die skerm gestuur word.

// 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};

Stap 6: Toetsenbordbediening

Hoe werk die sleutelbord? Eerstens stel dit 'n skikking op. Hierdie skikking is van die karakter wat daar eintlik vertoon sal word. As ek dus 'n X plaas, word dit vertoon as ek op die eerste linkerknoppie bo druk. Dit is die inhoud van die sleutelbord, wat dit sal beveel.

Ander dinge waarvoor ons die definisie het, is ry nommer 4 en kolom nommer 4, in die geval van die ARRAY van hierdie sleutelbord. Ons het nog steeds penne van die lyne, wat die Arduino -penne is, en die penne van die kolom. Ons het nog steeds 'n pasgemaakte sleutelbordbouer met die simbool-, pen-, ry- en kolomparameters.

const byte LINHAS = 4; // número de linhas do tecladoconst byte 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 '}}; greep 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 Keyboard customKeypad = Keypad (makeKeymap (SIMBOLOS), PINOS_LINHA, PINOS_COLUNA, LINHAS, COLUNAS);

Stap 7: Wagwoordinstelling

In hierdie deel definieer ons die wagwoord, en dan moet ons 'n wagwoord invoer, wat 'n leë string is. Hieronder sit ons die voorbeeld van die softwareSerial.

// variáveis resposnsáveis por armazenar as senhasconst String SENHA_ESPERADA = "1234ABCD"; String SENHA_DIGITADA = ""; // instancia de SoftwareSerial para nos comunicar com o Display via serial SoftwareSerial displaySerial = SoftwareSerial (RX_PIN, TX_PIN, INVERTED);

Stap 8: Opstel

Wat die opstelling betref, hier is die displaySerial.begin (2, 400), wat handel oor die snelheid. In ons geval is dit genoeg om 'n greep te stuur. Hierna wag daar 700 millisekondes. Ons sluit die displaySerial.print (initialConfig) van die aanvanklike konfigurasie in met 'n nuwe vertraging van 10 millisekondes, en ons gaan na die beginfunksie. In die beginfunksie plaas ons displaySerial.print ("wagwoord:").

ongeldige opstelling () {Serial.begin (2400); // inisialisering van 'n reël van die komunikação van die vertoning // tempo de espera pela inicialização do display delay (700); // stel 'n konfigurasie amptelik voor om DisplaySerial.print (configInicial) te vertoon; vertraging (10); inicio (); } // função responsável por imprimir na tela a mensagem fora 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:"); }

Stap 9: Lus

In die lus skep ons 'n customKey = customKeypad.getKey (), en in die volgorde voer ons 'n Switch -opdrag in.

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

Lusskakelaar Deel 1

Binne die Switch -opdrag: dit toon die lys met moontlikhede van drukbare sleutels, indien ingedruk, en verhoog die wagwoord: neem die customKey en verbind die ingevoerde wagwoord. Vervolgens toon die displaySerial.print (customKey) die sleutelinhoud.

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': saak '4': saak '5': saak '6': saak '7': saak '8': saak '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); breek;

Lusskakelaar Deel 2

In hierdie kode wys ons 'n scenario vir as die CLEAR -toets ingedruk word. As u die letter C tik en die veranderlike met die wagwoord wat u tik, verwyder, word die opdrag opgeroep om die skerm skoon te maak en weer te begin.

// 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); // configura a mensagem para digitar and senha inicio (); breek;

Lusskakelaar Deel 3

'N Ander moontlikheid is as u die letter E. tik. In hierdie geval word die skerm skoongemaak en ontleed as die wagwoord korrek of verkeerd is. Vervolgens gee ons 'n nuwe vertraging van 2 sekondes, maak die skerm skoon, stel die wagwoord veranderlike terug en keer terug na die begin.

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

Aanbeveel: