MTM PPO mbed cz2
Dependencies: LCD_DISCO_F429ZI mbed BSP_DISCO_F429ZI
servo.cpp@0:5d432267a99f, 2020-06-15 (annotated)
- Committer:
- paweler
- Date:
- Mon Jun 15 14:47:01 2020 +0000
- Revision:
- 0:5d432267a99f
mbed cz2
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
paweler | 0:5d432267a99f | 1 | #include "servo.h" |
paweler | 0:5d432267a99f | 2 | |
paweler | 0:5d432267a99f | 3 | enum DetectorState Servo::eReadDetector() |
paweler | 0:5d432267a99f | 4 | { |
paweler | 0:5d432267a99f | 5 | if(MyGui.ucReadDetector()==1) |
paweler | 0:5d432267a99f | 6 | { |
paweler | 0:5d432267a99f | 7 | return ACTIVE; |
paweler | 0:5d432267a99f | 8 | } |
paweler | 0:5d432267a99f | 9 | else |
paweler | 0:5d432267a99f | 10 | { |
paweler | 0:5d432267a99f | 11 | return INACTIVE; |
paweler | 0:5d432267a99f | 12 | } |
paweler | 0:5d432267a99f | 13 | } |
paweler | 0:5d432267a99f | 14 | |
paweler | 0:5d432267a99f | 15 | Servo::Servo(float fStepDelay) |
paweler | 0:5d432267a99f | 16 | { |
paweler | 0:5d432267a99f | 17 | fDelay = fStepDelay; |
paweler | 0:5d432267a99f | 18 | Callib(); |
paweler | 0:5d432267a99f | 19 | } |
paweler | 0:5d432267a99f | 20 | |
paweler | 0:5d432267a99f | 21 | void Servo::Callib(void) |
paweler | 0:5d432267a99f | 22 | { |
paweler | 0:5d432267a99f | 23 | uiDesiredPosition = 0; |
paweler | 0:5d432267a99f | 24 | uiCurrentPosition = 0; |
paweler | 0:5d432267a99f | 25 | eState = CALLIB; |
paweler | 0:5d432267a99f | 26 | while(eState != IDLE) |
paweler | 0:5d432267a99f | 27 | { |
paweler | 0:5d432267a99f | 28 | if(eReadDetector() == INACTIVE) { |
paweler | 0:5d432267a99f | 29 | MyGui.GuiStepLeft(); |
paweler | 0:5d432267a99f | 30 | } else { |
paweler | 0:5d432267a99f | 31 | eState = IDLE; |
paweler | 0:5d432267a99f | 32 | } |
paweler | 0:5d432267a99f | 33 | wait(fDelay); |
paweler | 0:5d432267a99f | 34 | } |
paweler | 0:5d432267a99f | 35 | } |
paweler | 0:5d432267a99f | 36 | |
paweler | 0:5d432267a99f | 37 | void Servo::GoTo(unsigned int uiPosition) |
paweler | 0:5d432267a99f | 38 | { |
paweler | 0:5d432267a99f | 39 | uiDesiredPosition = uiPosition; |
paweler | 0:5d432267a99f | 40 | eState = IN_PROGRESS; |
paweler | 0:5d432267a99f | 41 | while(eState != IDLE){ |
paweler | 0:5d432267a99f | 42 | if(uiCurrentPosition > uiDesiredPosition) { |
paweler | 0:5d432267a99f | 43 | uiCurrentPosition--; |
paweler | 0:5d432267a99f | 44 | MyGui.GuiStepLeft(); |
paweler | 0:5d432267a99f | 45 | } else if(uiCurrentPosition < uiDesiredPosition) { |
paweler | 0:5d432267a99f | 46 | uiCurrentPosition++; |
paweler | 0:5d432267a99f | 47 | MyGui.GuiStepRight(); |
paweler | 0:5d432267a99f | 48 | } else if(uiCurrentPosition == uiDesiredPosition) { |
paweler | 0:5d432267a99f | 49 | eState = IDLE; |
paweler | 0:5d432267a99f | 50 | } |
paweler | 0:5d432267a99f | 51 | wait(fDelay); |
paweler | 0:5d432267a99f | 52 | } |
paweler | 0:5d432267a99f | 53 | } |
paweler | 0:5d432267a99f | 54 | |
paweler | 0:5d432267a99f | 55 | void Servo::Step(unsigned int uiSteps) |
paweler | 0:5d432267a99f | 56 | { |
paweler | 0:5d432267a99f | 57 | uiDesiredPosition = uiCurrentPosition + uiSteps; |
paweler | 0:5d432267a99f | 58 | eState = IN_PROGRESS; |
paweler | 0:5d432267a99f | 59 | while(eState != IDLE){ |
paweler | 0:5d432267a99f | 60 | if(uiCurrentPosition < uiDesiredPosition) { |
paweler | 0:5d432267a99f | 61 | uiCurrentPosition++; |
paweler | 0:5d432267a99f | 62 | MyGui.GuiStepRight(); |
paweler | 0:5d432267a99f | 63 | } else if(uiCurrentPosition == uiDesiredPosition) { |
paweler | 0:5d432267a99f | 64 | eState = IDLE; |
paweler | 0:5d432267a99f | 65 | } |
paweler | 0:5d432267a99f | 66 | wait(fDelay); |
paweler | 0:5d432267a99f | 67 | } |
paweler | 0:5d432267a99f | 68 | } |