1515#include "esp32-hal-gpio.h"
1616#include "hal/gpio_hal.h"
1717#include "soc/soc_caps.h"
18- #include "pins_arduino.h"
1918
2019// It fixes lack of pin definition for S3 and for any future SoC
2120// this function works for ESP32, ESP32-S2 and ESP32-S3 - including the C3, it will return -1 for any pin
@@ -92,17 +91,13 @@ static InterruptHandle_t __pinInterruptHandlers[SOC_GPIO_PIN_COUNT] = {0,};
9291
9392extern void ARDUINO_ISR_ATTR __pinMode (uint8_t pin , uint8_t mode )
9493{
95- log_d ("pin %d" , pin );
9694#ifdef BOARD_HAS_NEOPIXEL
97- log_d ("BOARD_HAS_NEOPIXEL" );
9895 if (pin == LED_BUILTIN ){
99- log_d ("pin == LED_BUILTIN; call __pinMode(%d)" , NEOPIXEL_PIN );
100- __pinMode (NEOPIXEL_PIN , mode );
96+ __pinMode (LED_BUILTIN - SOC_GPIO_PIN_COUNT , mode );
10197 return ;
10298 }
10399#endif
104100
105- log_d ("Normal operation" );
106101 if (!GPIO_IS_VALID_GPIO (pin )) {
107102 log_e ("Invalid pin selected" );
108103 return ;
@@ -137,26 +132,27 @@ extern void ARDUINO_ISR_ATTR __pinMode(uint8_t pin, uint8_t mode)
137132 }
138133}
139134
135+ #ifdef BOARD_HAS_NEOPIXEL
140136void RGBLedWrite (uint8_t pin , uint8_t red_val , uint8_t green_val , uint8_t blue_val ){
141137 rmt_data_t led_data [24 ];
142138 static rmt_obj_t * rmt_send = NULL ;
143139 static bool initialized = false;
144140
145141 uint8_t _pin ;
146142 if (pin == LED_BUILTIN ){
147- _pin = NEOPIXEL_PIN ;
143+ _pin = LED_BUILTIN - SOC_GPIO_PIN_COUNT ;
148144 }else {
149145 _pin = pin ;
150146 }
151147
152148 if (!initialized ){
153- if ((rmt_send = rmtInit (_pin , RMT_TX_MODE , RMT_MEM_64 )) == NULL ){
149+ if ((rmt_send = rmtInit (_pin , RMT_TX_MODE , RMT_MEM_64 )) == NULL ){
154150 log_e ("RGB LED driver initialization failed!" );
155151 rmt_send = NULL ;
156152 return ;
157- }
158- rmtSetTick (rmt_send , 100 );
159- initialized = true;
153+ }
154+ rmtSetTick (rmt_send , 100 );
155+ initialized = true;
160156 }
161157
162158 int color [] = {green_val , red_val , blue_val }; // Color coding is in order GREEN, RED, BLUE
@@ -181,6 +177,7 @@ void RGBLedWrite(uint8_t pin, uint8_t red_val, uint8_t green_val, uint8_t blue_v
181177 }
182178 rmtWrite (rmt_send , led_data , 24 );
183179}
180+ #endif
184181
185182extern void ARDUINO_ISR_ATTR __digitalWrite (uint8_t pin , uint8_t val )
186183{
0 commit comments