時計(RTC)

時計として使うためのライブラリです。年、月、日、曜日、時、分、秒を設定後、時計として機能します。アラームを設定してアラーム発生時に特定の処理を行うこともできます。ライブラリを使用するには、#include <RTC.h>を記述して、RTC rtcのようにインスタンスを作成してください。

begin

概要
初期化を行います。
文法
bool rtc.begin()
パラメータ
なし
戻り値
true or false

end

概要
時計を停止します。
文法
bool rtc.end()
パラメータ
なし
戻り値
true or false

setDateTime

概要
時間を設定します。
文法
bool rtc.setDateTime(int year, int mon, int day, int hour, int min, int sec, int week)
パラメータ
year: Year
mon: Month
day: Day
hour: Hour
min: Minute
sec: Second
week: Use the following parameters.
RTC_WEEK_SUNDAY
RTC_WEEK_MONDAY
RTC_WEEK_TUESDAY
RTC_WEEK_WEDNESDAY
RTC_WEEK_THURSDAY
RTC_WEEK_FRIDAY
RTC_WEEK_SATURDAY
戻り値
true or false

getDateTime

概要
時刻を取得します。
文法
bool rtc.getDateTime(int &year, int &mon, int &day, int &hour, int &min, int &sec, int &week)
パラメータ
setTimeと同様な変数
戻り値
true or false

attachAlarmHandler

概要
アラーム発生時に処理する関数を登録します。
文法
void rtc.attachAlarmHandler(void (*function)(void))
パラメータ
function: 処理する関数
戻り値
なし

setAlarmTime

概要
アラーム時間を設定します。
文法
bool rtc.setAlarmTime (int hour, int min, int week_flag)
パラメータ
hour: Hour
min: Minute
week_flag: Use the following week parameters:
RTC_ALARM_SUNDAY
RTC_ALARM_MONDAY
RTC_ALARM_TUESDAY
RTC_ALARM_WEDNESDAY
RTC_ALARM_THURSDAY
RTC_ALARM_FRIDAY
RTC_ALARM_SATURDAY
RTC_ALARM_EVERYDAY
戻り値
true or false

alarmOn

概要
アラームをONにします。
文法
rtc.alarmOn()
パラメータ
なし
戻り値
なし

alarmOff

概要
アラームをOFFにします。
文法
rtc.alarmOff()
パラメータ
なし
戻り値
なし

サンプルプログラム

時刻とアラームを設定するプログラムです。シリアル通信で時刻を出力し、10秒後にアラームでLEDが点灯します。


#include <Arduino.h>
#include <RTC.h>
 
RTC rtc;
void alarm_handler();
  
void setup()
{
  Serial.begin(9600);
  pinMode(PIN_LED_GREEN, OUTPUT); //green LED for alarm
  pinMode(PIN_LED_RED, OUTPUT); //red LED for error
  digitalWrite(PIN_LED_GREEN, LOW); //turn off
  digitalWrite(PIN_LED_RED, LOW); //turn off
  
  if(!rtc.begin()){
    digitalWrite(PIN_LED_RED, HIGH); // error
  }  
  rtc.setDateTime(2016, 9, 22, 23, 20, 50, RTC_WEEK_SATURDAY);
  
  rtc.attachAlarmHandler(alarm_handler);
  rtc.setAlarmTime(23, 21, RTC_ALARM_EVERYDAY);
  rtc.alarmOn();
  
}
  
void loop()
{
  int year, mon, day, hour, min, sec, week;
  rtc.getDateTime(year, mon, day, hour, min, sec, week);
  
  Serial.print(year, DEC);Serial.print("/");
  Serial.print(mon, DEC); Serial.print("/");
  Serial.print(day, DEC); Serial.print(" ");
  Serial.print(hour, DEC); Serial.print(":");
  Serial.print(min, DEC); Serial.print(":");
  Serial.println(sec, DEC);
  
  delay(500);
  
}
  
void alarm_handler()
{
  digitalWrite(PIN_LED_GREEN, HIGH); //blue led for alarm
}