// Define LED pins const int ledPins[] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}; const int numLeds = 12; const int buttonPin = A0; // Push button to change modes int mode = 0; int lastButtonState = HIGH; void setup() { for (int i = 0; i < numLeds; i++) { pinMode(ledPins[i], OUTPUT); } pinMode(buttonPin, INPUT_PULLUP); // Internal pull-up resistor } void loop() { int buttonState = digitalRead(buttonPin); if (buttonState == LOW && lastButtonState == HIGH) { mode = (mode + 1) % 10; // Cycle through 10 modes delay(300); // Debounce delay } lastButtonState = buttonState; switch (mode) { case 0: allOn(); break; case 1: allOff(); break; case 2: chase(); break; case 3: reverseChase(); break; case 4: blinkAll(); break; case 5: alternateLeds(); break; case 6: knightRider(); break; case 7: waveEffect(); break; case 8: randomLeds(); break; case 9: breathingEffect(); break; } } void allOn() { for (int i = 0; i < numLeds; i++) { digitalWrite(ledPins[i], HIGH); } } void allOff() { for (int i = 0; i < numLeds; i++) { digitalWrite(ledPins[i], LOW); } } void chase() { for (int i = 0; i < numLeds; i++) { digitalWrite(ledPins[i], HIGH); delay(100); digitalWrite(ledPins[i], LOW); } } void reverseChase() { for (int i = numLeds - 1; i >= 0; i--) { digitalWrite(ledPins[i], HIGH); delay(100); digitalWrite(ledPins[i], LOW); } } void blinkAll() { allOn(); delay(300); allOff(); delay(300); } void alternateLeds() { for (int i = 0; i < numLeds; i += 2) { digitalWrite(ledPins[i], HIGH); } delay(300); for (int i = 0; i < numLeds; i += 2) { digitalWrite(ledPins[i], LOW); } for (int i = 1; i < numLeds; i += 2) { digitalWrite(ledPins[i], HIGH); } delay(300); allOff(); } void knightRider() { for (int i = 0; i < numLeds; i++) { digitalWrite(ledPins[i], HIGH); delay(100); digitalWrite(ledPins[i], LOW); } for (int i = numLeds - 2; i > 0; i--) { digitalWrite(ledPins[i], HIGH); delay(100); digitalWrite(ledPins[i], LOW); } } void waveEffect() { for (int i = 0; i < numLeds; i++) { digitalWrite(ledPins[i], HIGH); if (i > 0) digitalWrite(ledPins[i - 1], LOW); delay(100); } allOff(); } void randomLeds() { int randLed = random(0, numLeds); digitalWrite(ledPins[randLed], HIGH); delay(200); digitalWrite(ledPins[randLed], LOW); } void breathingEffect() { for (int brightness = 0; brightness <= 255; brightness += 5) { for (int i = 0; i < numLeds; i++) { analogWrite(ledPins[i], brightness); } delay(10); } for (int brightness = 255; brightness >= 0; brightness -= 5) { for (int i = 0; i < numLeds; i++) { analogWrite(ledPins[i], brightness); } delay(10); } }