熱門(mén): 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂(lè)園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
|
發(fā)布時(shí)間: 2021-1-22 21:35
正文摘要:37款傳感器與模塊的提法,在網(wǎng)絡(luò)上廣泛流傳,其實(shí)Arduino能夠兼容的傳感器模塊肯定是不止37種的。鑒于本人手頭積累了一些傳感器和執(zhí)行器模塊,依照實(shí)踐出真知(一定要?jiǎng)邮肿觯┑睦砟睿詫W(xué)習(xí)和交流為目的,這里準(zhǔn)備 ... |
|
very professionnel, thank you it's really useful |
| 準(zhǔn)確度怎么樣 |
|
實(shí)驗(yàn)開(kāi)源代碼 項(xiàng)目四:通過(guò)串口實(shí)時(shí)繪制電子羅盤(pán)方位(12等分)的波形 說(shuō)明:實(shí)時(shí)數(shù)值 0 = N,3 = E,6 = S,9 =W
|
|
9、校準(zhǔn)QMC5583L傳感器 QMC5883LCompass庫(kù)包含校準(zhǔn)功能和實(shí)用程序大綱,可幫助您校準(zhǔn)QMC5883L芯片。校準(zhǔn)是一個(gè)兩步過(guò)程。 步驟1:運(yùn)行校準(zhǔn)程序 a、確保已連接QMC5883L芯片。 b、在示例> QMC5883LCOMPASS>校準(zhǔn)下找到隨附的校準(zhǔn)草圖。 c、將校準(zhǔn)草圖上傳到您的arduino,然后打開(kāi)串行監(jiān)視器。 d、校準(zhǔn)過(guò)程開(kāi)始時(shí),通過(guò)移動(dòng)傳感器來(lái)伴隨屏幕上的指示。 c、收集完所有校準(zhǔn)數(shù)據(jù)后,復(fù)制副本的代碼 compass.setCalibration(-1537, 1266, -1961, 958, -1342, 1492); 可能需要保存它以備將來(lái)參考。 步驟2:使用校正資料 a、項(xiàng)目的程序,將然后復(fù)制的代碼行直接插入到compass.init()調(diào)用下方。 b、照常使用QMC5883LCompass庫(kù)。 建議您使用提供的校準(zhǔn)草圖來(lái)生成傳感器的預(yù)設(shè)和替代,但也可以使用該 compass.setCalibration(X_MIN, X_MAX, Y_MIN, Y_MAX, Z_MIN, Z_MAX); 函數(shù)添加自己的預(yù)設(shè)和替代。 |
|
8、精細(xì)QMC5583L傳感器輸出 在傳感器讀數(shù)似乎反彈的情況下,平滑可以提供幫助。QMC5883L指南針庫(kù)使用滾動(dòng)平均值功能來(lái)存儲(chǔ)(N)個(gè)傳感器讀數(shù)并返回每個(gè)軸的平均值。該平均還對(duì)方位角和方向輸出進(jìn)行平滑處理。 如果啟用,該功能的第二部分將采用內(nèi)部滾動(dòng)逐步通過(guò)的當(dāng)前替代和替代,將其從總體上中刪除。這可以幫助消除在錯(cuò)誤的讀數(shù)中可能發(fā)生的替代的高點(diǎn)和低點(diǎn)。 應(yīng)該注意的是,內(nèi)置的平滑功能將導(dǎo)致額外的處理時(shí)間。 compass.setSmoothing(STEPS, ADVANCED); 在循環(huán)之前啟用平滑調(diào)用。 步驟:int,使結(jié)果平滑的步驟數(shù)。1到10的有效值。更高的步長(zhǎng)等于更平滑,但處理時(shí)間縮短。 *:?jiǎn)⒂么斯δ軐⑹蛊交Ч茫幚頃r(shí)間縮短。* void setup(){ |
|
4、獲取方位角的數(shù)值 要獲取計(jì)算出的方位角(羅盤(pán)度)值,只需調(diào)用getAzimuth();。 void loop(){ int a = compass.getAzimuth(); } 5、獲取方向/方位 QMC5883L指南針庫(kù)可計(jì)算傳感器指向的方向范圍和方向。您可以調(diào)用兩個(gè)函數(shù)。 要獲取傳感器面向的方向的12點(diǎn)值,可以調(diào)用getBearing(azimuth)。這會(huì)將羅盤(pán)的360度范圍劃分為12個(gè)部分,并按順時(shí)針順序返回值0-12。在這種情況下,0 = N,4 = E,8 = S,12 =W。如果您希望滾動(dòng)自己的方向輸出功能而不需要計(jì)算,則此功能很有用。 void loop(){ azimuth = compass.getAzimuth(); byte b = compass.getBearing(azimuth); } 要獲取傳感器指向方向的12點(diǎn)文字表示,可以致電getDirection(azimuth);。這將產(chǎn)生一個(gè)char數(shù)組[3],其中的字母代表每個(gè)方向。由于我們無(wú)法返回?cái)?shù)組,因此需要通過(guò)引用傳遞值。 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庫(kù)函數(shù)的幾個(gè)使用要點(diǎn) 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、入門(mén) 首先,在程序頂部包括QMC5883L指南針庫(kù)。 #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(); } |
|
實(shí)驗(yàn)開(kāi)源代碼, 項(xiàng)目三:通過(guò)串口實(shí)時(shí)繪制電子羅盤(pán)方位角的波形
|
QMC5883LCompass.h 庫(kù)文件
|
|
QMC5883L Compass是一個(gè)Arduino庫(kù),用于將QMC5583L系列模塊使用指南針(電子羅盤(pán))功能。支持: 1、獲取XYZ軸的值。 2、計(jì)算方位角。 3、獲得16點(diǎn)方位角軸承方向(0-15)。 4、獲取16點(diǎn)方位角軸承名稱(chēng)(N,NNE,NE,ENE,E,ESE,SE,SSE,S,SSW,SW,WSW,W,WNW,NW,NNW) 5、通過(guò)滾動(dòng)平均和最小/最大消除來(lái)平滑XYZ讀數(shù)。 6、任選的芯片組模式。 QMC5883LCompass.cpp 庫(kù)文件
|
項(xiàng)目二:簡(jiǎn)易測(cè)量方位角度的實(shí)驗(yàn)開(kāi)源代碼(數(shù)值在0-11之間,每個(gè)數(shù)值間隔30度)
|
|
項(xiàng)目一:簡(jiǎn)易測(cè)量方位角度的實(shí)驗(yàn)開(kāi)源代碼
|
Powered by 單片機(jī)教程網(wǎng)