const int buttonPin = 15; // Button connected to D15
const int relayPin = 4; // Relay (or LED) connected to D4
boolean state = true; // Initial state
boolean lastButtonState = HIGH; // Initial button state
boolean flashing = false; // Indicates if LED should be flashing
void setup() {
Serial.begin(115200);
pinMode(relayPin, OUTPUT); // Set relayPin as an output
pinMode(buttonPin, INPUT_PULLUP); // Set buttonPin as an input with pull-up resistor
}
void loop() {
boolean currentButtonState = digitalRead(buttonPin);
if (currentButtonState == LOW && lastButtonState == HIGH) {
flashing = !flashing; // Toggle flashing state
if (flashing) {
Serial.println("Button is pressed");
Serial.println("LED will flash!");
} else {
digitalWrite(relayPin, HIGH); // Ensure LED is on when not flashing
Serial.println("LED is ON!");
}
delay(100); // Debounce delay
}
if (flashing) {
static unsigned long lastFlashTime = 0;
unsigned long currentTime = millis();
if (currentTime - lastFlashTime >= 125) {
digitalWrite(relayPin, !digitalRead(relayPin)); // Toggle LED state
lastFlashTime = currentTime;
}
}
lastButtonState = currentButtonState;
}