Innehållsförteckning:

Instrumentpanelens tangentbord med LCD -skärm och Arduino Uno: 9 steg
Instrumentpanelens tangentbord med LCD -skärm och Arduino Uno: 9 steg

Video: Instrumentpanelens tangentbord med LCD -skärm och Arduino Uno: 9 steg

Video: Instrumentpanelens tangentbord med LCD -skärm och Arduino Uno: 9 steg
Video: How to use Arduino 4x4 keypad download the code 2024, November
Anonim
Image
Image
Dashboard -tangentbord med LCD -skärm och Arduino Uno
Dashboard -tangentbord med LCD -skärm och Arduino Uno
Dashboard -tangentbord med LCD -skärm och Arduino Uno
Dashboard -tangentbord med LCD -skärm och Arduino Uno

Detta är ett matris -tangentbord som körs tillsammans med en LCD -skärm och en Arduino Uno, det mest grundläggande som finns idag. Syftet med denna inställning är att skapa ett program som tar emot ett lösenord som skrivs in på matrisens tangentbord, jämför det med rätt lösenord och visar ett bekräftelsemeddelande på displayen.

Det är viktigt att komma ihåg att både matris -tangentbordet och den här skärmen fungerar med ESP8266 och ESP32.

Som du kan se driver vi kretsen med Arduino med en USB, eftersom vi inte använder en extern källa. Åtta ledningar som är anslutna på ett mycket enkelt sätt till Arduinos portar gör anslutningen av vårt tangentbord. Detta tangentbord har ingen ström och är passivt, vilket underlättar anslutningarna.

Displayen är ansluten till en Arduino via UART, den seriella porten, som också driver enheten.

I en demonstration visar vi i videon vår krets som kontrollerar om lösenordet som skrivs på tangentbordet är korrekt eller inte.

I PDF -filen som används i videon och som finns tillgänglig här har vi den fullständiga pinout av chipet som används.

Steg 1: Seriell display

Seriell display
Seriell display
Seriell display
Seriell display

Detta är den seriella displayen som kommunicerar med UART, som är RS med en TXRX. Det finns också i I2C -versioner, men andra modeller kommer att finnas kvar för en kommande montering. I detta fall fungerar denna display av UART by RS.

Steg 2: Matris -tangentbord

Matris tangentbord
Matris tangentbord

Exemplet på matris tangentbordet som vi använder är det på fotot, och det är på höger sida. Vi har ett diagram som visar hur det fungerar. Den har faktiskt bara 4x4 -linjer. Således använder den minsta mängd trådar; en tråd för varje rad och kolumn, så att det blir åtta ledningar totalt.

Det behöver inte ström eftersom det fungerar på följande sätt: när 7 trycks, tar tangentbordet 7 och ansluter till linjen och kolumnen, vilket gör identifiering möjlig genom att skanna algoritmen automatiskt.

Det är viktigt att komma ihåg att alla 4x4 -tangentbord som är punktmatris kommer att fungera i denna enhet.

Steg 3: Montering

hopsättning
hopsättning

I det allmänna schemat ansluter vi åtta ledningar direkt till Arduino -portarna, eftersom tangentbordet inte har någon ström. I displayen har vi en signal på RS 232 och positiv och negativ effekt. Bakgrundsbelysningen finns fortfarande, som också redan är ansluten (identifierad av BKL).

Steg 4: Källkod

I källkoden för detta projekt måste du inkludera serienumret och knappsatsen. Den har en uppsättning RX_PIN och en TX_PIN, nödvändig för den seriella programvaran, och även INVERTED 1. Denna placerades under för att förstärka signalen som använder ingång med inverterad logik.

// biblioteca responsável pela comunicação com o display LCD #include // biblioteca responsável por capturar a tecla que foi pressionada no teclado #include // pino invalido apenas usado no controller do SoftwareSerial #define RX_PIN 255 // pino TX da nossa ligação Display LCD #define TX_PIN 3 // inverte a lógica dos pinos Rx e Tx, tratando LOW como HIGH e vice-versa #define INVERTED 1

Steg 5: Visa kommandon

Visa kommandon
Visa kommandon

Viktigt: I den här displayen räcker det inte att bara sätta en sträng på den. Du måste skicka kontrolltecken. PDF -filen innehåller länken till webbplatsen där du har en manual för denna display. Men om du har en seriell display av ett annat märke är det bra att titta på deras kontrollkoder som gäller detta. I den här modellen, till exempel, när vi skickar en viss kontroll (till exempel information om denna display), måste vi skicka ett prefix, talet 254, för att möjliggöra kommunikation.

Så vi inrättade en ARRAY för att underlätta saker, vilket är en samling variabler som nås med ett numeriskt index. Detta kommer att skickas till displayen som en initial konfiguration.

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

Steg 6: Tangentbordshantering

Hur fungerar tangentbordet? Först monterar den en array. Denna matris har det tecken som faktiskt kommer att visas där. Så om jag sätter ett X, när jag trycker på den första vänstra knappen högst upp, visas den. Detta är tangentbordets innehåll, vilket är vad det kommer att kommandot.

Andra saker vi har definitionen för är rad nummer 4 och kolumn nummer 4, när det gäller ARRAY på detta tangentbord. Vi har fortfarande stift på linjerna, som är Arduino -stiften, och stiften i kolonnen. Vi har fortfarande en anpassad knappsatsbyggare med symbolen, stift, rad och kolumnparametrar.

const byte LINHAS = 4; // número 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ável por capturar a tecla pressionada Keypad customKeypad = Keypad (makeKeymap (SIMBOLOS), PINOS_LINHA, PINOS_COLUNA, LINHAS, COLUNAS);

Steg 7: Lösenordsinställning

I denna del definierar vi lösenordet, och sedan måste vi ange ett lösenord, vilket är en tom sträng. Nedan lägger vi instansen av softwareSerial.

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

Steg 8: Inställning

När det gäller installationen, här är displaySerial.begin (2, 400), vilket handlar om hastigheten. I vårt fall är detta tillräckligt för att skicka en byte. Efter detta väntar 700 millisekunder. Vi inkluderar displaySerial.print (initialConfig) från den ursprungliga konfigurationen med en ny fördröjning på 10 millisekunder, och vi går till startfunktionen. I startfunktionen lägger vi displaySerial.print ("lösenord:").

void setup () {Serial.begin (2400); // inicializando a serial de comunicação com o display // importante of baud rate ser de 2400 displaySerial.begin (2400); // tempo de espera pela inicialização do display delay (700); // seta a configuração inicial do display displaySerial.print (configInicial); fördröjning (10); inicio (); } // função responsável por imprimir na tela a mensagem fora 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:"); }

Steg 9: Slinga

I slingan skapar vi en customKey = customKeypad.getKey (), och i sekvensen anger vi ett Switch -kommando.

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

Loop Switch Del 1

Inne i kommandot Switch: den visar listan över möjligheter för utskrivbara nycklar, om den trycks ned, och ökar lösenordet: tar customKey och sammanfogar det inmatade lösenordet. Därefter visar displaySerial.print (customKey) nyckelinnehållet.

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 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); ha sönder;

Loop Switch Del 2

I den här koden visar vi ett scenario för om CLEAR -tangenten trycks in. Om du skriver bokstaven C och rensar variabeln som innehåller lösenordet du skriver, kallar den kommandot för att rensa skärmen och startar om.

// 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 (); ha sönder;

Loop Switch Del 3

En annan möjlighet är om du skriver bokstaven E. I det här fallet kommer skärmen att rengöras och analyseras om det angivna lösenordet är korrekt eller felaktigt. Därefter ger vi en ny fördröjning på 2 sekunder, rensar skärmen, återställer lösenordsvariabeln och återgår till början.

// 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 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 a tela novamente e esperar uma nova senha ser digitada delay (2000); displaySerial.print (limparTela);

Rekommenderad: