目次
1. 本ドキュメントについて2. プログラム概要
3. プログラム解説
1. 本ドキュメントについて
- 本ドキュメントでは、鍵&扉突破プログラム(key_clear.c)について記述する。
2.プログラム概要
- int db(void)からint key_clear(void)に入った後、壁にぶつかるまで(鍵スイッチを押すまで)徐行。
前方タッチセンサが壁を感知したら、7cm後退し、180°旋回、その後開いた扉を直進する。
3.プログラム解説
3.1. プログラム
- 実際のプログラムを以下に載せる。
・key_clear.c
3.2. プログラム「Key.c」の解説
表3.1 key_clear.c内の関数名と処理内容
関数名 | 処理内容 |
int key_clear(void) |
int db(void)終了後、この関数に入る。int key_start(void)を呼び出し、
t_sensor[0]==49(前タッチセンサ)になるとint key_start(void)を抜けて、この関数に戻る。 その後、7cm後退してから180°旋回、再びint key_start(void)に入る。 int key_start(void)内で、一度uss[1]>40 || uss[2]>40(右もしくは左の壁を超音波センサが感知しなくなる)になってから、uss[1]<30 && uss[2]<30(右かつ左の壁を超音波センサが感知する)になると、int key_start(void) を抜けて、この関数に戻り鍵突破プログラム(key_clear.c)を終了し、int labylinth(int)へ入る。 |
int key_start(int mode) |
徐行前進し、t_sensor[0]==49(前方タッチセンサon)になったらこの関数を抜ける。
t_sensor[1]==49(左タッチセンサon)もしくはt_sensor[2]==49(右タッチセンサon)になった場合、
後退してから、タッチセンサの当たった方向とは逆に30度旋回、その後直進する。 また、関数int key_clear(void)の動作180°旋回後の直進の際、かならずuss[1]>40 || uss[2]>40(右もしくは左の超音波センサが壁を感知しなくなる)T字路がある。 それを判別後、uss[1]<30 && uss[2]<30(右かつ左の壁を超音波センサが感知する)になったとき、この関数を抜ける。 |
void center(int sum,int ts) | int key_clear(void)で7cm後退後、位置補正を行う(予定だったが、完成していないためこのプログラムには組み込んでいない)。 |
3.3. フローチャート
- key_clear.cの動作フローチャートを以下に載せる。
図3.1 key_clear.cの動作フローチャート