天线|RF射频
直播中

黄淳

7年用户 172经验值
私信 关注
[问答]

nrf24L01通信如何在接受端上识别?

                                         
                                                                            关于nrf24L01的问题,请问原子哥我在发送端进行不同的操作(比如我要实现按1号按键实现一个功能,按2号按键实现另一个功能)怎么在接受端上识别?


该怎么写程序,谢谢。

回帖(4)

李欣

2020-5-4 09:38:48
自己定个协议,就可以了。

比如按1号键,发送字母a

按2号键,发送字母b

接收端根据收到的a,b来判断执行对应的操作。
举报

魏霖

2020-5-4 09:44:01

原子哥你好,现在可以实现你所说的功能了,但是偶尔会出错。比如我按1键灯1亮灯2灭,2键灯2亮灯1灭;但是偶尔效果却会反过来1键灯2亮;也出现了1键按3次灯1才亮,2键也是按3次灯2亮,不多不少就三次。

        while(!nRF24L01_RxPacket(Rx_Buf)) //等待接收数据 ,返回1则接收到数据 ,在等待接收数据期间,可以随时变成发送模式  

            {

                        if(KEY8==0)         //按了按键8   则变成发送模式,发送对应数据,发送完后变成接收模式 

                        {       

                                delay_ms(10);//消抖动 

                                if(KEY8==0)

                                {   

                                    uchar Tx_Buf1[]={1};  //发送的数据                           

                                         while(!KEY8);

                                        TX_Mode();         //发送模式 

                                    nRF24L01_TxPacket(Tx_Buf1);        // 发送Tx_Buf1中的数据                                                                         

                                        break;             //退出最近的循环,从而变回接收模式,这句关键

                                 }

                               

                         }



                          if(KEY7==0)         //按了按键7   则变成发送模式,发送对应数据,发送完后变成接收模式 

                        {       

                                delay_ms(10);//消抖动 

                                if(KEY7==0)

                                {   

                                    uchar Tx_Buf1[]={2};

                                         while(!KEY7);

                                        TX_Mode();         //发送模式 

                                    nRF24L01_TxPacket(Tx_Buf1);        // 发送命令数据                                                               

                                        break;             //退出最近的循环,从而变回接收模式,这句关键

                                 }

                         }

                       

                       if(Rx_Buf[0]==1)           //若接收到对应的数据则实现对应功能 

                          {         

                                   delay_ms(10);                  

                         2=0xf0;                   //灯1亮灯2灭

                         }

                   

                    if(Rx_Buf[0]==2)

                        {

                                    delay_ms(10);

                         2=0x0f;

                         delay_ms(300);

                        P2=~P2;

                         delay_ms(300);          

                         

                         }

                                                                    

           } 





请问问题出在什么地方?
举报

刘燕

2020-5-4 09:54:56

仿真跟踪看看。
举报

郭楚

2020-5-4 10:08:33
LZ做好了吗?我现在正在做和你差不多的实验,能和你交流一下吗/
举报

更多回帖

发帖
×
20
完善资料,
赚取积分