午後、遅いお昼を食べに行ってからテスト開始。
で、○○堂で手に入れた安いブレッドボードでやってたら動作が不安定。午前中のブレッドボードに変えてやりなおし。
まず、アノード側の8ピンをシフトレジスタを使わずAVRに直結してテスト。大丈夫ですね。
実はソフトウエアの部分でちょっとハマりましたけど。演算子の優先順位で。論理演算子って後回しなのね、言語を考えればそうなのだけどもね。ビット演算してるとついやらかすミス。
つづいて、カソード側のピンもシフトレジスタを使わずにAVRに直結。直結と言ってもシンクドライバをかましてます。LEDを2セットにしたので、Arduino側のピンはAnalog0-5をDigital14-19として使うようにして対応。とりあえず動いてました。
ただ、12桁表示にはマイコンのピンが足りない。あと空いているのはUARTの2つとSPIの3つ、そしてdigital 13番。全部使えば12桁対応できますが、他のIOが出来ないので表示するべきネタデータが取れないです。動作モードを指定するスイッチすら繋げられない。
そろそろATmega644Pの出番ですかねぇ。Sanguino系は公式サポートじゃないので試してみるしかないですね。それとも、ATmega168/328系で、せめてカソード側はシフトレジスタ使うかだな。シフトレジスタを使えば12pinが3pinで済むのだから。