Roboshark / Mbed 2 deprecated Roboshark_V10

Dependencies:   mbed

Fork of Roboshark_V9 by Roboshark

Committer:
ahlervin
Date:
Thu May 03 19:36:16 2018 +0000
Revision:
6:7bbcdd07bc2d
Parent:
4:767fd282dd9c
Child:
7:862d80e0ea2d
Aufgemotzter Regler noch nicht ganz fertig

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ahlervin 6:7bbcdd07bc2d 1 /*Roboshark V4
ahlervin 6:7bbcdd07bc2d 2 main.cpp
ahlervin 6:7bbcdd07bc2d 3 Erstellt: J. Blunschi
ahlervin 6:7bbcdd07bc2d 4 geändert: V.Ahlers
ahlervin 6:7bbcdd07bc2d 5 V.5.18
ahlervin 6:7bbcdd07bc2d 6 main zu Robishark V4
ahlervin 6:7bbcdd07bc2d 7 */
ahlervin 6:7bbcdd07bc2d 8
Jacqueline 0:6d0671ae4648 9
Jacqueline 0:6d0671ae4648 10 #include <mbed.h>
Jacqueline 0:6d0671ae4648 11
Jacqueline 0:6d0671ae4648 12 #include "EncoderCounter.h"
Jacqueline 0:6d0671ae4648 13 #include "Controller.h"
Jacqueline 0:6d0671ae4648 14 #include "IRSensor.h"
Jacqueline 0:6d0671ae4648 15 #include "Fahren.h"
ahlervin 6:7bbcdd07bc2d 16 #include "Regler.h"
Jacqueline 0:6d0671ae4648 17
Jacqueline 0:6d0671ae4648 18 DigitalOut myled(LED1);
Jacqueline 0:6d0671ae4648 19
Jacqueline 0:6d0671ae4648 20 DigitalOut led0(PC_8);
Jacqueline 0:6d0671ae4648 21 DigitalOut led1(PC_6);
Jacqueline 0:6d0671ae4648 22 DigitalOut led2(PB_12);
Jacqueline 0:6d0671ae4648 23 DigitalOut led3(PA_7);
Jacqueline 0:6d0671ae4648 24 DigitalOut led4(PC_0);
Jacqueline 0:6d0671ae4648 25 DigitalOut led5(PC_9);
Jacqueline 0:6d0671ae4648 26
ahlervin 4:767fd282dd9c 27 AnalogIn LineSensor(PB_1); // Line Sensor
Jacqueline 0:6d0671ae4648 28 DigitalOut enable(PC_1);
Jacqueline 0:6d0671ae4648 29 DigitalOut bit0(PH_1);
Jacqueline 0:6d0671ae4648 30 DigitalOut bit1(PC_2);
Jacqueline 0:6d0671ae4648 31 DigitalOut bit2(PC_3);
Jacqueline 0:6d0671ae4648 32
Jacqueline 0:6d0671ae4648 33 AnalogIn IrRight(PC_3); //von main Vincent kopiert
Jacqueline 0:6d0671ae4648 34 AnalogIn IrLeft (PC_5);
Jacqueline 0:6d0671ae4648 35 AnalogIn IrFront(PC_2);
Jacqueline 0:6d0671ae4648 36 float disR = 0;
Jacqueline 0:6d0671ae4648 37 float disL = 0;
Jacqueline 0:6d0671ae4648 38 float disF = 0;
Jacqueline 0:6d0671ae4648 39
Jacqueline 0:6d0671ae4648 40 float dis2R = 0;
Jacqueline 0:6d0671ae4648 41 float dis2L = 0;
Jacqueline 0:6d0671ae4648 42 float dis2F = 0;
Jacqueline 0:6d0671ae4648 43 int IrR = 0;
Jacqueline 0:6d0671ae4648 44 int IrL = 0;
Jacqueline 0:6d0671ae4648 45 int IrF = 0;
ahlervin 4:767fd282dd9c 46 int caseDrive = 0;
ahlervin 4:767fd282dd9c 47 double line = 0;
ahlervin 4:767fd282dd9c 48 bool finish = 0;
ahlervin 4:767fd282dd9c 49 bool finishLast = 0;
ahlervin 4:767fd282dd9c 50 int ende = 0;
ahlervin 6:7bbcdd07bc2d 51 int temp = 0;
ahlervin 6:7bbcdd07bc2d 52 float SpeedR = 0;
ahlervin 6:7bbcdd07bc2d 53 float SpeedL = 0;
ahlervin 6:7bbcdd07bc2d 54 //von main Vincent kopiert
Jacqueline 0:6d0671ae4648 55
Jacqueline 0:6d0671ae4648 56 DigitalOut enableMotorDriver(PB_2);
Jacqueline 0:6d0671ae4648 57 DigitalIn motorDriverFault(PB_14);
Jacqueline 0:6d0671ae4648 58 DigitalIn motorDriverWarning(PB_15);
Jacqueline 0:6d0671ae4648 59
Jacqueline 0:6d0671ae4648 60 PwmOut pwmLeft(PA_8);
Jacqueline 0:6d0671ae4648 61 PwmOut pwmRight(PA_9);
Jacqueline 0:6d0671ae4648 62
Jacqueline 0:6d0671ae4648 63 EncoderCounter counterLeft(PB_6, PB_7);
Jacqueline 0:6d0671ae4648 64 EncoderCounter counterRight(PA_6, PC_7);
Jacqueline 0:6d0671ae4648 65
ahlervin 6:7bbcdd07bc2d 66 IRSensor iRSensor(IrRight, IrLeft, IrFront, dis2R, dis2L, dis2F, LineSensor); //von main Vincent kopiert
ahlervin 6:7bbcdd07bc2d 67
Jacqueline 0:6d0671ae4648 68 Controller controller(pwmLeft, pwmRight, counterLeft, counterRight);
Jacqueline 0:6d0671ae4648 69
ahlervin 6:7bbcdd07bc2d 70 Regler regler(IrRight, IrLeft);
ahlervin 6:7bbcdd07bc2d 71
ahlervin 6:7bbcdd07bc2d 72 Fahren fahren(controller, counterLeft, counterRight, regler); //Reihenfolge!!!!!!!!!!!!!!!!!!! Ultra wichtig
Jacqueline 0:6d0671ae4648 73
Jacqueline 0:6d0671ae4648 74 int main()
Jacqueline 0:6d0671ae4648 75 {
Jacqueline 0:6d0671ae4648 76
Jacqueline 0:6d0671ae4648 77 //controller.setDesiredSpeedLeft(150.0f); // Drehzahl in [rpm] //DEFAULT VON TOBI
Jacqueline 0:6d0671ae4648 78 //controller.setDesiredSpeedRight(-150.0f); //DEFAULT VON TOBI
Jacqueline 0:6d0671ae4648 79 enable = 1;
Jacqueline 0:6d0671ae4648 80 enableMotorDriver = 1; // Schaltet den Leistungstreiber ein
Jacqueline 0:6d0671ae4648 81 while(1) {
Jacqueline 0:6d0671ae4648 82
Jacqueline 0:6d0671ae4648 83 // Test um Drehungen und geradeaus zu testen
Jacqueline 0:6d0671ae4648 84
Jacqueline 0:6d0671ae4648 85 /*fahren.geradeaus(); //Geradeausfahren aufrufen
Jacqueline 0:6d0671ae4648 86 wait(1.0f);
Jacqueline 0:6d0671ae4648 87
Jacqueline 0:6d0671ae4648 88 fahren.rechts90();
Jacqueline 0:6d0671ae4648 89 wait(1.0f);
Jacqueline 0:6d0671ae4648 90
Jacqueline 0:6d0671ae4648 91 fahren.rechts180();
Jacqueline 0:6d0671ae4648 92 wait(1.0f);
Jacqueline 0:6d0671ae4648 93
Jacqueline 2:402b1a74fff6 94 fahren.links90();
Jacqueline 0:6d0671ae4648 95 wait(1.0f);*/
ahlervin 6:7bbcdd07bc2d 96 // IR Sensoren einlesen
Jacqueline 0:6d0671ae4648 97 float disR = iRSensor.readR(); // Distanz in mm
Jacqueline 0:6d0671ae4648 98 float disL = iRSensor.readL();
Jacqueline 0:6d0671ae4648 99 float disF = iRSensor.readF();
Jacqueline 0:6d0671ae4648 100 dis2R = disR;
Jacqueline 0:6d0671ae4648 101 dis2L = disL;
Jacqueline 0:6d0671ae4648 102 dis2F = disF;
Jacqueline 0:6d0671ae4648 103 int IrR = iRSensor.codeR(); // min Distanz unterschritten = 1
Jacqueline 0:6d0671ae4648 104 int IrL = iRSensor.codeL();
Jacqueline 0:6d0671ae4648 105 int IrF = iRSensor.codeF();
ahlervin 6:7bbcdd07bc2d 106 ende = iRSensor.get_ende(); // Line erkennt = 1
ahlervin 4:767fd282dd9c 107
ahlervin 4:767fd282dd9c 108
ahlervin 4:767fd282dd9c 109
ahlervin 4:767fd282dd9c 110 /* printf (" ende = %d\n",ende);
ahlervin 4:767fd282dd9c 111 printf (" finish = %d\n",finish);
ahlervin 4:767fd282dd9c 112 printf (" finishLast = %d\n",finishLast);
ahlervin 4:767fd282dd9c 113 printf("line = %f\n", line);
Jacqueline 0:6d0671ae4648 114
ahlervin 6:7bbcdd07bc2d 115 printf ("IR Right = %d \n", IrR);
Jacqueline 0:6d0671ae4648 116 printf("IR Left = %d\n",IrL);
ahlervin 4:767fd282dd9c 117 printf("IR Front = %d\n",IrF);*/
Jacqueline 0:6d0671ae4648 118
ahlervin 4:767fd282dd9c 119 if((IrR==0) && (IrL==0) && (IrF==1) && (ende == 0)){
Jacqueline 0:6d0671ae4648 120 caseDrive = 2; // Folge: 90 Grad nach rechts drehen
ahlervin 4:767fd282dd9c 121 } else if ((IrR==0) && (IrL==1) && (IrF==0) && (ende == 0)){
ahlervin 4:767fd282dd9c 122 caseDrive = 2; // Folge: 90 Grad nach rechts drehen
ahlervin 4:767fd282dd9c 123 } else if ((IrR==0) && (IrL==1) && (IrF==1) && (ende == 0)){
Jacqueline 0:6d0671ae4648 124 caseDrive = 2; // Folge: 90 Grad nach rechts drehen
ahlervin 4:767fd282dd9c 125 } else if ((IrR==1) && (IrL==0) && (IrF==0) && (ende == 0)){
Jacqueline 0:6d0671ae4648 126 caseDrive = 1; // Folge: geradeaus fahren
ahlervin 4:767fd282dd9c 127 } else if ((IrR==1) && (IrL==0) && (IrF==1) && (ende == 0)){
ahlervin 6:7bbcdd07bc2d 128 caseDrive = 3; // Folge: 90 Grad nach Links drehen
ahlervin 4:767fd282dd9c 129 } else if ((IrR==1) && (IrL==1) && (IrF==0) && (ende == 0)){
Jacqueline 0:6d0671ae4648 130 caseDrive = 1; // Folge: geradeaus fahren
ahlervin 4:767fd282dd9c 131 } else if ((IrR==1) && (IrL==1) && (IrF==1) && (ende == 0)){
Jacqueline 0:6d0671ae4648 132 caseDrive = 4; // Folge: 180 Grad nach rechts drehen
ahlervin 4:767fd282dd9c 133 } else if ((ende == 1) && (temp == 0)){
ahlervin 6:7bbcdd07bc2d 134 caseDrive = 5; // Folge: Ziel erreicht
ahlervin 4:767fd282dd9c 135 temp = 1;
ahlervin 6:7bbcdd07bc2d 136 } else {caseDrive = 0; // Folge; Stop
Jacqueline 0:6d0671ae4648 137 }
Jacqueline 0:6d0671ae4648 138
ahlervin 6:7bbcdd07bc2d 139 //printf("caseDrive = %d\n",caseDrive);
ahlervin 6:7bbcdd07bc2d 140 //printf("ende = %d\n",ende);
Jacqueline 0:6d0671ae4648 141
ahlervin 6:7bbcdd07bc2d 142 wait (0.2);
Jacqueline 0:6d0671ae4648 143
Jacqueline 1:a95ba1510438 144
Jacqueline 0:6d0671ae4648 145
Jacqueline 0:6d0671ae4648 146
ahlervin 6:7bbcdd07bc2d 147 if(caseDrive == 1){ // Aufrufen der verschiedenen fahr funktionen
ahlervin 6:7bbcdd07bc2d 148 fahren.geradeausG();
Jacqueline 0:6d0671ae4648 149 } else if (caseDrive == 2){
Jacqueline 0:6d0671ae4648 150 fahren.rechts90();
ahlervin 6:7bbcdd07bc2d 151 fahren.geradeausG();
Jacqueline 0:6d0671ae4648 152 } else if (caseDrive == 3){
Jacqueline 2:402b1a74fff6 153 fahren.links90();
ahlervin 6:7bbcdd07bc2d 154 fahren.geradeausG();
Jacqueline 0:6d0671ae4648 155 } else if (caseDrive == 4){
Jacqueline 0:6d0671ae4648 156 fahren.rechts180();
ahlervin 6:7bbcdd07bc2d 157 fahren.geradeausG();
ahlervin 4:767fd282dd9c 158 } else if (caseDrive == 0){
ahlervin 4:767fd282dd9c 159 fahren.stopp();
ahlervin 4:767fd282dd9c 160 } else if(caseDrive == 5){
ahlervin 4:767fd282dd9c 161 fahren.ziel();
ahlervin 4:767fd282dd9c 162 fahren.stopp();
ahlervin 4:767fd282dd9c 163 }
Jacqueline 0:6d0671ae4648 164 }
Jacqueline 0:6d0671ae4648 165 }