How do you plan to solve it?
int leds[] = {4,5,6,7};
int buttonPin = 2;
int pattern = 0;
int lastButton = HIGH;
bool pressed = false;
void setup() {
for(int i=0;i<4;i++) pinMode(leds[i], OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
Serial.begin(9600);
Serial.println("Task 4");
Serial.println("Pattern 1");
}
// Small delay function that checks button for instant switching
void wait(int ms){
for(int i=0;i<ms/50;i++){
delay(50);
int b = digitalRead(buttonPin);
if(b == LOW && lastButton == HIGH && !pressed){
pattern = (pattern + 1) % 5;
pressed = true;
Serial.print("Pattern ");
Serial.println(pattern + 1);
}
if(b == HIGH) pressed = false;
lastButton = b;
}
}
void loop() {
switch(pattern){
case 0: // Pattern 1: all blink
for(int i=0;i<4;i++) digitalWrite(leds[i], HIGH);
wait(1000);
for(int i=0;i<4;i++) digitalWrite(leds[i], LOW);
wait(500);
break;
case 1: // Pattern 2: LED1&3 then LED2&4
digitalWrite(leds[0], HIGH); digitalWrite(leds[2], HIGH);
digitalWrite(leds[1], LOW); digitalWrite(leds[3], LOW);
wait(500);
digitalWrite(leds[0], LOW); digitalWrite(leds[2], LOW);
digitalWrite(leds[1], HIGH); digitalWrite(leds[3], HIGH);
wait(500);
break;
case 2: // Pattern 3: LEDs one by one
for(int i=0;i<4;i++){
for(int j=0;j<4;j++) digitalWrite(leds[j], LOW);
digitalWrite(leds[i], HIGH);
wait(500);
}
break;
case 3: // Pattern 4: LED1&2 then LED3&4
digitalWrite(leds[0], HIGH); digitalWrite(leds[1], HIGH);
digitalWrite(leds[2], LOW); digitalWrite(leds[3], LOW);
wait(500);
digitalWrite(leds[0], LOW); digitalWrite(leds[1], LOW);
digitalWrite(leds[2], HIGH); digitalWrite(leds[3], HIGH);
wait(500);
break;
case 4: // Pattern 5: LED1&4 then LED2&3
digitalWrite(leds[0], HIGH); digitalWrite(leds[3], HIGH);
digitalWrite(leds[1], LOW); digitalWrite(leds[2], LOW);
wait(500);
digitalWrite(leds[0], LOW); digitalWrite(leds[3], LOW);
digitalWrite(leds[1], HIGH); digitalWrite(leds[2], HIGH);
wait(500);
break;
}
}
Add a video of the output (know more)