找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 983|回复: 6
打印 上一主题 下一主题
收起左侧

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
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1110477 发表于 2025-2-25 05:49 | 只看该作者
这个好,只要改个网络名字和密码
回复

使用道具 举报

板凳
ID:1110792 发表于 2025-3-3 21:23 | 只看该作者
不错,清晰明了。
回复

使用道具 举报

地板
ID:469589 发表于 2025-5-9 18:43 | 只看该作者
我编译后提示找不到<ESPAsyncUDP.h>库,
回复

使用道具 举报

5#
ID:469589 发表于 2025-5-9 18:43 | 只看该作者
本帖最后由 GlenXu 于 2025-5-12 08:22 编辑

请问如何处理?安装了 syncUDP.h 还是不行。
回复

使用道具 举报

6#
ID:1146947 发表于 2025-5-12 17:13 | 只看该作者
请问,可以显示星期几吗?我的总是缺少汉字汉字,显示不了“星期“
回复

使用道具 举报

7#
ID:88256 发表于 2025-5-12 21:00 | 只看该作者
发表于 2025-5-12 17:13
请问,可以显示星期几吗?我的总是缺少汉字汉字,显示不了“星期“

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表