#include #define PIN 5 #define NUMPIXELS 12 #define DEFAULT_BRIGHTNESS 75 Adafruit_NeoPixel ring(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); String lastColor = "green"; int currentBrightness = DEFAULT_BRIGHTNESS; uint32_t getColorFromString(String colorName) { if (colorName == "red") return ring.Color(255, 0, 0); if (colorName == "green") return ring.Color(0, 255, 0); if (colorName == "blue") return ring.Color(0, 0, 255); if (colorName == "purple") return ring.Color(148, 0, 211); return ring.Color(0, 0, 0); } void applyColor(String color) { if (color != "off"){ lastColor = color; } if (color == "red") { ring.fill(ring.Color(255, 0, 0)); } else if (color == "green") { ring.fill(ring.Color(0, 255, 0)); } else if (color == "blue") { ring.fill(ring.Color(0, 0, 255)); } else if (color == "purple") { ring.fill(ring.Color(148, 0, 211)); } if (color == "off") { ring.clear(); } ring.show(); } uint32_t Wheel(byte pos) { pos = 255 - pos; if(pos < 85) { return ring.Color(255 - pos * 3, 0, pos * 3); } if(pos < 170) { pos -= 85; return ring.Color(0, pos * 3, 255 - pos * 3); } pos -= 170; return ring.Color(pos * 3, 255 - pos * 3, 0); } void rainbow(uint8_t wait) { for(uint16_t j = 0; j <= 255; j++) { for(uint16_t i = 0; i < ring.numPixels(); i++) { ring.setPixelColor(i, Wheel((i + j) & 255)); } ring.show(); delay(wait); } } void turnClockwise(String color) { for (int i = 0; i < NUMPIXELS; i++) { ring.clear(); ring.setPixelColor(i, getColorFromString(color)); ring.show(); delay(100); } ring.clear(); ring.show(); } void setup() { Serial.begin(115200); ring.begin(); ring.setBrightness(currentBrightness); ring.clear(); ring.show(); Serial.println("Enter color (red, blue, green, purple), change brightness with >>brightness value<< between 0 and 100 or turn device off by entering off"); } void loop() { if (Serial.available()) { String input = Serial.readStringUntil('\n'); input.trim(); input.toLowerCase(); if (input.startsWith("br")) { int value = input.substring(11).toInt(); value = constrain(value, 0, 100); currentBrightness = map(value, 0, 100, 0, 255); ring.setBrightness(currentBrightness); Serial.print("Brightness: "); Serial.println(value); applyColor(lastColor); } else if (input == "on") { applyColor(lastColor); } else if (input == "turn") { turnClockwise(lastColor); applyColor(lastColor); } else if (input == "rainbow") { rainbow(50); } else { applyColor(input); } } }