ジャイロセンサの使い方を学びます。
- API
- ポート4のジャイロセンサの角位置をリセットする。
- ev3_gyro_sensor_reset(EV3_PORT_4);
- ポート4のジャイロセンサで角度[°]を測定する。
- int16_t rate = ev3_gyro_sensor_get_angle(EV3_PORT_4);
- ポート4のジャイロセンサで角速度[°/s]を測定する。
- int16_t rate = ev3_gyro_sensor_get_rate(EV3_PORT_4);
- ポート4のジャイロセンサの角位置をリセットする。
- サンプルプログラム
- /gyro_angle/app.c:ジャイロセンサーの角位置の計測値をLCDに表示する。
#include "ev3api.h" #include "app.h" #define GYRO_PORT EV3_PORT_4 void main_task(intptr_t exinf) { int16_t angle; /* 角位置の値[deg] */ char angle_str[32]; /* 角位置を表示するための文字列 */ ev3_sensor_config(GYRO_PORT, GYRO_SENSOR); /* PORTにジャイロセンサを設定 */ ev3_lcd_set_font(EV3_FONT_MEDIUM); /* LCDフォント設定 */ ev3_gyro_sensor_reset(GYRO_PORT); /* ジャイロセンサの角位置をゼロにリセット */ while(1){ angle = ev3_gyro_sensor_get_angle(GYRO_PORT); /* 角位置を取得 */ sprintf(angle_str, "ANGLE[deg]: %4d", angle); syslog(LOG_NOTICE, "angle=%d", angle); /* ログ取得 */ ev3_lcd_draw_string(angle_str, 0, 10); /* 角位置の値を表示 */ tslp_tsk(10000); /* 10000us刻みで実行 */ } ext_tsk(); /* タスク終了処理 */ }
- /gyro_rate/app.c:ジャイロセンサーの角速度の計測値をLCDに表示する。
#include "ev3api.h" #include "app.h" #define GYRO_PORT EV3_PORT_4 void main_task(intptr_t exinf) { int16_t angular_velocity; /* 角速度の値[deg/s] */ char angular_velocity_str[32]; /* 角速度を表示するための文字列 */ ev3_sensor_config(GYRO_PORT, GYRO_SENSOR); /* PORT1にジャイロセンサを設定 */ ev3_lcd_set_font(EV3_FONT_MEDIUM); /* LCDフォント設定 */ ev3_gyro_sensor_reset(GYRO_PORT); /* ジャイロセンサの角位置をゼロにリセット */ while(1){ angular_velocity = ev3_gyro_sensor_get_rate(GYRO_PORT); /* 角速度を取得 */ sprintf(angular_velocity_str, "RATE[deg/s]: %d", angular_velocity); ev3_lcd_draw_string(angular_velocity_str, 0, 10); /* 角速度の値を表示 */ syslog(LOG_NOTICE, "RATE[deg/s]: %d", angular_velocity); tslp_tsk(10000); /* 10000us刻みで実行 */ } ext_tsk(); /* タスク終了処理 */ }
- /gyro_angle/app.c:ジャイロセンサーの角位置の計測値をLCDに表示する。
- 演習
- ジャイロセンサーをEV3(ポート1)に接続した後、サンプルプログラム1をEV3にアップロードし動作を確認する。
- ジャイロセンサーをEV3(ポート1)に接続した後、サンプルプログラム2をEV3にアップロードし動作を確認する。
- 参考
終わり
コメント