ATtiny85+OLEDでストップウォッチ&タイマーを作ってみた。

手持ちのOLEDの使い道に悩んだ挙句、また、しょうもないものを作ってしまった。(笑)

0.96インチ 128×64ドット有機ELディスプレイ(OLED)

MCUはATtiny85を選択。プログラム領域がかなり厳しそうなのはわかっていたのでブートローダー領域が必要なArduinoではなくAtmel Studioを利用したがEEPROM領域も全て使い切ったうえでプログラム領域の残りが、な~~~~んと90バイト弱しかない。(笑)

回路はこんな感じ。意図したわけではなかったがPB1(MISO)にブザー回路が接続されているのでプログラム書き込み時に音が出る。プログラム書き込みする人以外にはわからないけど以外にいいかもしんない。(笑)

HWはメイン基板とAVR-ISPと接続するためのアダプター基板の2種類を作成。

AVR-ISPに接続するときはこんな感じでアダプター基板を接続し、

プログラムを動作させるときはOLED基板を接続する。

ケースはいつものようにハメ込み式で作成。

最初にOLEDをセット。基板とOLED間のスペーサが省略できるようOLEDの片側(画像上部)を固定するためのスリットを作ってある。

メイン基板をセットし裏ブタを閉めれば完成!!

プログラム書き込み時の様子。なんだか昔懐かしいモデムの通信音みたいで面白い。

電源ONでストップウォッチが動作開始するのでPCと接続していればPCの稼働時間が分かるので便利?かも。ストップウォッチとタイマーは各独立して動作し画面を切り替えて操作する仕様となっている。ちなみにストップウォッチは最大49日まで計測可能。って、それに何か意味あるのか?(笑)

タイマー時間設定はこんな感じで行う。タイマー時間の初期値はカップ麺仕様となっている。(笑) が、カップ麺仕様といいつつバッテリー仕様でないところが痛い。でも、省電力化のためのコードは入りそうもないし。(-_-;)

【ソース・コード1】
main.cpp/buzzer.cpp/buzzer.h/timer.cpp/timer/hは新規作成。
その他のコードは今までに公開したArduino用のコードをAtmel Studio用に手直ししているので同名だからといって同じものではないことに注意すべし。

【ソース・コード2】
プログラムメモリ領域を空けるためにフォントデータをEEPROMに移動している。このプログラムを実行するとEEPROMにフォントデータを書き込んでくれる。注意点としてはAtmel Studioの規定設定だとプログラム書き込み時にEEPROMも消去してしまうのでAtmel Studio にてEEPROMメモリ内容をHEX形式で保存しておき、そのHEXデータからいつでも再書き込みできるように設定しておくと便利。