☛ 功能說明

利用 Arduino UNO 開發板控制固定角度型伺服馬達 ( 舵機 ) 在 0 ~ 180° 來迴轉動。 伺服馬達電源可以接在 Arduino UNO 開發板的 +5V 端,但如果伺服馬達所需的電源高於 Arduino UNO 開發板 +5V 輸出電流時,則必須外接電源,且輸出電源必須得大於伺服馬達的工作電流,伺服馬達才能正常工作。

☛ 使用材料

Arduino UNO R3 開發板 × 1、SG-90 伺服馬達 × 1。

☛ 電路圖及麵包板接線圖

☛ 程式碼

#include<Servo.h>                     //使用 Servo.h 函式庫

Servo myServo;                        //建立 myServo 資料形態的物件
int   angle;                          //固定型伺服馬達轉動角度

viod setup()
{
     myServo.attach(2);               //數位接腳 2 連接至伺服馬達信號線
}

void loop()
{
     for(angle=0;angle<=180;angle++)  //由 0° 逆時針轉動至 180°
     {
         myServo.write(angle);        //設定轉動角度
         delay(15);                   //延遲 15ms 來控制轉動速度
     }
     for(angle=180;angle>=0;angle--)  //由 180° 順時針轉動至 0°
     {
         myServo.write(angle);        //設定轉動角度
         delay(15);                   //延遲 15ms 來控制轉動速度
     }
}

 

☛ 練習

⑴ 設計 Arduino 程式,控制固定型伺服馬達在 45°到 135° 之間來回擺動。

#include<Servo.h>                     //使用 Servo.h 函式庫

Servo myServo;                        //建立 myServo 資料形態的物件
int   angle;                          //固定型伺服馬達轉動角度

void setup()
{
     myServo.attach(2);               //數位接腳 2 連接至伺服馬達信號線
}

void loop()
{
     for(angle=45;angle<=135;angle++) //由 45° 逆時針轉動至 135°
     {
         myServo.write(angle);        //設定轉動角度
         delay(15);                   //延遲 15ms 來控制轉動速度
     }
     for(angle=135;angle>=45;angle--) //由 135° 順時針轉動至 45°
     {
         myServo.write(angle);        //設定轉動角度
         delay(15);                   //延遲 15ms 來控制轉動速度
     }
}

 

⑵ 設計 Arduino 程式,控制固定型伺服馬達在 45°到 135° 之間來回擺動,每 20ms 移動 5°。

#include<Servo.h>                      //使用 Servo.h 函式庫

Servo myServo;                         //建立 myServo 資料形態的物件
int   angle;                           //固定型伺服馬達轉動角度

void setup()
{
     myServo.attach(2);                //數位接腳 2 連接至伺服馬達信號線
}

void loop()
{
     for(angle=45;angle<=135;angle+=5) //由 45° 逆時針轉動至 135°,每次遞增 5°
     {
         myServo.write(angle);         //設定轉動角度
         delay(20);                    //延遲 20ms 來控制轉動速度
     }
     for(angle=135;angle>=45;angle-=5) //由 135° 順時針轉動至 45°,每次遞減 5°
     {
         myServo.write(angle);         //設定轉動角度
         delay(20);                    //延遲 20ms 來控制轉動速度
     }
}