OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4266|回复: 11

NRF24L01怎么发送陀螺仪数值

[复制链接]

31

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
294
金钱
294
注册时间
2018-5-3
在线时间
69 小时
发表于 2018-6-2 15:45:26 | 显示全部楼层 |阅读模式
1金钱
是使用正点原子程序源码,想用无线通信把陀螺仪的数值发送出去,要怎么改???
QQ截图20180602154249.jpg
QQ截图20180602154341.jpg

验证2.zip

5.02 MB, 下载次数: 84

最佳答案

查看完整内容[请看2#楼]

你就是不愿意帖子里面搜索呀,这是之前回复的[/backcolor]http://www.openedv.com/forum.php?mod=viewthread&tid=269823&page=1#pid828966[/backcolor] [/backcolor] 1:放大100或者1000倍,对256取余 取商,放进去 [/backcolor]wendu=30.25;[/backcolor] shidu=60;[/backcolor] tx-buf[0]=wendu*100/256;[/backcolor] tx-buf[1]=wendu*100%256;[/backcolor] shidu类似[/backcolor] 接收端还原就可以了[/backcolor] ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

51

主题

2165

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10652
金钱
10652
注册时间
2017-4-14
在线时间
2780 小时
发表于 2018-6-2 15:45:27 | 显示全部楼层
17862984059 发表于 2018-6-3 14:51
无线已经有一个数组,怎么把数据放到数组里面

你就是不愿意帖子里面搜索呀,这是之前回复的http://www.openedv.com/forum.php?mod=viewthread&tid=269823&page=1#pid828966

1:放大100或者1000倍,对256取余 取商,放进去   wendu=30.25;
shidu=60;
tx-buf[0]=wendu*100/256;
tx-buf[1]=wendu*100%256;
shidu类似
接收端还原就可以了
wendu=tx-buf[0]*256+tx-buf[1];
2:sprintf 进去   
sprintf(tx-buf,“%f,%f”,wendu,shidu
3:结构体共同体

typedef struct _data_struct{
float wendu;   //占用4字节
float shidu; //占用4字节
//可以继续添加,累加和小于等于32就可以了
}data_struct;
typedef union _data_union
{
   u8             tx_buff[32];
   data_struct    data_temp;
}data_union;
主函数里面
data_union  data;
data.data_temp.wendu=wendu;
data.data_temp.shidu=shidu;


发动的时候发送
data.tx_buff就可以了


回复

使用道具 举报

55

主题

474

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2374
金钱
2374
注册时间
2017-8-7
在线时间
207 小时
发表于 2018-6-2 16:47:20 | 显示全部楼层
可以建立一个数组,用来存储陀螺仪的值,然后要发送的时候把数组的值赋给无线发送的数组里
qq1950361006,互帮互助,共同进步。
回复

使用道具 举报

51

主题

2165

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10652
金钱
10652
注册时间
2017-4-14
在线时间
2780 小时
发表于 2018-6-2 17:00:27 | 显示全部楼层
要么拆分到temp_buf,要么结构体加共同体弄到temp_buf,这帖子里都很多人回答了,你这闭门造车呀
回复

使用道具 举报

26

主题

1533

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6369
金钱
6369
注册时间
2015-8-25
在线时间
1004 小时
发表于 2018-6-2 17:34:52 | 显示全部楼层
陀螺仪的数据填充到NRF的发送数组里即可
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复

使用道具 举报

31

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
294
金钱
294
注册时间
2018-5-3
在线时间
69 小时
 楼主| 发表于 2018-6-3 14:50:40 | 显示全部楼层
275891381 发表于 2018-6-2 17:00
要么拆分到temp_buf,要么结构体加共同体弄到temp_buf,这帖子里都很多人回答了,你这闭门造车呀

主要我不知道这怎么拆分,不知道怎么搜索,能详细说明一下吗
回复

使用道具 举报

31

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
294
金钱
294
注册时间
2018-5-3
在线时间
69 小时
 楼主| 发表于 2018-6-3 14:51:23 | 显示全部楼层
kbq1950361006 发表于 2018-6-2 16:47
可以建立一个数组,用来存储陀螺仪的值,然后要发送的时候把数组的值赋给无线发送的数组里

无线已经有一个数组,怎么把数据放到数组里面
回复

使用道具 举报

31

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
294
金钱
294
注册时间
2018-5-3
在线时间
69 小时
 楼主| 发表于 2018-6-4 15:38:56 | 显示全部楼层
275891381 发表于 2018-6-2 15:45
你就是不愿意帖子里面搜索呀,这是之前回复的http://www.openedv.com/forum.php?mod=viewthr ...

if(p>0)//pitch:俯仰角.单位 0.01度。-9000 - 9000 对应 -90.00 -> 90.00 度
                                                                {
                                                               
                                                                tmp_buf[0]=0;
                                                                tmp_buf[1]=p/256;
                                                                tmp_buf[2]=p%256;       
                                                                q=tmp_buf[1]*256+tmp_buf[2];
                                                                printf("\r\nq=%d\r\n",(int)q);
                                                                }else {      
                                                                              p=-p;
                                                                        tmp_buf[0]=1;
                                                                        tmp_buf[1]=p*100/256;
                                                                        tmp_buf[2]=p*100%256;       
                        q=-(tmp_buf[1]*256+tmp_buf[2]);
                                                                         printf("\r\nq=%d\r\n",(int)q);
                                                                       }




为什么我直接在发送端还原时候的是就已经不同
回复

使用道具 举报

51

主题

2165

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10652
金钱
10652
注册时间
2017-4-14
在线时间
2780 小时
发表于 2018-6-4 16:08:50 | 显示全部楼层
17862984059 发表于 2018-6-4 15:38
if(p>0)//pitch:俯仰角.单位 0.01度。-9000 - 9000 对应 -90.00 -> 90.00 度
                                                                {
                                                               

首先你要发出来 p  q 的定义类型,其次你p为正没乘100,不过没啥影响
回复

使用道具 举报

31

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
294
金钱
294
注册时间
2018-5-3
在线时间
69 小时
 楼主| 发表于 2018-6-4 16:51:26 | 显示全部楼层
275891381 发表于 2018-6-4 16:08
首先你要发出来 p  q 的定义类型,其次你p为正没乘100,不过没啥影响

P和q我都定义成u16了
回复

使用道具 举报

31

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
294
金钱
294
注册时间
2018-5-3
在线时间
69 小时
 楼主| 发表于 2018-6-4 16:53:59 | 显示全部楼层
275891381 发表于 2018-6-4 16:08
首先你要发出来 p  q 的定义类型,其次你p为正没乘100,不过没啥影响

我把第一位弄成1或0用来符号的判断,后续的我都没有乘100或都乘以100  还原的数据也是不一样的
回复

使用道具 举报

51

主题

2165

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10652
金钱
10652
注册时间
2017-4-14
在线时间
2780 小时
发表于 2018-6-4 17:48:58 | 显示全部楼层
17862984059 发表于 2018-6-4 16:51
P和q我都定义成u16了

p q是u16那么他俩就不可能是负值定义成s16吧
看着感觉你的p又带小数就float吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 22:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表