Arduino Tutorial 15: Temporizador

Hoy vamos a realizar con Arduino un temporizador o cuenta atrás. Mediante unos pulsadores se pueden poner las horas, minutos y segundos que quieras y mediante otro pulsador inicias la cuenta atrás.

Esquema:

Esquema de montaje del temporizador
Esquema de montaje del temporizador

El conexionado de la imagén anterior está incompleto, ya que le falta un cable que vaya desde el pin 5V hasta el positivo de la protoboard, y un cable desde el pin GND hasta el negativo de la protoboard. La LCD se conecta como en tutoriales anteriores. Para el contraste de la misma se emplea un potenciómetro.

Código:

Vídeo de funcionamiento del temporizador:

Guardar

Spread the love

15 comentarios en “Arduino Tutorial 15: Temporizador”

  1. hola, es posible que al presionar el botón arranque cuando esta en la cuenta regresiva se incremente los minutos programados.
    lo necesito para controlar video juegos con monedas.

    1. claro que es posible, Engels. Imagino que lo que tu buscas podrías hacerlo metiendo en el bucle while (segundostotal > 0) una condición de si el botón arranque ha sido pulsado, entonces sumar a minutos ++.

      Es la manera más simple que se me ocurre, pero seguro que hay otras muchas.

      Saludos.

  2. Hola como le agregas una instruccion para que cuando inicie la cuenta regresiva agregue un 1 logico en algun otro pin y cuando esta termine el estado veng a 0 logico? lde todos los timers que he visto el tuyo es el mas amigable pero no veo como ponerle esta funcion.
    por tu tiempo y tu respuesta mil gracias

    1. Entiendo que por 1 lógico y por 0 lógico te refieres a TRUE o FALSE. Si as así, lo único que tienes que hacer es declarar un pin (como si fuera un led, por ejemplo) y al dar a START decirle que se ponga a 1 el pin y cuando acabe el tiempo (donde suena el zumbador) decirle que se ponga a 0.
      Espero que te haya ayudado, si no era esto lo que buscabas pregunta de nuevo y a ver si podemos ayudarte.

    1. Si, claro, al igual que tenemos puesto que el zumbador suene al acabar el tiempo. La única diferencia es que al dar al botón se start tienes que poner en funcionamiento el motor y cuando se acabe el tiempo (donde ahora suena el zumbador), decirle al motor que se apague.
      Si usas un motor DC necesitarás añadir un driver para motores para proporcionarle más corriente al motor: L293D
      Si quieres, primero puedes probarlo con un servomotor continuo, que no necesitas añadir nada extra.

  3. hola, hice la programacion y el cableado como lo indicas pero al cargar el codigo solo se prende la pantalla y no muestra nada. Hay alguna solucion? Gracias

    1. Hola, sin ver la placa ni el conexionado es dificil deducirlo, aún así te voy a dar algunas posibles causas:
      1- Has realizado el conexionado como la imágen solo, o además has incluido el cable que va desde el positivo de la protoboard al pin 5V del Arduino?
      2- ¿Que tipo de LCD estás usando? Hay algunas que tienen un conexionado diferente (aunque muy similar)
      3- ¿Has movido el potenciómetro una vez que se ha encendido la LCD? Este sirve para el contraste de la LCD, y dependiendo en que posición este se ve mejor o peor (o nada).

      No se si te servirá alguna de estas opciones, pero sin ver el conexionado ni la LCD es dificil deducir tu problema.

      Saludos

  4. Hola, yo tengo un problema igual al del juan, cargo el codigo, veo el potenciometro para lo que es el contrastes y todo bien, pero me enciende la mitad del lcd sin darme parametros solo enciende, eh probado con dos lcd son: GDM1602s y el P162003-00, ayuda!!

    1. Por favor revisa que el pinout de tu GDM es el correcto
      https://www.google.es/search?q=gdm+1602+lcd+datasheet&source=lnms&tbm=isch&sa=X&ved=0ahUKEwjC34LA_cjYAhWLPxQKHUn6B60Q_AUICigB&biw=1920&bih=925#imgrc=bqNBdOBIQrmMJM:
      https://e-elektronic.com/arduino-tutorial-10-lcd/

      Comprobaré si existe algún problema en el código. Para más información, puedes subscribirte en el formulario de la página principal.
      https://e-elektronic.com

      Seguimos en contacto.

  5. Hola buenas y gracias por compartir….
    Tengo un pequeño problema, me empieza la cuenta atrás sola sin yo dale a Start, y el tiempo me aparece en
    01:01:59, he probado en quitar los cables de los pines analógicos por si los pulsadores están haciendo contacto pero sigue haciendo lo mismo… alguna idea de porque y como solucionarlo ???? en pantalla me muestra todo correctamente.
    gracias 🙂

    1. Me paso algo parecido, eso es por un falso gnd y 5v, revisa bien conexiones y saca un segundo gnd hacia la protoboard, veras como como no se suman ni horas mi minutos solos, ni arranca sola la cuenta atrás.

  6. Hola, Gracias por el tutorial, tengo una duda, y estoy atascado, como consigo que cuando acabe el programa, vuelva a a la elección de tiempo, con el tiempo que marque anteriormente? he probado con loop pero nada…
    Gracias de antemano!

    1. Hola, muy buenas Mikke,

      Lo primero, gracias por participar aportando tu experiencia en el comentario anterior. Es agradable que todos os animéis a participar y a dar vuestro granito de arena. Para responder a tu pregunta, se me ocurre que tendrías que crear una variable a la que deberías moverle el valor una vez que eliges el tiempo, y asignársela en el siguiente temporizado.

      int movhoras = 0 (por ejemplo, así podrías declarar al ppio tu variable)

      La variable ( o variables, ya que hablamos de horas minutos y segundos) debería ser del mismo tipo que el valor que quieres recoger, y deberías asignarlo de una forma similar a esta:

      movhoras = ahoras (antes de ejecutar la opción del while)

      y habría que modificar el código de la lcd para que el lcd.print muestre el valor de “movhoras” si segundostotal es >0.

      es lo primero que se me ocurre, habría que mirarlo con algo más de detalle xD.

      No sé si te has subscrito a mi newsletter. Si lo deseas, subscríbete y vamos reescribiendo el código poco a poco juntos, te voy echando una mano.

      Lo dicho, muchas gracias y suerte con tus proyectos 😉

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *