使用Arduino控制伺服馬達,一直是筆者最感興趣的部份,因為這等於是讓我們的電子電路開始可以「動」起來。馬達的種類有許多種,在創客的世界中比較常會遇到是直流馬達、伺服馬達和步進馬達。伺服馬達可以讓我們自由地指定轉到的角度,非常適合用來讓我們的系統做出一些指定的動作之主要驅動機構,這個單元就先以最簡單的SG90伺服碼達為例,進行驅動伺服馬達的操作實習。以下是這顆伺服馬達連線到 Arduino的樣子:
它的連接方式非常簡單,我們就不另外畫電路圖,直接使用文字說明就可以了。大部份的伺服馬達只有3條線,分別是黃色的信號線,紅色的電源正極,以及棕色的接地GND線。如上圖所示,我們把黃色接到D9,紅色接到5V,以及棕色接到GND,在接線的方面就算是完成了。以下是驅動伺服馬達最簡單的程式碼:
https://gist.github.com/skynettw/96350162160360e8656761a21164019d
在上述程式中,第一行要先引入伺服馬達專用的函式庫標頭檔案Servo.h,然後使用Servo宣告一部伺服馬達的操作實例m,在setup函數中使用m.attach(9),把這個操作實例和第9支接腳進行連結。接下來的事就很簡單了,只要使用m.write()就可以控制伺服馬達的角度,傳入的數值就是想要伺服馬達轉動到的角度。每一個伺服馬達可以轉動的角度不完全相同,大部份都是0~180,也有一些是可以360度旋轉的,那種的操作方法又不太一樣。
以下是程式的執行範例影片: