Roboshark / Mbed 2 deprecated Roboshark_V10

Dependencies:   mbed

Fork of Roboshark_V9 by Roboshark

Committer:
ahlervin
Date:
Mon May 07 15:41:52 2018 +0000
Revision:
9:feabe0b7cea4
Parent:
8:d0a27278c108
Child:
10:fb2195d0de0f
Aufger?umtes Programm

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ahlervin 9:feabe0b7cea4 1 /*Roboshark V7
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"
Jacqueline 0:6d0671ae4648 16
Jacqueline 0:6d0671ae4648 17 DigitalOut myled(LED1);
Jacqueline 0:6d0671ae4648 18
Jacqueline 0:6d0671ae4648 19 DigitalOut led0(PC_8);
Jacqueline 0:6d0671ae4648 20 DigitalOut led1(PC_6);
Jacqueline 0:6d0671ae4648 21 DigitalOut led2(PB_12);
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
ahlervin 4:767fd282dd9c 26 AnalogIn LineSensor(PB_1); // Line Sensor
Jacqueline 0:6d0671ae4648 27 DigitalOut enable(PC_1);
Jacqueline 0:6d0671ae4648 28 DigitalOut bit0(PH_1);
Jacqueline 0:6d0671ae4648 29 DigitalOut bit1(PC_2);
Jacqueline 0:6d0671ae4648 30 DigitalOut bit2(PC_3);
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 6:7bbcdd07bc2d 50 int temp = 0;
ahlervin 6:7bbcdd07bc2d 51 float SpeedR = 0;
ahlervin 6:7bbcdd07bc2d 52 float SpeedL = 0;
ahlervin 7:862d80e0ea2d 53 int reglerEin = 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 9:feabe0b7cea4 70 Fahren fahren(controller, counterLeft, counterRight, iRSensor); //Reihenfolge!!!!!!!!!!!!!!!!!!! Ultra wichtig
Jacqueline 0:6d0671ae4648 71
Jacqueline 0:6d0671ae4648 72 int main()
Jacqueline 0:6d0671ae4648 73 {
Jacqueline 0:6d0671ae4648 74
Jacqueline 0:6d0671ae4648 75 //controller.setDesiredSpeedLeft(150.0f); // Drehzahl in [rpm] //DEFAULT VON TOBI
Jacqueline 0:6d0671ae4648 76 //controller.setDesiredSpeedRight(-150.0f); //DEFAULT VON TOBI
Jacqueline 0:6d0671ae4648 77 enable = 1;
Jacqueline 0:6d0671ae4648 78 enableMotorDriver = 1; // Schaltet den Leistungstreiber ein
Jacqueline 0:6d0671ae4648 79 while(1) {
Jacqueline 0:6d0671ae4648 80
ahlervin 6:7bbcdd07bc2d 81 // IR Sensoren einlesen
Jacqueline 0:6d0671ae4648 82 float disR = iRSensor.readR(); // Distanz in mm
Jacqueline 0:6d0671ae4648 83 float disL = iRSensor.readL();
Jacqueline 0:6d0671ae4648 84 float disF = iRSensor.readF();
Jacqueline 0:6d0671ae4648 85 dis2R = disR;
Jacqueline 0:6d0671ae4648 86 dis2L = disL;
Jacqueline 0:6d0671ae4648 87 dis2F = disF;
Jacqueline 0:6d0671ae4648 88 int IrR = iRSensor.codeR(); // min Distanz unterschritten = 1
Jacqueline 0:6d0671ae4648 89 int IrL = iRSensor.codeL();
Jacqueline 0:6d0671ae4648 90 int IrF = iRSensor.codeF();
ahlervin 6:7bbcdd07bc2d 91 ende = iRSensor.get_ende(); // Line erkennt = 1
ahlervin 4:767fd282dd9c 92
ahlervin 4:767fd282dd9c 93
ahlervin 4:767fd282dd9c 94
ahlervin 7:862d80e0ea2d 95 /* printf (" ende = %d\n",ende);
ahlervin 4:767fd282dd9c 96 printf (" finish = %d\n",finish);
ahlervin 4:767fd282dd9c 97 printf (" finishLast = %d\n",finishLast);
ahlervin 4:767fd282dd9c 98 printf("line = %f\n", line);
Jacqueline 0:6d0671ae4648 99
ahlervin 6:7bbcdd07bc2d 100 printf ("IR Right = %d \n", IrR);
Jacqueline 0:6d0671ae4648 101 printf("IR Left = %d\n",IrL);
ahlervin 4:767fd282dd9c 102 printf("IR Front = %d\n",IrF);*/
Jacqueline 0:6d0671ae4648 103
ahlervin 4:767fd282dd9c 104 if((IrR==0) && (IrL==0) && (IrF==1) && (ende == 0)){
Jacqueline 0:6d0671ae4648 105 caseDrive = 2; // Folge: 90 Grad nach rechts drehen
ahlervin 4:767fd282dd9c 106 } else if ((IrR==0) && (IrL==1) && (IrF==0) && (ende == 0)){
ahlervin 4:767fd282dd9c 107 caseDrive = 2; // Folge: 90 Grad nach rechts drehen
ahlervin 4:767fd282dd9c 108 } else if ((IrR==0) && (IrL==1) && (IrF==1) && (ende == 0)){
Jacqueline 0:6d0671ae4648 109 caseDrive = 2; // Folge: 90 Grad nach rechts drehen
ahlervin 4:767fd282dd9c 110 } else if ((IrR==1) && (IrL==0) && (IrF==0) && (ende == 0)){
Jacqueline 0:6d0671ae4648 111 caseDrive = 1; // Folge: geradeaus fahren
ahlervin 4:767fd282dd9c 112 } else if ((IrR==1) && (IrL==0) && (IrF==1) && (ende == 0)){
ahlervin 6:7bbcdd07bc2d 113 caseDrive = 3; // Folge: 90 Grad nach Links drehen
ahlervin 4:767fd282dd9c 114 } else if ((IrR==1) && (IrL==1) && (IrF==0) && (ende == 0)){
Jacqueline 0:6d0671ae4648 115 caseDrive = 1; // Folge: geradeaus fahren
ahlervin 4:767fd282dd9c 116 } else if ((IrR==1) && (IrL==1) && (IrF==1) && (ende == 0)){
Jacqueline 0:6d0671ae4648 117 caseDrive = 4; // Folge: 180 Grad nach rechts drehen
ahlervin 4:767fd282dd9c 118 } else if ((ende == 1) && (temp == 0)){
ahlervin 6:7bbcdd07bc2d 119 caseDrive = 5; // Folge: Ziel erreicht
ahlervin 4:767fd282dd9c 120 temp = 1;
ahlervin 6:7bbcdd07bc2d 121 } else {caseDrive = 0; // Folge; Stop
Jacqueline 0:6d0671ae4648 122 }
Jacqueline 0:6d0671ae4648 123
ahlervin 8:d0a27278c108 124 // printf("caseDrive = %d\n",caseDrive);
ahlervin 6:7bbcdd07bc2d 125 //printf("ende = %d\n",ende);
Jacqueline 0:6d0671ae4648 126
ahlervin 7:862d80e0ea2d 127 wait (0.1);
Jacqueline 0:6d0671ae4648 128
Jacqueline 1:a95ba1510438 129
Jacqueline 0:6d0671ae4648 130
Jacqueline 0:6d0671ae4648 131
ahlervin 9:feabe0b7cea4 132 if(caseDrive == 1){ // Aufrufen der verschiedenen fahr funktionen
ahlervin 6:7bbcdd07bc2d 133 fahren.geradeausG();
Jacqueline 0:6d0671ae4648 134 } else if (caseDrive == 2){
Jacqueline 0:6d0671ae4648 135 fahren.rechts90();
ahlervin 6:7bbcdd07bc2d 136 fahren.geradeausG();
Jacqueline 0:6d0671ae4648 137 } else if (caseDrive == 3){
Jacqueline 2:402b1a74fff6 138 fahren.links90();
ahlervin 6:7bbcdd07bc2d 139 fahren.geradeausG();
Jacqueline 0:6d0671ae4648 140 } else if (caseDrive == 4){
Jacqueline 0:6d0671ae4648 141 fahren.rechts180();
ahlervin 6:7bbcdd07bc2d 142 fahren.geradeausG();
ahlervin 4:767fd282dd9c 143 } else if (caseDrive == 0){
ahlervin 4:767fd282dd9c 144 fahren.stopp();
ahlervin 4:767fd282dd9c 145 } else if(caseDrive == 5){
ahlervin 4:767fd282dd9c 146 fahren.ziel();
ahlervin 4:767fd282dd9c 147 fahren.stopp();
ahlervin 4:767fd282dd9c 148 }
Jacqueline 0:6d0671ae4648 149 }
Jacqueline 0:6d0671ae4648 150 }