Inhaltsverzeichnis:

Dashboard-Tastatur mit LCD-Display und Arduino Uno - Gunook
Dashboard-Tastatur mit LCD-Display und Arduino Uno - Gunook

Video: Dashboard-Tastatur mit LCD-Display und Arduino Uno - Gunook

Video: Dashboard-Tastatur mit LCD-Display und Arduino Uno - Gunook
Video: Arduino Display You've Been Waiting For: Arduino Giga Display Shield 2024, November
Anonim
Image
Image
Dashboard-Tastatur mit LCD-Display und Arduino Uno
Dashboard-Tastatur mit LCD-Display und Arduino Uno
Dashboard-Tastatur mit LCD-Display und Arduino Uno
Dashboard-Tastatur mit LCD-Display und Arduino Uno

Dies ist eine Matrix-Tastatur, die zusammen mit einem LCD-Display und einem Arduino Uno läuft, dem grundlegendsten, das es heute gibt. Der Zweck dieses Setups besteht darin, ein Programm zu erstellen, das ein auf der Matrixtastatur eingegebenes Passwort empfängt, es mit dem richtigen Passwort vergleicht und eine Bestätigungsmeldung auf dem Display anzeigt.

Es ist wichtig, sich daran zu erinnern, dass sowohl die Matrixtastatur als auch dieses Display mit ESP8266 und ESP32 funktionieren.

Wie Sie sehen können, versorgen wir die Schaltung mit dem Arduino mit einem USB, da wir keine externe Quelle verwenden. Acht Drähte, die auf sehr einfache Weise mit den Anschlüssen des Arduino verbunden sind, stellen den Anschluss unserer Tastatur her. Diese Tastatur hat keinen Strom und ist passiv, was die Verbindungen erheblich erleichtert.

Das Display ist über den UART, den seriellen Port, mit einem Arduino verbunden, der auch das Gerät mit Strom versorgt.

In einer Demonstration zeigen wir im Video unsere Schaltung, die prüft, ob das auf der Tastatur eingegebene Passwort richtig ist oder nicht.

In dem im Video verwendeten und hier verfügbaren PDF haben wir die vollständige Pinbelegung des verwendeten Chips.

Schritt 1: Serielle Anzeige

Serielle Anzeige
Serielle Anzeige
Serielle Anzeige
Serielle Anzeige

Dies ist das serielle Display, das mit dem UART kommuniziert, das RS mit einem TXRX ist. Es existiert auch in I2C-Versionen, aber andere Modelle werden für eine bevorstehende Montage bleiben. In diesem Fall funktioniert diese Anzeige über den UART von RS.

Schritt 2: Matrix-Tastatur

Matrix-Tastatur
Matrix-Tastatur

Das Beispiel der Matrix-Tastatur, die wir verwenden, ist das Foto auf der rechten Seite. Wir haben ein Diagramm, das zeigt, wie es funktioniert. Es hat eigentlich nur 4x4 Zeilen. Somit verwendet es die minimale Anzahl von Drähten; ein Draht für jede Zeile und Spalte, so dass insgesamt acht Drähte vorhanden sind.

Es braucht keinen Strom, weil es wie folgt funktioniert: Wenn die 7 gedrückt wird, nimmt die Tastatur die 7 auf und verbindet sich mit der Zeile und Spalte, was eine Identifizierung durch automatisches Scannen des Algorithmus ermöglicht.

Es ist wichtig, sich daran zu erinnern, dass jede 4x4-Tastatur mit Punktmatrix in dieser Baugruppe funktioniert.

Schritt 3: Montage

Montage
Montage

Im allgemeinen Schema verbinden wir acht Drähte direkt mit den Anschlüssen des Arduino, da die Tastatur keinen Strom hat. Im Display haben wir ein RS 232-Signal und positive und negative Leistung. Die Hintergrundbeleuchtung ist noch vorhanden, die auch schon angeschlossen ist (gekennzeichnet durch BKL).

Schritt 4: Quellcode

Im Quellcode dieses Projekts müssen Sie die Seriennummer und das Tastenfeld einschließen. Es hat eine eingestellte RX_PIN und eine TX_PIN, die für die serielle Software erforderlich sind, und auch die INVERTED 1. Diese wurde darunter platziert, um das Signal zu verstärken, das den Eingang mit invertierter Logik verwendet.

// 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 contrutor do SoftwareSerial #define RX_PIN 255 // xsao TXç da no Arduino Display LCD #define TX_PIN 3 // invertieren eine Logik dos pinos Rx und Tx, tratando LOW como HIGH und umgekehrt #define INVERTED 1

Schritt 5: Befehle anzeigen

Anzeigebefehle
Anzeigebefehle

Wichtig: In dieser Anzeige reicht es nicht, nur eine Schnur darauf zu legen. Sie müssen Steuerzeichen senden. Das PDF enthält den Link zu der Site, auf der Sie eine Anleitung zu dieser Anzeige haben. Wenn Sie jedoch ein serielles Display einer anderen Marke haben, ist es gut, sich die entsprechenden Steuercodes anzusehen. In diesem Modell müssen wir beispielsweise beim Senden eines bestimmten Steuerelements (z. B. Informationen für diese Anzeige) ein Präfix mit der Nummer 254 senden, um die Kommunikation zu ermöglichen.

Also haben wir ein ARRAY eingerichtet, um die Dinge zu erleichtern, eine Sammlung von Variablen, auf die mit einem numerischen Index zugegriffen wird. Diese wird als Erstkonfiguration an das Display gesendet.

//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 Contrast em nível alto 254, 13 Liga o Cursor paraficar piscando */ const char configInicial = { 254, 254, 254, 1, 254, 253, 1, 254, 13};

Schritt 6: Tastaturbedienung

Wie funktioniert die Tastatur? Zuerst wird ein Array gemountet. Dieses Array enthält das Zeichen, das dort tatsächlich angezeigt wird. Wenn ich also ein X einsetze, wird es angezeigt, wenn ich die erste linke Taste oben drücke. Dies ist der Inhalt der Tastatur, die sie befiehlt.

Andere Dinge, für die wir die Definition haben, sind Zeilennummer 4 und Spaltennummer 4 im Fall des ARRAYs dieser Tastatur. Wir haben immer noch Pins der Linien, die die Arduino-Pins sind, und die Pins der Spalte. Wir haben immer noch einen benutzerdefinierten Keypad Keypad Builder mit den Parametern Symbol, Pin, Zeile und Spalte.

konstantes Byte LINHAS = 4; //número de linhas do tecladoconst byte COLUNAS = 4; //número de colunas do teclado //definiere 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 wie Linhas teclado byte PINOS_COLUNA [COLUNAS] = {4, 5, 6, 7}; //pinos que indicam as colunas do teclado //Instancia de Keypad, responsável or capturar a Teclapressionada Keypad customKeypad = Keypad(makeKeymap(SIMBOLOS), PINOS_LINHA, PINOS_COLUNA, LINHAS, COLUNAS);

Schritt 7: Passworteinstellung

In diesem Teil definieren wir das Passwort und müssen dann ein Passwort eingeben, das eine leere Zeichenfolge ist. Unten setzen wir die Instanz der softwareSerial.

//variáveis resposnsáveis por armazenar as senhasconst String SENHA_ESPERADA = "1234ABCD"; String SENHA_DIGITADA = ""; // instancia de SoftwareSerial für keine comunicar com o Anzeige über seriell SoftwareSerial displaySerial = SoftwareSerial (RX_PIN, TX_PIN, INVERTED);

Schritt 8: Einrichtung

Was das Setup angeht, hier ist die displaySerial.begin (2, 400), bei der es um die Geschwindigkeit geht. In unserem Fall reicht dies, um ein Byte zu senden. Anschließend wird 700 Millisekunden gewartet. Wir binden die displaySerial.print (initialConfig) aus der Erstkonfiguration mit einer neuen Verzögerung von 10 Millisekunden ein und gehen zur Startfunktion. In die Startfunktion setzen wir displaySerial.print ("password:").

Void setup () {Serial.begin (2400); // Initialisierung einer seriellen Kommunikation mit Display // Wichtig für die Baudrate von 2400 displaySerial.begin (2400); // Tempo de espera pela inicialização Anzeigeverzögerung (700); // Eine Konfigurationsinitiale festlegen, um displaySerial.print (configInicial) anzuzeigen; Verzögerung(10); inicio(); } //função responsá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:"); }

Schritt 9: Schleife

In der Schleife erstellen wir einen customKey = customKeypad.getKey (), und in der Sequenz geben wir einen Switch-Befehl ein.

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

Schleifenschalter Teil 1

Innerhalb des Switch-Befehls: Zeigt die Liste der Möglichkeiten von druckbaren Tasten an, wenn sie gedrückt werden, und erhöht das Passwort: nimmt den customKey und verkettet das eingegebene Passwort. Als nächstes zeigt displaySerial.print (customKey) den Schlüsselinhalt an.

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': Fall '4': Fall '5': Fall '6': Fall '7': Fall '8': Fall '9': //concatena oder novo símbolo a senha que estamos digitando SENHA_DIGITADA+=customKey; Serial.println (SENHA_DIGITADA); //imrpime na tela oder simbolo pressionado displaySerial.print (customKey); brechen;

Schleifenschalter Teil 2

In diesem Code zeigen wir ein Szenario, wenn die CLEAR-Taste gedrückt wird. Wenn Sie den Buchstaben C eingeben und die Variable löschen, die das eingegebene Kennwort enthält, wird der Befehl zum Löschen des Bildschirms aufgerufen und neu gestartet.

//caso a tecla CLEAR tenha sido pressionada case 'c': //limpa a variável que guarda a senha que está sendo digitada SENHA_DIGITADA = ""; //chama oder comando para limpar a tela displaySerial.print (limparTela); // Konfigurieren Sie eine Mensagem für Digitar und Senha inicio (); brechen;

Schleifenschalter Teil 3

Eine andere Möglichkeit besteht darin, den Buchstaben E einzugeben. In diesem Fall wird der Bildschirm bereinigt und analysiert, ob das eingegebene Passwort richtig oder falsch ist. Als nächstes geben wir eine neue Verzögerung von 2 Sekunden ein, löschen den Bildschirm, setzen die Passwortvariable zurück und kehren zum Anfang zurück.

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

Empfohlen: