Përmbajtje:

Tastiera e panelit me ekran LCD dhe Arduino Uno: 9 hapa
Tastiera e panelit me ekran LCD dhe Arduino Uno: 9 hapa

Video: Tastiera e panelit me ekran LCD dhe Arduino Uno: 9 hapa

Video: Tastiera e panelit me ekran LCD dhe Arduino Uno: 9 hapa
Video: Умный контроллер MKS Gen L - RepRap 2024, Nëntor
Anonim
Image
Image
Tastiera e Panelit me Ekran LCD dhe Arduino Uno
Tastiera e Panelit me Ekran LCD dhe Arduino Uno
Tastiera e Panelit me Ekran LCD dhe Arduino Uno
Tastiera e Panelit me Ekran LCD dhe Arduino Uno

Kjo është një tastierë matricë që funksionon së bashku me një ekran LCD dhe një Arduino Uno, më themelorja që ekziston sot. Qëllimi i këtij konfigurimi është të krijojë një program që merr një fjalëkalim të shtypur në tastierën e matricës, e krahason atë me fjalëkalimin e duhur dhe shfaq një mesazh konfirmimi në ekran.

Importantshtë e rëndësishme të mbani mend se si tastiera e matricës ashtu edhe kjo ekran funksionojnë me ESP8266 dhe ESP32.

Siç mund ta shihni, ne e furnizojmë qarkun me Arduino me një USB, pasi nuk po përdorim një burim të jashtëm. Tetë tela të lidhur në një mënyrë shumë të thjeshtë me portat e Arduino bëjnë lidhjen e tastierës sonë. Kjo tastierë nuk ka fuqi dhe është pasive, gjë që lehtëson shumë lidhjet.

Ekrani është i lidhur me një Arduino përmes UART, portit serik, i cili gjithashtu fuqizon pajisjen.

Në një demonstrim, ne tregojmë në video qarkun tonë duke kontrolluar nëse fjalëkalimi i shtypur në tastierë është i saktë apo jo.

Në PDF -në e përdorur në video dhe të disponueshme këtu, ne kemi pinoutin e plotë të çipit që po përdoret.

Hapi 1: Shfaqja serike

Shfaqja serike
Shfaqja serike
Shfaqja serike
Shfaqja serike

Ky është ekrani serik që komunikon me UART, i cili është RS me një TXRX. Ekziston gjithashtu në versionet I2C, por modele të tjera do të mbeten për një asamble të ardhshme. Në këtë rast, ky ekran funksionon nga UART by RS.

Hapi 2: Tastiera Matrix

Tastiera Matrix
Tastiera Matrix

Shembulli i tastierës matricë që ne përdorim është ajo e fotografisë, dhe është në anën e djathtë. Ne kemi një diagram që tregon se si funksionon. Në fakt ka vetëm 4x4 rreshta. Kështu, përdor sasinë minimale të telave; një tel për çdo rresht dhe kolonë, në mënyrë që të ketë tetë tela në total.

Nuk ka nevojë për energji sepse funksionon si më poshtë: kur shtypet 7, tastiera merr numrin 7 dhe lidhet me vijën dhe kolonën, gjë që bën të mundur identifikimin duke skanuar algoritmin automatikisht.

Importantshtë e rëndësishme të mbani mend se çdo tastierë 4x4 që është matricë me pika do të funksionojë në këtë asamble.

Hapi 3: Montimi

Kuvendi
Kuvendi

Në skemën e përgjithshme, ne lidhim tetë tela drejtpërdrejt me portat e Arduino, pasi tastiera nuk ka fuqi. Në ekran, ne kemi një sinjal RS 232, dhe fuqi pozitive dhe negative. Drita e prapme është ende e pranishme, e cila gjithashtu është tashmë e lidhur (e identifikuar nga BKL).

Hapi 4: Kodi Burimor

Në kodin burimor të këtij projekti, duhet të përfshini serialin dhe tastierën. Ajo ka një grup RX_PIN dhe një TX_PIN, të nevojshme për softuerin serik, dhe gjithashtu INVERTED 1. Kjo u vendos poshtë për të përforcuar sinjalin që përdor hyrjen me logjikë të përmbysur.

// biblioteca përgjegjëse për komunikimin me ekranin LCD #përfshini // bibliotekën përgjigjen për të kapur një përvojë që ju mund të shtypni pa një përvojë #include // pino invalido apenas usado no contrutor do SoftwareSerial #define RX_PIN 255 // pino TX da nossa ligação Arduino Shfaq LCD #define TX_PIN 3 // inverte a lógica dos pinos Rx e Tx, tratando LOW como HIGH dhe anasjelltas #define INVERTED 1

Hapi 5: Shfaq komandat

Shfaq komandat
Shfaq komandat

E rëndësishme: Në këtë ekran, nuk mjafton vetëm të vendosni një varg mbi të. Ju duhet të dërgoni karaktere kontrolli. PDF përmban lidhjen e faqes ku keni një manual të këtij ekrani. Por nëse keni një shfaqje serike të një marke tjetër, është mirë të shikoni kodet e tyre të kontrollit që i përkasin kësaj. Në këtë model, për shembull, kur dërgojmë një kontroll të caktuar (informacion për këtë ekran, për shembull), duhet të dërgojmë një parashtesë, numrin 254, për të mundësuar komunikimin.

Pra, ne krijuam një ARRAY për të lehtësuar gjërat, e cila është një koleksion variablash që arrihen me një indeks numerik. Kjo do të dërgohet në ekran si një konfigurim fillestar.

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

Hapi 6: Funksionimi i tastierës

Si funksionon tastiera? Së pari, ajo monton një grup. Ky grup është i karakterit që në të vërtetë do të shfaqet atje. Pra, nëse vendos një X, kur shtyp butonin e parë të majtë në krye, shfaqet. Kjo është përmbajtja e tastierës, e cila është ajo që do të komandojë.

Gjëra të tjera për të cilat kemi përkufizimin janë numri i rreshtit 4 dhe numri i kolonës 4, në rastin e ARRAY të kësaj tastiere. Ne ende kemi kunjat e linjave, të cilat janë kunjat Arduino, dhe kunjat e kolonës. Ne ende kemi një krijues të tastierës customKeypad me parametrat e simbolit, pinit, rreshtit dhe kolonës.

const byte LINHAS = 4; // número de linhas do tecladoconst byte COLUNAS = 4; // número de colunas do teclado // definoni uma matriz com os simbolet që dëshirojnë të lidhen me teknologjinë e SIMBOLOS [LINHAS] [COLUNAS] = {{'A', '1', '2', '3'}, { 'B', '4', '5', '6'}, {'C', '7', '8', '9'}, {'D', 'c', '0', 'e '}}; bajt PINOS_LINHA [LINHAS] = {8, 9, 10, 11}; // pinos que indicam as linhas do teclado byte PINOS_COLUNA [COLUNAS] = {4, 5, 6, 7}; // mund të tregohet si kolona të përdorura // instancia de Keypad, të përgjigjet për të kapur një përvojë të shtypjes së tastierës customKeypad = Keypad (makeKeymap (SIMBOLOS), PINOS_LINHA, PINOS_COLUNA, LINHAS, COLUNAS);

Hapi 7: Vendosja e fjalëkalimit

Në këtë pjesë, ne përcaktojmë fjalëkalimin, dhe pastaj duhet të futim një fjalëkalim, i cili është një varg bosh. Më poshtë, ne vendosim shembullin e softuerit Serial.

// variacione të tjera për të përcaktuar armaturën si senhasconst Varg SENHA_ESPERADA = "1234ABCD"; Vargu SENHA_DIGITADA = ""; // instancia de SoftwareSerial para nos comunicar com o Shfaqja përmes softuerit serialSifaqja serialeSerial = SoftwareSerial (RX_PIN, TX_PIN, INVERTED);

Hapi 8: Konfigurimi

Sa për Setup, këtu është displaySerial.begin (2, 400), që ka të bëjë me shpejtësinë. Në rastin tonë, kjo është e mjaftueshme për të dërguar një bajt. Pas kësaj, ka një pritje prej 700 milisekonda. Ne përfshijmë ekraninSerial.print (initialConfig) nga konfigurimi fillestar me një vonesë të re prej 10 milisekonda dhe kalojmë te funksioni i fillimit. Në funksionin e fillimit, ne vendosim displaySerial.print ("fjalëkalimi:").

void setup () {Serial.begin (2400); // inicializando a serial de comunicação com o display // importante o baud rate ser 2400 displaySerial.begin (2400); // tempo de espera pela inicialização do të shfaq vonesën (700); // seta a configuração inicial do display displaySerial.print (configInicial); vonesa (10); inicio (); } // função respondável por imprimir na tela a menaxem para digitar a senha // cha chamada toda vez q a senha foi digitada dhe comparada, também quando // a tecla limpar display foi pressionada. void inicio () {displaySerial.print ("Senha:"); }

Hapi 9: Lak

Në lak, ne krijojmë një customKey = customKeypad.getKey (), dhe në sekuencë, futim një komandë Switch.

// kapni një përvojë shtypëse për ta bërë atë customKey = customKeypad.getKey (); // caso alguma tecla foi pressionada if (customKey) {Serial.println (customKey); kaloni (customKey) { /… /}}

Loop Switch Pjesa 1

Brenda komandës Switch: ajo tregon listën e mundësive të çelësave të printueshëm, nëse shtypet, dhe rrit fjalëkalimin: merr customKey dhe bashkon fjalëkalimin e futur. Tjetra, displaySerial.print (customKey) tregon përmbajtjen kryesore.

switch (customKey) {// caso alguma das teclas imprimíveis foi pressionada rast 'A': rast 'B': rast 'C': rast 'D': rast '0': rast '1': rast '2': rast '3': rasti '4': rasti '5': rasti '6': rasti '7': rasti 8 Serial.println (SENHA_DIGITADA); // imrpime në tela ose në simbolin e shtypjes së ekranitSerial.print (customKey); pushim;

Loop Switch Pjesa 2

Në këtë kod, ne tregojmë një skenar nëse shtypet çelësi CLEAR. Nëse shtypni shkronjën C dhe pastroni ndryshoren që mban fjalëkalimin që po shkruani, atëherë ajo thërret komandën për të pastruar ekranin dhe riniset.

// rasti tekla CLEAR vetëm në rastet e shtypjes së rastit 'c': // kufizoni një ndryshim që do të ruajë një senha që është dërguar me një shifër SENHA_DIGITADA = ""; // chama o comando para limpar a tela displaySerial.print (limparTela); // konfiguroni një menaxher para digjital dhe senha inicio (); pushim;

Loop Switch Pjesa 3

Një mundësi tjetër është nëse shtypni shkronjën E. Në këtë rast, ekrani do të pastrohet dhe analizohet nëse fjalëkalimi i futur është i saktë ose i pasaktë. Tjetra, ne do të japim një vonesë të re prej 2 sekondash, do të pastrojmë ekranin, do të rivendosim ndryshoren e fjalëkalimit dhe do të kthehemi në fillim.

// caso a tecla ENTER seja pressionada, devemos comparar as senhas case 'e': // limpa a tela displaySerial.print (limparTela); // se a digitale 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 correta displaySerial.print ("Senha Incorreta!"); } // aguarda 2 segundos para limpar a tela novamente e esperar uma nova senha ser digitada vonesë (2000); displaySerial.print (limparTela);

Recommended: