OpenEdv-开源电子网

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

关于nrf24l01收发问题

[复制链接]

5

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2017-7-24
在线时间
12 小时
发表于 2018-4-20 13:20:52 | 显示全部楼层 |阅读模式
1金钱
本人用的是dht11测量到了外面的温度和湿度值想通过nrf24l01发送出去  怎么把数据放进去了 tx-buf?

最佳答案

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

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] wendu=[/backcolor]tx-buf[0]*256+[/backcolor]tx-buf[1];[/backcolor] 2:sprintf 进去 [/backcolor] sprintf([/backcolor]tx-buf,“%f,%f”,wendu,shidu[/bac ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

51

主题

2165

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10652
金钱
10652
注册时间
2017-4-14
在线时间
2780 小时
发表于 2018-4-20 13:20:53 | 显示全部楼层
wuli毛 发表于 2018-4-20 17:36
能有个例子么  
本人菜鸟

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就可以了
回复

使用道具 举报

51

主题

2165

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10652
金钱
10652
注册时间
2017-4-14
在线时间
2780 小时
发表于 2018-4-20 16:41:27 | 显示全部楼层
1:放大100或者1000倍,对256取余 取商,放进去    2:sprintf 进去   3:结构体共同体
回复

使用道具 举报

5

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2017-7-24
在线时间
12 小时
 楼主| 发表于 2018-4-20 17:36:08 | 显示全部楼层
275891381 发表于 2018-4-20 16:41
1:放大100或者1000倍,对256取余 取商,放进去    2:sprintf 进去   3:结构体共同体

能有个例子么  
本人菜鸟
回复

使用道具 举报

5

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2017-7-24
在线时间
12 小时
 楼主| 发表于 2018-4-21 16:18:32 | 显示全部楼层
275891381 发表于 2018-4-20 13:20
1:放大100或者1000倍,对256取余 取商,放进去   wendu=30.25;
shidu=60;[/ ...

已经按照你的办法一 弄了一下 我只是先弄了一个温度值传输过去 但是接受的LCD上面还是没有显示温度值  
while(1)
        {         

          if(NRF24L01_TxPacket(tmp_buf)==TX_OK)               
                        {
                                tmp_buf[0]=temperature*100/256;
                                tmp_buf[1]=temperature*100%256;
                                  tmp_buf[32]=0;//¼óèë½áêø·û
                               
                                        }       

接受  NRF24L01_RX_Mode();       
        while(1)
                {                                                                                   
                        if(NRF24L01_RxPacket(tmp_buf)==0)//ò»μ©½óêÕμ½DÅÏ¢,ÔòÏÔê¾3öà′.
                        {
                                tmp_buf[33]=0;//¼óèë½áêø·û
                                temperature=tmp_buf[0]*256+tmp_buf[1];
                                LCD_ShowNum(30+40,150,temperature,2,16);
回复

使用道具 举报

51

主题

2165

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10652
金钱
10652
注册时间
2017-4-14
在线时间
2780 小时
发表于 2018-4-21 16:27:40 | 显示全部楼层
wuli毛 发表于 2018-4-21 16:18
已经按照你的办法一 弄了一下 我只是先弄了一个温度值传输过去 但是接受的LCD上面还是没有显示温度值  
...

你这无线调通没有下,是不是跨度有点大,还有接收端可以串口看看,收的是啥,别上来就用屏幕显示呀,功能越多出错点越多
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-23 03:31

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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