向きだのビット順だのですったもんだしましたが、表示できました。おかげでビット演算に慣れてきた。
やはり、フォンデータの作りと実回路が縦にも横にも逆なので、高速化するには回路の逆転が必要かな。そこまでの速度は無くても大丈夫なようですが。
「ひなまつり」。ひらがな程度ならOK。
「重要文化財」。意外と読めるかな。実質7×7のフォントデータだけど美咲フォントあなどれないね。
次は横スクロールの予定です。
右片麻痺のIT好き。左手で生きてます。
で、秋月で売ってる一番デカいブレッドボードEIC-108でLEDテスト機を作成。なるべくジャンプコードでなくジャンプワイヤで配線すべく。今回8ピンピッチの部品が多く、それらをパラにつなぐ部分が多いので8ピンサイズのジャンプワイヤが足りない。長いワイヤを切断&皮剥きする作業がメインだったかも。
あと1個(無理すれば2個)マトリックスLEDを追加するスペースは残したのだけど、電流的にTD62083では厳しそうなのでこのまま(気が向いたら電流を実測してみる)。実際の完成版を作成する際は1.5Aを4回路流せるドライバICを買ってあるのでそれを使います。
やはりマトリックスLEDのはアノードピンとカソードピンが綺麗に同じ側で並ぶように下駄基板を作って使ったほうがケーブル&ワイヤの取り回しが楽かな。LEDそのままだとクロスする配線が多くてどうしてもジャンプコードになる。スケルトン素材でできていて両面使えるブレッドボードとかあったら楽だし面白いかも。ニッチな需要だねぇ。
さて、これでテスト環境ができたので、ソフトの開発に入りますよ。
1個のn x nのマトリックスLEDをクラスにして実装するとこまでやってみたいですね。でも、動けば良いからなあ。
秋月で売ってる最大のブレッドボードが届きました。昨日使ったマトリックスLED2個のプロトタイプブレッドボード2つ分で4列。かつ、90度の角度で電源ラインが4つ取れる。
実はこの1サイズ下のEIC-106(3列と電源ラインあり)も一緒に購入しました。これで部品点数が増えてもブレッドボードで結構行けます。実際に本基板で作らずお蔵入りしても、ブレッドボードなら部品は使いまわせる。
次なる問題は、ブレッドボードの保管場所です。未使用なら重ねておけば良いのだけども、回路をとりあえず組んで、ソフトウエアをテストしてる段階のものとか。
縦に何段もあるような靴箱のような棚を準備したい。自分で作るか。エレクターだとそんな小さいのはないので、アイリスオーヤマのエレクターもどきとか100均かな?
で、今夜はとりあえず、8x8LEDを5個搭載くらいの回路をプロトタイピングCADソフトのFritzingで描いてる。いきなり実配線をしてしまうと、あとに残るのはせいぜい画像だけになってしまうので。面倒でもFritzingでワイヤリング情報を残して置くのはとても大事だと思う。(このFritzingと最近仕事で使ってるUMLソフトがこれまた使い勝手が違うので、頭の切り替えに時間がかかるのが難点。)
今日はちょっと残業して帰ったので、はんだ付けは無し。というか、秋月で売っている中で一番デカいブレッドボードと追加のジャンプワイヤを頼んだので、そっちで作るかも。途中まで作ったブレイクアウト基板はボチボチと配線していきます。完成すれば使い道はあるので。
で、そのかわりに、ブレッドボードで作成済みの、マトリックスLEDが2つの回路をmbedで駆動してみた。
行方向のアノード側はmbedのハードウエアSPIでシフトレジスタを駆動。列方向のカソード側は「mbed Shift Register Library, such as for NXP 74HC595」というのを発見したのでこれを利用。なんか、2のn乗-1をやるのにmbedのコンパイラでpow()使ったら怒られたので、ビット操作に変更して無事コンパイル完了。
一発動作(パチパチ)。って、大した事してないからw。
ハードSPIの方はサンプルコードは1MHzクロックだったので、下げてみたが100KHzまで動作。10KHzとかだとmbedがLEDで降参してた。実際の信号がどのくらいのクロック出ているかはオシロつないでみないと。すごーく暇があったらやってみます。DSO Quadは持っているので、使いこなせてないけど。
列にソフトウエアドライバを使ったのはLED点灯の目視確認の為。最終形になったらこっちもSPIに変えます。mbedはSPIが2つあるので。でも、列方向は8ドットしか無いのでそれほど速度要らないかも。
最後に、ググっていて見つけたReal time 32×32 LED Displayのページ。32×32は良いとして、PWMで256階調とな。原理はわかるので気が向いたら試してみたいかも。x3になるけどRGB LED使うとか。絶対に手配線したくない領域になるなぁ。ってニコ動の動画へのリンクがあるから見てみたら、やっぱスパゲティーになってた。
行事から帰宅後Fritzingで配線検討。以下のようになってます。LEDは220Ωを通した実測が7.23mAくらいだったので、冒険出来るように5個配置。5個だと5×8=40個のLEDが同時点灯する可能性があるわけで。カソード側のトランジスタアレイのTD62083に頑張って貰いたい。
本当にいまさらだけど、トランジスタアレイのピン番号に意味が無いことに気づいたので、隣のシフトレジスタのICとは180度反転した配置になってます。
下の図は素人の設計なので、利用の際は間違ってる事を加味した上でご利用ください。不具合によって発生した事象の保証はしません。
で、実装は以下の感じだろうか。LEDは抵抗を表面に持ってくる為に下駄を装着。部品はなるべく基板表面に実装したいのです。結局、ワイヤリングがキツキツなので裏面をポリウレタン線で配線することは確実です。
LEDのピンなんかもソフトウエア側で補正は出来るのだけも、まずは綺麗な連番で試しておきたいのです。
シフトレジスタやトランジスタアレイごときにICソケットを使うのは、まぁ電流オーバーでぶち壊れた時の交換を簡単にするためです。
ちと、個ごとのマトリックスLEDをの動作自体をダイナミック動作させようかとも思ったりしましたが、自分の手に負えず。アノード側のシフトレジスタの出力を別のシフトレジスタで制御すればできそうではありますが、無理しない。ダイナミック制御xダイナミック制御なのでちらつくかもね。まぁ、今後の課題。
明日はポリウレタン線と格闘です。