Arduino Nano - Keypad

Deze tutorial leert u hoe u een Arduino Nano aansluit op een keypad 3x4 en 4x4 en hoe u deze programmeert. De tutorial biedt ook methodes en Arduino-code om het wachtwoord dat via het keypad door gebruikers wordt ingevoerd te verifiëren.

Hardware Benodigdheden

1×Official Arduino Nano
1×Alternatief: DIYables ATMEGA328P Nano Development Board
1×USB A naar Mini-B USB-kabel
1×Toetsenbord 3x4 en 4x4 kit
1×(Aanbevolen) Schroefklem Uitbreidingsboard voor Arduino Nano
1×(Aanbevolen) Breakout Uitbreidingsboard voor Arduino Nano
1×(Aanbevolen) Stromsplitter voor Arduino Nano

Of u kunt de volgende kits kopen:

1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.

Over het Keypad

Keypad

Een keypad bestaat uit toetsen die in een matrix zijn gerangschikt. Elke afzonderlijke knop wordt een key genoemd. Keypads zijn er in verschillende uitvoeringen. Twee van de meest gebruikte voor doe-het-zelf projecten zijn het 3x4 keypad (12 toetsen) en het 4x4 keypad (16 toetsen).

Pinout van het Keypad

De pinnen zijn onderverdeeld in twee categorieën: rijen en kolommen.

  • Een 3x4 keypad heeft zeven pinnen: Vier daarvan zijn rij-pinnen, gelabeld als R1, R2, R3 en R4. De overige drie zijn kolom-pinnen, gelabeld als C1, C2 en C3.
  • Een 4x4 keypad heeft acht pinnen: Vier daarvan zijn rij-pinnen, gelabeld als R1, R2, R3 en R4. De overige vier zijn kolom-pinnen, gelabeld als C1, C2, C3 en C4.
Keypad pinout

Bedradingsschema

Arduino Nano Keypad bedrading

This image is created using Fritzing. Click to enlarge image

Arduino Nano Code

Arduino Nano Code voor Keypad 3x4

#include <Keypad.h> const int ROW_NUM = 4; // four rows const int COLUMN_NUM = 3; // three columns const byte pin_rows[ROW_NUM] = {9, 8, 7, 6}; // The Arduino Nano pin connected to the row pins of the keypad const byte pin_column[COLUMN_NUM] = {5, 4, 3}; // The Arduino Nano pin connected to the column pins of the keypad char key_layout[ROW_NUM][COLUMN_NUM] = { {'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'} }; Keypad keypad = Keypad( makeKeymap(key_layout), pin_rows, pin_column, ROW_NUM, COLUMN_NUM); void setup() { Serial.begin(9600); } void loop() { char key = keypad.getKey(); if (key) { Serial.println(key); } }

Arduino Nano Code voor Keypad 4x4

#include <Keypad.h> const int ROW_NUM = 4; // four rows const int COLUMN_NUM = 4; // four columns const byte pin_rows[ROW_NUM] = {9, 8, 7, 6}; // The Arduino Nano pin connected to the row pins of the keypad const byte pin_column[COLUMN_NUM] = {5, 4, 3, 2}; // The Arduino Nano pin connected to the column pins of the keypad char key_layout[ROW_NUM][COLUMN_NUM] = { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'} }; Keypad keypad = Keypad(makeKeymap(key_layout), pin_rows, pin_column, ROW_NUM, COLUMN_NUM); void setup() { Serial.begin(9600); } void loop() { char key = keypad.getKey(); if (key) { Serial.println(key); } }

Snelle Stappen

  • Klik op het Libraries-icoon in de linkerzijbalk van de Arduino IDE.
  • Zoek naar “keypad” en vind de keypad-bibliotheek gemaakt door Mark Stanley en Alexander Brevig.
  • Klik op de Installeren knop om de keypad-bibliotheek te installeren.
Arduino Nano keypad bibliotheek
  • Kopieer de bovenstaande code en open deze met de Arduino IDE.
  • Klik op de Upload-knop in de Arduino IDE om de code te compileren en naar de Arduino Nano te uploaden.
  • Open de Serial Monitor.
  • Druk op enkele toetsen van het keypad.
  • Controleer het resultaat in de Serial Monitor.
COM6
Send
3 6 9 4 - #
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Keypad en Wachtwoord

Een veelvoorkomende toepassing van het keypad is voor wachtwoordinvoer. Hiervoor worden twee speciale toetsen gebruikt:

  • Een toets om de wachtwoordinvoer te starten of te herstarten, bijvoorbeeld de "*" toets
  • Een toets om de wachtwoordinvoer te beëindigen, bijvoorbeeld de "#" toets

Het wachtwoord is een string die bestaat uit alle ingedrukte toetsen, behalve deze twee speciale toetsen.

Wanneer een toets wordt ingedrukt:

  • Als de toets niet "*" of "#" is, wordt de toets toegevoegd aan de invoerstring van het wachtwoord.
  • Als de toets "#" is, wordt de ingevoerde wachtwoordstring vergeleken met de geautoriseerde wachtwoorden om te bepalen of het wachtwoord correct is, daarna wordt de invoerstring geleegd.
  • Als de toets "*" is, wordt de invoerstring van het wachtwoord gewist.

Keypad - Wachtwoordcode

/* * Deze Arduino Nano code is ontwikkeld door newbiely.nl * Deze Arduino Nano code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino-nano/arduino-nano-keypad */ #include <Keypad.h> const int ROW_NUM = 4; // four rows const int COLUMN_NUM = 3; // three columns const byte pin_rows[ROW_NUM] = {9, 8, 7, 6}; // The Arduino Nano pin connected to the row pins of the keypad const byte pin_column[COLUMN_NUM] = {5, 4, 3}; // The Arduino Nano pin connected to the column pins of the keypad char key_layout[ROW_NUM][COLUMN_NUM] = { {'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'} }; Keypad keypad = Keypad( makeKeymap(key_layout), pin_rows, pin_column, ROW_NUM, COLUMN_NUM); const String password = "1234"; // change your password here String input_password; void setup() { Serial.begin(9600); input_password.reserve(32); // maximum input characters is 33, change if needed } void loop() { char key = keypad.getKey(); if (key) { Serial.println(key); if (key == '*') { input_password = ""; // clear input password } else if (key == '#') { if (password == input_password) { Serial.println("password is correct"); // DO YOUR WORK HERE } else { Serial.println("password is incorrect, try again"); } input_password = ""; // clear input password } else { input_password += key; // append new character to input password string } } }

Snelle Stappen

  • Start de bovenstaande code.
  • Open de Serial Monitor.
  • Druk de toetsen "123456" gevolgd door de "#" toets.
  • Druk de toetsen "1234" gevolgd door de "#" toets.
  • Bekijk het resultaat in de Serial Monitor.
COM6
Send
password is incorrect, try again password is correct
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Video Tutorial

We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!