センサーの値が0のままで、あれれーと思っていたら整数値だと思っていた変数がfloatでした。 %f を表示しようと思いましたがあれこれしないといけませんでした。
環境
- SEGGER Embedded Studio
- Nordic SDK15.2
printf / scanf
floatは標準では使えなくなっている。
「Project」-「Options...」で「Common」を選び、左側の上下矢印でSolutionのOptionにします。「Code」-「Printf・Scanf」の「Printf Floating Point Supported」を「No」から変更します。
この設定をした後ビルドしようとすると下記のエラーが出ますが「OK」とします。
NRF_LOG_INFO
NRF_LOG_INFO("TWI ACC XYZ: %f %f %f.", accel_X,accel_Y,accel_Z);
としたら、値が0で出力されました。ここでfloatを使うには、上記printf/scanfとは別のやりかたが必要になります。
NRF_LOG_INFO("TWI ACC Float accel XYZ: " NRF_LOG_FLOAT_MARKER "\r\n", NRF_LOG_FLOAT(accel_X));
これでOK.
ちなみに、以下のようにすると1行に2つの float を表示できましたが、
NRF_LOG_INFO("TWI ACC Float accel XYZ: " NRF_LOG_FLOAT_MARKER " " NRF_LOG_FLOAT_MARKER, NRF_LOG_FLOAT(accel_X),NRF_LOG_FLOAT(accel_Y));
同様にして 3つの float を含ませるとコンパイルできませんでした。