Arduino读取HMC5883L三轴电子罗盘传感器

一、接线图
HMC5883L SCL ----- Arduino A5
HMC5883L SDA ----- Arduino A4
HMC5883L 正极 ----- Arduino 3.3V
HMC5883L 负极 ----- Arduino GND
在这里插入图片描述

二、Arduino读取代码

#include <Wire.h>
#include <HMC5883L.h>
HMC5883L compass;
void setup()
{
    Serial.begin(9600);
    Wire.begin();
    compass = HMC5883L();
    compass.SetScale(1.3);
    compass.SetMeasurementMode(Measurement_Continuous);
}
void loop()
{
    MagnetometerRaw raw = compass.ReadRawAxis();
    MagnetometerScaled scaled = compass.ReadScaledAxis();
    float xHeading = atan2(scaled.YAxis, scaled.XAxis);
    float yHeading = atan2(scaled.ZAxis, scaled.XAxis);
    float zHeading = atan2(scaled.ZAxis, scaled.YAxis);
    if(xHeading < 0) xHeading += 2*PI;
    if(xHeading > 2*PI) xHeading -= 2*PI;
    if(yHeading < 0) yHeading += 2*PI;
    if(yHeading > 2*PI) yHeading -= 2*PI;
    if(zHeading < 0) zHeading += 2*PI;
    if(zHeading > 2*PI) zHeading -= 2*PI;
    float xDegrees = xHeading * 180/M_PI;
    float yDegrees = yHeading * 180/M_PI;
    float zDegrees = zHeading * 180/M_PI;
    Serial.print("xDegrees");
    Serial.print(xDegrees);
    Serial.print(",");
    Serial.print("yDegrees");
    Serial.print(yDegrees);
    Serial.print(",");
    Serial.print("zDegrees");
    Serial.print(zDegrees);
    Serial.println(";");
    Serial.println();
    delay(2000);
} 

三、细节Tips

  1. 需要先在Arduino中安装HMC5883L.zip包;
  2. 若Wire.h不能识别,是因为HMC5883L.h文件中Wire.h导入包的路径不对;
  3. 若Arduino版本低了,HMC5883L.cpp中需要进行修改,#include “WProgram.h” 改成 #include “Arduino.h”;
  4. 若HMC5883L.cpp不能进行数据读取,是引文#include “WProgram.h” 中采用旧的接口调用方式,均要将send and receive 方法进行替换为write、read方式。

四、成功读取数据

  1. 注意串口接收数据波特率为程序中设置的9600。 在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值