Gruppe 3 / Mbed 2 deprecated PES3

Dependencies:   Servo mbed pixy

Fork of PES1 by Gruppe 3

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include <mbed.h>
00002 #include "Roboter.h"
00003 
00004 
00005 //Periphery for Encoder
00006 EncoderCounter counterLeft(PB_6, PB_7);
00007 EncoderCounter counterRight(PA_6, PC_7);
00008 
00009 
00010 //Periphery for distance sensors
00011 AnalogIn distance(PB_1);
00012 DigitalOut enable(PC_1);
00013 DigitalOut bit0(PH_1);
00014 DigitalOut bit1(PC_2);
00015 DigitalOut bit2(PC_3);
00016 IRSensor sensors[6];
00017 
00018 // Periphery for servos
00019 Servo servo1(PB_13);    //Greiferservo Anschluss D2
00020 Servo servo2(PA_10);    //Armservo Anschluss D0
00021 
00022 //Periphery for Switch ON/OFF
00023 DigitalIn switchOnOff(USER_BUTTON);
00024 
00025 //motor stuff
00026 DigitalOut enableMotorDriver(PB_2);
00027 PwmOut pwmL( PA_8 );
00028 PwmOut pwmR( PA_9 );
00029 
00030 //indicator leds arround robot
00031 DigitalOut leds[] = { PC_8, PC_6, PB_12, PA_7, PC_0, PC_9 };
00032 
00033 // Erstellen eines Roboterobjekts
00034 Roboter roboter1(&distance, &bit0, &bit1, &bit2, &pwmL, &pwmR, &servo1, &servo2, &counterLeft, &counterRight, &enableMotorDriver);
00035 
00036 int main()
00037 {
00038     int state = 0;         // Diese Variable gibt an in welchem State man sich befindet
00039     int tempState = 2;     // Wird benötig um zwischen Kameraauswertung und fahren zu wechseln
00040     int temp = 0;
00041     enable = 1;            // Sensoren einschalten
00042     servo1.Enable(1500,20000);
00043     servo2.Enable(700,20000);
00044     wait(1);
00045     float camValue;
00046 
00047     while(1) {
00048 
00049         //printf("%d\n", state);
00050 
00051         switch(state) {
00052 
00053             case 0: // Roboter Anschalten mit Knopf
00054                 printf("0");
00055 
00056                 if (switchOnOff == 0) { // Bei Betätigung des Userbuttons wird das Programm gestartet
00057                     state = 1;
00058                 }
00059 
00060                 break;
00061 
00062             case 1:
00063                 //printf("1");
00064                 camValue = readCamera(state);
00065                 state = roboter1.stateAuswahl(camValue, tempState, temp); // Case-Auswahl aufgrund von der Kamera
00066                 break;
00067 
00068             case 2:
00069                 //printf("2");
00070                 tempState = 2;
00071                 temp = 0;
00072                 state = roboter1.kreisFahren(); // Im Kreis fahren
00073                 break;
00074 
00075 
00076             case 3:
00077                 //printf("3");
00078                 tempState = 3;
00079                 temp = 0;
00080                 roboter1.ausweichen1();  // Hindernissen ausweichen
00081                 state = roboter1.geradeFahren(); // Gerade Fahren
00082                 break;
00083 
00084 
00085             case 4:
00086                 //printf("4");
00087                 tempState = 2;
00088                 temp = 0;
00089                 roboter1.anfahren(camValue); // Roboter erkennt grünen Klotz, Klotz wird angefahren
00090                 state = roboter1.readSensors();
00091                 break;
00092 
00093             case 5:
00094                 //printf("5");
00095                 state = roboter1.pickup(); // Aufnehmen des Klotzes
00096                 temp = 5;
00097                 break;
00098 
00099             case 6:
00100                 //printf("6");
00101                 temp =0;
00102                 state = roboter1.ausweichen2();  // Hindernissen ausweichen während Klotz angefahren wird
00103                 break;
00104 
00105             case 7:
00106                 //printf("7");
00107                 temp = 0;
00108                 state = roboter1.back();
00109                 break;
00110 
00111             default:
00112                 break;
00113 
00114         }
00115         //printf("%d\n", state);
00116         wait(0.001f);
00117     }
00118 }