Orodha ya maudhui:

Kinanda ya Dashibodi iliyo na Uonyesho wa LCD na Arduino Uno: Hatua 9
Kinanda ya Dashibodi iliyo na Uonyesho wa LCD na Arduino Uno: Hatua 9

Video: Kinanda ya Dashibodi iliyo na Uonyesho wa LCD na Arduino Uno: Hatua 9

Video: Kinanda ya Dashibodi iliyo na Uonyesho wa LCD na Arduino Uno: Hatua 9
Video: A 1000 Year Old Abandoned Italian Castle - Uncovering It's Mysteries! 2024, Julai
Anonim
Image
Image
Kinanda ya Dashibodi iliyo na Uonyesho wa LCD na Arduino Uno
Kinanda ya Dashibodi iliyo na Uonyesho wa LCD na Arduino Uno
Kinanda ya Dashibodi iliyo na Uonyesho wa LCD na Arduino Uno
Kinanda ya Dashibodi iliyo na Uonyesho wa LCD na Arduino Uno

Hii ni kibodi ya matriki inayoendesha pamoja na onyesho la LCD na Arduino Uno, msingi zaidi ambao upo leo. Kusudi la usanidi huu ni kuunda programu inayopokea nywila iliyochapishwa kwenye kibodi ya tumbo, ikilinganishwa na nywila sahihi, na kuonyesha ujumbe wa uthibitisho kwenye onyesho.

Ni muhimu kukumbuka kuwa kibodi zote za matrix na onyesho hili hufanya kazi na ESP8266 na ESP32.

Kama unavyoona, tunaimarisha mzunguko na Arduino na USB, kwani hatutumii chanzo cha nje. Waya nane zilizounganishwa kwa njia rahisi sana kwa bandari za Arduino hufanya unganisho la kibodi yetu. Kibodi hii haina nguvu na haina maana, ambayo inawezesha sana unganisho.

Onyesho limeunganishwa na Arduino kupitia UART, bandari ya serial, ambayo pia inapeana nguvu kifaa.

Katika onyesho, tunaonyesha kwenye video mzunguko wetu ukiangalia ikiwa nenosiri lililochapishwa kwenye kibodi ni sahihi au la.

Katika PDF iliyotumiwa kwenye video na inapatikana hapa, tuna pinout kamili ya chip inayotumika.

Hatua ya 1: Uonyesho wa Serial

Uonyesho wa Serial
Uonyesho wa Serial
Uonyesho wa Serial
Uonyesho wa Serial

Hii ndio onyesho la mfululizo linalowasiliana na UART, ambayo ni RS na TXRX. Pia inapatikana katika matoleo ya I2C, lakini mifano mingine itabaki kwa mkutano ujao. Katika kesi hii, onyesho hili hufanya kazi na UART na RS.

Hatua ya 2: Kibodi ya Matrix

Kibodi ya Matrix
Kibodi ya Matrix

Mfano wa kibodi ya tumbo ambayo tunatumia ni ile ya picha, na iko upande wa kulia. Tuna mchoro ambao unaonyesha jinsi inavyofanya kazi. Kwa kweli ina mistari 4x4 tu. Kwa hivyo, hutumia kiwango cha chini cha waya; waya moja kwa kila safu na safu, ili kuwe na waya nane kwa jumla.

Haihitaji nguvu kwa sababu inafanya kazi kama ifuatavyo: wakati 7 imebanwa, kibodi huchukua 7 na inaunganisha kwenye safu na safu, ambayo inafanya kitambulisho iwezekanavyo kwa skanning algorithm moja kwa moja.

Ni muhimu kukumbuka kuwa kibodi yoyote ya 4x4 ambayo ni alama ya nukta itafanya kazi katika mkutano huu.

Hatua ya 3: Mkutano

Mkutano
Mkutano

Katika mpango wa jumla, tunaunganisha waya nane moja kwa moja kwenye bandari za Arduino, kwani kibodi haina nguvu. Katika onyesho, tuna ishara ya RS 232, na nguvu nzuri na hasi. Taa ya nyuma bado iko, ambayo pia tayari imeunganishwa (imetambuliwa na BKL).

Hatua ya 4: Nambari ya Chanzo

Katika nambari ya chanzo ya mradi huu, lazima ujumuishe serial na keypad. Ina RX_PIN iliyowekwa na TX_PIN, muhimu kwa programu ya serial, na pia INVERTED 1. Hii iliwekwa chini ili kukuza ishara inayotumia pembejeo na mantiki iliyogeuzwa.

// biblioteca Respável Pela comunicação com o onyesha LCD # ni pamoja na // biblioteca Respá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 Ardu Onyesha LCD #fafanua TX_PIN 3 // inverte a lógica dos pinos Rx e Tx, tratando LOW como HIGH na kinyume chake #fasili INVERTED 1

Hatua ya 5: Onyesha Amri

Onyesha Amri
Onyesha Amri

Muhimu: Katika onyesho hili, haitoshi tu kuweka kamba juu yake. Unahitaji kutuma herufi za kudhibiti. PDF ina kiunga cha wavuti ambapo una mwongozo wa onyesho hili. Lakini ikiwa una onyesho mfululizo la chapa nyingine, ni vizuri kuangalia nambari zao za kudhibiti zinazohusu hii. Kwa mfano huu, kwa mfano, tunapotuma udhibiti fulani (habari kwa onyesho hili, kwa mfano), tunahitaji kutuma kiambishi awali, namba 254, kuwezesha mawasiliano.

Kwa hivyo tulianzisha ARRAY kuwezesha vitu, ambayo ni mkusanyiko wa anuwai ambazo zinapatikana kwa faharisi ya nambari. Hii itatumwa kwenye onyesho kama usanidi wa kwanza.

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

Hatua ya 6: Uendeshaji wa Kinanda

Je! Kibodi inafanyaje kazi? Kwanza, inaweka safu. Safu hii ni ya tabia ambayo itaonyeshwa hapo hapo. Kwa hivyo ikiwa nitaweka X, ninapobonyeza kitufe cha kwanza cha kushoto hapo juu, inaonyeshwa. Hii ndio yaliyomo kwenye kibodi, ambayo ndio itaamuru.

Vitu vingine tunayo ufafanuzi ni safu namba 4 na safu wima ya 4, katika kesi ya ARRAY ya kibodi hii. Bado tuna pini za mistari, ambazo ni pini za Arduino, na pini za safu. Bado tuna mjenzi wa Keypad Keypad mwenye alama, pini, safu, na vigezo vya safu.

const byte LINHAS = 4; // número de linhas kufanya 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] = {{'' ',' 1 ',' 2 ',' 3 '}, { 'B', '4', '5', '6'}, {'C', '7', '8', '9'}, {'D', 'c', '0', 'e '}}; PIN 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 of Keypad, answerável por capturar a tecla pressionada Keypad customKeypad = Keypad (makeKeymap (SIMBOLOS), PINOS_LINHA, PINOS_COLUNA, LINHAS, COLUNAS);

Hatua ya 7: Kuweka Nenosiri

Katika sehemu hii, tunafafanua nenosiri, na kisha tunahitaji kuingiza nywila, ambayo ni kamba tupu. Hapo chini, tunaweka mfano wa softwareSerial.

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

Hatua ya 8: Sanidi

Kwa usanidi, hapa kuna onyeshoSerial.begin (2, 400), ambayo ni juu ya kasi. Kwa upande wetu, hii ni ya kutosha kutuma baiti. Kufuatia hii, kuna subira ya millisekunde 700. Sisi ni pamoja na displaySerial.print (initialConfig) kutoka kwa usanidi wa kwanza na ucheleweshaji mpya wa milliseconds 10, na tunakwenda kwenye kazi ya kuanza. Katika kazi ya kuanza, tunaweka displaySerial.print ("nywila:").

kuanzisha batili () {Serial.begin (2400); // inicializando serial de comunicação com o display // muhimu kwa kiwango cha baud ser de 2400 displaySerial.begin (2400); // tempo de espera pela inicialização fanya ucheleweshaji wa kuonyesha (700); // seta usanidi wa ndani kuonyesha DisplaySerial.print (configInicial); kuchelewesha (10); inicio (); } // função Respá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. batili inicio () {displaySerial.print ("Senha:"); }

Hatua ya 9: Kitanzi

Katika kitanzi, tunaunda customKey = customKeypad.getKey (), na kwa mlolongo tunaingiza amri ya Kubadilisha.

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

Kitanzi Badilisha Sehemu ya 1

Ndani ya amri ya Kubadilisha: inaonyesha orodha ya uwezekano wa funguo zinazoweza kuchapishwa, ikiwa imeshinikizwa, na inaongeza nywila: inachukua customKey na inasadikisha nywila iliyoingizwa. Ifuatayo, onyesho la Serial.print (customKey) linaonyesha yaliyomo muhimu.

kubadili (customKey) {// caso alguma das teclas imprimíveis foi pressionada case 'A': kesi 'B': kesi 'C': kesi 'D': kesi '0': kesi '1': kesi '2': kesi '3': kesi '4': kesi '5': kesi '6': kesi '7': kesi '8': kesi '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); kuvunja;

Kitanzi Badilisha Sehemu ya 2

Katika nambari hii, tunaonyesha hali ikiwa kitufe cha WAZI ni wazi. Ikiwa unachapa herufi C na uondoe ubadilishaji unaoshikilia nywila unayoandika, basi inaita amri ya kusafisha skrini na kuanza tena.

// caso a tecla WAZI tenha sido pressionada kesi '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); // usanidi wa maandishi kwa nambari ya senha inicio (); kuvunja;

Kitanzi Badilisha Sehemu ya 3

Uwezekano mwingine ni ikiwa unachapa barua E. Katika kesi hii, skrini itasafishwa na kuchambuliwa ikiwa nenosiri lililoingizwa ni sahihi au sio sahihi. Ifuatayo, tutatoa ucheleweshaji mpya wa sekunde 2, futa skrini, weka upya nywila, na urudi mwanzoni.

// caso a tecla INGIA seja pressionada, devemos kulinganisha na senhas kesi '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 badada nyingine {Serial.println ("Senha Incorreta!"); // imprime mensagem de senha incorreta displaySerial.print ("Senha Incorreta!"); } // aguarda 2 segundos kwa limpar a tela novamente na esperar uma nova senha ser digitada kuchelewa (2000); onyeshaSerial.print (limparTela);

Ilipendekeza: