☛ 功能说明

利用 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;
    }
 }