本贴讲解下实时时钟功能,即RTClock库应用,例子中先设置一个Unix时间戳,由此可以获取到:(点击跳转)http://tool.chinaz.com/Tools/unixtime.aspx; 然后每秒获取一次时间,就是当前的时间。同时rtc可以设置一个中断,本例设置一个一秒的中断任务:改变LED当前的状态,实现闪烁。 代码如下:
/**********************************************************
* 文件: rtc-test.ino by 零知实验室([url=http://www.lingzhilab.com]www.lingzhilab.com[/url])
* -^^- 零知开源,让电子制作变得更简单! -^^-
* 时间: 2018/12/08 10:13
* 说明:
************************************************************/
#include <RTClock.h>
RTClock rtc(RTCSEL_LSI);
int led_state = 0;
void blink_led()
{
led_state = 1 - led_state;
digitalWrite(LED_BUILTIN, led_state);
}
// 复位或上电后运行一次:
void setup() {
//在这里加入初始化相关代码,只运行一次:
pinMode(LED_BUILTIN, OUTPUT);
time_t current_unix_time = 1544235300; //current unitx time,
//you can get from :[url=http://tool.chinaz.com/Tools/unixtime.aspx]http://tool.chinaz.com/Tools/unixtime.aspx[/url]
time_t local_unix_time = rtc.TimeZone(current_unix_time,8);//BeiJing + 8
rtc.setTime(local_unix_time);
//interrupt
rtc.attachSecondsInterrupt(blink_led);
Serial.begin(9600);
}
//一直循环执行:
void loop() {
// 在这里加入主要程序代码,重复执行:
//计算的是从1970-1-1 0:0:0,本地时间需要转换
Serial.print("time:");
Serial.print(rtc.year()+1970);Serial.print("-");
Serial.print(rtc.month());Serial.print("-");
Serial.print(rtc.day());Serial.print(" ");
Serial.print(rtc.hour());Serial.print(":");
Serial.print(rtc.minute());Serial.print(":");
Serial.print(rtc.second());
Serial.println();
delay(1000);
}
(注意:当地的时区,例子中是北京时区)
运行后,可以获取到当前的时间了,由此可以做一些时间相关的电子作品了。