usb_ioを使った制御実験
  1. 7セグメントLEDの点灯実験
  2. 2つの7セグメントを点灯
  3. 7セグメントLEDと光センサーの実
  4. USB-M4Bを使った模型制御
  5. 複数のUSB-IOを使った制御テスト(H17/9/11)

■5...複数のUSB-IO/IVB usb-ioインバータボードと「HSP」を使って
入出力の制御テストをしてみます。

複数のUSB-I/Oを同時に使うことができますか?という問い合わせが度々有りました。 ここでは、4個のUSB-IO/IVB USB-IOインバータボードを使っての出力実験"「テスト映像1」"と、 2個のUSB-IO/IVBを使って、一つを出力に、もう一つを入力にし、入力側の状態を出力側に出力する 実験"「テスト映像2」(プログラム8)"を紹介致します。

4個のUSB−IOを制御するテスト

プログラム7

プログラム7は、1番ポートを使って識別した4つのusb-I/O(USB−IO/IVB)の1つを指定し、0番ポートにDATAを出力するプログラムです。 usb-i/oの1番ポートを 1111 1110 1101 1100、、、、0001 0000と順に設定することにより最大16個のUSB-I/Oを識別することができます。

(以下の;-------------と;------------の間をコピーし、hspエディターに貼り付けると起動します。プログラムを起動するには「HSP」本体HSP USB-IO用プラグインが必要です)

;-------------------------------------------------
;プログラム7 4個のUSB−I/Oを使った出力テスト

#include "hspusbio.as


	screen 0,500,300

	uio_find 				;デバイスの中からUSB-I/Oを検索、初期化
	uio_getdevs				;つながれているI/Oの数がstatに代入
	n=stat 					;USB-I/Oの総数をnに代入

	repeat n				;つながれているUSB-I/Oの数だけ繰り返す
		uio_seldev cnt			;割り振られた番号の0番目のI/Oから順に
		uio_out 1,15			;1番ポートを入力モードに設定し
		uio_inp p,1			;1番ポートの状態を読み込み
		dev=15-p			;割り振られた番号(0〜n-1)を持つUSB-I/OのIDを
		h.dev=cnt			;変数devに代入、割り振られた番号を配列の内容とし、
	loop					;要素をUSB-I/OのIDとした配列変数を設定



	repeat n
		uio_seldev h.cnt		;USB/IOのID 、0番から
		uio_out 0,0			;0番ポートに、0を出力
	loop					

*main
	
	pos 50,50
	mes "繋がれているUSB-I/Oの数は["+n+"]個です。"
	m_id=n-1
	mes "出力するUSB-I/OのID番号を入力してください(0〜"+m_id+")"
	input dev,50,20,1 
	mes "出力するデータ(0〜255)" 
	input dat,50,20,3 
	pos 100,150
	objsize 300,30
	button "指定のIOに入力データを出力します",*d_out
	stop
	
	
*d_out
	uio_seldev h.dev			;指定のUSB−IOの
	uio_out 0,dat				;0番ポートにデータを出力
	stop
	

;------------------------------------------
プログラム8

プログラム8は、2つのUSB-I/Oを使って、ID番号0の方を入力に、ID番号1の方を出力に設定し、0番のI/Oの状態を1番のI/Oに出力するプログラムです

(以下の;-------------と;------------の間をコピーし、hspエディターに貼り付けると起動します。プログラムを起動するには「HSP」本体HSP USB-IO用プラグインが必要です)

;------------------
#include "hspusbio.as


	screen 0,200,200
	pos 50,50
	objsize 100,30
	button "start",*main
	button "stop",*stp

*stp
	stop



*main

	uio_find 				;デバイスの中からUSB-I/Oを検索、初期化
	uio_getdevs				;つながれているI/Oの数がstatに代入
	n=stat 					;USB-I/Oの総数をnに代入

	repeat n				;つながれているUSB-I/Oの数だけ繰り返す
		uio_seldev cnt			;割り振られた番号の0番目のI/Oから順に
		uio_out 1,15			;1番ポートを入力モードに設定し
		uio_inp p,1			;1番ポートの状態を読み込み
		dev=15-p			;割り振られた番号(0〜n-1)を持つUSB-I/OのIDを
		h.dev=cnt			;変数devに代入、割り振られた番号を配列の内容とし、
	loop					;要素をUSB-I/OのIDとした配列変数を設定


		uio_seldev h.1			;IOのID 1番のI/Oを指定
		uio_out 0,0				;0番ポートに0を出力
		uio_seldev h.0			;IOのID 0番のI/Oを指定
		uio_out 0,255			;0番ポートに255を出力(入力に設定)
		
	repeat
		uio_seldev h.0			;ID 0番のI/Oを指定
		uio_inp d,0				;0番ポートの状態を取得
		d=255-d					;取得したDETAを反転
		uio_seldev h.1			;ID 1番のI/Oを指定
		uio_out 0,d				;0番ポートにDETAを出力
		wait 2
	loop	
		
;--------------------------------------------		
	
1 2 3 4 5