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つが全て理想的に反応した場合を想 定したプログラムだったためセンサーが一つでも誤反 応をするとプログラムが破綻してしまう 対処:センサーの反応をひとつひとつを独立させて分 岐路を判断させるプログラムにすれば良かった
© Copyright 2024 ExpyDoc