c

Dependencies:   Servo ServoArm mbed

Fork of PES_PIXY_Official by zhaw_st16b_pes2_10

Committer:
EpicG10
Date:
Tue May 23 16:24:49 2017 +0000
Revision:
1:fd3cef0f116d
Parent:
0:15a8480061e8
a

Who changed what in which revision?

UserRevisionLine numberNew contents of line
beacon 0:15a8480061e8 1 #ifndef ROBOT_H
beacon 0:15a8480061e8 2 #define ROBOT_H
beacon 0:15a8480061e8 3
beacon 0:15a8480061e8 4 #include <cstdlib>
beacon 0:15a8480061e8 5 #include <mbed.h>
beacon 0:15a8480061e8 6 #include <Ultraschall.h>
beacon 0:15a8480061e8 7 #include "Declarations.h"
beacon 0:15a8480061e8 8 #include "EncoderCounter.h"
beacon 0:15a8480061e8 9 #include "LowpassFilter.h"
beacon 0:15a8480061e8 10 #include "Pixy.h"
beacon 0:15a8480061e8 11 #include "Ultraschall.h"
beacon 0:15a8480061e8 12 #include "Servo.h"
beacon 0:15a8480061e8 13 #include "ServoArm.h"
beacon 0:15a8480061e8 14 #include "Pixy.h"
beacon 0:15a8480061e8 15
beacon 0:15a8480061e8 16 #include "mbed.h"
beacon 0:15a8480061e8 17
beacon 0:15a8480061e8 18
beacon 0:15a8480061e8 19 /* Declarations for the Motors in the Robot in order to drive -------- */
beacon 0:15a8480061e8 20
beacon 0:15a8480061e8 21 class DistanceSensors
beacon 0:15a8480061e8 22 {
beacon 0:15a8480061e8 23 public:
beacon 0:15a8480061e8 24
beacon 0:15a8480061e8 25 DistanceSensors(AnalogIn* sensorVoltage, AnalogIn* frontS, AnalogIn* leftS, AnalogIn* rightS, DigitalOut* bit0, DigitalOut* bit1, DigitalOut* bit2, int number);
beacon 0:15a8480061e8 26 DistanceSensors();
beacon 0:15a8480061e8 27
beacon 0:15a8480061e8 28 void init(AnalogIn* sensorVoltage, AnalogIn* frontS, AnalogIn* leftS, AnalogIn* rightS, DigitalOut* bit0, DigitalOut* bit1, DigitalOut* bit2, int number);
beacon 0:15a8480061e8 29 virtual ~DistanceSensors();
beacon 0:15a8480061e8 30 float read();
beacon 0:15a8480061e8 31
beacon 0:15a8480061e8 32 operator float(); //Is here to constantly return the value of read.
beacon 0:15a8480061e8 33
beacon 0:15a8480061e8 34 private:
beacon 0:15a8480061e8 35
beacon 0:15a8480061e8 36 AnalogIn* sensorVoltage;
beacon 0:15a8480061e8 37 AnalogIn* frontS;
beacon 0:15a8480061e8 38 AnalogIn* leftS;
beacon 0:15a8480061e8 39 AnalogIn* rightS;
beacon 0:15a8480061e8 40
beacon 0:15a8480061e8 41 DigitalOut* bit0;
beacon 0:15a8480061e8 42 DigitalOut* bit1;
beacon 0:15a8480061e8 43 DigitalOut* bit2;
beacon 0:15a8480061e8 44
beacon 0:15a8480061e8 45 int number;
beacon 0:15a8480061e8 46
beacon 0:15a8480061e8 47 };
beacon 0:15a8480061e8 48
beacon 0:15a8480061e8 49 class Farbsensor
beacon 0:15a8480061e8 50 {
beacon 0:15a8480061e8 51 public:
beacon 0:15a8480061e8 52
beacon 0:15a8480061e8 53 Farbsensor();
beacon 0:15a8480061e8 54 Farbsensor(AnalogIn* FarbVoltage);
beacon 0:15a8480061e8 55
beacon 0:15a8480061e8 56 void init(AnalogIn* FarbVoltage);
beacon 0:15a8480061e8 57 int read();
beacon 0:15a8480061e8 58 operator int();
beacon 0:15a8480061e8 59
beacon 0:15a8480061e8 60 private:
beacon 0:15a8480061e8 61
beacon 0:15a8480061e8 62 AnalogIn* FarbVoltage;
beacon 0:15a8480061e8 63 };
beacon 0:15a8480061e8 64
beacon 0:15a8480061e8 65 class Arm{
beacon 0:15a8480061e8 66
beacon 0:15a8480061e8 67 public:
beacon 0:15a8480061e8 68
beacon 0:15a8480061e8 69 Arm();
beacon 0:15a8480061e8 70 Arm(ServoArm* servoArm);
beacon 0:15a8480061e8 71
beacon 0:15a8480061e8 72 void init(ServoArm* servoArm);
beacon 0:15a8480061e8 73
beacon 0:15a8480061e8 74 int collectToDown();
beacon 0:15a8480061e8 75 int downToCollect();
beacon 0:15a8480061e8 76 int collectToBack();
beacon 0:15a8480061e8 77 int backToCollect();
beacon 0:15a8480061e8 78 int downToBack();
beacon 0:15a8480061e8 79 int backToDown();
beacon 0:15a8480061e8 80
beacon 0:15a8480061e8 81 private:
beacon 0:15a8480061e8 82 ServoArm* arm;
beacon 0:15a8480061e8 83 float angle;
beacon 0:15a8480061e8 84
beacon 0:15a8480061e8 85 };
beacon 0:15a8480061e8 86
beacon 0:15a8480061e8 87 class Leiste{
beacon 0:15a8480061e8 88
beacon 0:15a8480061e8 89 public:
beacon 0:15a8480061e8 90
beacon 0:15a8480061e8 91 Leiste();
beacon 0:15a8480061e8 92 Leiste(Servo* servoLeiste);
beacon 0:15a8480061e8 93
beacon 0:15a8480061e8 94 void init(Servo* servoLeiste);
beacon 0:15a8480061e8 95
beacon 0:15a8480061e8 96 int upToDown();
beacon 0:15a8480061e8 97 int downToUp();
beacon 0:15a8480061e8 98
beacon 0:15a8480061e8 99
beacon 0:15a8480061e8 100 private:
EpicG10 1:fd3cef0f116d 101
beacon 0:15a8480061e8 102 Servo* leiste;
beacon 0:15a8480061e8 103
beacon 0:15a8480061e8 104
beacon 0:15a8480061e8 105 };
beacon 0:15a8480061e8 106
beacon 0:15a8480061e8 107 class Greifer
beacon 0:15a8480061e8 108 {
beacon 0:15a8480061e8 109
beacon 0:15a8480061e8 110 public:
beacon 0:15a8480061e8 111
beacon 0:15a8480061e8 112 Greifer(Servo* greifer);
beacon 0:15a8480061e8 113 Greifer();
beacon 0:15a8480061e8 114
beacon 0:15a8480061e8 115 void init(Servo* greifer);
beacon 0:15a8480061e8 116 int take();
beacon 0:15a8480061e8 117 int leave();
beacon 0:15a8480061e8 118 void nullPos();
beacon 0:15a8480061e8 119
beacon 0:15a8480061e8 120 private:
EpicG10 1:fd3cef0f116d 121
beacon 0:15a8480061e8 122 Servo* greifer;
beacon 0:15a8480061e8 123
beacon 0:15a8480061e8 124 };
beacon 0:15a8480061e8 125
beacon 0:15a8480061e8 126 class USsensor
beacon 0:15a8480061e8 127 {
beacon 0:15a8480061e8 128 public:
beacon 0:15a8480061e8 129
beacon 0:15a8480061e8 130 USsensor();
beacon 0:15a8480061e8 131 USsensor(Ultraschall* Usensor);
beacon 0:15a8480061e8 132 void init(Ultraschall* Usensor);
beacon 0:15a8480061e8 133 float read();
beacon 0:15a8480061e8 134 operator float();
beacon 0:15a8480061e8 135
beacon 0:15a8480061e8 136 private:
beacon 0:15a8480061e8 137 Ultraschall* Usensor;
beacon 0:15a8480061e8 138 };
beacon 0:15a8480061e8 139
beacon 0:15a8480061e8 140 class Robot
beacon 0:15a8480061e8 141 {
beacon 0:15a8480061e8 142
beacon 0:15a8480061e8 143 public:
beacon 0:15a8480061e8 144
beacon 0:15a8480061e8 145 //Robot related:
beacon 0:15a8480061e8 146 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 );
beacon 0:15a8480061e8 147
beacon 0:15a8480061e8 148 //Drive Functions
beacon 0:15a8480061e8 149 void drive();
beacon 0:15a8480061e8 150 void driveB();
beacon 0:15a8480061e8 151 void setLeft(float pwm);
beacon 0:15a8480061e8 152 void setRight(float pwm);
beacon 0:15a8480061e8 153
beacon 0:15a8480061e8 154 void turnLeft();
beacon 0:15a8480061e8 155 void turnLeftS();
beacon 0:15a8480061e8 156 void turnRight();
beacon 0:15a8480061e8 157 void turnRightS();
beacon 0:15a8480061e8 158 void turnAround(int left);
beacon 0:15a8480061e8 159 void stop();
beacon 0:15a8480061e8 160
beacon 0:15a8480061e8 161 //Functions that use the drive functions
beacon 0:15a8480061e8 162 void driveSlowly();
beacon 0:15a8480061e8 163 void driveBackSlowly();/*
beacon 0:15a8480061e8 164 void wallRight(int* counter, int* timer, int* lastAct);
beacon 0:15a8480061e8 165 void wallLeft(int* counter, int* timer, int* lastAct);
beacon 0:15a8480061e8 166 void wallFront(int* counter, int* timer, int* lastAct);
beacon 0:15a8480061e8 167 void counterMax(int* counter, int* timer, int* lastAct, int* rando);
beacon 0:15a8480061e8 168
beacon 0:15a8480061e8 169 void legoFront(int* counter, int* timer, int* lastAct, int* legoFound, int* found);
beacon 0:15a8480061e8 170 void legoRight(int* counter, int* timer, int* lastAct, int* legoFound);
beacon 0:15a8480061e8 171 void legoLeft(int* counter, int* timer, int* lastAct, int* legoFound);
beacon 0:15a8480061e8 172
beacon 0:15a8480061e8 173 void nothingFound(int* counter, int* timer, int* lastAct);
beacon 0:15a8480061e8 174 */
beacon 0:15a8480061e8 175 int search(int* timer);
beacon 0:15a8480061e8 176
beacon 0:15a8480061e8 177 float see(int sensor);
beacon 0:15a8480061e8 178 int getErrorMotor();
beacon 0:15a8480061e8 179
beacon 0:15a8480061e8 180 //DistanceSensors related:
beacon 0:15a8480061e8 181 DistanceSensors sensors[9];
beacon 0:15a8480061e8 182 USsensor USsensor;
beacon 0:15a8480061e8 183 AnalogIn* frontS;
beacon 0:15a8480061e8 184 AnalogIn* leftS;
beacon 0:15a8480061e8 185 AnalogIn* rightS;
beacon 0:15a8480061e8 186
beacon 0:15a8480061e8 187
beacon 0:15a8480061e8 188 void initializeDistanceSensors();
beacon 0:15a8480061e8 189 //void init();
beacon 0:15a8480061e8 190
beacon 0:15a8480061e8 191 //LEDS related:
beacon 0:15a8480061e8 192 DigitalOut* leds;
beacon 0:15a8480061e8 193
beacon 0:15a8480061e8 194 //Farbsensors related:
beacon 0:15a8480061e8 195 Farbsensor FarbVoltage;
beacon 0:15a8480061e8 196 DigitalOut* led;
beacon 0:15a8480061e8 197
beacon 0:15a8480061e8 198 //Arm related:
beacon 0:15a8480061e8 199 Arm Arm;
beacon 0:15a8480061e8 200
beacon 0:15a8480061e8 201 //Greifer related:
beacon 0:15a8480061e8 202 Greifer Greifer;
beacon 0:15a8480061e8 203
beacon 0:15a8480061e8 204 //Leiste related:
beacon 0:15a8480061e8 205 Leiste Leiste;
beacon 0:15a8480061e8 206
beacon 0:15a8480061e8 207 //Cam:
beacon 0:15a8480061e8 208 Pixy* pixy;
beacon 0:15a8480061e8 209
beacon 0:15a8480061e8 210 private:
beacon 0:15a8480061e8 211
beacon 0:15a8480061e8 212 //Robot related:
beacon 0:15a8480061e8 213 PwmOut* left;
beacon 0:15a8480061e8 214 PwmOut* right;
beacon 0:15a8480061e8 215 DigitalIn* errorMotor;
beacon 0:15a8480061e8 216
beacon 0:15a8480061e8 217 DigitalOut* powerSignal;
beacon 0:15a8480061e8 218 DigitalIn* errorSignal;
beacon 0:15a8480061e8 219 DigitalIn* overtemperatur;
beacon 0:15a8480061e8 220
beacon 0:15a8480061e8 221 Servo* greifer;
beacon 0:15a8480061e8 222 Servo* leiste;
beacon 0:15a8480061e8 223 ServoArm* arm;
beacon 0:15a8480061e8 224 };
beacon 0:15a8480061e8 225
beacon 0:15a8480061e8 226 #endif