sketch_sep25a.ino 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #include "WiFiConfigurator.h"
  2. #include "NtcThermistor.h"
  3. #include "RelayController.h"
  4. #include <WiFi.h>
  5. // 引脚定义
  6. const int slowLedPin = 19; // 慢闪LED
  7. const int fastLedPin = 20; // 快闪LED
  8. const int configButtonPin = 21; // 配置按钮
  9. // NTC温度传感器引脚
  10. const int ntcPin1 = 2; // GPIO2
  11. const int ntcPin2 = 3; // GPIO3
  12. const int ntcPin3 = 6; // GPIO6
  13. // 继电器引脚
  14. const int relayPin22 = 22; //继电器使用GPIO22
  15. const int relayPin23 = 23; //继电器使用GPIO23
  16. const int relayPin4 = 4; // 定时继电器使用GPIO4
  17. // 热点配置
  18. const char* ap_ssid = "ESP32-C6-配置";
  19. const char* ap_password = "12345678";
  20. // 创建实例
  21. WiFiConfigurator wifiConfig(slowLedPin, fastLedPin, configButtonPin, ap_ssid, ap_password);
  22. NtcThermistor ntcSensor(ntcPin1, ntcPin2, ntcPin3);
  23. RelayController relays(relayPin22, relayPin23, relayPin4);
  24. // 更新间隔
  25. unsigned long lastUpdate = 0;
  26. const unsigned long updateInterval = 1000; // 1秒更新一次
  27. void setup() {
  28. Serial.begin(115200);
  29. Serial.println("系统启动中...");
  30. // 初始化组件
  31. wifiConfig.begin();
  32. relays.begin(); // 初始化继电器为高阻态,记录开机时间
  33. Serial.println("系统启动完成(支持无WiFi运行)");
  34. }
  35. void loop() {
  36. // 处理WiFi配置(即使WiFi未连接也继续运行)
  37. wifiConfig.loop();
  38. // 定期更新
  39. unsigned long currentMillis = millis();
  40. if (currentMillis - lastUpdate >= updateInterval) {
  41. lastUpdate = currentMillis;
  42. // 尝试同步时间(仅在WiFi可用时有效,失败不影响其他功能)
  43. relays.updateNtpTime();
  44. // 更新温度
  45. ntcSensor.updateTemperatures();
  46. // 打印状态信息
  47. Serial.print("运行时间: ");
  48. Serial.print((currentMillis - relays.getPowerOnTime())/1000);
  49. Serial.print("秒, 当前小时: ");
  50. Serial.print(relays.getCurrentHour());
  51. Serial.print(", 温度 - GPIO2: ");
  52. Serial.print(ntcSensor.getTemperature1String());
  53. Serial.print(", GPIO3: ");
  54. Serial.print(ntcSensor.getTemperature2String());
  55. Serial.print(", GPIO6: ");
  56. Serial.println(ntcSensor.getTemperature3String());
  57. // 获取温度值并控制继电器
  58. float tempGpio2 = ntcSensor.getTemperature1();
  59. float tempGpio3 = ntcSensor.getTemperature2();
  60. float tempGpio6 = ntcSensor.getTemperature3();
  61. relays.controlByTempConditions(tempGpio2, tempGpio3, tempGpio6);
  62. relays.handleTimedTasks(tempGpio6);
  63. }
  64. }