#include <EEPROM.h>
// Define pin numbers for LEDs
const int led1 = 2;
const int led2 = 3;
const int led3 = 4;
// Define pin numbers for increase/decrease buttons (LED 1)
const int buttonInc1 = 8;
const int buttonDec1 = 9;
// Define pin numbers for increase/decrease buttons (LED 2)
const int buttonInc2 = 10;
const int buttonDec2 = 11;
// Define pin numbers for increase/decrease buttons (LED 3)
const int buttonInc3 = 12;
const int buttonDec3 = 13;
// Initial durations (in milliseconds) for each LED
int duration1 = 1000; // Default duration for LED 1
int duration2 = 1000; // Default duration for LED 2
int duration3 = 1000; // Default duration for LED 3
// EEPROM addresses for storing durations
const int addrDuration1 = 0;
const int addrDuration2 = 1;
const int addrDuration3 = 2;
void setup() {
// Initialize LED pins as outputs
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
// Initialize increase/decrease button pins as inputs with pull-up resistors
pinMode(buttonInc1, INPUT_PULLUP);
pinMode(buttonDec1, INPUT_PULLUP);
pinMode(buttonInc2, INPUT_PULLUP);
pinMode(buttonDec2, INPUT_PULLUP);
pinMode(buttonInc3, INPUT_PULLUP);
pinMode(buttonDec3, INPUT_PULLUP);
// Retrieve durations from EEPROM
duration1 = EEPROM.read(addrDuration1);
duration2 = EEPROM.read(addrDuration2);
duration3 = EEPROM.read(addrDuration3);
// Set initial LED durations
digitalWrite(led1, HIGH);
delay(duration1);
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
delay(duration2);
digitalWrite(led2, LOW);
digitalWrite(led3, HIGH);
delay(duration3);
digitalWrite(led3, LOW);
}
void loop() {
// Update durations based on button presses
updateDurations();
}
void updateDurations() {
// Update duration for LED 1
if (digitalRead(buttonInc1) == LOW && duration1 < 20000) {
duration1 += 1000; // Increase duration by 100 milliseconds
saveDurationsToEEPROM();
} else if (digitalRead(buttonDec1) == LOW && duration1 > 1000) {
duration1 -= 1000; // Decrease duration by 100 milliseconds
saveDurationsToEEPROM();
}
// Update duration for LED 2
if (digitalRead(buttonInc2) == LOW && duration2 < 20000) {
duration2 += 1000; // Increase duration by 100 milliseconds
saveDurationsToEEPROM();
} else if (digitalRead(buttonDec2) == LOW && duration2 > 1000) {
duration2 -= 1000; // Decrease duration by 100 milliseconds
saveDurationsToEEPROM();
}
// Update duration for LED 3
if (digitalRead(buttonInc3) == LOW && duration3 < 20000) {
duration3 += 1000; // Increase duration by 100 milliseconds
saveDurationsToEEPROM();
} else if (digitalRead(buttonDec3) == LOW && duration3 > 1000) {
duration3 -= 1000; // Decrease duration by 100 milliseconds
saveDurationsToEEPROM();
}
// Display the sequence with updated durations
digitalWrite(led1, HIGH);
delay(duration1);
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
delay(duration2);
digitalWrite(led2, LOW);
digitalWrite(led3, HIGH);
delay(duration3);
digitalWrite(led3, LOW);
}
void saveDurationsToEEPROM() {
EEPROM.write(addrDuration1, duration1);
}