Algorithmus

Dependencies:   mbed

Motion.h

Committer:
luethale
Date:
2018-06-30
Revision:
35:5a4e1a87b3da
Parent:
27:f111ba194412

File content as of revision 35:5a4e1a87b3da:

#ifndef MOTION_H_
#define MOTION_H_

#include <cstdlib>
#include <mbed.h>
#include "EncoderCounter.h"
#include "Controller.h"
#include "IRSensor.h"


class Motion {
    
    public:
    
        Motion(Controller& controller, EncoderCounter& counterLeft,
                EncoderCounter& counterRight, IRSensor& irSensorL,
                IRSensor& irSensorC, IRSensor& irSensorR, AnalogIn& lineSensor,
                DigitalOut& enableMotorDriver);
        
        virtual ~Motion();
        void    move();
        void    moveHalf();
        void    scanMove();
        void    rotateL();
        void    rotateR();
        void    turnL();
        void    turnR();
        void    stop();
        void    rotate180();
        void    control();
        void    runTask(int path[], int task, bool reverse, int junction);
        int     finish();
        void    accel(float targetSpeed);

    private:
    
        static const float  LEFT_MID_VAL;
        static const float  RIGHT_MID_VAL;
        static const float  KP;
        static const float  KD;
        static const int    MOVE_DIST;
        static const float  MOVE_SPEED;
        static const float  RUN_SPEED;
        static const float  TURN_SPEED_LEFT;
        static const float  ROTATE_SPEED;
        static const float  ACCEL_CONST;
        
        Controller&         controller;
        EncoderCounter&     counterLeft;
        EncoderCounter&     counterRight;
        IRSensor&           irSensorL;
        IRSensor&           irSensorC;
        IRSensor&           irSensorR;
        AnalogIn&           lineSensor;
        DigitalOut&         enableMotorDriver;
        Timer               t;
        
        float               distanceL;
        float               distanceC;
        float               distanceR;
        int                 countsL;
        int                 countsR;
        int                 countsLOld;
        int                 countsROld;
        float               speedLeft;
        float               speedRight;
        float               errorP;
        float               errorD;
        float               oldErrorP;
        float               totalError;
        int                 waitStop;
        int                 path[];
        int                 task;
        bool                reverse;
        int                 junction;
        bool                acceleration;
        bool                deceleration;
        bool                longMove;
        int                 line;
        float               countsOld;
        float               avgSpeed;
        float               actSpeed;
        float               targetSpeed;
        bool                lastMove;
        bool                speedRun;
    };
    
#endif /* MOTION_H_ */