#include <EEPROM.h>
int led1 = 13;
int button1 = 2;
int state1 = LOW;
int val1 = 0;
unsigned long led1OnTime = 0;
float led1DurationOn = 0;
int led2 = 12;
int button2 = 3;
int state2 = LOW;
int val2 = 0;
unsigned long led2OnTime = 0;
float led2DurationOn = 0;
float totalLedOnTime = 0;
void setup()
{
// Initialize pins for LED 1 and Button 1
pinMode(led1, OUTPUT);
pinMode(button1, INPUT_PULLUP); // Use internal pull-up resistor
// Initialize pins for LED 2 and Button 2
pinMode(led2, OUTPUT);
pinMode(button2, INPUT_PULLUP); // Use internal pull-up resistor
// Initialize serial communication
Serial.begin(9600);
Serial.println("System Ready. Waiting for button press...");
}
void loop()
{
// Handle Button 1 and LED 1
val1 = digitalRead(button1); // Read button 1
if (val1 == LOW) { // Button 1 pressed (LOW due to pull-up)
digitalWrite(led1, HIGH); // Turn on LED 1
delay(100);
if (state1 == LOW) { // Detect new press event
led1OnTime = millis(); // Record current time for LED 1
Serial.println("LED 1 ON!");
state1 = HIGH; // Update state for Button 1
}
} else { // Button 1 not pressed
digitalWrite(led1, LOW); // Turn off LED 1
delay(200);
if (state1 == HIGH) { // Handle button release
unsigned long currentTime = millis(); // Record current time
Serial.println("Button 1 released!");
led1DurationOn = (currentTime - led1OnTime) / 1000.0; // Calculate ON duration
Serial.print("LED 1 was ON for: ");
Serial.print(led1DurationOn, 2);
Serial.println(" seconds.");
// Update total ON time
totalLedOnTime += led1DurationOn;
// Display total ON time after LED 1 turns off
Serial.print("Total LED ON time: ");
Serial.print(totalLedOnTime, 2);
Serial.println(" seconds.");
state1 = LOW; // Reset state
}
}
// Handle Button 2 and LED 2
val2 = digitalRead(button2); // Read button 2
if (val2 == LOW) { // Button 2 pressed (LOW due to pull-up)
digitalWrite(led2, HIGH); // Turn on LED 2
delay(100);
if (state2 == LOW) { // Detect new press event
led2OnTime = millis(); // Record current time for LED 2
Serial.println("LED 2 ON!");
state2 = HIGH; // Update state for Button 2
}
} else { // Button 2 not pressed
digitalWrite(led2, LOW); // Turn off LED 2
delay(200);
if (state2 == HIGH) { // Handle button release
unsigned long currentTime = millis(); // Record current time
Serial.println("Button 2 released!");
led2DurationOn = (currentTime - led2OnTime) / 1000.0; // Calculate ON duration
Serial.print("LED 2 was ON for: ");
Serial.print(led2DurationOn, 2);
Serial.println(" seconds.");
totalLedOnTime += led2DurationOn;
Serial.print("Total LED ON time: ");
Serial.print(totalLedOnTime, 2);
Serial.println(" seconds.");
state2 = LOW;
}
}
}