Indholdsfortegnelse:

Dashboard -tastatur med LCD -display og Arduino Uno: 9 trin
Dashboard -tastatur med LCD -display og Arduino Uno: 9 trin

Video: Dashboard -tastatur med LCD -display og Arduino Uno: 9 trin

Video: Dashboard -tastatur med LCD -display og Arduino Uno: 9 trin
Video: Makeblock Untimate Robot Kit Part 1 : Step by Step Assembly Robot of Aram Tank 2024, November
Anonim
Image
Image
Dashboard -tastatur med LCD -display og Arduino Uno
Dashboard -tastatur med LCD -display og Arduino Uno
Dashboard -tastatur med LCD -display og Arduino Uno
Dashboard -tastatur med LCD -display og Arduino Uno

Dette er et matrix -tastatur, der kører sammen med et LCD -display og en Arduino Uno, det mest basale, der findes i dag. Formålet med denne opsætning er at oprette et program, der modtager en adgangskode, der er skrevet på matrixtastaturet, sammenligner det med den korrekte adgangskode og viser en bekræftelsesmeddelelse på displayet.

Det er vigtigt at huske, at både matrix -tastaturet og dette display fungerer med ESP8266 og ESP32.

Som du kan se, driver vi kredsløbet med Arduino med en USB, da vi ikke bruger en ekstern kilde. Otte ledninger, der er forbundet på en meget enkel måde til Arduinos porte, gør forbindelsen af vores tastatur. Dette tastatur har ingen strøm og er passivt, hvilket i høj grad letter forbindelserne.

Skærmen er forbundet med en Arduino via UART, den serielle port, som også driver enheden.

I en demonstration viser vi i videoen vores kredsløb, der kontrollerer, om adgangskoden, der er skrevet på tastaturet, er korrekt eller ej.

I den PDF, der blev brugt i videoen og tilgængelig her, har vi den fulde pinout af den chip, der bruges.

Trin 1: Serielt display

Serielt display
Serielt display
Serielt display
Serielt display

Dette er det serielle display, der kommunikerer med UART, som er RS med en TXRX. Det findes også i I2C -versioner, men andre modeller forbliver til en kommende samling. I dette tilfælde fungerer dette display af UART af RS.

Trin 2: Matrix -tastatur

Matrix tastatur
Matrix tastatur

Eksemplet på matrixtastaturet, vi bruger, er det på billedet, og det er på højre side. Vi har et diagram, der viser, hvordan det fungerer. Det har faktisk kun 4x4 linjer. Således bruger den den mindste mængde ledninger; en ledning for hver række og kolonne, så der er otte ledninger i alt.

Det har ikke brug for strøm, fordi det fungerer som følger: Når der trykkes på 7, henter tastaturet 7'en og opretter forbindelse til linjen og kolonnen, hvilket gør identifikation mulig ved automatisk scanning af algoritmen.

Det er vigtigt at huske, at ethvert 4x4 -tastatur, der er dotmatrix, fungerer i denne samling.

Trin 3: Montering

montage
montage

I den generelle ordning tilslutter vi otte ledninger direkte til Arduino's porte, da tastaturet ikke har strøm. I displayet har vi et signal på RS 232 og positiv og negativ effekt. Baggrundslyset er stadig til stede, som også allerede er tilsluttet (identificeret af BKL).

Trin 4: Kildekode

I kildekoden til dette projekt skal du inkludere serienummeret og tastaturet. Det har et sæt RX_PIN og et TX_PIN, der er nødvendigt for den serielle software, og også INVERTED 1. Dette blev placeret nedenunder for at forstærke det signal, der bruger input med inverteret logik.

// 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 Display LCD #define TX_PIN 3 // inverte a lógica dos pinos Rx e Tx, tratando LOW como HIGH e vice-versa #define INVERTED 1

Trin 5: Vis kommandoer

Vis kommandoer
Vis kommandoer

Vigtigt: I dette display er det ikke nok bare at sætte en streng på det. Du skal sende kontroltegn. PDF'en indeholder linket til det websted, hvor du har en manual til dette display. Men hvis du har et serielt display af et andet mærke, er det godt at se på deres kontrolkoder, der vedrører dette. I denne model, for eksempel når vi sender en bestemt kontrol (f.eks. Oplysninger til denne skærm), skal vi sende et præfiks, tallet 254, for at muliggøre kommunikation.

Så vi oprettede et ARRAY for at lette tingene, som er en samling af variabler, der er tilgængelige med et numerisk indeks. Dette vil blive sendt til displayet som en indledende konfiguration.

// comando para limpar toda a tela do displayconst char limparTela = {254, 1}; // comandos de konfiguração inicial/ * 254, 254 acende o backlight 254, 1 limpa a tela 254, 253, 1 konfigura 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};

Trin 6: Tastaturbetjening

Hvordan fungerer tastaturet? Først monterer den en matrix. Denne matrix er af det tegn, der faktisk vil blive vist der. Så hvis jeg sætter et X, når jeg trykker på den første venstre knap øverst, vises det. Dette er tastaturets indhold, hvilket er det, det vil kommandere.

Andre ting, vi har definitionen på, er række nummer 4 og kolonne nummer 4, i tilfælde af ARRAY på dette tastatur. Vi har stadig stifter af linjerne, som er Arduino -benene, og stifterne i søjlen. Vi har stadig en brugerdefineret tastaturbygger med symbolet, pin, række og kolonneparametre.

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 '}}; byte 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 Tastatur customKeypad = Tastatur (makeKeymap (SIMBOLOS), PINOS_LINHA, PINOS_COLUNA, LINHAS, COLUNAS);

Trin 7: Indstilling af adgangskode

I denne del definerer vi adgangskoden, og derefter skal vi indtaste en adgangskode, som er en tom streng. Nedenfor sætter vi forekomsten af 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);

Trin 8: Opsætning

Hvad angår opsætningen, her er displaySerial.begin (2, 400), som handler om hastigheden. I vores tilfælde er dette nok til at sende en byte. Efter dette er der en ventetid på 700 millisekunder. Vi inkluderer displaySerial.print (initialConfig) fra den oprindelige konfiguration med en ny forsinkelse på 10 millisekunder, og vi går til startfunktionen. I startfunktionen satte vi displaySerial.print ("password:").

ugyldig opsætning () {Serial.begin (2400); // inicializando a serial de comunicação com o display // importante of baud rate ser de 2400 displaySerial.begin (2400); // tempo de espera pela inicialização do display delay (700); // sæt en konfiguração inicial gøre display displaySerial.print (configInicial); forsinkelse (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:"); }

Trin 9: Sløjfe

I sløjfen opretter vi en customKey = customKeypad.getKey (), og i sekvensen indtaster vi en Switch -kommando.

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

Sløjfekontakt del 1

Inde i switch -kommandoen: den viser listen over muligheder for udskrivbare taster, hvis den trykkes, og øger adgangskoden: tager customKey og sammenkæder den indtastede adgangskode. Dernæst viser displaySerial.print (customKey) nøgleindholdet.

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); pause;

Sløjfekontakt del 2

I denne kode viser vi et scenario for, hvis der trykkes på CLEAR -tasten. Hvis du skriver bogstavet C og rydder variablen, der indeholder den adgangskode, du skriver, kalder det kommandoen for at rydde skærmen og genstarter.

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

Sløjfekontakt del 3

En anden mulighed er, hvis du skriver bogstavet E. I dette tilfælde vil skærmen blive renset og analyseret, hvis den indtastede adgangskode er korrekt eller forkert. Dernæst giver vi en ny forsinkelse på 2 sekunder, rydder skærmen, nulstiller adgangskodevariablen og vender tilbage til begyndelsen.

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

Anbefalede: