Sommario:

Tastiera da cruscotto con display LCD e Arduino Uno: 9 passaggi
Tastiera da cruscotto con display LCD e Arduino Uno: 9 passaggi

Video: Tastiera da cruscotto con display LCD e Arduino Uno: 9 passaggi

Video: Tastiera da cruscotto con display LCD e Arduino Uno: 9 passaggi
Video: Menu a livelli con Arduino e LCD shield - 2/2 - Video 262 2024, Novembre
Anonim
Image
Image
Tastiera da cruscotto con display LCD e Arduino Uno
Tastiera da cruscotto con display LCD e Arduino Uno
Tastiera da cruscotto con display LCD e Arduino Uno
Tastiera da cruscotto con display LCD e Arduino Uno

Questa è una tastiera a matrice che corre insieme a un display LCD e un Arduino Uno, il più elementare che esiste oggi. Lo scopo di questa configurazione è creare un programma che riceva una password digitata sulla tastiera a matrice, la confronti con la password corretta e visualizzi un messaggio di conferma sul display.

È importante ricordare che sia la tastiera a matrice che questo display funzionano con ESP8266 ed ESP32.

Come puoi vedere, alimentiamo il circuito con Arduino con una USB, poiché non stiamo usando una fonte esterna. Otto fili collegati in modo molto semplice alle porte di Arduino realizzano il collegamento della nostra tastiera. Questa tastiera non ha alimentazione ed è passiva, il che facilita notevolmente le connessioni.

Il display è collegato ad un Arduino tramite la UART, la porta seriale, che alimenta anche il dispositivo.

In una dimostrazione, mostriamo nel video il nostro circuito verificando se la password digitata sulla tastiera è corretta o meno.

Nel PDF utilizzato nel video e disponibile qui, abbiamo il pinout completo del chip utilizzato.

Passaggio 1: display seriale

Display seriale
Display seriale
Display seriale
Display seriale

Questo è il display seriale che comunica con l'UART, che è RS con un TXRX. Esiste anche nelle versioni I2C, ma altri modelli rimarranno per un prossimo assemblaggio. In questo caso, questo display funziona con l'UART di RS.

Passaggio 2: tastiera a matrice

Tastiera a matrice
Tastiera a matrice

L'esempio della tastiera a matrice che usiamo è quello della foto, ed è sul lato destro. Abbiamo un diagramma che mostra come funziona. In realtà ha solo linee 4x4. Pertanto, utilizza la quantità minima di fili; un filo per ogni riga e colonna, in modo che ci siano otto fili in totale.

Non necessita di alimentazione perché funziona in questo modo: premendo il 7 la tastiera prende il 7 e si collega alla linea e alla colonna, il che rende possibile l'identificazione tramite la scansione automatica dell'algoritmo.

È importante ricordare che qualsiasi tastiera 4x4 a matrice di punti funzionerà in questo assieme.

Passaggio 3: assemblaggio

Assemblea
Assemblea

Nello schema generale, colleghiamo otto fili direttamente alle porte di Arduino, poiché la tastiera non ha alimentazione. Nel display abbiamo un segnale di RS 232 e potenza positiva e negativa. La retroilluminazione è ancora presente, anch'essa già collegata (identificata da BKL).

Passaggio 4: codice sorgente

Nel codice sorgente di questo progetto, devi includere la seriale e la tastiera. Ha un set RX_PIN e un TX_PIN, necessari per il software seriale, e anche l'INVERTED 1. Questo è stato posto sotto per amplificare il segnale che utilizza un ingresso con logica invertita.

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

Passaggio 5: visualizza i comandi

Visualizza comandi
Visualizza comandi

Importante: in questo display, non è sufficiente metterci sopra una stringa. Devi inviare caratteri di controllo. Il PDF contiene il link del sito dove si dispone di un manuale di questa visualizzazione. Ma se hai un display seriale di un'altra marca, è bene guardare i loro codici di controllo che si riferiscono a questo. In questo modello, ad esempio, quando inviamo un certo controllo (informazioni per questo display, per esempio), dobbiamo inviare un prefisso, il numero 254, per abilitare la comunicazione.

Quindi abbiamo impostato un ARRAY per facilitare le cose, che è una raccolta di variabili a cui si accede con un indice numerico. Questo verrà inviato al display come configurazione iniziale.

//comando para limpar toda a tela do displayconst char limparTela = { 254, 1}; //comando di configurazione iniziale /* 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};

Passaggio 6: funzionamento della tastiera

Come funziona la tastiera? Innanzitutto, monta un array. Questo array è del carattere che verrà effettivamente visualizzato lì. Quindi se metto una X, quando premo il primo pulsante a sinistra in alto, viene visualizzato. Questo è il contenuto della tastiera, che è ciò che comanderà.

Altre cose di cui abbiamo la definizione sono il numero di riga 4 e il numero di colonna 4, nel caso dell'ARRAY di questa tastiera. Abbiamo ancora i pin delle linee, che sono i pin Arduino, e i pin della colonna. Abbiamo ancora un generatore di tastiere customKeypad con i parametri simbolo, pin, riga e colonna.

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

Passaggio 7: impostazione della password

In questa parte, definiamo la password, quindi dobbiamo inserire una password, che è una stringa vuota. Di seguito, mettiamo l'istanza del 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 seriale SoftwareSerial displaySerial = SoftwareSerial(RX_PIN, TX_PIN, INVERTED);

Passaggio 8: configurazione

Per quanto riguarda il Setup, ecco il displaySerial.begin (2, 400), che riguarda la velocità. Nel nostro caso, questo è sufficiente per inviare un byte. Successivamente, c'è un'attesa di 700 millisecondi. Includiamo il displaySerial.print (initialConfig) dalla configurazione iniziale con un nuovo ritardo di 10 millisecondi, e passiamo alla funzione di avvio. Nella funzione di avvio, mettiamo displaySerial.print ("password:").

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); //imposta una configurazione iniziale per visualizzare displaySerial.print(configInicial); ritardo(10); inizio(); } //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:"); }

Passaggio 9: ciclo

Nel ciclo, creiamo un customKey = customKeypad.getKey(), e nella sequenza, inseriamo un comando Switch.

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

Interruttore ad anello parte 1

All'interno del comando Switch: mostra l'elenco delle possibilità di tasti stampabili, se premuto, e incrementa la password: prende la customKey e concatena la password inserita. Successivamente, displaySerial.print (customKey) mostra il contenuto della chiave.

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); //imprimere la tela o il simbolo premuto displaySerial.print(customKey); rottura;

Interruttore ad anello parte 2

In questo codice, mostriamo uno scenario se viene premuto il tasto CLEAR. Se digiti la lettera C e cancelli la variabile che contiene la password che stai digitando, chiama il comando per cancellare lo schermo e si riavvia.

//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 un messaggio per digitare un messaggio iniziale(); rottura;

Interruttore ad anello parte 3

Un'altra possibilità è se si digita la lettera E. In questo caso, lo schermo verrà pulito e analizzato se la password inserita è corretta o errata. Successivamente, daremo un nuovo ritardo di 2 secondi, cancelleremo lo schermo, reimposteremo la variabile password e torneremo all'inizio.

//caso a tecla ENTER seja pressionada, devemos comparar as senhas case 'e': //limpa a tela displaySerial.print(limparTela); //se a 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 ed esperar uma nova senha ser digitada delay(2000); displaySerial.print(limparTela);

Consigliato: