gaochy1126 发表于 2025-6-26 17:28

步进电机

#include <AccelStepper.h>
#include <MultiStepper.h>

#define STEPPER1_DIR_PIN    6
#define STEPPER1_STEP_PIN   7
#define STEPPER2_DIR_PIN    8
#define STEPPER2_STEP_PIN   9

#define Ena_PIN             10      //使能位为引脚10。(低电平电机禁止运动,高电平电机有效)

AccelStepper stepper1(AccelStepper::DRIVER, STEPPER1_STEP_PIN, STEPPER1_DIR_PIN);   // 配置电机1 的脉冲引脚 方向引脚
AccelStepper stepper2(AccelStepper::DRIVER, STEPPER2_STEP_PIN, STEPPER2_DIR_PIN);   // 配置电机2 的脉冲引脚 方向引脚
MultiStepper steppers;

#define CIRCLE_Puls          1600       //电机旋转一圈的脉冲数
long positions;                      //2个电机坐标位置

void setup()
{
   //
Serial.begin(9600);
//
pinMode(Ena_PIN, OUTPUT);
digitalWrite(Ena_PIN, 1);

//
stepper1.setMaxSpeed(CIRCLE_Puls*1.5);      //设置1#电机最大速度
stepper1.setSpeed(CIRCLE_Puls*1);         //设置1#电机速度
stepper1.setAcceleration(CIRCLE_Puls/4);//设置1#电机加速度
stepper2.setMaxSpeed(CIRCLE_Puls*1.5);
stepper2.setSpeed(CIRCLE_Puls*1);
stepper2.setAcceleration(CIRCLE_Puls/4);

/*==============1、转动=========================*/
//设置电机的目标位置
positions = CIRCLE_Puls*3;
positions = CIRCLE_Puls*3;

//添加到多轴中
steppers.addStepper(stepper1);
steppers.addStepper(stepper2);
//电机运行执行
steppers.moveTo(positions);
steppers.runSpeedToPosition();

//串口反馈1#电机当前的位置
Serial.print("1# Motor Current Position is: ");
Serial.println(stepper1.currentPosition());
delay(2000);

/*==============2、反转=========================*/
//设置电机的目标位置
//positions = CIRCLE_Puls*0;
//positions = CIRCLE_Puls*0;
positions = 1;
positions = 1;

//添加到多轴中
steppers.addStepper(stepper1);
steppers.addStepper(stepper2);
//电机运行执行
steppers.moveTo(positions);
steppers.runSpeedToPosition();

//串口反馈1#电机当前的位置
Serial.print("1# Motor Current Position is: ");
Serial.println(stepper1.currentPosition());
delay(2000);

}

void loop()
{
// put your main code here, to run repeatedly:

}

页: [1]
查看完整版本: 步进电机