k

Dependencies:   Servo ServoArm mbed

Headers/Robot.h

Committer:
beacon
Date:
2017-05-22
Revision:
0:15a8480061e8

File content as of revision 0:15a8480061e8:

#ifndef ROBOT_H
#define ROBOT_H

#include <cstdlib>
#include <mbed.h>
#include <Ultraschall.h>
#include "Declarations.h"
#include "EncoderCounter.h"
#include "LowpassFilter.h"
#include "Pixy.h"
#include "Ultraschall.h"
#include "Servo.h"
#include "ServoArm.h"
#include "Pixy.h"

#include "mbed.h"


/* Declarations for the Motors in the Robot in order to drive -------- */

class DistanceSensors
{
    public:
        
        DistanceSensors(AnalogIn* sensorVoltage, AnalogIn* frontS, AnalogIn* leftS, AnalogIn* rightS, DigitalOut* bit0, DigitalOut* bit1, DigitalOut* bit2, int number);
        DistanceSensors();
        
        void init(AnalogIn* sensorVoltage, AnalogIn* frontS, AnalogIn* leftS, AnalogIn* rightS, DigitalOut* bit0, DigitalOut* bit1, DigitalOut* bit2, int number);
        virtual ~DistanceSensors();    
        float read();
        
        operator float();           //Is here to constantly return the value of read.
        
    private:
        
        AnalogIn*       sensorVoltage;
        AnalogIn*       frontS;
        AnalogIn*       leftS;
        AnalogIn*       rightS;
        
        DigitalOut*     bit0;
        DigitalOut*     bit1;
        DigitalOut*     bit2;
        
        int             number;

};

class Farbsensor
{
    public:
     
        Farbsensor();
        Farbsensor(AnalogIn* FarbVoltage);
    
        void init(AnalogIn* FarbVoltage);
        int read();
        operator int();
    
    private:
    
        AnalogIn*       FarbVoltage;
};

class Arm{
    
    public:
        
        Arm();
        Arm(ServoArm* servoArm);
        
        void init(ServoArm* servoArm);
        
        int collectToDown();
        int downToCollect();
        int collectToBack();
        int backToCollect();
        int downToBack();
        int backToDown();
        
    private:
        ServoArm*  arm;
        float   angle;
        
};

class Leiste{
    
    public:
        
        Leiste();
        Leiste(Servo* servoLeiste);
        
        void init(Servo* servoLeiste);
        
        int upToDown();
        int downToUp();
        
        
    private:
        Servo*  leiste;
      
    
};

class Greifer
{
    
    public:
    
        Greifer(Servo* greifer);
        Greifer();
        
        void init(Servo* greifer);
        int take();
        int leave();
        void nullPos();
        
    private:
        Servo* greifer;        

};

class USsensor
{
    public:
    
        USsensor();
        USsensor(Ultraschall* Usensor);
        void init(Ultraschall* Usensor);
        float read();
        operator float();
    
    private:
        Ultraschall* Usensor;
};

class Robot
{
    
    public:
        
        //Robot related:
        Robot(PwmOut* left, PwmOut* right, DigitalOut* powerSignal, DigitalOut* leds, AnalogIn* FarbVoltage, AnalogIn* frontS, AnalogIn* leftS, AnalogIn* rightS, ServoArm* Arm, Servo* Greifer, Servo* Leiste, Ultraschall* USsensor, Pixy* pixy );
        
        //Drive Functions
        void drive();
        void driveB();
        void setLeft(float pwm);
        void setRight(float pwm);

        void turnLeft();
        void turnLeftS();
        void turnRight();
        void turnRightS();
        void turnAround(int left);
        void stop();
        
        //Functions that use the drive functions
        void driveSlowly();
        void driveBackSlowly();/*
        void wallRight(int* counter, int* timer, int* lastAct);
        void wallLeft(int* counter, int* timer, int* lastAct);
        void wallFront(int* counter, int* timer, int* lastAct);
        void counterMax(int* counter, int* timer, int* lastAct, int* rando);
        
        void legoFront(int* counter, int* timer, int* lastAct, int* legoFound, int* found);
        void legoRight(int* counter, int* timer, int* lastAct, int* legoFound);
        void legoLeft(int* counter, int* timer, int* lastAct, int* legoFound);
        
        void nothingFound(int* counter, int* timer, int* lastAct);
        */
        int search(int* timer);
        
        float see(int sensor);
        int getErrorMotor();
        
        //DistanceSensors related:
        DistanceSensors sensors[9];
        USsensor USsensor;
        AnalogIn* frontS;
        AnalogIn* leftS;
        AnalogIn* rightS;
        
        
        void initializeDistanceSensors();
        //void init();
        
        //LEDS related:
        DigitalOut*     leds;
        
        //Farbsensors related:
        Farbsensor      FarbVoltage;
        DigitalOut*     led;
        
        //Arm related:
        Arm             Arm;
        
        //Greifer related:
        Greifer         Greifer;
        
        //Leiste related:
        Leiste          Leiste;
        
        //Cam:
        Pixy*           pixy;
        
    private:
    
        //Robot related:
        PwmOut*         left;
        PwmOut*         right;
        DigitalIn*      errorMotor;
    
        DigitalOut*     powerSignal;
        DigitalIn*      errorSignal;
        DigitalIn*      overtemperatur;
        
        Servo*          greifer;
        Servo*          leiste;
        ServoArm*       arm;
};

#endif