相关商品

  • Arduino Leonardo 莱昂纳多控制器 原装进口
  • 1602液晶扩展板 v2.0 Arduino LCD 1602 Keypad Shield
  • USB接口连接线 USB转TTL Arduino 数据下载线 USB cable for Arduino
  • Arduino实验连接线 进口优质彩色单芯杜邦线(20CM)单片机
  • Arduino 8位静态数码管 扫描显示器 SPI LED 数码管 扩展显示模块
  • 1602液晶显示器 蓝白屏 LCD1602液晶Arduino互动界面 机器人配件
  • Arduino LCD12864 点阵液晶扩展板 12864液晶屏 送Arduino库文件
  • Arduino IIC/I2C LCD1602 字符液晶显示器 送库文件 电子积木
  • Arduino Serial LCD1602 字符液晶显示器 串行液晶 电子积木
  • Arduino UNO R3 控制器 ATmega328P-PU+ATmega16U2 arduino 原装进口
  • 原装进口 Arduino Mega ADK 2560 开发板 Arduino uno R3 控制器
  • 奥松机器人 Arduino UNO R3 V5.0传感器扩展板 电子积木 正品保障 传感器套件专配 单片机开发
  • 奥松机器人 传感器连接线 防插反接口 杜邦线  Arduino 正品保证
  • Arduino 通用传感器连接线 4P杜邦连接线 25cm长 超声波传感器线
  • Arduino实验连接线 20P杜邦线 单片机
  • Arduino Yun Arduino官方原装 Arduino Yún WiFi Linux
  • LCD2004字符液晶显示器 2004液晶屏 Arduino力荐显示 超越LCD1602
  • Arduino IIC LCD2004 I2C接口字符液晶显示器 带库文件 电子积木
  • Arduino Mini 05 Sparkfun原装进口 ATmega328 控制器
  • Arduino UNO R3 SMD 控制器 ATmega16U2 开发版 单片机 sparkfun原装进口
  • Starduino UNO R3 控制器 ATmega328P-PU+ATmega32U2 (直插) 兼容Arduino
  • Arduino M0 Pro 电路板 ATSAMD21G18 Arduino UNO 升级 原装
  • Arduino uno 配套 传感器扩展板 Arduino XBee Sensor Shield
  • 原装进口 Arduino M0 开发板 ATSAMD21G1 ARM 控制器 A000103
  • 原装进口 Arduino Mega 2560 控制器板 Arduino uno升级 A000067
  • 原装 Arduino UNO R3 控制器 ATmega328 单片机 官方中文版
  • Arduino UNO WiFi 控制器 ATmega328 ESP8266wifi无线模块开发板
  • Arduino四位七段数码管 LED数码管 4位共阳数码管 显示屏模块
  • Arduino兼容 RTC时钟传感器 IIC时钟模块 DS1307时钟模块 RTC模块
  • 相关文章

    当前位置: 首页 > 产品评测 > 【产品测评】RTC Module 制作电子时钟

    【产品测评】RTC Module 制作电子时钟

    编辑:neil2016-10-09 浏览次数:1365

    Arduino 可以不连接其他硬件使用时钟和日期功能,这是使用了 Arduino 板子自带的晶振,再配合上Arduino的Time函数库,这可以精确到每天只有几秒的误差。但是这样做有一个弊端,就是当你断开了Arduino的电源时,因为Arduino并没有电池,所以无法将时间保存起来,每次执行时,都会从程序设定的时间开始,所以为了时间的准确,必须每次自行设定时间。RTC时钟模块可以解决这个问题, 它使用DS1307作为时钟芯片, 时钟频率为32.768Khz,IIC接口设计,节约Arduino控制器引脚,只需要占用两个控制器的数据引脚就可以控制,RTC Module可安装一个3V CR1220纽扣电池,当Arduino断电后,RTC模块还保持供电,可以继续记录时间,这样就不需要每次校对时间。

    接下来我们就开始制作电子时钟

    首先,准备要使用到的硬件

    * Carduino UNO R3 控制器 * 1个

    * 传感器扩展板 V5.0 * 1个

    * USB 数据下载线 * 1 条

    * RTC Module 模块 * 1 个

    * 四位七段数码管模块 * 1 个

    * 传感器连接线 * 若干

    如下图所示,连接所有的硬件设备,传感器与传感器扩展板V5.0连接非常方便,只需要使用杜邦线连接相应引脚即可,传感器扩展板使用了防呆设计,信号S、电源正、电源负,分别使用黄色、红色、黑色排针区分开。


    硬件连接无误情况下,我们就可以给控制器上传程序,程序如下所示,程序中会用到函数库,是你在编译和上传程序之前必须要安装的,否则会出现编译出错的情况,程序源文件及程序代码可以从文章底部的链接中下载。

    #include <TimerOne.h>

    #include "TM1637.h"

    #include <Wire.h>

    #include "RTClib.h"

    #define ON 1

    #define OFF 0

    #if defined(ARDUINO_ARCH_SAMD)

    #define Serial SerialUSB

    #endif

     

    RTC_DS1307 rtc;

     

    int8_t TimeDisp[] = {0x00,0x00,0x00,0x00};

    unsigned char ClockPoint = 1;

    unsigned char Update;

    unsigned char minute = 0;

    unsigned char hour = 12;

    int stem,val;

     

    #define CLK 5

    #define DIO 4

    TM1637 tm1637(CLK,DIO);

     

    void setup()

    {

      tm1637.set();

      tm1637.init();

      Timer1.initialize(500000);

      Timer1.attachInterrupt(TimingISR);

      #ifndef ESP8266

      while (!Serial);

      #endif

      Serial.begin(57600);

      if (! rtc.begin()) {

        Serial.println("Couldn't find RTC");

        while (1);

      }

      if (! rtc.isrunning()) {

        Serial.println("RTC is running!");

         rtc.adjust(DateTime(2016, 7, 27, 11,16, 00)); // 设置初始时间和日期

      }

    }

    void loop()

    {

      DateTime now = rtc.now();  

      if(Update == ON)

      {  

        TimeUpdate();

        tm1637.display(TimeDisp);

      }

        stem = now.hour();

        val = now.minute();

    }

     

    void TimingISR()

    {

        ClockPoint = (~ClockPoint) & 0x01;

        Update = ON;

    }

    void TimeUpdate(void)

    {

      if(ClockPoint)tm1637.point(POINT_ON);

      else tm1637.point(POINT_OFF);

      TimeDisp[0] = stem/ 10;

      TimeDisp[1] = stem % 10;

      TimeDisp[2] = val / 10;

      TimeDisp[3] = val % 10;

    }

    注意:通过修改时间和日期可以设置模块的初始状态,如果给模块安装上3V电池,模块在断电后就会继续计时,下次再通电使用时,显示的会是正确的系统时间,无需再次初始化。

    程序效果

    如图所示,为程序上传后的效果,数码管会显示当前时间,图中所示时间为11时16分

    总结

    虽然Arduino是有时钟功能的,但是断电不能保存,RTC模块完美解决了这个问题,本实验中,使用了4位数码管显示,所以不能将现在是多少秒,或者现在的日期显示出来,我们可以换用 SPI 8位数码管显示模块,再制作一个精美的外壳,就可以制作属于自己的电子时钟了,快来试一下吧。、

    注意此程序需要使用到库文件,大家可以点击此处,进入奥松机器人官方技术论坛进行下载。


    ----------------------------------------------------------------------------------------------------------------

    奥松机器人官网:www.robotbase.cn

    微信号:搜索公众号“奥松机器人”

    QQ群: 271230889(讨论,解惑)

    微博:@奥松机器人基地

    ----------------------------------------------------------------------------------------------------------------

    温馨提示:予人玫瑰,手留余香;如果你喜欢这篇文章,不妨转发推荐给你身边的朋友!

    • 用户评价

    暂时还没有任何用户评论

    总计 0 个记录,共 1 页。 第一页 上一页 下一页 最末页
    用户名: 匿名用户
    E-mail:
    评价等级:
    评论内容:
    验证码:
    captcha

    Hi,大家好,我是小奥!

    欢迎来到奥松机器人的世界!

    需要咨询服务请点小奥哦!

    • 销售咨询: 销售咨询
    • 销售咨询: 销售咨询
    • 技术支持: 技术支持
    • 咨询电话:
      0451-86628691
    Top