Line Tracer Presentation

2E37
・分岐路別に動作を指定
(T字路で右折するルートを通
る)
⇒誤作動の
リスク軽減
⇒プログラムの
簡略化
1.
Switch文によるプログラムの簡略化
2.
基本直進時の軌道修正
3.
左折、右折プログラム
4.
擬似パルス波によるスピード制御
(例
switch(input()){
case 1:直進関数
case 2:右折関数
case 3:左折関数
(センサーの入力を4bit移動
int input(){
return
(PORTB & 0xF0)>>4;
}
センサーからの入力を10進数にし、if,whileの
代わりにswitch文を用いることによってプログラムを
簡略化した
条件分岐が分りやすくプログラム全体が格段に
見やすくなった
case 1:while(input()!=3){ //軌道修正左折//
PORTB=4;
}
break;
case 2:while(input()!=3){ //軌道修正右折//
PORTB=1;
}
break;
前二つのセンサーのどちらかが
ラインから外れた場合、ライン上に
戻るまでトレーサーをカーブさせる
分岐路別に動作を指定
①左折
③左折
⑤左折
②右折
④右折
条件式を省略でき、プログ
ラムの簡略化に繋がる
誤作動のリスクが減る
1
1
2
2
3
2
5
4
while(input()!=3){
PORTB=6;
PORTB=0;
6
0
6
0
6
}
タイヤを回す出力(この場合6)のあとに出力を0にする
ことによって擬似的なパルス波を発生させ、タイヤを回
すスピードを下げた
それにより
センサーの読み取り精度が上がった
・分岐路を上手く曲がることができなかった
原因:センサー4つが全て理想的に反応した場合を想
定したプログラムだったためセンサーが一つでも誤反
応をするとプログラムが破綻してしまう
対処:センサーの反応をひとつひとつを独立させて分
岐路を判断させるプログラムにすれば良かった