プルアップ抵抗付き入力ポートとプルアップ/プルダウン抵抗なしオープンドレイン出力ポートを使用した構成のキーマトリクス方式では、マトリクスの列ごとに対応する出力ポートを順番にLOW出力にします。LOW出力に設定された列の中のスイッチが押されたときに、対応するスイッチの入力ポートはLOWになります。また、スイッチが押されていない状態では、入力ポートはHIGHになります。
例えば、STM32G0マイコンを使用し、出力ポートにPB0〜PB3、入力ポートにPB4〜PB7を使用する場合を考えてみます。列AのスイッチS1が押されたかどうかを調べるには、列Aに接続されている出力ポートPB0をLOW出力、列B〜Dに接続されている出力ポートPB1〜PB3をハイインピーダンス状態にし、スイッチS1につながっている入力ポートPB4〜PB7の状態を調べます(図2)
この時、入力ポートの状態がLOWであれば、スイッチは押されている状態になります。また、入力ポートの状態がHIGHであれば、スイッチは押されていない状態になります。
実際の回路の動作の様子を回路シミュレーターで確認してみます。
スイッチS1のみ押されている状態では、図2内赤矢印線のように電流が流れ、入力ポートPB4の電圧が0Vに引っ張られるため、入力ポートPB4の電圧が約0V、その他の入力ポートPB5〜PB7の電圧は約3.3Vになり、PB4はLOW入力、PB5〜PB7はHIGH入力となります。
スイッチの同時押しは、本構成では最大2つまで可能です。3つ以上同時に押す場合、うまく認識できない可能性があります。
例えば、列Aのスイッチを1つ(S1)と列Bのスイッチが2つ(S5、S6)、合計3つのスイッチが同時押しされた場合を考えてみましょう。列AのスイッチS1が押されたかどうかを調べる場合、先ほどと同様に、列Aに接続されている出力ポートPB0をLOW出力、列B〜Dに接続されている出力ポートPB1〜PB3をハイインピーダンス状態にし、スイッチS1につながっている入力ポートPB4〜PB7の状態を調べます(図3)
実際の回路の動作の様子を回路シミュレーターで確認してみます。
この状態では、図3内赤矢印線のように電流が流れ、入力ポートPB4とPB5の電圧が0Vに引っ張られるため、入力ポートPB4とPB5の電圧が約0V、その他の入力ポートPB6〜PB7の電圧は約3.3Vになり、PB4とPB5はLOW入力、PB5〜PB7はHIGH入力となります。
結果は、スイッチS2は押されていないにもかかわらず、スイッチS2が押されていると誤判定されます。
しかし、用途によっては、2つまでの同時押しで十分な場合もあります。キーパッドなどで、シフトキーと他のキーとの同時押しを使って、スイッチに割り当てる機能数を増やすといった用途の場合、2つまでの同時押しで十分なため、このような用途では本構成が便利です。
Copyright © ITmedia, Inc. All Rights Reserved.