Indholdsfortegnelse:

Brug af numeriske tastaturer med Arduino: 4 trin
Brug af numeriske tastaturer med Arduino: 4 trin

Video: Brug af numeriske tastaturer med Arduino: 4 trin

Video: Brug af numeriske tastaturer med Arduino: 4 trin
Video: Control 32 Servo over Wi-Fi using ESP32 and PCA9685 via desktop or mobile phone V5 2024, November
Anonim
Brug af numeriske tastaturer med Arduino
Brug af numeriske tastaturer med Arduino

Numeriske tastaturer kan give et simpelt slutbrugeralternativ til forskellige grænseflader til dine projekter. Eller hvis du har brug for mange knapper, kan de spare dig for meget tid med hensyn til konstruktion. Vi kører gennem at forbinde dem ved hjælp af Arduino -biblioteket og slutter derefter med en nyttig eksempelskitse.

Trin 1: Kom godt i gang

Kom godt i gang
Kom godt i gang

Uanset hvor du får dine tastaturer fra, skal du sørge for at få databladet - da dette vil gøre livet lettere, når du tilslutter dem. For eksempel - billedet i dette trin.

Dataarket er vigtigt, da det vil fortælle dig, hvilke ben eller stik på tastaturet der er til rækkerne og kolonnerne. Hvis du ikke har databladet - skal du manuelt bestemme, hvilke kontakter der er for rækkerne og kolonnerne.

Dette kan gøres ved hjælp af kontinuitetsfunktionen i et multimeter (summer). Start med at placere en sonde på pin 1, den anden sonde på pin 2, og tryk på tasterne en efter en. Noter, når en knap fuldender kredsløbet, og gå derefter videre til den næste pin. Snart ved du, hvad der er hvilket. For eksempel er tasterne 1 og 5 på eksemplet tasterne 1 og 5 for knappen "1 ″, 2 og 5 for" 4 ″ osv …

På dette tidspunkt skal du downloade og installere tastaturets Arduino -bibliotek. Nu viser vi, hvordan du bruger begge tastaturer i enkle eksempler.

Trin 2: Brug af et 12 cifret tastatur

Vi bruger det lille sorte tastatur, en Arduino Uno-kompatibel og en LCD med et I2C-interface til visningsformål. Hvis du ikke har en LCD, kan du altid sende teksten til den serielle skærm i stedet.

Forbind din LCD, og tilslut derefter tastaturet til Arduino på følgende måde: Tastaturrække 1 til Arduino digital 5Tastaturrække 2 til Arduino digital 4Ktastaturrække 3 til Arduino digital 3Tastaturrække 4 til Arduino digital 2Tastaturkolonne 1 til Arduino digital 8Tastaturkolonne 2 til Arduino digital 7Tastaturkolonne 3 til Arduino digital 6 Hvis dit tastatur er anderledes end vores, skal du notere linjerne i skitsen fra:

// tastatur type definition

Da du har brug for at ændre tallene i arrays rowPins [ROWS] og colPins [COLS]. Du indtaster de digitale pin -numre, der er forbundet til henholdsvis rækkerne og kolonnerne på tastaturet.

Desuden gemmer matrixtasterne de værdier, der vises på LCD'et, når der trykkes på en bestemt knap. Du kan se, at vi har matchet det med det anvendte fysiske tastatur, men du kan ændre det til det, du har brug for. Men foreløbig skal du indtaste og uploade følgende skitse, når du er tilfreds med tildeling af række/pin -nummer:

/ * Numerisk tastatur og I2C LCD https://tronixstuff.com Bruger tastaturbibliotek til Arduino https://www.arduino.cc/playground/Code/Keypad af Mark Stanley, Alexander Brevig */

#include "Tastatur.h"

#include "Wire.h" // for I2C LCD #include "LiquidCrystal_I2C.h" // for I2C bus LCD module // https://www.dfrobot.com/wiki/index.php/I2C/TWI_LCD1602_Module_(SKU: _DFR0063) LiquidCrystal_I2C lcd (0x27, 16, 2); // indstil LCD -adressen til 0x27 for 16 tegn og 2 linjers display

// tastatur type definition

const byte Rækker = 4; // fire rækker const byte COLS = 3; // tre kolonner tegnetaster [RÆKKER] [COLS] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}};

byte rowPins [ROWS] = {

5, 4, 3, 2}; // opret forbindelse til rækkeudklipningerne i tastaturets byte colPins [COLS] = {8, 7, 6}; // opret forbindelse til tastaturets kolonneudtag

int tæller = 0;

Tastatur tastatur = Tastatur (makeKeymap (taster), rowPins, colPins, ROWS, COLS);

ugyldig opsætning ()

{lcd.init (); // initialiser lcd lcd.backlight (); // Tænd LCD -baggrundsbelysning}

hulrum ()

{char key = tastatur.getKey (); hvis (nøgle! = NO_KEY) {lcd.print (nøgle); tæl ++; hvis (count == 17) {lcd.clear (); count = 0; }}}

Og resultaterne af skitsen er vist i videoen. Så nu kan du se, hvordan knappetrykkene kan oversættes til data til brug i en skitse. Vi vil nu gentage denne demonstration med det større tastatur.

Trin 3: Brug af et 16 cifret tastatur

Vi bruger det større 4 × 4 tastatur, en Arduino Uno-kompatibel og til en ændring I2C LCD fra Akafugu til visningsformål. Igen, hvis du ikke har en LCD, kan du altid sende teksten til den serielle skærm i stedet. Kør LCD -skærmen op, og slut derefter tastaturet til Arduino på følgende måde:

  • Tastatur række 1 (pin otte) til Arduino digital 5
  • Tastatur række 2 (pin 1) til Arduino digital 4
  • Tastatur række 3 (pin 2) til Arduino digital 3
  • Tastatur række 4 (pin 4) til Arduino digital 2
  • Tastaturkolonne 1 (pin 3) til Arduino digital 9
  • Tastaturkolonne 2 (pin 5) til Arduino digital 8
  • Tastaturkolonne 3 (pin 6) til Arduino digital 7
  • Tastaturkolonne 4 (pin 7) til Arduino digital 6

Nu til skitsen - bemærk, hvordan vi har taget højde for det større numeriske tastatur: den ekstra kolonne i array -char -tasterne den ekstra pin i array -colPins og byte COLS = 4.

/ * Numerisk tastatur og I2C LCD https://tronixstuff.com Bruger tastaturbibliotek til Arduino https://www.arduino.cc/playground/Code/Keypad af Mark Stanley, Alexander Brevig */

#include "Tastatur.h"

#include "Wire.h" // for I2C LCD #include "TWILiquidCrystal.h" // https://store.akafugu.jp/products/26 LiquidCrystal lcd (12, 11, 5, 4, 3, 2);

const byte Rækker = 4; // fire rækker

const byte COLS = 4; // fire kolonner tegnetaster [RÆKKER] [COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}}; byte rowPins [ROWS] = {5, 4, 3, 2}; // opret forbindelse til rækkeudklipningerne i tastaturets byte colPins [COLS] = {9, 8, 7, 6}; // opret forbindelse til kolonnens pinouts på tastaturets int count = 0;

Tastatur tastatur = Tastatur (makeKeymap (taster), rowPins, colPins, ROWS, COLS);

ugyldig opsætning ()

{Serial.begin (9600); lcd.begin (16, 2); lcd.print ("Tastatur test!"); forsinkelse (1000); lcd.clear (); }

hulrum ()

{char key = tastatur.getKey (); hvis (nøgle! = NO_KEY) {lcd.print (nøgle); Serial.print (nøgle); tæl ++; hvis (count == 17) {lcd.clear (); count = 0; }}}

Og igen kan du se resultaterne af skitsen ovenfor i videoen.

Nu til et eksempelprojekt, et som sandsynligvis er den mest efterspurgte brug af det numeriske tastatur …

Trin 4: Eksempelprojekt - PIN -adgangssystem

Den mest efterspurgte brug af et numerisk tastatur synes at være en applikation i "PIN" -stil, hvor Arduino instrueres i at gøre noget baseret på, at et korrekt nummer indtastes i tastaturet. Den følgende skitse bruger den hardware, der er beskrevet til den foregående skitse, og implementerer et sekscifret PIN-indtastningssystem.

De handlinger, der skal foretages, kan indsættes i funktionerne correctPIN () og wrongPIN (). Og PIN -koden er angivet i matrix -PIN -koden [6]. Med lidt ekstra arbejde kan du også oprette din egen PIN-ændringsfunktion.

// PIN-switch med 16-cifret numerisk tastatur // https://tronixstuff.com #include "Keypad.h" #include #include LiquidCrystal lcd (12, 11, 5, 4, 3, 2);

const byte Rækker = 4; // fire rækker

const byte COLS = 4; // fire kolonner tegnetaster [Rækker] [COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}}; byte rowPins [ROWS] = {5, 4, 3, 2}; // opret forbindelse til rækkeudklipningerne i tastaturets byte colPins [COLS] = {9, 8, 7, 6}; // opret forbindelse til tastaturets kolonneudtag

Tastatur tastatur = Tastatur (makeKeymap (taster), rowPins, colPins, ROWS, COLS);

char PIN [6] = {

'1', '2', 'A', 'D', '5', '6'}; // vores hemmelige (!) nummer char forsøg [6] = {'0', '0', '0', '0', '0', '0'}; // brugt til sammenligning int z = 0;

ugyldig opsætning ()

{Serial.begin (9600); lcd.begin (16, 2); lcd.print ("PIN -lås"); forsinkelse (1000); lcd.clear (); lcd.print ("Indtast pinkode …"); }

void correctPIN () // gør dette, hvis den korrekte pinkode er indtastet

{lcd.print (" * Korrekt PIN *"); forsinkelse (1000); lcd.clear (); lcd.print ("Indtast pinkode …"); }

void incorrectPIN () // gør dette, hvis forkert pinkode er indtastet

{lcd.print (" * Prøv igen *"); forsinkelse (1000); lcd.clear (); lcd.print ("Indtast pinkode …"); }

ugyldig checkPIN ()

{int korrekt = 0; int i; for (i = 0; i <6; i ++) {

hvis (forsøg == PIN )

{korrekt ++; }} hvis (korrekt == 6) {correctPIN (); } ellers {incorrectPIN (); }

for (int zz = 0; zz <6; zz ++) {forsøg [zz] = '0'; }}

void readKeypad ()

{char key = tastatur.getKey (); hvis (nøgle! = NO_KEY) {forsøg [z] = nøgle; z ++; switch (nøgle) {case '*': z = 0; pause; case '#': z = 0; forsinkelse (100); // for ekstra debounce lcd.clear (); checkPIN (); pause; }}}

hulrum ()

{readKeypad (); }

Projektet er demonstreret i videoen.

Så nu har du mulighed for at bruge tolv og seksten knapper med dine Arduino-systemer. Jeg er sikker på, at du vil finde på noget nyttigt og interessant ved hjælp af tastaturerne i den nærmeste fremtid.

Dette indlæg bringes til dig af pmdway.com - alt for producenter og elektronikentusiaster, med gratis levering over hele verden.

Anbefalede: