2012年5月5日土曜日

レゴマインドストームNXTを使って2個の光センサーを利用したC言語のライント...

レゴマインドストームNXTを使って2個の光センサーを利用したC言語のライントレースプログラムを教えてください。

レゴマインドストームNXTを使って2個の光センサーを利用したC言語のライントレースプログラムを作りたいと思っています。

1個の場合、センサー1つの判断で操作を変化させることはできたのですが、2個利用した場合の判断操作は複雑で行き詰っている状態です。



もしよければ状況判断のアルゴリズムとプログラムのソースをのせていただけるとうれしいです。

また開発環境(利用したアプリケーション)も参考にのせていただけるとうれしいです。



よろしくお願いいたします。







光センサーを2個使用してライントレースする場合は、

2個の光センサーでラインをはさむ形で、ラインをたどうのが簡単だと思います。

以下プログラムです。言語はNXCです。

自分のNXTは壊れているので動作確認はとっていません。

誤りがあったら申し訳ありません。



//ポート配置

//右モーター: A

//左モーター: B

//右光センサー: 1

//左光センサー: 2



task main(){

int R_light, L_light; //それぞれのセンサーの値を入れる変数

//(R_lightは右光センサー,L_lightは左光センサー)



int i = 50; //黒と白の閾値 (黒の値が小さく、白の値が大きいと仮定)



SetSensorLight(IN_1);

SetSensorLight(IN_2);



while(true){

R_light = Sensor(IN_1);

L_light = Sensor(IN_2);



if(R_light > i){

if(L_light > i){

OnFwd(OUT_A, 100); //両側白

OnFwd(OUT_B, 100); //前進

}else if(L_light < i){

OnFwd(OUT_A, 100); //右白、左黒

Off(OUT_B); //左に進む

}

}else if(R_light < i){

if(L_light > i){

Off(OUT_A); //右黒、左白

OnFwd(OUT_B, 100); //右に進む

}else if(L_light < i){

OnFwd(OUT_A, 100); //両側黒

OnFwd(OUT_B, 100); //前進

}

}

}

}

0 件のコメント:

コメントを投稿