仓库地址: https://github.com/waspinator/AccelStepper.git
以下为 AccelStepper 常用 API 的简要注释(速查表,示例签名为伪代码以便快速理解):
// 类与构造
AccelStepper(interface, pin1, pin2, pin3 = -, pin4 = -, enablePin = -)
// interface: 驱动类型(2线/4线/驱动器等)。构造器也有简化形式用于 STEP/DIR 驱动。
// 运动参数设置
setMaxSpeed(float maxSpeed) // 设置最大速度(步/秒)
setAcceleration(float accel) // 设置加速度(步/秒^2)
setSpeed(float speed) // 直接设置当前速度(步/秒),不改变目标位置
maxSpeed() / acceleration() / speed()
// 返回对应参数值(getter)
// 位置与目标
moveTo(long absolute) // 设置目标绝对位置(步数)
move(long relative) // 相对移动(步数)
targetPosition() // 返回目标位置
currentPosition() // 返回当前已记录的位置
setCurrentPosition(long pos) // 重置当前位置计数器
distanceToGo() // 返回剩余步数(target - current)
// 运行控制(需要在 loop 中反复调用 run* 来推进电机)
run() // 以加速度/速度曲线移动一步;需要频繁调用(非阻塞)
runSpeed() // 以当前 speed 速度移动(不处理加速度)
runToPosition() // 阻塞直到到达目标位置
runToNewPosition(long position) // 设置目标并阻塞到达
// 紧急停止/软停止
stop() // 触发减速到停止并更新目标(软停止,非立即硬刹)
isRunning() // 判断是否仍在移动(库版本可能有此方法)
// 引脚与输出控制
enableOutputs() / disableOutputs() // 使能/禁能输出(使能引脚高/低依驱动需求)
setEnablePin(pin) // 指定使能引脚(如需)
setPinsInverted(dirInvert, stepInvert, enableInvert, ...)
// 反转引脚逻辑(视硬件需要)
// 其它
setMinPulseWidth(unsigned int us) // 设置步脉冲最小宽度(微秒)
stop(); // 请求平滑停止(见上)测试A4988芯片驱动步进电机
#include <Arduino.h>
#include <AccelStepper.h>
const uint8_t STEP_PIN = 2;
const uint8_t DIR_PIN = 3;
// AccelStepper in DRIVER mode for STEP/DIR drivers (A4988)
AccelStepper stepper(AccelStepper::DRIVER, STEP_PIN, DIR_PIN);
void setup() {
stepper.setMaxSpeed(1000); // 步/秒
stepper.setAcceleration(400); // 步/秒^2
stepper.setCurrentPosition(0);
stepper.setMinPulseWidth(1); // 最小脉冲宽度(微秒),根据 A4988 要求调整
}
void loop() {
// 简单往返示例:到达目标后切换目标位置
if (stepper.distanceToGo() == 0) {
if (stepper.currentPosition() == 0) stepper.moveTo(2000);
else stepper.moveTo(0);
}
stepper.run(); // 非阻塞,需在 loop 中频繁调用以推进运动
}
评论 (0)