一時 AVR を使って Midi-CV 変換を試みたことがありました。
初めてのマイコンでしたので、頂いたサンプルコードをコンパイルを通すだけで苦労し、
デバッグができない環境ということも有り、まともに動作させられずに放置してしまいました。
(マイコンと開発環境の両方になじみが無く、デバッグもできないのは・・・)
Arduinoはさすがに初めてでも何の問題も無く動かせ、さらには最低限のデバッグもできるのは素晴らしい。(シリアルプリントのようなデバッグ方法でも、有ると無いとは大違いで、ツールに対する知識が不要な分初心者にはかえって取っつきやすい)
適当なLチカのテストプログラムにつづいて、まともな Arduinoデビューのテーマとして、以前デジットで500円で買ったドットマトリクスLEDを点けてみることにしました。
コントローラとしては、col方向は左右分割で16bitシフトレジスタ2本(Sinは2本)と、Raw方向も16bitシフトレジスタ(Sin1本)だけの最低限の構成なので、ソフトでダイナミックスキャンさせる必要があるのですが、Latch, Enableが共通なのは良いとして、RawとColumのclockも共通なので、回りくどい効率の悪いソフト制御になりそうです。
同じやるなら、2枚買っていたパネルを縦につないで(clockだけ別にして)2枚駆動することにしました。
表示内容は、昔はやったライフゲームとし、LEDのダイナミック駆動はタイマー割り込みですることにしました。
メモリに(32*32)のマップを裏表2面用意し、交互に更新していきます。表になったマップの内容は割り込みで勝手に表示されるシンプルな構成です。
パネル1枚でのテストでは楽に動いたのに、2枚にすると全く動かず悩みましたが、結局マップだけで全メモリ(2KByte)を消費していることに気づき、マップを1bit構成に変えて動かすことができました。(SRAM使用量オーバーはエラーにならない?)おかげで益々動作が遅くなりました。