#include <AccelStepper.h>
// =====================================
const uint8_t moveSteps = 200; //运行步数
// 最大速度
uint32_t maxStepSpeed = 10000;
// 最小速度
uint16_t minStepSpeed = 300;
// 初始转速
uint16_t stepSpeed = 300;
// A4988连接Arduino引脚号
uint8_t xdirPin = 3; // 方向控制引脚
uint8_t xstepPin = 2; // 步进控制引脚
uint8_t xenablePin = 4; // 使能控制引脚
AccelStepper stepper1(1,xstepPin,xdirPin);//建立步进电机对象
void setup() {
Serial.begin(115200);
// put your setup code here, to run once:
pinMode(xstepPin,OUTPUT); // 步进引脚为输出模式
pinMode(xdirPin,OUTPUT); // 方向引脚为输出模式
pinMode(xenablePin,OUTPUT); // 使能引脚为输出模式
digitalWrite(xenablePin,LOW); // 将使能控制引脚设置为低电平从而让
// 电机驱动板进入工作状态
stepper1.setMaxSpeed(stepSpeed); // 设置电机最大速度
stepper1.setAcceleration(stepSpeed/10); // 设置电机加速度
}
int speedPos = -1;
int currentSteps = 0;
void loop() {
stepper1.setMaxSpeed(stepSpeed); // 设置电机最大速度
stepper1.setAcceleration(stepSpeed/10); // 设置电机加速度
// 与 或 非
if(currentSteps > 90 * moveSteps || currentSteps < -90 * moveSteps){
speedPos *= -1;
}
currentSteps += 10 * speedPos;
stepper1.moveTo(currentSteps);
stepper1.run();
}