Ús de teclats numèrics amb Arduino: 4 passos
Ús de teclats numèrics amb Arduino: 4 passos
Anonim
Ús de teclats numèrics amb Arduino
Ús de teclats numèrics amb Arduino

Els teclats numèrics poden proporcionar una alternativa d’usuari final senzilla a diverses interfícies dels vostres projectes. O si necessiteu molts botons, us poden estalviar molt de temps pel que fa a la construcció. Seguirem connectant-los mitjançant la biblioteca Arduino i després acabarem amb un útil esbós d’exemple.

Pas 1: Introducció

Començant
Començant

Independentment d’on treieu els teclats, assegureu-vos que pugueu obtenir el full de dades, ja que us facilitarà la vida a l’hora de connectar-los. Per exemple: la imatge d’aquest pas.

El full de dades és important, ja que us indicarà quins pins o connectors del teclat són per a les files i les columnes. Si no teniu el full de dades, haureu de determinar manualment els contactes de les files i les columnes.

Això es pot fer mitjançant la funció de continuïtat d’un multímetre (el brunzidor). Comenceu col·locant una sonda al pin 1, l’altra sonda al pin 2 i premeu les tecles una per una. Anoteu quan un botó completa el circuit i, a continuació, moveu-vos al següent pin. Aviat sabreu quin és quin. Per exemple, a l'exemple, els pins 1 i 5 del teclat són per al botó "1", 2 i 5 per a "4", etc.

En aquest moment, descarregueu i instal·leu la biblioteca Arduino del teclat. Ara demostrarem com utilitzar els dos teclats en exemples senzills.

Pas 2: utilitzar un teclat de 12 dígits

Utilitzarem el petit teclat negre, un Arduino Uno compatible i una pantalla LCD amb una interfície I2C per a la visualització. Si no teniu una pantalla LCD, sempre podeu enviar el text al monitor sèrie.

Connecteu el LCD i connecteu el teclat a l’Arduino de la següent manera: Teclat fila 1 a Arduino digital 5 Teclat fila 2 a Arduino digital 4K teclat fila 3 a Arduino digital 3 Teclat fila 4 a Arduino digital 2 Teclat columna 1 a Arduino digital 8 Teclat columna 2 a Arduino digital 7Keypad columna 3 a Arduino digital 6 Si el vostre teclat és diferent al nostre, preneu nota de les línies de l’esbós de:

// definició del tipus de teclat

Com que heu de canviar els números de les matrius rowPins [ROWS] i colPins [COLS]. Introduïu els números de pins digitals connectats a les files i columnes del teclat respectivament.

A més, les tecles de matriu emmagatzemen els valors que es mostren a la pantalla LCD quan es prem un botó concret. Podeu veure que l’hem fet coincidir amb el teclat físic utilitzat, però podeu canviar-lo pel que necessiteu. Però, ara com ara, introduïu i pengeu l'esbós següent un cop us satisfaci de l'assignació de números de fila / pin:

/ * Teclat numèric i pantalla LCD I2C https://tronixstuff.com Utilitza la biblioteca de teclats per a Arduino https://www.arduino.cc/playground/Code/Keypad de Mark Stanley, Alexander Brevig * /

#include "Keypad.h"

#include "Wire.h" // per a LCD I2C #include "LiquidCrystal_I2C.h" // per a mòduls LCD de bus I2C // https://www.dfrobot.com/wiki/index.php/I2C/TWI_LCD1602_Module_(SKU: _DFR0063) LiquidCrystal_I2C lcd (0x27, 16, 2); // configureu l'adreça LCD a 0x27 per a una pantalla de 16 caràcters i 2 línies

// definició del tipus de teclat

byte const ROWS = 4; // quatre files const byte COLS = 3; // tecles de tres columnes [ROWS] [COLS] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}};

byte rowPins [ROWS] = {

5, 4, 3, 2}; // connecteu-vos als pinouts de la fila del byte del teclat colPins [COLS] = {8, 7, 6}; // connecteu-vos als pinouts de la columna del teclat

int count = 0;

Teclat teclat = Teclat (makeKeymap (tecles), rowPins, colPins, ROWS, COLS);

configuració nul·la ()

{lcd.init (); // inicialitzar el lcd lcd.backlight (); // activar la retroiluminació LCD}

bucle buit ()

{char key = keypad.getKey (); if (clau! = NO_KEY) {lcd.print (clau); comptar ++; if (count == 17) {lcd.clear (); compte = 0; }}}

I els resultats de l'esbós es mostren al vídeo. Ara podeu veure com es poden traduir els botons que premeu en dades per utilitzar-los en un esbós. Ara repetirem aquesta demostració amb el teclat més gran.

Pas 3: utilitzar un teclat de 16 dígits

Utilitzarem el teclat 4 × 4 més gran, compatible amb Arduino Uno i per canviar la pantalla LCD I2C d’Akafugu a efectes de visualització. Una vegada més, si no teniu una pantalla LCD, sempre podeu enviar el text al monitor sèrie. Connecteu el LCD i connecteu el teclat a l'Arduino de la manera següent:

  • Teclat fila 1 (pin vuit) a Arduino digital 5
  • Teclat fila 2 (pin 1) a Arduino digital 4
  • Teclat fila 3 (pin 2) a Arduino digital 3
  • Teclat fila 4 (pin 4) a Arduino digital 2
  • Columna 1 del teclat (pin 3) a Arduino digital 9
  • Columna 2 del teclat (pin 5) a Arduino digital 8
  • Columna 3 del teclat (pin 6) a Arduino digital 7
  • Columna 4 del teclat (pin 7) a Arduino digital 6

Ara per a l’esbós: preneu nota de com ens hem allotjat per al teclat numèric més gran: la columna addicional de les tecles de caràcters de la matriu el pin extra de la matriu colPins i el byte COLS = 4.

/ * Teclat numèric i pantalla LCD I2C https://tronixstuff.com Utilitza la biblioteca de teclats per a Arduino https://www.arduino.cc/playground/Code/Keypad de Mark Stanley, Alexander Brevig * /

#include "Keypad.h"

#include "Wire.h" // for I2C LCD #include "TWILiquidCrystal.h" // https://store.akafugu.jp/products/26 LiquidCrystal lcd (12, 11, 5, 4, 3, 2);

byte const ROWS = 4; // quatre files

byte const COLS = 4; // quatre columnes tecles de caràcters [ROWS] [COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}}; byte rowPins [ROWS] = {5, 4, 3, 2}; // connecteu-vos als pinouts de la fila del byte del teclat colPins [COLS] = {9, 8, 7, 6}; // connecteu-vos als pinouts de la columna del teclat int count = 0;

Teclat teclat = Teclat (makeKeymap (tecles), rowPins, colPins, ROWS, COLS);

configuració nul·la ()

{Serial.begin (9600); lcd.begin (16, 2); lcd.print ("Prova del teclat!"); retard (1000); lcd.clear (); }

bucle buit ()

{char key = keypad.getKey (); if (clau! = NO_KEY) {lcd.print (clau); Serial.print (clau); comptar ++; if (count == 17) {lcd.clear (); compte = 0; }}}

I de nou podeu veure els resultats de l'esbós anterior al vídeo.

Ara, per exemple, un projecte que és probablement l’ús més sol·licitat del teclat numèric …

Pas 4: exemple de projecte: sistema d'accés PIN

Sembla que l’ús més sol·licitat per a un teclat numèric és una aplicació d’estil “PIN”, on l’Arduino té instruccions de fer alguna cosa basant-se en la introducció d’un número correcte al teclat. El següent esbós utilitza el maquinari descrit per a l’esbós anterior i implementa un sistema d’entrada de PIN de sis dígits.

Les accions a realitzar es poden inserir a les funcions correctPIN () i incorrectPIN (). I el PIN es defineix al PIN PIN de la matriu [6]. Amb una mica de feina addicional també podríeu crear la vostra pròpia funció de canvi de PIN.

// Canvi PIN amb teclat numèric de 16 dígits // https://tronixstuff.com #include "Keypad.h" #include #include LiquidCrystal lcd (12, 11, 5, 4, 3, 2);

byte const ROWS = 4; // quatre files

byte const COLS = 4; // quatre columnes tecles de caràcters [ROWS] [COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}}; byte rowPins [ROWS] = {5, 4, 3, 2}; // connecteu-vos als pinouts de la fila del byte del teclat colPins [COLS] = {9, 8, 7, 6}; // connecteu-vos als pinouts de la columna del teclat

Teclat teclat = Teclat (makeKeymap (tecles), rowPins, colPins, ROWS, COLS);

PIN PIN [6] = {

'1', '2', 'A', 'D', '5', '6'}; // el nostre intent secret de número (!) [6] = {'0', '0', '0', '0', '0', '0'}; // utilitzat per a la comparació int z = 0;

configuració nul·la ()

{Serial.begin (9600); lcd.begin (16, 2); lcd.print ("PIN Lock"); retard (1000); lcd.clear (); lcd.print ("Introduïu el PIN …"); }

void correctPIN () // fes-ho si s'introdueix un PIN correcte

{lcd.print ("* PIN correcte *"); retard (1000); lcd.clear (); lcd.print ("Introduïu el PIN …"); }

void incorrectPIN () // fes-ho si s'introdueix un PIN incorrecte

{lcd.print ("* Torna-ho a provar *"); retard (1000); lcd.clear (); lcd.print ("Introduïu el PIN …"); }

anul·lar checkPIN ()

{int correcte = 0; int i; per a (i = 0; i <6; i ++) {

if (intenta == PIN )

{correcte ++; }} if (correcte == 6) {correctPIN (); } else {incorrectPIN (); }

for (int zz = 0; zz <6; zz ++) {intent [zz] = '0'; }}

void readKeypad ()

{char key = keypad.getKey (); if (clau! = NO_KEY) {intent [z] = clau; z ++; commutador (tecla) {cas '*': z = 0; trencar; cas '#': z = 0; retard (100); // per debounce extra lcd.clear (); checkPIN (); trencar; }}}

bucle buit ()

{readKeypad (); }

El projecte es mostra al vídeo.

Ara, doncs, podeu utilitzar teclats de dotze i setze botons amb els vostres sistemes Arduino. Estic segur que en un futur proper trobareu alguna cosa útil i interessant mitjançant els teclats.

Aquest article us el proporciona pmdway.com: tot per a fabricants i aficionats a l'electrònica, amb lliurament gratuït a tot el món.

Recomanat: