2021/01/01(FRI) | 【M5Stack】正月から数学。。。 | ||||||||
---|---|---|---|---|---|---|---|---|---|
はい
あけましておめでとうございます。 前回の地磁気センサーの サンプルのプログラムを ちょっと解析してた。 あ、一応、繰り返しで書いておこう。 M5Stack GRAYでデジタルコンパスを作ろうとしていて 地磁気センサーがBMM150ってのがハードが変わってます。 で、gitからサンプルを落としてきて 動かしたところまでできました。 まずはファイル構成はこんな感じ
ということでプログラム解析。 基本サンプルプログラムを中心に。 まず初期化。 ザックリ処理フローは↓こんな感じ でね、 最初の Wire.begin( 21, 22, 400000 ) ; は Wireクラスってのは I2C通信関連のクラスなんだけど 引数は、 データシートに書いてあります。 まずはピンの番号 BMM150のデータシートに クロック周波数が400kHz。 400kHz = 4000000 Hz ですね。 BMM150_Initialization(); は、BMM150の初期化をしています。 詳しくは省略。 で 初期化がおわったら あとは周期処理でデータを読み出すだけです。 ザックリ処理フローは↓こんな感じ まぁデータを読み出して xとyを用いて、arctan()してるだけですが・・・ arctan()とは ↓こんな感じです。 ただね、 センサーから取得されるデータって 原点(0,0)からの値でなく いろんな影響を受けてズレてます。 で キャリブレーションして 原点を補正するオフセット値をもとめて その値で補正して、arctan()すると 北が0°で南が180°って感じで 計算されます。 まぁ細かいI2C通信とか レジスタが云々かんぬんと プログラムを見ると大変ですが ザックリ必要なAPIだけ抑えておけば 簡単にデータは取得できそうです。 新年早々、頭使いすぎたwww |