Tabla de contenido:

Uso de teclados numéricos con Arduino: 4 pasos
Uso de teclados numéricos con Arduino: 4 pasos

Video: Uso de teclados numéricos con Arduino: 4 pasos

Video: Uso de teclados numéricos con Arduino: 4 pasos
Video: manejo de teclado 4x4 matricial con arduino | arduino desde cero @editronikx 2024, Noviembre
Anonim
Usando teclados numéricos con Arduino
Usando teclados numéricos con Arduino

Los teclados numéricos pueden proporcionar una alternativa simple para el usuario final para varias interfaces para sus proyectos. O si necesita muchos botones, pueden ahorrarle mucho tiempo con respecto a la construcción. Pasaremos por conectarlos, usando la biblioteca Arduino y luego terminaremos con un boceto de ejemplo útil.

Paso 1: Comenzando

Empezando
Empezando

No importa de dónde obtenga sus teclados, asegúrese de que puede obtener la hoja de datos, ya que esto le facilitará la vida al conectarlos. Por ejemplo, la imagen de este paso.

La hoja de datos es importante ya que le dirá qué pines o conectores en el teclado son para las filas y columnas. Si no tiene la hoja de datos, deberá determinar manualmente qué contactos son para las filas y columnas.

Esto se puede hacer usando la función de continuidad de un multímetro (el zumbador). Comience colocando una sonda en el pin 1, la otra sonda en el pin 2 y presione las teclas una por una. Tome nota de cuándo un botón completa el circuito, luego pase al siguiente pin. Pronto sabrás cuál es cuál. Por ejemplo, en el ejemplo del teclado, los pines 1 y 5 son para el botón "1", 2 y 5 para "4", etc.

En este punto, descargue e instale la biblioteca Arduino del teclado. Ahora demostraremos cómo usar ambos teclados en ejemplos simples.

Paso 2: uso de un teclado de 12 dígitos

Usaremos el pequeño teclado negro, un Arduino Uno compatible y una pantalla LCD con una interfaz I2C para fines de visualización. Si no tiene una pantalla LCD, siempre puede enviar el mensaje de texto al monitor en serie.

Conecte su LCD y luego conecte el teclado al Arduino de la siguiente manera: Fila de teclado 1 a Arduino digital 5 Fila de teclado 2 a Arduino digital 4 Fila de teclado 3 a Arduino digital 3 Fila de teclado 4 a Arduino digital 2 Columna de teclado 1 a Arduino digital 8 Columna de teclado 2 a Arduino digital 7 Columna 3 del teclado a Arduino digital 6 Si su teclado es diferente al nuestro, tome nota de las líneas en el boceto de:

// definición del tipo de teclado

Como necesita cambiar los números en las matrices rowPins [ROWS] y colPins [COLS]. Ingresa los números de pin digitales conectados a las filas y columnas del teclado, respectivamente.

Además, las teclas de matriz almacenan los valores que se muestran en la pantalla LCD cuando se presiona un botón en particular. Puede ver que lo hemos hecho coincidir con el teclado físico utilizado, sin embargo, puede cambiarlo a lo que necesite. Pero por ahora, ingrese y cargue el siguiente boceto una vez que esté satisfecho con las asignaciones de número de fila / pin:

/ * Teclado numérico y LCD I2C https://tronixstuff.com Utiliza la biblioteca de teclado para Arduino https://www.arduino.cc/playground/Code/Keypad de Mark Stanley, Alexander Brevig * /

#include "Teclado.h"

#include "Wire.h" // para LCD I2C #include "LiquidCrystal_I2C.h" // para módulo LCD de bus I2C // https://www.dfrobot.com/wiki/index.php/I2C/TWI_LCD1602_Module_(SKU: _DFR0063) LiquidCrystal_I2C lcd (0x27, 16, 2); // establece la dirección LCD en 0x27 para una pantalla de 16 caracteres y 2 líneas

// definición del tipo de teclado

const byte FILAS = 4; // cuatro filas const byte COLS = 3; // claves de caracteres de tres columnas [ROWS] [COLS] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}};

byte rowPins [ROWS] = {

5, 4, 3, 2}; // conectarse a los pines de fila del byte del teclado colPins [COLS] = {8, 7, 6}; // conectarse a los pines de columna del teclado

int count = 0;

Teclado teclado = Teclado (makeKeymap (teclas), rowPins, colPins, ROWS, COLS);

configuración vacía ()

{lcd.init (); // inicializa el lcd lcd.backlight (); // enciende la luz de fondo de la pantalla LCD}

bucle vacío ()

{char key = keypad.getKey (); if (clave! = NO_KEY) {lcd.print (clave); contar ++; si (cuenta == 17) {lcd.clear (); cuenta = 0; }}}

Y los resultados del boceto se muestran en el video. Entonces, ahora puede ver cómo las pulsaciones de botones se pueden traducir en datos para usar en un boceto. Ahora repetiremos esta demostración con el teclado más grande.

Paso 3: uso de un teclado de 16 dígitos

Usaremos el teclado 4 × 4 más grande, compatible con Arduino Uno y, para variar, el LCD I2C de Akafugu para fines de visualización. Nuevamente, si no tiene una pantalla LCD, siempre puede enviar el mensaje de texto al monitor en serie. Conecte la pantalla LCD y luego conecte el teclado al Arduino de la siguiente manera:

  • Fila de teclado 1 (patilla ocho) a Arduino digital 5
  • Fila de teclado 2 (pin 1) a Arduino digital 4
  • Fila de teclado 3 (pin 2) a Arduino digital 3
  • Fila de teclado 4 (pin 4) a Arduino digital 2
  • Columna de teclado 1 (pin 3) a Arduino digital 9
  • Columna de teclado 2 (pin 5) a Arduino digital 8
  • Columna de teclado 3 (pin 6) a Arduino digital 7
  • Columna de teclado 4 (pin 7) a Arduino digital 6

Ahora para el boceto - observe cómo nos hemos acomodado para el teclado numérico más grande: la columna extra en la matriz de teclas de caracteres , el pin extra en la matriz colPins y el byte COLS = 4.

/ * Teclado numérico y LCD I2C https://tronixstuff.com Utiliza la biblioteca de teclado para Arduino https://www.arduino.cc/playground/Code/Keypad de Mark Stanley, Alexander Brevig * /

#include "Teclado.h"

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

const byte FILAS = 4; // cuatro filas

const byte COLS = 4; // claves de caracteres de cuatro columnas [ROWS] [COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}}; byte rowPins [FILAS] = {5, 4, 3, 2}; // conectarse a los pines de fila del byte del teclado colPins [COLS] = {9, 8, 7, 6}; // conectarse a los pines de la columna del teclado int count = 0;

Teclado teclado = Teclado (makeKeymap (teclas), rowPins, colPins, ROWS, COLS);

configuración vacía ()

{Serial.begin (9600); lcd. comienzo (16, 2); lcd.print ("¡Prueba del teclado!"); retraso (1000); lcd.clear (); }

bucle vacío ()

{char key = keypad.getKey (); if (clave! = NO_KEY) {lcd.print (clave); Serial.print (clave); contar ++; si (cuenta == 17) {lcd.clear (); cuenta = 0; }}}

Y nuevamente puedes ver los resultados del boceto de arriba en el video.

Ahora, para un proyecto de ejemplo, uno que probablemente sea el uso más solicitado del teclado numérico …

Paso 4: Proyecto de ejemplo - Sistema de acceso con PIN

El uso más solicitado para un teclado numérico parece ser una aplicación de estilo "PIN", donde se le indica al Arduino que haga algo basado en un número correcto ingresado en el teclado. El siguiente esquema utiliza el hardware descrito para el esquema anterior e implementa un sistema de entrada de PIN de seis dígitos.

Las acciones a realizar se pueden insertar en las funciones correctPIN () e incorrectoPIN (). Y el PIN se establece en la matriz de caracteres PIN [6]. Con un poco de trabajo adicional, también podría crear su propia función de cambio de PIN.

// Interruptor PIN con teclado numérico de 16 dígitos // https://tronixstuff.com #include "Keypad.h" #include #include LiquidCrystal lcd (12, 11, 5, 4, 3, 2);

const byte FILAS = 4; // cuatro filas

const byte COLS = 4; // claves de caracteres de cuatro columnas [ROWS] [COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}}; byte rowPins [FILAS] = {5, 4, 3, 2}; // conectarse a los pines de fila del byte del teclado colPins [COLS] = {9, 8, 7, 6}; // conectarse a los pines de columna del teclado

Teclado teclado = Teclado (makeKeymap (teclas), rowPins, colPins, ROWS, COLS);

char PIN [6] = {

'1', '2', 'A', 'D', '5', '6'}; // nuestro número secreto (!) intento de caracteres [6] = {'0', '0', '0', '0', '0', '0'}; // utilizado para la comparación int z = 0;

configuración vacía ()

{Serial.begin (9600); lcd. comienzo (16, 2); lcd.print ("Bloqueo de PIN"); retraso (1000); lcd.clear (); lcd.print ("Ingresar PIN …"); }

void correctPIN () // haga esto si ingresó el PIN correcto

{lcd.print ("* PIN correcto *"); retraso (1000); lcd.clear (); lcd.print ("Ingresar PIN …"); }

void wrongPIN () // haga esto si ingresó un PIN incorrecto

{lcd.print ("* Vuelve a intentarlo *"); retraso (1000); lcd.clear (); lcd.print ("Ingresar PIN …"); }

anular checkPIN ()

{int correcto = 0; int i; para (i = 0; i <6; i ++) {

si (intento == PIN )

{correcto ++; }} if (correcto == 6) {correctPIN (); } más {PIN incorrecto (); }

para (int zz = 0; zz <6; zz ++) {intento [zz] = '0'; }}

vacío readKeypad ()

{char key = keypad.getKey (); if (clave! = NO_KEY) {intento [z] = clave; z ++; interruptor (tecla) {caso '*': z = 0; rotura; caso '#': z = 0; retraso (100); // para antirrebote adicional lcd.clear (); checkPIN (); rotura; }}}

bucle vacío ()

{readKeypad (); }

El proyecto se demuestra en el video.

Así que ahora tiene la capacidad de usar teclados de doce y dieciséis botones con sus sistemas Arduino. Estoy seguro de que en un futuro próximo se le ocurrirá algo útil e interesante utilizando los teclados.

Esta publicación es presentada por pmdway.com: todo para fabricantes y entusiastas de la electrónica, con entrega gratuita en todo el mundo.

Recomendado: