Teclado membrana 4×3 (ref: 0073)

1,25 

Hay existencias

SKU: 0073 Categoría: Etiquetas: , , ,

Descripción

Teclado matricial de membrana de 12 teclas (3×4).

Dimensiones: 69.2 x 76.9 mm

Tipo: matricial

Conector: paso 2.54mm

Código de ejemplo:

/* EJEMPLO Teclado 3x4
* Código proporcionado bajo licencia CC-BY
* Puedes distribuir, mezclar, adapatar y hacer tuyo este código.
* Sólo te pedimos que hagas referencia a nosotros como fuente original de la información.
* 
* Si tienes dudas sobre el uso de este ejemplo no dudes en contactarnos, estamos para echarte una mano.
* ----------------------------------
* www.electronperdido.com
* contacto@electronperdido.com
* ----------------------------------
*/

// Indicamos en qué pines hemos conectado las "filas" y "columnas" del teclado
// Esta manera de introducir valores se llama "vector"
const byte filas[4] = { 11, 10, 9, 8 };
const byte columnas[3] = { 4, 3, 2 };

// Creamos una "matriz" que es un mapa de nuestras teclas
char teclas[4][3] = {
{ '1','2','3' },
{ '4','5','6' },
{ '7','8','9' },
{ '*','0','#' }
};

// El código dentro de SETUP se ejecuta una única vez, al inicio del programa
void setup (){
Serial.begin(9600); // Inicializa el puerto serie a 9600bps (para comunicar con el PC)

// Para que el tecldo funcione correctamente es necesario configurar las entradas como "alta impedancia"
// Lo hacemos con un bucle "for" para inicializar todas las entradas de manera compacta
for (byte i = 0; i < 3; i++)
{ pinMode(columnas[i], INPUT);
digitalWrite(columnas[i], HIGH); }

// Las filas deben configurarse como entrada con "pull-up", en este caso activamos el pull-up interno
for (byte i = 0; i < 4; i++)
{ pinMode(filas[i], INPUT_PULLUP); }

}

// El código dentro de LOOP se ejecuta de manera repetida hasta el fin de los tiempos...
void loop () {
int pulsada = 0, fila, columna; //Variables de pulsación detectada

for (byte i = 0; i < 3; i++) //Barrido de columnas
{ // Poner columna a '0' (configurándola momentáneamente como salida)
pinMode(columnas[i],OUTPUT);
digitalWrite(columnas[i], LOW);

// Revisar todas las filas comprobando teclas pulsadas
for (byte j = 0; j < 4; j++)
{ if (digitalRead(filas[j]) == LOW) {
// Tecla pulsada en fila 'i' y columna 'j'
fila = j; columna = i; pulsada = 1; 
} 
}
// Volver a alta impedancia
digitalWrite(columnas[i], HIGH);
pinMode(columnas[i], INPUT);
}

if (pulsada){ //Muestra por pantalla la tecla pulsada
Serial.println(teclas[fila][columna]);//Busca 'fila' y 'columna' en la matriz y lo envía a través del puerto serie
pulsada = 0; // Resetea el 'flag' de pulsación detectada
delay(400); // Espera, para no mostrar muchas veces la misma tecla pulsada
}

}