Arduino控制舵机的程序

Arduino控制舵机的程序,第1张

int readPin = 0; //用来连接电位器

int servopin = 7; //定义舵机接口数字接口7

void servopulse(int angle)//定义一个脉冲函数

{

int pulsewidth=(angle11)+500; //将角度转化为500-2480的脉宽值

digitalWrite(servopin,HIGH); //将舵机接口电平至高

delayMicroseconds(pulsewidth); //延时脉宽值的微秒数

digitalWrite(servopin,LOW); //将舵机接口电平至低

delayMicroseconds(20000-pulsewidth);

}

voidsetup()

{

pinMode(servopin,OUTPUT);//设定舵机接口为输出接口

}

voidloop()

{

//读取电位器(传感器)的读数,接到33V,值范围从0到660左右

int readValue = analogRead(readPin);

//把值的范围映射到0到165左右

int angle = readValue / 4;

//发送50个脉冲

for(int i=0;i<50;i++)

{

//引用脉冲函数

servopulse(angle);

}

}

先要知道舵机控制的原理,控制波形PWM的占空比决定了舵机的控制角度,你需要每个角度它所对应的占空比是多少,从1个角度转到另1个角度是占空比慢慢转变的过程,而波形的周期是不变的。接下来就是单片机控制PWM波形占空比的实现,这个比较简单,可以用定时器也可以不用,具体程序思路就不说了,每个人思路都不一样,能保证输出波形正确就OK了

定时器0表示的是脉冲总周期20ms,定时器1表示的是正脉冲宽度(如pwm_value = 1500时表示正脉冲宽度为15ms), 而while循序只是为了改变正脉冲宽度。运行过程是:定时器0和定时器,1同时开启,此时pwm = 1,定时器1的时间到了之后pwm = 0,并关闭定时器1,等待脉冲总周期达到20ms即定时器0中断,在定时器0的中断服务中又将pwm赋值为1并开启定时器1……以这样的方式循环就可以控制舵机转动了!

以上就是关于Arduino控制舵机的程序全部的内容,包括:Arduino控制舵机的程序、我想用AVR的一个定时器中断来控制舵机的左右45度转动,请问中断程序怎么写呢、51单片机控制舵机转角的C语言程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9710640.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存