作成し始めるととても楽しい自作キーボード。しかし途中で飽きてくる作業があります。そう、それははんだ付け。キースイッチにダイオード、Pro Microとはんだ付けするバーツが多すぎるのです。始めは楽しくつけていたはんだも、途中から完全から飽きてきます。ヤニも大量に発生しますし。
そもそもなんでこんなにはんだ付けしないといけないのか。キースイッチとPro Microを半田付けする必要はさすがに分かりますが、ダイオードはなぜキースイッチ1つに対し1つ必要なのか。
というわけで自作キーボードを作成する上で、なぜダイオードが必要か考えてみました。
自作キーボードでスイッチを認識する仕組み
自作キーボードではマトリクス上にキースイッチが並んでいます。例として2×2のキーボードでは下の図のような回路図になっています。図の中のAからDはそれぞれのスイッチを表しています。
自作キーボードのマイコンであるPro Microは、縦のライン(上の図ではC1, C2)の電位を順番にHigh=5Vにしていきます。この図でいうとC1の電位をHighにし、次にC2の電位をHighにし、またC1の電位をHighにするという繰り返しを行っています。
この時どの横のライン(上の図ではR1, R2)の電位がHighになるかを見て、どのスイッチが押されているかをPro Microは認識しています。
例えば下の図のようにAのスイッチを押すと、C1の電位をHighにした場合、赤い矢印のような経路がうまれるため、R1の電位がHighになります。このようにC1の電位をHighにした時、R1の電位がHighになればAのスイッチが押されたと認識します。
この2×2の自作キーボードの場合、次のような表でPro Microはキーを認識します。
キースイッチ対応表
Highにする端子 | Highになる端子 | 認識するスイッチ |
C1 | R1 | A |
C2 | R1 | B |
C1 | R2 | C |
C2 | R2 | D |
2つのスイッチの同時押しを考えてみる
キーボードでは2つ以上のキースイッチを押すことがあります。
例えばアルファベットの大文字を打つために、Shiftキーとアルファベットキーを同時に押す場合です。
ここでは2つのキースイッチを同時に押した場合、どのようにPro Microがスイッチを認識するか考えてみます。
AとBの同時押しの場合
AとBを同時に押した場合は、C1がHighの時にR1がHighになり、C2がHighの時もR1がHighになります。
電流の経路は下の図のようになります。
AとCの同時押しの場合
AとCを同時に押した場合は、C1がHighの時にR1とR2が同時にHighになります。
この場合の電流の経路は下の図のようになります。
3つのスイッチの同時押しを考えてみる
次は3つのスイッチの同時押しを考えてみます。
実際の使用例でいうと、WindowsのCtrl+Alt+Deleteのようなものですね。
いままでの2×2のキーボードでAとBとCのスイッチを同時に押した場合を考えてみます。
するとなんとC2をHighにすると、R2の電位もHighになってしまいます。これでは押してないはずのDのスイッチをPro Microは認識してしまいます。
これは下の図のように、電流が回り込んでしまうためです。
C2をHighにしたとき、B→A→Cの順番に経路ができてしまい、結果R2の電位がHighになってしまっています。
このような電流の回り込みを防ぐために、ダイオードが各キースイッチに1つずつついているのです。
下の図のようにダイオードを各キースイッチにつけてみると、C2をHighにした場合、Aのスイッチに電流が回りこめないため、R1の電位はHighになりますが、R2の電位はLowのままです。
これで正しくDのキースイッチは入力されていないと、Pro Microが認識することができました。
非常に面倒なダイオードのはんだ付けですが、3つ以上のキースイッチの同時押しの時の電流の回り込みを防止する大切なものだということが分かりました。
これで皆さんのはんだ付けの気持ちが楽しくなれば幸いです。