官方舵机库(Servo)的使用
arduino控制舵机在论坛中已经有,你可以点击这里Arduino如何控制盛辉舵机正反转,下面我就来介绍下官方舵机库的一些语法及用法! 官方舵机库的介绍:http://arduino.cc/en/Tutorial/Sweep 电路连接:我们使用的舵机有3根线,分别为橙色(信号线)、红色(VCC)和褐色(GND)。在此特别提醒,舵机的实验中要使用外接电源哦~小心烧坏控制板。 下面介绍下库中函数的使用: 1、attach():绑定Arduino引脚为舵机变量 语法
servo.attach(pin) servo.attach(pin, min, max) 参数
servo:一个Servo类型的变量 pin:舵机连接的Arduino引脚编号 min:(可选): 脉冲宽度,以微秒为单位,对应舵机的最小角度(0度)(默认为544) max:(可选): 脉冲宽度,以微秒为单位,对应舵机的最大角度(180度)(默认为2400)
2、write():写一个值到舵机,控制相应的主轴
语法
servo.write(angle) 参数
servo:一个Servo类型的变量 angle:写入舵机的值(从0到180)
3、writeMicroseconds():写一个值(单位为微秒uS)到舵机,控制相应的主轴
语法
servo.writeMicroseconds(uS)
参数
servo:一个Servo类型的变量 uS:写入的值微秒级(整型int) 说明:在标准舵机中,这将会设置主轴的角度。在标准舵机系统参数值中1000是完全的逆时针位置,2000是完全的顺时针位置,而1500则在中间(即1.5ms)。当然,有些制造商不会完全按照标准来执行,导致有些舵机可能会在700到2300的范围响应。在此注意,试图驱动舵机超出范围,会使得其处于一个大电流状态,应该尽力避免!!连续旋转舵机时,舵机就会以write()类似的响应方式进行工作。
4、read():读取当前的舵机角度(该值是最近一次调用write()函数的角度)
语法
servo.read() 参数
servo:一个Servo类型的变量
返回值
舵机的角度(范围0到180)
5、attached():检查舵机变量是否绑定Arduino引脚
语法
servo.attached() 参数
servo:一个Servo类型的变量 返回值
True or False (如果舵机已经绑定则返回True,否则返回False)
6、detach():解除舵机变量与Arduino管脚的绑定
语法
servo.detach() 参数
servo:一个Servo类型的变量 库的用法就是这些,要想能够灵活的运用他们还需要多多练习~~~
我们看下官方给我们提供的两个例子:Knob 和 Sweep。 Knob例子是利用电位器来控制舵机角度(官方地址): - // Controlling a servo position using a potentiometer (variable resistor)
- // by Michal Rinott <http://people.interaction-ivrea.it/m.rinott>
- #include <Servo.h>
-
- Servo myservo; // create servo object to control a servo
-
- int potpin = 0; // analog pin used to connect the potentiometer
- int val; // variable to read the value from the analog pin
-
- void setup()
- {
- myservo.attach(9); // attaches the servo on pin 9 to the servo object
- }
-
- void loop()
- {
- val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023)
- val = map(val, 0, 1023, 0, 179); // scale it to use it with the servo (value between 0 and 180)
- myservo.write(val); // sets the servo position according to the scaled value
- delay(15); // waits for the servo to get there
- }
复制代码 Servo myservo; 创建对象用来控制舵机;
Sweep例子是直接控制舵机往复摆动(官方地址): - // Sweep
- // by BARRAGAN <http://barraganstudio.com>
- // This example code is in the public domain.
- #include <Servo.h>
- Servo myservo; // create servo object to control a servo
- // a maximum of eight servo objects can be created
- 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>=1; 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
- }
- }
复制代码上面两个官方的例子很简单,相信大家通过上面的语法学习,对于这两个例子的理解一定会有所帮助!!
|