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)
赞() |