Descripción
Este teclado matricial de 12 teclas (3×4) está pensado para interfaces usuario-máquina sencillas, por ejemplo una aplicación de contraseña con pocos dígitos. La pulsación es suave (sin «click»), ofreciendo una operación fiable y silenciosa. El perfil del teclado es muy fino, facilitando su integración.
El uso del teclado es muy sencillo: conecta la masa, activa los pull-ups de las entradas de Arduino y haz que tu código compruebe de manera continua el estado de las otras conexiones (o usa una interrupción). Cuando una de esas entradas marque un ‘0’, se detectará la pulsación de esa tecla. En este teclado es posible también detectar varias pulsaciones simultáneas.
El teclado incorpora una lámina adhesiva en la cara posterior, para facilitar su integración.
- 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 } }
Valoraciones
No hay valoraciones aún.