メインコンテンツに移動

時計(RTC)

時計(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;
int g_year    = 2019;
int g_mon     = 1;
int g_day     = 30;
int g_hour    = 9;
int g_min     = 20;
int g_sec     = 50;
int g_week    = RTC_WEEK_WEDNESDAY;
 
void alarm_handler();
void setup()
{
  Serial.begin(9600);
  pinMode(PIN_LED1, OUTPUT); // led for alarm
  digitalWrite(PIN_LED1, LOW); //turn off
  rtc.begin();
  rtc.setDateTime(g_year, g_mon, g_day, g_hour, g_min, g_sec, g_week);
 
  rtc.attachAlarmHandler(alarm_handler);
  rtc.setAlarmTime(g_hour, g_min + 1, g_week);
  rtc.alarmOn();
 
}
 
void loop()
{
  rtc.getDateTime(g_year, g_mon, g_day, g_hour, g_min, g_sec, g_week);
 
  Serial.print(g_year, DEC);Serial.print("/");
  Serial.print(g_mon, DEC); Serial.print("/");
  Serial.print(g_day, DEC); Serial.print(" ");
  Serial.print(g_hour, DEC); Serial.print(":");
  Serial.print(g_min, DEC); Serial.print(":");
  Serial.println(g_sec, DEC);
 
  delay(500);
 
}
 
void alarm_handler()
{
  digitalWrite(PIN_LED1, HIGH);// led for alarm
}