#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秒钟。
写个i++,每度一个delay,
或者加个步数变量,走一步减1,直到步数减到0,每步一个延时
舵机的运动本来就是一步到位,给定了一个角度之后就会一下子运行到指定的位置,想你所说的这种情况的话,可以使用一个延时一步一步的运行到指定位置,比如冲1运动到10,需要3秒的话,把3秒分成10分,300ms运动一次,一次运动1个角度就可以了。其他情况类似。
一度一度的增加,它的延时就慢了
需要通过代码实现
把总角度拆分成1度1度的运动,
每次移动后,延时一定时间