
Time is good
Fork of Robot2016_2-0 by
StepperMotor/Stepper.cpp@96:1e91cac784fe, 2016-05-06 (annotated)
- Committer:
- IceTeam
- Date:
- Fri May 06 21:21:49 2016 +0000
- Revision:
- 96:1e91cac784fe
- Parent:
- 93:c0b040954eac
Coucou vers ordi de simon
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
IceTeam | 92:f09f55aa992b | 1 | #include "Stepper.h" |
IceTeam | 93:c0b040954eac | 2 | // ID AX12 : 3 et 1 |
IceTeam | 92:f09f55aa992b | 3 | Stepper::Stepper(PinName _en, PinName _stepPin, PinName _dir, PinName _minEndStop, float step_per_mm):en(_en), |
IceTeam | 92:f09f55aa992b | 4 | stepPin(_stepPin), |
IceTeam | 92:f09f55aa992b | 5 | direction(_dir), |
IceTeam | 92:f09f55aa992b | 6 | minEndStop(_minEndStop) |
IceTeam | 92:f09f55aa992b | 7 | { |
IceTeam | 92:f09f55aa992b | 8 | Step_Per_MM = step_per_mm; |
IceTeam | 92:f09f55aa992b | 9 | } |
IceTeam | 92:f09f55aa992b | 10 | |
IceTeam | 92:f09f55aa992b | 11 | bool Stepper::step(int _number, int _dir, float _speed, bool _async) |
IceTeam | 92:f09f55aa992b | 12 | { |
IceTeam | 92:f09f55aa992b | 13 | if(done()) |
IceTeam | 92:f09f55aa992b | 14 | { |
IceTeam | 92:f09f55aa992b | 15 | dir = _dir; |
IceTeam | 92:f09f55aa992b | 16 | number = _number; |
IceTeam | 92:f09f55aa992b | 17 | speed = _speed; |
IceTeam | 92:f09f55aa992b | 18 | async = _async; |
IceTeam | 92:f09f55aa992b | 19 | |
IceTeam | 92:f09f55aa992b | 20 | if (dir == HAUT) |
IceTeam | 92:f09f55aa992b | 21 | direction = 0; |
IceTeam | 92:f09f55aa992b | 22 | else if (dir == BAS) |
IceTeam | 92:f09f55aa992b | 23 | direction = 1; |
IceTeam | 92:f09f55aa992b | 24 | |
IceTeam | 92:f09f55aa992b | 25 | ticker.attach(this,&Stepper::tick,_speed); |
IceTeam | 92:f09f55aa992b | 26 | if(!_async) |
IceTeam | 92:f09f55aa992b | 27 | while(!done()) |
IceTeam | 92:f09f55aa992b | 28 | wait(speed); |
IceTeam | 92:f09f55aa992b | 29 | |
IceTeam | 92:f09f55aa992b | 30 | return true; |
IceTeam | 92:f09f55aa992b | 31 | } |
IceTeam | 92:f09f55aa992b | 32 | |
IceTeam | 92:f09f55aa992b | 33 | return false; |
IceTeam | 92:f09f55aa992b | 34 | |
IceTeam | 92:f09f55aa992b | 35 | |
IceTeam | 92:f09f55aa992b | 36 | |
IceTeam | 92:f09f55aa992b | 37 | /* Step... |
IceTeam | 92:f09f55aa992b | 38 | for(int i=0; i<number && !(minEndStop.read() == 0 && dir == BAS); i++) |
IceTeam | 92:f09f55aa992b | 39 | { |
IceTeam | 92:f09f55aa992b | 40 | stepPin = 1; |
IceTeam | 92:f09f55aa992b | 41 | wait_us(5); |
IceTeam | 92:f09f55aa992b | 42 | stepPin = 0; |
IceTeam | 92:f09f55aa992b | 43 | wait_us(5); |
IceTeam | 92:f09f55aa992b | 44 | wait(speed); |
IceTeam | 92:f09f55aa992b | 45 | }*/ |
IceTeam | 92:f09f55aa992b | 46 | } |
IceTeam | 92:f09f55aa992b | 47 | |
IceTeam | 92:f09f55aa992b | 48 | bool Stepper::mm(int _number, int _dir, bool _async) |
IceTeam | 92:f09f55aa992b | 49 | { |
IceTeam | 92:f09f55aa992b | 50 | return step(_number*Step_Per_MM, _dir, DELAY-0.001, _async); |
IceTeam | 92:f09f55aa992b | 51 | } |
IceTeam | 92:f09f55aa992b | 52 | |
IceTeam | 92:f09f55aa992b | 53 | bool Stepper::mm(float _distance, bool _async) |
IceTeam | 92:f09f55aa992b | 54 | { |
IceTeam | 92:f09f55aa992b | 55 | return step(abs(_distance)*Step_Per_MM, (_distance>0?HAUT:BAS), DELAY-0.001, _async); |
IceTeam | 92:f09f55aa992b | 56 | } |
IceTeam | 92:f09f55aa992b | 57 | |
IceTeam | 92:f09f55aa992b | 58 | bool Stepper::done() |
IceTeam | 92:f09f55aa992b | 59 | { |
IceTeam | 92:f09f55aa992b | 60 | return number == 0; |
IceTeam | 92:f09f55aa992b | 61 | } |
IceTeam | 92:f09f55aa992b | 62 | |
IceTeam | 92:f09f55aa992b | 63 | void Stepper::tick() |
IceTeam | 92:f09f55aa992b | 64 | { |
IceTeam | 92:f09f55aa992b | 65 | stepPin = 1; |
IceTeam | 92:f09f55aa992b | 66 | wait_us(5); |
IceTeam | 92:f09f55aa992b | 67 | stepPin = 0; |
IceTeam | 92:f09f55aa992b | 68 | |
IceTeam | 92:f09f55aa992b | 69 | number--; |
IceTeam | 92:f09f55aa992b | 70 | |
IceTeam | 92:f09f55aa992b | 71 | if(number <= 0 || (minEndStop.read() == 0 && dir == BAS)) |
IceTeam | 92:f09f55aa992b | 72 | { |
IceTeam | 92:f09f55aa992b | 73 | ticker.detach(); |
IceTeam | 92:f09f55aa992b | 74 | number = 0; |
IceTeam | 92:f09f55aa992b | 75 | } |
IceTeam | 92:f09f55aa992b | 76 | } |
IceTeam | 92:f09f55aa992b | 77 | |
IceTeam | 92:f09f55aa992b | 78 | |
IceTeam | 92:f09f55aa992b | 79 | void Stepper::enable() |
IceTeam | 92:f09f55aa992b | 80 | { |
IceTeam | 92:f09f55aa992b | 81 | en = 0; |
IceTeam | 92:f09f55aa992b | 82 | } |
IceTeam | 92:f09f55aa992b | 83 | |
IceTeam | 92:f09f55aa992b | 84 | void Stepper::disable() |
IceTeam | 92:f09f55aa992b | 85 | { |
IceTeam | 92:f09f55aa992b | 86 | en = 1; |
IceTeam | 92:f09f55aa992b | 87 | } |