Tartalomjegyzék:

Műszerfal billentyűzet LCD kijelzővel és Arduino Uno: 9 lépés
Műszerfal billentyűzet LCD kijelzővel és Arduino Uno: 9 lépés

Videó: Műszerfal billentyűzet LCD kijelzővel és Arduino Uno: 9 lépés

Videó: Műszerfal billentyűzet LCD kijelzővel és Arduino Uno: 9 lépés
Videó: Arduino Uno - LED villogó 2024, November
Anonim
Image
Image
Műszerfal billentyűzet LCD kijelzővel és Arduino Uno
Műszerfal billentyűzet LCD kijelzővel és Arduino Uno
Műszerfal billentyűzet LCD kijelzővel és Arduino Uno
Műszerfal billentyűzet LCD kijelzővel és Arduino Uno

Ez egy mátrix billentyűzet, amely LCD kijelzővel és Arduino Uno -val együtt fut, a legalapvetőbb, ami ma létezik. Ennek a beállításnak az a célja, hogy olyan programot hozzon létre, amely megkapja a mátrix billentyűzetre beírt jelszót, összehasonlítja azt a megfelelő jelszóval, és megerősítő üzenetet jelenít meg a kijelzőn.

Fontos megjegyezni, hogy a mátrix billentyűzet és ez a kijelző is működik az ESP8266 és ESP32 készülékekkel.

Amint láthatja, az áramkört az Arduino segítségével USB -ről tápláljuk, mivel nem használunk külső forrást. Nyolc vezeték, amelyek nagyon egyszerűen csatlakoznak az Arduino portjaihoz, billentyűzetünket csatlakoztatják. Ennek a billentyűzetnek nincs áramellátása, és passzív, ami nagyban megkönnyíti a csatlakozást.

A kijelző egy Arduino -val van csatlakoztatva az UART -on, a soros porton keresztül, amely szintén táplálja a készüléket.

Egy bemutatóban a videóban megmutatjuk az áramkörünket, amely ellenőrzi, hogy a billentyűzeten beírt jelszó helyes -e vagy sem.

A videóban használt és itt elérhető PDF -fájlban megtalálható a használt chip teljes pinoutja.

1. lépés: Soros megjelenítés

Soros kijelző
Soros kijelző
Soros kijelző
Soros kijelző

Ez a soros kijelző kommunikál az UART -val, amely RS és TXRX. I2C verziókban is létezik, de más modellek megmaradnak a közelgő szereléshez. Ebben az esetben ez a kijelző az UART by RS által működik.

2. lépés: Mátrix billentyűzet

Mátrix billentyűzet
Mátrix billentyűzet

Az általunk használt mátrix billentyűzet példája a fénykép, és a jobb oldalon található. Van egy diagramunk, amely bemutatja, hogyan működik. Valójában csak 4x4 -es sorokat tartalmaz. Így a minimális mennyiségű vezetéket használja; minden vezetékhez és oszlophoz egy vezeték, így összesen nyolc vezeték van.

Nincs szüksége áramra, mert a következőképpen működik: a 7 megnyomására a billentyűzet felveszi a 7 -et, és csatlakozik a vonalhoz és az oszlophoz, ami lehetővé teszi az azonosítást az algoritmus automatikus beolvasásával.

Fontos megjegyezni, hogy minden 4x4 -es billentyűzet, amely pontmátrix, működik ebben az összeállításban.

3. lépés: Összeszerelés

Összeszerelés
Összeszerelés

Az általános séma szerint nyolc vezetéket közvetlenül az Arduino portjaihoz kötünk, mivel a billentyűzetnek nincs áramellátása. A kijelzőn RS 232 jel, pozitív és negatív teljesítmény látható. A Háttérvilágítás még mindig jelen van, amely szintén csatlakoztatva van (a BKL azonosítja).

4. lépés: Forráskód

A projekt forráskódjában szerepelnie kell a soros és a billentyűzetnek. Van egy sor RX_PIN és egy TX_PIN, amely a soros szoftverhez szükséges, valamint az INVERTED 1. Ez alulra került, hogy erősítse a jelet, amely fordított logikájú bemenetet használ.

// biblioteca responseável pela comunicação com o display LCD #include // biblioteca responseável por capturar a tecla que foi pressionada no teclado #include // pino invalidido apenas usado no contrutor do SoftwareSerial #define RX_PIN 255 // pino TX da nossa ligação Arduino x Kijelző LCD #define TX_PIN 3 // inverte a lógica dos pinos Rx e Tx, tratando LOW como HIGH e fordítva #define INVERTED 1

5. lépés: A parancsok megjelenítése

Parancsok megjelenítése
Parancsok megjelenítése

Fontos: Ebben a kijelzőben nem elég csak egy karakterláncot tenni rá. Vezérlő karaktereket kell küldeni. A PDF tartalmazza annak a webhelynek a linkjét, ahol a kijelző kézikönyve megtalálható. De ha egy másik márka soros kijelzője van, akkor érdemes megnézni a vezérlőkódjaikat, amelyek erre vonatkoznak. Ebben a modellben például, amikor elküldünk egy bizonyos vezérlőt (például a kijelzőhöz tartozó információkat), el kell küldenünk egy előtagot, a 254 -es számot a kommunikáció engedélyezéséhez.

Ezért a dolgok megkönnyítése érdekében beállítottunk egy ARRAY -t, amely egy változógyűjtemény, amely numerikus indexszel érhető el. Ezt kezdeti konfigurációként elküldi a kijelzőre.

// comando para limpar toda a tela do displayconst char limparTela = {254, 1}; // comandos de configuração inicial/ * 254, 254 acende vagy 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. lépés: A billentyűzet működése

Hogyan működik a billentyűzet? Először egy tömböt szerel fel. Ez a tömb olyan karakter, amely valóban megjelenik. Tehát ha X -et teszek, amikor megnyomom az első bal gombot a tetején, az megjelenik. Ez a billentyűzet tartalma, ezt fogja parancsolni.

A definíción kívül a 4. sor és a 4. oszlop is megtalálható a billentyűzet ARRAY esetében. Még mindig megvannak a sorok csapjai, amelyek az Arduino csapok és az oszlop csapjai. Még mindig van egy egyedi billentyűzet -billentyűzet -készítőnk a szimbólum, a pin, a sor és az oszlop paramétereivel.

const bájt 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" '}}; bájtos 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, responseavel for capturar and tecla pressionada Keypad customKeypad = Kezelő (makeKeymap (SIMBOLOS), PINOS_LINHA, PINOS_COLUNA, LINHAS, COLUNAS);

7. lépés: Jelszó beállítása

Ebben a részben definiáljuk a jelszót, majd meg kell adnunk egy jelszót, ami egy üres karakterlánc. Az alábbiakban bemutatjuk a softwareSerial példányát.

// variáveis resposnsáveis por armazenar as senhasconst String SENHA_ESPERADA = "1234ABCD"; Karakterlánc SENHA_DIGITADA = ""; // instancia de SoftwareSerial para nos comunicar com o Megjelenítés soros SoftwareSerial displaySerial = SoftwareSerial (RX_PIN, TX_PIN, INVERTED);

8. lépés: Beállítás

Ami a telepítést illeti, itt van a displaySerial.begin (2, 400), ami a sebességről szól. Esetünkben ez elég egy bájt elküldéséhez. Ezt követően 700 milliszekundumot kell várni. A kezdeti konfigurációból a displaySerial.print (initialConfig) elemet új, 10 milliszekundumos késleltetéssel felvesszük, és a start funkcióhoz lépünk. A start függvénybe a displaySerial.print ("jelszó:") parancsot helyezzük.

void setup () {Serial.begin (2400); // inicializando a serial de comunicação com o display // importante o baud rate 2400 displaySerial.begin (2400); // tempo de espera pela inicialização do display delay (700); // seta a configuração inicial do display displaySerial.print (configInicial); késleltetés (10); inicio (); } // função responseá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. lépés: Hurok

A ciklusban létrehozunk egy customKey = customKeypad.getKey () -ot, és a sorrendben megadunk egy Switch parancsot.

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

Hurokkapcsoló 1. rész

A Switch parancsban: megjeleníti a nyomtatható gombok listáját, ha lenyomják, és növeli a jelszót: felveszi az customKey -t és összefűzi a beírt jelszót. Ezután a displaySerial.print (customKey) megjeleníti a kulcstartalmat.

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); szünet;

Hurokkapcsoló 2. rész

Ebben a kódban egy forgatókönyvet mutatunk be a CLEAR gomb megnyomásakor. Ha beírja a C betűt, és törli a beírt jelszót tároló változót, akkor a parancs törli a képernyőt, és újraindul.

// 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 (); szünet;

Hurokkapcsoló 3. rész

Egy másik lehetőség az E betű beírása. Ebben az esetben a képernyő megtisztul, és elemzi, ha a megadott jelszó helyes vagy helytelen. Ezután új, 2 másodperces késleltetést adunk, töröljük a képernyőt, állítsuk vissza a jelszóváltozót, és térjünk vissza az elejére.

// 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 korrekt displaySerial.print ("Senha Correta !!!"); } // caso senha esteja errada else {Serial.println ("Senha Incorreta!"); // imprime mensagem de senha inkorrekt displaySerial.print ("Senha Incorreta!"); } // aguarda 2 segundos para limpar a tela novamente e esperar uma nova senha ser digitada delay (2000); displaySerial.print (limparTela);

Ajánlott: