Arduino/Genuino 101
1. RTCとは?
RTCとは、リアルタイムクロック(real-time clock)の略でコンピュータが内蔵する時計です。
オペレーティングシステムが持つ時刻機能はタイマーにより「時間」を測定しそれを積算するものであるのに対し、コンピュータの電源が切られていてもバッテリバックアップなどにより「時刻」を刻み続けることが特徴です。が、Genuino101の電源を落とす1970年に戻ってしまいました・・・。
どうやらバックアップ電源は無いようです
2. プログラム
2.1 サンプルプログラム
図1のサンプルプログラムを呼び出すにはArduino IDEで「ファイル」→「スケッチの例」→「CurieTime」→「SetTime」の順に開きます。
#include <CurieTime.h> void setup() { while (!Serial); Serial.begin(9600); setTime(21, 41, 00, 18, 1, 2017); } void loop() { Serial.print("Time now is: "); print2digits(hour()); Serial.print(":"); print2digits(minute()); Serial.print(":"); print2digits(second()); Serial.print(" "); Serial.print(day()); Serial.print("/"); Serial.print(month()); Serial.print("/"); Serial.print(year()); Serial.println(); delay(1000); } void print2digits(int number) { if (number >= 0 && number < 10) { Serial.print('0'); } Serial.print(number); }
図1:プログラム例
2.2 実行結果
上記サンプルプログラムを実行した結果が図2です。
初期状態では1970年からカウントを開始する様で「Time now is:00:00:13 1/1/1970」と表示されました。
時刻表示は「Time now is:時:分:秒 日/月/西暦」で、各関数に関する詳細は表1の通りです。
起動から10秒後にsetTime関数で設定した時刻が反映され「Time now is:21:41:10 18/1/2017」と表示されました。
そこから一秒毎に現在の時刻が表示されます。
図2:シリアルモニタ出力結果
関数 | 機能 |
setTime(,,,,,) | (時,分,秒,日,月,西暦)を入力し初期化する |
hour() | 現在の「時」を00~23で返す |
minute() | 現在の「分」を00~59で返す |
second() | 現在の「秒」を00~59で返す |
day() | 現在の「日」を00~31で返す |
month() | 現在の「月」を00~12で返す |
year() | 現在の「念」を1970~で返す |
3. まとめ
この機能を使えばハイテク目覚ましであるとか、毎週月曜日にサボテンに水をあげるとか、誕生日の日になると音楽が鳴りだすとか色々出来そうです!
励みになりますのでよければクリック下さい(^o^)/