LSM303DLHC 関数リファレンス

(2014.8.25 作成)

 加速度、磁気センサーであるLSM303DLHCを使用するためのクラスリファレンスです。ただ使うだけであればDiscovery基板の公式サンプルコード(F3Discoveryならstm32f3_discovery_lsm303dlhc.c/.h)の方が高機能かつ確実です。違いといえば

  • I2Cをコード内で初期化している公式に比べ、こちらは本サイトで公開しているI2Cクラスを使用しているので、Arduinoでも利用可能です。またI2Cのベースクラスを継承したクラスを作成すれば任意のマイコンで利用可能になります。
  • データを6バイト連続して読み出すので、同一測定のデータになります。公式サイトの場合1バイトずつ読むため違うタイミングの測定データを読んでいる可能性があります。
  • 変換式があっているか不安ですがfloat値で取り出します。
  • FIFO, Filterなどの高機能な関数は(まだ)実装しておらず、単に初期化して値を読むことしか出来ません。

 磁気センサー部の使用方法が不明なので、磁気データと温度測定結果はかなり怪しいです。今後使い方が判明した時点で修正したいと思います。ご存知の方が居られればぜひ教えてください。

コンストラクタ

プロトタイプ

LSM303DLHC(const DKS::I2C::II2C *I2C);

戻り値

なし

引数

I2C

I2C_Baseクラスへのポインタ

備考

F3 Discovery基板の場合は既に実装されているのでI2C1を使用してください。

デバイスが応答するまで待つ

プロトタイプ

void WaitTillDeviceReady(void)const;

戻り値

なし

引数

なし

備考

応答がなければ無限ループになります。

加速度センサーの値を返す

プロトタイプ

void ReadAccData(float* Data)const;

戻り値

なし

引数

Data

測定値を格納するポインタ XYZ順3個のfloat

備考

 

磁気センサーの値を返す

プロトタイプ

void ReadMagData(float* Data)const;

戻り値

なし

引数

Data

測定値を格納するポインタ XYZ順3個のfloat

備考

 確認手段がないのでわかりませんが、正しい値を返しているように思えません。

温度センサーの値を返す

プロトタイプ

void ReadTemperature(float &Temperature)const;

戻り値

なし

引数

Temperature

温度データ

備考

明らかに正しくない値を返します。

仕様書では8 LSB/degと書いてあるのですが、正直よくわからない表現です。