debugged pauseMove and resumeMove JJ

Dependents:   steppertest GrabTest R5 2016 Robotics Team 1

Fork of R5_StepperDrive by David Vasquez

StepperDrive.h

Committer:
j_j205
Date:
2016-04-09
Revision:
10:1a79af981c7b
Parent:
8:ceb1201fd3a6

File content as of revision 10:1a79af981c7b:

#ifndef _STEPPER_DRIVE_
#define _STEPPER_DRIVE_

#include "mbed.h"

#define Ustep   16  //microstepping setup: 1, 2, 4, 8, or 16

class StepperDrive{
    public:
    StepperDrive(Serial &pc1, PinName in1, PinName in2, bool in3, PinName in4, PinName in5, PinName enablePin, bool in6, float in7, float in8, float in9 = 1000);
              //(serisl &, stepPinLeft, dirPinLeft, invertLeft, stepPinRight, dirPinRight, enablePin, invertRight, wheelCircum, wheelSepar, periodUs)
    int move(float distance, float angle);
    bool isMoveDone();
    void pauseMove();
    void resumeMove();
    bool getInvertLeft() { return invertLeft; }
    bool getInvertRight() { return invertRight; }
    void setInvertLeft(bool _invertLeft) { invertLeft = _invertLeft; }
    void setInvertRight(bool _invertRight) { invertRight = _invertRight; }

    Serial &pc;
    int getRightSteps() { return rightSteps; }
    int getLeftSteps() { return leftSteps; }

    private:
    Ticker pit;           //periodic interrupt timer

    void pitCallback();

    void stepRight(bool dir);
    void stepLeft(bool dir);

    DigitalOut leftStep;
    DigitalOut leftDir;
    DigitalOut rightStep;
    DigitalOut rightDir;
    DigitalOut enable;

    float wheelCircum;     //wheel circumference
    float wheelSepar;      //distance between wheels
    bool invertLeft;       //software wheel direction inversion
    bool invertRight;      //software wheel direction inversion
    bool moveComplete;

    int leftSteps;
    int rightSteps;
    float leftStepsPC;
    float rightStepsPC;
    float leftError;
    float rightError;
    
    // variables for holding values during pauseMove()
    int leftStepsPause;
    int rightStepsPause;
    float leftStepsPCPause;
    float rightStepsPCPause;
    float leftErrorPause;
    float rightErrorPause;
    bool invertLeftPause;
    bool invertRightPause;
};

#endif