レゴマインドストーム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 件のコメント:
コメントを投稿