#include <EEPROM.h>
const int ledPin1 = 9;
const int ledPin2 = 10;
const int ledPin3 = 11;
const int buttonPinIncrease = 2;
const int buttonPinDecrease = 3;
const int buttonPinIncrease1 = 4;
const int buttonPinDecrease1 = 5;
int duration = 1000; // Initial duration in milliseconds
int duration1 = 500; // Initial duration in milliseconds
int eepromAddress = 0; // Address to store the duration in EEPROM
int eepromAddress1 = 1; // Address to store the duration in EEPROM
unsigned long lastChangeTime = 0;
unsigned long lastChangeTime1 = 0;
bool led1State = false;
bool led1State1 = false;
bool buttonIncreasePressed = false;
bool buttonDecreasePressed = false;
bool buttonIncreasePressed1 = false;
bool buttonDecreasePressed1 = false;
void setup() {
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(buttonPinIncrease, INPUT_PULLUP);
pinMode(buttonPinDecrease, INPUT_PULLUP);
pinMode(buttonPinIncrease1, INPUT_PULLUP);
pinMode(buttonPinDecrease1, INPUT_PULLUP);
// Read the saved duration from EEPROM
duration = EEPROM.read(eepromAddress) * 100; // Scale back from 10ms units to ms
if (duration <= 0 || duration > 10000) {
duration = 1000; // Default duration if EEPROM is invalid
}
// Read the saved duration from EEPROM
duration1 = EEPROM.read(eepromAddress1) * 100; // Scale back from 10ms units to ms
if (duration1 <= 0 || duration1 > 10000) {
duration1 = 1000; // Default duration if EEPROM is invalid
}
Serial.begin(9600);
Serial.print("Initial Duration: ");
Serial.println(duration);
Serial.print("Initial Duration1: ");
Serial.println(duration1);
}
void loop() {
// Read button states
bool increaseButtonState = digitalRead(buttonPinIncrease) == LOW;
bool decreaseButtonState = digitalRead(buttonPinDecrease) == LOW;
bool increaseButtonState1 = digitalRead(buttonPinIncrease1) == LOW;
bool decreaseButtonState1 = digitalRead(buttonPinDecrease1) == LOW;
// Handle increase button
if (increaseButtonState && !buttonIncreasePressed) {
duration += 1000; // Increase duration by 100ms
if (duration > 10000) {
duration = 10000; // Limit max duration to 10 seconds
}
EEPROM.write(eepromAddress, duration / 100); // Save duration in 10ms units
Serial.print("Increased Duration: ");
Serial.println(duration);
}
buttonIncreasePressed = increaseButtonState;
/////////////////////////////////////// Handle decrease button
if (decreaseButtonState && !buttonDecreasePressed) {
duration -= 1000; // Decrease duration by 100ms
if (duration < 1000) {
duration = 1000; // Limit min duration to 100ms
}
EEPROM.write(eepromAddress, duration / 1000); // Save duration in 10ms units
Serial.print("Decreased Duration: ");
Serial.println(duration);
}
buttonDecreasePressed1 = decreaseButtonState1;
// Handle increase button
if (increaseButtonState1 && !buttonIncreasePressed1) {
duration1 += 1000; // Increase duration by 100ms
if (duration1 > 10000) {
duration1 = 10000; // Limit max duration to 10 seconds
}
EEPROM.write(eepromAddress1, duration1 / 100); // Save duration in 10ms units
Serial.print("Increased Duration1: ");
Serial.println(duration1);
}
buttonIncreasePressed1 = increaseButtonState1;
// Handle decrease button
if (decreaseButtonState1 && !buttonDecreasePressed1) {
duration1 -= 1000; // Decrease duration by 100ms
if (duration1 < 1000) {
duration1 = 1000; // Limit min duration to 100ms
}
EEPROM.write(eepromAddress1, duration1 / 1000); // Save duration in 10ms units
Serial.print("Decreased Duration1: ");
Serial.println(duration1);
}
buttonDecreasePressed1 = decreaseButtonState1;
unsigned long currentTime = millis();
if (currentTime - lastChangeTime >= duration) {
lastChangeTime = currentTime;
led1State = !led1State;
digitalWrite(ledPin1, HIGH); // Turn on LED 1
digitalWrite(ledPin2, HIGH); // Turn off LED 1
}
// Blink LEDs sequentially
unsigned long currentTime1 = millis();
if (currentTime1 - lastChangeTime1 >= duration1) {
lastChangeTime1 = currentTime1;
led1State1 = !led1State1;
digitalWrite(ledPin2, LOW); // Turn on LED 1
digitalWrite(ledPin2, HIGH); // Turn off LED 1
}
}