※この記事は、半年前(2010年2月)に書いたのですが・・・投稿せずに眠っていたので・・・
RXMuxの続きです。
どうも、4つのチャンネルを切り替えて、有効になっているチャンネルの値を読むことは判りました。
なので、例えばch1とch2に光センサーを接続して2つの値を読むのであれば
①RXMuxのch1を有効にする。 ch1に接続した光センサーが赤く光る。
②ch1の値を読む・・・ch1の光センサーの値を読む。
③RXMuxのch2を有効にする。 ch2に接続した光センサーが赤く光る。
④ch2の値を読む・・・ch2の光センサーの値を読む。
となります。
これを繰り返すと、光センサーの赤いLEDが点滅して、うざい!
と、ここまで判ったところで、ライブラリのプログラムを眺めていたら・・・
切り替える毎に、書かれているWaitだけ待たなきゃいけないので、遅い!ということが判明しました。
主要部分のプログラムはこんな感じ・・・
I2CWrite(RXMUXport, 0, RXMuxMsg);
Wait(10);
SetSensorType(RXMUXport,sensortype);
SetSensorMode(RXMUXport, sensormode);
Wait(30+10*Delay);
return(Sensor(RXMUXport));
で結局、基板の先に接続したセンサーの値を読むところは・・・
あれっ、普通にポートを読んでいるだけなの?
I2Cでのやり取りでは無いようです。
・
・
・
と、いうことは、チャンネルの切り替えには時間が掛かっても、同じチャンネルのセンサーを読むのは、普通の(アナログ)ポートの読み込みと同じってことですね。
つまり、普通に SENSOR_1 とかで、読めるようです。
これって、ソリッドステートリレーみたいなものなのかなぁ。
これが判るまでは、「使えない!」と思っていた RXMux ですが・・・なんかアイディアによっては有効に使えそうな気がしてきました。
つまり、基板の4つのチャンネルを頻繁に切り替えて値を取得することは苦手でも・・・
普段はチャンネルを固定しておいて、必要なときにだけ切り替える使い方なら実用になるかも・・・
例えば、5個の光センサーを接続して、普段は中央の3個の光センサーだけでライントレースをして、ギャップに入ったときだけ(ラインを外れたときだけ)外側の光センサーを有効にするとか・・・
ちょっとビックリしたのは・・・ジャパンオープンにこのモジュールを使って参加しているチームが何組か居ました。
ロボットの下部に設置された光センサーの赤い光が、チラチラと点滅してました。
でも・・・
ちゃんと実用になっているじゃないですか・・・!?
で、さらにいまさら投稿しておいて何ですが・・・2010年9月現在で、End of Life Products になっちゃってます。
つまり、もう売っていません・・・プレミアがつくかなぁ。(笑)