相关商品
相关文章
- 【奥松新品】首款带车轮Arduino控制板亮相——Arduino Robot
- 【奥松新品】Arduino极客爱:全新无线Linux板–Arduino Yun
- 【奥松新品】Arduino家族新宠儿——以ARM为核心的Arduino Due
- 【奥松新品】基于Arduino、ADXL335与APC220的无线遥控器
- 【奥松新品】源自Sparkfun——MP3 Player Shield评测
- 【奥松新品】MEAS压电式震动传感器测评
- 【奥松新品】基于Arduino的触摸式变色台灯
- 【奥松新品】集成了Arduino控制器的Ethernet评测
- 【奥松新品】Pololu Zumo Arduino履带相扑机器人测评(上)
- 【奥松新品】AS-6DOFB六自由度机械臂玩家测评
- 【奥松新品】Pololu Zumo Arduino履带相扑机器人测评(下)
- 【新书】Raspberry Pi快速入门指南姊妹图书Python编程入门
- 【奥松新品】Zumo Robot Kit for Arduino零部件实测
- 【奥松新品】Simulator for Arduino 模拟器使用评测
- 【新书】《Arduino机器人制作指南》助你圆梦
- 【新书】《Arduino机器人权威指南》于欣龙译著重磅发行
- 【新书】《爱上机器人:学Arduino玩转机器人制作》
- 【奥松新品】源自Sparkfun——SOUND DETECTOR声音检测传感器评测
- 【新书】Arduino魔法书 实现梦想的工具和技术
- 【奥松新品】水蒸气传感器,打造属于你的“晴雨表”
- 【奥松新品】小身体,大数据——模拟声音传感器
- 【奥松新品】Speaker发声模块——打造自己的音乐盒
- 【奥松新品】条形LED模块——制作光线强度指示灯
- 【奥松新品】TEMT6000光敏传感器——感光灯制作
- 【奥松新品】可调微型直流潜水泵
- 【新书】《Arduino制作手册》于欣龙推荐
- 【新书】《Arduino 完全实战》经典之作,奥松创始人于欣龙推荐!
- 【好书推荐】《Arduino从基础到实践》手把手50个案例教你玩转Arduino
- 【新讯快递】Arduino UNO控制器的新小伙伴 小奥与你深扒Arduino UNO背后的秘密
- 【奥松新品】四位七段数码管——制作时钟
- 【产品测评】基于 ADXL345 三轴加速度计的角度测试仪
- 【产品测评】LCD12864 液晶摇杆扩展板之贪吃蛇游戏
- 【产品测评】Make Sensor 传感器实战攻略
- 【产品测评】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(讨论,解惑)
微博:@奥松机器人基地
----------------------------------------------------------------------------------------------------------------
温馨提示:予人玫瑰,手留余香;如果你喜欢这篇文章,不妨转发推荐给你身边的朋友!
用户评价
暂时还没有任何用户评论