MINO-o'-2016 29. 回路設計(1)

さて、回路の設計に入ります。今日はキー(ボタン)です。
よくボタンで見るのはこんな回路でしょうか。

ただ、今時だとチャタリング対処はMCU側でソフトウェア的にしてしまうことが多いのです。部品削減できますからね。ですので、対策部分をとりのぞくとこうなります。

さらに、MCUに内蔵プルアップ抵抗があると、結局これでいいことになります。

随分簡単になりました。……でも、これだとボタン毎に入力ピンを一つづつ取られてしまいます。ピン数の多いMCUを使って力押しでもいいのですが、鍵数の多いキーボード作るときなどに困るので、もうちょっと知恵を絞ってみましょう。
…知恵を絞らなくても最近はgoogleで調べれば色々と簡単に出てきますけどね。

というわけで、キーマトリクスです。こんなの。

COLUMN1をLOに、COLUMN2を無接続にしてSW1からSW3を、COLUMN2をLO, COLUMN1を無接続にしてSW4から6を読むわけですね。
ただ、このままだと複数キーを押したときに困ったことになります。
SW1,2,4を押したときでCOLUMN2がLOのとき、SW5がONになったように読めてしまうのです(COLUMN2→SW4→SW1→SW2→TO_MCU2と繋がる)。
これでは和音を弾けません。
ですので、楽器キーボードでキーマトリクスを使うときは面倒でも各ボタンにダイオードを入れる必要があるのです。

なお、マトリクスにすると最初の回路にあったようなチャタリング対策回路は使えません。何故だか考えてみてください。

さて、昨日決めたように鍵数は白8黒5でその他ボタンがプラスαでした。
MCUで割り当てるピンはいくつになるか考えてみます。
13+1個のボタンとして、7x2配置にすると9本必要ですね。でも、同じ9本なら4x5にすると13の白黒鍵に加えて7つ追加のボタンが扱えます。これだけあればとりあえず困らないでしょうから、これで行きます。(4x4で8本でも足りるのですが…)