デジタルコンパスHMC5883L
共立エレで買った、HMC5883Lのボード。スイッチサイエンスさん他のものも基本的には同じ。端子配列は違うかも。
Tyler Weaverさんのライブラリを使った(2番目にインポート数が多かったから)これ、http://mbed.org/users/tylerjw/code/HMC5883L/
でも、一部、間違いがある。下記を修正すればよろしい。 HMC5883L.cpp
char HMC5883L::getConfigurationB()
{
char cmd[2];
cmd[0] = CONFIG_A_REG; // register b address
を、CONFIG_B_REG に変更。
それから、HMC5883のレジスタはX,Z,Yの順であるのでgetHeadingXYの引数が違ってる。
void HMC5883L::getXYZ(int16_t output[3])
{
戻り値は、X=output[0]、Z=output[1]、Y=output[2] の順
double HMC5883L::getHeadingXY()
{
int16_t raw_data[3];
getXYZ(raw_data);
double heading = atan2(static_cast<double>(raw_data[2]), static_cast<double>(raw_data[0])); // heading = arctan(Y/X)
最初の引数はraw_data[1]じゃなくて、raw_data[2]
Please log in to post comments.
