Roboshark / Mbed 2 deprecated Roboshark_V10

Dependencies:   mbed

Fork of Roboshark_V9 by Roboshark

Committer:
ahlervin
Date:
Tue Apr 24 18:16:05 2018 +0000
Revision:
4:767fd282dd9c
Parent:
2:402b1a74fff6
Child:
6:7bbcdd07bc2d
Inkl Line Sensor

Who changed what in which revision?

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