ライントレーサー プレゼンテーション 平成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が十字路ならば 十字路を認識するまで直進 →十字路を三叉路と誤認識しても、再認識をし て十字路であることを確認 十字路も最初の左折路と変わらない!
© Copyright 2024 ExpyDoc