標(biāo)題: 請教NRF24L01怎么傳輸MPU6050數(shù)據(jù)?float類型 [打印本頁]

作者: 阿杜666    時間: 2019-10-28 19:45
標(biāo)題: 請教NRF24L01怎么傳輸MPU6050數(shù)據(jù)?float類型
已經(jīng)完成兩個NRF24L01可以發(fā)送u8的數(shù)據(jù),接收u8的數(shù)據(jù)。
但是我想利用NRF24L01發(fā)送角度他是float類型的。
產(chǎn)生角度得是MPU6050.
我只會把他強制轉(zhuǎn)換例如:
u8 hw[0];float yaw;
hw[0]=(u8)yaw;
把hw[0]放到NRF24L01發(fā)送的函數(shù)中,想把他發(fā)送的u8數(shù)據(jù)轉(zhuǎn)換成float;
float acc[3];u8 hw[0];
acc[0]=float(hw[0]);
將acc[0]放到printf函數(shù)中,可是他只是加了小數(shù)點(1.0000...2.0000)這樣。
請大佬指教一下,怎么傳輸MPU6050數(shù)據(jù)?
謝謝!

作者: bai_yun_123    時間: 2019-10-29 09:02
單片機應(yīng)該是可以直接發(fā)送和輸出float類型的,或者你把數(shù)值*100000,這樣應(yīng)該是整形,傳輸過去后再做處理
作者: 飛機翻筋斗    時間: 2019-10-29 09:09
放大,然后分?jǐn)?shù)組存取
作者: xuyaqi    時間: 2019-10-29 09:46
最簡單辦法,把浮點數(shù)擴大變成整數(shù)發(fā)送,收到后縮小同樣的倍數(shù)。
作者: 阿杜666    時間: 2019-10-29 11:29
bai_yun_123 發(fā)表于 2019-10-29 09:02
單片機應(yīng)該是可以直接發(fā)送和輸出float類型的,或者你把數(shù)值*100000,這樣應(yīng)該是整形,傳輸過去后再做處理

可以舉個例子嗎?
作者: 阿杜666    時間: 2019-10-29 11:30
xuyaqi 發(fā)表于 2019-10-29 09:46
最簡單辦法,把浮點數(shù)擴大變成整數(shù)發(fā)送,收到后縮小同樣的倍數(shù)。

可以舉個例子嗎?
作者: 阿杜666    時間: 2019-10-29 11:31
飛機翻筋斗 發(fā)表于 2019-10-29 09:09
放大,然后分?jǐn)?shù)組存取

可以舉個例子嗎?
作者: yzwzfyz    時間: 2019-10-29 16:59
1、浮點數(shù)一般有4個字節(jié)組成,有規(guī)定的次序及格式。
2、如果直接發(fā)送浮點數(shù),也就是發(fā)送這4個字節(jié)。那么接收時必須有辦法準(zhǔn)確地按序接收并放置于你的目標(biāo)浮點數(shù)的內(nèi)存中(變量),不能有錯位。這就需要收發(fā)雙方協(xié)議一下。
3、假設(shè)你收到了一個字節(jié),你如何知道這個字節(jié)是不是屬于某個浮點數(shù),它是浮點數(shù)中的第幾個字節(jié)呢? 這就是為何要進行傳輸協(xié)議。

作者: xuyaqi    時間: 2019-10-30 16:45
阿杜666 發(fā)表于 2019-10-29 11:30
可以舉個例子嗎?

16位 int整數(shù)會用串口發(fā)送嗎,先把 int整數(shù)分成高8位與低8位,然后串口先發(fā)送高八位,再發(fā)送低八位,
作者: angmall    時間: 2019-10-30 18:18
用c語言關(guān)鍵字union來解決。

union xxx
{
  char c[4];
  float f;
}y;

定義一個“共用體”xxx,y作為“共用體變量”,里面再定義一個char類型的變量數(shù)組c[4]和float類型的變量f。

根據(jù)union的定義,里面的變量占用同一個內(nèi)存地址。所以,c[4]和f的內(nèi)存地址是一樣的,說的再通俗一點,就是c[4]的4個數(shù)實際上就是f的四個字節(jié)。







歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1