数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 44417|回复: 11

[综合] ESP8266时钟加入DS3231

[复制链接]
发表于 2021-3-19 09:10:54 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
小白一个,跪求大佬指点。
8266+TM1637的时钟,想加入一个DS3231,让时钟掉电或断网继续走时,还请大佬不吝赐教,谢谢!

下面是时钟代码,代码来自度娘。


#include <ESP8266WiFi.h>
#include <time.h>
#include <TM1637Display.h>
//needed for library
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include <WiFiManager.h>         //https://github.com/tzapu/WiFiManager


// NTP Config
int timezone = 8 * 3600;
int dst = 0;

// Module connection pins (Digital Pins)
#define CLK D5
#define DIO D7
#define TEST_DELAY   2000

const uint8_t SEG_CONN[] = {
  SEG_A | SEG_D | SEG_E | SEG_F,                   // C
  SEG_C | SEG_D | SEG_E | SEG_G,                   // o
  SEG_C | SEG_E | SEG_G,                           // n
  SEG_C | SEG_E | SEG_G                            // n
};

const uint8_t SEG_PASS[] = {
  SEG_A | SEG_B | SEG_E | SEG_F | SEG_G,           // P
  SEG_A | SEG_B | SEG_C | SEG_E | SEG_F | SEG_G,   // A
  SEG_A | SEG_C | SEG_D | SEG_F | SEG_G,           // S
  SEG_A | SEG_C | SEG_D | SEG_F | SEG_G            // S
};

const uint8_t SEG_FAIL[] = {
  SEG_A | SEG_E | SEG_F | SEG_G,                   // F
  SEG_A | SEG_B | SEG_C | SEG_E | SEG_F | SEG_G,   // A
  SEG_F | SEG_G,                                   // I
  SEG_D | SEG_F | SEG_G                            // L
};

const uint8_t SEG_DONE[] = {
  SEG_B | SEG_C | SEG_D | SEG_E | SEG_G,           // d
  SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F,   // O
  SEG_C | SEG_E | SEG_G,                           // n
  SEG_A | SEG_D | SEG_E | SEG_F | SEG_G            // E
};

TM1637Display display(CLK, DIO);

String lastTimeStr;
unsigned long lastShowColon = 0;
bool showColon = false;
bool hourcheck = false;

void setup()
{
  display.setBrightness(0x01);// 0x01~0x0e
  WiFiManager wifiManager;
  wifiManager.autoConnect("ClockAP");

  display.setSegments(SEG_CONN);
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
  }
  display.setSegments(SEG_PASS);
  delay(1000);

  // Get time from NTP server
  configTime(timezone, dst, "ntp1.aliyun.com");
  while (!time(nullptr))
  {
    delay(500);
  }
  display.setSegments(SEG_DONE);
  delay(1000);
}

void loop()
{
  uint8_t hour;
  bool hourcheck;
  time_t now = time(nullptr);
  struct tm* p_tm = localtime(&now);

  hour = p_tm->tm_hour;

  if (hour < 1)
  {
    hourcheck = true;
  }
  else
  {
    hourcheck = false;
  }
  if ((p_tm->tm_sec % 2) == 0)
  {
    display.showNumberDecEx(hour * 100 + p_tm->tm_min, 0x40 , hourcheck);
  }
  else
  {
    display.showNumberDecEx(hour * 100 + p_tm->tm_min, 0x00, hourcheck );
  }
}

 楼主| 发表于 2021-3-19 11:53:40 | 显示全部楼层
wachenng 发表于 2021-3-19 11:07
楼上说的对,首先是时间变量
int ds_hour, ds_min, ds_sec , sec;
int minute1, minute2, hour1, hour2;

真是的不懂,能不能帮忙整理一下,万分感谢!!!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-19 16:36:30 | 显示全部楼层
触景情伤 发表于 2021-3-19 16:06
还是加上这个功能比较好,掉网了也可以用

是的,我现在的就是没网不能用了
所以想求大佬帮忙搞个能断网使用的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-22 08:19:59 | 显示全部楼层
刚刚认识arduino,目前还是伸手党,试着拼了,但是都失败了,所以来求大佬
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-27 14:46:38 | 显示全部楼层
没有大佬愿意帮忙吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-7-21 04:18 , Processed in 0.249600 second(s), 12 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

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