Los teclados matriciales se componen de una matriz de pulsadores dispuestos en filas y columnas.
Para conseguir n teclas estas se disponen en x filas por y columnas que dan ese número total de n teclas.
La suma de x e y es el número más pequeño posible con el objeto de usar las menos entradas-salidas de nuestro microcontrolador.
12 teclas = 4 filas + 3 columnas = 7 pines
16 teclas = 4 filas + 4 columnas = 8 pines
15 teclas = 5 filas + 3 columnas = 8 pines
En el circuito Picaxe propuesto compatible con las series M2 y X2 se ha usado el puerto C de un 20M2 y 20X2.
Estos ocho pines del puerto C cuentan con un pulldown a masa con resistencias de 10K tal y como usa la placa 20M2 standard de Picaxe.
Las filas y columnas se han conectado desde la fila 1 a 4 entre las entradas C0 y C3 y las columnas 1 a 4 entre C4 y C7.
Se ha timbrado el teclado matricial para averiguar su conexionado interno:
Visto de frente F1 F2 F3 F4 C1 C2 C3 C4.
Las teclas cumplen la siguiente logica:
1 Une F1 y C1 Valor generado en el programa=1
2 Une F1 y C2 Valor generado en el programa=2
3 Une F1 y C3 Valor generado en el programa=3
A Une F1 y C4 Valor generado en el programa=10
4 Une F2 y C1 Valor generado en el programa=4
5 Une F2 y C2 Valor generado en el programa=5
6 Une F2 y C3 Valor generado en el programa=6
B Une F2 y C4 Valor generado en el programa=11
7 Une F3 y C1 Valor generado en el programa=7
8 Une F3 y C2 Valor generado en el programa=8
9 Une F3 y C3 Valor generado en el programa=9
C Une F3 y C4 Valor generado en el programa=12
* Une F4 y C1 Valor generado en el programa=14
0 Une F4 y C2 Valor generado en el programa=16
# Une F4 y C3 Valor generado en el programa=15
D Une F4 y C4 Valor generado en el programa=13
El valor generado en el programa no depende del teclado, depende del programa del microcontrolados, así de 1 a D se a usado el valor hexadecimal de la tecla convertido a decimal. La tecla 0 genera un 16, para evitar confundirla con un estado de reposo. TODOS ESTOS VALORES LOS ELIJE EL PROGRAMADOR SEGUN SUS NECESIDADES.
El funcionamiento del programa es el siguiente:
- Secuncialmente de envia un '1' a cada una de las cuatro filas se leen las cuatro columnas y se almacena el valor en una variable acumulativa llamada 'TECLA'.
- Al finalizar la secuencia de las cuatro filas, se envia el valor de la función OR a la consola del 'DEBUG'.
- Si se detecta una pulsación de tecla se envía un sonido corto 'beep' a un buzzer pasivo situado en el pin B0.
Si se mantiene pulsada una tecla oiremos varios pitidos en el buzzer. El programa cree que se ha pulsado varias veces.
Al eliminar el comando debug del programa este irá más rápido por lo que se puede acentuar el efecto anterior.
Este programa describe como leer un teclado matricial 4x4 desde un micro Picaxe, que puede realizar otras funciones.
Voy a publicar próximamente un artículo para convertir micros Picaxe en decodificadores de teclado como función única, de entrada matricial a salida hexadecimal, liberando al microcontrolador principal de la placa de esta función y del uso de sus recursos HW y SW.
'Lectura de teclado matricial 4x4 desde Picaxe 20m2 y 20x2
'JCO-Robotics Junio de 2014
let dirsc = 001111
let pinsc = 000000
symbol c1=pinc.4
symbol c2=pinc.5
symbol c3=pinc.6
symbol c4=pinc.7
symbol tecla = b8
pullup off
leeteclado:
high c.0
tecla= c1
tecla = c2 * 2 or tecla
tecla = c3 * 3 or tecla
tecla = c4 * 10 or tecla
low c.0
high c.1
tecla= c1 * 4 or tecla
tecla = c2 * 5 or tecla
tecla = c3 * 6 or tecla
tecla = c4 * 11 or tecla
low c.1
high c.2
tecla= c1 * 7 or tecla
tecla = c2 * 8 or tecla
tecla = c3 * 9 or tecla
tecla = c4 * 12 or tecla
low c.2
high c.3
tecla= c1 * 14 or tecla
tecla = c2 * 16 or tecla
tecla = c3 * 15 or tecla
tecla = c4 * 13 or tecla
low c.3
if tecla > 0 then
sound b.0,(50000,10)
end if
debug
goto leeteclado
https://kevinsgallagher.com/el-vino-en-los-restaurantes-al-lado-del-vaso-o-comprar-la-botella/
ResponderEliminarLos vinos premium de un restaurante son vinos tintos, blancos y espumosos que son mucho mejores en calidad que los vinos tintos o blancos básicos de la casa. Como tal, un restaurante vende estos vinos a un precio más alto, usualmente en el rango de $12 a $20 por vaso.