轉載:http://blog.csdn.net/u012223913/article/details/51242054
首先先明確一點,360度舵機無法像180度舵機一樣控制角度,它只能控制方向和速度。
arduino的<servo.h>
庫提供兩個函數控制舵機。write()
和writeMicroseconds()
;這兩個函數都可以控制360/180這兩種舵機。
write()
1 servo.write(x); //x->[0,180];
360度舵機:
通過x設定舵機的速度(0代表一個方向的全速運行,180代表另一個方向的全速運行,90則不動)。
1 #include <Servo.h> 2 3 Servo myservo; 4 5 void setup() 6 { 7 myservo.attach(9); 8 myservo.write(90); // 舵機不動 9 } 10 11 void loop() 12 {}
180度舵機:
通過x設定舵機舵盤的角度。
#include <Servo.h> Servo myservo; void setup() { myservo.attach(9); myservo.write(90); // 在中間位置 } void loop() {}
值得注意的是如果x不等於90,360度舵機會一直不停的轉。而180度舵機在到達設定角度后會停下。
writeMicroseconds()
1 servo.writeMicroseconds(x) //x->[1000,2000]
360度舵機:
這個函數對於360度舵機的作用就是write()函數的模擬版,[1000,2000]對應[0,180]。比如writeMicroseconds(1500)相當於write(90),舵機不動。
180度舵機 :
通過x設定角度,一般來說1000是完全逆時針旋轉后的位置,2000是完全順時針旋轉的位置,1500在中間。
注意有些制造商並不完全遵守這個標准,所以舵機經常會對700到2300之間的數值產生反應。實際數值可以自己試試。
1 #include <Servo.h> 2 3 Servo myservo; 4 5 void setup() 6 { 7 myservo.attach(9); 8 myservo.writeMicroseconds(1500); // 舵機設定為中間位置。 9 } 10 11 void loop() 12 {}