![]() |
發(fā)布時間: 2021-1-22 21:35
正文摘要:37款傳感器與模塊的提法,在網(wǎng)絡上廣泛流傳,其實Arduino能夠兼容的傳感器模塊肯定是不止37種的。鑒于本人手頭積累了一些傳感器和執(zhí)行器模塊,依照實踐出真知(一定要動手做)的理念,以學習和交流為目的,這里準備 ... |
very professionnel, thank you it's really useful |
準確度怎么樣 |
實驗開源代碼 項目四:通過串口實時繪制電子羅盤方位(12等分)的波形 說明:實時數(shù)值 0 = N,3 = E,6 = S,9 =W
|
9、校準QMC5583L傳感器 QMC5883LCompass庫包含校準功能和實用程序大綱,可幫助您校準QMC5883L芯片。校準是一個兩步過程。 步驟1:運行校準程序 a、確保已連接QMC5883L芯片。 b、在示例> QMC5883LCOMPASS>校準下找到隨附的校準草圖。 c、將校準草圖上傳到您的arduino,然后打開串行監(jiān)視器。 d、校準過程開始時,通過移動傳感器來伴隨屏幕上的指示。 c、收集完所有校準數(shù)據(jù)后,復制副本的代碼 compass.setCalibration(-1537, 1266, -1961, 958, -1342, 1492); 可能需要保存它以備將來參考。 步驟2:使用校正資料 a、項目的程序,將然后復制的代碼行直接插入到compass.init()調(diào)用下方。 b、照常使用QMC5883LCompass庫。 建議您使用提供的校準草圖來生成傳感器的預設和替代,但也可以使用該 compass.setCalibration(X_MIN, X_MAX, Y_MIN, Y_MAX, Z_MIN, Z_MAX); 函數(shù)添加自己的預設和替代。 |
8、精細QMC5583L傳感器輸出 在傳感器讀數(shù)似乎反彈的情況下,平滑可以提供幫助。QMC5883L指南針庫使用滾動平均值功能來存儲(N)個傳感器讀數(shù)并返回每個軸的平均值。該平均還對方位角和方向輸出進行平滑處理。 如果啟用,該功能的第二部分將采用內(nèi)部滾動逐步通過的當前替代和替代,將其從總體上中刪除。這可以幫助消除在錯誤的讀數(shù)中可能發(fā)生的替代的高點和低點。 應該注意的是,內(nèi)置的平滑功能將導致額外的處理時間。 compass.setSmoothing(STEPS, ADVANCED); 在循環(huán)之前啟用平滑調(diào)用。 步驟:int,使結果平滑的步驟數(shù)。1到10的有效值。更高的步長等于更平滑,但處理時間縮短。 *:啟用此功能將使平滑效果更好,但處理時間縮短。* void setup(){ |
4、獲取方位角的數(shù)值 要獲取計算出的方位角(羅盤度)值,只需調(diào)用getAzimuth();。 void loop(){ int a = compass.getAzimuth(); } 5、獲取方向/方位 QMC5883L指南針庫可計算傳感器指向的方向范圍和方向。您可以調(diào)用兩個函數(shù)。 要獲取傳感器面向的方向的12點值,可以調(diào)用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);。這將產(chǎn)生一個char數(shù)組[3],其中的字母代表每個方向。由于我們無法返回數(shù)組,因此需要通過引用傳遞值。 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庫函數(shù)的幾個使用要點 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()函數(shù)中添加: void setup(){ compass.init(); } 3、獲取X,Y或Z軸的數(shù)值 要獲取X,Y或Z傳感器的讀數(shù),只需調(diào)用所需的功能。 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讀數(shù)。 6、任選的芯片組模式。 QMC5883LCompass.cpp 庫文件
|
項目二:簡易測量方位角度的實驗開源代碼(數(shù)值在0-11之間,每個數(shù)值間隔30度)
|
項目一:簡易測量方位角度的實驗開源代碼
|
Powered by 單片機教程網(wǎng)