前回の続きです。
今回のスケッチでまず行っているのは、電力消費を少しでも抑えるためにATtiny85の使用していない回路の動作を停止することです。対象となるのはAD変換回路や今回は使用しないタイマーなどです。そのために電力削減レジスタ(PRR)を設定するのですが、データシートによるとA/D変換器は使用停止前に禁止しなければならないとありました。そのため事前にA/D変換とコンパレータを使用禁止に設定しています。
続いてウォッチドッグタイマーの設定を行います。時計の表示に利用しますので1秒ごとに割り込みをかけて秒数をカウントします。このタイマーはATtiny85の動作状態に関係なく利用できて便利なのですが、RC発振回路なので電圧や温度によって周波数が変動してしまいます。
ATtiny85の電源3Vのときウォッチドッグタイマーの1分間の割り込み回数は57回でした。そこで割り込みのたびに秒数をカウントして57を超えたら「分」のカウントを1つ増やします。「分」の方は普通に60になったら「時」を1つ増やします。(1時間で数秒のずれは発生します)
さらに時間とは別に割り込み回数をカウントしています。これはスリープモードに移るまでの時間や、スイッチの長押し時間をカウントするのに使用します。
次はスリープモードの設定を行います。スリープはMCU(Micro Controller Unit)を停止する最も消費電力の少ないモードにしています。この場合ウォッチドッグを含むMCU外部の要因による割り込みでしか復帰できません。今回はピンの電圧変化で割り込みをかけてMCUを起動します。具体的にはピン1につないだタクトスイッチを押してスリープモードから復帰させます。割り込みをかけるピンは複数登録することも出来るのですが、処理が多少煩雑になるので1ピンのみとしました。
1つ問題になるのはウォッチドッグでMCUが起動してしまうことです(当たり前ですけど)。そのためフラグを立てて、タクトスイッチによる割り込み以外はすぐにスリープモードに移るようにしました。
スリープモードに移る時間やスイッチ長押しの時間は、スケッチ前方の#define文のSLEEPCOUNTとLONGPUSHに定義してあります。この値は変更可能なので、好みの値にするといいでしょう。
それから、買い物リストに入力できる文字の種類は、スケッチ前方で定義している配列 letter[] に定義してあります。ここに入力したい文字を追加することもできます。文字を追加したときは#define CHRNUMBERの値も文字数に合わせて変更して下さい。
使用しているライブラリのフォントにはかな文字などは無いのですが、頑張れば自分でフォントを作って利用することも出来ます。ただし、今の入力方法では文字種を増やすと入力が大変になるので、別の入力方法を考える必要があるかもしれません。
今回のスケッチは複数の割り込みを利用しているので、予想外の動作をする可能性もあります。そこでまる一日以上動作させてテストしてみました。数時間ごとに操作して確認しましたが特に問題なく使用できたので、ブレッドボードの部品を基板にハンダ付けすることにしました。
今回は小型のガジェットを作るのがコンセプトなので、なるべく小さくする為にこんな基板を利用してみました。
近所のDIYショップで購入しました。
この基板は切り込みが入っていて、分割して使うとかなり小さくなります。面白いのはスルーホールが格子状に結線されていて、この格子パターンをカットして回路を作れるというところです。小さい基板なのでうまく結線パターンを作れば、ハンダ付けによる配線を減らすことが出来ます。
基板上に置く部品の配置を決めたら仮止め(パターンによっては位置を変更するかもしれないから)して、結線パターンをじっくり考えます。パズルみたいでちょっと楽しかったりします。
(左手で操作して右手で買い物するイメージで部品を配置してみました。)
配線がきまったらパターンをカットしていきます。
商品説明にはリューターなどでカットしてと書いてありましたが、持っていないので小さな金ヤスリでチマチマ削りました。細かい作業で時間もかかるのでかなり大変です。パターンカットで賄えなかった部分はハンダ付けで配線します。このとき各パーツもきちんとハンダ付けします。
全ての配線が終わったらテスターでチェックしておきます。
次に基板背面に電池ボックスを付けます。接点をダイソーのグルーガンで絶縁しつつ基板上に動かないように固定してしまいます。
最後にATtiny85をソケットに差し込み、コイン電池を入れて動作確認をしてみます。
ちゃんと動作しました。
うまく小さな基板に収めることができたので、持ち運びの為にケースに収めます。小さな基板をフリスクのケースに収める事例をよく見ますが、買い物中にフリスクを手にしているのもなんか誤解されそうです。ちゃんとしたケースに入れた方がいいでしょう。
基板を購入したDIYショップで探してみたら、良さそうなケースを見つけることが出来ました。でも多少の加工が必要でした。
また長くなりそうなので、詳しくは次回で。
最新の画像[もっと見る]
-
マイコン向けのロールプレイングゲームを作ってみた 2ヶ月前
-
マイコン向けのロールプレイングゲームを作ってみた 2ヶ月前
-
マイコン向けのロールプレイングゲームを作ってみた 2ヶ月前
-
マイコン向けのロールプレイングゲームを作ってみた 2ヶ月前
-
マイコン向けのロールプレイングゲームを作ってみた 2ヶ月前
-
マイコン向けのロールプレイングゲームを作ってみた 2ヶ月前
-
USBホスト機能を試してみる 5ヶ月前
-
USBホスト機能を試してみる 5ヶ月前
-
USBホスト機能を試してみる 5ヶ月前
-
Linino OneのDisk spaceを増やしてsambaを動かす 5ヶ月前
※コメント投稿者のブログIDはブログ作成者のみに通知されます