Cronometro de tiempo con Arduino

En un tutorial anterior vimos como utilizar la pantalla LCD 16×2 de manera fácil y sencilla. Con lo cual ahora podemos encarar una problemática de la vida real que es la del cronometro.

Lo podemos utilizar para cualquier casa donde necesitemos medir tiempo, ya sea para jugar una carrera, para que no se nos queme la torta en el horno o simplemente medir la cantidad de horas que dormimos.

La idea básicamente es utilizar el LCD para mostrar el tiempo transcurrido y utilizar 2 pulsadores. El primer pulsador se encargara de iniciar la cuenta y el segundo de pararlo.

Que necesitamos para hacerlo?

1-Software Necesario

 

El ide (entorno de programacion) del Arduino descargado e Instalado

Chequear siempre antes de cargar cualquier código de arduino a la placa, que este bien seleccionado la Placa que estemos utilizando y el Puerto al cual esta conectada la misma.

 

2-Componentes Electrónicos

 

 

 

1 – Arduino Uno o cualquier otro tipo de Arduino que disponga de los pines hembra soldados.

 

 

 

1 -Cable USB para conectar el Arduino a la PC

 

 

 

 

1-Protoboard ya sea de 400 puntos o de 830 puntos

 

 

 

 

2-Pulsador o tambien conocido como touch switch. Suelen venir de 4 o 2 patas.

 

 

10- Cables macho macho para la conexión de los elementos de la protoboard con el arduino.

 

 

 

 

2-Resistencia de 10k para el pull-up del pulsador

 

1-Potenciometro para ajustar el contraste del LCD

 

1-Pantalla Lcd 16×2

 

 

 Esquema de conexión eléctrica

Les dejo también el esquema y la diferencia entre el pull-down y el  pull-up que estamos usando en este esquemático.

El primero también se conoce como lógica positiva, ya que cada vez que pulso al pulsador equivale a un HIGH o “1” y si lo suelto es un cero.

En cambio el pull-up es exactamente lo contrario.

Código de Programación

/*
El objetivo es hacer un reloj simple
y que con un pulsador el reloj funcione
y con el otro lo pauso
*/

//lo primero es incluir la libreria del LCD
#include <LiquidCrystal.h>

//Indicamos cuales seran los pines del LCD a utilizar
//LiquidCrystal lcd(RS,E,D4,D5,D6,D7);
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

const int pulsador1=6;
const int pulsador2=5;

int segundo=0;   //variable del segundo
int minuto=0;   //variable del minuto
int hora=0;   //variable de la hora

int pausa=0;  //pausa=0 reloj funicona, pausa =1 reloj pausado

void setup() 
{
  lcd.begin(16, 2);  //inicializamos LCD como una de 16x2
  pinMode(pulsador1,INPUT);
  pinMode(pulsador2,INPUT);
}

void loop() 
{
  if(digitalRead(pulsador1)==HIGH)  //con este pulsador incrementamos
  {
    pausa=0;
  }
  
  if(digitalRead(pulsador2)==HIGH)  //con este pulsador decrementamos
  {
    pausa=1;
  }
  
    lcd.setCursor(0,0);    //nos posicionamos en la pantalla      
    lcd.print("Hora= ");  //imprimimos el texto deseado
    lcd.print(hora);  //imprimimos la variable hora
    lcd.print(":");  //imprimimo lso dos puntos
    lcd.print(minuto);  //imprimimos el valor de la variable
    lcd.print(":");  //imprimimo dos puntos
    lcd.print(segundo);  //imprimimos el valor de la variable
  
  if(pausa==0)  //el reloj tiene que contar
  { 
    segundo++;
    delay(1000);
    
    if(segundo>59)
    {
      segundo=0;
      minuto++;
      if(minuto>59)
      {
        minuto=0;
        hora++;
        if(hora>23)
          hora=0;
      }
    }
  }


}

Desafíos adicionales

 

1) Hacer lo mismo pero solo con 1 pulsador, para este desafió recomiendo que chequeen este tutorial.

2)Desafió anterior y agregarle que cuando vuelvas a pulsar se reinicie la cuenta a cero.