标题:
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