使用Arduino控制伺服電機


伺服電機有一個軸,可以使用編碼訊號將其定位到特定的角度位置。幸運的是,我們不需要理解旋轉軸到特定角度所需的編碼訊號。Arduino Servo庫幫我們完成了這項工作。

電路圖

如你所見,伺服電機的Vcc(通常為紅色)連線到5V,GND(通常為黑色)連線到GND,訊號引腳(上圖中為白色,通常為白色、黃色或橙色)連線到Arduino的9號引腳。

程式碼演練

我們將演練Arduino自帶的一個示例程式碼。轉到**檔案 → 示例 → Servo → Sweep**

或者,程式碼也可以在這裡的GitHub上訪問:https://github.com/arduinolibraries/Servo/blob/master/examples/Sweep/Sweep.ino

如你所見,我們首先包含Servo庫,定義Servo物件,並將變數pos設定為0。

#include <Servo.h>

Servo myservo; // create servo object to control a servo
// twelve servo objects can be created on most boards

int pos = 0;

在setup函式中,我們將伺服電機的訊號引腳連線到建立的伺服物件。這裡,由於我們將訊號引腳連線到9號引腳,因此在引數中將指定9。

void setup() {
   myservo.attach(9); // attaches the servo on pin 9 to the servo object
}

在loop函式中,我們將**pos**從0變化到180,步長為1,並且在每一步中,給伺服電機15毫秒的時間來達到該位置。

然後,我們重複相同的步驟,這次是從180度到0度。這在迴圈中不斷重複。

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 >= 0; 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
   }
}

更新於:2021年5月31日

瀏覽量:330

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.