找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2540|回复: 2
打印 上一主题 下一主题
收起左侧

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

[复制链接]
跳转到指定楼层
楼主
求助 在用nRF24L01无线模块做遥控小车中遇到一个奇葩的问题 我有两个nRF24L01无线模块 一发一收 还有一个USB转nRF24L01无线模块  
现已实现单片机与单片机  电脑与单片机的无线传输 遇到的问题如下:
电脑发送数据 01 02 03  (单片机2接收)
                                                   LED等分别亮1下   电机1和2 正转
                                                    LED等分别亮2下   电机1和2 反转
                                                     LED等分别亮3下   电机1 正转  2停              基本能完成设计的目的测试成功,但是换成单片机来发射就遇到问题了,

单片机1发送数据 01 02 03  (单片机2接收)      LED等分别亮1下   电机不转
                                                                           LED等分别亮2下   电机不转
                                                                            LED等分别亮3下   电机不转       指示灯正常  电机就是不转

单片机1发射  电脑接收 数据也是正常的。
请大神指教一下这种情况是什么问题啊 ,按道理说接收端是独立的 ,只管分辨接收到的数据是什么就能运转,实在摸不着头脑

IMG_1174.JPG (2.43 MB, 下载次数: 25)

无线模块

无线模块
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

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

使用道具 举报

板凳
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()主函数外声明全局变量就可以了



回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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