Search Code

Gebruik van 4x3-sleutelbord met Arduino

Gebruik van 4x3-sleutelbord met Arduino

In hierdie tutoriaal gaan ons ondersoek hoe om 'n 4x3-sleutelbord met 'n Arduino te gebruik om sleuteldrukke te lees. Hierdie sleutelbord kan in verskeie projekte gebruik word, soos om 'n eenvoudige invoerkoppelvlak vir 'n sekuriteitstelsel of enige toepassing wat gebruikersinvoer vereis, te skep. Teen die einde van hierdie gids sal jy sleuteldrukke kan lees en op spesifieke sleutels kan reageer.

Maak seker dat jy die gepaardgaande video nagaan vir 'n visuele demonstrasie van die bedrading en kode-implementering (in video by 00:00).

Hardeware Verduidelik

Die hoofkomponente vir hierdie projek sluit die 4x3-sleutelbord en die Arduino-bord in. Die sleutelbord bestaan uit 'n matriks van knoppies wat in 4 rye en 3 kolomme gerangskik is. Wanneer 'n knoppie gedruk word, verbind dit 'n spesifieke ry aan 'n spesifieke kolom, wat die Arduino in staat stel om te identifiseer watter knoppie gedruk is.

Die Arduino-bord dien as die sentrale beheerder wat die sleutelbordinvoere lees. Dit gebruik die Keypad-biblioteek, wat die proses van die bestuur van die matriks-sleutelbord vereenvoudig en dit makliker maak om sleuteldrukke op te spoor.

Datablad Besonderhede

VervaardigerVerskeie
Deelnommer4x3 Sleutelbord
Logika-spanning5 V
Werksstroom≤ 20 mA
Sleutelleeftyd≥ 1,000,000 drukke
PakketMatriks Sleutelbord

  • Verbind die sleutelbordpenne korrek aan die Arduino se digitale penne.
  • Gebruik optrek- of aftrekweerstande indien nodig, afhangende van jou opstelling.
  • Maak seker dat die Keypad-biblioteek in jou Arduino IDE ingesluit is.
  • Ontklits die sleuteldrukke in sagteware om veelvuldige lesings te vermy.
  • Toets elke sleutel om korrekte bedrading en funksionaliteit te bevestig.

Bedradingsinstruksies

Arduino_wiring_4x3_keypad

Om die 4x3-sleutelbord aan die Arduino te bedraad, sal jy die ry- en kolompenne van die sleutelbord aan die digitale penne op die Arduino verbind. Verbind die rypenne (gewoonlik 4 penne) aan penne 2, 3, 4 en 5 op die Arduino. Die kolompenne (gewoonlik 3 penne) moet aan penne 6, 7 en 8 verbind word.

Maak seker dat jy die sleutelbord se grondpen aan die Arduino se grond verbind en die kragpen aan die 5V-uitset. Hierdie opstelling sal die Arduino in staat stel om die toestand van elke sleutel te lees wanneer dit gedruk word, deur die Keypad-biblioteek te gebruik om die matriksskandering te hanteer.

Kode Voorbeelde & Deurloop

Die volgende kode initialiseer die sleutelbord en druk die gedrukte sleutel na die seriële monitor. Die sleutelwaardes word in 'n karakterreeks gestoor.

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

Die keys-reeks definieer die uitleg van die sleutelbord, wat ooreenstem met die fisiese rangskikking van sleutels. Elke karakter verteenwoordig 'n knoppie op die sleutelbord.

Volgende stel ons die sleutelbord op in die setup()-funksie:

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

Hierdie segment initialiseer die seriële kommunikasie teen 'n baud-tempo van 9600, wat ons in staat stel om die sleuteldrukke in die seriële monitor te sien.

Laastens kontroleer die lus vir sleuteldrukke en reageer dienooreenkomstig:

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

Hier kontroleer die program of enige sleutel gedruk is deur keypad.getKey() te gebruik. As 'n sleutel gedruk word, druk dit die sleutel se waarde. Daarbenewens, as die sleutel '4' gedruk word, word 'n spesifieke boodskap vertoon.

Demonstrasie / Wat om te Verwacht

Wanneer die opstelling voltooi is, sal die druk van enige sleutel op die sleutelbord die ooreenstemmende karakter na die seriële monitor uitvoer. As die sleutel '4' gedruk word, sal 'n spesiale boodskap gedruk word wat die aktivering van daardie sleutel aandui. Hierdie funksionaliteit stel jou in staat om op hierdie fondament voort te bou vir meer komplekse toepassings.

Wees versigtig vir drywende invoere wat tot onreëlmatige gedrag kan lei. Maak seker dat alle verbindings veilig is en toets elke sleutel om behoorlike funksionaliteit te bevestig (in video by 00:00).

Beelde

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");
  } 

}

Goedere wat jy dalk nodig het

Hulpbronne en verwysings

Geen hulpbronne nog.

Lêers📁

Fritzing-lêer

Ander lêers