Pages: [1]   Go Down
Author Topic: Keypad y arduino. Necesito ideas/soluciones.  (Read 1025 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 10
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Os pongo en situación:
-Arduino
-Keypad 3x4 típico
1 2 3
4 5 6
7 8 9
* 0 #

La pregunta es la siguiente:
¿ Se puede controlar el keypad sin tener que "perder" 7 pines del arduino? La verdad que no me apetece nada la idea... 4 pines para horizontal y 3 para vertical.
¿Hay algún chip que me lo simplifique a 4 bits? (16 opciones de codificación. Más que de sobra en teoria)

De hecho preguntaré más:
Si existe ese chip, ¿hay alguna manera de controlar el teclado por interrupción? Mas que nada la idea es que el teclado responda correctamente y no perder pulsos... ni hacerlo por polling, ya que si pongo un tiempo muy corto de refresco puede que "lea" dos veces la misma tecla y si pongo un tiempo muy largo puede que no la lea...

A ver si me podeis echar un cable  smiley-wink

Saludos gente!
Logged

Albacete
Offline Offline
Full Member
***
Karma: 0
Posts: 140
Arduino mola que te pasas
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Para ahorrar pines en la lectura, puedes utilizar un multiplexor de 16 a 1. Este tipo de CI te proporciona 16 lineas de entrada, y una linea de salida. Para tu aplicacion concreta, debes conectar a las 16 lineas de entrada las 12 lineas del Keypad (deja conectadas a tierra las que sobren, no debes dejarlas al aire). Para leer el teclado, debes colocar en las 4 patillas de control secuencialmente los numeros de 0 a 11 (0000,0001,0010,0011,0100,0101,0110,0111,1000,1001,1010,1011). Cuando tengas corriente en la salida, la tecla pulsada es la indicada por el numero presente en las patillas de control.
Para leerlo con interrupciones, necesitas una puerta OR de 12 entradas ( o algun montaje equivalente). La salida de esta puerta la conectas al pin que vas a utilizar para disparar la interrupcion. Ten en cuenta que cada salida del teclado debe ir a dos sitios: al multiplexor y a la puerta OR.
Y el programa es de lo mas sencillo: habilitas la rutina de servicio de la interrupcion ligada a la entrada a la que conectaste la puerta OR, y en esa rutina de servicio, un bucle hace los out por los pines asignados a las patillas de control y comprueba la entrada antes de pasar a la siguiente vuelta, devolviendo el numero que corresponda a la tecla pulsada.
Espero haberte ayudado.
Pofenas
Logged

0
Offline Offline
Full Member
***
Karma: 1
Posts: 247
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

En las páginas siguientes tienes distintas posibilidades para utilizar teclados sin usar muchas entradas:
Utilizando una entrada analógica:
http://txapuzas.blogspot.com/2010/07/papertecladoanalogico-varios-pulsadores.html

Utilizando una entrada digital:
http://txapuzas.blogspot.com/2010/09/papertecladorc-varios-pulsadores.html

Incluso puedes hacer un teclado con una hoja de papel impresa!!  8-)
(Utilizando una entrada analógica):
http://txapuzas.blogspot.com/2009/12/paperteclado-un-teclado-con-una-hoja.html

Espero que te sirvan

Saludos
Logged


0
Offline Offline
Newbie
*
Karma: 0
Posts: 40
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

muy buena información...
gracias.
Logged

Pages: [1]   Go Up
Jump to: