Roboshark / Mbed 2 deprecated Roboshark_V10

Dependencies:   mbed

Fork of Roboshark_V9 by Roboshark

Committer:
ahlervin
Date:
Mon May 14 22:11:47 2018 +0000
Revision:
14:feafcee53fed
Parent:
10:fb2195d0de0f
Child:
15:8e8b23d4abb4
Mit Links Methode

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ahlervin 14:feafcee53fed 1 /*Roboshark V10
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 14:feafcee53fed 6 main zu Robishark
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"
Jacqueline 0:6d0671ae4648 16
Jacqueline 0:6d0671ae4648 17 DigitalOut myled(LED1);
Jacqueline 0:6d0671ae4648 18
ahlervin 14:feafcee53fed 19 DigitalOut led0(PC_8); //Ready
ahlervin 14:feafcee53fed 20 DigitalOut ledLinksAktiv(PC_6); // Links Aktiv
ahlervin 14:feafcee53fed 21 DigitalOut ledRechtsAktiv(PB_12); // Rechts Aktiv
Jacqueline 0:6d0671ae4648 22 DigitalOut led3(PA_7);
Jacqueline 0:6d0671ae4648 23 DigitalOut led4(PC_0);
Jacqueline 0:6d0671ae4648 24 DigitalOut led5(PC_9);
Jacqueline 0:6d0671ae4648 25
Jacqueline 0:6d0671ae4648 26 DigitalOut enable(PC_1);
Jacqueline 0:6d0671ae4648 27 DigitalOut bit0(PH_1);
Jacqueline 0:6d0671ae4648 28 DigitalOut bit1(PC_2);
Jacqueline 0:6d0671ae4648 29 DigitalOut bit2(PC_3);
Jacqueline 0:6d0671ae4648 30
ahlervin 14:feafcee53fed 31 AnalogIn IrRight(PC_3); // IR Sensoren
Jacqueline 0:6d0671ae4648 32 AnalogIn IrLeft (PC_5);
Jacqueline 0:6d0671ae4648 33 AnalogIn IrFront(PC_2);
ahlervin 14:feafcee53fed 34 AnalogIn LineSensor(PB_1); // Line Sensor
ahlervin 14:feafcee53fed 35 DigitalIn button (USER_BUTTON); //Auswählen ob Rechts oder Links methode
ahlervin 14:feafcee53fed 36
Jacqueline 0:6d0671ae4648 37 float disR = 0;
Jacqueline 0:6d0671ae4648 38 float disL = 0;
Jacqueline 0:6d0671ae4648 39 float disF = 0;
Jacqueline 0:6d0671ae4648 40
Jacqueline 0:6d0671ae4648 41 float dis2R = 0;
Jacqueline 0:6d0671ae4648 42 float dis2L = 0;
Jacqueline 0:6d0671ae4648 43 float dis2F = 0;
Jacqueline 0:6d0671ae4648 44 int IrR = 0;
Jacqueline 0:6d0671ae4648 45 int IrL = 0;
Jacqueline 0:6d0671ae4648 46 int IrF = 0;
ahlervin 4:767fd282dd9c 47 int caseDrive = 0;
ahlervin 4:767fd282dd9c 48 double line = 0;
ahlervin 4:767fd282dd9c 49 bool finish = 0;
ahlervin 4:767fd282dd9c 50 bool finishLast = 0;
ahlervin 4:767fd282dd9c 51 int ende = 0;
ahlervin 6:7bbcdd07bc2d 52 int temp = 0;
ahlervin 6:7bbcdd07bc2d 53 float SpeedR = 0;
ahlervin 6:7bbcdd07bc2d 54 float SpeedL = 0;
ahlervin 14:feafcee53fed 55 int links = 0;
ahlervin 14:feafcee53fed 56 int linksLast = 0;
ahlervin 14:feafcee53fed 57 int skip = 0;
ahlervin 6:7bbcdd07bc2d 58 //von main Vincent kopiert
Jacqueline 0:6d0671ae4648 59
Jacqueline 0:6d0671ae4648 60 DigitalOut enableMotorDriver(PB_2);
Jacqueline 0:6d0671ae4648 61 DigitalIn motorDriverFault(PB_14);
Jacqueline 0:6d0671ae4648 62 DigitalIn motorDriverWarning(PB_15);
Jacqueline 0:6d0671ae4648 63
Jacqueline 0:6d0671ae4648 64 PwmOut pwmLeft(PA_8);
Jacqueline 0:6d0671ae4648 65 PwmOut pwmRight(PA_9);
Jacqueline 0:6d0671ae4648 66
Jacqueline 0:6d0671ae4648 67 EncoderCounter counterLeft(PB_6, PB_7);
Jacqueline 0:6d0671ae4648 68 EncoderCounter counterRight(PA_6, PC_7);
Jacqueline 0:6d0671ae4648 69
ahlervin 6:7bbcdd07bc2d 70 IRSensor iRSensor(IrRight, IrLeft, IrFront, dis2R, dis2L, dis2F, LineSensor); //von main Vincent kopiert
ahlervin 6:7bbcdd07bc2d 71
Jacqueline 0:6d0671ae4648 72 Controller controller(pwmLeft, pwmRight, counterLeft, counterRight);
Jacqueline 0:6d0671ae4648 73
ahlervin 9:feabe0b7cea4 74 Fahren fahren(controller, counterLeft, counterRight, iRSensor); //Reihenfolge!!!!!!!!!!!!!!!!!!! Ultra wichtig
Jacqueline 0:6d0671ae4648 75
ahlervin 14:feafcee53fed 76 int main(){
ahlervin 14:feafcee53fed 77 led0 = 1;
Jacqueline 0:6d0671ae4648 78
Jacqueline 0:6d0671ae4648 79 enable = 1;
ahlervin 14:feafcee53fed 80 enableMotorDriver = 1; // Schaltet den Leistungstreiber ein
ahlervin 14:feafcee53fed 81
Jacqueline 0:6d0671ae4648 82 while(1) {
ahlervin 14:feafcee53fed 83
ahlervin 14:feafcee53fed 84 if (button == 1){
ahlervin 14:feafcee53fed 85 temp = 0;
ahlervin 14:feafcee53fed 86 ende = 0;
ahlervin 14:feafcee53fed 87 skip = 0;
ahlervin 14:feafcee53fed 88 }
ahlervin 14:feafcee53fed 89
ahlervin 14:feafcee53fed 90 if(button != linksLast){ // Zustand button speichern
ahlervin 14:feafcee53fed 91 links = 1;
ahlervin 14:feafcee53fed 92 } else { links = 0;
ahlervin 14:feafcee53fed 93 }
ahlervin 14:feafcee53fed 94 linksLast = button;
ahlervin 14:feafcee53fed 95
ahlervin 14:feafcee53fed 96 if ((links == 0) && (skip == 0)){
ahlervin 14:feafcee53fed 97 ledRechtsAktiv = 1;
ahlervin 14:feafcee53fed 98 ledLinksAktiv = 0;
ahlervin 14:feafcee53fed 99 wait (2);
ahlervin 14:feafcee53fed 100 skip = 1;
ahlervin 14:feafcee53fed 101 } else { if ((links == 1) && ( skip == 0)){
ahlervin 14:feafcee53fed 102 ledLinksAktiv = 1;
ahlervin 14:feafcee53fed 103 ledRechtsAktiv = 0;
ahlervin 14:feafcee53fed 104 wait (2);
ahlervin 14:feafcee53fed 105 skip = 1;
ahlervin 14:feafcee53fed 106 }
ahlervin 14:feafcee53fed 107 }
ahlervin 6:7bbcdd07bc2d 108 // IR Sensoren einlesen
Jacqueline 0:6d0671ae4648 109 float disR = iRSensor.readR(); // Distanz in mm
Jacqueline 0:6d0671ae4648 110 float disL = iRSensor.readL();
Jacqueline 0:6d0671ae4648 111 float disF = iRSensor.readF();
Jacqueline 0:6d0671ae4648 112 dis2R = disR;
Jacqueline 0:6d0671ae4648 113 dis2L = disL;
Jacqueline 0:6d0671ae4648 114 dis2F = disF;
Jacqueline 0:6d0671ae4648 115 int IrR = iRSensor.codeR(); // min Distanz unterschritten = 1
Jacqueline 0:6d0671ae4648 116 int IrL = iRSensor.codeL();
Jacqueline 0:6d0671ae4648 117 int IrF = iRSensor.codeF();
ahlervin 6:7bbcdd07bc2d 118 ende = iRSensor.get_ende(); // Line erkennt = 1
ahlervin 4:767fd282dd9c 119
ahlervin 4:767fd282dd9c 120
ahlervin 4:767fd282dd9c 121
ahlervin 7:862d80e0ea2d 122 /* printf (" ende = %d\n",ende);
ahlervin 4:767fd282dd9c 123 printf (" finish = %d\n",finish);
ahlervin 4:767fd282dd9c 124 printf (" finishLast = %d\n",finishLast);
ahlervin 4:767fd282dd9c 125 printf("line = %f\n", line);
Jacqueline 0:6d0671ae4648 126
ahlervin 6:7bbcdd07bc2d 127 printf ("IR Right = %d \n", IrR);
Jacqueline 0:6d0671ae4648 128 printf("IR Left = %d\n",IrL);
ahlervin 4:767fd282dd9c 129 printf("IR Front = %d\n",IrF);*/
Jacqueline 0:6d0671ae4648 130
ahlervin 14:feafcee53fed 131 while ((links == 0) && (skip == 1)){ // State machine für methode Rechts
ahlervin 4:767fd282dd9c 132 if((IrR==0) && (IrL==0) && (IrF==1) && (ende == 0)){
ahlervin 14:feafcee53fed 133 caseDrive = 2;
ahlervin 4:767fd282dd9c 134 } else if ((IrR==0) && (IrL==1) && (IrF==0) && (ende == 0)){
ahlervin 14:feafcee53fed 135 caseDrive = 2;
ahlervin 4:767fd282dd9c 136 } else if ((IrR==0) && (IrL==1) && (IrF==1) && (ende == 0)){
ahlervin 14:feafcee53fed 137 caseDrive = 2;
ahlervin 4:767fd282dd9c 138 } else if ((IrR==1) && (IrL==0) && (IrF==0) && (ende == 0)){
ahlervin 14:feafcee53fed 139 caseDrive = 1;
ahlervin 4:767fd282dd9c 140 } else if ((IrR==1) && (IrL==0) && (IrF==1) && (ende == 0)){
ahlervin 14:feafcee53fed 141 caseDrive = 3;
ahlervin 4:767fd282dd9c 142 } else if ((IrR==1) && (IrL==1) && (IrF==0) && (ende == 0)){
ahlervin 14:feafcee53fed 143 caseDrive = 1;
ahlervin 4:767fd282dd9c 144 } else if ((IrR==1) && (IrL==1) && (IrF==1) && (ende == 0)){
ahlervin 14:feafcee53fed 145 caseDrive = 4;
ahlervin 4:767fd282dd9c 146 } else if ((ende == 1) && (temp == 0)){
ahlervin 14:feafcee53fed 147 caseDrive = 5;
ahlervin 4:767fd282dd9c 148 temp = 1;
ahlervin 14:feafcee53fed 149 } else {caseDrive = 0;
Jacqueline 0:6d0671ae4648 150 }
ahlervin 14:feafcee53fed 151 }
ahlervin 14:feafcee53fed 152 while ((links == 1) && (skip == 1)){ //State Machine für Methode Links
ahlervin 14:feafcee53fed 153 if((IrR==0) && (IrL==0) && (IrF==0) && (ende == 0)){
ahlervin 14:feafcee53fed 154 caseDrive = 3;
ahlervin 14:feafcee53fed 155 } else if ((IrR==1) && (IrL==0) && (IrF==0) && (ende == 0)){
ahlervin 14:feafcee53fed 156 caseDrive = 3;
ahlervin 14:feafcee53fed 157 } else if ((IrR==0) && (IrL==1) && (IrF==0) && (ende == 0)){
ahlervin 14:feafcee53fed 158 caseDrive = 1;
ahlervin 14:feafcee53fed 159 } else if ((IrR==1) && (IrL==1) && (IrF==0) && (ende == 0)){
ahlervin 14:feafcee53fed 160 caseDrive = 1;
ahlervin 14:feafcee53fed 161 } else if ((IrR==0) && (IrL==0) && (IrF==1) && (ende == 0)){
ahlervin 14:feafcee53fed 162 caseDrive = 3;
ahlervin 14:feafcee53fed 163 } else if ((IrR==1) && (IrL==0)&& (IrF==1)&& (ende == 0)){
ahlervin 14:feafcee53fed 164 caseDrive = 3;
ahlervin 14:feafcee53fed 165 } else if ((IrR==0)&& (IrL==1) && (IrF==1) && (ende == 0)){
ahlervin 14:feafcee53fed 166 caseDrive = 2;
ahlervin 14:feafcee53fed 167 } else if ((IrR==1)&& (IrL==1) && (IrF==1) && (ende == 0)){
ahlervin 14:feafcee53fed 168 caseDrive = 4;
ahlervin 14:feafcee53fed 169 } else if ((ende == 1) && (temp == 0)){
ahlervin 14:feafcee53fed 170 caseDrive = 5;
ahlervin 14:feafcee53fed 171 temp = 1;
ahlervin 14:feafcee53fed 172 } else {caseDrive = 0;
ahlervin 14:feafcee53fed 173 }
ahlervin 14:feafcee53fed 174 }
ahlervin 14:feafcee53fed 175
ahlervin 10:fb2195d0de0f 176
ahlervin 8:d0a27278c108 177 // printf("caseDrive = %d\n",caseDrive);
ahlervin 6:7bbcdd07bc2d 178 //printf("ende = %d\n",ende);
Jacqueline 0:6d0671ae4648 179
ahlervin 10:fb2195d0de0f 180 wait (0.01);
Jacqueline 0:6d0671ae4648 181
Jacqueline 1:a95ba1510438 182
Jacqueline 0:6d0671ae4648 183
Jacqueline 0:6d0671ae4648 184
ahlervin 9:feabe0b7cea4 185 if(caseDrive == 1){ // Aufrufen der verschiedenen fahr funktionen
ahlervin 6:7bbcdd07bc2d 186 fahren.geradeausG();
Jacqueline 0:6d0671ae4648 187 } else if (caseDrive == 2){
Jacqueline 0:6d0671ae4648 188 fahren.rechts90();
ahlervin 6:7bbcdd07bc2d 189 fahren.geradeausG();
Jacqueline 0:6d0671ae4648 190 } else if (caseDrive == 3){
Jacqueline 2:402b1a74fff6 191 fahren.links90();
ahlervin 6:7bbcdd07bc2d 192 fahren.geradeausG();
Jacqueline 0:6d0671ae4648 193 } else if (caseDrive == 4){
Jacqueline 0:6d0671ae4648 194 fahren.rechts180();
ahlervin 6:7bbcdd07bc2d 195 fahren.geradeausG();
ahlervin 4:767fd282dd9c 196 } else if (caseDrive == 0){
ahlervin 4:767fd282dd9c 197 fahren.stopp();
ahlervin 4:767fd282dd9c 198 } else if(caseDrive == 5){
ahlervin 4:767fd282dd9c 199 fahren.ziel();
ahlervin 4:767fd282dd9c 200 fahren.stopp();
ahlervin 4:767fd282dd9c 201 }
Jacqueline 0:6d0671ae4648 202 }
Jacqueline 0:6d0671ae4648 203 }