Turinys:

Prietaisų skydelio klaviatūra su LCD ekranu ir „Arduino Uno“: 9 žingsniai
Prietaisų skydelio klaviatūra su LCD ekranu ir „Arduino Uno“: 9 žingsniai

Video: Prietaisų skydelio klaviatūra su LCD ekranu ir „Arduino Uno“: 9 žingsniai

Video: Prietaisų skydelio klaviatūra su LCD ekranu ir „Arduino Uno“: 9 žingsniai
Video: CS50 2013 - Week 9 2024, Lapkritis
Anonim
Image
Image
Prietaisų skydelio klaviatūra su LCD ekranu ir „Arduino Uno“
Prietaisų skydelio klaviatūra su LCD ekranu ir „Arduino Uno“
Prietaisų skydelio klaviatūra su LCD ekranu ir „Arduino Uno“
Prietaisų skydelio klaviatūra su LCD ekranu ir „Arduino Uno“

Tai matricinė klaviatūra, veikianti kartu su skystųjų kristalų ekranu ir „Arduino Uno“- pati paprasčiausia šiandien. Šios sąrankos tikslas yra sukurti programą, kuri gautų matricos klaviatūra įvestą slaptažodį, palygintų jį su teisingu slaptažodžiu ir ekrane parodytų patvirtinimo pranešimą.

Svarbu prisiminti, kad tiek matricinė klaviatūra, tiek šis ekranas veikia su ESP8266 ir ESP32.

Kaip matote, grandinę maitiname „Arduino“per USB, nes nenaudojame išorinio šaltinio. Aštuoni laidai, labai paprastai prijungti prie „Arduino“prievadų, jungia mūsų klaviatūrą. Ši klaviatūra neturi galios ir yra pasyvi, o tai labai palengvina ryšius.

Ekranas yra prijungtas prie „Arduino“per UART, nuoseklųjį prievadą, kuris taip pat maitina įrenginį.

Demonstracijoje vaizdo įraše parodome savo grandinę, tikrinančią, ar klaviatūroje įvestas slaptažodis yra teisingas, ar ne.

Vaizdo įraše naudojamame ir čia esančiame PDF faile mes turime visą naudojamo lusto kodą.

1 veiksmas: serijinis ekranas

Serijinis ekranas
Serijinis ekranas
Serijinis ekranas
Serijinis ekranas

Tai serijinis ekranas, palaikantis ryšį su UART, kuris yra RS su TXRX. Jis taip pat egzistuoja I2C versijose, tačiau kiti modeliai liks artėjančiam surinkimui. Šiuo atveju šis ekranas veikia UART by RS.

2 žingsnis: „Matrix“klaviatūra

„Matrix“klaviatūra
„Matrix“klaviatūra

Mūsų naudojamos matricinės klaviatūros pavyzdys yra nuotrauka, ir ji yra dešinėje pusėje. Mes turime schemą, kurioje parodyta, kaip tai veikia. Tiesą sakant, jis turi tik 4x4 linijas. Taigi, jis naudoja minimalų laidų kiekį; po vieną laidą kiekvienai eilutei ir stulpeliui, kad iš viso būtų aštuoni laidai.

Jai nereikia energijos, nes ji veikia taip: paspaudus 7, klaviatūra paima 7 ir prisijungia prie linijos ir stulpelio, o tai leidžia identifikuoti automatiškai nuskaitant algoritmą.

Svarbu prisiminti, kad šiame rinkinyje veiks bet kuri 4x4 klaviatūra, kuri yra taškinė matrica.

3 žingsnis: Surinkimas

Surinkimas
Surinkimas

Bendroje schemoje aštuoni laidai prijungiami tiesiai prie „Arduino“prievadų, nes klaviatūra neturi galios. Ekrane yra RS 232 signalas, teigiama ir neigiama galia. Foninis apšvietimas vis dar yra, kuris taip pat jau yra prijungtas (identifikuotas BKL).

4 žingsnis: šaltinio kodas

Į šio projekto šaltinio kodą turite įtraukti serijinę ir klaviatūrą. Jame yra rinkinys RX_PIN ir TX_PIN, būtinas serijinei programinei įrangai, taip pat INVERTED 1. Tai buvo padaryta apačioje, siekiant sustiprinti signalą, kuris naudoja įvestį su apversta logika.

// biblioteka atsako į žaidimą com 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 Ekrano skystųjų kristalų ekranas #define TX_PIN 3 // apversti tam tikrus Rx ir Tx, tratando LOW como HIGH ir atvirkščiai #define INVERTED 1

5 veiksmas: rodyti komandas

Rodyti komandas
Rodyti komandas

Svarbu: šiame ekrane nepakanka tiesiog įdėti eilutę. Turite siųsti valdymo simbolius. PDF faile yra svetainės, kurioje yra šio ekrano vadovas, nuoroda. Bet jei turite serijinį kito prekės ženklo ekraną, gerai pažvelgti į jų valdymo kodus, susijusius su tuo. Pavyzdžiui, šiame modelyje, kai siunčiame tam tikrą valdiklį (pvz., Informacija apie šį ekraną), turime atsiųsti priešdėlį, skaičių 254, kad įgalintume ryšį.

Taigi mes sukūrėme ARRAY, kad palengvintume reikalus, tai yra kintamųjų, kurie pasiekiami naudojant skaitmeninį indeksą, rinkinys. Tai bus išsiųsta į ekraną kaip pradinė konfigūracija.

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

6 veiksmas: klaviatūros valdymas

Kaip veikia klaviatūra? Pirma, jis sumontuoja masyvą. Šis masyvas yra tokio pobūdžio, kuris iš tikrųjų bus rodomas ten. Taigi, jei įdedu X, kai paspaudžiu pirmąjį kairįjį mygtuką viršuje, jis rodomas. Tai yra klaviatūros turinys, kurį ji įsakys.

Kiti dalykai, kuriuos mes turime apibrėžimą, yra 4 eilutės numeris ir 4 stulpelio numeris šios klaviatūros ARRAY atveju. Mes vis dar turime linijų kaiščius, kurie yra „Arduino“kaiščiai ir stulpelio kaiščiai. Vis dar turime „customKeypad“klaviatūros kūrimo priemonę su simbolio, kaiščio, eilutės ir stulpelio parametrais.

const baitas LINHAS = 4; // número de linhas do tecladoconst byte COLUNAS = 4; // número de colunas do teclado // apibrėžti 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“'}}; baitas 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, responseavel for capturar and tecla pressionada Keypad customKeypad = Keypad (makeKeymap (SIMBOLOS), PINOS_LINHA, PINOS_COLUNA, LINHAS, COLUNAS);

7 veiksmas: slaptažodžio nustatymas

Šioje dalyje mes apibrėžiame slaptažodį, tada turime įvesti slaptažodį, kuris yra tuščia eilutė. Žemiau pateikiame programinės įrangos serijos egzempliorių.

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

8 veiksmas: sąranka

Kalbant apie sąranką, čia yra displaySerial.begin (2, 400), kuris yra apie greitį. Mūsų atveju to pakanka, kad išsiųstumėte baitą. Po to laukiama 700 milisekundžių. Mes įtraukiame „displaySerial.print“(„InitConfig“) iš pradinės konfigūracijos su nauju 10 milisekundžių vėlavimu ir pereiname prie pradžios funkcijos. Pradžios funkcijoje įdedame displaySerial.print („password:“).

void setup () {Serial.begin (2400); // inicializando a serial de comunicação com o display // importante o 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); vėlavimas (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:"); }

9 žingsnis: ciklas

Cikle sukuriame customKey = customKeypad.getKey (), o sekoje įvedame komandą Switch.

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

Kilpinis jungiklis 1 dalis

Komandos „Perjungti“viduje: rodomas spausdinamų klavišų galimybių sąrašas, jei paspaudžiamas, ir padidinamas slaptažodis: paima „customKey“ir sujungia įvestą slaptažodį. Tada displaySerial.print (customKey) rodo pagrindinį turinį.

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': atvejis '4': atvejis '5': atvejis '6': atvejis '7': atvejis '8': atvejis '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); pertrauka;

Kilpinis jungiklis 2 dalis

Šiame kode mes parodome scenarijų, kaip paspausti CLEAR klavišą. Jei įvesite raidę C ir išvalysite kintamąjį, kuriame yra jūsų įvedamas slaptažodis, jis iškviečia komandą išvalyti ekraną ir paleidžiamas iš naujo.

// 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 (); pertrauka;

Kilpinis jungiklis 3 dalis

Kita galimybė yra, jei įvesite raidę E. Tokiu atveju ekranas bus išvalytas ir išanalizuotas, jei įvestas slaptažodis yra teisingas ar neteisingas. Toliau duosime 2 sekundžių vėlavimą, išvalysime ekraną, iš naujo nustatysime slaptažodžio kintamąjį ir grįšime į pradžią.

// 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 koreta 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);

Rekomenduojamas: