Cuando activamos o desactivamos un pulsador, se producen una serie de rebotes o fluctuaciones (ruido) hasta que se asienta el valor que el pulsador va a transmitir. La mayoría de microcontroladores, incluyendo Arduino, debido a su alta velocidad de procesamiento de instrucciones son capaces de detectar estos rebotes y como consiguiente nos encontramos con un problema a la hora de trabajar con pulsadores, ya que Arduino será capaz de interpretar falsos niveles lógicos cuando activemos o desactivemos un pulsador (sin la eliminación de rebotes, al presionar el pulsador una sola vez, Arduino puede creer que lo hemos presionado repetidas veces).
Rebotes en un pulsador |
En la mayoría de programas simplemente se utiliza un delay (retardo) de unos cuantos milisegundos (100 ms por ejemplo) entre cada lectura del estado del pulsador para evitar el problema de los rebotes, puesto que con ese tiempo de retardo es suficiente para que el pulsador haya estabilizado su estado y Arduino no detecte fluctuaciones.
En este POST os muestro una manera mucho más profesional y lógica de solucionar el problema de los rebotes, lo que conlleva comprobar el estado del pulsador dos veces en un corto período de tiempo para asegurarnos de que definitivamente se ha presionado el pulsador, además de conectar un display LCD a nuestro Arduino para mostrar el número de veces que se presiona el pulsador.
Lista de Materiales:
· Arduino UNO Rev.3.
· Cable USB tipo A-B.
· Pulsador.
· Resistencia de 10KΩ.
· Módulo LCM 1602 I2C V1.
· Display 16x2 LCD 1602.
· Protoboard.
· Cables de conexión.
Código del programa:
Video:
Hola, lo primero es darte las gracias, y quisiera hacerte una pregunta e seguido el tutorial y no funciona de ningunas de las manera quisiera que me ayudaras si es posible, porque no todo es igual que el tuyo para empezar tengo el arduino mega y la pantalla es 20x4 con I2c. Ya eh hecho todos los cambios que se me han ocurrido y no hay manera de que en pantalla salgan las letras, siempre sale en blanco. entonces no puedo seguir para comprobar lo demás. Gracias
ResponderEliminarDentro de un POST de mi BLOG tienes como conectar un LCD 2004 (El POST del caudalimetro). Recuerda que los pines I2C (SDA y SCL) del MEGA y del UNO no son los mismos. Tambien recuerda que estás programando 4 líneas y no solamente 2 como si utilizas un LCD 1602, (20,4) y no (16,2). Por ultimo dentro del programa cambia la dirección I2C por la de tu LCD 2004 (pines AO, A1 y A2), aunque esto es igual que para un LCD 1602 I2C (busca en mi BLOG como hacerlo que también lo tienes)
EliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarHola, quisiera saber algo que no entendí, en la linea 75 abriste llaves y empesaste a ralizar declaraciones antes del SETUP y sin antes usar algun tipo de control de estructura como el IF, FOR, WHILE... etc.
ResponderEliminarSoy nuevo en este tema y no sabia que esto se pudiera hacerse así.
Es una función para el control del pulsador. Se pueden programar antes o despues del setup indistintamente
EliminarAl del lcd que le sale en blanco, a mi me pasó igual con uno nuevo que compré y era solo que el brillo estaba demasiado alto, mueve el potenciómetro que trae la pantalla, puede que sea eso
ResponderEliminarhola amigo al momento de cargar tu codigo a mi arduino se queda pegado la pantalla
ResponderEliminary no pasa de ahi y ya le he cargado varios programas y funcionan bien, estoy usando un modulo i2c y una lcd 16x2
Utiliza mis librerías. http://miarduinounotieneunblog.blogspot.com.es/2015/12/anadiendo-las-librerias.html?m=1
Eliminarhola ing.. e estado revisando tu codigo y al momento de cargarlo me marca error de carga al arduino que sugieres?
ResponderEliminarSi no me dices el error que te marca, no te puedo ayudar.... instala mis librerías que están en uno de los primeros POST del BLOG y fácil que sea suficiente
Eliminargracias por tu ayuda y gran trabajo, pero tengo una duda, cómo puedo detectar si el botón se mantiene presionado?, en mi caso es para detectar que el botón esta pegado.
ResponderEliminarDesde ya muchas gracias.