int led = 13;
int led2 = 12;
int led3 = 11;
int buttonPin = 2; // Define the button pin

int pattern = 0; // Variable to store the current pattern
int maxPattern = 3; // Maximum pattern value

void setup() {
  pinMode(led, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(buttonPin, INPUT_PULLUP); // Set button pin as input with internal pull-up resistor
}

void loop() {
  // Check if the button is pressed
  if (digitalRead(buttonPin) == LOW) {
    // If button is pressed, increment pattern variable and wrap around at the maximum pattern
    pattern = (pattern + 1) % (maxPattern + 1);
    delay(200); // Debounce delay to prevent rapid button presses
  }

  // Execute different blinking patterns based on the value of the pattern variable
  switch (pattern) {
    case 0:
      // Blink all LEDs simultaneously
      digitalWrite(led, HIGH);
      digitalWrite(led2, HIGH);
      digitalWrite(led3, HIGH);
      delay(500);
      digitalWrite(led, LOW);
      digitalWrite(led2, LOW);
      digitalWrite(led3, LOW);
      delay(500);
      break;

    case 1:
      // Blink LEDs sequentially
      digitalWrite(led, HIGH);
      delay(500);
      digitalWrite(led, LOW);
      digitalWrite(led2, HIGH);
      delay(500);
      digitalWrite(led2, LOW);
      digitalWrite(led3, HIGH);
      delay(500);
      digitalWrite(led3, LOW);
      delay(500);
      break;

    case 2:
      // Alternate blinking pattern
      digitalWrite(led, HIGH);
      delay(500);
      digitalWrite(led2, HIGH);
      delay(500);
      digitalWrite(led, LOW);
      digitalWrite(led3, HIGH);
      delay(500);
      digitalWrite(led2, LOW);
      delay(500);
      digitalWrite(led3, LOW);
      delay(500);
      break;

    case 3:
      digitalWrite(led, HIGH);
      delay(500);
      digitalWrite(led, LOW);
      delay(500);
      break;

    default:
      // This case will handle unexpected values of pattern
      // You can add any necessary error handling code here
      break;

  }
}