#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // Dirección I2C de la pantalla y dimensiones (16x2)
int botonPin = 2; // Pin del botón
int fotoresistenciaPin = A0; // Pin de la fotoresistencia
unsigned long startTime = 0;
unsigned long elapsedTime = 0;
unsigned long lastElapsedTime = 0;
bool running = false;
bool stopped = false;
void setup() {
lcd.init(); // Inicializar la pantalla
lcd.backlight(); // Encender el backlight de la pantalla
pinMode(botonPin, INPUT_PULLUP); // Configurar el pin del botón como entrada con pull-up interno
Serial.begin(9600);
}
void loop() {
int fotoresistenciaValue = analogRead(fotoresistenciaPin);
if (digitalRead(botonPin) == LOW && !running) {
startTime = millis(); // Iniciar el cronómetro
running = true;
stopped = false;
}
if (fotoresistenciaValue < 100 && running) {
elapsedTime = millis() - startTime; // Calcular el tiempo transcurrido
lastElapsedTime = elapsedTime; // Guardar el tiempo anterior
running = false;
stopped = true;
}
if (running) {
unsigned long currentTime = millis();
elapsedTime = currentTime - startTime; // Calcular el tiempo transcurrido
}
if (stopped) {
startTime = 0; // Reiniciar el cronómetro
elapsedTime = 0; // Establecer el tiempo transcurrido en cero
running = false;
stopped = false;
}
int segundos = elapsedTime / 1000; // Calcular los segundos
int milisegundos = elapsedTime % 1000; // Calcular los milisegundos
lcd.setCursor(0, 0);
lcd.print("Time: ");
lcd.print(segundos);
lcd.print("s ");
lcd.print(milisegundos);
lcd.print("ms ");
int lastSegundos = lastElapsedTime / 1000; // Calcular los segundos del tiempo anterior
int lastMilisegundos = lastElapsedTime % 1000; // Calcular los milisegundos del tiempo anterior
lcd.setCursor(0, 1);
lcd.print("Past: ");
lcd.print(lastSegundos);
lcd.print("s ");
lcd.print(lastMilisegundos);
lcd.print("ms ");
delay(100);
}