基质喷涂
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.

50 lines
1.4 KiB

  1. #include "air_valve.h"
  2. // 初始化 GPIO 引脚
  3. void AirValve::initGPIO() {
  4. __HAL_RCC_GPIOE_CLK_ENABLE();
  5. GPIO_InitTypeDef GPIO_InitStruct = {0};
  6. GPIO_InitStruct.Pin = CLEANING_VALVE_PIN | NOZZLE_VALVE_PIN | DEHUMIDIFICATION_VALVE_PIN;
  7. GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  8. GPIO_InitStruct.Pull = GPIO_NOPULL;
  9. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  10. HAL_GPIO_Init(CLEANING_VALVE_PORT, &GPIO_InitStruct);
  11. // 初始化时关闭所有阀门
  12. closeCleaning();
  13. closeNozzle();
  14. closeDehumidification();
  15. }
  16. // 构造函数,初始化 GPIO 端口和引脚
  17. AirValve::AirValve() = default;
  18. // 打开清洗阀
  19. void AirValve::openCleaning() {
  20. HAL_GPIO_WritePin(CLEANING_VALVE_PORT, CLEANING_VALVE_PIN, GPIO_PIN_RESET);
  21. }
  22. // 关闭清洗阀
  23. void AirValve::closeCleaning() {
  24. HAL_GPIO_WritePin(CLEANING_VALVE_PORT, CLEANING_VALVE_PIN, GPIO_PIN_SET);
  25. }
  26. // 打开喷嘴阀
  27. void AirValve::openNozzle() {
  28. HAL_GPIO_WritePin(NOZZLE_VALVE_PORT, NOZZLE_VALVE_PIN, GPIO_PIN_RESET);
  29. }
  30. // 关闭喷嘴阀
  31. void AirValve::closeNozzle() {
  32. HAL_GPIO_WritePin(NOZZLE_VALVE_PORT, NOZZLE_VALVE_PIN, GPIO_PIN_SET);
  33. }
  34. // 打开除湿阀
  35. void AirValve::openDehumidification() {
  36. HAL_GPIO_WritePin(DEHUMIDIFICATION_VALVE_PORT, DEHUMIDIFICATION_VALVE_PIN, GPIO_PIN_RESET);
  37. }
  38. // 关闭除湿阀
  39. void AirValve::closeDehumidification() {
  40. HAL_GPIO_WritePin(DEHUMIDIFICATION_VALVE_PORT, DEHUMIDIFICATION_VALVE_PIN, GPIO_PIN_SET);
  41. }