[!--tag.name--]

HMC5883L简单测方向角程序

标签:HMC5883L   

《HMC5883L简单测方向角程序》这篇文章中存在错误,具体如下:

*错误描述:
*联系邮箱:

HMC5883L本身是能测量XYZ三轴与地磁场磁感线夹角等一系列数据的,但是实际使用中最常用的就是需要得到方向角。

下面的一段简单代码就是获得方向角的。输出的范围是0~360°,表示HMC5883L模块X轴(模块上有标出)

与地理北极的夹角(顺时针旋转角)

#include

#include

HMC5883L compass;

int error = 0;

void setup()

{

Wire.begin();

compass = HMC5883L();

error = compass.SetScale(1.3);

if(error != 0) {

初始化失败 /*这个表示对模块的初始化设置失败,需要执行重新启动(拉低RST)一类的命令,当然如果不需检查,这个if也可以忽略,下同*/

}

error = compass.SetMeasurementMode(Measurement_Continuous);

if(error != 0) {

初始化失败

}

int HMC() /*这里我写成了一个函数,HMC()的返回值即为所求*/

{

MagnetometerRaw raw = compass.ReadRawAxis();

MagnetometerScaled scaled = compass.ReadScaledAxis();

int MilliGauss_OnThe_XAxis = scaled.XAxis;

float heading = atan2(scaled.YAxis, scaled.XAxis);

float declinationAngle = 0.0457;

heading += declinationAngle;

if(heading < 0)