CAmiDion 2号機のマトリクス接続を3号機に合わせました

CAmiDion3号機では、2号機のキーボードマトリクスの割り当てを見直し、線の引き回しが少なくなるようにしています。

具体的にはこんな感じです:

//////////////////////////////
// LED buffer (in HEX)
//
// CAmiDion-2:
//       C       1 3   6 8 A
//     D E F    0 2 4 5 7 9 B
//
// CAmiDion-3:
//       3       5 7   A C E
//     0 1 2    4 6 8 9 B D F
//////////////////////////////

////////////////////////////////////////////////////////////////////
// Button matrix anode6-cathode8
//
// CAmiDion2:
//   4-5     |                     5-5 5-6 5-7 |
// 3-5 4-6   | 2-0 2-1 2-2 2-3 2-4 2-5 2-6 2-7 | 5-0 5-1 5-2 5-3 5-4
//   3-6 4-7 | 1-0 1-1 1-2 1-3 1-4 1-5 1-6 1-7 | 4-0 4-1 4-2 4-3 4-4
//     3-7   | 0-0 0-1 0-2 0-3 0-4 0-5 0-6 0-7 | 3-0 3-1 3-2 3-3 3-4
//
// CAmiDion3 (recommended):
//   1-0                          | 2-0 2-1 2-2
// 0-0 1-1    2-3 2-4 2-5 2-6 2-7 | 5-0 5-1 5-2 5-3 5-4 5-5 5-6 5-7
//   0-1 1-2  1-3 1-4 1-5 1-6 1-7 | 4-0 4-1 4-2 4-3 4-4 4-5 4-6 4-7
//     0-2    0-3 0-4 0-5 0-6 0-7 | 3-0 3-1 3-2 3-3 3-4 3-5 3-6 3-7
//
////////////////////////////////////////////////////////////////////

比べてみるとわかりますが、anode6 の軸(LEDおよびボタン同時押し対策ダイオードのアノード側)が 0,1,2 と 3,4,5 の2つに分かれる区切り | の位置を変えたのです。CAmiDion3 のほうが区切りがまとまっているので、線の引き回しがより少なくて済むのです。

前回の記事で2号機と3号機のソースを一本化しましたが、今回、2号機のほうを改造して3号機に合わせたことで #define CAMIDION_2 で分ける必要すらなくなりました。

思っていたより直す箇所が多く、しかも色々なことをやりながらだったこともあって一日がかりでしたが、配線が減った分、以前よりもすっきりしました。

というわけで作業部屋にあった CAmiDion2号機のフォルダの中身は old_version に移動しました。今後は3号機が標準的な構成となります。

CAmiDion 2号機と3号機のスケッチを共通化しました

先ほど、CAmiDion2号機のシフトレジスタとの接続を、3号機に合わせてI/OでCLKとLATCHを共用化する改造を行い、動作確認しました。

最初は、3号機の変更分を2号機のスケッチに反映していたのですが、よく考えると、今となっては2号機と3号機で大きく違うのはマトリクスの組み方だけだということに気づいたのです。
それだったらスケッチごと共通化しちゃえばいいじゃん! ということで、3号機のスケッチを修正し、#define を切り替えるだけで2号機でも使えるようにしました。

具体的にはこんな感じ:


// 2号機用
#define CAMIDION_2 // 古い2号機用のマトリクス
//#define USE_LCD // 液晶は使わない

// 3号機用
//#define CAMIDION_2
#define USE_LCD // 液晶あり

これに伴い、作業部屋のCAmiDion2のフォルダからはスケッチを削除し、CAmiDion3のフォルダのほうへ一本化しました。CAmiDion2の回路図も修正してあります。

PWMDAC_Synth更新

PWMDAC_Synth を更新しました。

PWM出力するArduinoピン番号を選ぶ場合、従来はライブラリを書き換える必要があったのですが、新バージョンでは呼び出し側で


#define PWMDAC_OUTPUT_PIN 10
#include <PWMDAC_Synth.h>

のようにしてピン番号を選べるようになりました。

あと、内部処理も見直して整理しています。

詳細はPWMDAC_Synthのページを参照してください。

なお、これに伴って #define PWMDAC_OUTPUT_PIN の定義が必須となったため、CAmiDion2号機、3号機、MIDIキーボードのスケッチも更新しました。いつもの作業部屋に置いてあります。