2014/08/18

7segLED時計の試作(AVRマイコン)

AVRマイコンと4桁7segLEDを使った時計を試作しました。今回は時刻合わせ機能も入れてあります。

用意するもの


1秒の作り方


前回と同じ方法で作ります。

回路図


今回は4桁7segLEDをダイナミック点灯方式で使います。以下に回路図を示します。

図1 7segLEDボード回路図

手持ち部品がアノードコモンタイプの7SegLEDとNPNトランジスタのみだったので一般的なエミッタ接地ではなく、コレクタ接地(エミッタフォロワ)回路になっています。

図2 ボード間接続図

プッシュスイッチにプルアップ抵抗がありませんが、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秒間何も操作しないと減光モードに戻ります。

状態遷移図


上述の機能を状態遷移図化したものを以下に示します。

図3 状態遷移図

完成


こんな感じで動きます。

2014/07/05

時計もどきの試作(AVRマイコン)

AVRマイコンとLCDを使った時計もどきを試作しました。なぜ「時計もどき」かと言うと、時刻合わせを行う機能がないからです。

用意するもの


1秒の作り方


マイコン内蔵クロックは精度が悪いため時計には使わないほうが良いでしょう。マイコンボードには20MHzのX'talが搭載されているのでこれを使います。20MHzクロックはマイコン内部で1/8(=2.5MHz)にされ、CPU Coreの動作クロック、およびタイマ/カウンタの動作クロックとして使われます。タイマ/カウンタは20mS周期(=50Hz)でタイマ割り込みを発生させます。プログラムはタイマ割込50回で秒針を1進めるようになっています。


図1 クロック構成

回路図


今回使用したLCDモジュールはマイコンとI2Cバスで接続します。図2に回路図を示します。


図2 回路図

I2Cバスのアクセス方法


マイコン内蔵のTWI機能を使ってI2Cバスにアクセスします。TWIの使い方は面倒そうだったのでAVR315付属のサンプルコードを使いました。ただし、avr-libcで使う場合は割り込み関係のソースを少し修正する必要があります。以下に修正ポイントを示します。

リスト1 TWI_Master.cの冒頭 修正ポイント:1~4行目、7行目を追加

リスト2 TWI_Master.cの割込みルーチン 修正ポイント:9~11行目、14行目を追加

完成


こんな感じで動きます。 電源入れたまま10日ほど放っておいたら10秒遅れました。月差に換算すると30秒ぐらいなのでまあまあの精度です。

2014/06/22

神代植物公園:あじさい

神代植物公園にあじさいを見に行ってきました。


撮影場所:神代植物公園
撮影日:2014/06/21

2014/05/28

Deep Mandelbrotの使い方

 Deep Mandelbrotの引数に'-c'があります。これは色の指定ができます。

-c specify color mode (0-255) [default: 0] or 'auto'

 上記によると入力可能な値は0-255,autoに見えますが、実際に入力可能な値は0-21,autoのようです。それ以外の値を指定するとエラーになります。また0とautoは同じ結果になるようです。

 実際にどんな色になるのか試してみたのでご覧ください。

c=auto (default)


c=0 (default)


c=1 (pink on light steel blue)


c=2 (shades of green)


c=3 (mistyrose and midnightblue)


c=4 (mistyrose, red on midnightblue)


c=5 (grey, dark green, mistyrose)


c=6 (dark slate grey and maroon on bright background)


c=7 (White/DarkBlue/Rose/DarkGreen/Gold)


c=8 (Ice/blue/dark-red)


c=9 (Red/White)


c=10 (DarkBlue/DarkRed)


c=11 (Sand, DarkBlue/RedBrick)


c=12 (Ice, DarkRed)


c=13 (shades of dark red)


c=14 (shades of dark red + dark gold)


c=15 (pink+blue on bright)


c=16 (shades of grey)


c=17 (shades of grey + dark blue)


c=18 (shades of grey + magenta)


c=19 (shades of grey + green)


c=20 (shades of grey + red)


c=21 (darkred,steelblue,gold)


c=255 (Linear functions)


バーニングシップフラクタル

bsf.knit 今回は『バーニングシップフラクタル』についての備忘録です。 バーニングシップフラクタルとは? Wikipedia ...