基质喷涂
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

64 lines
1.3 KiB

  1. #ifndef THREE_WAY_VALVE_H
  2. #define THREE_WAY_VALVE_H
  3. #include <stm32f4xx_hal.h>
  4. // 定义三通阀控制和检测相关的引脚
  5. #define POWER_OUT_PIN GPIO_PIN_4 // 三通阀供电
  6. #define POWER_OUT_PORT GPIOE
  7. #define VT_OUT_PIN GPIO_PIN_11 // 三通阀 VT 管脚
  8. #define VT_OUT_PORT GPIOE
  9. #define INT_1_PIN GPIO_PIN_9 // 对应三通阀 OUT1
  10. #define INT_1_PORT GPIOF
  11. #define INT_2_PIN GPIO_PIN_10 // 对应三通阀 OUT2
  12. #define INT_2_PORT GPIOF
  13. #define READ_FLIP 0 // read 电平反转
  14. /**
  15. *
  16. * VT H ON_C
  17. * VT L OFF_C
  18. *
  19. *
  20. * INT_2 INT_1
  21. * L H ON_C
  22. * H L OFF_C
  23. */
  24. class ThreeWayValve {
  25. public:
  26. enum ValveMode {
  27. ON_C = 0x00, // ON 连通 上电
  28. OFF_C = 0x01, // OFF 连通 断电
  29. ON_OFF_NC = 0x02 // ON OFF 关闭
  30. };
  31. ThreeWayValve();
  32. // 初始化 GPIO 引脚
  33. void initGPIO();
  34. // 设置模式
  35. void setMode(ValveMode mode);
  36. // 获取模式
  37. ValveMode getMode();
  38. void powerOn();
  39. void powerOff();
  40. private:
  41. // 设置 触发电压使能
  42. void setVtEnable(bool enable);
  43. // true 高电平 false 低电平
  44. bool getVOUT1State();
  45. // true 高电平 false 低电平
  46. bool getVOUT2State();
  47. };
  48. #endif // THREE_WAY_VALVE_H