Algorithmus

Dependencies:   mbed

Motion.h

Committer:
Helvis
Date:
2018-04-24
Revision:
6:4868f789c223
Parent:
5:e2c0a4388d85
Child:
7:22392ed60534

File content as of revision 6:4868f789c223:

#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    moveFast();
        void    scanMove();
        void    rotateL();
        void    rotateR();
        void    turnL();
        void    turnR();
        void    stop();
        void    rotate180();
        void    control();
        void    runTask(int task);
        int     finish();

    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;
        
        Controller& controller;
        EncoderCounter& counterLeft;
        EncoderCounter& counterRight;
        IRSensor& irSensorL;
        IRSensor& irSensorC;
        IRSensor& irSensorR;
        AnalogIn& lineSensor;
        DigitalOut& enableMotorDriver;
        
        float distanceL;
        float distanceC;
        float distanceR;
        short countsL;
        short countsR;
        short countsLOld;
        short countsROld;
        float speedLeft;
        float speedRight;
        float errorP;
        float errorD;
        float oldErrorP;
        float totalError;
        int waitStop;
        int task;
        int line;
        float countsOld;
    };
    
#endif /* MOTION_H_ */