C-STyleでコンパス活用
ダイセン電子工業の「HMC6352デジタルコンパスDSR1302」を使えば、今の向きが基準の方向に向いているかどうかが判断できる。
なお、同じセンサ素子を使うストロベリーリナックスの「ディジタルコンパスモジュール HMC6352」も同じようにTJ3Bで使用でき、こちらのほうが安価だが、コネクタや固定用の穴などは自分で用意する必要がある。
▲左はダイセン工業電子、右がストロベリーリナックス。右はユニバーサル基板にセンサとコネクタをハンダ付けし、基板に開けた穴で固定した。I2CコネクタはTJ3Bと同じピン配置にしておくと後で悩まない。
いろいろなところで安価(数百円〜)に売られているHMC5883Lを使ったものはTJ3Bではそのまま使用できないので注意する。使用するためにはC-Styleの改造が必要になる。以下のサイトが参考になるが、内容が理解できない場合は使用をお勧めしない。
- e-gadgetやTJ3で地磁気センサHMC5883Lを使う方法1/3(セルフテスト) | demura.net
- e-gadgetやTJ3で地磁気センサHMC5883Lを使う方法2/3(キャリブレーション) | demura.net
- e-gadgetやTJ3で地磁気センサHMC5883Lを使う方法3/3(実際に使おう!) | demura.net
C-Style上でコンパスセンサを使った方向チェックでは、今の向きが指定した向きから誤差±何度の範囲内であるかどうかを調べることができる。以下は方向チェックの一例。
- ifでだいたい北向き(350〜10度)
- elseifで東向き(10〜180度 0〜10度部分はifで除外済)
- elseで上記以外の西向き(180〜350度 350〜0(360)度部分はifで除外済)
の3方向をチェックしている。
elseif では 10〜180度170度分の範囲をチェックしたいので、条件を「95 Deg(+/-)85」としても同様に動作するが、そうするとifの範囲を調整するたびにelseifの条件も調整し直す必要がある。例のように「90 Deg(+/-)90」としておけばifの範囲を変更しても、elseifの範囲は変更する必要がない。なるべく手間がかからない条件設定になるよう工夫する。