Hola a todos. les agradeceria me ayuden con este problema.
Estoy tratando de aprender a conectar un teclado de matriz 4x4 con mi arduino UNO, primero les explico lo que hice:
descargue la libreria Keypad.h
revise con un multimetro todas las conexiones del teclado para identificar cuales eran las filas y cuales las columnas
utilice una guia de las tantas que hay para hacer el programa para que se impriman las teclas que se presionan en el monitor serial. (creo que todo esta bien por que se compila sin errores).
los conectores del teclado los mande a los pines 9,8,7y 6 para las filas y 5,4,3 y 2 para las columnas.
El problema es que al presionar las teclas en ocasiones se imprimen y en ocasiones no, ejemplo, si oprimo la tecla 1 se imprime de inmediato en el monitor, si oprimo de nuevo la tecla 1 no se imprime y tengo que hacer muchos intentos para que se imprima de nuevo. esto pasa aleatoriamente con cualquier tecla.
solo como dato, cuando revise con el multimetro las conecciones del teclado la respuesta de continuidad al oprimir cualquier tecla era de inmediato sin ningun problema ni retraso.
Hola AVEGAM, deberías postear el código y el enlace de donde has descargado tu librería Keypad.h
Hace dias, intentado solucionar el problema de un forero, tuve inconvenientes con un teclado simulado.
Me funcionaba una columna en todas sus filas pero las demas no. Y sin embargo veía como todas cambiaban de estado.
No perdí mas tiempo y lo dejé pero me llama la atención lo que ahora comentas.
para comenzar, tu código dice lo siguiente
Cada 3 segundos luego que muestre todos los carteles bonitos, presta atención a ver si he presionado una tecla
Evidentemente no es la mejor manera de hacerlo, asi que porque no pruebas de este modo.
Comenta todo lo que tenga que ver con lcd solo para hacer una prueba y luego observa si el programa recompilado donde solo le presta atención a la presion de las teclas funciona.
Te vas a sorprender.
Si eso pasa, entonces modifica la parte de presentación que veo no tiene mucho sentido porque poner (ya se que estas experimentando)
lcd.print("!!!!CHINGADO!!!!"); // Mensaje a desplegar
lcd.setCursor(0,1);
delay (1000);
lcd.print("Por_Que_NO_Jala!"); // Mensaje a desplegar
delay (1000);
lcd.clear();
delay (1000);
Ok, entonces entiendo que el problema con el teclado es debido a los delay que utilice para que se esten desplegando los mensajes en la pantalla.
una disculpa por los carteles, olvide cambiarlos, es la desesperacion.
los mensajes que estaba probando son como una presentacion antes de iniciar el programa, esos debi ponerlos antes del "void setup" para que solo aparezcan al arranque y no se vuelvan a repetir y no afecten al programa una vez corriendo???
Entiendo que estas probando cosas pero comprende como afecta delay en tu velocidad de respuesta.
Ya que estas comenzando te invito a que aprendas AHORA a olidarte de delay y lo dejas solo para cosas muy TONTAS si se quiere, cosas en las que no se va a hacer nada mas.
En tu caso debes aprender a usar millis(). Ve a Documentación y busca Indice de Tutoriales como primer hilo.
Dentro lo encontrarás.
Estudia y practica millis() y luego vemos como reformar esto usandolo.
Eso te permitirá, atender siempre el teclado con velocidad inmediata o casi inmediata (dentro de 1 mseg) y tambien hace cosas que requieran ser presentadas a intervalos como en tu caso de seg, minutos u horas.