k

Dependencies:   Servo ServoArm mbed

Committer:
beacon
Date:
Mon May 22 11:24:46 2017 +0000
Revision:
0:15a8480061e8
o

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:
beacon 0:15a8480061e8 101 Servo* leiste;
beacon 0:15a8480061e8 102
beacon 0:15a8480061e8 103
beacon 0:15a8480061e8 104 };
beacon 0:15a8480061e8 105
beacon 0:15a8480061e8 106 class Greifer
beacon 0:15a8480061e8 107 {
beacon 0:15a8480061e8 108
beacon 0:15a8480061e8 109 public:
beacon 0:15a8480061e8 110
beacon 0:15a8480061e8 111 Greifer(Servo* greifer);
beacon 0:15a8480061e8 112 Greifer();
beacon 0:15a8480061e8 113
beacon 0:15a8480061e8 114 void init(Servo* greifer);
beacon 0:15a8480061e8 115 int take();
beacon 0:15a8480061e8 116 int leave();
beacon 0:15a8480061e8 117 void nullPos();
beacon 0:15a8480061e8 118
beacon 0:15a8480061e8 119 private:
beacon 0:15a8480061e8 120 Servo* greifer;
beacon 0:15a8480061e8 121
beacon 0:15a8480061e8 122 };
beacon 0:15a8480061e8 123
beacon 0:15a8480061e8 124 class USsensor
beacon 0:15a8480061e8 125 {
beacon 0:15a8480061e8 126 public:
beacon 0:15a8480061e8 127
beacon 0:15a8480061e8 128 USsensor();
beacon 0:15a8480061e8 129 USsensor(Ultraschall* Usensor);
beacon 0:15a8480061e8 130 void init(Ultraschall* Usensor);
beacon 0:15a8480061e8 131 float read();
beacon 0:15a8480061e8 132 operator float();
beacon 0:15a8480061e8 133
beacon 0:15a8480061e8 134 private:
beacon 0:15a8480061e8 135 Ultraschall* Usensor;
beacon 0:15a8480061e8 136 };
beacon 0:15a8480061e8 137
beacon 0:15a8480061e8 138 class Robot
beacon 0:15a8480061e8 139 {
beacon 0:15a8480061e8 140
beacon 0:15a8480061e8 141 public:
beacon 0:15a8480061e8 142
beacon 0:15a8480061e8 143 //Robot related:
beacon 0:15a8480061e8 144 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 145
beacon 0:15a8480061e8 146 //Drive Functions
beacon 0:15a8480061e8 147 void drive();
beacon 0:15a8480061e8 148 void driveB();
beacon 0:15a8480061e8 149 void setLeft(float pwm);
beacon 0:15a8480061e8 150 void setRight(float pwm);
beacon 0:15a8480061e8 151
beacon 0:15a8480061e8 152 void turnLeft();
beacon 0:15a8480061e8 153 void turnLeftS();
beacon 0:15a8480061e8 154 void turnRight();
beacon 0:15a8480061e8 155 void turnRightS();
beacon 0:15a8480061e8 156 void turnAround(int left);
beacon 0:15a8480061e8 157 void stop();
beacon 0:15a8480061e8 158
beacon 0:15a8480061e8 159 //Functions that use the drive functions
beacon 0:15a8480061e8 160 void driveSlowly();
beacon 0:15a8480061e8 161 void driveBackSlowly();/*
beacon 0:15a8480061e8 162 void wallRight(int* counter, int* timer, int* lastAct);
beacon 0:15a8480061e8 163 void wallLeft(int* counter, int* timer, int* lastAct);
beacon 0:15a8480061e8 164 void wallFront(int* counter, int* timer, int* lastAct);
beacon 0:15a8480061e8 165 void counterMax(int* counter, int* timer, int* lastAct, int* rando);
beacon 0:15a8480061e8 166
beacon 0:15a8480061e8 167 void legoFront(int* counter, int* timer, int* lastAct, int* legoFound, int* found);
beacon 0:15a8480061e8 168 void legoRight(int* counter, int* timer, int* lastAct, int* legoFound);
beacon 0:15a8480061e8 169 void legoLeft(int* counter, int* timer, int* lastAct, int* legoFound);
beacon 0:15a8480061e8 170
beacon 0:15a8480061e8 171 void nothingFound(int* counter, int* timer, int* lastAct);
beacon 0:15a8480061e8 172 */
beacon 0:15a8480061e8 173 int search(int* timer);
beacon 0:15a8480061e8 174
beacon 0:15a8480061e8 175 float see(int sensor);
beacon 0:15a8480061e8 176 int getErrorMotor();
beacon 0:15a8480061e8 177
beacon 0:15a8480061e8 178 //DistanceSensors related:
beacon 0:15a8480061e8 179 DistanceSensors sensors[9];
beacon 0:15a8480061e8 180 USsensor USsensor;
beacon 0:15a8480061e8 181 AnalogIn* frontS;
beacon 0:15a8480061e8 182 AnalogIn* leftS;
beacon 0:15a8480061e8 183 AnalogIn* rightS;
beacon 0:15a8480061e8 184
beacon 0:15a8480061e8 185
beacon 0:15a8480061e8 186 void initializeDistanceSensors();
beacon 0:15a8480061e8 187 //void init();
beacon 0:15a8480061e8 188
beacon 0:15a8480061e8 189 //LEDS related:
beacon 0:15a8480061e8 190 DigitalOut* leds;
beacon 0:15a8480061e8 191
beacon 0:15a8480061e8 192 //Farbsensors related:
beacon 0:15a8480061e8 193 Farbsensor FarbVoltage;
beacon 0:15a8480061e8 194 DigitalOut* led;
beacon 0:15a8480061e8 195
beacon 0:15a8480061e8 196 //Arm related:
beacon 0:15a8480061e8 197 Arm Arm;
beacon 0:15a8480061e8 198
beacon 0:15a8480061e8 199 //Greifer related:
beacon 0:15a8480061e8 200 Greifer Greifer;
beacon 0:15a8480061e8 201
beacon 0:15a8480061e8 202 //Leiste related:
beacon 0:15a8480061e8 203 Leiste Leiste;
beacon 0:15a8480061e8 204
beacon 0:15a8480061e8 205 //Cam:
beacon 0:15a8480061e8 206 Pixy* pixy;
beacon 0:15a8480061e8 207
beacon 0:15a8480061e8 208 private:
beacon 0:15a8480061e8 209
beacon 0:15a8480061e8 210 //Robot related:
beacon 0:15a8480061e8 211 PwmOut* left;
beacon 0:15a8480061e8 212 PwmOut* right;
beacon 0:15a8480061e8 213 DigitalIn* errorMotor;
beacon 0:15a8480061e8 214
beacon 0:15a8480061e8 215 DigitalOut* powerSignal;
beacon 0:15a8480061e8 216 DigitalIn* errorSignal;
beacon 0:15a8480061e8 217 DigitalIn* overtemperatur;
beacon 0:15a8480061e8 218
beacon 0:15a8480061e8 219 Servo* greifer;
beacon 0:15a8480061e8 220 Servo* leiste;
beacon 0:15a8480061e8 221 ServoArm* arm;
beacon 0:15a8480061e8 222 };
beacon 0:15a8480061e8 223
beacon 0:15a8480061e8 224 #endif