ZBLOG

#define E1A 2 #define E1B 3 #define LeftMotor1 4 #define LeftMotor2 5 int valA=0,ValAB=0; float m,o; int flag=0,flag1=0; int speedc=70,speedgord=750;//speed_a:自定速度初始值 speed_b:目标速度 int speedb=70...

这段代码看起来是用于控制电机速度的。它使用两个编码器(E1A和E1B)来测量实际速度,并通过调整PWM信号输出到左侧电机(LeftMotor1)来控制速度。

具体流程如下:

  1. 定义引脚和变量:定义了引脚的映射关系和一些变量。

  2. 定时器中断函数timer():每100毫秒计数一次,用于计算编码器测得的脉冲数。

  3. 初始化设置:配置引脚模式和串口通信,启动定时器中断。

  4. 主循环loop():

    • 设置电机转速:使用analogWrite()函数设置左侧电机(LeftMotor1)的PWM输出。

    • 判断是否需要调整速度:

      • 如果flag为1,表示已经达到100毫秒计数,进行速度调整。
      • 将valA赋值给m,并打印m的值。
      • 清零valA和flag变量。
    • 根据目标速度进行加减速控制:

      • 如果m大于目标速度speedgord,则减小speedc以减慢电机转速。
      • 如果m小于目标速度speedgord,则增加speedc以加快电机转速。
    • 延迟0毫秒(即立即执行下一次循环)并重新开始计时器和中断。

这段代码有两个loop()函数,我假设是复制粘贴错误,你需要删除一个loop()函数以保持代码的正确性。另外,请确保你在编码器和电机方面的硬件连接正确,并且对于编码器测量的脉冲数与速度之间的关系(m和o变量)进行适当的校准。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=17156

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?