在Arduino中有寫好一個庫Servo.h可以引用(相關文件)。
以下的範例為馬達先置中(90度),
一秒後,往左轉60度(轉至30度的位置)。
一秒後,往左轉60度(轉至30度的位置)。
#include <Servo.h> int angle = 90; Servo myServo; void setup() { Serial.begin(9600); myServo.attach(4, 600, 2400); myServo.write(angle); Serial.println(myServo.read()); delay(1000); myServo.write(30); Serial.println(myServo.read()) delay(1000); }
設定第幾個pin腳輸出訊號,訊號的pulse_width最大及最小值。
不同型號Servo的值皆不同,手邊這顆pulse_width值為
不同型號Servo的值皆不同,手邊這顆pulse_width值為
1500=>90度,
2100=>150度,
900=>30度,
可動範圍120度。
(在Arduino中稱為Microseconds)
所以推算0度=>600,180度=>2400
所以推算0度=>600,180度=>2400
myServo.attach(4, 600, 2400);
設定Servo的角度(預設0~180)
myServo.write(angle);
也可直接寫入pulse_width
*註 一般認為的pulse,對Arduino來說是pulse_width
myServo.writeMicroseconds(pulse_width);
可讀取現在Servo的角度
myServo.read();
但是沒有讀取pulse_width(Microseconds)的方法
所以只能用map作轉換了(相關文件)
所以只能用map作轉換了(相關文件)
int pulse = map(myServo.read(),0,180,600,2400);
沒有留言:
張貼留言