标题: ESP8266网络时钟+定时功能 [打印本页]

作者: 幽谷草129    时间: 2025-2-13 10:21
标题: ESP8266网络时钟+定时功能
#include <ESP8266WiFi.h>
#include <TimeLib.h>
#include <NtpClientLib.h>
#include <U8g2lib.h>
#include <Wire.h>
#include <SimpleTimer.h>

int8_t timeZone = 8;
const PROGMEM char *ntpServer = "ntp1.aliyuncom";
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);
SimpleTimer timer;

void Simple_timer_1() {
  u8g2.firstPage();
  do
  {
    page1();
  }while(u8g2.nextPage());
}

void page1() {
  u8g2.setFont(u8g2_font_timR14_tf);
  u8g2.setFontPosTop();
  u8g2.setCursor(0,0);
  u8g2.print(String(NTP.getDateYear()) + String("-") + String(((NTP.getDateMonth() < 10)?String("0") + String(NTP.getDateMonth()):((String)(NTP.getDateMonth())))) + String("-") + String(((NTP.getDateDay() < 10)?String("0") + String(NTP.getDateDay()):((String)(NTP.getDateDay())))));
  u8g2.setFont(u8g2_font_timR24_tf);
  u8g2.setFontPosTop();
  u8g2.setCursor(0,30);
  u8g2.print(String(((NTP.getTimeHour24() < 10)?String("0") + String(NTP.getTimeHour24()):((String)(NTP.getTimeHour24())))) + String(":") + String(((NTP.getTimeMinute() < 10)?String("0") + String(NTP.getTimeMinute()):((String)(NTP.getTimeMinute())))) + String(":") + String(((NTP.getTimeSecond() < 10)?String("0") + String(NTP.getTimeSecond()):((String)(NTP.getTimeSecond())))));
}

void setup(){
  WiFi.begin("LXGX10Y", "88888888");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("Local IP:");
  Serial.print(WiFi.localIP());

  NTP.setInterval (600);
  NTP.setNTPTimeout (1500);
  NTP.begin (ntpServer, timeZone, false);
  u8g2.setI2CAddress(0x3C*2);
  u8g2.begin();
  timer.setInterval(1000L, Simple_timer_1);

  u8g2.enableUTF8Print();

  pinMode(14, OUTPUT);
  Serial.begin(9600);
}

void loop(){
  timer.run();

  if (NTP.getTimeHour24() >= (10 && NTP.getTimeMinute() >= 33) && (NTP.getTimeHour24() <= 14 && NTP.getTimeMinute() < 02)) {
    digitalWrite(14,HIGH);

  } else {
    digitalWrite(14,LOW);

  }

  Serial.print(NTP.getDateYear());
  Serial.print("-");
  Serial.print(NTP.getDateMonth());
  Serial.print("-");
  Serial.println(NTP.getDateDay());
  Serial.print(NTP.getTimeHour24());
  Serial.print(":");
  Serial.print(NTP.getTimeMinute());
  Serial.print(":");
  Serial.println(NTP.getTimeSecond());
  delay(1000);

}

51hei图片_20250213101952.jpg (281.04 KB, 下载次数: 0)

51hei图片_20250213101952.jpg

作者: keemee    时间: 2025-2-25 05:49
这个好,只要改个网络名字和密码
作者: ly_zhy    时间: 2025-3-3 21:23
不错,清晰明了。
作者: GlenXu    时间: 2025-5-9 18:43
我编译后提示找不到<ESPAsyncUDP.h>库,
作者: GlenXu    时间: 2025-5-9 18:43
本帖最后由 GlenXu 于 2025-5-12 08:22 编辑

请问如何处理?安装了 syncUDP.h 还是不行。
作者: 13681551388    时间: 2025-5-12 17:13
请问,可以显示星期几吗?我的总是缺少汉字汉字,显示不了“星期“

作者: hhdsdy    时间: 2025-5-12 21:00
发表于 2025-5-12 17:13
请问,可以显示星期几吗?我的总是缺少汉字汉字,显示不了“星期“

肯定可以的,只是大部分的显示屏都不带字库,但因为需要显示的汉字很少,所以基本上都是进行汉字取模然后和程序保存在一起,再按需要读取送显示。
汉字显示在购买OLED显示屏送的测试程序里都有,只要读懂原程序和测试程序,就可以在原程序上加上汉字显示了。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1