基本ライブラリ
デジタルIO
アナログIO
拡張IO
時間
数学
三角関数
乱数
ビットバイト操作
割り込み
シリアル通信
標準ライブラリ
カメラ
サーボモーター
ステッピングモーター
キャラクタ液晶表示
SPI通信
I2C通信(Wire)
SD
SD(File操作)
周期処理(MsTimer2)
時計(RTC)
Mbed Tips
時計(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
}