找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

51单片机nRF24L01无线模块遥控小车奇葩问题

查看数: 3025 | 评论数: 2 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2018-12-5 22:48

正文摘要:

求助 在用nRF24L01无线模块做遥控小车中遇到一个奇葩的问题 我有两个nRF24L01无线模块 一发一收 还有一个USB转nRF24L01无线模块   现已实现单片机与单片机  电脑与单片机的无线传输 遇到的问题 ...

回复

ID:437993 发表于 2018-12-7 00:47
经过无数次调试 终于实现了单片机1通过nrf2401无线控制单片机2  控制两个电机,可是为什么能成功完全不明白 请大神指教 程序
void main()
{
       uchar i, sdat;  
      此处声明变量,就无法通过单片机1无线控制   但是在开头声明此两个全局变量,把驱动电机子程序替换这个子程序的函数 就能实现单片机1的无线控制了 ,但是有个新问题,每个数据只能按一次,电机执行一次,再按就没有反应了,单片机复位后又可以每个键控制一遍,,,,,求大神分析分析啊
        while(NRF24L01_Check()); //检测到nrf2401才执行下一步
        NRF24L01_RT_Init();               
        while(1)
        {
                if(NRF_IRQ==0)                 // 如果接收到数据
                {               
                        if(NRF24L01_RxPacket(rece_buf)==0)//如果接受数据完成
                        {               
                        if(rece_buf[1]==1)  //如果收到数据是1
                        {
                                led=0;
                                delay(100);
                                led=1;     //led等闪一下
                            HC595SendData(0x18);驱动电机正转的子程序
}}}        delay(100);}}                                            此程序只有用电脑发送数据才能将电机驱动 单片机1发射不行

void HC595SendData(uchar sdat)   //L293D·驱动电机正转的子程序
{  
  uchar i;
                        for(i=0;i<8;i++)
   {
       SER = sdat>>7;         
       sdat= sdat<<1;      

        SCK = 1;         
        _nop_();
        _nop_();
        SCK = 0;   
                 
                    RCK=1;
              _nop_();
        _nop_();
              RCK=0;
   }                   
}

经过改了程序   删除 HC595SendData(0x18);驱动电机正转的子程序    在void main()主函数外声明全局变量就可以了



ID:370755 发表于 2018-12-6 09:26
硬件应该没有问题,LED亮了。应该查下字符有没有对上,电脑发的字符和单片机发送的字符,最好查看下发送的ascii码。

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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