Indholdsfortegnelse:
- Trin 1: Kom godt i gang
- Trin 2: Brug af et 12 cifret tastatur
- Trin 3: Brug af et 16 cifret tastatur
- Trin 4: Eksempelprojekt - PIN -adgangssystem
Video: Brug af numeriske tastaturer med Arduino: 4 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:27
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
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:
Send numeriske data fra en Arduino til en anden: 16 trin
Send numeriske data fra en Arduino til en anden: Introduktion af David Palmer, CDIO Tech. på Aston University. Har du nogensinde haft brug for at sende nogle numre på tværs fra den ene Arduino til den anden? Denne instruks viser hvordan. Du kan nemt teste det virker ved blot at indtaste en række tal, der skal sendes på S
Hjemmeautomatisering Trin for trin Brug af Wemos D1 Mini Med PCB -design: 4 trin
Hjemmeautomatisering Trin for trin Brug af Wemos D1 Mini Med PCB -design: Hjemmeautomatisering Trin for trin ved hjælp af Wemos D1 Mini med PCB -design For et par uger siden udgav vi en tutorial "Home Automation using Raspberry Pi" i rootsaid.com, som blev godt modtaget blandt hobbyfolk og universitetsstuderende. Så kom et af vores medlemmer
I2C / IIC LCD -skærm - Brug et SPI LCD til I2C LCD Display Brug SPI til IIC modul med Arduino: 5 trin
I2C / IIC LCD -skærm | Brug en SPI LCD til I2C LCD -skærmen Brug af SPI til IIC -modulet med Arduino: Hej fyre, da en normal SPI LCD 1602 har for mange ledninger at tilslutte, så det er meget svært at grænseflade det med arduino, men der er et modul på markedet, som kan konverter SPI -skærm til IIC -skærm, så du skal kun tilslutte 4 ledninger
Neopixel Ws2812 Rainbow LED Glød Med M5stick-C - Kører Rainbow på Neopixel Ws2812 Brug af M5stack M5stick C Brug af Arduino IDE: 5 trin
Neopixel Ws2812 Rainbow LED Glød Med M5stick-C | Kører Rainbow på Neopixel Ws2812 Brug af M5stack M5stick C Brug af Arduino IDE: Hej fyre i denne instruktion vil vi lære at bruge neopixel ws2812 LED'er eller led strip eller led matrix eller led ring med m5stack m5stick-C udviklingstavle med Arduino IDE, og vi vil lave et regnbuemønster med det
Rustning fra tastaturer: 7 trin
Rustning fra tastaturer: Dette er en instruktion i, hvordan du opretter en rustning fra et sæt tastaturer. Brug ikke hacksave, da de vil blive ødelagt af dette, og da du håndterer alle slags grimme apparater og skarpe kanter, skal du være meget forsigtig med ikke at skade din