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