Inhoudsopgave:

Dashboard-toetsenbord met LCD-scherm en Arduino Uno - Ajarnpa
Dashboard-toetsenbord met LCD-scherm en Arduino Uno - Ajarnpa

Video: Dashboard-toetsenbord met LCD-scherm en Arduino Uno - Ajarnpa

Video: Dashboard-toetsenbord met LCD-scherm en Arduino Uno - Ajarnpa
Video: Full CARDBOARD PC Gaming Setup!? 🤯 2024, November
Anonim
Image
Image
Dashboard-toetsenbord met LCD-scherm en Arduino Uno
Dashboard-toetsenbord met LCD-scherm en Arduino Uno
Dashboard-toetsenbord met LCD-scherm en Arduino Uno
Dashboard-toetsenbord met LCD-scherm en Arduino Uno

Dit is een matrixtoetsenbord met een LCD-scherm en een Arduino Uno, het meest elementaire dat tegenwoordig bestaat. Het doel van deze instelling is om een programma te maken dat een wachtwoord ontvangt dat op het matrixtoetsenbord is getypt, dit vergelijkt met het juiste wachtwoord en een bevestigingsbericht op het display weergeeft.

Het is belangrijk om te onthouden dat zowel het matrixtoetsenbord als dit scherm werken met ESP8266 en ESP32.

Zoals je kunt zien, voeden we het circuit met de Arduino met een USB, omdat we geen externe bron gebruiken. Acht draden die op een zeer eenvoudige manier zijn aangesloten op de Arduino-poorten, maken de verbinding van ons toetsenbord. Dit toetsenbord heeft geen stroom en is passief, wat de aansluitingen enorm vergemakkelijkt.

Het display is verbonden met een Arduino via de UART, de seriële poort, die ook het apparaat van stroom voorziet.

In een demonstratie laten we in de video zien hoe ons circuit controleert of het wachtwoord dat op het toetsenbord is getypt correct is of niet.

In de PDF die in de video wordt gebruikt en hier beschikbaar is, hebben we de volledige pin-out van de chip die wordt gebruikt.

Stap 1: Serieel display

Serieel scherm
Serieel scherm
Serieel scherm
Serieel scherm

Dit is het seriële display dat communiceert met de UART, wat RS is met een TXRX. Het bestaat ook in I2C-versies, maar andere modellen zullen blijven voor een aanstaande montage. In dit geval werkt dit display door de UART by RS.

Stap 2: Matrix-toetsenbord

Matrix-toetsenbord
Matrix-toetsenbord

Het voorbeeld van het matrixtoetsenbord dat we gebruiken is dat van de foto, en het staat aan de rechterkant. We hebben een diagram dat laat zien hoe het werkt. Het heeft eigenlijk alleen 4x4 lijnen. Het gebruikt dus het minimale aantal draden; één draad voor elke rij en kolom, zodat er in totaal acht draden zijn.

Het heeft geen stroom nodig omdat het als volgt werkt: wanneer op de 7 wordt gedrukt, pakt het toetsenbord de 7 op en maakt verbinding met de lijn en kolom, wat identificatie mogelijk maakt door het algoritme automatisch te scannen.

Het is belangrijk om te onthouden dat elk 4x4-toetsenbord dat een dot-matrix is, in deze assembly zal werken.

Stap 3: Montage

samenkomst
samenkomst

In het algemene schema verbinden we acht draden rechtstreeks met de Arduino-poorten, omdat het toetsenbord geen stroom heeft. In het display hebben we een signaal van RS 232, en positief en negatief vermogen. De Backlight is nog aanwezig, deze is ook al aangesloten (door BKL geïdentificeerd).

Stap 4: Broncode

In de broncode van dit project moet u het serienummer en het toetsenbord opnemen. Het heeft een set RX_PIN en een TX_PIN, die nodig zijn voor de seriële software, en ook de INVERTED 1. Deze werd eronder geplaatst om het signaal te versterken dat invoer gebruikt met omgekeerde logica.

//biblioteca responsavel pela comunicação o display LCD#include //biblioteca responsá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 Display LCD #define TX_PIN 3 // inverte a logic dos pinos Rx e Tx, tratando LOW como HIGH en vice versa #define INVERTED 1

Stap 5: Opdrachten weergeven

Weergaveopdrachten
Weergaveopdrachten

Belangrijk: in dit display is het niet voldoende om er gewoon een touwtje aan te hangen. U moet controletekens verzenden. De pdf bevat de link van de site waar je een handleiding van deze display hebt. Maar heb je een serieel display van een ander merk, dan is het goed om te kijken naar hun controlecodes die hierop betrekking hebben. In dit model, bijvoorbeeld, wanneer we een bepaalde controle verzenden (informatie voor dit display bijvoorbeeld), moeten we een prefix, het nummer 254, verzenden om communicatie mogelijk te maken.

Dus hebben we een ARRAY opgezet om dingen te vergemakkelijken, wat een verzameling variabelen is die toegankelijk zijn met een numerieke index. Dit wordt als initiële configuratie naar het display gestuurd.

//comando para limpar toda a tela do displayconst char limparTela = {254, 1}; //comandos de configuração inicial /* 254, 254 acende of backlight 254, 1 limpa a tela 254, 253, 1 configura of contraste em nivel alto 254, 13 liga of cursor paraficar piscando */ const char configInicial = { 254, 254, 254, 1, 254, 253, 1, 254, 13};

Stap 6: Toetsenbordbediening

Hoe werkt het toetsenbord? Eerst koppelt het een array aan. Deze array is van het teken dat daar daadwerkelijk wordt weergegeven. Dus als ik een X plaats, wanneer ik op de eerste linkerknop bovenaan druk, wordt deze weergegeven. Dit is de inhoud van het toetsenbord, dat is wat het zal bevelen.

Andere dingen waar we de definitie voor hebben zijn rij nummer 4 en kolom nummer 4, in het geval van de ARRAY van dit toetsenbord. We hebben nog steeds pinnen van de lijnen, die de Arduino-pinnen zijn, en de pinnen van de kolom. We hebben nog steeds een customKeypad Keypad-builder met de symbool-, pin-, rij- en kolomparameters.

const-byte LINHAS = 4; // nummer van de linhas do 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] = { {'A', '1', '2', '3'}, { 'B', '4', '5', '6'}, {'C', '7', '8', '9'}, {'D', 'c', '0', 'e '} }; byte 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 op de tecla pressionada Keypad customKeypad = Keypad (makeKeymap (SIMBOLOS), PINOS_LINHA, PINOS_COLUNA, LINHAS, COLUNAS);

Stap 7: Wachtwoordinstelling

In dit deel definiëren we het wachtwoord, en dan moeten we een wachtwoord invoeren, wat een lege string is. Hieronder plaatsen we de instantie van de softwareSerial.

//variabel antwoord op armazenar as senhasconst String SENHA_ESPERADA = "1234ABCD"; Tekenreeks SENHA_DIGITADA = ""; //Instancia de SoftwareSerial para nos comunicar com o Weergave via seriële SoftwareSerial displaySerial = SoftwareSerial (RX_PIN, TX_PIN, INVERTED);

Stap 8: Instellen

Wat betreft de Setup, hier is de displaySerial.begin (2, 400), die gaat over de snelheid. In ons geval is dit voldoende om een byte te verzenden. Hierna volgt een wachttijd van 700 milliseconden. We nemen de displaySerial.print (initialConfig) op uit de initiële configuratie met een nieuwe vertraging van 10 milliseconden, en we gaan naar de startfunctie. In de startfunctie plaatsen we displaySerial.print ("wachtwoord:").

void setup(){ Serial.begin(2400); //inicializando a serial de comunicação com o display //importante o baudrate ser de 2400 displaySerial.begin (2400); //tempo de espera pela inicialização display delay (700); // stel een configuração inicial in om displaySerial.print (configInicial) weer te geven; vertraging(10); inicio(); } //função responsável por imprimir na tela a mensagem para digitar a senha //é chamada toda vez q a senha foi digitada en comparada, também quando //a tecla limpar display foi pressionada. void inicio(){ displaySerial.print("Senha:"); }

Stap 9: Loop

In de lus maken we een customKey = customKeypad.getKey (), en in de volgorde voeren we een Switch-opdracht in.

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

Lusschakelaar deel 1

Binnen het Switch-commando: het toont de lijst met mogelijkheden van afdrukbare toetsen, indien ingedrukt, en verhoogt het wachtwoord: neemt de customKey en voegt het ingevoerde wachtwoord samen. Vervolgens toont de displaySerial.print (customKey) de belangrijkste inhoud.

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 nieuwe simbolo een senha que estamos digitando SENHA_DIGITADA+=customKey; Serial.println(SENHA_DIGITADA); //imrpime na tela of símbolo pressionado displaySerial.print (customKey); pauze;

Lusschakelaar deel 2

In deze code laten we een scenario zien voor als de CLEAR-toets wordt ingedrukt. Als u de letter C typt en de variabele wist die het wachtwoord bevat dat u typt, roept het de opdracht op om het scherm te wissen en opnieuw op te starten.

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

Lusschakelaar deel 3

Een andere mogelijkheid is als u de letter E typt. In dit geval wordt het scherm opgeschoond en geanalyseerd of het ingevoerde wachtwoord juist of onjuist is. Vervolgens geven we een nieuwe vertraging van 2 seconden, wissen het scherm, resetten de wachtwoordvariabele en keren terug naar het begin.

//caso a tecla ENTER seja pressionada, devemos comparar as senhas case 'e': //limpa a tela displaySerial.print(limparTela); // se een senha digitada foi igual een 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 para limpar een tela novamente en esperar uma nova senha ser digitada delay (2000); displaySerial.print(limparTela);

Aanbevolen: