diff --git a/ESPixelStick/src/output/OutputWS2811.hpp b/ESPixelStick/src/output/OutputWS2811.hpp index a82a60d61..631cf910e 100644 --- a/ESPixelStick/src/output/OutputWS2811.hpp +++ b/ESPixelStick/src/output/OutputWS2811.hpp @@ -50,12 +50,17 @@ class c_OutputWS2811 : public c_OutputPixel #define WS2811_PIXEL_DATA_RATE 800000.0 #define WS2811_PIXEL_NS_BIT_TOTAL ( (1.0 / WS2811_PIXEL_DATA_RATE) * NanoSecondsInASecond) - -#define WS2811_PIXEL_NS_BIT_0_HIGH 315.0 // 220ns - 380ns per datasheet -#define WS2811_PIXEL_NS_BIT_0_LOW (WS2811_PIXEL_NS_BIT_TOTAL - WS2811_PIXEL_NS_BIT_0_HIGH) - -#define WS2811_PIXEL_NS_BIT_1_HIGH 935.0 // 580ns - 1.6us per datasheet -#define WS2811_PIXEL_NS_BIT_1_LOW (WS2811_PIXEL_NS_BIT_TOTAL - WS2811_PIXEL_NS_BIT_1_HIGH) +#ifdef ARDUINO_ARCH_ESP32 + #define WS2811_PIXEL_NS_BIT_0_HIGH 312.0 // = 312 on logic analyzer 220ns - 380ns per datasheet + #define WS2811_PIXEL_NS_BIT_0_LOW 945.0 // = 937 on logic analyzer 580ns - 1.6us per datasheet + #define WS2811_PIXEL_NS_BIT_1_HIGH 975.0 // = 937 on logic analyzer 580ns - 1.6us per datasheet + #define WS2811_PIXEL_NS_BIT_1_LOW 300.0 // = 312 on logic analyzer 220ns - 380ns per datasheet +#else + #define WS2811_PIXEL_NS_BIT_0_HIGH 312.0 // 220ns - 380ns per datasheet + #define WS2811_PIXEL_NS_BIT_0_LOW (WS2811_PIXEL_NS_BIT_TOTAL - WS2811_PIXEL_NS_BIT_0_HIGH) + #define WS2811_PIXEL_NS_BIT_1_HIGH 975.0 // 580ns - 1.6us per datasheet + #define WS2811_PIXEL_NS_BIT_1_LOW (WS2811_PIXEL_NS_BIT_TOTAL - WS2811_PIXEL_NS_BIT_1_HIGH) +#endif // ARDUINO_ARCH_ESP32 #define WS2811_PIXEL_IDLE_TIME_NS 350000.0 // 350us per datasheet #define WS2811_PIXEL_IDLE_TIME_US (WS2811_PIXEL_IDLE_TIME_NS / float(NanoSecondsInAMicroSecond))