diff --git a/wled00/const.h b/wled00/const.h index b1265879d7..1a458bd619 100644 --- a/wled00/const.h +++ b/wled00/const.h @@ -474,8 +474,8 @@ //this is merely a default now and can be changed at runtime #ifndef LEDPIN -#if defined(ESP8266) || (defined(ARDUINO_ARCH_ESP32) && defined(WLED_USE_PSRAM)) || defined(CONFIG_IDF_TARGET_ESP32C3) - #define LEDPIN 2 // GPIO2 (D4) on Wemos D1 mini compatible boards +#if defined(ESP8266) || (defined(ARDUINO_ARCH_ESP32) && defined(WLED_USE_PSRAM)) || defined(CONFIG_IDF_TARGET_ESP32C3) || defined(ARDUINO_ESP32_PICO) + #define LEDPIN 2 // GPIO2 (D4) on Wemos D1 mini compatible boards, and on boards where GPIO16 is not available #else #define LEDPIN 16 // aligns with GPIO2 (D4) on Wemos D1 mini32 compatible boards #endif diff --git a/wled00/wled.cpp b/wled00/wled.cpp index bbd47b75cc..97a8a3e48f 100644 --- a/wled00/wled.cpp +++ b/wled00/wled.cpp @@ -381,6 +381,11 @@ void WLED::setup() if (!pDoc) pDoc = &gDoc; // just in case ... (it should be globally assigned) DEBUG_PRINTLN(F("PSRAM not used.")); #endif +#endif +#if defined(ARDUINO_ESP32_PICO) +// special handling for PICO-D4: gpio16+17 are in use for onboard SPI FLASH (not PSRAM) +managed_pin_type pins[] = { {16, true}, {17, true} }; +pinManager.allocateMultiplePins(pins, sizeof(pins)/sizeof(managed_pin_type), PinOwner::SPI_RAM); #endif //DEBUG_PRINT(F("LEDs inited. heap usage ~"));