黄工无刷电机学习
直播中

陈伟

7年用户 1484经验值
私信 关注
[问答]

请问arduino串口如何控制电机的正反转和开关?

请问arduino串口如何控制电机的正反转和开关?

回帖(1)

王莉

2021-10-14 10:13:35
用到了AccelStepperRBD_SerialManager两个头文件
#include "AccelStepper.h"
#include
RBD::SerialManager u***;

// 电机步进方式定义
#define FULLSTEP 4    //全步进参数
#define HALFSTEP 8    //半步进参数

// 定义步进电机引脚

#define motor1Pin1  8     // 一号28BYJ48连接的ULN2003电机驱动板引脚 in1
#define motor1Pin2  9     // 一号28BYJ48连接的ULN2003电机驱动板引脚 in2
#define motor1Pin3  10    // 一号28BYJ48连接的ULN2003电机驱动板引脚 in3
#define motor1Pin4  11    // 一号28BYJ48连接的ULN2003电机驱动板引脚 in4
                        
int motorRun = 0;                 


// 定义两个步进电机对象
// 定义中ULN2003驱动板引脚顺序为 in1-in3-in2-in4
// 1号电机设置为全步进运行,2号电机设置为全步进运行
AccelStepper stepper1(HALFSTEP, motor1Pin1, motor1Pin3, motor1Pin2, motor1Pin4);



void setup()
{  
  u***.start();
  stepper1.setMaxSpeed(2000);   // 设置电机最大速度为2000
  stepper1.setSpeed(300);      // 初始化电机速度为300
  
  
  
  u***.println("请输入参数:");   
}

void loop()
{  
   if (u***.onReceive())
   {     
    // 检查串口缓存是否有数据等待传输
    if(u***.isCmd("speed"))
    {
        int param = u***.getParam().toInt();  
        stepper1.setSpeed(param);
        motorRun = 1;
        
        u***.print("电机速度:");
        u***.println(param);
    }
   
    if(u***.isCmd("stop"))
    motorRun = 0;
    stepper1.disableOutputs();


   


  }
  if(motorRun == 1)
   stepper1.runSpeed();
   
}
举报

更多回帖

发帖
×
20
完善资料,
赚取积分