用意するもの
- ATmega168/328マイコンボードキット
- 4桁黄色7セグメントLED
- プッシュスイッチ×2個
1秒の作り方
前回と同じ方法で作ります。
回路図
今回は4桁7segLEDをダイナミック点灯方式で使います。以下に回路図を示します。 手持ち部品がアノードコモンタイプの7SegLEDとNPNトランジスタのみだったので一般的なエミッタ接地ではなく、コレクタ接地(エミッタフォロワ)回路になっています。 プッシュスイッチにプルアップ抵抗がありませんが、AVR内蔵のプルアップで代用しています。
機能
時計表示機能
24時間表記で時分を表示します。4桁LEDなので秒数は表示できません。 秒数は7seg LEDの小数点を点滅させることで表現します。 秒数により点滅する小数点の位置を変え、大まかな秒数が把握できるよう にします。 00-14秒:1桁目の小数点を点滅、2-4桁目は消灯 15-29秒:2桁目の小数点を点滅、1桁目は点灯、3-4桁目は消灯 30-44秒:3桁目の小数点を点滅、1-2桁目は点灯、4桁目は消灯 45-59秒:4桁目の小数点を点滅、1-3桁目は点灯
日付表示機能
Bボタンを押すと年(4桁)を表示します。 さらにBボタンを押すと月日を表示します。 さらにBボタンを押すと曜日を表示します。
日時修正機能
Aボタンを長押し(3秒)すると日時修正モードに入ります。 年→月→日→時→分→秒の順に入力します。 Bボタンを押すことにより各値がインクリメントされます。 秒修正時はBボタン押下で00秒に設定されます。 3秒間何も操作しないと時計表示モードに戻ります。(そこまでに 入力した値は反映されます) 曜日は入力しません。(年月日から自動計算されます) うるう年を認識します。(2/29はうるう年のみ入力を受け付けます)
オートディマー(減光機能)
夜間(23-06時)は減光モードになります。ボタンを押すと通常モードに なります。5秒間何も操作しないと減光モードに戻ります。
状態遷移図
上述の機能を状態遷移図化したものを以下に示します。
完成
こんな感じで動きます。