Innehållsförteckning:
- Steg 1: Komma igång
- Steg 2: Använd en 12 -siffrig knappsats
- Steg 3: Använd en 16 -siffrig knappsats
- Steg 4: Exempelprojekt - PIN -åtkomstsystem
Video: Använda numeriska knappsatser med Arduino: 4 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:44
Numeriska knappsatser kan ge ett enkelt slutanvändaralternativ för olika gränssnitt för dina projekt. Eller om du behöver många knappar kan de spara dig mycket tid när det gäller konstruktion. Vi går igenom att ansluta dem med Arduino -biblioteket och avslutar sedan med en användbar exempelskiss.
Steg 1: Komma igång
Oavsett var du får dina knappsatser ifrån, se till att du kan få databladet - eftersom det kommer att göra livet enklare när du kopplar dem. Till exempel - bilden i det här steget.
Databladet är viktigt eftersom det kommer att berätta vilka stift eller kontakter på knappsatsen som är för raderna och kolumnerna. Om du inte har databladet - måste du manuellt avgöra vilka kontakter som är för raderna och kolumnerna.
Detta kan göras med hjälp av kontinuitetsfunktionen hos en multimeter (summern). Börja med att placera en sond på stift 1, den andra sonden på stift 2 och tryck på knapparna en efter en. Anteckna när en knapp slutför kretsen och gå sedan vidare till nästa stift. Snart vet du vilken som är vilken. Till exempel på knappsatsens stift 1 och 5 för knapp “1 ″, 2 och 5 för” 4 ″, etc …
Vid det här laget, ladda ner och installera knappsatsen Arduino -biblioteket. Nu kommer vi att visa hur man använder båda knappsatserna i enkla exempel.
Steg 2: Använd en 12 -siffrig knappsats
Vi kommer att använda den lilla svarta knappsatsen, en Arduino Uno-kompatibel och en LCD med ett I2C-gränssnitt för visningsändamål. Om du inte har en LCD -skärm kan du alltid skicka texten till den seriella bildskärmen istället.
Koppla upp LCD -skärmen och anslut sedan knappsatsen till Arduino på följande sätt: Knappsatsrad 1 till Arduino digital 5 Knappsatsrad 2 till Arduino digital Knappsatsrad 3 till Arduino digital 3 Knappsatsrad 4 till Arduino digital 2Knappsatskolumn 1 till Arduino digital 8Knappsatskolumn 2 till Arduino digital 7Knappsatskolumn 3 till Arduino digital 6 Om din knappsats är annorlunda än vår, notera raderna i skissen från:
// knappsatsstypdefinition
Eftersom du behöver ändra numren i matriserna rowPins [ROWS] och colPins [COLS]. Du anger de digitala PIN -numren som är anslutna till raderna och kolumnerna på knappsatsen respektive.
Arrayknapparna lagrar dessutom värdena som visas på LCD -skärmen när du trycker på en viss knapp. Du kan se att vi har matchat den med den fysiska knappsatsen som används, men du kan ändra den till vad du behöver. Men för närvarande, skriv in och ladda upp följande skiss när du är nöjd med tilldelningen av rad/pin -nummer:
/ * Numerisk knappsats och I2C LCD https://tronixstuff.com Använder knappsatsbibliotek för Arduino https://www.arduino.cc/playground/Code/Keypad av Mark Stanley, Alexander Brevig */
#inkludera "Knappsats.h"
#inkludera "Wire.h" // för I2C LCD #inkludera "LiquidCrystal_I2C.h" // för I2C -buss LCD -modul // https://www.dfrobot.com/wiki/index.php/I2C/TWI_LCD1602_Module_(SKU: _DFR0063) LiquidCrystal_I2C lcd (0x27, 16, 2); // ställ in LCD -adressen till 0x27 för 16 tecken och 2 raders display
// knappsatsstypdefinition
const byte RADER = 4; // fyra rader const byte COLS = 3; // tre kolumner char nycklar [RADER] [COLS] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}};
byte rowPins [ROWS] = {
5, 4, 3, 2}; // ansluta till radnålarna för knappsatsens byte colPins [COLS] = {8, 7, 6}; // Anslut till knapparna på knappsatsen
int count = 0;
Knappsats knappsats = Knappsats (makeKeymap (nycklar), rowPins, colPins, ROWS, COLS);
void setup ()
{lcd.init (); // initiera lcd lcd.backlight (); // slå på LCD -bakgrundsbelysning}
void loop ()
{char key = knappsats.getKey (); if (key! = NO_KEY) {lcd.print (key); räkna ++; if (count == 17) {lcd.clear (); count = 0; }}}
Och resultaten av skissen visas i videon. Så nu kan du se hur knapptryckningarna kan översättas till data för användning i en skiss. Vi kommer nu att upprepa denna demonstration med den större knappsatsen.
Steg 3: Använd en 16 -siffrig knappsats
Vi kommer att använda den större 4 × 4 knappsatsen, en Arduino Uno-kompatibel och för en förändring I2C LCD från Akafugu för visningsändamål. Återigen, om du inte har en LCD -skärm kan du alltid skicka texten till den seriella bildskärmen istället. Anslut LCD -skärmen och anslut sedan knappsatsen till Arduino på följande sätt:
- Knappsatsrad 1 (stift åtta) till Arduino digital 5
- Knappsatsrad 2 (stift 1) till Arduino digital 4
- Knappsatsrad 3 (stift 2) till Arduino digital 3
- Knappsatsrad 4 (stift 4) till Arduino digital 2
- Knappsatskolumn 1 (stift 3) till Arduino digital 9
- Knappsatskolumn 2 (stift 5) till Arduino digital 8
- Knappsatskolumn 3 (stift 6) till Arduino digital 7
- Knappsatskolumn 4 (stift 7) till Arduino digital 6
Nu till skissen - notera hur vi har rymt för det större numeriska tangentbordet: den extra kolumnen i array -tangenterna den extra stiftet i arrayen colPins och byte COLS = 4.
/ * Numeriskt knappsats och I2C LCD https://tronixstuff.com Använder knappsatsbibliotek för Arduino https://www.arduino.cc/playground/Code/Keypad av Mark Stanley, Alexander Brevig */
#inkludera "Knappsats.h"
#inkludera "Wire.h" // för I2C LCD #inkludera "TWILiquidCrystal.h" // https://store.akafugu.jp/products/26 LiquidCrystal lcd (12, 11, 5, 4, 3, 2);
const byte RADER = 4; // fyra rader
const byte COLS = 4; // fyra kolumner char nycklar [RADER] [COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}}; byte rowPins [ROWS] = {5, 4, 3, 2}; // ansluta till radnålarna för knappsatsens byte colPins [COLS] = {9, 8, 7, 6}; // ansluta till kolumnen pinouts av knappsatsen int count = 0;
Knappsats knappsats = Knappsats (makeKeymap (nycklar), rowPins, colPins, ROWS, COLS);
void setup ()
{Serial.begin (9600); lcd.begin (16, 2); lcd.print ("Knappsatsstest!"); fördröjning (1000); lcd.clear (); }
void loop ()
{char key = knappsats.getKey (); if (key! = NO_KEY) {lcd.print (key); Serial.print (nyckel); räkna ++; if (count == 17) {lcd.clear (); count = 0; }}}
Och igen kan du se resultaten av skissen ovan i videon.
Nu till ett exempelprojekt, ett som förmodligen är den mest efterfrågade användningen av det numeriska tangentbordet …
Steg 4: Exempelprojekt - PIN -åtkomstsystem
Den mest efterfrågade användningen för ett numeriskt tangentbord verkar vara en applikation med "PIN" -stil, där Arduino instrueras att göra något baserat på att ett korrekt nummer matas in på knappsatsen. Följande skiss använder den maskinvara som beskrivits för föregående skiss och implementerar ett sexsiffrigt PIN-inmatningssystem.
De åtgärder som ska utföras kan infogas i funktionerna correctPIN () och incorrectPIN (). Och PIN -koden är inställd i matrisens PIN -kod [6]. Med lite extra arbete kan du också skapa din egen PIN-ändringsfunktion.
// PIN-omkopplare med 16-siffrigt numeriskt tangentbord // https://tronixstuff.com #include "Keypad.h" #include #include LiquidCrystal lcd (12, 11, 5, 4, 3, 2);
const byte RADER = 4; // fyra rader
const byte COLS = 4; // fyra kolumner char nycklar [RADER] [COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}}; byte rowPins [ROWS] = {5, 4, 3, 2}; // ansluta till radnålarna för knappsatsens byte colPins [COLS] = {9, 8, 7, 6}; // Anslut till knapparna på knappsatsen
Knappsats knappsats = Knappsats (makeKeymap (nycklar), rowPins, colPins, ROWS, COLS);
char PIN [6] = {
'1', '2', 'A', 'D', '5', '6'}; // vårt hemliga (!) nummer char försök [6] = {'0', '0', '0', '0', '0', '0'}; // används för jämförelse int z = 0;
void setup ()
{Serial.begin (9600); lcd.begin (16, 2); lcd.print ("PIN -lås"); fördröjning (1000); lcd.clear (); lcd.print ("Ange PIN …"); }
void correctPIN () // gör detta om rätt PIN -kod har angetts
{lcd.print (" * Rätt PIN *"); fördröjning (1000); lcd.clear (); lcd.print ("Ange PIN …"); }
void incorrectPIN () // gör detta om fel PIN -kod har angetts
{lcd.print (" * Försök igen *"); fördröjning (1000); lcd.clear (); lcd.print ("Ange PIN …"); }
void checkPIN ()
{int korrekt = 0; int i; för (i = 0; i <6; i ++) {
om (försök == PIN )
{korrekt ++; }} if (correct == 6) {correctPIN (); } annat {wrongPIN (); }
för (int zz = 0; zz <6; zz ++) {försök [zz] = '0'; }}
void readKeypad ()
{char key = knappsats.getKey (); if (key! = NO_KEY) {försök [z] = key; z ++; switch (nyckel) {case '*': z = 0; ha sönder; fall '#': z = 0; fördröjning (100); // för extra debounce lcd.clear (); checkPIN (); ha sönder; }}}
void loop ()
{readKeypad (); }
Projektet visas i videon.
Så nu har du möjlighet att använda tolv och sexton knappar med dina Arduino-system. Jag är säker på att du kommer att hitta på något användbart och intressant med knappsatserna inom en snar framtid.
Detta inlägg kommer till dig av pmdway.com - allt för tillverkare och elektronikentusiaster, med gratis leverans över hela världen.
Rekommenderad:
Använda infraröd sensor med Arduino: 8 steg (med bilder)
Använda infraröd sensor med Arduino: Vad är en infraröd (aka IR) sensor? En IR -sensor är ett elektroniskt instrument som skannar IR -signaler i specifika frekvensområden definierade av standarder och omvandlar dem till elektriska signaler på dess utgångsstift (kallas vanligtvis signalstift) . IR -signalen
CCTV -kamera med nodMCU + gammal bärbar kameramodul (med och utan att använda Blynk): 5 steg
CCTV -kamera med NodeMCU + gammal bärbar kameramodul (med och utan att använda Blynk): Hej killar! I denna instruerbara, ska jag visa dig hur jag använde en gammal bärbar kameramodul och nodeMCU för att göra något liknande CCTV
Hemmautomation med ESP8266 WiFi utan att använda Blynk !: 24 steg (med bilder)
Hemmautomation med ESP8266 WiFi utan att använda Blynk !: För det första vill jag tacka alla för att jag blev en vinnare i Automation Contest 2016 för denna INSTRUKTABELA. Så, som jag lovade dig, här är instruktionerna för att styra hushållsapparater med ESP8266 WiFi -modul
Var säker på att använda denna cykelljus med blinkers: 5 steg (med bilder)
Var säker på att använda denna cykel med blinkers: Jag älskar att cykla, vanligtvis använder jag den för att komma till skolan. På vintern är det oftast fortfarande mörkt ute och det är svårt för andra fordon att se min hand blinkar. Därför är det en stor fara eftersom lastbilar kanske inte ser att jag vill
Neopixel Ws2812 Rainbow LED-glöd med M5stick-C - Köra Rainbow på Neopixel Ws2812 Använda M5stack M5stick C Använda Arduino IDE: 5 steg
Neopixel Ws2812 Rainbow LED-glöd med M5stick-C | Köra Rainbow på Neopixel Ws2812 Använda M5stack M5stick C Använda Arduino IDE: Hej killar i denna instruktioner kommer vi att lära oss hur man använder neopixel ws2812 lysdioder eller ledremsor eller ledmatris eller ledring med m5stack m5stick-C utvecklingsbräda med Arduino IDE och vi kommer att göra ett regnbågsmönster med det