Tutorial para realizar un sencillo y funcional cronometro 4.5/5 (4)

Cómo construir un cronometro con Arduino

Seguimos con los proyectos del libro de John Boxall Arduino Workshop que ha puesto a disposición del público para conocer su libro. Esta vez vamos a explicar como realizar un sencillo cronometro.

Sabiendo que podemos medir el tiempo transcurrido entre dos eventos, podemos crear un cronómetro simple con un Arduino. Nuestro cronómetro usará dos botones: uno para iniciar o reiniciar el conteo y otro para detenerlo y mostrar el tiempo transcurrido. El programa comprobará continuamente el estado de los dos botones. Cuando se presiona el botón de inicio, un valor de millis() será almacenado, y cuando se presiona el segundo botón, un nuevo valor millis() sera almacenado. La función personalizada displayResult() convertirá el tiempo transcurrido desde milisegundos en horas, minutos y segundos. Finalmente, el tiempo aparecerá en el monitor.

Lista de componentes

Para este proyecto son necesarios los siguientes componentes

• Una tabla de pruebas o breadboard
• Dos pulsadores (S1 y S2)
• Dos resistencias de 10 kW (R1 y R2)
• Varios cables de conexión
• Arduino y cable USB

Esquema del circuito

cronometro

El código

// Cronómetro
unsigned long start, finished, elapsed;
void setup()
{
 Serial.begin(9600);
 pinMode(2, INPUT); // the start button
 pinMode(3, INPUT); // the stop button
 Serial.println("Press 1 for Start/reset, 2 for elapsed time");
}
void displayResult()
{
 float h, m, s, ms;
 unsigned long over;
elapsed = finished - start;
 h = int(elapsed / 3600000);
 over = elapsed % 3600000;
 m = int(over / 60000);
 over = over % 60000;
 s = int(over / 1000);
 ms = over % 1000;
 Serial.print("Raw elapsed time: ");
 Serial.println(elapsed);
 Serial.print("Elapsed time: ");
 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)
 {
 start = millis();
 delay(200); // for debounce
 Serial.println("Started...");
 }
if (digitalRead(3) == HIGH)
 {
 finished = millis();
 delay(200); // for debounce
 displayResult();
 }
}

La base de nuestro cronómetro es simple. En pinMode(2, INPUT);, establecemos los pines de entrada digital para los botones de inicio y de parada. En if (digitalRead(2) == HIGH), si se pulsa el botón de inicio, el Arduino señala el valor para Millis() que utilizamos para calcular el tiempo transcurrido una vez se pare cuando se presiona en if (digitalRead(3) == HIGH). Después de haber pulsado el botón de parada, el tiempo transcurrido se calcula en la función displayResult () y se muestra los resultados con elapsed = finished – start; en el monitor. Presentándose como en la siguiente imagen:
cronometro1 - Tutorial para realizar un sencillo y funcional cronometro

Recordar que este tutorial y el resto de los del artículo 10 proyectos sencillos son un extracto del libro Arduino Workshop que su autor ha puesto en descarga gratuita, podéis conseguir el libro completo en Amazon. Este proyecto en concreto lo podéis ver aquí.

Califique esto

También te puede interesar

Ayúdanos a crecer!!Comparte con tus amigos¡¡
Close