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.
Dependencies: RoboClaw mbed StepperMotor
Fork of RoboClaw by
StepperMotor/Stepper.cpp
- Committer:
- Jagang
- Date:
- 2016-05-05
- Revision:
- 71:5590dbe8393a
- Parent:
- 58:02dc8328975a
File content as of revision 71:5590dbe8393a:
#include "defines.h"
#include "Stepper.h"
#include "mbed.h"
Stepper::Stepper(PinName _en, PinName _stepPin, PinName _dir, PinName _minEndStop, float step_per_mm):en(_en),
stepPin(_stepPin),
direction(_dir),
minEndStop(_minEndStop)
{
Step_Per_MM = step_per_mm;
}
bool Stepper::step(int _number, int _dir, float _speed, bool _async)
{
if(done())
{
dir = _dir;
number = _number;
speed = _speed;
async = _async;
if (dir == HAUT)
direction = 0;
else if (dir == BAS)
direction = 1;
ticker.attach(this,&Stepper::tick,_speed);
if(!_async)
while(!done())
wait(speed);
return true;
}
return false;
/* Step...
for(int i=0; i<number && !(minEndStop.read() == 0 && dir == BAS); i++)
{
stepPin = 1;
wait_us(5);
stepPin = 0;
wait_us(5);
wait(speed);
}*/
}
bool Stepper::mm(int _number, int _dir, bool _async)
{
return step(_number*Step_Per_MM, _dir, DELAY-0.001, _async);
}
bool Stepper::mm(float _distance, bool _async)
{
return step(abs(_distance)*Step_Per_MM, (_distance>0?HAUT:BAS), DELAY-0.001, _async);
}
bool Stepper::done()
{
return number == 0;
}
void Stepper::tick()
{
stepPin = 1;
wait_us(5);
stepPin = 0;
number--;
if(number <= 0 || (minEndStop.read() == 0 && dir == BAS))
{
ticker.detach();
number = 0;
}
}
void Stepper::enable()
{
en = 0;
}
void Stepper::disable()
{
en = 1;
}
