new module
This commit is contained in:
78
components/led/include/led.h
Executable file
78
components/led/include/led.h
Executable file
@@ -0,0 +1,78 @@
|
||||
#ifndef LED_H_
|
||||
#define LED_H_
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
/**
|
||||
* @brief Identificadores dos LEDs disponíveis no hardware (por cor)
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
LED_ID_GREEN = 0,
|
||||
LED_ID_BLUE,
|
||||
LED_ID_RED,
|
||||
LED_ID_MAX
|
||||
} led_id_t;
|
||||
|
||||
/**
|
||||
* @brief Padrões de comportamento possíveis para os LEDs.
|
||||
*
|
||||
* Estes padrões são usados tanto pela lógica interna (estado EVSE, efeitos
|
||||
* de sessão, etc.) como por código externo que queira forçar um determinado
|
||||
* comportamento num LED.
|
||||
*
|
||||
* Nota:
|
||||
* - LED_PATTERN_BREATHING é implementado por uma task interna (HSV).
|
||||
* - LED_PATTERN_CHARGING_EFFECT é legado/experimental e pode não ser usado
|
||||
* diretamente na implementação atual.
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
LED_PATTERN_OFF, ///< LED sempre desligado
|
||||
LED_PATTERN_ON, ///< LED sempre ligado
|
||||
LED_PATTERN_BLINK, ///< Pisca com ciclo padrão (500ms on / 500ms off)
|
||||
LED_PATTERN_BLINK_FAST, ///< Pisca rápido (250ms on / 250ms off)
|
||||
LED_PATTERN_BLINK_SLOW, ///< Pisca lento (500ms on / 1500ms off)
|
||||
LED_PATTERN_CHARGING_EFFECT, ///< Efeito de carregamento (2s on / 1s off) - legado/opcional
|
||||
LED_PATTERN_BREATHING ///< Efeito "breathing" (brilho suave via HSV)
|
||||
} led_pattern_t;
|
||||
|
||||
/**
|
||||
* @brief Inicializa o subsistema de LEDs com base na configuração da placa.
|
||||
*
|
||||
* - Configura o driver LEDC com os GPIOs definidos em board_config.
|
||||
* - Cria a task de efeitos (para padrões como BREATHING).
|
||||
* - Regista handlers dos eventos EVSE (estado e sessão) para aplicar
|
||||
* padrões automáticos em função do estado do carregador.
|
||||
*
|
||||
* Deve ser chamada uma única vez na inicialização do sistema.
|
||||
*/
|
||||
void led_init(void);
|
||||
|
||||
/**
|
||||
* @brief Define diretamente o tempo ligado/desligado de um LED.
|
||||
*
|
||||
* Esta função permite criar padrões personalizados à parte da tabela
|
||||
* led_pattern_t. Normalmente, código de alto nível deve preferir
|
||||
* led_apply_pattern(), deixando a lógica de tempos a cargo do módulo.
|
||||
*
|
||||
* @param led_id Identificador do LED (ver led_id_t)
|
||||
* @param ontime Tempo ligado em milissegundos (0 = sempre off)
|
||||
* @param offtime Tempo desligado em milissegundos (0 = sempre on)
|
||||
*/
|
||||
void led_set_state(led_id_t led_id, uint16_t ontime, uint16_t offtime);
|
||||
|
||||
/**
|
||||
* @brief Aplica um padrão de piscar/efeito definido ao LED.
|
||||
*
|
||||
* Esta é a API recomendada para controlar LEDs externamente. A implementação
|
||||
* interna do módulo também a usa para reagir a eventos EVSE (estado de
|
||||
* carregamento, início/fim de sessão, etc.).
|
||||
*
|
||||
* @param led_id Identificador do LED (ver led_id_t)
|
||||
* @param pattern Padrão desejado (ver led_pattern_t)
|
||||
*/
|
||||
void led_apply_pattern(led_id_t led_id, led_pattern_t pattern);
|
||||
|
||||
#endif /* LED_H_ */
|
||||
34
components/led/include/ledc_driver.h
Executable file
34
components/led/include/ledc_driver.h
Executable file
@@ -0,0 +1,34 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
#include "esp_err.h"
|
||||
#include "driver/gpio.h"
|
||||
|
||||
/**
|
||||
* @brief Inicializa o controlador LEDC para os 3 LEDs (R,G,B)
|
||||
*
|
||||
* @param gpio_red GPIO ligado ao LED vermelho (via ULN2003)
|
||||
* @param gpio_green GPIO ligado ao LED verde (via ULN2003)
|
||||
* @param gpio_blue GPIO ligado ao LED azul (via ULN2003)
|
||||
*
|
||||
* @return ESP_OK em sucesso, erro caso contrário
|
||||
*/
|
||||
esp_err_t ledc_init(gpio_num_t gpio_red,
|
||||
gpio_num_t gpio_green,
|
||||
gpio_num_t gpio_blue);
|
||||
|
||||
/**
|
||||
* @brief Define a intensidade RGB (0–255 por cor)
|
||||
*
|
||||
* @param red Intensidade do vermelho (0–255)
|
||||
* @param green Intensidade do verde (0–255)
|
||||
* @param blue Intensidade do azul (0–255)
|
||||
*
|
||||
* @return ESP_OK em sucesso, erro caso contrário
|
||||
*/
|
||||
esp_err_t ledc_set_rgb(uint32_t red, uint32_t green, uint32_t blue);
|
||||
|
||||
/**
|
||||
* @brief Desliga todos os LEDs (R,G,B)
|
||||
*/
|
||||
esp_err_t ledc_clear(void);
|
||||
Reference in New Issue
Block a user