沼津高専 電子制御工学科 |
MIRS0103 関数説明書 |
MIRS0103-SOFT-1001 |
|
改訂記録 |
版数 |
作成日 |
作成者 |
承認 |
改訂内容 |
A01 |
2002.12.13 |
中村 |
中村
|
初版 |
A02 |
2002.12.17 |
花島 |
中村
|
ライブラリ関数の説明の訂正 |
A03 |
2002.12.26 |
花島 |
中村
|
PWM関数の仕様の変更 |
A04 |
2003.1.8 |
山本 |
中村
|
本体の仕様変更にともなう図の差し替えと関数の仕様変更 |
A05 |
2003.1.10 |
花島 |
中村
|
PWM関数の仕様の変更 |
A06 |
2003.1.15 |
花島 |
中村
|
マウス関数の仕様の変更 |
A07 |
2003.1.19 |
中村 |
中村
|
PWM関数追加 |
本ドキュメントは,MIRS0103の行動プログラムを作る際に使用するライブラリ関数の説明をしたものである。
MIRS0103に搭載しているタッチセンサ,赤外線センサ,超音波センサを区別するために,fig.1のように番号をめる。
fig.1
また,MIRS0103で扱う座標はfig.2のようにとる。
fig.2
モード関数について
モード関数は以下の最低限,以下のヘッダファイルをincludeする必要がある。
#include <types.h>
#include <mirs.h>
#include <libts.h>
#include <libirs.h>
#include <libuss.h>
#include <libmouse.h>
#include <libpwm.h>
#include <liblcd.h>
また,各モード関数は引数にMIRS構造体へのポインタをとる。
また、各関数は戻り値として正常終了なら次に遷移するべきモードの番号(0以上)を、
それ以外(エラー等)なら負の数を返す。
MIRS構造体はMIRSの動作状態を示す変数をまとめたものである。
ライブラリ関数の説明
- タッチセンサ
- 赤外線センサ
- 超音波センサ
- PWM
PWMの移動を行う関数はモジュールの方に移動命令を送る処理を行うだけで、移動が終わるまで移動の関数から
処理が戻ってこないわけではないので注意!!
- マウス
- int get_mouse_move(vector2 *position, int *dir)
現在のMIRSの位置(絶対座標)をpositionに、現在向いている方向をdirに受け取る。
方向の値はY軸+方向を0とし、時計方向に増やして0〜359までで表す。
vector2 pos;
int dir;
get_mouse_move(&pos, &dir);
printf("Position X:%d, Y:%d, Direction Dir:%d\n", pos.x, pos.y, dir);
上のように書くと,現在のMIRSの位置及び方向を画面に表示できる。
- int get_mouse_move_diff(vector2 *position, int *dir)
前回取得した時から現在までに移動した量、角度をposition,dirに受け取る。
vector2 pos_diff;
int i,dir;
move_PWM(-250.0, 500.0, 80);
while(i != 1) {
get_mouse_move_diff(pos_diff, dir);
if (pos.x == 0.0 && pos.y == 0.0) {
i = 1;
}
usleep(500);
}
上のように書くと,MIRSが(-250.0,500.0)の位置に移動するまで,処理を中断することができる。