カラーセンサの使い方を学びます。
- API
- ポート2のカラーセンサを初期化
- ev3_sensor_config(EV3_PORT_2, COLOR_SENSOR);
- ポート2がカラーセンサであることを設定
- ポート2のカラーセンサから明度(環境光)を取得。
- uint8_t light = ev3_color_sensor_get_ambient(EV3_PORT_2);
- ポート2のカラーセンサから明度(反射光)を取得
- uint8_t light = ev3_color_sensor_get_reflect(EV3_PORT_2);
- ポート2のカラーセンサからカラー情報を取得
- colorid_t color = ev3_color_sensor_get_color(EV3_PORT_2);
- ポート2のカラーセンサを初期化
- サンプルプログラム
- /light/app.c: カラーセンサから取得した環境光と反射光の計測値をLCDに表示する。
#include "ev3api.h" #include "app.h" #define COLOR_SENSOR_PORT EV3_PORT_2 void main_task(intptr_t exinf) { uint8_t reflect; /* 反射光の強さの値 */ char reflect_str[32]; /* 反射光の強さを表示するための文字列 */ ev3_sensor_config(COLOR_SENSOR_PORT, COLOR_SENSOR); /* ポートにカラーセンサを設定 */ ev3_lcd_set_font(EV3_FONT_MEDIUM); /* LCDフォント設定 */ while(1){ reflect = ev3_color_sensor_get_reflect(COLOR_SENSOR_PORT); /* 反射光の強さを取得 */ sprintf(reflect_str, "REFLECT: %3d", reflect); ev3_lcd_draw_string(reflect_str, 0, 30); /* 反射光の強さの値を表示 */ tslp_tsk(100000); /* 100us刻みで実行 */ } ext_tsk(); /* タスク終了処理 */ }
- /color/app.c: カラーセンサから取得したカラーの種類をLCDに表示する。
#include "ev3api.h" #include "app.h" #define COLOR_SENSOR_PORT EV3_PORT_2 void main_task(intptr_t exinf) { colorid_t color; /* カラーの値 */ char color_str[32]; /* 色を表示するための文字列 */ ev3_sensor_config(COLOR_SENSOR_PORT, COLOR_SENSOR); /* PORT2にカラーセンサを設定 */ ev3_lcd_set_font(EV3_FONT_MEDIUM); /* LCDフォント設定 */ while(1){ color = ev3_color_sensor_get_color(COLOR_SENSOR_PORT); /* カラー情報の取得 */ switch(color) { case COLOR_NONE: sprintf(color_str, "COLOR: NONE(%d)", color); break; case COLOR_BLACK: sprintf(color_str, "COLOR: BLACK(%d)", color); break; case COLOR_BLUE: sprintf(color_str, "COLOR: BLUE(%d)", color); break; case COLOR_GREEN: sprintf(color_str, "COLOR: GREEN(%d)", color); break; case COLOR_YELLOW: sprintf(color_str, "COLOR: YELLOW(%d)", color); break; case COLOR_RED: sprintf(color_str, "COLOR: RED(%d)", color); break; case COLOR_WHITE: sprintf(color_str, "COLOR: WHITE(%d)", color); break; case COLOR_BROWN: sprintf(color_str, "COLOR: BROWN(%d)", color); break; default: sprintf(color_str, "COLOR: NONE(%d)", color); break; } ev3_lcd_draw_string(color_str, 0, 10); /* 色表示 */ tslp_tsk(100000); /* 100000us刻みで実行 */ } ext_tsk(); /* タスク終了処理 */ }
- /light/app.c: カラーセンサから取得した環境光と反射光の計測値をLCDに表示する。
- 演習4
- カラーセンサーをEV3(ポート1)に接続した後、サンプルプログラム(/light/app.c)の動作を確認してください。
- サンプルプログラムを改造し、以下の機能を実現してください。
『カラーセンサー(環境光)の値が5以下になったら、「Finished!」を表示する。』
- レポート1
- 参考
終わり
コメント