.. note::
¡Hola! Bienvenido a la Comunidad de Entusiastas de SunFounder para Raspberry Pi, Arduino y ESP32 en Facebook. Sumérgete en el fascinante mundo de Raspberry Pi, Arduino y ESP32 junto a otros entusiastas.
**¿Por qué unirte?**
- **Soporte Experto**: Resuelve problemas postventa y desafíos técnicos con la ayuda de nuestra comunidad y equipo.
- **Aprende y Comparte**: Intercambia consejos y tutoriales para mejorar tus habilidades.
- **Avances Exclusivos**: Obtén acceso anticipado a nuevos anuncios de productos y adelantos exclusivos.
- **Descuentos Especiales**: Disfruta de descuentos exclusivos en nuestros productos más recientes.
- **Promociones Festivas y Sorteos**: Participa en sorteos y promociones especiales de temporada.
👉 ¿Listo para explorar y crear con nosotros? Haz clic en [|link_sf_facebook|] y únete hoy mismo.
.. _2.1.5_keypad_nodejs:
2.1.5 Teclado Matricial
===========================
Introducción
---------------
Un teclado matricial es un arreglo rectangular de botones. En este proyecto,
lo utilizaremos para ingresar caracteres.
Componentes
--------------
.. image:: ../img/list_2.1.5_keypad.png
Diagrama del Circuito
------------------------
.. image:: ../img/image315.png
.. image:: ../img/image316.png
Procedimientos Experimentales
---------------------------------
**Paso 1:** Construye el circuito.
.. image:: ../img/image186.png
**Paso 2:** Abre el archivo de código.
.. raw:: html
.. code-block::
cd ~/davinci-kit-for-raspberry-pi/nodejs/
**Paso 3:** Ejecuta el código.
.. raw:: html
.. code-block::
sudo node keypad.js
Tras ejecutar el código, los valores de las teclas presionadas en el
teclado matricial (Valor de la tecla) se mostrarán en pantalla.
**Código**
.. code-block:: js
const Gpio = require('pigpio').Gpio;
var rowsPins = [18,23,24,25];
var colsPins = [10,6,27,17];
var keys = ["1","2","3","A",
"4","5","6","B",
"7","8","9","C",
"*","0","#","D"];
for(let i=0;i{
col=i;
pressed_keys=keys[row*colsPins.length+col];
if(last_key_pressed!=pressed_keys){
console.log(`${pressed_keys}`);
}
last_key_pressed = pressed_keys;
});
}
var row=-1;
setInterval(() => {
row=(row+1)%rowsPins.length;
for(let i=0;i {
row=(row+1)%rowsPins.length;
for(let i=0;i{
col=i;
// pressed_keys=keys[row*colsPins.length+col];
// if(last_key_pressed!=pressed_keys){
// console.log(`${pressed_keys}`);
// }
// last_key_pressed = pressed_keys;
});
}
Se establecen funciones de interrupción para las cuatro columnas. La variable ``col`` ubica las columnas que disparan el evento de interrupción.
.. code-block:: js
pressed_keys=keys[row*colsPins.length+col];
if(last_key_pressed!=pressed_keys){
console.log(`${pressed_keys}`);
}
last_key_pressed = pressed_keys;
En la función de interrupción, se obtiene el valor de la tecla desde la matriz ``keys`` usando ``row`` y ``col``.
Cada vez que se obtiene un nuevo valor de tecla, este se imprime en pantalla.
Imagen del Fenómeno
-----------------------
.. image:: ../img/image188.jpeg