Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of a4998 by
Revision 3:9e9f3cd7fff0, committed 2018-07-17
- Comitter:
- glintligo
- Date:
- Tue Jul 17 00:28:36 2018 +0000
- Parent:
- 2:57c57267b1da
- Commit message:
- beta2
Changed in this revision
a4988.cpp | Show annotated file Show diff for this revision Revisions of this file |
a4988.h | Show annotated file Show diff for this revision Revisions of this file |
--- a/a4988.cpp Mon Jul 16 23:53:54 2018 +0000 +++ b/a4988.cpp Tue Jul 17 00:28:36 2018 +0000 @@ -1,77 +1,109 @@ #include "a4988.h" #include "mbed.h" -Stepper::Stepper(PinName _en, PinName _stepPin, PinName _direction):en(_en), - stepPin(_stepPin), - direction(_direction) + +Stepper::Stepper(PinName _en, PinName _stepPin, PinName _direction) : en(_en), + stepPin(_stepPin), + direction(_direction) { - } - -void Stepper::step(int dir, int frequency ,volatile int _remain) +/** + * 转动特定脉冲 + * @param dir [运动方向] + * @param frequency [脉冲周期] + * @param _remain [脉冲个数] + */ +void Stepper::step(int dir, int frequency, volatile int _remain) { - if (dir == 1) { + if (dir == 1) + { direction = 0; - } else if (dir == 0) { + } + else if (dir == 0) + { direction = 1; } - else + else { return; } remain = _remain; - step_ticker.attach(callback(this, &Stepper::step_control),0.5/frequency); + step_ticker.attach(callback(this, &Stepper::step_control), 0.5 / frequency); } - +/** + * 启动步进电机 + */ void Stepper::enable() { en = 0; } - +/** + * 关闭步进电机 + */ void Stepper::disable() { en = 1; } - +/** + * 步进电机控制程序 + */ void Stepper::step_control() { - if(remain <= 0) - { - step_ticker.detach(); - return; - } - - if(stepPin){ - stepPin = 0; //STEP 1->0 - remain--; - }else{ - stepPin = 1; //STEP 0->1 - } + if (remain <= 0) + { + step_ticker.detach(); + return; + } + + if (stepPin) + { + stepPin = 0; //STEP 1->0 + remain--; + } + else + { + stepPin = 1; //STEP 0->1 + } } - +/** + * 一直转 + * @param dir [运动方向] + * @param frequency [脉冲周期] + */ void Stepper::longrun(int dir, int frequency) { - if (dir == 1) { + if (dir == 1) + { direction = 0; - } else if (dir == 0) { + } + else if (dir == 0) + { direction = 1; } - else + else { return; } - step_ticker.attach(callback(this, &Stepper::run_control),0.5/frequency); + step_ticker.attach(callback(this, &Stepper::run_control), 0.5 / frequency); } - +/** + * 一直转运动函数 + */ void Stepper::run_control() { - if(stepPin){ - stepPin = 0; //STEP 1->0 - remain--; - }else{ - stepPin = 1; //STEP 0->1 + if (stepPin) + { + stepPin = 0; //STEP 1->0 + remain--; + } + else + { + stepPin = 1; //STEP 0->1 + } } -} +/** + * 停止一直转 + */ void Stepper::stoprun() { step_ticker.detach(); -} \ No newline at end of file +}
--- a/a4988.h Mon Jul 16 23:53:54 2018 +0000 +++ b/a4988.h Tue Jul 17 00:28:36 2018 +0000 @@ -1,18 +1,18 @@ #ifndef __A4988_H #define __A4988_H -#endif #include "mbed.h" class Stepper { -public: - Stepper(PinName _en,PinName _stepPin, PinName _direction); - void step(int dir, int frequency ,volatile int _remain); - void longrun(int dir,int frequency); + public: + Stepper(PinName _en, PinName _stepPin, PinName _direction); + void step(int dir, int frequency, volatile int _remain); + void longrun(int dir, int frequency); void stoprun(); void enable(); void disable(); -private: + + private: DigitalOut en; DigitalOut stepPin; DigitalOut direction; @@ -21,3 +21,4 @@ void step_control(); void run_control(); }; +#endif \ No newline at end of file