#ifndef __IRRIGATION_H #define __IRRIGATION_H /* Includes ------------------------------------------------------------------*/ #include "main.h" #include "stdint.h" #include "stdio.h" #include "tim.h" // 添加定时器头文件 #include "Save_Time.h" #include "EEPROM.h" #include "Inf_4G.h" /* 类型定义 -----------------------------------------------------------------*/ // 工作模式枚举 // 系统状态枚举 typedef enum { SYS_STATE_STOP = 0, // 系统停止 SYS_STATE_RUNNING // 系统运行 } SystemState; // 风机状态枚举 typedef enum { FAN_1 = 0, // 风机1 FAN_2 // 风机2 } FanState; /* 外部变量声明 -------------------------------------------------------------*/ // 直排模式时间参数 extern uint32_t DIRECT_HIGH_PUMP_ON_TIME; // 高水位水泵开启时间 extern uint32_t DIRECT_HIGH_PUMP_OFF_TIME; // 高水位水泵关闭时间 extern uint32_t DIRECT_HIGH_FAN_ON_TIME; // 高水位风机开启时间 extern uint32_t DIRECT_HIGH_FAN_OFF_TIME; // 高水位风机关闭时间 extern uint32_t DIRECT_LOW_FAN_ON_TIME; // 低水位风机开启时间 extern uint32_t DIRECT_LOW_FAN_OFF_TIME; // 低水位风机关闭时间 extern uint32_t DIRECT_FIRST_LOW_FAN_ON; // 首次低水位风机开启时间 extern uint32_t DIRECT_FIRST_LOW_FAN_OFF; // 首次低水位风机关闭时间 // 冲厕模式时间参数 extern uint32_t FLUSH_HIGH_PUMP_ON_TIME; // 1分钟 extern uint32_t FLUSH_HIGH_PUMP_OFF_TIME; // 150分钟 extern uint32_t FLUSH_HIGH_FAN_ON_TIME; // 40分钟 extern uint32_t FLUSH_HIGH_FAN_OFF_TIME; // 2分钟 extern uint32_t FLUSH_LOW_FAN_ON_TIME; // 5分钟 extern uint32_t FLUSH_LOW_FAN_OFF_TIME; // 25分钟 extern uint32_t FLUSH_FIRST_LOW_FAN_ON; // 40分钟 extern uint32_t FLUSH_FIRST_LOW_FAN_OFF; // 2分钟 //灌溉模式时间参数 extern uint32_t HIGH_LEVEL_PUMP_ON_TIME; // 1分钟 extern uint32_t HIGH_LEVEL_PUMP_OFF_TIME; // 120分钟 extern uint32_t HIGH_LEVEL_FAN_ON_TIME; // 20分钟 extern uint32_t HIGH_LEVEL_FAN_OFF_TIME; // 5分钟 extern uint32_t FIRST_LOW_FAN_ON_TIME; // 10分钟 extern uint32_t FIRST_LOW_FAN_OFF_TIME; // 10分钟 extern uint32_t LOW_LEVEL_FAN_ON_TIME; // 5分钟 extern uint32_t LOW_LEVEL_FAN_OFF_TIME; // 40分钟 extern uint32_t debug_pump_state; // 用于调试的状态变量 // 特殊模式时间参数 // 特殊模式变量 extern uint32_t SPECIAL_INITIAL_STOP_TIME; // 24小时 = 1440分钟 前5分钟 extern uint32_t SPECIAL_FIRST_PHASE_TIME; // 48小时 = 2880分钟 后六分钟 extern uint32_t SPECIAL_PUMP_RUN_TIME; // 前1分钟运行 extern uint32_t SPECIAL_FIRST_STOP_TIME; // 前359分钟停止 extern uint32_t SPECIAL_SECOND_PHASE_TIME; // 48小时 = 2880分钟 extern uint32_t SPECIAL_SECOND_STOP_TIME; // 239分钟停止 // 计时器变量 extern uint32_t pump_timer; // 水泵计时器 extern uint32_t fan_timer; // 风机计时器 extern uint32_t first_low_timer; // 首次低液位计时器 // 参数修改标志 extern uint8_t parameters_changed; // 强制控制标志 extern uint8_t force_pump_off; // 强制关闭水泵 extern uint8_t force_fan_off; // 强制关闭风机 extern uint8_t is_first_low; extern volatile uint8_t time_just_modified; //模式参数 // 当前工作模式 typedef enum { MODE_NONE = 0, // 无模式/未初始化 MODE_FLUSH = 1, // 直排模式 MODE_IRRIGATION = 2, // 灌溉模式 MODE_DIRECT = 3, // 冲厕模式 MODE_SPECIAL = 4 // 特殊模式/培菌模式 } WorkMode; extern WorkMode current_mode; // 当前工作模式 //特殊阶段时间参数 extern uint32_t special_phase_timer ; // 阶段计时器 extern uint32_t special_cycle_timer; // 循环计时器 /* 函数声明 ----------------------------------------------------------------*/ // 设备控制函数(这些函数需要在其他地方实现) void Control_WaterPump(uint8_t state); void Control_Fan1(uint8_t state); void Control_Fan2(uint8_t state); uint8_t Read_FloatBall(void); // 应用层函数 void Device_Init(void); // 设备初始化 uint8_t Read_FloatBall_Stable(void); // 读取浮球状态(带防抖) void Direct_Mode_Control(void); // 直排模式控制 void Irrigation_Mode_Control(void); // 灌溉模式控制 void Flush_Mode_Control(void); // 冲洗模式控制 void Special_Mode_Control(void); // 特殊模式控制 //特殊模式 typedef enum { SPECIAL_INITIAL_STOP = 0, // 初始阶段:24小时停止 SPECIAL_FIRST_PHASE = 1, // 第一阶段:48小时,6小时循环 SPECIAL_SECOND_PHASE = 2, // 第二阶段:48小时,4小时循环 SPECIAL_TO_DIRECT = 3 // 特殊模式结束,切换到直排模式 } SpecialPhase_t; extern SpecialPhase_t special_phase; void Switch_To_Special_Mode(void); // 切换到特殊模式 void Switch_Mode(WorkMode new_mode); void Restart_Current_Mode(void); extern volatile uint8_t timer_pause; // 计时器暂停标志 #endif /* __APP_WORK_H */