Innehållsförteckning:

Använda numeriska knappsatser med Arduino: 4 steg
Använda numeriska knappsatser med Arduino: 4 steg

Video: Använda numeriska knappsatser med Arduino: 4 steg

Video: Använda numeriska knappsatser med Arduino: 4 steg
Video: Ma4 Numerisk lösning av integraler 2024, November
Anonim
Använda numeriska knappsatser med Arduino
Använda numeriska knappsatser med Arduino

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

Komma igång
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: