こんにちは、岸田です。
現在弊社で販売中のリアルタイムクロックモジュール(RTC)であるPCF2129ATのアラーム機能を利用してみたので、紹介します。
RTCとは、電源を供給している限り時間を刻み続ける部品で、時計機能などに利用されています。
今回利用するPCF2129ATには、時刻機能のほかに、
- アラーム
- ウォッチドッグタイマ
- タイムスタンプ
- 割り込み出力
- バックアップ用電源用端子
といった機能が搭載されています。今回は、このなかでも、アラーム機能を利用した作例を紹介します。
スイッチサイエンスのおまけwikiには、時間を取得するだけのサンプルプログラムの他に、今回のアラーム機能のベースとなるプログラムが公開されているのでそちらも参考にしてください。
PCF2129ATには外部割り込みに利用できる出力ピンが搭載されており、内部のアラーム時刻の一致や電圧低下などの状態をマイコン側の割り込み処理のトリガとして利用できます。今回のアラームでは、RTCモジュール側の割り込みピンの出力を「アラーム時刻との一致」にして、Arduino側で外部割り込みのトリガとして利用しています。そのため、時刻精度はArduino側で工夫して時刻カウンタを作成するよりも高精度であると言えます。(もちろんRTC側の調整も若干必要です)
以上の機能を利用して、液晶画面に
- 現在時刻
- アラーム
を表示する時計を作成してみました。
普段は時間を表示していますが・・・・
設定した時間になると背景が緑になり、アラームが鳴っていることを文字でしらせてくれます。
スイッチを押す(3番ピンをGNDに接触させる)ことで鳴っている状態を解除できます。
以下に、作り方を紹介します。
■利用したパーツ
- Arduino(今回はUNO R3)
- PCF2129AT SPI/I2C接続リアルタイムクロック・モジュール
- Adafruit 2.8インチTFTタッチモシールドv2(静電容量式)
- Arduino用バニラシールドver.2(青)
- Arduinoシールド用ピンソケットのセット(R3対応)
- ジャンパ、ピンヘッダ、ピンソケット、タクトスイッチなど
バニラシールドには、こちらの記事で紹介する改造を施して、液晶モジュールとジャンパを同時に利用できる仕様にしてありますので、参考にしてください。
配線は、下の図(おまけwikiと同じ)に2本追加するだけです。
RTCモジュール上のINTピンと、Arduino側の2番ピンを接続してください。INTピンはオープンドレインなので、Arduino内部でプルアップを行っています。
また、ボタン用にArduinoの3番ピンをスイッチなどに接続し、押した状態でGNDに接地するようにしてください。Arduino内部でプルアップを行っています。試すだけならワイヤを伸ばすだけでも大丈夫です。
■液晶表示用のライブラリを追加します。
■プログラムを書き込みます。
- PCF2129AT用ライブラリ(11/30版) (wikiに飛びます)
- samples内の"alarm_with_tft.ino"です。
- 毎分45秒で割り込みが入ります。
最後に、動作している様子を動画で紹介します。