very professionnel, thank you it's really useful |
准确度怎么样 |
实验开源代码 项目四:通过串口实时绘制电子罗盘方位(12等分)的波形 说明:实时数值 0 = N,3 = E,6 = S,9 =W
|
9、校准QMC5583L传感器 QMC5883LCompass库包含校准功能和实用程序大纲,可帮助您校准QMC5883L芯片。校准是一个两步过程。 步骤1:运行校准程序 a、确保已连接QMC5883L芯片。 b、在示例> QMC5883LCOMPASS>校准下找到随附的校准草图。 c、将校准草图上传到您的arduino,然后打开串行监视器。 d、校准过程开始时,通过移动传感器来伴随屏幕上的指示。 c、收集完所有校准数据后,复制副本的代码 compass.setCalibration(-1537, 1266, -1961, 958, -1342, 1492); 可能需要保存它以备将来参考。 步骤2:使用校正资料 a、项目的程序,将然后复制的代码行直接插入到compass.init()调用下方。 b、照常使用QMC5883LCompass库。 建议您使用提供的校准草图来生成传感器的预设和替代,但也可以使用该 compass.setCalibration(X_MIN, X_MAX, Y_MIN, Y_MAX, Z_MIN, Z_MAX); 函数添加自己的预设和替代。 |
8、精细QMC5583L传感器输出 在传感器读数似乎反弹的情况下,平滑可以提供帮助。QMC5883L指南针库使用滚动平均值功能来存储(N)个传感器读数并返回每个轴的平均值。该平均还对方位角和方向输出进行平滑处理。 如果启用,该功能的第二部分将采用内部滚动逐步通过的当前替代和替代,将其从总体上中删除。这可以帮助消除在错误的读数中可能发生的替代的高点和低点。 应该注意的是,内置的平滑功能将导致额外的处理时间。 compass.setSmoothing(STEPS, ADVANCED); 在循环之前启用平滑调用。 步骤:int,使结果平滑的步骤数。1到10的有效值。更高的步长等于更平滑,但处理时间缩短。 *:启用此功能将使平滑效果更好,但处理时间缩短。* void setup(){ |
4、获取方位角的数值 要获取计算出的方位角(罗盘度)值,只需调用getAzimuth();。 void loop(){ int a = compass.getAzimuth(); } 5、获取方向/方位 QMC5883L指南针库可计算传感器指向的方向范围和方向。您可以调用两个函数。 要获取传感器面向的方向的12点值,可以调用getBearing(azimuth)。这会将罗盘的360度范围划分为12个部分,并按顺时针顺序返回值0-12。在这种情况下,0 = N,4 = E,8 = S,12 =W。如果您希望滚动自己的方向输出功能而不需要计算,则此功能很有用。 void loop(){ azimuth = compass.getAzimuth(); byte b = compass.getBearing(azimuth); } 要获取传感器指向方向的12点文字表示,可以致电getDirection(azimuth);。这将产生一个char数组[3],其中的字母代表每个方向。由于我们无法返回数组,因此需要通过引用传递值。 void loop(){ azimuth = compass.getAzimuth(); char myArray[3]; getDirection(myArray, azimuth); } 如果要打印这些值,可以这样: void loop(){ azimuth = compass.getAzimuth(); char myArray[3]; getDirection(myArray, azimuth); Serial.print(myArray[0]); Serial.print(myArray[1]); Serial.print(myArray[2]); Serial.println(); } |
QMC5883L Compass库函数的几个使用要点 1、QMC5883L与Arduino Uno / Nano的连接 VCC O ---- O +5v GND O ---- O GND SCL O ---- O A5 SDA O ---- O A4 DRDY O ---- X NOT CONNECTED 2、入门 首先,在程序顶部包括QMC5883L指南针库。 #include <QMC5883LCompass.h> QMC5883LCompass compass; 然后在setup()函数中添加: void setup(){ compass.init(); } 3、获取X,Y或Z轴的数值 要获取X,Y或Z传感器的读数,只需调用所需的功能。 void loop(){ int x = compass.getX(); int y = compass.getY(); int z = compass.getZ(); } |
实验开源代码, 项目三:通过串口实时绘制电子罗盘方位角的波形
|
QMC5883LCompass.h 库文件
|
QMC5883L Compass是一个Arduino库,用于将QMC5583L系列模块使用指南针(电子罗盘)功能。支持: 1、获取XYZ轴的值。 2、计算方位角。 3、获得16点方位角轴承方向(0-15)。 4、获取16点方位角轴承名称(N,NNE,NE,ENE,E,ESE,SE,SSE,S,SSW,SW,WSW,W,WNW,NW,NNW) 5、通过滚动平均和最小/最大消除来平滑XYZ读数。 6、任选的芯片组模式。 QMC5883LCompass.cpp 库文件
|
项目二:简易测量方位角度的实验开源代码(数值在0-11之间,每个数值间隔30度)
|
项目一:简易测量方位角度的实验开源代码
|