Cuprins:

Tastatură tablou de bord cu afișaj LCD și Arduino Uno: 9 pași
Tastatură tablou de bord cu afișaj LCD și Arduino Uno: 9 pași

Video: Tastatură tablou de bord cu afișaj LCD și Arduino Uno: 9 pași

Video: Tastatură tablou de bord cu afișaj LCD și Arduino Uno: 9 pași
Video: How to use up to 10 push button switch with 1 Arduino input pin ANPB-V1 2024, Noiembrie
Anonim
Image
Image
Tastatură tablou de bord cu afișaj LCD și Arduino Uno
Tastatură tablou de bord cu afișaj LCD și Arduino Uno
Tastatură tablou de bord cu afișaj LCD și Arduino Uno
Tastatură tablou de bord cu afișaj LCD și Arduino Uno

Aceasta este o tastatură matricială care rulează împreună cu un ecran LCD și un Arduino Uno, cel mai de bază care există astăzi. Scopul acestei configurări este de a crea un program care primește o parolă tastată pe tastatura matricială, o compară cu parola corectă și afișează un mesaj de confirmare pe ecran.

Este important să ne amintim că atât tastatura matricială, cât și acest afișaj funcționează cu ESP8266 și ESP32.

După cum puteți vedea, alimentăm circuitul cu Arduino cu un USB, deoarece nu utilizăm o sursă externă. Opt fire conectate într-un mod foarte simplu la porturile Arduino fac conexiunea tastaturii noastre. Această tastatură nu are putere și este pasivă, ceea ce facilitează foarte mult conexiunile.

Afișajul este conectat cu un Arduino prin UART, portul serial, care alimentează și dispozitivul.

Într-o demonstrație, afișăm în videoclip circuitul nostru verificând dacă parola tastată pe tastatură este corectă sau nu.

În PDF-ul folosit în videoclip și disponibil aici, avem pinout-ul complet al cipului utilizat.

Pasul 1: Afișaj serial

Afișaj serial
Afișaj serial
Afișaj serial
Afișaj serial

Acesta este afișajul serial care comunică cu UART, care este RS cu un TXRX. Există și în versiunile I2C, dar alte modele vor rămâne pentru o asamblare viitoare. În acest caz, acest afișaj funcționează de către UART by RS.

Pasul 2: Tastatură Matrix

Tastatură Matrix
Tastatură Matrix

Exemplul tastaturii matrice pe care îl folosim este cel al fotografiei și este în partea dreaptă. Avem o diagramă care arată cum funcționează. De fapt are doar linii 4x4. Astfel, folosește cantitatea minimă de fire; un fir pentru fiecare rând și coloană, astfel încât să existe opt fire în total.

Nu are nevoie de energie, deoarece funcționează după cum urmează: când 7 este apăsat, tastatura ridică 7 și se conectează la linie și coloană, ceea ce face posibilă identificarea prin scanarea automată a algoritmului.

Este important să ne amintim că orice tastatură 4x4 care este dot matrix va funcționa în acest ansamblu.

Pasul 3: Asamblare

Asamblare
Asamblare

În schema generală, conectăm opt fire direct la porturile Arduino, deoarece tastatura nu are alimentare. Pe afișaj, avem un semnal RS 232 și o putere pozitivă și negativă. Lumina de fundal este încă prezentă, care este și ea deja conectată (identificată prin BKL).

Pasul 4: Cod sursă

În codul sursă al acestui proiect, trebuie să includeți seria și tastatura. Are un set RX_PIN și un TX_PIN, necesare pentru software-ul serial, precum și INVERTED 1. Acesta a fost plasat dedesubt pentru a amplifica semnalul care utilizează intrarea cu logică inversată.

// biblioteca responsável pela comunicação com o display LCD # include // biblioteca responsável por capturar a tecla that foi pressureada 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, tratando LOW como HIGH și viceversa #define INVERTED 1

Pasul 5: Afișați comenzile

Afișează comenzi
Afișează comenzi

Important: pe acest afișaj, nu este suficient să puneți doar un șir pe el. Trebuie să trimiteți caractere de control. PDF-ul conține linkul site-ului unde aveți un manual al acestui afișaj. Dar dacă aveți un afișaj serial al unei alte mărci, este bine să vă uitați la codurile lor de control care se referă la aceasta. În acest model, de exemplu, atunci când trimitem un anumit control (informații pentru acest afișaj, de exemplu), trebuie să trimitem un prefix, numărul 254, pentru a permite comunicarea.

Așadar, am creat un ARRAY pentru a facilita lucrurile, care este o colecție de variabile care sunt accesate cu un index numeric. Acesta va fi trimis pe ecran ca o configurație inițială.

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

Pasul 6: Funcționarea tastaturii

Cum funcționează tastatura? În primul rând, montează o matrice. Această matrice are caracterul care va fi afișat de fapt acolo. Deci, dacă pun un X, când apăs primul buton din stânga din partea de sus, se afișează. Acesta este conținutul tastaturii, care este ceea ce va comanda.

Alte lucruri pentru care avem definiția sunt rândul numărul 4 și numărul coloanei 4, în cazul ARRAY al acestei tastaturi. Mai avem pinii liniilor, care sunt pinii Arduino și pinii coloanei. Încă avem un constructor personalizat de tastatură cu tastatură, cu simbolul, pinul, rândul și parametrii coloanei.

octet const LINHAS = 4; // numărul de linii do tecladoconst byte COLUNAS = 4; // număr de coloane do teclado // define uma matriz com os símbolos that 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 '}}; octet 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 pressureada Keypad customKeypad = Keypad (makeKeymap (SIMBOLOS), PINOS_LINHA, PINOS_COLUNA, LINHAS, COLUNAS);

Pasul 7: Setarea parolei

În această parte, definim parola și apoi trebuie să introducem o parolă, care este un șir gol. Mai jos, punem instanța softwareSerial.

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

Pasul 8: Configurare

În ceea ce privește setarea, aici este displaySerial.begin (2, 400), care este aproximativ viteza. În cazul nostru, acest lucru este suficient pentru a trimite un octet. După aceasta, există o așteptare de 700 de milisecunde. Includem displaySerial.print (initialConfig) din configurația inițială cu o nouă întârziere de 10 milisecunde și mergem la funcția de pornire. În funcția de pornire, punem displaySerial.print ("parolă:").

void setup () {Serial.begin (2400); // inițializând un serial de comunicație cu o afișare // importante o baud rate ser de 2400 displaySerial.begin (2400); // tempo de espera pela initialização do display delay (700); // seta a configuração initial do display displaySerial.print (configInicial); întârziere (10); inicio (); } // funcție responsabilă pentru imprimir na tela a mensagem pentru digitar a senha // é chamada toda vez q a senha foi digitada e comparada, pream când // a tecla limpar display foi pressionada. void inicio () {displaySerial.print ("Senha:"); }

Pasul 9: Buclă

În buclă, creăm un customKey = customKeypad.getKey (), iar în secvență, introducem o comandă Switch.

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

Comutator buclă Partea 1

În interiorul comenzii Comutare: afișează lista posibilităților tastelor imprimabile, dacă este apăsată, și crește parola: preia customKey și concatenează parola introdusă. Apoi, displaySerial.print (customKey) afișează conținutul cheie.

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 simbol a senha que estamos digitando SENHA_DIGITADA + = customKey; Serial.println (SENHA_DIGITADA); // imrpime na tela sau simbol presionat displaySerial.print (customKey); pauză;

Comutatorul buclei partea 2

În acest cod, afișăm un scenariu pentru dacă este apăsată tasta CLEAR. Dacă tastați litera C și ștergeți variabila care deține parola pe care o tastați, atunci apelează comanda pentru a șterge ecranul și a reporni.

// 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 pentru limpar a tela displaySerial.print (limparTela); // configura a mensagem pentru digitar a senha inicio (); pauză;

Comutatorul buclei partea 3

O altă posibilitate este dacă tastați litera E. În acest caz, ecranul va fi curățat și analizat dacă parola introdusă este corectă sau incorectă. Apoi, vom oferi o nouă întârziere de 2 secunde, vom șterge ecranul, vom reseta variabila parolă și vom reveni la început.

// 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 pentru limpar a tela novament și sper uma nova senha ser digitada delay (2000); displaySerial.print (limparTela);

Recomandat: