2017年2月6日

  • C
  • EV3技術情報
  • ソフトウェア

センサーや変数の値をファイルに出力する

EV3のC言語プログラム(Toppers)で、センサーや変数の値などをファイルに書き込む方法を紹介します。 プログラム実行中の値の変化の確認や、デバッグにご活用ください。   ※ここで紹介する内容は、EV3RTパッケージ β6-2環境にて動作を確認したものです。   以下のプログラムは、カラーセンサー(反射光)の値を約0.1秒おきに取得して、ファイルに書き込みます。ファイルはmicroSDHCカードのルートに保存されます。(プログラムの48行目参照)
1 #include "ev3api.h"
2 #include "app.h"
3
4 #if defined(BUILD_MODULE)
5 #include "module_cfg.h"
6 #else
7 #include "kernel_cfg.h"
8 #endif
9
10 // センサーポートを設定
11 #define color_sensor EV3_PORT_3
12
13 // 待機時間の設定 [msec]
14 const uint32_t WAIT_TIME_MS = 100;
15
16 void run_task(intptr_t unused)
17 {
18 ? ? ? ? FILE *file;
19 ? ? ? ? int i;
20 ? ? ? ? uint8_t val;
21
22 ? ? ? ? // ファイルオープン
23 ? ? ? ? file = fopen("/log.txt","a");
24
25 ? ? ? ? ev3_speaker_set_volume(5);
26 ? ? ? ? ev3_speaker_play_tone(NOTE_G4, 500);
27
28 ? ? ? ? for ( i = 0; i < 100; i++ ){
29 ? ? ? ? ? ? ? ? val = (int)ev3_color_sensor_get_rgb_reflect(color_sensor);
30
31 ? ? ? ? ? ? ? ? // ファイルに書き込み
32 ? ? ? ? ? ? ? ? fprintf(file , "%d,%d\n" , i+1 , val );
33
34 ? ? ? ? ? ? ? ? // 01.秒待機
35 ? ? ? ? ? ? ? ? tslp_tsk(WAIT_TIME_MS);
36 ? ? ? ? }
37
38 ? ? ? ? // ファイルクローズ
39 ? ? ? ? fclose(file);
40
41 ? ? ? ? ev3_speaker_play_tone(NOTE_G4, 500);
42 }
43
44 void main_task(intptr_t unused) {
45 ? ? ? ? // センサーの設定
46 ? ? ? ? ev3_sensor_config( color_sensor , COLOR_SENSOR );
47
48 ? ? ? ? // タスクを開始する
49 ? ? ? ? act_tsk(RUN_TASK);
50 }
51
※センサーや変数の値をファイル出力するプログラムの一例として紹介しています。 ※プログラムは動作確認済みですが、誤り等が含まれていた場合はご了承ください。
SPIKE