arduino 输出PWM信号抖动

voidRoll_Pitch_Control(){if(Angle_Filtered_Roll>0){val_Roll=Angle_Filtered_Roll;servo... void Roll_Pitch_Control()
{
if(Angle_Filtered_Roll > 0)
{
val_Roll=Angle_Filtered_Roll;
servo_filter();
val_Roll=map(abs(val_Roll),0,90,90,180);
Serial.println(val_Roll);
myservo.write(val_Roll);
}
else
{
val_Roll=Angle_Filtered_Roll;
servo_filter();
val_Roll=map(abs(val_Roll),0,90,90,0);
Serial.println(val_Roll);
myservo.write(val_Roll);
}
如上控制代码,输出的pwm信号会一直抖动,但是有随数据变化的趋势 求解救
展开
 我来答
wupingjun315
推荐于2017-09-07 · TA获得超过339个赞
知道小有建树答主
回答量:103
采纳率:100%
帮助的人:97.5万
展开全部
在Arduino中,servo是一个库,可以简单的操作舵机。但从servo库的底层代码上来看,它使用了定时器中断,如果你调用了servo库,同时还使用串口通信的功能,那么,恭喜你,对于部分Arduino的板卡来说,一定会抖动。原因很简单,因为串口通信和servo都要使用定时器,所以就不正常了。
就像我一直在教学Arduino的过程中所强调的那样,库是别人写好你来用的,核心的东西你不知道,没准什么时候就有问题就冲突了,要想学好学精,还是要自己通过代码来实现各种功能,不仅性能好,而且还锻炼了你自己的综合能力。
提示你一点关于舵机的知识。驱动舵机,需要产生PWM信号,普通模拟舵机能识别50HZ的PWM信号,其中每个信号周期内,高电平的持续时间代表舵机的驱动角度。500uS为最小舵量,1500为中立舵量,2500为最大舵量,你可以使用micros()这个函数来精确控制高电平的持续时间。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
查晓筠0i5
2014-11-23 · TA获得超过2752个赞
知道大有可为答主
回答量:2.1万
采纳率:1%
帮助的人:4965万
展开全部
需要帮你完成设计吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式