Search Code

Gebruik van 4x3-toetsenbord met Arduino

Gebruik van 4x3-toetsenbord met Arduino

In deze tutorial verkennen we hoe je een 4x3-toetsenpaneel met een Arduino gebruikt om toetsaanslagen te lezen. Dit toetsenpaneel kan worden gebruikt in verschillende projecten, zoals het creëren van een eenvoudige invoerinterface voor een beveiligingssysteem of elke toepassing die gebruikersinvoer vereist. Aan het einde van deze handleiding kun je toetsaanslagen lezen en reageren op specifieke toetsen.

Zorg ervoor dat je de bijbehorende video bekijkt voor een visuele demonstratie van de bedrading en code-implementatie (in video op 00:00).

Hardware uitgelegd

De belangrijkste componenten voor dit project zijn het 4x3-toetsenpaneel en het Arduino-bord. Het toetsenpaneel bestaat uit een matrix van knoppen gerangschikt in 4 rijen en 3 kolommen. Wanneer een knop wordt ingedrukt, verbindt deze een specifieke rij met een specifieke kolom, waardoor de Arduino kan identificeren welke knop is ingedrukt.

Het Arduino-bord fungeert als de centrale controller die de invoer van het toetsenpaneel leest. Het gebruikt de Keypad-bibliotheek, die het beheer van het matrixtoetsenpaneel vereenvoudigt en het gemakkelijker maakt om toetsaanslagen te detecteren.

Datasheet-details

FabrikantDiversen
Onderdeelnummer4x3-toetsenpaneel
Logische spanning5 V
Bedrijfsstroom≤ 20 mA
Levensduur toetsen≥ 1.000.000 indrukkingen
VerpakkingMatrix-toetsenpaneel

  • Verbind de pinnen van het toetsenpaneel correct met de digitale pinnen van de Arduino.
  • Gebruik pull-up- of pull-down-weerstanden indien nodig, afhankelijk van je opstelling.
  • Zorg ervoor dat de Keypad-bibliotheek is opgenomen in je Arduino IDE.
  • Debounce de toetsaanslagen in software om meerdere metingen te voorkomen.
  • Test elke toets om de juiste bedrading en functionaliteit te bevestigen.

Bedradingsinstructies

Arduino_wiring_4x3_keypad

Om het 4x3-toetsenpaneel op de Arduino aan te sluiten, verbind je de rij- en kolompinnen van het toetsenpaneel met de digitale pinnen op de Arduino. Verbind de rij-pinnen (meestal 4 pinnen) met pinnen 2, 3, 4 en 5 op de Arduino. De kolompinnen (meestal 3 pinnen) moeten worden verbonden met pinnen 6, 7 en 8.

Zorg ervoor dat je de aardingspin van het toetsenpaneel verbindt met de aarde van de Arduino en de voedingspin met de 5V-uitgang. Deze opstelling stelt de Arduino in staat om de status van elke toets te lezen wanneer deze wordt ingedrukt, met behulp van de Keypad-bibliotheek om het scannen van de matrix af te handelen.

Codevoorbeelden en uitleg

De volgende code initialiseert het toetsenpaneel en print de ingedrukte toets naar de seriële monitor. De toetswaarden worden opgeslagen in een karakterarray.

const byte ROWS = 4; //vier rijen
const byte COLS = 3; //drie kolommen
char keys[ROWS][COLS] = {
  {'1','2','3'},
  {'4','5','6'},
  {'7','8','9'},
  {'*','0','#'}
};

De keys-array definieert de lay-out van het toetsenpaneel, die overeenkomt met de fysieke rangschikking van de toetsen. Elk karakter vertegenwoordigt een knop op het toetsenpaneel.

Vervolgens stellen we het toetsenpaneel in in de setup()-functie:

void setup(){
  Serial.begin(9600);
  Serial.println("Robojax 4x3-toetsenpaneel");
}

Dit segment initialiseert de seriële communicatie met een baudrate van 9600, waardoor we de toetsaanslagen in de seriële monitor kunnen bekijken.

Tot slot controleert de loop op toetsaanslagen en reageert dienovereenkomstig:

void loop(){
  char key = keypad.getKey();
  if (key){
    Serial.println(key);
  } 
  if (key =='4'){
    Serial.println("Toets 4 is ingedrukt");
  } 
}

Hier controleert het programma of er een toets is ingedrukt met keypad.getKey(). Als er een toets wordt ingedrukt, print het de waarde van de toets. Bovendien wordt, als toets '4' wordt ingedrukt, een specifiek bericht weergegeven.

Demonstratie / Wat te verwachten

Wanneer de opstelling compleet is, moet het indrukken van elke toets op het toetsenpaneel het overeenkomstige karakter naar de seriële monitor uitvoeren. Als toets '4' wordt ingedrukt, wordt een speciaal bericht afgedrukt dat de activering van die toets aangeeft. Deze functionaliteit stelt je in staat om voort te bouwen op deze basis voor complexere toepassingen.

Wees voorzichtig met zwevende ingangen die tot grillig gedrag kunnen leiden. Zorg ervoor dat alle verbindingen stevig zijn en test elke toets om de juiste functionaliteit te bevestigen (in video op 00:00).

Afbeeldingen

4x3_kaypad-1
4x3_kaypad-1
4x3_kaypad-2
4x3_kaypad-2
4x3_kaypad-3
4x3_kaypad-3
4x3_kaypad-4
4x3_kaypad-4
4x3_kaypad-5
4x3_kaypad-5
Arduino_wiring_4x3_keypad
Arduino_wiring_4x3_keypad
128-Ardunino code for 4x3 keypad
Taal: C++
/*
 * Library taken from: https://playground.arduino.cc/Code/Keypad
 * This is the Arduino code for a 4x3 keypad.
 * Watch the video for details and demo: http://youtu.be/qIDzzG2LUtg
resources page: www.Robojax.com/RJT104
 * 
 * Modified by Ahmad Shamshiri for the Robojax Video channel: www.Robojax.com/RJT104
 * Date: July 11, 2018 at 19:56 in Ajax, Ontario, Canada
 * Permission granted to share this code, given that this
 * note is kept with the code.
 * Disclaimer: This code is "AS IS" and for educational purposes only.
 * This code has been downloaded from https://robojax.com
 * Watch video instructions for this code: 
 * 
 */
/* @file HelloKeypad.pde
|| @version 1.0
|| @author Alexander Brevig
|| @contact alexanderbrevig@gmail.com
||
|| @description
|| | Demonstrates the simplest use of the matrix Keypad library.
|| #
*/
#include <Keypad.h>

const byte ROWS = 4; //four rows
const byte COLS = 3; //three columns
char keys[ROWS][COLS] = {
  {'1','2','3'},
  {'4','5','6'},
  {'7','8','9'},
  {'*','0','#'}
};

byte rowPins[ROWS] = {2, 3, 4, 5}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {6,7,8}; //connect to the column pinouts of the keypad

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup(){
  // Robojax 4x3 keypad test
  Serial.begin(9600);
  Serial.println("Robojax 4x3 keypad");
}
  
void loop(){
  // Robojax 4x3 keypad test
  char key = keypad.getKey();
    // Just print the pressed key
   if (key){
    Serial.println(key);
  } 
   // This checks if 4 is pressed, then do something. Here we print the text, but you can control something.
  if (key =='4'){
    // If key matches what you are looking for
    Serial.println("Key 4 is pressed");
  } 

}

Dingen die je misschien nodig hebt

Hulpmiddelen en referenties

Nog geen middelen.

Bestanden📁

Fritzing-bestand

Andere bestanden