#include <LiquidCrystal_I2C.h>
#include <Wire.h>
const int BOTAO_START = 2;
const int BOTAO_STOP = 3;
volatile unsigned long inicio_tempo = 0;
volatile unsigned long fim_tempo = 0;
volatile bool botao_start_pressionado = false;
volatile bool botao_stop_pressionado = false;
//Botão Azul = Inicia contador
//Botão Vermelho = FInaliza contador
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
lcd.init();
lcd.backlight();
lcd.print("Tempo:");
pinMode(BOTAO_START, INPUT);
pinMode(BOTAO_STOP, INPUT);
attachInterrupt(digitalPinToInterrupt(BOTAO_START), pressionarBotaoStart, FALLING);
attachInterrupt(digitalPinToInterrupt(BOTAO_STOP), pressionarBotaoStop, FALLING);
}
void loop() {
if (botao_start_pressionado && botao_stop_pressionado) {
unsigned long tempo_decorrido = fim_tempo - inicio_tempo;
lcd.setCursor(7, 0);
lcd.print(tempo_decorrido);
lcd.print(" ms");
botao_start_pressionado = false;
botao_stop_pressionado = false;
}
}
void pressionarBotaoStart() {
inicio_tempo = millis();
botao_start_pressionado = true;
}
void pressionarBotaoStop() {
fim_tempo = millis();
botao_stop_pressionado = true;
}