Spisu treści:

Klawiatura deski rozdzielczej z wyświetlaczem LCD i Arduino Uno: 9 kroków
Klawiatura deski rozdzielczej z wyświetlaczem LCD i Arduino Uno: 9 kroków

Wideo: Klawiatura deski rozdzielczej z wyświetlaczem LCD i Arduino Uno: 9 kroków

Wideo: Klawiatura deski rozdzielczej z wyświetlaczem LCD i Arduino Uno: 9 kroków
Wideo: 8. Kurs Arduino - Wyświetlacz LCD [Tinkercad] 2024, Listopad
Anonim
Image
Image
Klawiatura deski rozdzielczej z wyświetlaczem LCD i Arduino Uno
Klawiatura deski rozdzielczej z wyświetlaczem LCD i Arduino Uno
Klawiatura deski rozdzielczej z wyświetlaczem LCD i Arduino Uno
Klawiatura deski rozdzielczej z wyświetlaczem LCD i Arduino Uno

Jest to klawiatura matrycowa z wyświetlaczem LCD i Arduino Uno, najbardziej podstawowym, jaki istnieje obecnie. Celem tej konfiguracji jest stworzenie programu, który odbiera hasło wpisane na klawiaturze matrycy, porównuje je z poprawnym hasłem i wyświetla komunikat potwierdzający na wyświetlaczu.

Należy pamiętać, że zarówno klawiatura matrycowa, jak i ten wyświetlacz współpracują z ESP8266 i ESP32.

Jak widać, układ z Arduino zasilamy przez USB, ponieważ nie korzystamy z zewnętrznego źródła. Osiem przewodów podłączonych w bardzo prosty sposób do portów Arduino umożliwia podłączenie naszej klawiatury. Ta klawiatura nie ma zasilania i jest pasywna, co znacznie ułatwia połączenia.

Wyświetlacz jest połączony z Arduino poprzez port szeregowy UART, który również zasila urządzenie.

W demonstracji pokazujemy na filmie nasz obwód sprawdzający, czy hasło wpisane na klawiaturze jest poprawne, czy nie.

W pliku PDF użytym w filmie i dostępnym tutaj, mamy pełne informacje o pinach używanego chipa.

Krok 1: Wyświetlacz szeregowy

Wyświetlacz szeregowy
Wyświetlacz szeregowy
Wyświetlacz szeregowy
Wyświetlacz szeregowy

Jest to wyświetlacz szeregowy, który komunikuje się z UART, czyli RS z TXRX. Istnieje również w wersjach I2C, ale inne modele pozostaną na nadchodzący montaż. W tym przypadku ten wyświetlacz działa przez UART by RS.

Krok 2: Klawiatura matrycowa

Klawiatura matrycowa
Klawiatura matrycowa

Przykładowa klawiatura matrycowa, której używamy, to klawiatura ze zdjęcia i znajduje się ona po prawej stronie. Mamy schemat, który pokazuje, jak to działa. W rzeczywistości ma tylko linie 4x4. W ten sposób wykorzystuje minimalną ilość przewodów; jeden przewód na każdy rząd i kolumnę, tak aby w sumie było osiem przewodów.

Nie potrzebuje zasilania, ponieważ działa w następujący sposób: po naciśnięciu 7 klawiatura podnosi 7 i łączy się z linią i kolumną, co umożliwia identyfikację poprzez automatyczne skanowanie algorytmu.

Należy pamiętać, że każda klawiatura 4x4 będąca matrycą punktową będzie działać w tym zestawieniu.

Krok 3: Montaż

montaż
montaż

W ogólnym schemacie podłączamy osiem przewodów bezpośrednio do portów Arduino, ponieważ klawiatura nie ma zasilania. Na wyświetlaczu mamy sygnał RS 232 oraz moc dodatnią i ujemną. Podświetlenie jest nadal obecne, które również jest już podłączone (zidentyfikowane przez BKL).

Krok 4: Kod źródłowy

W kodzie źródłowym tego projektu musisz dołączyć numer seryjny i klawiaturę. Ma zestaw RX_PIN i TX_PIN, niezbędne dla oprogramowania szeregowego, a także INVERTED 1. Został on umieszczony pod spodem, aby wzmocnić sygnał, który wykorzystuje wejście z odwróconą logiką.

//biblioteca odpowiada na komunikaty z wyświetlaczem LCD#include //biblioteca odpowiada za przechwytywanie informacji, które dotyczą presji nie teclado #include // pino nieważne dla aplikacji nie ma dostawcy oprogramowania seryjnego #define RX_PIN 255 / nie Arssa pino xga TX Wyświetlacz LCD #define TX_PIN 3 // inverte a lógica dos pinos Rx e Tx, tratando LOW como HIGH e vice-versa #define INVERTED 1

Krok 5: Wyświetl polecenia

Polecenia wyświetlania
Polecenia wyświetlania

Ważne: na tym wyświetlaczu nie wystarczy po prostu nałożyć na niego sznurek. Musisz wysłać znaki kontrolne. Plik PDF zawiera link do strony, na której znajduje się instrukcja obsługi tego wyświetlacza. Ale jeśli masz wyświetlacz seryjny innej marki, dobrze jest spojrzeć na ich kody kontrolne, które się do tego odnoszą. W tym modelu np. gdy wysyłamy pewną kontrolkę (informację np. dla tego wyświetlacza) musimy wysłać prefiks, numer 254, aby umożliwić komunikację.

Dlatego ustawiamy tablicę, aby ułatwić rzeczy, która jest zbiorem zmiennych, do których dostęp uzyskuje się za pomocą indeksu numerycznego. Zostanie to przesłane do wyświetlacza jako początkowa konfiguracja.

//comando para limpar toda a tela do displayconst char limparTela = { 254, 1}; //comandos de configuração inicial /* 254, 254 acende o backlight 254, 1 lipa a tela 254, 253, 1 configura o kontraste em nível alto 254, 13 liga o kursor paraficar piscando */ const char configInicial = { 254, 254, 254, 1, 254, 253, 1, 254, 13};

Krok 6: Obsługa klawiatury

Jak działa klawiatura? Najpierw montuje tablicę. Ta tablica zawiera znak, który faktycznie będzie tam wyświetlany. Więc jeśli postawię X, kiedy nacisnę pierwszy lewy przycisk u góry, zostanie on wyświetlony. To jest zawartość klawiatury, którą będzie ona rozkazywać.

Inne rzeczy, dla których mamy definicję, to wiersz numer 4 i kolumna numer 4, w przypadku tablicy tej klawiatury. Mamy jeszcze piny linii, którymi są piny Arduino, oraz piny kolumny. Nadal mamy niestandardowy konstruktor klawiatury z parametrami symboli, pinów, wierszy i kolumn.

stały bajt LINHAS = 4; //liczba linhas do tecladoconst byte COLUNAS = 4; //número de colunas do teclado //definiuj uma matriz com os symbole que deseja ser lido to teclado char SIMBOLOS[LINHAS][COLUNAS] = { {'A', '1', '2', '3'}, { 'B', '4', '5', '6'}, {'C', '7', '8', '9'}, {'D', 'c', '0', 'e '} }; bajt 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 to teclado //instancia de Keypad, responsável do przechwytywania i prezentacji Keypad customKeypad = Keypad(makeKeymap(SIMBOLOS), PINOS_LINHA, PINOS_COLUNA, LINHAS, COLUNAS);

Krok 7: Ustawienie hasła

W tej części definiujemy hasło, a następnie musimy wpisać hasło, które jest pustym ciągiem. Poniżej umieszczamy instancję oprogramowaniaSerial.

//różne odpowiedzi na armazenar jako senhasconst String SENHA_ESPERADA = "1234ABCD"; Ciąg SENHA_DIGITADA = ""; //instancia de SoftwareSerial para nos comunicar com o Wyświetlanie przez port szeregowy SoftwareSerial displaySerial = SoftwareSerial(RX_PIN, TX_PIN, INVERTED);

Krok 8: Konfiguracja

Jeśli chodzi o Setup, tutaj jest displaySerial.begin (2, 400), który dotyczy szybkości. W naszym przypadku to wystarczy, aby wysłać bajt. Następnie czeka się 700 milisekund. Włączamy displaySerial.print (initialConfig) z początkowej konfiguracji z nowym opóźnieniem 10 milisekund i przechodzimy do funkcji start. W funkcji start wstawiamy displaySerial.print ("hasło:").

void setup(){ Serial.begin(2400); //zainicjuj szeregową komunikację z wyświetlaczem //ważne o szybkość transmisji 2400 displaySerial.begin(2400); //tempo de espera pela inicialização do display delay(700); //seta a configuração inicial wyświetlić displaySerial.print(configInicial); opóźnienie(10); początek(); } //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:"); }

Krok 9: Pętla

W pętli tworzymy customKey = customKeypad.getKey() i w sekwencji wpisujemy komendę Switch.

//captura a tecla pressionada do teclado char customKey = customKeypad.getKey(); //caso alguma tecla foi pressionada if (customKey){ Serial.println(customKey); przełącznik(Klawisz niestandardowy) { /…/ } }

Przełącznik pętli, część 1

Wewnątrz polecenia Switch: pokazuje listę możliwości klawiszy drukowalnych, jeśli zostanie naciśnięty, i zwiększa hasło: pobiera customKey i łączy wprowadzone hasło. Następnie displaySerial.print (customKey) pokazuje zawartość klucza.

switch(customKey) { //caso alguma das teclas imprimíveis foi pressionada przypadek „A”: przypadek „B”: przypadek „C”: przypadek „D”: przypadek „0”: przypadek „1”: przypadek „2”: przypadek „3”: przypadek „4”: przypadek „5”: przypadek „6”: przypadek „7”: przypadek „8”: przypadek „9”: //concatena o novo símbolo a senha que estamos digitando SENHA_DIGITADA+=customKey; Serial.println(SENHA_DIGITADA); //imrpme na tela lub symbol presji displaySerial.print(customKey); przerwa;

Przełącznik pętli, część 2

W tym kodzie pokazujemy scenariusz dotyczący naciśnięcia klawisza CLEAR. Jeśli wpiszesz literę C i wyczyścisz zmienną, która przechowuje wpisywane hasło, wywoła polecenie wyczyszczenia ekranu i uruchomi się ponownie.

//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 komendę limpar a tela displaySerial.print(limparTela); //konfiguruj komunikaty cyfrowe o senha inicio(); przerwa;

Przełącznik pętli, część 3

Inną możliwością jest wpisanie litery E. W takim przypadku ekran zostanie wyczyszczony i przeanalizowany, czy wprowadzone hasło jest poprawne lub nieprawidłowe. Następnie damy nowe opóźnienie 2 sekundy, wyczyścimy ekran, zresetujemy zmienną hasła i wrócimy do początku.

//caso a tecla ENTER seja pressionada, porównaj devemos jako senhas case 'e': //limpa a tela displaySerial.print(limparTela); //wyświetl Senha digitada z 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);

Zalecana: