# VarSpeedServo **Repository Path**: keyduan_admin/VarSpeedServo ## Basic Information - **Project Name**: VarSpeedServo - **Description**: Arduino舵机控制库 基于https://github.com/netlabtoolkit/VarSpeedServo优化初始姿态 - **Primary Language**: Arduino - **License**: LGPL-2.1 - **Default Branch**: master - **Homepage**: https://gitee.com/x223222981/VarSpeedServo - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 7 - **Created**: 2020-10-29 - **Last Updated**: 2022-06-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

VarSpeedServo- Arduino库

>目录 >================= > > * [说明](#说明) > * [示例1](#示例1) > * [示例2](#示例2) > * [库函数](#库函数) > * [安装](#安装) > # 说明 这是一个用于舵机控制的`Arduino`库,[Fork源地址](https://github.com/netlabtoolkit/VarSpeedServo),允许使用最多8个舵机异步运行(因为它使用中断)。此外,您可以自定义移动的速度,可以选择等待(block)直到伺服移动完成,并创建异步运行的移动序列。 此代码是对标准`Arduino Servo.h`库的改编,该库最初由`Korman`改编,并发布在[Arduino论坛](http://forum.arduino.cc/index.php?topic=61586.0)上,添加了更改舵机速度功能。随后[Philip van Allen](https://github.com/pvanallen)进行了`1.0 +`更新,增加了等待移动完成的功能。 * 支持最多8个舵机 * 支持所有舵机同步、异步运行 * 支持自定义舵机速度 * `write()`函数发起一个移动指令后,可以选择等待移动完成后再返回 * 支持发送一系列动作(每个动作都有位置和速度) ### 示例1 一个舵机移动,等待第一个移动完成,然后执行另一个舵机移动 ```c++ #include VarSpeedServo myservo; // 创建一个舵机对象myservo来控制舵机 void setup() { myservo.attach(9); // 将9号引脚连接到舵机对象myservo } void loop() { myservo.write(180, 30, true); // 移动到180度,使用30的速度,等待移动完成 myservo.write(0, 30, true); // 移动到0度,使用30的速度,等待移动完成 } ``` ### 示例2 两个伺服同时以不同的速度移动,等待双方完成后再做另一个动作 ```c++ #include // 创建舵机对象 VarSpeedServo myservo1; VarSpeedServo myservo2; void setup() { myservo1.attach(9); myservo2.attach(8); } void loop() { int LEF = 0; int RIG = 180; int SPEED1 = 160; int SPEED2 = 100; myservo1.write(LEF, SPEED1); myservo2.write(LEF, SPEED2); myservo1.wait(); // 等待myservo1移动完成 myservo2.wait(); // 等待myservo2移动完成 myservo1.write(RIG, SPEED1); myservo1.wait(); //等待myservo1移动完成 myservo1.write(LEF, SPEED1); myservo2.write(RIG, SPEED2); myservo1.wait(); myservo2.wait(); myservo1.write(RIG, SPEED1); myservo1.wait(); delay(1000); } ``` 其他示例包含在发行版中,可以从`Arduino示例`部分进行查看。 # 库函数 - `attach(pin ) ` // 告知Arduino舵机的数据线连接在哪一个引脚上 - `attach(pin, min, max ) ` //设置舵机对象连接引脚及其最小和最大脉宽值(以微秒为单位) ` ` - `write(value) ` // 设置舵机移动目标角度值 - `write(value, speed) ` // 设置舵机运行速度并移动新位置,0=全速,1~255由慢到快 - `write(value, speed, wait) ` // wait是一个布尔值,如果为真,则会导致函数调用block ,直到移动完成 - `writeMicroseconds() ` // 设置舵机脉冲宽度(以微秒为单位) - `read() ` // 获取当前舵机角度值 - `readMicroseconds() ` //读取当前角度对应的脉宽 - `attached() ` // 检查某一个舵机对象是否连接在开发板引脚上 - `detach() ` // 将舵机对象与Arduino开发板断开连接 - `slowmove(value, speed) ` // 与write(value, speed)函数功能一样,为了与Korman的版本兼容而保留 - `stop() ` // 将舵机停止在当前位置 - `sequencePlay(sequence, sequencePositions) ` // 从位置0开始运行动作组序列 - `sequencePlay(sequence, sequencePositions, loop, startPosition) ` // 运行动作组序列,loop:循环是否启用(布尔值),startPosition:从指定位置开始 - `sequenceStop() ` // 在当前位置停止运行动作组序列 - `wait() ` // 等待舵机运行完成 - `isMoving() ` // 检查舵机当前是否在运动状态 # 安装 参考[太极创客>>为Arduino IDE安装添加库](http://www.taichi-maker.com/homepage/reference-index/arduino-library-index/install-arduino-library/)