零知平台-RTC实时时钟使用实例

代码

本贴讲解下实时时钟功能,即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);
	}				
						

(注意:当地的时区,例子中是北京时区)

运行后,可以获取到当前的时间了,由此可以做一些时间相关的电子作品了。