[[2005/B7]] ☆右チーム☆(ブリトニー&かずま) 目次 #contents *プログラム [#f9bc5aa0] **ライントレースのプログラム(試作)〔モーター2個〕 [#kbbd7db2] // ライントレースのプログラム // // 作成者:かずま // 作成日:2005-11-18 #define THRESHOLD 45 // 閾値 task main() { SetSensor(SENSOR_1, SENSOR_LIGHT); // センサ端子1に接続されたセンサが // 光センサであると宣言 SetSensor(SENSOR_3, SENSOR_LIGHT); // センサ端子3に接続されたセンサが // 光センサであると宣言 SetPower(OUT_A,3); // 出力Aのパワーを3に設定 SetPower(OUT_C,3); // 出力Cのパワーを3に設定 while(true) { if((SENSOR_1 < THRESHOLD) && (SENSOR_3 > THRESHOLD)) // センサ1が黒線上かつセンサ3が黒線外のとき { OnFwd(OUT_C); // 出力Cのみ前進する Off(OUT_A); } if((SENSOR_1 > THRESHOLD) && (SENSOR_3 < THRESHOLD)) // センサ1が黒線外かつセンサ3が黒線上のとき { OnFwd(OUT_A); // 出力Aのみ前進する Off(OUT_C); } else // センサ1、センサ3がともに黒線上又は黒線外のとき { OnFwd(OUT_A+OUT_C); // 前進する } } } ・思ったより難しい...直角と鋭角のカーブがあやしいなぁ。ゆっくり動かせば何とかなるかと思って、パワーを捨てました。コースを太くした方が良いのかも(-_-;) **ライントレースのプログラム(試作2号)〔モーター2個〕 [#l6cec02d] // ライントレースのプログラム // // 作成者:かずま // 作成日:2005-11-24 #define THRESHOLD 45 // 閾値 task main() { SetSensor(SENSOR_1, SENSOR_LIGHT); // センサ端子1に接続されたセンサが // 光センサであると宣言 SetSensor(SENSOR_3, SENSOR_LIGHT); // センサ端子3に接続されたセンサが // 光センサであると宣言 SetPower(OUT_A,3); // 出力Aのパワーを3に設定 SetPower(OUT_C,3); // 出力Cのパワーを3に設定 while(true) { if((SENSOR_1 < THRESHOLD) && (SENSOR_3 > THRESHOLD)) // センサ1が黒線上かつセンサ3が黒線外のとき { Off(OUT_A+OUT_C); OnFwd(OUT_C); // 左回転する OnRev(OUT_A); } if((SENSOR_1 > THRESHOLD) && (SENSOR_3 < THRESHOLD)) // センサ1が黒線外かつセンサ3が黒線上のとき { Off(OUT_A+OUT_C); OnFwd(OUT_A); // 右回転する OnRev(OUT_C); } else // センサ1、センサ3がともに黒線上又は黒線外のとき { Off(OUT_A+OUT_C); OnFwd(OUT_A+OUT_C); // 前進する } } } ・より鋭くカーブできるように改良!(さらに遅くなったけど…)なぜか左折が苦手、光センサーが原因かなぁ? **ライントレースのプログラム(完成版)〔モーター2個〕[#if417ff1] // ライントレースのプログラム // // 作成者:かずま // 作成日:2005-11-24 #define THRESHOLD 45 // 閾値 task main() { SetSensor(SENSOR_1, SENSOR_LIGHT); // センサ端子1に接続されたセンサが // 光センサであると宣言 SetSensor(SENSOR_3, SENSOR_LIGHT); // センサ端子3に接続されたセンサが // 光センサであると宣言 while(true) { if((SENSOR_1 < THRESHOLD) && (SENSOR_3 > THRESHOLD)) // センサ1が黒線上かつセンサ3が黒線外のとき { Off(OUT_A+OUT_C); OnFwd(OUT_C); // 左回転する OnRev(OUT_A); } if((SENSOR_1 > THRESHOLD) && (SENSOR_3 < THRESHOLD)) // センサ1が黒線外かつセンサ3が黒線上のとき { Off(OUT_A+OUT_C); OnFwd(OUT_A); // 右回転する OnRev(OUT_C); } if((SENSOR_1 > THRESHOLD) && (SENSOR_3 > THRESHOLD)) // センサ1、センサ3がともに黒線外のとき { Off(OUT_A+OUT_C); OnFwd(OUT_A+OUT_C); // 前進する } } } ・elseを無くしたらなぜか出来ました。SetPowerもあんまり意味ない気がしたんで排除。ちなみに、両方のセンサが黒線上のときのプログラムがないのはわざとです。 **ライントレースのロボット(完成版)〔モーター1個〕 [#m0bd4708] // ライントレースのプログラム // // 作成者:かずま // 作成日:2005-12-8 #define THRESHOLD 45 task main() { SetSensor(SENSOR_2, SENSOR_LIGHT); while(true) { if(SENSOR_1 < THRESHOLD) { Off(OUT_B); OnFwd(OUT_B); } if(SENSOR_! > THRESHOLD) { Off(OUT_B); OnRev (OUT_B); } } } *ロボット写真 [#f86bf77f] &ref(2005/B7/課題3写真(右チーム)/DSCN3254.JPG,50%,右チームのラインロボ1); &ref(2005/B7/課題3写真(右チーム)/DSCN3255.JPG,50%,右チームのラインロボ2); &ref(2005/B7/課題3写真(右チーム)/DSCN3256.JPG,50%,右チームのラインロボ3); &ref(2005/B7/課題3写真(右チーム)/DSCN3257.JPG,50%,右チームのラインロボ4); &ref(2005/B7/課題3写真(右チーム)/DSCN3251.JPG,50%,右チームのラインロボ5); *走るコース [#pfc0b7a3] かわいらしいWCマークにしました♪ ↓↓↓↓↓↓↓↓ &ref(2005/B7/課題3コース(右チーム)/dscn3000.jpg,50%,右チームのコース); 線をちょっと太くしました ↓↓↓↓↓↓↓↓ &ref(2005/B7/課題3コース(右チーム)/DSCN3250.JPG,50%,右チームのコースその2); *感想 [#ufccae35] **難しかった点 [#a6478deb] **工夫した点 [#tefba7fb] **反省点 [#z8ab067f] **感想 [#u58394b7] *コメントはこちらまで [#wf95d493] -基本的には SetPower はパワーを調整するための命令で回転スピードを調整するための命令ではないので、ゆっくりと動かしたい場合にはギア比を下げたり小さなタイヤを使用しましょう。 -- [[松本(教員)]] &new{2005-11-24 (木) 17:23:29}; -ずっとSetPowerでスピードまで変わるものだと勘違いしてました。ありがとうございました。 -- [[かずま]] &new{2005-11-28 (月) 13:48:05}; -確かにSetPowerでスピードも変わるのですが、おそらく期待するほどは(?)変わらないと思います。SetPower(1) くらいにするとフルパワーのときとかなり違うはずですが実際にはどんな感じでしたでしょうか? -- [[松本(教員)]] &new{2005-11-28 (月) 17:56:04}; -そうですね、ほとんど変わりませんでした。それと動きに覇気が無いと言うか、見ててイライラします。 -- [[かずま]] &new{2005-11-29 (火) 16:33:13}; -モーターが一つと二つの場合の両方をやろう。 -- [[まいける(TA)]] &new{2005-12-02 (金) 17:53:09}; #comment [[戻る>2005/B7]]