ライントレーサー プレゼンテーション

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