Taula de continguts:

Teclat del tauler amb pantalla LCD i Arduino Uno: 9 passos
Teclat del tauler amb pantalla LCD i Arduino Uno: 9 passos

Vídeo: Teclat del tauler amb pantalla LCD i Arduino Uno: 9 passos

Vídeo: Teclat del tauler amb pantalla LCD i Arduino Uno: 9 passos
Vídeo: Сводные таблицы Excel с нуля до профи за полчаса + Дэшборды! | 1-ое Видео курса "Сводные Таблицы" 2024, Juliol
Anonim
Image
Image
Teclat de tauler amb pantalla LCD i Arduino Uno
Teclat de tauler amb pantalla LCD i Arduino Uno
Teclat de tauler amb pantalla LCD i Arduino Uno
Teclat de tauler amb pantalla LCD i Arduino Uno

Es tracta d’un teclat matricial que funciona amb una pantalla LCD i un Arduino Uno, el més bàsic que existeix avui en dia. El propòsit d’aquesta configuració és crear un programa que rep una contrasenya escrita al teclat matricial, la compara amb la contrasenya correcta i mostra un missatge de confirmació a la pantalla.

És important recordar que tant el teclat matricial com aquesta pantalla funcionen amb ESP8266 i ESP32.

Com podeu veure, alimentem el circuit amb l’Arduino amb un USB, ja que no fem servir una font externa. Vuit cables connectats d’una manera molt senzilla als ports d’Arduino permeten la connexió del nostre teclat. Aquest teclat no té potència i és passiu, cosa que facilita enormement les connexions.

La pantalla està connectada amb un Arduino mitjançant l’UART, el port sèrie, que també alimenta el dispositiu.

En una demostració, mostrem al vídeo el nostre circuit comprovant si la contrasenya escrita al teclat és correcta o no.

Al PDF utilitzat al vídeo i disponible aquí, tenim el pinout complet del xip que s’utilitza.

Pas 1: visualització en sèrie

Pantalla en sèrie
Pantalla en sèrie
Pantalla en sèrie
Pantalla en sèrie

Aquesta és la pantalla sèrie que comunica amb el UART, que és RS amb un TXRX. També existeix en versions I2C, però restaran altres models per a un proper muntatge. En aquest cas, aquesta pantalla funciona per UART by RS.

Pas 2: teclat Matrix

Teclat Matrix
Teclat Matrix

L’exemple del teclat matricial que fem servir és el de la foto i es troba al costat dret. Tenim un diagrama que mostra com funciona. De fet, només té línies 4x4. Per tant, utilitza la quantitat mínima de cables; un fil per cada fila i columna, de manera que hi hagi vuit cables en total.

No necessita alimentació perquè funciona de la següent manera: quan es prem el 7, el teclat agafa el 7 i es connecta a la línia i a la columna, cosa que fa possible la identificació escanejant l’algoritme automàticament.

És important recordar que qualsevol teclat 4x4 que sigui de matriu de punts funcionarà en aquest muntatge.

Pas 3: Muntatge

muntatge
muntatge

En l’esquema general, connectem vuit cables directament als ports d’Arduino, ja que el teclat no té alimentació. A la pantalla, tenim un senyal de RS 232, i potència positiva i negativa. La llum de fons encara és present, que també ja està connectada (identificada per BKL).

Pas 4: Codi font

Al codi font d’aquest projecte, heu d’incloure la sèrie i el teclat. Té un conjunt RX_PIN i un TX_PIN, necessaris per al programari de sèrie, i també l’INVERTIT 1. Aquest es va col·locar a sota per amplificar el senyal que utilitza l’entrada amb lògica invertida.

// 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 used 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, tractant LOW com HIGH i viceversa #define INVERTED 1

Pas 5: mostra els comandaments

Mostra els comandaments
Mostra els comandaments

Important: en aquesta pantalla, no n’hi ha prou amb posar-hi una cadena. Cal enviar caràcters de control. El PDF conté l'enllaç del lloc on teniu un manual d'aquesta pantalla. Però si teniu una pantalla en sèrie d’una altra marca, és bo mirar els codis de control que s’hi relacionen. En aquest model, per exemple, quan enviem un control determinat (informació per a aquesta pantalla, per exemple), hem d’enviar un prefix, el número 254, per habilitar la comunicació.

Per tant, hem creat un ARRAY per facilitar les coses, que és una col·lecció de variables a les quals s’accedeix amb un índex numèric. Això s'enviarà a la pantalla com a configuració inicial.

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

Pas 6: Funcionament del teclat

Com funciona el teclat? En primer lloc, munta una matriu. Aquesta matriu és del caràcter que realment es mostrarà allà. Així que si poso una X, quan premo el primer botó esquerre de la part superior, es mostrarà. Aquest és el contingut del teclat, que és el que manarà.

Altres coses per a les quals tenim la definició són la fila número 4 i la columna número 4, en el cas de la matriu d’aquest teclat. Encara tenim pins de les línies, que són els pins Arduino, i els pins de la columna. Encara tenim un constructor de teclats personalitzats amb el símbol, el pin, la fila i els paràmetres de la columna.

byte const LINHAS = 4; // número de línies 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 per capturar a tecla pressionada Keypad customKeypad = Keypad (makeKeymap (SIMBOLOS), PINOS_LINHA, PINOS_COLUNA, LINHAS, COLUNAS);

Pas 7: Configuració de la contrasenya

En aquesta part, definim la contrasenya i després cal introduir una contrasenya, que és una cadena buida. A continuació, posem la instància del softwareSerial.

// variáveis resposnsáveis per armazenar as senhasconst String SENHA_ESPERADA = "1234ABCD"; Cadena SENHA_DIGITADA = ""; // instància de SoftwareSerial per a comunicacions com o Visualització via sèrie SoftwareSerial displaySerial = SoftwareSerial (RX_PIN, TX_PIN, INVERTED);

Pas 8: Configuració

Quant a la configuració, aquí teniu el displaySerial.begin (2, 400), que és aproximadament la velocitat. En el nostre cas, això és suficient per enviar un byte. Després d'això, hi ha una espera de 700 mil·lisegons. Incloem el displaySerial.print (initialConfig) de la configuració inicial amb un nou retard de 10 mil·lisegons i anem a la funció d'inici. A la funció d'inici, posem displaySerial.print ("contrasenya:").

configuració nul·la () {Serial.begin (2400); // inicializando a serial de comunicação com o display // important o baud rate ser de 2400 displaySerial.begin (2400); // tempo de espera pela inicialização do display delay (700); // seta a configuração inicial do display displaySerial.print (configInicial); retard (10); inici (); } // função responsável por imprimir na tela a mensagem para digitar a senha // é chamada tota vez q a senha foi digitada e comparada, também quan // a tecla limpar display foi pressionada. void inicio () {displaySerial.print ("Senha:"); }

Pas 9: bucle

Al bucle, creem un customKey = customKeypad.getKey () i, a la seqüència, introduïm una ordre Switch.

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

Loop Switch Part 1

Dins de l'ordre Canvia: mostra la llista de possibilitats de tecles imprimibles, si es prem, i augmenta la contrasenya: pren la clau personalitzada i concatena la contrasenya introduïda. A continuació, displaySerial.print (customKey) mostra el contingut clau.

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ímbol pressionado displaySerial.print (customKey); trencar;

Loop Switch Part 2

En aquest codi, mostrem un escenari per si es prem la tecla CLEAR. Si escriviu la lletra C i esborreu la variable que conté la contrasenya que esteu escrivint, cridarà l'ordre per esborrar la pantalla i reiniciar-se.

// caso a tecla CLEAR ha estat pressionada case 'c': // limpa a variável que guarda a senha que está sendo digitalada SENHA_DIGITADA = ""; // chama o comando para limpar a tela displaySerial.print (limparTela); // configurar un missatge per a digitar a un inici (); trencar;

Loop Switch Part 3

Una altra possibilitat és si escriviu la lletra E. En aquest cas, es netejarà la pantalla i s’analitzarà si la contrasenya introduïda és correcta o incorrecta. A continuació, donarem un nou retard de 2 segons, netejarem la pantalla, restablirem la variable de contrasenya i tornarem al principi.

// 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 segons per limpar a tela novament e esperar uma nova senha ser digitada delay (2000); displaySerial.print (limparTela);

Recomanat: