Taula de continguts:

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

Vídeo: Ús de teclats numèrics amb Arduino: 4 passos

Vídeo: Ús de teclats numèrics amb Arduino: 4 passos
Vídeo: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, De novembre
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: