基本ライブラリ
デジタルIO
アナログIO
拡張IO
時間
数学
三角関数
乱数
ビットバイト操作
割り込み
シリアル通信
標準ライブラリ
サーボモーター
ステッピングモーター
キャラクタ液晶表示
EEPROM
SPI通信
I2C通信(Wire)
メモリカード
メモリカード(File操作)
Ethernet
Ethernetサーバー
Ethernetクライアント
Firmata
周期処理
省電力
時計(RTC)
SoftwareSerial
ユーティリティ
時計(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>
#define LED_ERROR 12
#define LED_ALARM 13
#define LED_ON HIGH
#define LED_OFF LOW
RTC rtc;
void alarm_handler();
void setup()
{
Serial.begin(9600);
pinMode(LED_ALARM, OUTPUT); // LED for alarm
pinMode(LED_ERROR, OUTPUT); // LED for error
digitalWrite(LED_ALARM, LED_OFF); //turn off
digitalWrite(LED_ERROR, LED_OFF); //turn off
if(!rtc.begin()){
digitalWrite(LED_ERROR, LED_ON); // 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(LED_ALARM, LED_ON); // led for alarm
}
1秒ごとにLEDをチカっとするサンプルです。
#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(){
}