#pragma once #include #include "driver/gpio.h" #include "esp_err.h" #ifdef __cplusplus extern "C" { #endif typedef enum { RELAY_CTRL_ID_1 = 0, RELAY_CTRL_ID_2 = 1, RELAY_CTRL_ID_MAX, } relay_ctrl_id_t; /** * @brief 初始化双继电器控制模块。 * * @param relay1_gpio 继电器1控制引脚 * @param relay2_gpio 继电器2控制引脚 * @param active_high 继电器有效电平,true=高电平吸合,false=低电平吸合 */ esp_err_t relay_ctrl_init(gpio_num_t relay1_gpio, gpio_num_t relay2_gpio, bool active_high); /** * @brief 设置指定继电器状态。 * * @param relay_id 继电器编号 * @param on true=吸合,false=断开 */ esp_err_t relay_ctrl_set(relay_ctrl_id_t relay_id, bool on); /** * @brief 翻转指定继电器状态。 */ esp_err_t relay_ctrl_toggle(relay_ctrl_id_t relay_id); /** * @brief 获取指定继电器状态。 * * @param relay_id 继电器编号 * @param on_out [out] 当前逻辑状态,true=吸合,false=断开 */ esp_err_t relay_ctrl_get(relay_ctrl_id_t relay_id, bool *on_out); /** * @brief 一次性设置两个继电器状态。 */ esp_err_t relay_ctrl_set_all(bool relay1_on, bool relay2_on); #ifdef __cplusplus } #endif