#include // LED strip configuration #define LED_PIN D1 #define TOTAL_LEDS 60 // Buttons #define BUTTON_COLOR D4 // Changes OFF -> RED -> GREEN -> OFF #define BUTTON_BRIGHTNESS D6 // Changes brightness Adafruit_NeoPixel strip(TOTAL_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800); // LED state int state = 0; // 0 = OFF, 1 = RED, 2 = GREEN // Brightness levels int brightnessLevels[] = {50, 100, 150, 200, 255}; int brightnessIndex = 0; // Button states int lastColorButtonState = HIGH; int lastBrightnessButtonState = HIGH; void setup() { strip.begin(); strip.setBrightness(brightnessLevels[brightnessIndex]); strip.clear(); strip.show(); pinMode(BUTTON_COLOR, INPUT_PULLUP); pinMode(BUTTON_BRIGHTNESS, INPUT_PULLUP); // Read initial states lastColorButtonState = digitalRead(BUTTON_COLOR); lastBrightnessButtonState = digitalRead(BUTTON_BRIGHTNESS); delay(100); } void loop() { int currentColorButtonState = digitalRead(BUTTON_COLOR); int currentBrightnessButtonState = digitalRead(BUTTON_BRIGHTNESS); // Button for color/state if (lastColorButtonState == HIGH && currentColorButtonState == LOW) { state++; if (state > 2) state = 0; updateLEDs(); delay(250); // debounce } // Button for brightness if (lastBrightnessButtonState == HIGH && currentBrightnessButtonState == LOW) { brightnessIndex++; if (brightnessIndex >= 5) brightnessIndex = 0; strip.setBrightness(brightnessLevels[brightnessIndex]); strip.show(); // apply brightness updateLEDs(); // refresh current color/state delay(250); // debounce } lastColorButtonState = currentColorButtonState; lastBrightnessButtonState = currentBrightnessButtonState; } void updateLEDs() { strip.clear(); if (state == 1) { for (int i = 0; i < TOTAL_LEDS; i++) { strip.setPixelColor(i, strip.Color(255, 0, 0)); // Red } } else if (state == 2) { for (int i = 0; i < TOTAL_LEDS; i++) { strip.setPixelColor(i, strip.Color(0, 255, 0)); // Green } } strip.show(); }