Arduino UNO DS3231高精度RTC芯片 制作时钟

topic

    • 模块参数:
    • 接线说明(以Arduino uno r3为例):
    • 库文件

Arduino UNO DS3231高精度RTC芯片 制作时钟_第1张图片

模块参数:

  1. 尺寸:38mm(长)*22mm(宽)*14mm(高)
  2. 重量:8g
  3. 工作电压:3.3–5.5V
  4. 时钟芯片:高精度时钟芯片DS3231
  5. 时钟精度:0-40℃范围内,精度2ppm,年误差约1分钟
  6. 带2个日历闹钟
  7. 可编程方波输出
  8. 实时时钟产生秒、分、时、星期、日期、月和年计时,并提供有效期到2100年的闰年补偿
  9. 芯片内部自带温度传感器,精度为±3℃
  10. 存储芯片:AT24C32(存储容量32K)
  11. IIC总线接口,最高传输速度400KHz(工作电压为5V时)
  12. 可级联其它IIC设备,24C32地址可通过短路A0/A1/A2修改,默认地址为0x57
  13. 带电池CR2032,保证系统断电后,时钟任然正常走动

接线说明(以Arduino uno r3为例):

  • SCL→A5
  • SDA→A4
  • VCC→5V
  • GND→GND

库文件

https://github.com/JChristensen/DS3232RTC
https://github.com/SodaqMoja/Sodaq_DS3231

使用 TM1637驱动的LED数码管和DS3231模块做一个简易时钟
TM1637相关库选用了DigitalTube的,DS3231选用了Sodaq的。

代码比较简单。这个LED模块支持亮度设置,挺好的,晚上不会太刺眼。需要说明的是DS3231模块时间校准设置时需要正确构造 DateTime对象。为了尽可能的准确,预留好代码编译和上传的时间。比如,现在是14:58分,预估编译+上传需要10秒钟,那么DateTime可以构造成15:00,并且在14:59:50的时候开始运行。记得该次运行的时候rtc.setDateTime(dt);是不能被注释的。一旦上传成功,就必须把它注释掉并且再次上传,不然Arduino掉电后下次运行还是从15:00开始计时。此外,只要不执行setDateTime,DateTime对象就并不要求给出准确的时间,甚至可以不必定义。

LED的时间分割符控制是通过point方法实现的,参数为true代表显示,为false代表不现实。
Arduino UNO DS3231高精度RTC芯片 制作时钟_第2张图片

#include "TM1637.h"
#include 
#include "Sodaq_DS3231.h"
DateTime dt(2018, 5, 4, 14, 5, 0, 5); // 年 月 日 时 分 秒 星期。周日-周六对应0-6

//pins definitions for TM1637 and can be changed to other ports
#define CLK A0
#define DIO A1
TM1637 tm1637(CLK, DIO);

void setup()
{
  tm1637.init();

  // 设置LED亮度。最暗到最亮 0-7。典型值2。
  tm1637.set(1);

  Wire.begin();
  rtc.begin();

  // 第一次使用时钟模块,或者需要校准时放开下列注释
  // 一旦校准完毕,继续注释掉,并再次上传
  // 定义dt的时候建议预留一些编译和上传的时间
  //rtc.setDateTime(dt);
}

// 时间分隔符闪烁标识
bool ShowPoint = true;

void loop()
{
  DateTime now = rtc.now();

  int h = now.hour();
  int mn = now.minute();

  int b0 = h / 10;
  int b1 = h % 10;

  int b2 = mn / 10;
  int b3 = mn % 10;

  tm1637.point(ShowPoint);
  tm1637.display(0, b0);
  tm1637.display(1, b1);
  tm1637.display(2, b2);
  tm1637.display(3, b3);

  ShowPoint = !ShowPoint;

  delay(1000);

}

这样就实现了一个最简单的只能显示时分的数字钟。显然和市售商品相比,时间校准方式是个可以改进的点。

作者:Ki1381
来源:CSDN
原文:https://blog.csdn.net/ki1381/article/details/80213757
版权声明:本文为博主原创文章,转载请附上博文链接!

你可能感兴趣的:(Arduino,传感器相关)