diff options
-rw-r--r-- | FastSPI_LED2.h | 3 | ||||
-rw-r--r-- | chipsets.h | 9 | ||||
-rw-r--r-- | examples/FirstLight/FirstLight.ino | 19 |
3 files changed, 28 insertions, 3 deletions
diff --git a/FastSPI_LED2.h b/FastSPI_LED2.h index 08d3dc48..de228c53 100644 --- a/FastSPI_LED2.h +++ b/FastSPI_LED2.h @@ -24,6 +24,7 @@ enum EClocklessChipsets { WS2811, WS2812, WS2812B, + WS2811_400, NEOPIXEL, UCS1903 }; @@ -100,6 +101,7 @@ public: case WS2812B: case NEOPIXEL: case WS2811: return addLeds(new WS2811Controller800Khz<DATA_PIN>(), data, nLedsOrOffset, nLedsIfOffset); + case WS2811_400: return addLeds(new WS2811Controller400Khz<DATA_PIN>(), data, nLedsOrOffset, nLedsIfOffset); } } @@ -116,6 +118,7 @@ public: case WS2812B: case NEOPIXEL: case WS2811: return addLeds(new WS2811Controller800Khz<DATA_PIN, RGB_ORDER>(), data, nLedsOrOffset, nLedsIfOffset); + case WS2811_400: return addLeds(new WS2811Controller400Khz<DATA_PIN, RGB_ORDER>(), data, nLedsOrOffset, nLedsIfOffset); } } @@ -242,7 +242,14 @@ class TM1809Controller800Khz : public ClocklessController<DATA_PIN, NS(350), NS( template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB> class WS2811Controller800Khz : public ClocklessController<DATA_PIN, NS(400), NS(400), NS(450), RGB_ORDER> {}; #if NO_TIME(400, 400, 450) -#warning "No enough clock cycles available for the UCS103" +#warning "No enough clock cycles available for the WS2811 (800khz)" +#endif + +// WS2811@400khz - 800ns, 800ns, 900ns +template <uint8_t DATA_PIN, EOrder RGB_ORDER = RGB> +class WS2811Controller400Khz : public ClocklessController<DATA_PIN, NS(800), NS(800), NS(900), RGB_ORDER> {}; +#if NO_TIME(800, 800, 900) +#warning "No enough clock cycles available for the WS2811 (400Khz)" #endif // 750NS, 750NS, 750NS diff --git a/examples/FirstLight/FirstLight.ino b/examples/FirstLight/FirstLight.ino index 28258b52..0939fe8e 100644 --- a/examples/FirstLight/FirstLight.ino +++ b/examples/FirstLight/FirstLight.ino @@ -7,7 +7,12 @@ // // How many leds are in the strip? -#define NUM_LEDS 40 +#define SWITCH 2 +#if SWITCH == 1 +#define NUM_LEDS 18 * 3 +#elif SWITCH == 2 +#define NUM_LEDS 75 * 4 +#endif // Data pin that led data will be written out over #define DATA_PIN 6 @@ -27,7 +32,17 @@ void setup() { // FastLED.addLeds<TM1803, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<TM1804, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<TM1809, DATA_PIN, RGB>(leds, NUM_LEDS); - FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS); + #if SWITCH == 1 + FastSPI_LED2.addLeds<WS2811, 16, GRB>(leds, NUM_LEDS/3); + FastSPI_LED2.addLeds<WS2811, 7, GRB>(leds+18, NUM_LEDS/3); + FastSPI_LED2.addLeds<WS2811, 19, GRB>(leds+36, NUM_LEDS/3); + #elif SWITCH == 2 + FastSPI_LED2.addLeds<WS2811, 17, GRB>(leds, 75); + FastSPI_LED2.addLeds<WS2811, 18, GRB>(leds + 75, 75); + FastSPI_LED2.addLeds<WS2811, 7, GRB>(leds + 150, 75); + FastSPI_LED2.addLeds<WS2811, 8, GRB>(leds + 225, 75); + #endif + // FastLED.addLeds<WS2811, 8, RGB>(leds + 225, NUM_LEDS/4); // FastLED.addLeds<WS2812, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<WS2812B, DATA_PIN, RGB>(leds, NUM_LEDS); // FastLED.addLeds<UCS1903, DATA_PIN, RGB>(leds, NUM_LEDS); |