2016年3月21日 星期一

Arduino的教學13-伺服馬達的使用(servo motor)

一、課程目標:學習利用可變電阻來控制伺服馬達
二、接線圖:

一般伺服馬達有三條線,電源(紅色)、接地(黑或棕色)、訊號線(白、黃、橘、藍....)
dataPin=9;

伺服馬達是控制轉幾度!最多180度。 三、程式碼:
Examples -> Servo -> Knob
每次轉1度,由1-180度 再轉回來
#include <Servo.h> // 匯入 Servo 這個 class
Servo myservo;          // 建立 myservo 這個 Servo 物件 
int pos = 0;                // 儲存伺服馬達旋轉角度

void setup()
{
  myservo.attach(9);  // 指定伺服馬達的 control line 為 Arduino Uno 的 pin 9
 } 

void loop()
{
  for(pos = 0; pos < 180; pos += 1)   // 一度一度由 0 度旋轉到 180 度
  {                                 
    myservo.write(pos);             
    delay(15);                      
  }
  for(pos = 180; pos>=1; pos-=1)     // 一度一度由 180 度旋轉到 0 度
  {                               
    myservo.write(pos);             
    delay(15);                      
  }
}


/*
 Controlling a servo position using a potentiometer (variable resistor)
 by Michal Rinott 

 modified on 8 Nov 2013
 by Scott Fitzgerald
 http://www.arduino.cc/en/Tutorial/Knob
*/

#include <Servo.h>

Servo myservo;  // create servo object to control a servo

int potpin = 0;  // 可變電阻的pin analog pin used to connect the potentiometer
int val;    // variable to read the value from the analog pin
int servoPin=9;//伺服馬達pin
void setup() {
  myservo.attach(servoPin);  // 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, 180);     // 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
}
四、作業練習:
如何將伺服馬達來回轉90度,三次?

沒有留言:

張貼留言