Fireduino 开源创意平台 立即购买

拥有双核Cortex-M3处理器,集成高质量音频Codec和WiFi模组,拥有良好的IOT扩展性能,完美兼容Arduino IDE和Arduino标准接口,并支持FireBlock图形化编程软件,是一款首选的编程启蒙教学平台,更是一款开源的创意原型平台。

Servo

更新时间:2017-08-08 阅读:1927

Fireduino Servo

Fireduino Servo 库允许Fireduino板控制舵机。舵机集成了减速齿轮和一个可以精确控制的主轴。标准舵机允许主轴定位到不同的角度,通常是0到180度的范围。连续旋转舵机允许旋转轴被设置为各种不同的速度。
Fireduino板 最多支持多达30个舵机(每个pin都可以与舵机对象变量绑定),未绑定的数字引脚与PWM 功能不冲突。

Fireduino Servo 接线

舵机有三根线:电源线,地线和信号线。电源线通常是红色,应该连接到Fireduino板的5V端子上。地线通常是黑色或者棕色,应该连接到Fireduino板的GND接地端。信号线通常是黄色,橙色或者白色,应该连接到Fireduino板的数字管脚上。
注意舵机图纸的电源!如果你想驱动大于一两个以上的舵机,你可能需要一个隔离电源(而不是Fireduino板上的5V)。务必确认Fireduino的接地端和外部供电的接地端是连在一起的。

部分品牌线色参考
白红黑 白——信号 红——正极 黑——负极
橙红褐 橙——信号 红——正极 褐——负极

Fireduino Servo 相关参数

#define MIN_PULSE_WIDTH       544     // the shortest pulse sent to a servo  
#define MAX_PULSE_WIDTH      2400     // the longest pulse sent to a servo 
#define DEFAULT_PULSE_WIDTH  1500     // default pulse width when servo is attached
#define REFRESH_INTERVAL    20000     // minumim time to refresh servos in microseconds

Fireduino Servo API

attach(...)

   说明
       把舵机对象变量与引脚绑定,Fireduino 的数字引脚件都能被绑定。
语法 servo.attach(pin) servo.attach(pin, min, max)
参数 servo : 舵机对象 pin:被绑定的引脚数字编号 min :脉冲宽度,以微秒为单位,对应于舵机的最小角度(0到角度)(默认为544) max:脉冲宽度,以微秒为单位,对应于舵机的最大角度(180到角度),伺服(默认为2400)
返回 内部编号索引

detach()

   说明
       解除舵机对象与引脚的绑定关系。
语法 servo.detach();
参数 无
返回 无

write(...)

   说明
       写入一个数值到舵机,控制相应的主轴。标准舵机会设置主轴的角度,并移动主轴到目标位置。
对于一个连续旋转舵机,这将设定舵机的速度(0表示向一个方向全速运转,180表示相反方向全速运转,90左右的值则表示停止)。
语法 servo.write(angle);
参数 servo: 舵机对象的变量 angle: 写入舵机的数值,范围从0到180度。
返回 无

writeMicroseconds(...)

   说明
       写入一个微秒单位的数值(uS)到舵机,控制相应的主轴。标准舵机会设置主轴的角度。
标准舵机设置1000是完全的逆时针位置,2000是完全的顺时针位置,而1500则在中间(即1.5ms)。
语法 servo.writeMicroseconds(uS);
参数 servo: 舵机类型的变量 uS:微妙级的数值
返回 无

read()

   说明
       读取当前的舵机角度。
语法 servo.read();
参数 无
返回 当前的舵机角度

readMicroseconds()

   说明
       读取当前的舵机微秒单位数值。
语法 servo.readMicroseconds();;
参数 无
返回 当前的舵机微秒单位数值

attached()

   说明
      检查舵机变量是否绑定到管脚。
语法 servo.attached();
参数 无
返回 如果舵机已经绑定则返回True,否则返回False

Fireduino Servo 示例程序

#include <Servo.h>
Servo myservo;  // create servo object to control a servo
                // twelve servo objects can be created on most boards
int pos = 0;    // variable to store the servo position
void setup()
{
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
}
void loop()
{
  for(pos = 0; pos <= 180; pos += 1) // goes from 0 degrees to 180 degrees
  {                                  // in steps of 1 degree
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15ms for the servo to reach the position
  }
  for(pos = 180; pos>=0; pos-=1)     // goes from 180 degrees to 0 degrees
  {
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15ms for the servo to reach the position
  }
}