重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

http://www.kayoo.info/jyouhou-kiki/sozai/1304/in …
上サイトの1304-2-Aに、
「キーはマトリックス(縦横の格子)状に配線されています。配線に順番に電圧をかけていき、どの線に電流が流れ出すかを検出すれば押されたキーがわかります。」
とありますが、この続きが知りたいです。
流れた電流は、CPUなどの状態をどのように変化させるのでしょうか。

A 回答 (4件)

>その「判別する」ということが物理的にどういうことかがわからないんです。

コンピューターに意思があるわけではないでしょうし。

これは、そういう「プログラムを組む」ということです。
(1) ラインAにだけ電圧がかかるようなデータを、出力ポートに出力する。
(2) 入力ポートのデータを読込む。
(3) 読込んだデータの各ビット(このビットは、ライン0~7にそれぞれ対応している)の値を順に調べる。
※ ビットを順にチェックする方法として、マスクパターンと論理和や論理積をとる方法や、データをシフトさせてあふれたビット(キャリー)を見る方法などがある。
※ どのように行うかはプログラマのお好みしだい。
(4) ビットに電圧が入っていたら(デジタルなのでHiになっていたら)、出力ポートのライン番号(この場合ラインAの番号)と入力データのビット番号から押されたキーの番号を計算する。
(5) キーの番号から表などを参照して押されたキーのキーコードを決定する。
(6) ラインB~Dに対しても同様の処理を行い、押されたキーのキーコードを取得する。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。こういう内容を体系的に理解するには、デジタル回路を学べばよいのでしょうか。

お礼日時:2013/04/25 18:06

この回路をマイコンなどを使って自作してみるとよくわかります。


キーボードマトリックスは定番です。

なぜこのような方式にしているかというと、マイコンなどの入出力ポートの数には限りがあるからです。

もしマイコンの入力ポートが100個もあれば、ポート1つずつに100個の押しボタンスイッチを接続すれば100個のボタン押し下げ状態をいっぺんに調べることができますが、そんなマイコンは普通ありません。

そこで、ボタンスイッチを格子状に並べて、縦の列を主力ポートにつなぎ、横の列を入力ポートにつなぎます
もし、10本のポートを入力用に、10本のポートを出力用に設定すれば、合計20本の入出力ポートだけで、10×10=100個分のキー入力状態を調べることができます。

マイコンは、その時の状況に応じた判断能力があるのです。その判断の手順は「プログラム」という指令手順書を予め人間が作成して、マイコンに書き込んであります。(このプログラムの作成も、できれば、ご自分で経験なさるとよくわかるでしょう。)

マイコンを使った趣味はこちらを参考にしてみてください。
http://homepage3.nifty.com/mitt/pic/
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

お礼日時:2013/04/25 18:11

>その「判別する」ということが物理的にどういうことかがわからないんです。



キーコードの何番が押されました。離されました。
ってのをインターフェースの仕様に従ってPC本体に通知します。
# この時点でマトリックス配線とか関係なくなりますけどね。
マトリックスの組み合わせからキーコードの何番とかに変換する作業はキーボードに搭載されているマイコンが行います。

>コンピューターに意思があるわけではないでしょうし。

意志はありませんが仕様はありますから…キーコードの何番はAのキーとする。
などの条件分岐を行った上で処理されます。
で、キーボードにもいくつかタイプがあるので、それがPC本体側の設定と合っていないと
「キーに印字されている文字と入力される文字が違う」ということになります。
# 記号入力しようとして…ってのがお約束ですかね。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

お礼日時:2013/04/25 18:10

説明動画では電流となっているが、実際は電圧を見ます。


横のラインA~Dは、マイコンのデジタル出力ポートにつながっている。
縦のライン0~7は、マイコンのデジタル入力ポートにつながっている。

ラインAに電圧をかけて、ライン0~7を入力。電圧が出ているラインのキーが押されていると判断できる。
ラインBに電圧をかけて、ライン0~7を入力。電圧が出ているラインのキーが押されていると判断できる。
・・・以下同様に、ラインC,ラインDで同じことを行い、押されているキーを判別します。


マトリクスキーパッドとは
http://miqn.net/periph/48.html
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
>押されているキーを判別します。
その「判別する」ということが物理的にどういうことかがわからないんです。コンピューターに意思があるわけではないでしょうし。

お礼日時:2013/04/24 23:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!