デジタル時計とライブラリの自作【Arduino IDE】

DS1307(リアルタイムクロックモジュール)のクラスを自作して、温度表示機能付きのデジタル時計を作った。 調べた感じすでにライブラリが存在するらしい。

GitHub - makerhero/DS1307: Biblioteca DS1307 - Arduino

このライブラリは使わずにライブラリを自作する。

自分でクラスを作れば、必要最低限の機能が実装できる。

それから最近C++を勉強したので自分でクラスを作ってみたいという理由。

とりあえず単体で(自作ライブラリなしで)動くスケッチを作った。

github.com

Arduino IDEでライブラリを自作するには?

参考:

Arduino IDEの使い方(ライブラリの自作編) - NOBのArduino日記!

Arduinoの自作ライブラリを作成するには? – StupidDog's blog

Arduino用ライブラリを書く

今回作るライブラリ名はDS1307Libとする。

このライブラリはGithubにアップロードした。

github.com

  1. クラスをヘッダファイルに記述

    場所は~/Documents/Arduino/libraries/DS1307Lib

    ファイル名はDS1307Lib.h

  2. メンバ関数の定義をソースファイルに記述

    場所は~/Documents/Arduino/libraries/DS1307Lib

  3. 新たに定義した型や関数をハイライトするためのファイルを用意

    場所は~/Documents/Arduino/libraries/DS1307Lib

    ファイル名はkeywords.txt

  4. ライブラリを利用する

    自作したライブラリは、通常のライブラリと同じように、

    #include <DS1307Lib>で使えるようになる。

    なお、使用したOLEDはSSD1306

時刻と温度をOLEDに表示

DS1307のライブラリDS1307Lib.hとADT7410のライブラリADT7410Lib.hを自作して、SSD1306というOLEDディスプレイに表示するプログラムを作成した。あと、今更気づいたけどLCDは液晶のことでOLEDとは全然別物でした。修正が面倒なので放置...

github.com

左からDS1307,ADT7410,SSD1306

(I2Cアドレス0x68,0x48,0x3c)

詳細はそれぞれ別の記事にメモした。

DS1307のメモ - よもつひらさか

ADT7410のメモ - よもつひらさか

SSD1306のメモ - よもつひらさか

画面構成はshowDataLCD()内を変更すれば変えられる。 デジタル時計っぽく表示してみた

すべてI2Cなので回路構成はシンプル…かと思いきやDS1307が5Vじゃないと駆動しないので3.3Vを電源に使うには昇圧回路 or I2Cバスレベル変換が必要らしい。

昇圧回路の場合は3.3Vだけで駆動する。I2Cバスレベル変換の場合、3.3Vと5Vの両方必要。

モジュール 価格
3.3Vマイコン 1000
DS1307 560
ADT7140 600
5V昇圧コンバーター 300
SSD1306 500
2960

3000円の時計は高いだろ…マイコンが高い

PICを使えば回路も小型化できて安くもなるだろうけど

Arduinoのライブラリが使えないと現状厳しそう(能力的に)

PICのお勉強をするべきなんでしょうか…