Hi all. Has anyone been able to get an ESP-01 working with FastLED?

Hi all. Has anyone been able to get an ESP-01 working with FastLED? I’m using a UCS1903B strip with FastLED 3.1.3 and the Arduino ESP8266 Core v2.3.0.

I’ve tried a bunch of workarounds in various combinations (changing the function of the RX pin, defining FASTLED_ESP8266_RAW_PIN_ORDER etc.) to no avail.

I have plenty of things left to try, but I was wondering if someone has already gotten this to work?

Hi there… the UCS1903B is a verrrrrry slow cat… you have slow down the data rate. Do you have tryed this strip with a other arduino?
Can you post your initial code?

Hey Solo Han, I know :frowning: I purchased these strips before I knew much about the different chipsets.

I have 8 of these strips working well, being driven by Arduino Pro Minis. I’ve also been able to drive the strips from a (3.3V) Arduino Due in the past.

I’m trying to get a simple sketch working at the moment. I’ve tried GPIO 0 and 2, to no avail:

#include <FastLED.h>

#define LED_COUNT 50
#define DATA_PIN 2
#define FASTLED_ESP8266_RAW_PIN_ORDER

CRGBArray<LED_COUNT> leds;

void setup() {
delay(1000);
pinMode(DATA_PIN, OUTPUT);
FastLED.addLeds<UCS1903B, DATA_PIN, BRG>(leds, LED_COUNT).setCorrection(TypicalSMD5050);
}

void loop() {
fill_solid(leds, LED_COUNT, CRGB::Red);
FastLED.show();
}

You have to put the define raw pin order before the include fastled.h

Ah of course, silly mistake! Thanks for pointing that out.

At any rate, I’ve confirmed FastLED is pushing data out to the correct pin. Just need to try making the data cable as short as possible to see if it’s a timing issue.

Worst-case scenario, I’ll just have to push the data to a slave Arduino Mini and have it drive the strip. I’d rather not have the extra layer there but it won’t be the end of the world.

I started from scratch and got it working without needing to do anything fancy at all, must have been an issue with my wiring. Still using FastLED 3.1.3 and ESP8266 Core 2.3.0.

Thanks for the responses all, I’ll have to post the results of my recently completed project on here sometime soon.

Sketch:
#include <FastLED.h>

#define LED_COUNT 50
#define DATA_PIN 1

CRGBArray<LED_COUNT> leds;

void setup() {
delay(1000);
pinMode(DATA_PIN, OUTPUT);

FastLED.addLeds<UCS1903B, DATA_PIN, BRG>(leds, LED_COUNT).setCorrection(TypicalSMD5050);
}

void loop() {
long ms = millis() % 5000;

if (ms < 1000) {
fill_solid(leds, LED_COUNT, CRGB::Red);
} else if (ms < 2000) {
fill_solid(leds, LED_COUNT, CRGB::Blue);
} else if (ms < 3000) {
fill_solid(leds, LED_COUNT, CRGB::Green);
} else if (ms < 4000) {
fill_solid(leds, LED_COUNT, CRGB::Purple);
} else {
fill_solid(leds, LED_COUNT, CRGB::Yellow);
}

FastLED.show();
}