Tutorial para realizar un sencillo y funcional cronometro
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
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:
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í.
Debe estar conectado para enviar un comentario.