CAmiDion 3号機に16×2液晶を直結してみた

以前の記事で、シフトレジスタ経由で16×2液晶モジュールをつけていました。が、間に基板を1枚挟んでいたため、厚みがあるうえに重量バランス的にもなんとなく不安定感がありました。

LCD付きCAmiDion3号機

間に基板を挟まず、単純に液晶モジュールを差し込むだけで使えないか?と考えて、実際に重ねてみると…あ!左右のコネクタを追加するスペースが存在するではありませんか!

液晶モジュールを直接差し込めたほうが携帯するにも便利なので、さっそくやってみました。ただ、圧電スピーカーが邪魔になっていたので外し、その跡地に7×2ピンソケットをはんだづけ。電源は、液晶モジュールによって+-が逆だったりすることがあるので、ジャンパーピンの縦横を差し替えるだけで極性を切り替えられるようにしました。

CAmiDion 3号機に16x2LCD差込口を追加

それまでは data, clock latch の3本でよかったのが、RS、enable、d4~d7 の6本に増えました(RWピンはGND固定にしました)。これで、デジタル専用ピンを完全に使い切る形(残るはアナログピンだけ)になりました。コントラスト調整は一番濃い状態でちょうどよかったので、VRを省略し、GND固定にしました(電圧が上がるほど液晶が薄くなる)。

CAmiDion3号機にLCDを直接差し込んだところ

これなら液晶装着時もすっきりです。ただし、これでもフタは閉まらないし、液晶がついていると実験用のピンソケットがふさがるので、依然として液晶は着脱式のままです。

これに合わせてCAmiDion 3号機のスケッチも更新し、シフトレジスタなしでLCDを使う場合のコードを追加しました。 #define で切り替えることができます。

CAmiDion 3号機スケッチ更新

CAmiDion 3号機のスケッチを更新しました。

主な修正点

  • #define USE_MIDI の定義をコメントアウトするだけで、MIDI ライブラリを使わずにコンパイルされて MIDI を無効化できるようにした。
  • 16×2 液晶に関連する CAmiDion 用の関数を Lcd74HC164 のサブクラスとして実装
  • 乱数で作った wavetable を復活。これはノイズ音のようなものなので、ドラムっぽい音も出せたりします。

コードや音階をスクロール表示させようと思ったのですが、autoscroll() メソッドが思うように動かなかったりして表示が不安定になったのでやめました。

あと、液晶を装着するときに、いちいち (+)ドライバーでパネルを外すのが面倒になってきたので、手回しのできるタイプのネジに交換しました。これなら外へ持ち出したときでもドライバーなしで液晶ユニットの付け外しができます。

(追記)
20120809版としてさらに更新しました。
Lcdのクラスを整理したり、単音モードで Single note mode と出すようにする、など。

PWMDAC_Synth更新

PWMDAC_Synthライブラリを更新しました。
set*() に対する get*() 系のメソッドも追加しました(詳細は PWMDAC_Synth.h を参照)。

あと、スケッチで #define してもPWM出力先を切り替えることができないことがわかったので、固定ページにその旨の注意を記載しました。
PWM出力先をスケッチから変えられるようにする方法については検討中です。

詳細は固定ページのほうを参照してください。