天线|RF射频
直播中

范召琳

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

STM板通过NRF24L01控制舵机不能转动的原因?

我是用块板做STM32的无线通信实验的,一块是发送板,一块是接收板

我想用发送板的按键来控制接收板的舵机来进行转动,但是不行,接收得了信息,但是不能转动.....


发送端代码:


while(1)

{

  key=KEY_Scan();    //通过按键确定发送信息

  if(key==1)

  {

   tmp_buf[1]=1;

   TX_Mode();

   NRF24L01_TxPacket(tmp_buf);

  }else if(key==2)

  {

   tmp_buf[1]=2;

   TX_Mode();

   NRF24L01_TxPacket(tmp_buf);  

  }  

}


接收端代码:

while(1)

{

  if(NRF24L01_RxPacket(tmp_buf)==0)    //判断是否接收到信息

  {

   if(tmp_buf[1]==1)     //判断信息内容

   {

       ENGINE_VAL=500;

      delay_ms(280);

      ENGINE_VAL=1000;

      delay_ms(280);

      ENGINE_VAL=1500;

      delay_ms(280);

      ENGINE_VAL=2000;

      delay_ms(280);

   }else if(tmp_buf[1]==2)

   {

    LED0=!LED0;

    delay_ms(1000);   

   }

  }  

}

灯是可以控制亮灭的,但是不能控制舵机的转动......

请问为什么不能控制呢?是接收的间隔时间太小,舵机来不及转动就接收了下一个信息了?还是其他的问题?

希望能有人帮我解答一下.....


谢谢!



回帖(12)

h1654156194.5000

2020-4-26 11:35:02

不用无线的时候,舵机驱动正常么?
举报

林芳

2020-4-26 11:55:35

怀疑是不是你配置无线模块的时候,把舵机控制的一些配置给改了。

接收代码改一下:

while(NRF24L01_RxPacket(tmp_buf)!=0) ;//死循环等待正确接收一次数据

 while(1)//测试舵机

{

       ENGINE_VAL=500;

      delay_ms(280);

      ENGINE_VAL=1000;

      delay_ms(280);

      ENGINE_VAL=1500;

      delay_ms(280);

      ENGINE_VAL=2000;

      delay_ms(280);

  

 }
举报

李元宵

2020-4-26 12:13:24

我用你的程序做了个试验:我先把电机弄到不是原位,然后两个板都按了复位键,当没按发送端的KEY键时,舵机没有响声;当我按下KEY时,舵机就自动转到原位了!!但是之后就又变成只会响,无论怎么按都没反应了......

1.说明舵机可以受发送端的控制;

2.接收端的程序出错了;

谢谢原子兄了,我再改改程序,看看行不行!
举报

陈萌

2020-4-26 12:26:14

我用仿真测试了,他是可以进入

 while(1)//测试舵机 



       ENGINE_VAL=500; 

      delay_ms(280); 

      ENGINE_VAL=1000; 

      delay_ms(280); 

      ENGINE_VAL=1500; 

      delay_ms(280); 

      ENGINE_VAL=2000; 

      delay_ms(280); 

   

 }这个while里面的;但是进入一次有反应外(还要是不能完成舵机程序的反应),其他的进入都没反应了...
举报

更多回帖

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