k

Dependencies:   Servo ServoArm mbed

Revision:
0:15a8480061e8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Headers/Robot.h	Mon May 22 11:24:46 2017 +0000
@@ -0,0 +1,224 @@
+#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
\ No newline at end of file