Real-Time Clock (RTC)

This library allows users to get a clock after setting the year, month, date, hour, minutes, and seconds. The specified function can be called by setting the alarm feature. To use this library, describe #include <RLduino78_RTC.h>

rtc_init

Description

Initialize RTC.

Syntax

int rtc_init()

Parameters

None

Returns

0: False, 1: Success, 2: Already initialized

rtc_deinit

Description

Stop RTC.

Syntax

int rtc_deinit()

Parameters

None

Returns

0: False, 1: Success

rtc_set_time

Description

Set a start time.

Syntax

int rtc_set_time(RTC_TIMETYPE *time)

Parameters

time: Specify the RTC_TIMETYPE structure for setting a time (Note)

Returns

0: False, 1: Success

Note

Refer to the sample program for setting a time.

rtc_get_time

Description

Get a current time.

Syntax

int rtc_get_time(RTC_TIMETYPE *time)

Parameters

time: Specify the RTC_TIMETYP structure for storing a time.

Returns

0: False, 1: Success

rtc_attach_alarm_handler

Description

Register a function when an alarm occurs.

Syntax

rtc_attach_alarm_handler(void(*)(void) function)

Parameters

function: Function to be called when an alarm occurs

Returns

None

rtc_set_alarm_time

Description

Set an alarm time.

Syntax

int rtc_set_alarm_time (int hour, int min, int week_flag)

Parameters

hour: Hour
min: Minute
week_flag: Week(specify multiple flags by using OR)

Returns

0: False, 1: Success

rtc_alarm_on

Description

Set alarm on.

Syntax

rtc_alarm_on()

Parameters

None

Returns

None

rtc_alarm_off

Description

Set alarm off

Syntax

rtc_alarm_off()

Parameters

None

Returns

None

Macro Definition

Week for Setting Time

RTC_WEEK_SUNDAY: 0x00
RTC_WEEK_MONDAY: 0x01
RTC_WEEK_TUESDAY: 0x02
RTC_WEEK_WEDNESDAY: 0x03
RTC_WEEK_THURSDAY: 0x04
RTC_WEEK_FRIDAY: 0x05
RTC_WEEK_SATURDAY: 0x06

Week for Setting Alarm

RTC_ALARM_SUNDAY: 0x01
RTC_ALARM_MONDAY: 0x02
RTC_ALARM_TUESDAY: 0x04
RTC_ALARM_WEDNESDAY: 0x08
RTC_ALARM_THURSDAY: 0x10
RTC_ALARM_FRIDAY: 0x20
RTC_ALARM_SATURDAY: 0x40
RTC_ALARM_EVERYDAY: All of the above OR

rtc_attach_constant_period_interrupt_handler

Description

Register a function that operates periodically.

Syntax

rtc_attach_constant_period_interrupt_handler(function)

Parameters

function: A function to be called periodically

Returns

None

rtc_set_constant_period_interrupt_time

Description

Specify the periodic interval.

Syntax

int rtc_set_constant_period_interrupt_time(period);

Parameters

period:
RTC_CONSTANT_PERIOD_TIME_NONE : No period
RTC_CONSTANT_PERIOD_TIME_HALFSECOND : 0.5 sec
RTC_CONSTANT_PERIOD_TIME_1SECOND : 1 sec (default)
RTC_CONSTANT_PERIOD_TIME_1MINUTE : 1 min
RTC_CONSTANT_PERIOD_TIME_1HOUR : 1 hour
RTC_CONSTANT_PERIOD_TIME_1DAY : 1 day
RTC_CONSTANT_PERIOD_TIME_1MONTH : 1 week

Returns

None

rtc_constant_period_interrupt_on

Description

Set a periodic function on.

Syntax

rtc_constant_period_interrupt_on()

Parameters

None

Returns

None

rtc_constant_period_interrupt_off

Description

Set a periodic function off.

Syntax

rtc_constant_period_interrupt_off()

Parameters

None

Returns

None


Example

This example shows a program for setting a time and alarm. Time and alarm notification is output via serial communication.


        #include <Arduino.h>
        #include <RLduino78_RTC.h>
         
        void alarm_handler();
        RTC_TIMETYPE t;
         
        void setup()
        {
          Serial.begin(9600);
          int err = rtc_init();
         
          t.year    = 13;
          t.mon     = 2;
          t.day     = 28;
          t.weekday = RTC_WEEK_THURSDAY;
          t.hour    = 9;
          t.min     = 40;
          t.second  = 0;
         
          err = rtc_set_time(&t);
          rtc_attach_alarm_handler(alarm_handler);
          err = rtc_set_alarm_time(t.hour, t.min + 1);
         
        }
         
        void loop()
        {
          int err;
          err =     err = rtc_get_time(&t);
           
          Serial.print(t.year, DEC);Serial.print("/");
          Serial.print(t.mon, DEC); Serial.print(" ");
          Serial.print(t.hour, DEC); Serial.print(":");
          Serial.print(t.min, DEC); Serial.print(":");
          Serial.println(t.second, DEC);
           
          delay(500);
         
        }
         
        void alarm_handler()
        {
          Serial.println("Alarm comes on!");
         
        }
        

Flash an LED every 1 second.


        #include <Arduino.h>
        #include <RLduino78_RTC.h>
        #define LED_GREEN 23
         
        void rtcInterrupt1s(){
            digitalWrite(LED_GREEN, LOW);
            delay(10);
            digitalWrite(LED_GREEN, HIGH);
        }
         
        void setup(){
            digitalWrite(LED_GREEN, HIGH);
            pinMode(LED_GREEN, OUTPUT);
         
            rtc_init();
            rtc_attach_constant_period_interrupt_handler(rtcInterrupt1s);
            rtc_set_constant_period_interrupt_time(RTC_CONSTANT_PERIOD_TIME_1SECOND);
            rtc_constant_period_interrupt_on();
         
        }
         
        void loop(){
         
        }