2006a/C2/LineProgram1
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2006a/C2/課題2右]]
*線をゆくロボットのプログラム -- No.1 [#e46c4fc7]
Made by Itoshima
**概要 [#b68548c7]
線をゆくロボットのプログラムを作成した。
マシンは詳しくは別ページ[[2006a/C2/LineMachine]]を参照し...
また、対向車が来た場合、方向転換して進むことができるよう...
線のトレース方法は
1.左右どちらかの光センサーが黒いラインを感知する。
2.感知したのとは逆側のモーターを逆回転させることで瞬時に...
3.再び両モーターを正回転させ前進する。
4.以上を繰り返す。
である。
また、タッチセンサーをマシン前方に設置し、反応したら半回...
**苦労/修正点 [#xf5ee4ff]
当初は、速いモーター故に線を逸脱してしまう恐れから、SetPo...
しかし、コース中に1カ所ある急カーブに差し掛かった瞬間に...
そのため、速度を落とすことをやめるとともに、同時に黒を感...
また、進行角度の修正に際して、当初は片方のモーターを静止...
これを解消するために、静止ではなく逆回転させることで、回...
**…実際にやってみた(ト○ビア風) [#pdddc31f]
成功!
かなり高速で回ったので、危なげなく…という表現は合わないが...
ギアとの組合わせの関係上、そう高速では進まないが。。。
**気づいた点 [#u4796afd]
プログラムの組み方も重要だが、マシンにおける光センサーの...
双方の光センサーが同時に黒を感知することを防ぐために光セ...
逆に間隔を小さくすると、少しのカーブですぐに同時に黒を感...
そのバランスがかなり重要であると思う。
**Program [#qf2bab15]
作成者:itos
/* light7 */
#define THRESHOLD 40 // Decision Standard
#define ROUND 20 // Round Standard
task main ()
{
SetSensor(SENSOR_1, SENSOR_LIGHT);
SetSensor(SENSOR_3, SENSOR_LIGHT);
OnFwd(OUT_A+OUT_C);
while (true) {
if (SENSOR_1 < THRESHOLD ) { // 左の光センサー...
Rev(OUT_A); // 左のセンサーがラ...
until(SENSOR_1 > THRESHOLD);
Fwd(OUT_A);
}
if (SENSOR_3 < THRESHOLD ) { // 右の光センサー...
Rev(OUT_C); // 右のセンサーがラ...
until(SENSOR_3 > THRESHOLD);
Fwd(OUT_C);
}
if (SENSOR_3 < THRESHOLD && SENSOR_1 < TH...
{
Rev(OUT_A); // 左右...
until(SENSOR_3 > THRESHOLD && SENSOR_1 > THRE...
Fwd(OUT_A);
}
if (SENSOR_2 == 1 ) // 対向車と衝突した場合
{
Off(OUT_A+OUT_C); // とりあえず停止して...
Wait(50);
OnFwd(OUT_C); // 180度回転する
OnRev(OUT_A);
Wait(191);
Fwd(OUT_A); // 逆方法に進行
}
}
}
終了行:
[[2006a/C2/課題2右]]
*線をゆくロボットのプログラム -- No.1 [#e46c4fc7]
Made by Itoshima
**概要 [#b68548c7]
線をゆくロボットのプログラムを作成した。
マシンは詳しくは別ページ[[2006a/C2/LineMachine]]を参照し...
また、対向車が来た場合、方向転換して進むことができるよう...
線のトレース方法は
1.左右どちらかの光センサーが黒いラインを感知する。
2.感知したのとは逆側のモーターを逆回転させることで瞬時に...
3.再び両モーターを正回転させ前進する。
4.以上を繰り返す。
である。
また、タッチセンサーをマシン前方に設置し、反応したら半回...
**苦労/修正点 [#xf5ee4ff]
当初は、速いモーター故に線を逸脱してしまう恐れから、SetPo...
しかし、コース中に1カ所ある急カーブに差し掛かった瞬間に...
そのため、速度を落とすことをやめるとともに、同時に黒を感...
また、進行角度の修正に際して、当初は片方のモーターを静止...
これを解消するために、静止ではなく逆回転させることで、回...
**…実際にやってみた(ト○ビア風) [#pdddc31f]
成功!
かなり高速で回ったので、危なげなく…という表現は合わないが...
ギアとの組合わせの関係上、そう高速では進まないが。。。
**気づいた点 [#u4796afd]
プログラムの組み方も重要だが、マシンにおける光センサーの...
双方の光センサーが同時に黒を感知することを防ぐために光セ...
逆に間隔を小さくすると、少しのカーブですぐに同時に黒を感...
そのバランスがかなり重要であると思う。
**Program [#qf2bab15]
作成者:itos
/* light7 */
#define THRESHOLD 40 // Decision Standard
#define ROUND 20 // Round Standard
task main ()
{
SetSensor(SENSOR_1, SENSOR_LIGHT);
SetSensor(SENSOR_3, SENSOR_LIGHT);
OnFwd(OUT_A+OUT_C);
while (true) {
if (SENSOR_1 < THRESHOLD ) { // 左の光センサー...
Rev(OUT_A); // 左のセンサーがラ...
until(SENSOR_1 > THRESHOLD);
Fwd(OUT_A);
}
if (SENSOR_3 < THRESHOLD ) { // 右の光センサー...
Rev(OUT_C); // 右のセンサーがラ...
until(SENSOR_3 > THRESHOLD);
Fwd(OUT_C);
}
if (SENSOR_3 < THRESHOLD && SENSOR_1 < TH...
{
Rev(OUT_A); // 左右...
until(SENSOR_3 > THRESHOLD && SENSOR_1 > THRE...
Fwd(OUT_A);
}
if (SENSOR_2 == 1 ) // 対向車と衝突した場合
{
Off(OUT_A+OUT_C); // とりあえず停止して...
Wait(50);
OnFwd(OUT_C); // 180度回転する
OnRev(OUT_A);
Wait(191);
Fwd(OUT_A); // 逆方法に進行
}
}
}
ページ名: