给函数和声明添加中文注释并将注释翻译成中文 A4988 - Stepper Motor Driver Driver Indexer mode only Copyright C2015 Laurentiu Badea This file may be redistributed under the terms of the MIT license A copy of this licen
/*
-
A4988 - 步进电机驱动器
-
只支持索引模式。
-
版权所有(C)2015 Laurentiu Badea
-
此文件可以在MIT许可下重新分发。
-
此分发中的文件LICENSE中已包含此许可的副本。 */ #include "A4988.h"
/*
- 微步分辨率真值表(A4988 pdf第6页)
- 0bMS3,MS2,MS1分别对应1、2、4、8、16微步 */ const uint8_t A4988::MS_TABLE[] = {0b000, 0b001, 0b010, 0b011, 0b111};
/*
- 基本连接:仅连接DIR、STEP。
- 微步控制应硬连线。 */ A4988::A4988(short steps, short dir_pin, short step_pin) :BasicStepperDriver(steps, dir_pin, step_pin) {}
A4988::A4988(short steps, short dir_pin, short step_pin, short enable_pin) :BasicStepperDriver(steps, dir_pin, step_pin, enable_pin) {}
/*
- 全部连接。
- 所有A4988所需的控制引脚都已连接。 */ A4988::A4988(short steps, short dir_pin, short step_pin, short ms1_pin, short ms2_pin, short ms3_pin) :BasicStepperDriver(steps, dir_pin, step_pin), ms1_pin(ms1_pin), ms2_pin(ms2_pin), ms3_pin(ms3_pin) {}
A4988::A4988(short steps, short dir_pin, short step_pin, short enable_pin, short ms1_pin, short ms2_pin, short ms3_pin) :BasicStepperDriver(steps, dir_pin, step_pin, enable_pin), ms1_pin(ms1_pin), ms2_pin(ms2_pin), ms3_pin(ms3_pin) {}
void A4988::begin(float rpm, short microsteps){ BasicStepperDriver::begin(rpm, microsteps);
if (!IS_CONNECTED(ms1_pin) || !IS_CONNECTED(ms2_pin) || !IS_CONNECTED(ms3_pin)){
return;
}
pinMode(ms1_pin, OUTPUT);
pinMode(ms2_pin, OUTPUT);
pinMode(ms3_pin, OUTPUT);
}
/*
-
设置微步模式(1:除数)
-
A4988允许的范围为1:1到1:16
-
如果未连接控制引脚,则仅重新计算时间 */ short A4988::setMicrostep(short microsteps){ BasicStepperDriver::setMicrostep(microsteps);
if (!IS_CONNECTED(ms1_pin) || !IS_CONNECTED(ms2_pin) || !IS_CONNECTED(ms3_pin)){ return this->microsteps; }
const uint8_t* ms_table = getMicrostepTable(); size_t ms_table_size = getMicrostepTableSize();
unsigned short i = 0; while (i < ms_table_size){ if (this->microsteps & (1<<i)){ uint8_t mask = ms_table[i]; digitalWrite(ms3_pin, mask & 4); digitalWrite(ms2_pin, mask & 2); digitalWrite(ms1_pin, mask & 1); break; } i++; } return this->microsteps; }
const uint8_t* A4988::getMicrostepTable(){ return A4988::MS_TABLE; }
size_t A4988::getMicrostepTableSize(){ return sizeof(A4988::MS_TABLE); }
short A4988::getMaxMicrostep(){ return A4988::MAX_MICROSTEP;
原文地址: https://www.cveoy.top/t/topic/hlSI 著作权归作者所有。请勿转载和采集!