From e7fc32c3ec467512ce1f9d38251b7421702d84c3 Mon Sep 17 00:00:00 2001 From: tyeth Date: Thu, 20 Nov 2025 13:02:16 +0000 Subject: [PATCH 1/6] Add Inverted Status LED support --- src/Wippersnapper_Boards.h | 1 + .../digitalIO/Wippersnapper_DigitalGPIO.cpp | 2 +- src/components/pwm/ws_pwm.cpp | 2 +- .../statusLED/Wippersnapper_StatusLED.cpp | 80 ++++++++++++++++--- 4 files changed, 73 insertions(+), 12 deletions(-) diff --git a/src/Wippersnapper_Boards.h b/src/Wippersnapper_Boards.h index a456c2fc0..d73e3f5c0 100644 --- a/src/Wippersnapper_Boards.h +++ b/src/Wippersnapper_Boards.h @@ -153,6 +153,7 @@ #define USE_LITTLEFS #define USE_STATUS_LED #define STATUS_LED_PIN 0 +#define STATUS_LED_INVERTED #elif defined(ARDUINO_ADAFRUIT_ITSYBITSY_ESP32) #define BOARD_ID "itsybitsy-esp32" #define USE_LITTLEFS diff --git a/src/components/digitalIO/Wippersnapper_DigitalGPIO.cpp b/src/components/digitalIO/Wippersnapper_DigitalGPIO.cpp index 577c9780d..c44233756 100644 --- a/src/components/digitalIO/Wippersnapper_DigitalGPIO.cpp +++ b/src/components/digitalIO/Wippersnapper_DigitalGPIO.cpp @@ -76,7 +76,7 @@ void Wippersnapper_DigitalGPIO::initDigitalPin( WS_DEBUG_PRINTLN(pinName); // Initialize LOW -#if defined(ARDUINO_ESP8266_ADAFRUIT_HUZZAH) +#if defined(ARDUINO_ESP8266_ADAFRUIT_HUZZAH) || defined(STATUS_LED_INVERTED) // The Adafruit Feather ESP8266's built-in LED is reverse wired so setting // the pin LOW will turn the LED on. digitalWrite(STATUS_LED_PIN, !0); diff --git a/src/components/pwm/ws_pwm.cpp b/src/components/pwm/ws_pwm.cpp index 2e3ba0dc2..ee8c19570 100644 --- a/src/components/pwm/ws_pwm.cpp +++ b/src/components/pwm/ws_pwm.cpp @@ -88,7 +88,7 @@ void ws_pwm::detach(uint8_t pin) { void ws_pwm::writeDutyCycle(uint8_t pin, int dutyCycle) { #if defined(ARDUINO_ARCH_ESP32) _ledcMgr->analogWrite(pin, dutyCycle); -#elif defined(ARDUINO_ESP8266_ADAFRUIT_HUZZAH) && defined(STATUS_LED_PIN) +#elif (defined(ARDUINO_ESP8266_ADAFRUIT_HUZZAH) || defined(STATUS_LED_INVERTED)) && defined(STATUS_LED_PIN) // Adafruit Feather ESP8266's analogWrite() is inverted because its LED pin is // reverse-wired analogWrite(pin, 255 - dutyCycle); diff --git a/src/components/statusLED/Wippersnapper_StatusLED.cpp b/src/components/statusLED/Wippersnapper_StatusLED.cpp index 4cbdd4c85..421985845 100644 --- a/src/components/statusLED/Wippersnapper_StatusLED.cpp +++ b/src/components/statusLED/Wippersnapper_StatusLED.cpp @@ -84,11 +84,29 @@ void initStatusLED() { analogWrite(STATUS_LED_PIN, 255); #elif defined(ARDUINO_ARCH_ESP32) WS._pwmComponent->attach(STATUS_LED_PIN, LEDC_BASE_FREQ, LEDC_TIMER_12_BIT); - WS._pwmComponent->writeDutyCycle(STATUS_LED_PIN, 0); // turn OFF + WS._pwmComponent->writeDutyCycle(STATUS_LED_PIN, +#if defined(STATUS_LED_INVERTED) +255 +#else +0 +#endif + ); // turn OFF #elif defined(ARDUINO_ARCH_RP2040) - digitalWrite(STATUS_LED_PIN, 0); + digitalWrite(STATUS_LED_PIN, +#if defined(STATUS_LED_INVERTED) +255 +#else +0 +#endif + ); // turn OFF +#else + analogWrite(STATUS_LED_PIN, +#if defined(STATUS_LED_INVERTED) +255 #else - analogWrite(STATUS_LED_PIN, 0); +0 +#endif + ); // turn OFF #endif WS.lockStatusLED = true; // set global pin "lock" flag @@ -116,7 +134,13 @@ void releaseStatusLED() { #endif #ifdef USE_STATUS_LED - digitalWrite(STATUS_LED_PIN, 0); // turn off + digitalWrite(STATUS_LED_PIN, +#if defined(STATUS_LED_INVERTED) +255 +#else +0 +#endif + ); // turn OFF pinMode(STATUS_LED_PIN, INPUT); // "release" for use by setting to input (hi-z) WS.lockStatusLED = false; // un-set global pin "lock" flag @@ -182,13 +206,31 @@ void setStatusLEDColor(uint32_t color) { if (!WS.lockStatusLED) return; // status pixel is in-use elsewhere #ifdef ARDUINO_ARCH_RP2040 - digitalWrite(STATUS_LED_PIN, color > 0); + digitalWrite(STATUS_LED_PIN, +#if defined(STATUS_LED_INVERTED) + !(color > 0) +#else + color > 0 +#endif + ); #else if (color != BLACK) WS._pwmComponent->writeDutyCycle( - STATUS_LED_PIN, map(WS.status_pixel_brightness, 0.0, 1.0, 0, 1023)); + STATUS_LED_PIN, map(WS.status_pixel_brightness, 0.0, 1.0, +#if defined(STATUS_LED_INVERTED) +1023, 0 +#else +0, 1023 +#endif + )); else - WS._pwmComponent->writeDutyCycle(STATUS_LED_PIN, 0); + WS._pwmComponent->writeDutyCycle(STATUS_LED_PIN, +#if defined(STATUS_LED_INVERTED) + 1023 +#else + 0 +#endif + ); #endif #endif } @@ -241,14 +283,32 @@ void setStatusLEDColor(uint32_t color, int brightness) { return; #ifdef ARDUINO_ARCH_RP2040 - digitalWrite(STATUS_LED_PIN, color > 0); + digitalWrite(STATUS_LED_PIN, +#if defined(STATUS_LED_INVERTED) + !(color > 0) +#else + color > 0 +#endif + ); #else if (color != BLACK) { // re-map for pixel as a LED - int pulseWidth = map(brightness, 0, 255, 0, 1023); + int pulseWidth = map(brightness, 0, 255, +#if defined(STATUS_LED_INVERTED) + 1023, 0 +#else + 0, 1023 +#endif + ); WS._pwmComponent->writeDutyCycle(STATUS_LED_PIN, pulseWidth); } else { - WS._pwmComponent->writeDutyCycle(STATUS_LED_PIN, 0); + WS._pwmComponent->writeDutyCycle(STATUS_LED_PIN, +#if defined(STATUS_LED_INVERTED) + 1023 +#else + 0 +#endif + ); } #endif #endif From 871a61762fdad87bbe19c59183d6328bd6a051e3 Mon Sep 17 00:00:00 2001 From: tyeth Date: Thu, 20 Nov 2025 14:17:01 +0000 Subject: [PATCH 2/6] Add Arduino Nesso-N1 --- .github/workflows/build-clang-doxy.yml | 5 ++++- .../.arduino_nesso_n1.generate | 1 + .../.arduino_nesso_n1.test.skip | 1 + platformio.ini | 21 +++++++++++++++++++ src/Wippersnapper_Boards.h | 7 +++++++ .../littlefs/WipperSnapper_LittleFS.cpp | 2 +- src/provisioning/tinyusb/Wippersnapper_FS.cpp | 2 +- 7 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 examples/Wippersnapper_demo/.arduino_nesso_n1.generate create mode 100644 examples/wippersnapper_debug/.arduino_nesso_n1.test.skip diff --git a/.github/workflows/build-clang-doxy.yml b/.github/workflows/build-clang-doxy.yml index 79fd6afad..ac73aebd4 100644 --- a/.github/workflows/build-clang-doxy.yml +++ b/.github/workflows/build-clang-doxy.yml @@ -370,7 +370,8 @@ jobs: "dfrobot_beetle_esp32c3", "wippersnapper_qtpy_esp32c3", "espressif_esp32c5_devkitc_1_n8r4", - "wippersnapper_feather_esp32c6" + "wippersnapper_feather_esp32c6", + "arduino_nesso_n1" ] include: - offset: "0x1000" @@ -382,6 +383,8 @@ jobs: arduino-platform: "espressif_esp32c5_devkitc_1_n8r4" - offset: "0x0" arduino-platform: "wippersnapper_feather_esp32c6" + - offset: "0x0" + arduino-platform: "arduino_nesso_n1" steps: - name: "skip if unwanted" continue-on-error: true diff --git a/examples/Wippersnapper_demo/.arduino_nesso_n1.generate b/examples/Wippersnapper_demo/.arduino_nesso_n1.generate new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/examples/Wippersnapper_demo/.arduino_nesso_n1.generate @@ -0,0 +1 @@ + diff --git a/examples/wippersnapper_debug/.arduino_nesso_n1.test.skip b/examples/wippersnapper_debug/.arduino_nesso_n1.test.skip new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/examples/wippersnapper_debug/.arduino_nesso_n1.test.skip @@ -0,0 +1 @@ + diff --git a/platformio.ini b/platformio.ini index 7d651d14f..d76ad9f8e 100644 --- a/platformio.ini +++ b/platformio.ini @@ -201,6 +201,27 @@ build_flags = board_build.filesystem = littlefs board_build.partitions = min_spiffs.csv +; Arduino Nesso-N1 (Espressif ESP32-C5 16MB FLASH) +[env:arduino_nesso_n1] +extends = common:esp32 +board = arduino_nesso_n1 +build_type = debug +; debug_tool = esp-builtin +; upload_protocol = esp-builtin +; debug_init_break = tbreak setup +build_flags = + -DARDUINO_ARDUINO_NESSO_N1 + -DBOARD_HAS_PSRAM + ; -DDEBUG=1 + ; -DARDUINO_USB_MODE=1 + ; -DARDUINO_USB_CDC_ON_BOOT=1 + ; -DESP_LOG_LEVEL=5 + ; -DARDUINO_LOG_LEVEL=5 + ; -DCORE_DEBUG_LEVEL=5 + ; -DMQTT_DEBUG=1 +board_build.filesystem = littlefs +board_build.partitions = huge_app.csv + ; Espressif ESP32-C6 4MB NO PSRAM esp32-c6-devkitm-1 [env:espressif_esp32-c6-devkitm-1] extends = common:esp32 diff --git a/src/Wippersnapper_Boards.h b/src/Wippersnapper_Boards.h index d73e3f5c0..d74c4e638 100644 --- a/src/Wippersnapper_Boards.h +++ b/src/Wippersnapper_Boards.h @@ -166,6 +166,13 @@ #define USE_LITTLEFS #define USE_STATUS_LED #define STATUS_LED_PIN 13 +#elif defined(ARDUINO_ARDUINO_NESSO_N1) +#define BOARD_ID "arduino-nesso-n1" +#define USE_LITTLEFS +#define USE_STATUS_LED +#define STATUS_LED_PIN LED_BUILTIN +#define STATUS_LED_INVERTED +#define USE_PSRAM ///< Board has PSRAM, use it for dynamic memory allocation #elif defined(ARDUINO_ADAFRUIT_FEATHER_ESP32C6) #define BOARD_ID "feather-esp32c6" #define USE_LITTLEFS diff --git a/src/provisioning/littlefs/WipperSnapper_LittleFS.cpp b/src/provisioning/littlefs/WipperSnapper_LittleFS.cpp index 5c58b8b22..5cca6b684 100644 --- a/src/provisioning/littlefs/WipperSnapper_LittleFS.cpp +++ b/src/provisioning/littlefs/WipperSnapper_LittleFS.cpp @@ -12,7 +12,7 @@ * BSD license, all text here must be included in any redistribution. * */ -#if defined(ARDUINO_FEATHER_ESP32) || \ +#if defined(ARDUINO_FEATHER_ESP32) || defined(ARDUINO_ARDUINO_NESSO_N1) || \ defined(ARDUINO_ESP8266_ADAFRUIT_HUZZAH) || \ defined(ARDUINO_ADAFRUIT_ITSYBITSY_ESP32) || \ defined(ARDUINO_ADAFRUIT_FEATHER_ESP32_V2) || \ diff --git a/src/provisioning/tinyusb/Wippersnapper_FS.cpp b/src/provisioning/tinyusb/Wippersnapper_FS.cpp index 2db5d1bde..243195539 100644 --- a/src/provisioning/tinyusb/Wippersnapper_FS.cpp +++ b/src/provisioning/tinyusb/Wippersnapper_FS.cpp @@ -28,7 +28,7 @@ defined(ARDUINO_ADAFRUIT_FEATHER_ESP32S3_REVTFT) || \ defined(ARDUINO_ADAFRUIT_FEATHER_ESP32S2_REVTFT) || \ defined(ARDUINO_ADAFRUIT_QTPY_ESP32S3_N4R2) || \ - defined(ARDUINO_XIAO_ESP32S3) || \ + defined(ARDUINO_XIAO_ESP32S3) || \ defined(ARDUINO_ADAFRUIT_FRUITJAM_RP2350) #include "Wippersnapper_FS.h" From 10d52c1be8a04ca31f005096a4ef0d78168d8cdb Mon Sep 17 00:00:00 2001 From: Tyeth Gundry Date: Thu, 20 Nov 2025 15:10:35 +0000 Subject: [PATCH 3/6] wip(ci): swap boards ref to arduino-nesso-n1 --- .github/workflows/build-clang-doxy.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build-clang-doxy.yml b/.github/workflows/build-clang-doxy.yml index ac73aebd4..a9ee7beda 100644 --- a/.github/workflows/build-clang-doxy.yml +++ b/.github/workflows/build-clang-doxy.yml @@ -421,6 +421,7 @@ jobs: with: repository: adafruit/Wippersnapper_Boards path: ws-boards + ref: arduino-nesso-n1 - name: Install CI-Arduino run: bash ci/actions_install.sh - name: Install extra Arduino libraries From 2de89ebc01a971ce264fa0aa06ab70fc10bcd697 Mon Sep 17 00:00:00 2001 From: tyeth Date: Thu, 20 Nov 2025 17:12:39 +0000 Subject: [PATCH 4/6] wip(pio): Local build for platformIO seems okay --- src/Wippersnapper_Boards.h | 3 ++ .../digitalIO/Wippersnapper_DigitalGPIO.cpp | 52 +++++++++++++++++-- .../digitalIO/Wippersnapper_DigitalGPIO.h | 12 +++++ .../statusLED/Wippersnapper_StatusLED.cpp | 6 ++- 4 files changed, 67 insertions(+), 6 deletions(-) diff --git a/src/Wippersnapper_Boards.h b/src/Wippersnapper_Boards.h index d74c4e638..895051558 100644 --- a/src/Wippersnapper_Boards.h +++ b/src/Wippersnapper_Boards.h @@ -170,6 +170,9 @@ #define BOARD_ID "arduino-nesso-n1" #define USE_LITTLEFS #define USE_STATUS_LED +#ifdef STATUS_LED_PIN +#undef STATUS_LED_PIN +#endif #define STATUS_LED_PIN LED_BUILTIN #define STATUS_LED_INVERTED #define USE_PSRAM ///< Board has PSRAM, use it for dynamic memory allocation diff --git a/src/components/digitalIO/Wippersnapper_DigitalGPIO.cpp b/src/components/digitalIO/Wippersnapper_DigitalGPIO.cpp index c44233756..029548125 100644 --- a/src/components/digitalIO/Wippersnapper_DigitalGPIO.cpp +++ b/src/components/digitalIO/Wippersnapper_DigitalGPIO.cpp @@ -66,9 +66,13 @@ void Wippersnapper_DigitalGPIO::initDigitalPin( wippersnapper_pin_v1_ConfigurePinRequest_Direction_DIRECTION_OUTPUT) { #ifdef STATUS_LED_PIN +#if !defined(ARDUINO_ARDUINO_NESSO_N1) +// if (String("D") + pinName == STATUS_LED_PIN.pin) +// #else // deinit status led, use it as a dio component instead if (pinName == STATUS_LED_PIN) releaseStatusLED(); +#endif #endif pinMode(pinName, OUTPUT); @@ -76,10 +80,14 @@ void Wippersnapper_DigitalGPIO::initDigitalPin( WS_DEBUG_PRINTLN(pinName); // Initialize LOW -#if defined(ARDUINO_ESP8266_ADAFRUIT_HUZZAH) || defined(STATUS_LED_INVERTED) - // The Adafruit Feather ESP8266's built-in LED is reverse wired so setting - // the pin LOW will turn the LED on. - digitalWrite(STATUS_LED_PIN, !0); +#if defined(ARDUINO_ESP8266_ADAFRUIT_HUZZAH) // not until we support ExpanderPins || defined(STATUS_LED_INVERTED) + if (pinName == STATUS_LED_PIN) { + // The Adafruit Feather ESP8266's built-in LED is reverse wired so setting + // the pin LOW will turn the LED on. + digitalWrite(STATUS_LED_PIN, !0); + } else { + digitalWrite(pinName, LOW); + } #else pinMode(pinName, OUTPUT); digitalWrite(pinName, LOW); // initialize LOW @@ -155,9 +163,11 @@ void Wippersnapper_DigitalGPIO::deinitDigitalPin( // if prv. in-use by DIO, release pin back to application #ifdef STATUS_LED_PIN +#if !defined(ARDUINO_ARDUINO_NESSO_N1) // not until we support ExpanderPins if (pinName == STATUS_LED_PIN) initStatusLED(); #endif +#endif } /********************************************************************/ @@ -175,6 +185,40 @@ int Wippersnapper_DigitalGPIO::digitalReadSvc(int pinName) { return pinVal; } +#if defined(ARDUINO_ARDUINO_NESSO_N1) +/********************************************************************/ +/*! + @brief High-level digitalRead service impl. which performs a + digitalRead. + @param pin + The ExpanderPin instance + @returns The pin's value. +*/ +/********************************************************************/ +int Wippersnapper_DigitalGPIO::digitalReadSvc(ExpanderPin pin) { + // Service using arduino `digitalRead` + int pinVal = digitalRead(pin); + return pinVal; +} + +/*******************************************************************************/ +/*! + @brief Writes a value to a pin. + @param pinName + The pin's name. + @param pinValue + The pin's value. +*/ +/*******************************************************************************/ +void Wippersnapper_DigitalGPIO::digitalWriteSvc(ExpanderPin pin, int pinValue) { + WS_DEBUG_PRINT("Digital Pin Event: Set "); + WS_DEBUG_PRINT(pin.pin); + WS_DEBUG_PRINT(" to "); + WS_DEBUG_PRINTLN(pinValue); + digitalWrite(pin, pinValue); +} +#endif + /*******************************************************************************/ /*! @brief Writes a value to a pin. diff --git a/src/components/digitalIO/Wippersnapper_DigitalGPIO.h b/src/components/digitalIO/Wippersnapper_DigitalGPIO.h index 960687ee5..37863e606 100644 --- a/src/components/digitalIO/Wippersnapper_DigitalGPIO.h +++ b/src/components/digitalIO/Wippersnapper_DigitalGPIO.h @@ -50,6 +50,18 @@ class Wippersnapper_DigitalGPIO { int digitalReadSvc(int pinName); void digitalWriteSvc(uint8_t pinName, int pinValue); +#if defined(ARDUINO_ARDUINO_NESSO_N1) + // void + // initDigitalPin(wippersnapper_pin_v1_ConfigurePinRequest_Direction direction, + // ExpanderPin pinName, float period, + // wippersnapper_pin_v1_ConfigurePinRequest_Pull pull); + // void + // deinitDigitalPin(wippersnapper_pin_v1_ConfigurePinRequest_Direction direction, + // ExpanderPin pinName); + + int digitalReadSvc(ExpanderPin pinName); + void digitalWriteSvc(ExpanderPin pinName, int pinValue); +#endif void processDigitalInputs(); digitalInputPin *_digital_input_pins; /*!< Array of gpio pin objects */ diff --git a/src/components/statusLED/Wippersnapper_StatusLED.cpp b/src/components/statusLED/Wippersnapper_StatusLED.cpp index 421985845..6b7e9e8b2 100644 --- a/src/components/statusLED/Wippersnapper_StatusLED.cpp +++ b/src/components/statusLED/Wippersnapper_StatusLED.cpp @@ -82,6 +82,8 @@ void initStatusLED() { // Turn off LED initially #if defined(ARDUINO_ESP8266_ADAFRUIT_HUZZAH) analogWrite(STATUS_LED_PIN, 255); +#elif defined(ARDUINO_ARDUINO_NESSO_N1) || defined(STATUS_LED_INVERTED) + digitalWrite(STATUS_LED_PIN, HIGH); #elif defined(ARDUINO_ARCH_ESP32) WS._pwmComponent->attach(STATUS_LED_PIN, LEDC_BASE_FREQ, LEDC_TIMER_12_BIT); WS._pwmComponent->writeDutyCycle(STATUS_LED_PIN, @@ -205,7 +207,7 @@ void setStatusLEDColor(uint32_t color) { #ifdef USE_STATUS_LED if (!WS.lockStatusLED) return; // status pixel is in-use elsewhere -#ifdef ARDUINO_ARCH_RP2040 +#if defined(ARDUINO_ARCH_RP2040) || defined(ARDUINO_ARDUINO_NESSO_N1) || defined(STATUS_LED_INVERTED) digitalWrite(STATUS_LED_PIN, #if defined(STATUS_LED_INVERTED) !(color > 0) @@ -282,7 +284,7 @@ void setStatusLEDColor(uint32_t color, int brightness) { if (!WS.lockStatusLED) return; -#ifdef ARDUINO_ARCH_RP2040 +#if defined(ARDUINO_ARCH_RP2040) || defined(ARDUINO_ARDUINO_NESSO_N1) digitalWrite(STATUS_LED_PIN, #if defined(STATUS_LED_INVERTED) !(color > 0) From 5989964b4c21a9a019d5044d368238ba2064cb71 Mon Sep 17 00:00:00 2001 From: tyeth Date: Thu, 20 Nov 2025 17:13:06 +0000 Subject: [PATCH 5/6] wip(pio): temporarily swap to fork of pioarduino --- platformio.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platformio.ini b/platformio.ini index d76ad9f8e..9b55ad3ba 100644 --- a/platformio.ini +++ b/platformio.ini @@ -101,7 +101,7 @@ lib_deps = ; Common build environment for ESP32 platform [common:esp32] -platform = https://github.com/pioarduino/platform-espressif32/releases/download/55.03.33/platform-espressif32.zip +platform = https://github.com/tyeth/platform-espressif32/releases/download/55.03.33-nesso.1/platform-espressif32-55.03.33-nesso.1.zip ; This is needed for occasional new features and bug fixes ; platform = https://github.com/pioarduino/platform-espressif32#develop lib_ignore = WiFiNINA, WiFiNINA_-_Adafruit_Fork, WiFi101, OneWire From 0618e6d9809a7c7c8051a6866a5447dd8e1d8e95 Mon Sep 17 00:00:00 2001 From: tyeth Date: Thu, 20 Nov 2025 19:36:06 +0000 Subject: [PATCH 6/6] No PSRAM on Nesso-N1 --- platformio.ini | 1 - src/Wippersnapper_Boards.h | 4 ---- 2 files changed, 5 deletions(-) diff --git a/platformio.ini b/platformio.ini index 9b55ad3ba..c2143dd82 100644 --- a/platformio.ini +++ b/platformio.ini @@ -211,7 +211,6 @@ build_type = debug ; debug_init_break = tbreak setup build_flags = -DARDUINO_ARDUINO_NESSO_N1 - -DBOARD_HAS_PSRAM ; -DDEBUG=1 ; -DARDUINO_USB_MODE=1 ; -DARDUINO_USB_CDC_ON_BOOT=1 diff --git a/src/Wippersnapper_Boards.h b/src/Wippersnapper_Boards.h index 895051558..b63051cfe 100644 --- a/src/Wippersnapper_Boards.h +++ b/src/Wippersnapper_Boards.h @@ -170,12 +170,8 @@ #define BOARD_ID "arduino-nesso-n1" #define USE_LITTLEFS #define USE_STATUS_LED -#ifdef STATUS_LED_PIN -#undef STATUS_LED_PIN -#endif #define STATUS_LED_PIN LED_BUILTIN #define STATUS_LED_INVERTED -#define USE_PSRAM ///< Board has PSRAM, use it for dynamic memory allocation #elif defined(ARDUINO_ADAFRUIT_FEATHER_ESP32C6) #define BOARD_ID "feather-esp32c6" #define USE_LITTLEFS