/*------------------------------------------------------------------- Project: InsoL@b Author : user@B0 mail@nowhere.void File : led_RGB.h 2026-04-23 This work is copyrighted under CERN Open Hardware Licence Version 2. ---------------------------------------------------------------------- Aqua #00FFFF 0% 100% 100% 180° 100% 50% 100% 100% 11 (high cyan); cyan Teal #008080 0% 50% 50% 180° 100% 25% 100% 50% 03 (low cyan) Blue #0000FF 0% 0% 100% 240° 100% 50% 100% 100% 09 (high blue) Navy #000080 0% 0% 50% 240° 100% 25% 100% 50% 01 (low blue) Fuchsia #FF00FF 100% 0% 100% 300° 100% 50% 100% 100% 13 (high magenta); magenta Purple #800080 50% 0% 50% 300° 100% 25% 100% 50% 05 (low magenta) ---------------------------------------------------------------------*/ #ifndef _INSOLAB_LEDRGB_H_ #define _INSOLAB_LEDRGB_H_ #include #include #define PIN 16 // RGB LED (WS2812) clone of Waveshare rp2040-zero. #define NUMPIXELS 1 Adafruit_NeoPixel pixels( NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); enum {NONE, RED, YELLOW, ORANGE, GREEN, BLUE, PINK, FUCHS, BLANK}; int ledColor = NONE; int ledMax=2; void ledInit() { pixels.begin(); pixels.setPixelColor(0, pixels.Color(0, 0, 0)); pixels.show(); delay(100); } void ledRGB(int rgb) { switch (rgb) { case RED: pixels.setPixelColor(0, pixels.Color(ledMax, 0, 0)); break; case YELLOW: pixels.setPixelColor(0, pixels.Color(ledMax, ledMax, 0)); break; case ORANGE: pixels.setPixelColor(0, pixels.Color(ledMax, 1, 0)); break; case GREEN: pixels.setPixelColor(0, pixels.Color(0, ledMax, 0)); break; case BLUE: pixels.setPixelColor(0, pixels.Color(0, ledMax, ledMax)); // AQUA break; case PINK: pixels.setPixelColor(0, pixels.Color(1,0,3)); // (1,0,2)); break; // pink color (255, 192, 203) deep pink (255, 20, 147) case FUCHS: pixels.setPixelColor(0, pixels.Color(ledMax,0,ledMax)); // FUCHSIA break; case BLANK: pixels.setPixelColor(0, pixels.Color(1, 1, 1)); break; case NONE: pixels.setPixelColor(0, pixels.Color(0, 0, 0)); break; } pixels.show(); delay(100); } void ledScale(int rgb, int first, int aim, int inc, int period) { int i = first; do { i = i + inc; switch (rgb) { case RED: pixels.setPixelColor(0, pixels.Color(i, 0, 0)); break; case GREEN: pixels.setPixelColor(0, pixels.Color(0, i, 0)); break; case BLUE: pixels.setPixelColor(0, pixels.Color(0, 0, i)); break; case BLANK: pixels.setPixelColor(0, pixels.Color(i, i, i)); break; } pixels.show(); delay(period); } while (i != aim ); } uint16_t hue = 0; uint8_t sat = 0, val = 0; int32_t couleur = 0; void ledTest() { int period=12; switch (ledColor) { case NONE: for (val = 10; val < 50; val += 10) { for (sat = 10; sat < 50; sat += 10) { couleur = pixels.ColorHSV(765, sat, val); pixels.setPixelColor(0, couleur); pixels.show(); delay(6); } } break; case RED: ledScale(RED, 1, 200, 1, period); ledScale(RED, 200, 1, -1, period); break; case GREEN: ledScale(GREEN, 1, 200, 1, period); ledScale(GREEN, 200, 1, -1, period); break; case BLUE: ledScale(BLUE, 1, 200, 1, period); ledScale(BLUE, 200, 1, -1, period); break; default: break; } ledColor++; if (ledColor == 4) { ledColor = NONE; } delay(1000); } #endif