O cronômetro é um dispositivo parecido com um relógio para medir a quantidade de tempo decorrido de sua ativação e desativação. É útil para medir o tempo das atividades esportivas, como corrida, natação ou futebol. Você já pensou em fazer o seu próprio cronômetro? Se sim, este tutorial pode te ajudar!
Para este tutorial foi desenvolvido um cronômetro simples utilizando a plataforma de desenvolvimento Arduino Uno, um display LCD I2C e botões.
Materiais e montagem
- 1 Arduino Uno R3 com cabo USB
- 1 Display LCD 16x2 com módulo I2C
- 2 Botões/chave táctil
- 1 Protoboard pequeno
- Fios jumpers
Os pinos de SDA e SCL do display LCD 16x2 com módulo I2C são conectados nos pinos analógicos A4 e A5 da placa Arduino, onde sua alimentação de 5V também. Se você tiver dúvidas sobre a montagem do display, leia o tutorial de Como ligar um display LCD 16x2 I2C no Arduino Uno.
Depois de finalizar a montagem, abra a IDE oficial do Arduino e cole este código abaixo. A biblioteca utilizada para o display LCD I2C é a NewLiquidCrystal, faça o download e adicione ao projeto.
/*
* Cronômetro com Arduino e display LCD I2C
*
* Autor: Daniele Alberti
* Modificações: tecdicas
*
* 18/10/2019
*
* V1.0
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define BTN_PLAY 10
#define BTN_STOP 11
int estado_btnplay;
int estado_btnstop;
unsigned long tempo;
unsigned long tempo_play = 0;
unsigned long tempo_stop;
unsigned long tempo_segundo;
int controle = 1;
// Alterar o endereço conforme modulo I2C
LiquidCrystal_I2C lcd(0x3F, 2,1,0,4,5,6,7,3, POSITIVE);
void setup()
{
pinMode(BTN_PLAY, INPUT_PULLUP);
pinMode(BTN_STOP, INPUT_PULLUP);
lcd.begin(16,2);
lcd.setCursor(0,0);
lcd.print("Tec Dicas");
lcd.setCursor(0,1);
lcd.print("Cronometro");
delay(1000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("PLAY p/ iniciar");
}
void loop()
{
estado_btnplay = digitalRead (BTN_PLAY);
estado_btnstop = digitalRead (BTN_STOP);
if ((estado_btnplay == LOW) && (controle < 2))
{
tempo = millis();
controle = 0;
}
if ((estado_btnplay == LOW) && (controle == 2))
{
controle = 0;
}
if (controle == 0)
{
lcd.setCursor(0, 0);
lcd.print("TEMPO (segundo)");
lcd.setCursor(0, 1);
lcd.print("PLAY! ");
tempo_play = millis() - tempo;
tempo_segundo = tempo_play / 1000;
if (tempo_segundo <= 9)
{
lcd.setCursor(12, 1);
lcd.print(" ");
lcd.print(tempo_segundo);
}
if ((tempo_segundo > 9) && (tempo_segundo <= 99))
{
lcd.setCursor(12, 1);
lcd.print(" ");
lcd.print(tempo_segundo);
}
if ((tempo_segundo > 99) && (tempo_segundo <= 999))
{
lcd.setCursor(12, 1);
lcd.print(" ");
lcd.print(tempo_segundo);
}
if ((tempo_segundo > 999) && (tempo_segundo <= 9999))
{
lcd.setCursor(12, 1);
lcd.print(tempo_segundo);
}
}
if (estado_btnstop == LOW)
{
lcd.setCursor(0, 0);
lcd.print("TEMPO (milliseg)");
lcd.setCursor(0, 1);
lcd.print("STOP! ");
if ((tempo_play > 9) && (tempo_play <= 99))
{
lcd.setCursor(9, 1);
lcd.print(" ");
lcd.print(tempo_play);
}
if ((tempo_play > 99) && (tempo_play <= 999))
{
lcd.setCursor(9, 1);
lcd.print(" ");
lcd.print(tempo_play);
}
if ((tempo_play > 999) && (tempo_play <= 9999))
{
lcd.setCursor(9, 1);
lcd.print(" ");
lcd.print(tempo_play);
}
if ((tempo_play > 9999) && (tempo_play <= 99999))
{
lcd.setCursor(9, 1);
lcd.print(" ");
lcd.print(tempo_play);
}
if ((tempo_play > 99999) && (tempo_play <= 999999))
{
lcd.setCursor(9, 1);
lcd.print(" ");
lcd.print(tempo_play);
}
if ((tempo_play > 999999) && (tempo_play <= 9999999))
{
lcd.setCursor(9, 1);
lcd.print(tempo_play);
}
controle = 2;
}
}
Ao ligar o Arduino, irá aparecer escrito "Tec Dicas" na primeira linha e "Cronometro" na segunda linha, logo após "PLAY p/ iniciar", clique na tecla PLAY e veja o cronômetro medindo a quantidade de tempo em segundos. Para parar a contagem, clique na tecla STOP, onde o tempo será mostrado em milissegundos.
Para converter o resultado em milissegundos para segundos, basta dividir o valor de tempo por 1000. E converter o resultado em segundos para minutos ou minutos para horas, divida o valor de tempo por 60.
Ressaltando que o máximo de tempo que o cronômetro conta é até 9999 segundos.