☛ 功能說明

利用 Arduino UNO 開發板控制步進馬達 28BYJ-48 轉動方向。當步進馬達的順時針轉動時,點亮綠色 LED 燈;馬達反轉時,點亮黃色 LED 燈;馬達停止時,點亮紅色 LED 燈。步進馬達的動作順序爲,先順時針轉動一圈,接着逆時針轉動一圈,然後停止二秒後,再重複動作順序。

☛ 使用材料

Arduino UNO R3  開發板 × 1、ULN2003 芯片 × 1、步進馬達 28BYJ-48 × 1、LED × 3、電阻 220Ω × 3。

☛ 電路圖及麪包板接線圖

☛ 程式碼

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

#define STEPS 2038                            //步進馬達轉動一圈步進數
Stepper stepper(STEPS, 2, 4, 3, 5);           //建立 Steeper 資料形態的物件
int motoStep = 63.68395;                      //步進馬達 28BYJ-48 每一步步進值
int i = 1;                                    //步進馬達動作索引值

void setup()
{
     pinMode(7, OUTPUT);                      //數位接腳 7 連接至黃色 LED
     pinMode(8, OUTPUT);                      //數位接腳 8 連接至綠色 LED
     pinMode(9, OUTPUT);                      //數位接腳 9 連接至紅色 LED
     stepper.setSpeed(10);                    //設定步進馬達的轉速爲 10 RPM
}

void loop()
{
     switch(i)
     {
           case 1:
                  digitalWrite(7,LOW);        //熄滅黃色 LED
                  digitalWrite(8,HIGH);       //熄滅黃色 LED
                  digitalWrite(9,LOW);        //熄滅紅色 LED
                  stepper.step(-32*motoStep); //馬達正轉 32 步
                  i++;
                  break;
           case 2:
                  digitalWrite(7,HIGH);       //點亮黃色 LED
                  digitalWrite(8,LOW);        //熄滅綠色 LED
                  digitalWrite(9,LOW);        //熄滅紅色 LED
                  stepper.step(32*motoStep);  //馬達反轉 32 步
                  i++;
                  break;
           case 3:
                  digitalWrite(7,LOW);        //熄滅黃色 LED
                  digitalWrite(8,LOW);        //熄滅綠色 LED
                  digitalWrite(9,HIGH);       //點亮紅色 LED
                  stepper.step(0*motoStep);   //馬達停止轉動
                  delay(2000);                //延遲 2 秒
                  i=1;
                  break;
    }
 }