デジタルコンパス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.