50 likes | 215 Views
ライントレーサー プレゼンテーション. 平成20年 2月28日 学籍番号 2006 E 42. プログラムのコンセプト. 読みやすく 書きやすく. 全体の構成. 記号的記述は減らそう #define FRONT 0x01 #define RIGHT 0x02 #define LEFT 0x04 #define NONE 0x00 #define END 0xff #define FR (FRONT | RIGHT) #define FL (FRONT | LEFT) #define RL (RIGHT | LEFT)
E N D
ライントレーサープレゼンテーション 平成20年 2月28日 学籍番号 2006E42
プログラムのコンセプト 読みやすく 書きやすく
全体の構成 記号的記述は減らそう #define FRONT 0x01 #define RIGHT 0x02 #define LEFT 0x04 #define NONE 0x00 #define END 0xff #define FR (FRONT | RIGHT) #define FL (FRONT | LEFT) #define RL (RIGHT | LEFT) #define FRL (FRONT | RIGHT | LEFT) #define S_FR ((PORTB & 0x10) == 0) #define S_FL ((PORTB & 0x20) == 0) #define S_R ((PORTB & 0x40) == 0) #define S_L ((PORTB & 0x80) == 0) #define M_FRONT PORTB = 0x5 #define M_RIGHT PORTB = 0x4 #define M_LEFT PORTB = 0x1 #define M_RTURN PORTB = 0x6 #define M_LTURN PORTB = 0x9 #define M_BACK PORTB = 0xa #define M_STOP PORTB = 0x0 初期設定 分岐路認識 メイン ルーチン 直進 分岐処理 終了
曲がり角が判ればいい 初期設定 メイン ルーチン 分岐路認識 キーワードは nextCorner[] = { ... }; nextTurn[] = { … }; • 配列に曲がり角の情報を入れるだけ → 直進 分岐処理 終了 nextCornerのコーナーを認識 nextTurnの方向に移動
十字路を求めて走る • nextCornerが十字路ならば 十字路を認識するまで直進 →十字路を三叉路と誤認識しても、再認識をして十字路であることを確認 十字路も最初の左折路と変わらない!