2021年1月20日 星期三

[Arduino]使用PWM控制伺服馬達(Servo motor)

 在Arduino中有寫好一個庫Servo.h可以引用(相關文件)

 以下的範例為馬達先置中(90度),
 一秒後,往左轉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值為
     1500=>90度,
     2100=>150度,
     900=>30度,
     可動範圍120度。
 (在Arduino中稱為Microseconds)
 所以推算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作轉換了(相關文件)
 int pulse = map(myServo.read(),0,180,600,2400);

沒有留言:

張貼留言