标题: 51单片机怎么控制一直来回摇摆的舵机停止在当前角度,主函数部分程序如下 [打印本页]

作者: YouOneOrd    时间: 2019-8-22 08:50
标题: 51单片机怎么控制一直来回摇摆的舵机停止在当前角度,主函数部分程序如下
void Time0_Int() interrupt 3
{
TH1  = 0xff;            
TL1  = 0x1a;
    if(count<jd)         
      pwm=1;               
    else
      pwm=0;                 
    count=(count+1);         
    count=count%80;     }



void main()
{
.............................
...............................
while(1){

if(dj==1)                                    //红外按键4被按下
   {

    while(jd<12)
  {
    jd++;
count=0;
     delay(500);
  }

  while(jd>1)
{ jd--;
count=0;
  delay(500);}
         }
if(dj==2)                                                      //红外按键5被按下
{
  count=jd;                                                //这里不会写程序了。。。。。。

}  
   
   
    }

......................................................
..............................................
}



作者: csmyldl    时间: 2019-8-27 16:25
程序中count用于计数PWM脉冲的周期,最大80,jd是维持高电平的时间计数,主程序中按下键时jd加1,或jd减1来控制舵机的运动,因为jd是不断变化的,所以舵机会来回摆动,要使舵机停留在某一位置,其实只需要固定jd值就可以,可以把程序改为按下4键 jd=4,按下5键jd=8,按下6键jd=6,这样就会使舵机停留在左右中三个位置.  (根据你程序中1个PWM周期80来算的,因为舵机PWM周期是20ms,而舵机旋转只有当高电平时间在1-2ms间偏转),高电平在1ms时逆时钟旋转到底,高电平在2ms时顺时钟旋转到底,高电平在1.5ms时旋转至中部




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1