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