Dependencies:   LCD_DISCO_F429ZI mbed BSP_DISCO_F429ZI

servo.cpp

Committer:
paweler
Date:
2020-06-15
Revision:
0:5d432267a99f

File content as of revision 0:5d432267a99f:

#include "servo.h"

enum DetectorState Servo::eReadDetector()
{
    if(MyGui.ucReadDetector()==1)
    {
        return ACTIVE;
    }
    else
    {
        return INACTIVE;
    }
}

Servo::Servo(float fStepDelay)
{   
    fDelay = fStepDelay;
    Callib();
}

void Servo::Callib(void)
{
    uiDesiredPosition = 0;
    uiCurrentPosition = 0;
    eState = CALLIB;
    while(eState != IDLE)
    {
        if(eReadDetector() == INACTIVE) {
            MyGui.GuiStepLeft();
        } else {
            eState = IDLE;
        }
        wait(fDelay);
    }
}

void Servo::GoTo(unsigned int uiPosition)
{
    uiDesiredPosition = uiPosition;
    eState = IN_PROGRESS;
    while(eState != IDLE){
        if(uiCurrentPosition > uiDesiredPosition) {
            uiCurrentPosition--;
            MyGui.GuiStepLeft();
        } else if(uiCurrentPosition < uiDesiredPosition) {
            uiCurrentPosition++;
            MyGui.GuiStepRight();
        } else if(uiCurrentPosition == uiDesiredPosition) {
            eState = IDLE;
        }
        wait(fDelay);
    }
}

void Servo::Step(unsigned int uiSteps)
{
    uiDesiredPosition = uiCurrentPosition + uiSteps;
    eState = IN_PROGRESS;
    while(eState != IDLE){
        if(uiCurrentPosition < uiDesiredPosition) {
            uiCurrentPosition++;
            MyGui.GuiStepRight();
        } else if(uiCurrentPosition == uiDesiredPosition) {
            eState = IDLE;
        }
        wait(fDelay);
    }
}