image1.jpg

Cómo declarar variables para codificar el teclado para su sistema de entrada con teclado Proyecto Arduino

Una vez que tenga el teclado y los componentes de la pantalla en su lugar en su tablero, es hora de cargar el código en su Arduino. Tómese un momento para mirar el código y luego cárguelo en su tablero.

En la primera sección, antes de la configuración, declara variables para el teclado y la pantalla.

const int numberOfDigits = 4; // El número de dígitos en la pantalla de 7 segmentos
const int numRows = 4; // Número de filas en el teclado
const int numCols = 3; // Número de columnas en el teclado
const int debounceTime = 20; // Número de milisegundos para que el conmutador se estabilice
const int doorOpenTime = 5000; // Cuánto tiempo quieres que la puerta permanezca abierta
const int strikePin = 9; // El pin que acciona el relé para el golpe de la puerta
const int slaveSelect = 10; // Pin utilizado para habilitar el pin esclavo en el MAX72xx
char code [4] = {'1', '2', '3', '4'}; // Establece tu código aquí
char codeBuffer [4]; // Almacena el código que se está ingresando actualmente
booleano DEBUG = verdadero; // Establecer en verdadero para imprimir mensajes de estado en el puerto serie
int keypressCount = 0; // Cuenta cuántas veces se ha presionado una tecla
// El keyMap define el carácter devuelto cuando se presiona su tecla
const char keyMap [numRows] [numCols] = {
 {'1', '2', '3'},
 {'4', '5', '6'},
 {'7', '8', '9'},
 {'*', '0', '#'}
};
const int rowPins [numRows] = {7, 4, 2, 5}; // Filas de teclado 0 a 3
const int colPins [numCols] = {6, 8, 3}; // Columnas del teclado 0 a 2

La variable numberOfDigits establece su controlador LED IC con el número adecuado de dígitos. numRows y NumCols almacenan el número de filas y columnas en su teclado, 4 y 3, respectivamente. Utilice estos para buscar qué tecla se está presionando. Los debounceTim e asegura que el ser tecla pulsada se detecta con precisión. Usted establece la cantidad de tiempo que la puerta se mantendrá abierta con la variable doorOpenTime .

La variable strikePin define qué pin digital se activará cuando se ingrese el código correcto. Esto aplica energía al relé, que se cierra para activar el mecanismo de bloqueo de la puerta. Es posible que desee utilizar un nombre diferente si está utilizando un tipo de mecanismo diferente, como una cerradura de puerta magnética o una cerradura de perno.

LEER  Cómo hacer un instrumento con Arduino

slaveSelect define un pin digital que utiliza para indicar que está enviando datos. El pin de selección esclavo (o “selección de chip”) (SS) es un pin de comando en su IC que conecta los pines externos a los circuitos internos.

En aplicaciones con varios controladores de LED que están todos conectados a sus cables de entrada, desea poder seleccionar si está habilitado o no. El IC solo responde a los comandos cuando su pin de modo de selección esclavo está activado, lo que le permite diferenciar entre este controlador y otros que pueda estar utilizando.

Solo está utilizando un solo IC en este proyecto, pero aún necesita informarle al chip cuándo va a enviarle datos, y eso es lo que hace el pin SS.

Dos de char variables se utilizan para la manipulación de código de acceso. El primero, código [] , almacena los dígitos del código de acceso. Puede configurar esto para que sea lo que quiera. El segundo carácter , codeBuffer [], almacena (o “almacena en búfer”) las teclas que se presionaron. Cuando estos dos coincidan, ¡listo! El Arduino activa strikePin . No hay forma de configurar el código desde el teclado, debe hacerlo mediante programación.

Este programa tiene incorporada una pequeña y práctica función de depuración. Para eso es la siguiente variable: un valor booleano llamado DEBUG . Recuerde que las variables booleanas solo pueden ser verdaderas o falsas. Al establecer esto en verdadero , puede usar una instrucción if condicional para ejecutar ciertas líneas de código que no se ejecutarán si lo establece en falso .

Por ejemplo, en este código imprime muchas variables en el puerto serie, para probar que su teclado está funcionando correctamente. Pero después de que su sistema esté instalado en su puerta, no necesita imprimir nada. En lugar de eliminar todas esas declaraciones Serial.println () , simplemente puede volver a la variable DEBUG y establecerla en falso .

El keypressCount almacena cuántos dígitos se han presionado hasta ahora. Cuando se presiona el cuarto, ocurre la acción real.

LEER  Conociendo el Arduino Uno

La variable char keyMap [] [] es una matriz bidimensional. Una matriz bidimensional es simplemente una matriz de matrices. Imagina un menú para un restaurante italiano. Puede tener una docena de elementos del menú para elegir: palitos de pan, sopa, pizza, lasaña, ensalada, vino tinto, etc.

Puede almacenarlos como una sola matriz, pero también puede organizarlos por tipo: entrantes {palitos de pan, sopa}, platos principales {pizza, lasaña, pasta}, bebidas {agua, vino tinto, vino blanco}. De esta forma, puede hacer referencia a los elementos individualmente o como colecciones. Una matriz de una sola dimensión, como con su matriz de código [] , almacena elementos ( elementos de datos individuales) como este:

Int anArray [] = {0,1,2,3};

Una matriz bidimensional almacena elementos como este:

Int anArray [] [] = {{0,1,2,3}, {3,2,3,0}, {4,3,8,1}, {2,3,4,5}};

Cuando lee de una matriz bidimensional, el primer valor entre corchetes especifica qué elemento desea leer; el segundo valor entre paréntesis especifica el elemento dentro del elemento que especificó. Al trabajar con matrices, el sistema de numeración comienza desde cero. Entonces, por ejemplo, en la matriz bidimensional anterior, anArray [2] [0] tiene el valor 4 .

El keyMap se usa simplemente para almacenar qué dígitos están en el teclado. Es literalmente un mapa de las llaves.

Cuando se presiona una tecla, usa el keyMap para identificar qué número está en esa ubicación, de modo que pueda compararlo con su código predeterminado.

Las dos últimas variables son matrices que almacenan a cuál de los pines digitales de Arduino están conectadas las filas y columnas de su teclado.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *