パソコンのプリンタポートからLEDを制御 win2000/XP 版 がうまく動いたので入力も実験してみました。
といってもピン1本だけの入力。
大したことしてないのでメモ程度の内容です。なひたふ新聞 様の プリンタポートの説明ページ のほうがずっとためになるので、興味ある人はそちらをどうぞ(なんと無責任な・・)

NOT ロジックを通してNo.13pinにスイッチを繋げているだけです。
「なんでNOTを2段で使うの?」
NOT2段なのでbufferですね・・・。
単純にプリンタポートを保護したかっただけです(笑)
回路作成中にショートしたらそのままプリンタポート破壊してしまうので、身代わりにNOT-IC使いました。
No.13pin は I/Oアドレス &H379 の4bit目に対応してます。
スイッチ入れればNo.13pinが+5Vになるので、そのとき I/Oポート&H379 を読めば、4bit目が1になっている。という事です。
プログラムでは以下のように、VBIOSCMライブラリの InpB 命令を使って読み出し、Labelに書き出しています。
Label1.Caption = Hex$(InpB(ReadAddr)) 'ReadAddrは 0x379 (integer)
VisualBASIC(VB)ver6
で作りました。
lptin.lzh (23KB)
VBIOSCMライブラリも一緒に入っています。
動作OSは windows2000 ・ windowsXP です。
win9x系では確認していません。
VBIOSCM 本体をDLし、説明書など一読しておくと良いでしょう。
http://www.vector.co.jp/soft/winnt/prog/se309575.html
プリンタコネクタ(オス) |
|
千石電商 \50 |
抵抗 |
10kΩ |
秋月電子 \1 |
抵抗 |
1kΩ |
秋月電子 \1 |
スイッチ |
|
ゴミから。\0 |
74HC04 |
NOTロジックIC |
\30 くらい? |
| 基板 | ブレッドボード使用 | 再利用可なので\0 とする |
総費用 |
\82 |
スイッチ入れる前は、0x379の値は0x6F
スイッチ入れた後は、0x379の値は0x7F
になりました。
期待通りの結果です。
回路図抵抗R1のように、回路の方プルダウンしないと結果が不安定です。
もともとCMOSロジックなのでプルダウンは必須なのですが、こんな単純な回路でもノイズって影響するんだなあ、と勉強になりました。
とりあえず実用的な精度が出ているので、入力スイッチとして色々使えそうです。
何回か実験してて気づいたのですが、プリンタポートの入力ピンは、「入力端子」のくせに電流が出ています。
しかも、4〜2Vくらいのあいだでランダムに揺れています。
なんだよこれ・・・。
つまり、プルダウン必須ということですな。
CMOSロジックICで出力がないときは0V・・・つまりプルダウンされているような物なのでプルダウン回路はいりません。(たぶん)
かといって直接GNDに落としていたらどれだけ電流流れるか不安なので・・。
回路図抵抗R2 のように、1kΩ抵抗挟んでおきました。
1kΩ以上にすると私のパソコンではちゃんとした結果が出ない。
なひたふ新聞
様の プリンタポートの説明ページによれば、プリンタポートの入力インピーダンスが低いらしいので・・・・そりゃあ、あまり高い抵抗は繋げられないわな。
プリンタポートの出力はいい加減だ!注意!
という記事をネットでよく見かけたのですが、改めて認識した実験でした。