ESP8266 實現一個定時開關功能

@zgcwkj  2021年02月21日

分類:

代碼 其它 

ESP8266 簡簡單單的實現一個定時開關功能(支持多個時間段)

使用到的模塊:

1、NTPClient 庫
2、WiFiManager 庫

核心代碼:

#include <ESP8266WiFi.h>
#include <FS.h>
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include <ESP8266HTTPClient.h>
#include <ESP8266HTTPUpdateServer.h>
#include <WiFiManager.h>
#include <NTPClient.h>
#include <WiFiUdp.h>
#include <Ticker.h>

WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "ntp1.aliyun.com", 60 * 60 * 8, 30 * 60 * 1000);
bool SwitchStatus = false;//開關狀態
String StartTimeData = "00:00:00";//開始時間
String EndTimeData = "00:00:05";//結束時間

void setup() {
  Serial.begin(115200);//配置串口的波特率
  Serial.println("\r\n _ \r\n");//隔開亂碼
  pinMode(D4, OUTPUT);//設置輸出腳
  delay(500);
  digitalWrite(D4, HIGH);
  timeClient.begin();
}

void loop() {
  timeClient.update();
  String dateStr = timeClient.getFormattedTime();
  if (SwitchStatus) {
    if ( EndTimeData.indexOf(dateStr) != -1) {
      ControlSwitch();
    }
  } else {
    if ( StartTimeData.indexOf(dateStr) != -1) {
      ControlSwitch();
    }
  }
}

//控制開關
void ControlSwitch (bool switchStatus) {
  SwitchStatus = switchStatus;
  ControlSwitch ();
}

//控制開關
void ControlSwitch () {
  if (SwitchStatus ) {
    digitalWrite(D4, HIGH);//高電平
  } else {
    digitalWrite(D4, LOW);//底電平
  }
  SwitchStatus = !SwitchStatus;
}

源碼下載:

內容已隱藏,需要評論並且審核通過後,才能閱讀隱藏內容



評論已關閉

Top