Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for WS2815 #940

Open
Teddyz opened this issue Dec 16, 2019 · 5 comments
Open

Add support for WS2815 #940

Teddyz opened this issue Dec 16, 2019 · 5 comments

Comments

@Teddyz
Copy link

@Teddyz Teddyz commented Dec 16, 2019

I would like you to add support for WS2815.
Using WS2813 (closest relative I found) is that sometimes the LEDs show too bright colours. This happens because the timing of a "0" is much shorter for this chipset, resulting in the LEDs sometimes mistakenly decodes a 0 as a 1.

For WS2813, using ESP8266, FastLED outputs a 0 as a roughly 390ns pulse. WS2815 wants between 220 and 380. So most often it works, but using longer cables, different voltages, temperatures, batches/manufacturers it sometimes goes wrong.

Reference:
Oscilloscope picture of ESP8266 using FastLED sending WS2813 data
bild

WS2815 manual
www.normandled.com/upload/201808/WS2815%20LED%20Datasheet.pdf
bild

T´hank you!

@Teddyz

This comment has been minimized.

Copy link
Author

@Teddyz Teddyz commented Dec 16, 2019

Sorry, I found that WS2812 had a shorter "0" time of 320ms. My short test showed no problems, so I suppose it will work nicely.

However, I suggest that you still add WS2815 to the list to avoid future confusion (and to make the compatible-list even more impressive).

Just for the fun of it, is there a way to play with these timings using FastLED?

OK to close.

Adding screenshot for WS2812 (or was it WS2812B)
bild

@Teddyz

This comment has been minimized.

Copy link
Author

@Teddyz Teddyz commented Dec 18, 2019

I found another problem using WS2815 with ESP8266. Running DemoReel100 works well up to 65 LEDs, if I set 66 LEDs the delay between two frames becomes too short so they are stacked after each other, instead of on top (replacing). This can be mitigated by adding an extra delay, like:

  // send the 'leds' array out to the actual LED strip
  FastLED.show();  
  // insert a delay to keep the framerate modest
  FastLED.delay(1000/FRAMES_PER_SECOND); 
  delay(1);

But I would prefer that it was in the library code. :)

@jandechent

This comment has been minimized.

Copy link

@jandechent jandechent commented Jan 12, 2020

For me, it is not working at all. The below example should turn one led at a time blue, but I get red, white, green. And also the locations don't match. My led stripe is in total 120 long, but for simplicity I reduced NUM_LEDS to 3. I tried WS2812B as well as WS2813. My hardware is Arduinio Nano w/ ATmega328.

#include <FastLED.h>
#define NUM_LEDS 3

#define LED_TYPE WS2812B
#define COLOR_ORDER GRB
#define DATA_PIN 3
CRGB leds[NUM_LEDS];
void setup() { 
  Serial.begin(9600);
  FastLED.addLeds<LED_TYPE, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS);
}

void loop() {
  for(int dot = 0; dot < NUM_LEDS; dot++) { 
    Serial.println(dot);
    leds[dot] = CRGB::Blue;
    FastLED.show();
    leds[dot] = CRGB::Black;
    delay(1000);
  }
}

Anyone solved the issue yet or can point me to the right file, where the timings are defined?

@Teddyz

This comment has been minimized.

Copy link
Author

@Teddyz Teddyz commented Jan 12, 2020

I tested your code on Arduino Uno + WS2815 and it works as I think is intended, a moving blue LED. Unfortunately I have no answer to you question.

Check so you do not use BI as input, DI, the pin next to +12V is the input, BI shall be grounded. You can do this test running WS2815 on 5V. It works as long as you do not mix colours.

@jandechent

This comment has been minimized.

Copy link

@jandechent jandechent commented Jan 13, 2020

@Teddyz Yes - ground. I forgot to connect the 12V-gound to the board ground. That was the issue, obvious if I think about it. All 120 LED working perfectly for me now.

I also suggest adding the WS2815B to the list of supported strips.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
2 participants
You can’t perform that action at this time.