▲インテリジェントブロックNXT(NXTブロック)の入力ポートにNXT用光センサーをつなぎ、その状態でEV3ソフトウェアを実行すると、NXT用光センサーを正しく読み取ることができません。
EV3ブロックはNXT用センサーと普通に接続できますし、EV3ソフトウェアはNXTに対応していますので、おそらくEV3ソフトウェアのバグだと思います。EV3ソフトウェアのバージョンは1.0.1、NXTブロックのファームウェアは1.31で検証しました。
現象をまとめるとこんな感じです。
・EV3ソフトウェア+EV3ブロック→OK
・EV3ソフトウェア+NXTブロック→OK
・EV3ソフトウェア+EV3ブロック+NXT用光センサー →OK
・EV3ソフトウェア+NXTブロック+NXT用光センサー→NG
▲不具合を確認してみましょう。EV3ソフトウェアを起動して、NXTブロックをパソコンにつないだ状態で、光センサーを入力ポートにつなぎ、ポートの種類を「カラーセンサー-反射光の強さ」にします。NXTはAuto-IDに対応していないため手作業で種類を合わせます。
すると、光センサーの値は「1」のままで、どうやっても変化がありません。これが問題のバグです。バグじゃなくて、単に対応してないだけの可能性もありますが。「カラーセンサ」じゃなくて「光センサー」って項目が存在してほしいのですが、、、。
▲解決策の例がこちらです。「カラーセンサー-反射光の強さ」ブロックを使わずに「未処理のセンサー値」ブロックを使います。ただし、「未処理のセンサー値」はポートのRawデータのことで、動作が光センサーと違います。値の範囲が0~1023の範囲で変化します。しかも明るくなるほどに値は小さくなります。
さらに「未処理のセンサー値」ブロック単体では光センサーの赤色LEDは光ってくれません。そこで、ループの一番最初に「カラーセンサー」ブロックを置いて、光センサーの赤色LEDを点灯させます。理由は不明です。「カラーセンサー」ブロックではなくて、「サウンドセンサー」ブロックでもかまいません。
いちおう、これで解決ですが、いままでとセンサーの挙動が違ってしまうので、互換性を維持できません。センサーの値に数式を通して、値の変化を0~100にして、暗いほど値が小さくなるようにしたほうがよさそうです。