I'm at work so cannot test this code but would this do? Strobe pattern only changes at the end of the pattern NOT when the button is pressed.
const int led = 13;
const int led2 = 12;
const int button1 = 5; // Button pin
const int maxStrobeMode = 3; // Max strobe number
int strobeMode = 0; // Current strobe number
void setup() {
pinMode(button1,INPUT_PULLUP);
pinMode(led, OUTPUT);
pinMode(led2, OUTPUT);
}
void loop() {
switch (strobeMode) {
case 0:
digitalWrite(led2, LOW); //Strobe
digitalWrite(led, HIGH);
myDelay(20);
digitalWrite(led, LOW);
myDelay(50);
digitalWrite(led, HIGH);
myDelay(20);
digitalWrite(led, LOW);
myDelay(50);
digitalWrite(led, HIGH);
myDelay(20);
digitalWrite(led, LOW);
myDelay(50);
digitalWrite(led, HIGH);
myDelay(250);
digitalWrite(led, LOW);
digitalWrite(led2, HIGH);
myDelay(20);
digitalWrite(led2, LOW);
myDelay(50);
digitalWrite(led2, HIGH);
myDelay(20);
digitalWrite(led2, LOW);
myDelay(50);
digitalWrite(led2, HIGH);
myDelay(20);
digitalWrite(led2, LOW);
myDelay(50);
digitalWrite(led2, HIGH);
myDelay(250);
digitalWrite(led2, LOW);
break;
case 1:
digitalWrite(led2, LOW); //Strobe
digitalWrite(led, HIGH);
myDelay(20);
digitalWrite(led, LOW);
myDelay(50);
digitalWrite(led, HIGH);
myDelay(20);
digitalWrite(led, LOW);
myDelay(50);
digitalWrite(led, HIGH);
myDelay(20);
digitalWrite(led, LOW);
myDelay(50);
digitalWrite(led, HIGH);
myDelay(250);
digitalWrite(led, LOW);
digitalWrite(led2, HIGH);
myDelay(20);
digitalWrite(led2, LOW);
myDelay(50);
digitalWrite(led2, HIGH);
myDelay(20);
digitalWrite(led2, LOW);
myDelay(50);
digitalWrite(led2, HIGH);
myDelay(20);
digitalWrite(led2, LOW);
myDelay(50);
digitalWrite(led2, HIGH);
myDelay(250);
digitalWrite(led2, LOW);
break;
case 2:
digitalWrite(led2, LOW); //Strobe
digitalWrite(led, HIGH);
myDelay(20);
digitalWrite(led, LOW);
myDelay(50);
digitalWrite(led, HIGH);
myDelay(20);
digitalWrite(led, LOW);
myDelay(50);
digitalWrite(led, HIGH);
myDelay(20);
digitalWrite(led, LOW);
myDelay(50);
digitalWrite(led, HIGH);
myDelay(250);
digitalWrite(led, LOW);
digitalWrite(led2, HIGH);
myDelay(20);
digitalWrite(led2, LOW);
myDelay(50);
digitalWrite(led2, HIGH);
myDelay(20);
digitalWrite(led2, LOW);
myDelay(50);
digitalWrite(led2, HIGH);
myDelay(20);
digitalWrite(led2, LOW);
myDelay(50);
digitalWrite(led2, HIGH);
myDelay(250);
digitalWrite(led2, LOW);
break;
case 3:
digitalWrite(led2, LOW); //Strobe
digitalWrite(led, HIGH);
myDelay(20);
digitalWrite(led, LOW);
myDelay(50);
digitalWrite(led, HIGH);
myDelay(20);
digitalWrite(led, LOW);
myDelay(50);
digitalWrite(led, HIGH);
myDelay(20);
digitalWrite(led, LOW);
myDelay(50);
digitalWrite(led, HIGH);
myDelay(250);
digitalWrite(led, LOW);
digitalWrite(led2, HIGH);
myDelay(20);
digitalWrite(led2, LOW);
myDelay(50);
digitalWrite(led2, HIGH);
myDelay(20);
digitalWrite(led2, LOW);
myDelay(50);
digitalWrite(led2, HIGH);
myDelay(20);
digitalWrite(led2, LOW);
myDelay(50);
digitalWrite(led2, HIGH);
myDelay(250);
digitalWrite(led2, LOW);
break;
}
}
void myDelay(int delayTime){
if (digitalRead(button1) == LOW){
strobeMode++; // Increment strobe mode
if (strobeMode > maxStrobeMode){
strobeMode = 0; // Reset if beyond maximum strobe mode
}
}
delay(delayTime); // Do the delay
}