fix led not turning off

This commit is contained in:
2026-03-26 21:49:06 -04:00
parent 197f4a640c
commit dc935dd72d
2 changed files with 28 additions and 14 deletions
+8
View File
@@ -18,4 +18,12 @@ menu "Calendink LED Configuration"
default 21
help
GPIO pin for the LED.
config CALENDINK_LED_ACTIVE_LOW
bool "LED is Active Low (0 turns it ON)"
depends on CALENDINK_LED_TYPE_SIMPLE
default y
help
Select this if your LED turns ON when the GPIO is driven low (0V).
Many development boards wire LEDs between VCC and the GPIO pin, making them active low.
endmenu
+20 -14
View File
@@ -15,6 +15,16 @@
#define LED_GPIO (gpio_num_t)CONFIG_CALENDINK_LED_GPIO
#if defined(CONFIG_CALENDINK_LED_TYPE_SIMPLE)
#if defined(CONFIG_CALENDINK_LED_ACTIVE_LOW)
#define SIMPLE_LED_ON 0
#define SIMPLE_LED_OFF 1
#else
#define SIMPLE_LED_ON 1
#define SIMPLE_LED_OFF 0
#endif
#endif
#if defined(CONFIG_CALENDINK_LED_TYPE_STRIP)
internal led_strip_handle_t led_strip;
#endif
@@ -34,25 +44,21 @@ void setup_led(void)
led_strip_new_rmt_device(&strip_config, &rmt_config, &led_strip));
led_strip_clear(led_strip);
led_strip_refresh(led_strip);
#elif defined(CONFIG_CALENDINK_LED_TYPE_SIMPLE)
gpio_reset_pin(LED_GPIO);
gpio_set_direction(LED_GPIO, GPIO_MODE_OUTPUT);
gpio_set_level(LED_GPIO, 0);
gpio_set_level(LED_GPIO, SIMPLE_LED_OFF);
#endif
}
void turn_off_led(void)
{
void turn_off_led(void)
{
#if defined(CONFIG_CALENDINK_LED_TYPE_STRIP)
led_strip_clear(led_strip);
led_strip_clear(led_strip);
led_strip_refresh(led_strip);
#elif defined(CONFIG_CALENDINK_LED_TYPE_SIMPLE)
gpio_set_level(LED_GPIO, 1);
vTaskDelay(pdMS_TO_TICKS(100));
gpio_set_level(LED_GPIO, 0);
vTaskDelay(pdMS_TO_TICKS(100));
gpio_set_level(LED_GPIO, 1);
vTaskDelay(pdMS_TO_TICKS(100));
gpio_set_level(LED_GPIO, 0);
gpio_set_level(LED_GPIO, SIMPLE_LED_OFF);
#endif
}
@@ -88,7 +94,7 @@ void set_led_status(led_status status)
case led_status::ReadyEthernet:
case led_status::ReadyWifi:
case led_status::Failed:
gpio_set_level(LED_GPIO, 1);
gpio_set_level(LED_GPIO, SIMPLE_LED_ON);
break;
}
#endif
@@ -102,14 +108,14 @@ void led_blink_number(int n, uint8_t r, uint8_t g, uint8_t b)
led_strip_set_pixel(led_strip, 0, r, g, b);
led_strip_refresh(led_strip);
#elif defined(CONFIG_CALENDINK_LED_TYPE_SIMPLE)
gpio_set_level(LED_GPIO, 1);
gpio_set_level(LED_GPIO, SIMPLE_LED_ON);
#endif
vTaskDelay(pdMS_TO_TICKS(300));
#if defined(CONFIG_CALENDINK_LED_TYPE_STRIP)
led_strip_clear(led_strip);
led_strip_refresh(led_strip);
#elif defined(CONFIG_CALENDINK_LED_TYPE_SIMPLE)
gpio_set_level(LED_GPIO, 0);
gpio_set_level(LED_GPIO, SIMPLE_LED_OFF);
#endif
vTaskDelay(pdMS_TO_TICKS(300));
}