FRDM-KL25Zでmbed【センサー編】
前回、USB Serial経由のシリアル通信ができるようになったので、いよいよFRDM-KL25Zのセンサーを使ってみたいと思う。センサーのライブラリがどんな値を返すのかをシリアルで確認しつつ進める。
サンプルプログラムでライブラリの使い方を学ぶ
FRDM-KL25Zに関するサンプルプログラムは以下のページに色々と置いてある。
mbed FRDM KL25Z Examples - Handbook | mbed
この中の、「Touch Sensor - Hello World!」がタッチセンサーの、「Accelerometer Example - Hello World!」が3軸加速度計のサンプルプログラムとなっている。これらの項の「Import program」ボタンを押すと、コンパイラにサンプルプログラムがインポートされる。
- Touch Sensor - Hello World!のインポート
- Accelerometer Example - Hello World!のインポート
タッチセンサーの利用
今回はタッチセンサーを使ってみることにして、タッチセンサーのプログラムをインポートして見てみる。
int main(void) {
PwmOut led(LED_GREEN);
TSISensor tsi;
while (true) {
led = 1.0 - tsi.readPercentage();
wait(0.1);
}
}
コンパイラにインポートされたFRDM_TSIをそのままコンパイルし、ボードに書き込み実行すると、タッチセンサーをタッチすると位置によってLEDの明るさが変わる。
ここで推定されるのは、led=1の時にLEDは消灯となるので、タッチしていない時はTSISensorクラスのreadPercentage()メソッドは0を、タッチしているときはタッチ位置によって〜1.0までの少数を返していると思われる。
正しいかどうか、シリアルに出力しつつ確認してみる。前回のシリアル通信のプログラムを参考に、TSISensorクラスのreadPercentage()メソッドの戻り値をシリアルに出力させる。
#include "mbed.h"
#include "TSISensor.h"int main(void) {
PwmOut led(LED_GREEN);
TSISensor tsi;Serial usbserial(USBTX, USBRX);
float tsinum;
while (true) {
tsinum = tsi.readPercentage();
usbserial.printf("%4.2f\r\n", tsinum);
led = 1.0 - tsinum;
wait(0.1);
}
}
これを実行すると、
0.00
0.00
0.00
0.01
0.28
0.66
0.90
0.92
0.92
0.84
0.43
0.22
0.03
0.02
0.00
0.13
0.52
0.80
0.91
となり、予想通り、触っていない時に0、FREESCALEというシルク印刷が正しく読める向きでボードを見たときに、右から左に行くに従って、1.0へと近い数値となった。
予想通りの挙動が確認できたので、とりあえずセンサー確認もOKということに。
mbedは、利用している部品のライブラリを上手に利用することで、色々な昨日を簡単に利用することができる。これ以上のテストはボードにピンヘッダを実装しないと行けないので、とりあえずこれより先はまた気が向いたら、にしよう。