Realizar un cronometro con Arduino Deja un comentario

¿Cuando podemos medir el tiempo transcurrido entre dos eventos?.De la siguiente manera podemos crear un cronómetro  con un Arduino. Nuestro cronómetro usará dos botones: uno para “iniciar/reiniciar” el conteo y otro para “parar” y mostrar el tiempo transcurrido. La lógica del programa verificará continuamente el estado de los dos botones. Cuando se presiona el botón de inicio, se almacenara en una variable “inicio” el tiempo de  millis() , y cuando se presiona el  botón parar, un nuevo valor millis() sera almacenado en “finalizado”. La función personalizada MostrarResultado() convertirá el tiempo transcurrido desde milisegundos en horas, minutos , segundos y milisegundos. Finalmente, el tiempo aparecerá en el monitor serial.

Componentes necesarios:

• Arduino UNO y cable USB

• Una protoboard

• Dos resistencias de 10 kW

• Dos pulsadores S1, S2

• Varios cables

Diagrama

Explicación del Sketch: 

El proyecto de nuestro cronómetro se realiza de la siguiente manera.En la configuración del los  pines decimos que son  pines de entrada.

pinMode(2, INPUT);
pinMode (3, INPUT);

En el condicional verificamos si se presiono el botón de Inicio/Reset

if (digitalRead(2) == HIGH);

en el caso de que  se pulse el botón de inicio, el Arduino llama la función

millis();

que utilizamos para calcular el tiempo transcurrido.

Cuando se presiona el botón  conectado en el pin 3 “Parar” en el  condicional  lo detecta

if (digitalRead(3) == HIGH);

Después de haber pulsado el botón de parar, el tiempo transcurrido se calcula en la función

MostrarResultado ();

y se muestra la diferencia  en el monitor serial.

Ttranscurrido = finalizado - inicio;

Después se muestra detalladamente las horas, minutos, segundos y milisegundos  también en el monitor serial.

Sketch completo:

// Cronómetro
unsigned long inicio, finalizado, Ttranscurrido;
void setup() 
{
  Serial.begin(9600);
  pinMode(2, INPUT); // Boton de inicio  
  pinMode(3, INPUT); // Boton para Parar
  Serial.println("Presione 1 para Inicio/reset, 2 para parar tiempo transcurrido"); 
  } 
  void MostrarResultado() 
  { 
    float h, m, s, ms;
    unsigned long terminado; 
    Ttranscurrido = finalizado - inicio;
    h = int(Ttranscurrido / 3600000);
    terminado = Ttranscurrido % 3600000; 
    m = int(terminado / 60000);
    terminado = terminado % 60000;
    s = int(terminado / 1000);
    ms = terminado % 1000; 
    Serial.print("Tiempo transcurrido : "); 
    Serial.println(Ttranscurrido);
    Serial.print("Tiempo transcurrido detallado: ");
    Serial.print(h, 0);
    Serial.print("h ");
    Serial.print(m, 0);
    Serial.print("m ");
    Serial.print(s, 0);
    Serial.print("s ");
    Serial.print(ms, 0);
    Serial.println("ms");
    Serial.println();
    }
    void loop()
    {
      if (digitalRead(2) == HIGH)
      { 
       inicio = millis();
       delay(300); //  por rebote 
       Serial.println("Inicializar...");
      } 
      if (digitalRead(3) == HIGH)
      { 
        finalizado = millis();
        delay(300); // por rebote 
        MostrarResultado(); 
       }
}

Bueno esperemos cronometrar el termino de este año y comencemos el 2019 mucho mas felices. Saludos Ditecno Digital

Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Enviar Whatsapp
Hola 👋
¿En qué podemos ayudarte?