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