Waveshare ESP32-S3 Tiny and the WS2812

The “tiny” is the one with the USB connector on an umbilical cable.
According to the pinout, the WS2812 is controlled via GPIO38.

However, this .yaml:

# Example configuration entry
light:
  - platform: fastled_clockless
    chipset: WS2812
    pin: GPIO38
    num_leds: 1
    rgb_order: RGB
    name: "FastLED WS2811 Light"
    effects:
      - strobe:
          name: "Strobe Red"
          colors:
            - state: True
              brightness: 50%
              red: 100%
              green: 0%
              blue: 0%
              duration: 200ms
            - state: False
              duration: 200ms  

… gives a compilation error of:

Compiling .pioenvs/esp32-s3-tiny/lib64d/WiFi/WiFiMulti.cpp.o
In file included from .piolibdeps/esp32-s3-tiny/FastLED/FastLED.h:48,
                 from src/esphome/components/fastled_base/fastled_light.h:16,
                 from src/esphome.h:20,
                 from src/main.cpp:3:
.piolibdeps/esp32-s3-tiny/FastLED/fastpin.h: In instantiation of 'class FastPin<38>':
.piolibdeps/esp32-s3-tiny/FastLED/platforms/esp/32/clockless_rmt_esp32.h:178:23:   required from 'class ClocklessController<38, 60, 150, 90, (EOrder)10, 0, false, 5>'
.piolibdeps/esp32-s3-tiny/FastLED/chipsets.h:582:7:   required from 'class WS2812Controller800Khz<38, (EOrder)10>'
.piolibdeps/esp32-s3-tiny/FastLED/FastLED.h:103:52:   required from 'class WS2812<38, (EOrder)10>'
src/esphome/components/fastled_base/fastled_light.h:150:41:   required from 'CLEDController& esphome::fastled_base::FastLEDLightOutput::add_leds(int) [with CHIPSET = WS2812; unsigned char DATA_PIN = 38; EOrder RGB_ORDER = (EOrder)10]'
src/main.cpp:276:66:   required from here
.piolibdeps/esp32-s3-tiny/FastLED/fastpin.h:207:24: error: static assertion failed: Invalid pin specified
  static_assert(validpin(), "Invalid pin specified");

Any thoughts?

Regards, Martin

That looks like you don’t have all the libraries you need.

You need to provide a complete YAML (that is the minimal that shows the issue). I would also do a full clean first.

This issue looks relevant, use the workaround

Thank you Neel,
This is my complete .yaml (with the external component you suggested):

esphome:
  name: esp32-s3-tiny

esp32:
  board: esp32-s3-devkitc-1 #https://www.waveshare.com/esp32-s3-tiny.htm
  framework:
    type: arduino

external_components:
  - source: github://pr#4257
    components: [fastled]
    refresh: always    

# Enable logging
logger:
  level: DEBUG
  
# Enable Home Assistant API
api:
  
ota:
  - platform: esphome
    password: !secret ota_password
 

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  domain: .peritonlane
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
captive_portal:

web_server:
  port: 80
    
# Example configuration entry
light:
  - platform: fastled
    chipset: WS2812
    data_pin: GPIO38
    num_leds: 1
    rgb_order: RGB
    name: "FastLED WS2811 Light"
    effects:
      - strobe:
          name: "Strobe Red"
          colors:
            - state: True
              brightness: 50%
              red: 100%
              green: 0%
              blue: 0%
              duration: 200ms
            - state: False
              duration: 200ms  

Now this compiles without errors. However, it does not work.
I know the WS2811 is working. If I jumper the Test Pad 38 to GPIO05 (nearest to GPIO38) and change the data_pin: to GPIO05, it works.

So I guess there is still a problem with pins.h (or whatever its called?).

Regards, M.

The issue showed the PR did not work in some cases and to use

neopixelbus

or

esp32_rmt_led_strip

instead.