wending19 2024-03-19 15:24 采纳率: 0%
浏览 4

arduino舵机控制


#include<Servo.h>
Servo SFDJ;

int ultu=0;

void setup()
{
  SFDJ.attach(A4);
}
void loop()
{
  a();
}
void a()
{
  for(ultu=0;ultu<=90;ultu+=1)
  {
    SFDJ.write(ultu);
    delay(35);
  }
  for(ultu=90;ultu>=0;ultu-=1)
  {
     SFDJ.write(ultu);
     delay(35);
  }
  
    
}

为什么输入上面代码,舵机会顺时针一直转

  • 写回答

3条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-03-19 15:24
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    可能的原因是代码中的循环没有合理地控制舵机转动的角度,导致舵机会持续旋转。具体来说,循环中的代码每次只改变舵机的角度,但是没有限制其最大或最小角度。因此,舵机会随着循环不断地旋转,直到达到其极限位置才会停止。 为解决这个问题,需要在循环中添加判断条件,限制舵机转动的最大角度。例如,可以在第一个循环中添加以下判断条件:
    for (ultu = 0; ultu <= 90; ultu++) {
      if (ultu > 45) {  //限制角度在0-45度范围内
        break;
      }
      SFDJ.write(ultu);
      delay(35);
    }
    

    这样,当舵机旋转到45度时,循环就会停止,从而防止舵机不断旋转。类似地,也可以在第二个循环中添加合适的判断条件,限制舵机转动的最小角度。完整的代码如下:

    #include <Servo.h>
    Servo SFDJ;
    int ultu=0;
    void setup() {
      SFDJ.attach(A4);
    }
    void loop() {
      a();
    }
    void a() {
      for (ultu = 0; ultu <= 90; ultu++) {
        if (ultu > 45) {  //限制角度在0-45度范围内
          break;
        }
        SFDJ.write(ultu);
        delay(35);
      }
      for (ultu = 90; ultu >= 0; ultu--) {
        if (ultu < 45) {  //限制角度在45-90度范围内
          break;
        }
        SFDJ.write(ultu);
        delay(35);
      }
    }
    

    这样就能够避免舵机一直顺时针旋转的问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月19日

悬赏问题

  • ¥15 模电中二极管,三极管和电容的应用
  • ¥15 关于模型导入UNITY的.FBX: Check external application preferences.警告。
  • ¥15 气象网格数据与卫星轨道数据如何匹配
  • ¥100 java ee ssm项目 悬赏,感兴趣直接联系我
  • ¥15 微软账户问题不小心注销了好像
  • ¥15 x264库中预测模式字IPM、运动向量差MVD、量化后的DCT系数的位置
  • ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused
  • ¥20 关于web前端如何播放二次加密m3u8视频的问题
  • ¥15 使用百度地图api 位置函数报错?
  • ¥15 metamask如何添加TRON自定义网络