MTM PPO mbed cz2

Dependencies:   LCD_DISCO_F429ZI mbed BSP_DISCO_F429ZI

Committer:
paweler
Date:
Mon Jun 15 14:47:01 2020 +0000
Revision:
0:5d432267a99f
mbed cz2

Who changed what in which revision?

UserRevisionLine numberNew 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 }