Soek Kode

Hoe om 4x4 sagte sleutelblok met Arduino te gebruik

Hoe om 4x4 sagte sleutelblok met Arduino te gebruik

In hierdie tutoriaal gaan ons ondersoek hoe om 'n 4x4 sagte sleutelbord met 'n Arduino te verbind en te gebruik. Hierdie sleutelbord het sestien sleutels maar benodig slegs agt penne vir verbinding, wat dit 'n kompakte en doeltreffende invoertoestel vir verskeie projekte maak. Teen die einde van hierdie gids sal jy in staat wees om insette van die sleutelbord te lees en aksies te aktiveer gebaseer op daardie insette.

4x4 soft keypdad

Ons gaan die Keypad-biblioteek gebruik om met die sleutelbord te koppel, wat ons in staat stel om maklik te bepaal watter sleutel gedruk word. Die program wat ons sal implementeer, sal die gedrukte sleutel op die reeksmonitor vertoon en aksie neem wanneer 'n spesifieke sleutel gedruk word, soos sleutel '4'. Vir meer visuele leiding, maak seker om die video te kyk by (in video by 00:00).

Hardeware Verduidelik

Die hoofkomponent van hierdie projek is die 4x4 sagte sleutelbord, wat bestaan uit 16 knoppies wat in 'n rooster gerangskik is. Elke knoppie verbind aan 'n spesifieke pen op die Arduino, wat dit in staat stel om te bepaal wanneer 'n knoppie gedruk word. Die sleutelbord werk deur 'n matriksskandeermetode te gebruik, waar die rye en kolomme in volgorde geaktiveer word om te bepaal watter sleutel gedruk word.

Om die sleutelbord te verbind, moet jy agt digitale penne op die Arduino gebruik. Die rye word tipies aan penne 2 tot 5 verbind, terwyl die kolomme aan penne 6 tot 9 verbind. Hierdie rangskikking stel die Arduino in staat om die toestand van elke sleutel effektief te lees.

Datablad Besonderhede

breedte69mm
Lengte76mm
Kabellengte84mm
Konnekteurbreedte20mm
Konnekteurgatspasiëring2.56mm

  • Verseker behoorlike bedrading van ry- en kolompenne om verkeerde lesings te vermy.
  • Gebruik optrekweerstande indien nodig om invoerlesings te stabiliseer.
  • Ontklits sleutels in sagteware om veelvuldige lesings vir 'n enkele druk te vermy.
  • Toets elke sleutel individueel om funksionaliteit te verseker.
  • Hou die sleutelbord droog en skoon om werkverrigting te handhaaf.

Bedradingsinstruksies

Arduino wiring for 4x4 soft keypad
Arduino wiring for 4x4 soft keypad

Om die 4x4 sleutelbord aan die Arduino te bedraad, verbind die rypenne van die sleutelbord aan die digitale penne op die Arduino soos volg: verbind die eerste ry aan pen 2, die tweede ry aan pen 3, die derde ry aan pen 4, en die vierde ry aan pen 5. Vir die kolompenne, verbind die eerste kolom aan pen 6, die tweede kolom aan pen 7, die derde kolom aan pen 8, en die vierde kolom aan pen 9.

Hierdie opstelling stel die Arduino in staat om doeltreffend deur die rye en kolomme te skandeer. Maak seker om die verbindings dubbel te kontroleer om te verseker dat elke pen korrek ooreenstem met sy aangewese ry of kolom. In die video word alternatiewe bedradingskonfigurasies kortliks bespreek (in video by 01:15). As jy kies om anders te bedraad, werk eenvoudig die penommers in die kode dienooreenkomstig by.

Kode Voorbeelde & Deurloop

In die kode begin ons deur die Keypad-biblioteek in te sluit en die uitleg van die sleutelbord te definieer. Die rye en kolomme word opgestel deur gebruik te maak van skikkings, waar rowPins karteer na die digitale penne wat aan die rye verbind is en colPins karteer na die kolomme.

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

In hierdie uittreksel definieer ons die aantal rye en kolomme, sowel as die karakteruitleg van die sleutels. Hierdie opstelling is noodsaaklik om te identifiseer watter sleutel gedruk word gebaseer op die ry en kolom wat geaktiveer word.

void setup(){
  Serial.begin(9600);
}

Die setup-funksie initialiseer die reekskommunikasie teen 9600 baud-tempo. Dit is belangrik om sleuteldrukdata na die reeksmonitor te stuur vir ontfouting en verifikasie.

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

In die loop-funksie kontroleer ons voortdurend vir 'n gedrukte sleutel deur keypad.getKey() te gebruik. As 'n sleutel gedruk word, druk dit die sleutelwaarde na die reeksmonitor. Daarbenewens, as sleutel '4' gedruk word, druk dit 'n spesifieke boodskap wat aandui dat sleutel '4' geaktiveer is. Hierdie gedeelte van die kode maak voorsiening vir intydse interaksie gebaseer op gebruikersinvoer.

Demonstrasie / Wat om te VerwAg

Sodra alles opgestel is en die kode na jou Arduino opgelaai is, behoort jy die gedrukte sleutels in die Reeksmonitor te sien vertoon. As jy sleutel '4' druk, sal die boodskap "Sleutel 4 is gedruk" verskyn, wat bevestig dat die invoer suksesvol opgespoor is. Wees versigtig vir algemene slaggate, soos drywende insette of verkeerde bedrading, wat tot foutiewe lesings kan lei (in video by 02:30).

Video Tydstempels

  • 00:00 - Inleiding tot die sleutelbord
  • 01:15 - Bedradingsinstruksies
  • 02:30 - Kodeverduideliking en demonstrasie

Beelde

4x4 soft keypdad back view
4x4 soft keypdad back view
4x4 soft keypdad
4x4 soft keypdad
4x4 soft keypdad connector
4x4 soft keypdad connector
4x4 soft keypdad
4x4 soft keypdad
Arduino wiring for 4x4 soft keypad
Arduino wiring for 4x4 soft keypad
41-Resources for this code
Taal: C++
/*
 * Original source: https://playground.arduino.cc/Code/Keypad
 * This is the Arduino code for a 4x4 keypad.
 * Watch the video for details and demo: http://youtu.be/qIDzzG2LUtg
 * 
 * Written by Ahmad Nejrabi for Robojax Video channel: www.Robojax.com
 * Date: December 18, 2017, 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
 * 
 */
/* @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 = 4; //four columns
char keys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};

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

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

void setup(){
  Serial.begin(9600);
}
  
void loop(){
  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'){
    Serial.println("Key 4 is pressed");
  }
}

Goedere wat jy dalk nodig het

Hulpbronne en verwysings

Geen hulpbronne nog.

Lêers📁

Arduino Biblioteke (zip)