• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

arduino驱动舵机速度问题

yhj416606438 2018-07-11 浏览量:2877
arduino驱动舵机速度太快,能不能慢一些,就是占空比调节的指定宽度有个时间设置的函数有吗?比如0度到90度我需要转动3秒完成,但是直接驱动到90度速度太快了半秒就到90度了
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • #include <Servo.h>    // 声明调用Servo.h库
    Servo myservo;        // 创建一个舵机对象
    int pos = 0;          // 变量pos用来存储舵机位置
    void setup() { 
        myservo.attach(9);  // 将引脚9上的舵机与声明的舵机对象连接起来
    } 
    
    void loop() { 
       for(pos = 0; pos < 90; pos += 1){    // 舵机从0°转到90°,每次增加1°          
          myservo.write(pos);           // 给舵机写入角度   
          delay(33);                    // 延时33ms让舵机转到指定位置
       }
        delay(255); 
        for(pos = 90; pos>=1; pos-=1) {    // 舵机从90°转回到0°,每次减小1°                               
           myservo.write(pos);        // 写角度到舵机     
           delay(33);                 // 延时33ms让舵机转到指定位置
        } 
        delay(255); 
    }
    舵机一度一度的转,每转一度延时33ms,90度*33ms大约为3秒钟。

    • 发布于 2018-07-11
    • 举报
    • 评论 0
    • 5
    • 0

其他答案 数量:17
  • 你不要一次就转90度,根据你想要的速度,调整旋转次数,舵机旋转都要用到延时的
    • 发布于2018-07-11
    • 举报
    • 评论 0
    • 0
    • 0

  • 使用自增或者自减函数,配合延时函数,让舵机平滑转动。看了一下,一楼的程序是正确的。
    • 发布于2018-07-11
    • 举报
    • 评论 0
    • 0
    • 0

  • 就如第一楼回答的程序那样就可以了,实际上你只需要知道程序的流程就能编写自己的程序了,你每次给舵机一个控制信号的时候,就延时一下,直到舵机转到90度的时候停止就可以,这个延时你可慢慢一点一点的调试出来。
    • 发布于2018-07-11
    • 举报
    • 评论 0
    • 0
    • 0

  • 使用一个循环函数 大概有3秒的时间 然后里面进行角度调整 从0-90 自己设置需要的角度个数 只要平滑转动就行 
    • 发布于2018-07-11
    • 举报
    • 评论 0
    • 0
    • 0

  • 我是通过分步达到的,比如0-90度,那么我写一个循环,从0到90,一次0 1 2 3...90,或者想快些就间隔2,使用这种方法。
    • 发布于2018-07-11
    • 举报
    • 评论 0
    • 0
    • 0

  • 对脉冲计数就行了,一个脉冲的时间可以自己定义
    • 发布于2018-07-11
    • 举报
    • 评论 0
    • 0
    • 0

  • 别一次旋转90度,分多次,中间延时。
    • 发布于2018-07-11
    • 举报
    • 评论 0
    • 0
    • 0

  • 每次转的角度小一些不就可以了么,中间加上延时
    • 发布于2018-07-11
    • 举报
    • 评论 0
    • 0
    • 0

  • 你可以每秒转30度,或是500ms转15度,还可以再细分啊
    • 发布于2018-07-11
    • 举报
    • 评论 0
    • 0
    • 0

  • 每次转1度,中间加个delay函数就好了
    • 发布于2018-07-11
    • 举报
    • 评论 0
    • 0
    • 0

  • 写个i++,每度一个delay,


    或者加个步数变量,走一步减1,直到步数减到0,每步一个延时

    • 发布于2018-07-12
    • 举报
    • 评论 0
    • 0
    • 0

  • 舵机的运动本来就是一步到位,给定了一个角度之后就会一下子运行到指定的位置,想你所说的这种情况的话,可以使用一个延时一步一步的运行到指定位置,比如冲1运动到10,需要3秒的话,把3秒分成10分,300ms运动一次,一次运动1个角度就可以了。其他情况类似。


    • 发布于2018-07-12
    • 举报
    • 评论 0
    • 0
    • 0

  • 一度一度的增加,它的延时就慢了


    • 发布于2018-07-13
    • 举报
    • 评论 0
    • 0
    • 0

  • 可以的,减小你的控制频率就会减慢运动控制效果
    • 发布于2018-07-24
    • 举报
    • 评论 0
    • 0
    • 0

  • 需要通过代码实现

    把总角度拆分成1度1度的运动,

    每次移动后,延时一定时间

    • 发布于2018-07-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 可以选择步数更细分的步进电机,使用延时控制。
    • 发布于2018-07-31
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

arduino驱动舵机速度问题