汎用USB-IOを使う

汎用USB-IO はとよぞうさんが開発され Morphy Planning から入手できるUSB接続のパラレルデジタルI/Oユニットです。 HID デバイスとして認識されます。

とりあえず入出力してみる

FreeBSDで使えるように プログラムを書いてみました。 NetBSDでも使えるだろうと思います。 /dev/hid0 を読み書きできる権限が必要です。 USB-IOのポートに何も繋がずに実行すると、

cel# ./usb-io
out: 3 0 0 0 0 0 0 0 got: 3 ff
port 0: 255
out: 1 55 0 0 0 0 0 0 got: 1 55
out: 3 0 0 0 0 0 0 0 got: 3 55
port 0: 85
out: 4 0 0 0 0 0 0 0 got: 4 ff
port 1: 255
という出力が出るはずです。 out: が /dev/hid0 を write() した内容(HEX)、 got: が /dev/hid0 を read() した結果(HEX)です。 port: は USB-IO のポートの番号と読み込んだ結果(10進)です。 USB-IO のコマンド 1 はポート0への出力、コマンド 2 はポート1への出力、 コマンド 3 はポート0の入力、コマンド4はポート1の入力です。 このプログラムでは、まずコマンド3でポート0を読み込み、0xff を得ていま す。次にコマンド1でポート1に 0x55 を書き込んでいます。もう一度 コマンド3でポート0を読むと直前の出力の内容が残っていて 0x55 に なっています。そしてコマンド4でポート1を読んで 0xff を得ています。

ソースファイル

よくわかっていないので怪しい部分や冗長な部 分もありますが、置いておきます。無保証です。

LCD を繋ぐ

USB-IO に秋月で売っている SUNLIKE 製の液晶を繋いでみました。

何も引数を与えずに実行すると左のように"Hello, world"を表示します。
usb-lcd "1234567890123456" "ABCDEFGHIJKLMNOP"
と引数を与えると、右のように引数1を1行目に、引数2を2行目に表示します。

接続

SC1602BS 1.VDD 2.GND 3.VLC 4.RS 5.R/W 6.E 7.DB0 8.DB1 9.DB2 10.DB3 11.DB4 12.DB5 13.DB6 14.DB7
USB-IO VCC GND 抵抗で VCC と GNDを分圧 port0 1 GND port0 3 GND GND GND GND port0 5 port0 6 port0 7 port0 8

ソースファイル

上のusb-io0.cから省略した部分(動的なバッファの確保)があります。 デバイスが LCDつきの USB-IO であるかのチェックは行なっていません。


戻る | はじめてのPICアセンブラ入門| センサとデジカメで遊ぶ電子工作入門
Copyright(c)2001 Noriaki Mitsuanga