Sisällysluettelo:

Kojelaudan näppäimistö LCD -näytöllä ja Arduino Unolla: 9 vaihetta
Kojelaudan näppäimistö LCD -näytöllä ja Arduino Unolla: 9 vaihetta

Video: Kojelaudan näppäimistö LCD -näytöllä ja Arduino Unolla: 9 vaihetta

Video: Kojelaudan näppäimistö LCD -näytöllä ja Arduino Unolla: 9 vaihetta
Video: DIY Radar With Ultrasonic Sensor And Chat-GPT Generated Arduino Code | Coders Cafe 2024, Heinäkuu
Anonim
Image
Image
Kojelaudan näppäimistö LCD -näytöllä ja Arduino Unolla
Kojelaudan näppäimistö LCD -näytöllä ja Arduino Unolla
Kojelaudan näppäimistö LCD -näytöllä ja Arduino Unolla
Kojelaudan näppäimistö LCD -näytöllä ja Arduino Unolla

Tämä on matriisinäppäimistö, joka toimii yhdessä LCD -näytön ja Arduino Unon kanssa, joka on nykyään perustavanlaatuisin. Tämän asennuksen tarkoituksena on luoda ohjelma, joka vastaanottaa matriisinäppäimistöllä kirjoitetun salasanan, vertaa sitä oikeaan salasanaan ja näyttää vahvistusviestin näytöllä.

On tärkeää muistaa, että sekä matriisinäppäimistö että tämä näyttö toimivat ESP8266: n ja ESP32: n kanssa.

Kuten näette, käytämme virtapiiriä Arduinolla USB: llä, koska emme käytä ulkoista lähdettä. Kahdeksan johtoa, jotka on liitetty erittäin yksinkertaisella tavalla Arduinon portteihin, muodostavat näppäimistömme yhteyden. Tällä näppäimistöllä ei ole virtaa ja se on passiivinen, mikä helpottaa suuresti yhteyksiä.

Näyttö on kytketty Arduinoon UART -sarjaportin kautta, joka myös käyttää laitetta.

Esittelyssä näytämme videossa piirimme, joka tarkistaa, onko näppäimistöllä kirjoitettu salasana oikea vai ei.

Videossa käytetyssä PDF -tiedostossa, joka on saatavilla täällä, meillä on käytettävän sirun täydellinen pinout.

Vaihe 1: Sarjanäyttö

Sarjanäyttö
Sarjanäyttö
Sarjanäyttö
Sarjanäyttö

Tämä on sarjakuva, joka kommunikoi UARTin kanssa, joka on RS TXRX: n kanssa. Se on olemassa myös I2C -versioissa, mutta muut mallit jäävät tulevaa kokoonpanoa varten. Tässä tapauksessa tämä näyttö toimii UART by RS: n avulla.

Vaihe 2: Matrix -näppäimistö

Matrix -näppäimistö
Matrix -näppäimistö

Esimerkki käyttämästämme matriisinäppäimistöstä on valokuva, ja se on oikealla puolella. Meillä on kaavio, joka näyttää kuinka se toimii. Siinä on itse asiassa vain 4x4 -linjoja. Siten se käyttää vähimmäismäärää johtoja; yksi lanka kullekin riville ja sarakkeelle, niin että lankoja on yhteensä kahdeksan.

Se ei tarvitse virtaa, koska se toimii seuraavasti: kun näppäintä 7 painetaan, näppäimistö ottaa 7: n ja muodostaa yhteyden linjaan ja sarakkeeseen, mikä mahdollistaa tunnistamisen skannaamalla algoritmin automaattisesti.

On tärkeää muistaa, että mikä tahansa 4x4 -näppäimistö, joka on pistematriisi, toimii tässä kokoonpanossa.

Vaihe 3: Kokoonpano

Kokoonpano
Kokoonpano

Yleisessä järjestelmässä yhdistämme kahdeksan johtoa suoraan Arduinon portteihin, koska näppäimistöllä ei ole virtaa. Näytössä on RS 232 -signaali sekä positiivinen ja negatiivinen teho. Taustavalo on edelleen olemassa, joka on myös jo kytketty (tunnistettu BKL: llä).

Vaihe 4: Lähdekoodi

Tämän projektin lähdekoodissa on oltava sarja- ja näppäimistö. Siinä on sarjaohjelmistolle välttämätön sarja RX_PIN ja TX_PIN sekä INVERTED 1. Tämä sijoitettiin alle vahvistamaan signaalia, joka käyttää tuloa käänteisellä logiikalla.

// biblioteca responseável pela comunicação com o display LCD #include // biblioteca responseável por capturar a tecla que foi pressionada no teclado #include // pino invalidido apenas usado no contrutor do SoftwareSerial #define RX_PIN 255 // pino TX da nossa ligação Arduino x Näytön nestekidenäyttö #define TX_PIN 3 // käänteinen määrä pinos Rx e Tx, tratando LOW como HIGH e päinvastoin #define INVERTED 1

Vaihe 5: Näytä komennot

Näytä komennot
Näytä komennot

Tärkeää: Tässä näytössä ei riitä, että asetat siihen vain merkkijonon. Sinun on lähetettävä ohjausmerkkejä. PDF sisältää sen sivuston linkin, jolla on tämän näytön käyttöopas. Mutta jos sinulla on toisen merkin sarjanäyttö, on hyvä tarkastella niiden ohjauskoodeja, jotka liittyvät tähän. Esimerkiksi tässä mallissa, kun lähetämme tietyn ohjaimen (esimerkiksi tämän näytön tiedot), meidän on lähetettävä etuliite, numero 254, kommunikoinnin mahdollistamiseksi.

Joten perustimme ARRAY: n helpottamaan asioita, joka on kokoelma muuttujia, joihin pääsee numeerisella indeksillä. Tämä lähetetään näytölle alkuasetuksina.

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

Vaihe 6: Näppäimistön käyttö

Miten näppäimistö toimii? Ensinnäkin se asentaa matriisin. Tämä taulukko on merkki, joka todella näytetään siellä. Joten jos laitan X: n, kun painan ensimmäistä vasenta painiketta yläreunassa, se näkyy. Tämä on näppäimistön sisältö, jota se komentaa.

Muita määritelmiämme ovat rivinumero 4 ja sarakkeen numero 4 tämän näppäimistön ARRAY: n tapauksessa. Meillä on edelleen viivojen nastat, jotka ovat Arduino -nastat ja sarakkeen nastat. Meillä on edelleen customKeypad -näppäimistörakentaja, jossa on symboli-, nasta-, rivi- ja sarakeparametrit.

const tavu LINHAS = 4; // número de linhas do tecladoconst byte COLUNAS = 4; // número de colunas do teclado // määritä 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 '}}; tavu PINOS_LINHA [LINHAS] = {8, 9, 10, 11}; // pinos que indicam linhas do teclado byte PINOS_COLUNA [COLUNAS] = {4, 5, 6, 7}; // pinos que indicam as colunas do teclado // instancia de Keypad, response to capturar and tecla pressionada Keypad customKeypad = Näppäimistö (makeKeymap (SIMBOLOS), PINOS_LINHA, PINOS_COLUNA, LINHAS, COLUNAS);

Vaihe 7: Salasanan asetus

Tässä osassa määritämme salasanan ja sitten meidän on annettava salasana, joka on tyhjä merkkijono. Alla esitämme ohjelmistosarjan esiintymän.

// varáveis resposnsáveis por armazenar as senhasconst String SENHA_ESPERADA = "1234ABCD"; Jono SENHA_DIGITADA = ""; // instancia de SoftwareSerial para nos comunicar com o Näyttö sarjassa SoftwareSerial displaySerial = SoftwareSerial (RX_PIN, TX_PIN, INVERTED);

Vaihe 8: Asennus

Mitä tulee määritykseen, tässä on displaySerial.begin (2, 400), joka kertoo nopeudesta. Meidän tapauksessamme tämä riittää tavun lähettämiseen. Tämän jälkeen odotetaan 700 millisekuntia. Sisällytämme displaySerial.print (initialConfig) alkuperäisestä kokoonpanosta uudella 10 millisekunnin viiveellä ja siirrymme aloitustoimintoon. Laitamme käynnistystoimintoon displaySerial.print ("password:").

void setup () {Serial.begin (2400); // inicializando a serial de comunicação com o display // importante tai baud rate 2400 displaySerial.begin (2400); // tempo de espera pela inicialização do display delay (700); // seta a configuração inicial do display displaySerial.print (configInicial); viive (10); inicio (); } // função responseá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:"); }

Vaihe 9: Silmukka

Silmukassa luomme customKey = customKeypad.getKey () ja annamme järjestyksessä Switch -komennon.

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

Silmukkakytkin Osa 1

Switch -komennon sisällä: se näyttää tulostettavien näppäinten mahdollisuuksien luettelon, jos niitä painetaan, ja lisää salasanaa: ottaa customKey -näppäimen ja yhdistää syötetyn salasanan. Seuraavaksi displaySerial.print (customKey) näyttää avaimen sisällön.

kytkin (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': tapaus 4 Serial.println (SENHA_DIGITADA); // imrpime na tela o símbolo pressionado displaySerial.print (customKey); tauko;

Silmukkakytkin Osa 2

Tässä koodissa näytämme skenaarion, jos CLEAR -näppäintä painetaan. Jos kirjoitat C -kirjaimen ja tyhjennät muuttujan, joka sisältää kirjoittamasi salasanan, se kutsuu komennon näytön tyhjentämiseksi ja käynnistyy uudelleen.

// 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 a mensagem para digitar a senha inicio (); tauko;

Silmukkakytkin Osa 3

Toinen mahdollisuus on, jos kirjoitat kirjaimen E. Tässä tapauksessa näyttö puhdistetaan ja analysoidaan, jos syötetty salasana on oikea tai väärä. Seuraavaksi annamme uuden 2 sekunnin viiveen, tyhjennä näyttö, nollaa salasanamuuttuja ja palaamme alkuun.

// 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!"); // impime mensagem de senha korjaus displaySerial.print ("Senha Correta !!!"); } // caso senha esteja errada else {Serial.println ("Senha Incorreta!"); // imprime mensagem de senha increta displaySerial.print ("Senha Incorreta!"); } // aguarda 2 segundos para limpar a tela novamente e esperar uma nova senha ser digitada delay (2000); displaySerial.print (limparTela);

Suositeltava: