¿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


ElectroMercado

  • arduino | programación
2 Comentarios
  1. MARA
    MARA 8 meses

    Saludos y buen año 2019 Ditecno Digital

    1+

Contesta

CONTACTANOS

Esta es su red social de tecnología para compartir tus ideas y proyectos .Puedes enviarnos un correo si tienes dudas.Nos vemos

Enviando

Inicia Sesión con tu Usuario y Contraseña

o    

¿Olvidó sus datos?

Create Account