42 lines
946 B
C
42 lines
946 B
C
#pragma once
|
|
|
|
#include "esp_err.h"
|
|
#include "driver/gpio.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
typedef enum {
|
|
RELAY_CTRL_ID_1 = 0,
|
|
RELAY_CTRL_ID_2,
|
|
RELAY_CTRL_ID_3,
|
|
RELAY_CTRL_ID_4,
|
|
RELAY_CTRL_ID_MAX
|
|
} relay_ctrl_id_t;
|
|
|
|
/**
|
|
* @brief 继电器配置结构体
|
|
*/
|
|
typedef struct {
|
|
gpio_num_t pin; // GPIO 引脚
|
|
bool active_high; // 该继电器是否为高电平触发
|
|
} relay_config_t;
|
|
|
|
/**
|
|
* @brief 初始化继电器控制模块
|
|
*
|
|
* @param config 包含 4 个继电器详细配置的数组
|
|
* @return esp_err_t
|
|
*/
|
|
esp_err_t relay_ctrl_init(const relay_config_t config[RELAY_CTRL_ID_MAX]);
|
|
|
|
esp_err_t relay_ctrl_set(relay_ctrl_id_t relay_id, bool on);
|
|
esp_err_t relay_ctrl_toggle(relay_ctrl_id_t relay_id);
|
|
esp_err_t relay_ctrl_get(relay_ctrl_id_t relay_id, bool *on_out);
|
|
esp_err_t relay_ctrl_set_all(bool relay1_on, bool relay2_on, bool relay3_on, bool relay4_on);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|