Πίνακας περιεχομένων:

Πληκτρολόγιο ταμπλό με οθόνη LCD και Arduino Uno: 9 βήματα
Πληκτρολόγιο ταμπλό με οθόνη LCD και Arduino Uno: 9 βήματα

Βίντεο: Πληκτρολόγιο ταμπλό με οθόνη LCD και Arduino Uno: 9 βήματα

Βίντεο: Πληκτρολόγιο ταμπλό με οθόνη LCD και Arduino Uno: 9 βήματα
Βίντεο: Control 32 Servo over Wi-Fi using ESP32 and PCA9685 via desktop or mobile phone V5 2024, Νοέμβριος
Anonim
Image
Image
Πληκτρολόγιο ταμπλό με οθόνη LCD και Arduino Uno
Πληκτρολόγιο ταμπλό με οθόνη LCD και Arduino Uno
Πληκτρολόγιο ταμπλό με οθόνη LCD και Arduino Uno
Πληκτρολόγιο ταμπλό με οθόνη LCD και Arduino Uno

Αυτό είναι ένα πληκτρολόγιο μήτρας που λειτουργεί μαζί με μια οθόνη LCD και ένα Arduino Uno, το πιο βασικό που υπάρχει σήμερα. Ο σκοπός αυτής της ρύθμισης είναι να δημιουργήσει ένα πρόγραμμα που λαμβάνει έναν κωδικό πρόσβασης πληκτρολογημένο στο πληκτρολόγιο μήτρας, τον συγκρίνει με τον σωστό κωδικό πρόσβασης και εμφανίζει ένα μήνυμα επιβεβαίωσης στην οθόνη.

Είναι σημαντικό να θυμόμαστε ότι τόσο το πληκτρολόγιο μήτρας όσο και αυτή η οθόνη λειτουργούν με ESP8266 και ESP32.

Όπως μπορείτε να δείτε, τροφοδοτούμε το κύκλωμα με το Arduino με USB, αφού δεν χρησιμοποιούμε εξωτερική πηγή. Οκτώ καλώδια συνδεδεμένα με πολύ απλό τρόπο στις θύρες του Arduino κάνουν τη σύνδεση του πληκτρολογίου μας. Αυτό το πληκτρολόγιο δεν έχει ισχύ και είναι παθητικό, γεγονός που διευκολύνει σημαντικά τις συνδέσεις.

Η οθόνη συνδέεται με ένα Arduino μέσω της UART, της σειριακής θύρας, η οποία τροφοδοτεί επίσης τη συσκευή.

Σε μια επίδειξη, δείχνουμε στο βίντεο το κύκλωμά μας να ελέγχει εάν ο κωδικός πρόσβασης που πληκτρολογήσατε στο πληκτρολόγιο είναι σωστός ή όχι.

Στο PDF που χρησιμοποιείται στο βίντεο και είναι διαθέσιμο εδώ, έχουμε το πλήρες pinout του τσιπ που χρησιμοποιείται.

Βήμα 1: Σειριακή εμφάνιση

Σειριακή οθόνη
Σειριακή οθόνη
Σειριακή οθόνη
Σειριακή οθόνη

Αυτή είναι η σειριακή οθόνη που επικοινωνεί με το UART, το οποίο είναι RS με TXRX. Υπάρχει επίσης σε εκδόσεις I2C, αλλά άλλα μοντέλα θα παραμείνουν για μια επερχόμενη συναρμολόγηση. Σε αυτήν την περίπτωση, αυτή η οθόνη λειτουργεί από το UART by RS.

Βήμα 2: Πληκτρολόγιο μήτρας

Πληκτρολόγιο Matrix
Πληκτρολόγιο Matrix

Το παράδειγμα του πληκτρολογίου μήτρας που χρησιμοποιούμε είναι αυτό της φωτογραφίας και βρίσκεται στη δεξιά πλευρά. Έχουμε ένα διάγραμμα που δείχνει πώς λειτουργεί. Στην πραγματικότητα έχει μόνο 4x4 γραμμές. Έτσι, χρησιμοποιεί την ελάχιστη ποσότητα καλωδίων. ένα σύρμα για κάθε σειρά και στήλη, έτσι ώστε να υπάρχουν συνολικά οκτώ σύρματα.

Δεν χρειάζεται τροφοδοσία γιατί λειτουργεί ως εξής: όταν πατάτε το 7, το πληκτρολόγιο παίρνει το 7 και συνδέεται με τη γραμμή και τη στήλη, γεγονός που καθιστά δυνατή την αναγνώριση με αυτόματη σάρωση του αλγορίθμου.

Είναι σημαντικό να θυμάστε ότι οποιοδήποτε πληκτρολόγιο 4x4 που είναι μήτρα με κουκκίδες θα λειτουργεί σε αυτήν τη διάταξη.

Βήμα 3: Συναρμολόγηση

Συνέλευση
Συνέλευση

Στο γενικό σχήμα, συνδέουμε οκτώ καλώδια απευθείας στις θύρες του Arduino, καθώς το πληκτρολόγιο δεν έχει ισχύ. Στην οθόνη, έχουμε ένα σήμα RS 232, και θετική και αρνητική ισχύ. Ο οπίσθιος φωτισμός εξακολουθεί να υπάρχει, ο οποίος είναι επίσης ήδη συνδεδεμένος (προσδιορίζεται από το BKL).

Βήμα 4: Πηγαίος κώδικας

Στον πηγαίο κώδικα αυτού του έργου, πρέπει να συμπεριλάβετε τη σειρά και το πληκτρολόγιο. Διαθέτει ένα σύνολο RX_PIN και ένα TX_PIN, απαραίτητα για το σειριακό λογισμικό και επίσης το INVERTED 1. Αυτό τοποθετήθηκε από κάτω για να ενισχύσει το σήμα που χρησιμοποιεί είσοδο με ανεστραμμένη λογική.

// biblioteca responsável pela comunicação com o display LCD #include // biblioteca responsável for 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 ligação Arduino Οθόνη LCD #define TX_PIN 3 // inverte a lógica dos pinos Rx e Tx, tratando LOW como HIGH e αντίστροφα #define INVERTED 1

Βήμα 5: Εμφάνιση εντολών

Εντολές εμφάνισης
Εντολές εμφάνισης

Σημαντικό: Σε αυτήν την οθόνη, δεν αρκεί να τοποθετήσετε μια συμβολοσειρά σε αυτήν. Πρέπει να στείλετε χαρακτήρες ελέγχου. Το PDF περιέχει τον σύνδεσμο του ιστότοπου όπου έχετε εγχειρίδιο αυτής της οθόνης. Αλλά αν έχετε σειριακή εμφάνιση άλλης μάρκας, καλό είναι να δείτε τους κωδικούς ελέγχου τους που σχετίζονται με αυτό. Σε αυτό το μοντέλο, για παράδειγμα, όταν στέλνουμε ένα συγκεκριμένο στοιχείο ελέγχου (πληροφορίες για αυτήν την οθόνη, για παράδειγμα), πρέπει να στείλουμε ένα πρόθεμα, τον αριθμό 254, για να ενεργοποιήσουμε την επικοινωνία.

Έτσι, δημιουργήσαμε ένα ARRAY για τη διευκόλυνση των πραγμάτων, το οποίο είναι μια συλλογή μεταβλητών στις οποίες έχουμε πρόσβαση με ένα αριθμητικό ευρετήριο. Αυτό θα σταλεί στην οθόνη ως αρχική διαμόρφωση.

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

Βήμα 6: Λειτουργία πληκτρολογίου

Πώς λειτουργεί το πληκτρολόγιο; Πρώτον, τοποθετεί έναν πίνακα. Αυτός ο πίνακας είναι του χαρακτήρα που θα εμφανιστεί πραγματικά εκεί. Αν βάλω λοιπόν ένα Χ, όταν πατήσω το πρώτο αριστερό κουμπί στο επάνω μέρος, εμφανίζεται. Αυτό είναι το περιεχόμενο του πληκτρολογίου, αυτό είναι που θα δώσει εντολή.

Άλλα πράγματα για τα οποία έχουμε τον ορισμό είναι ο αριθμός σειράς 4 και ο αριθμός στήλης 4, στην περίπτωση του ARRAY αυτού του πληκτρολογίου. Έχουμε ακόμα καρφίτσες των γραμμών, που είναι οι καρφίτσες Arduino και οι καρφίτσες της στήλης. Έχουμε ακόμα έναν προσαρμογέα πληκτρολογίου customKeypad με τις παραμέτρους συμβόλου, συμβολοσειράς, γραμμής και στήλης.

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, για να καταγράψετε μια τεχνολογία πληκτρολογίου customKeypad = Πληκτρολόγιο (makeKeymap (SIMBOLOS), PINOS_LINHA, PINOS_COLUNA, LINHAS, COLUNAS);

Βήμα 7: Ρύθμιση κωδικού πρόσβασης

Σε αυτό το μέρος, ορίζουμε τον κωδικό πρόσβασης και, στη συνέχεια, πρέπει να εισαγάγουμε έναν κωδικό πρόσβασης, ο οποίος είναι μια κενή συμβολοσειρά. Παρακάτω, βάζουμε την περίπτωση του softwareSerial.

// variáveis resposnsáveis por armazenar as senhasconst String SENHA_ESPERADA = "1234ABCD"; Συμβολοσειρά SENHA_DIGITADA = ""; // instancia de SoftwareSerial para nos comunicar com o Προβολή μέσω σειριακού λογισμικούSerial displaySerial = SoftwareSerial (RX_PIN, TX_PIN, INVERTED);

Βήμα 8: Ρύθμιση

Όσον αφορά την εγκατάσταση, εδώ είναι το displaySerial.begin (2, 400), το οποίο αφορά την ταχύτητα. Στην περίπτωσή μας, αυτό είναι αρκετό για να στείλετε ένα byte. Μετά από αυτό, υπάρχει αναμονή 700 χιλιοστών του δευτερολέπτου. Περιλαμβάνουμε το displaySerial.print (initialConfig) από την αρχική διαμόρφωση με νέα καθυστέρηση 10 χιλιοστών του δευτερολέπτου και μεταβαίνουμε στη λειτουργία εκκίνησης. Στη λειτουργία εκκίνησης, βάζουμε displaySerial.print ("κωδικός πρόσβασης:").

void setup () {Serial.begin (2400); // inicializando a serial de comunicação com o display // importante o baud rate ser 2400 displaySerial.begin (2400); // tempo de espera pela inicialização do delay display (700). // seta a configuração inicial do display displaySerial.print (configInicial); καθυστέρηση (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:"); }

Βήμα 9: Βρόχος

Στον βρόχο, δημιουργούμε ένα customKey = customKeypad.getKey (), και στην ακολουθία, εισάγουμε μια εντολή Switch.

// captura a tecla pressionada do teclado char customKey = customKeypad.getKey (); // caso alguma tecla foi pressionada if (customKey) {Serial.println (customKey); εναλλαγή (customKey) { /… /}}

Loop Switch Μέρος 1

Μέσα στην εντολή Switch: εμφανίζει τη λίστα δυνατοτήτων εκτυπώσιμων κλειδιών, αν πατηθεί, και αυξάνει τον κωδικό πρόσβασης: παίρνει το customKey και συνδέει τον εισαγόμενο κωδικό πρόσβασης. Στη συνέχεια, το displaySerial.print (customKey) εμφανίζει τα βασικά περιεχόμενα.

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': περίπτωση '4': περίπτωση '5': υπόθεση '6': περίπτωση '7': περίπτωση '8': περίπτωση '9': // συμβόλαιο στο νέο σύμβολο και ένδειξη του αριθμού SENHA_DIGITADA+= customKey; Serial.println (SENHA_DIGITADA); // imrpime na tela o símbolo pressionado displaySerial.print (customKey); Διακοπή;

Loop Switch Μέρος 2

Σε αυτόν τον κώδικα, εμφανίζουμε ένα σενάριο εάν πατηθεί το πλήκτρο CLEAR. Εάν πληκτρολογήσετε το γράμμα C και καταργήσετε τη μεταβλητή που περιέχει τον κωδικό πρόσβασης που πληκτρολογείτε, τότε καλεί την εντολή για εκκαθάριση της οθόνης και επανεκκίνηση.

// 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); // διαμορφώστε ένα mensagem para digitar a senha inicio (); Διακοπή;

Διακόπτης βρόχου Μέρος 3

Μια άλλη πιθανότητα είναι αν πληκτρολογήσετε το γράμμα Ε. Σε αυτή την περίπτωση, η οθόνη θα καθαριστεί και θα αναλυθεί εάν ο κωδικός πρόσβασης είναι σωστός ή λανθασμένος. Στη συνέχεια, θα δώσουμε μια νέα καθυστέρηση 2 δευτερολέπτων, θα καθαρίσουμε την οθόνη, θα επαναφέρουμε τη μεταβλητή κωδικού πρόσβασης και θα επιστρέψουμε στην αρχή.

// caso a tecla ENTER seja pressionada, devemos comparar as senhas case 'e': // limpa a tela displaySerial.print (limparTela); // se a digitha fina 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 correta displaySerial.print ("Senha Incorreta!"); } // aguarda 2 segundos para limpar a tela novamente e esperar uma nova senha ser digitada delay (2000); displaySerial.print (limparTela);

Συνιστάται: