Parece haber problema en ESP8266 con WS2812b cuando tratamos de compatibilizarlo con otros periféricos de tipo actuador analógico.
Hemos identificado cuenta de que cuando se trabaja simultáneamente con elementos hardware que requieren de un analogWrite para su control mientras se utiliza la librería FastLED para el control de los leds WS2812 sobre un ESP8266 los leds WS2812 que queremos controlar empiezan a tener un comportamiento extraño encendiéndose y apagándose y realizando cambios de color de manera aleatoria. Tanto en códigos simples como en codigos más complejos, hemos observado que esta incompatibilidad parece presentarse con la orden analogWrite.
Tras la fase empírica y una base de investigación sobre los ESP8266, la conclusión es que hay una incompatibilidad entre los dos sub-procesos a causa del sistema de generación de señales PWM utilizado por ESP8266.
Las señales PWM de dicho microcontrolador son generadas mediante software en vez de vía hardware especifico, lo que provoca que el microcontrolador no pueda responder correctamente a la generación de la señal de control de los leds WS2812 mientras está generando señales PWM. Este problema no se presenta en microcontroladores que trabajan la señal PWM por hardware como por ejemplo como los AVR ATmega utilizados por la familia Arduino Uno o Arduino Mega.
Hay diferentes alternativas a este problema:
- Usar otro microcontrolador con salidas PWM construidas a partir de hardware para controlar ambos periféricos juntos
- Usar dos ESP8266, uno para los LEDs WS2812 y otro para los elementos que requieran señales PWM.
- Evitar el uso de señales PWM, sustituir analogWrite por digitalWrite en caso de que nuestro periférico pudiera trabajar de esta manera.
- Utilizar Drivers PWM a los que nos podamos comunicar por UART, I2C o SPI y generen las señales PWM de forma independiente.
