えーと。
まあ作ってますけどちょっとショックな出来事がw

http://akizukidenshi.com/catalog/g/gK-01047/

秋月のこのキットと、実現しようとしている内容が酷似している!!(笑)

まあいいです。
ようつべとかで動画見たら時間が普通にスクロールするだけだったので、ソフト作り込んで色々表示に凝ってやる!w
温度センサーも付けたから温度計にもなる予定だしね!

つーわけで。

先日エッチングした基板にバンバン部品を付けていきます。

IMG_2890

表示基板でけた!
ドットマトリクスLEDのライブラリをきっちり作ったので、きれいに2個並んで付いて満足。
シフトレジスタで表示する列を選んで、8ビットのデータを送り込んで選んだ列を点灯させます。
列を順次切り替えながら表示内容を変えていけばダイナミックドライブができるというわけです…。

とりあえず単体で動作確認。

IMG_2893

んーまあ動いてるような感じだから大丈夫でしょう(ぉ

続いて制御基板を組み立ててフラットケーブルで繋ぎまーす。

IMG_2896

ICSP端子も付いてるんで、あとはこの状態でPCからガンガンプログラムを書き込みながら修正できます。楽々だ〜♪

フィルム張り直して再感光とかした基板で、しかも2枚揃わないと動かず、規模も今までで最大なので結構ドキドキでしたが、一発で全て完動しました。多分。
多分というのは、まだTMR1の外部クロック 32.768KHz が動くかどうかテスト出来てないからですw

とりあえずダイナミックドライブで全点灯させてみます。
(ダイナミックドライブなので正しくは全点灯じゃないですがw)

IMG_2899

あー。
ちゃんと光っているっぽい。ええじゃないの。

これだけじゃつまらんので、とりあえず適当に表示させるプログラムを…。
TMR0で0.8192msごとに割り込み掛けて、割り込み2回に1回スイッチの状態読み取ってチャタリングキャンセル。
あとは割り込み1回ごとにシフトレジスタをぶっ叩いてPORTBにデータを出して…うんたらかんたら

できたよー!



ダイナミックドライブがどんなものか分かりやすいように、ボタン押すたびに動作が速くなるようにしてみた。
PICのクロックが20MHzで、TMR0のプリスケーラは1:16にしているので、TMR0のカウントアップは 1/(20MHz÷4)×16=3.2μsごと。
TMR0がオーバーフローするのは3.2μs×256=0.8192msごとです。
一番速くした状態では、割り込み1回で1列表示をずらしているので、横16ドットを表示するのに要する時間は13.1072ms。フレームレートで言うと約76fpsになります。
でも首振りながら見たりするとちらつきが見えるんだよなー…。

まあ電車とかについてる電光掲示板もちらつき具合はこのくらいに見えるから別にいいかと。

本当にそんな速度出てんのか気になったので先日組み立てたオシロで計測…

IMG_2902

と思ったけど波形はマトモに見れませんでした(ぉ
仕方ないんで周波数カウンタで。
シフトレジスタに行っているクロックを計測してますが、さっき書いたように0.8192msごとにクロックが出ているはず。f=1/T=1/0.8192ms=1220.703125Hz なのでまあ大体合ってるようです。

あとはプログラム組みまくるよー。
プログラムいじるのに飽きたら完成w


そういやここ最近の写真はKissX2+B005で撮影してますが、強力な手ぶれ補正のお陰で薄暗い室内での写真も結構ばっちり撮れて非常によいです。
そのうちなんか撮りにいきたいなー…。