Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Fork of Roboshark_V9 by
Diff: main.cpp
- Revision:
- 6:7bbcdd07bc2d
- Parent:
- 4:767fd282dd9c
- Child:
- 7:862d80e0ea2d
--- a/main.cpp Thu Apr 26 05:58:07 2018 +0000 +++ b/main.cpp Thu May 03 19:36:16 2018 +0000 @@ -1,3 +1,11 @@ +/*Roboshark V4 +main.cpp +Erstellt: J. Blunschi +geändert: V.Ahlers +V.5.18 +main zu Robishark V4 +*/ + #include <mbed.h> @@ -5,7 +13,7 @@ #include "Controller.h" #include "IRSensor.h" #include "Fahren.h" -#include "StateMachine.h" +#include "Regler.h" DigitalOut myled(LED1); @@ -22,13 +30,6 @@ DigitalOut bit1(PC_2); DigitalOut bit2(PC_3); -/*IRSensor irSensor0(distance, bit0, bit1, bit2, 0); -IRSensor irSensor1(distance, bit0, bit1, bit2, 1); -IRSensor irSensor2(distance, bit0, bit1, bit2, 2); -IRSensor irSensor3(distance, bit0, bit1, bit2, 3); -IRSensor irSensor4(distance, bit0, bit1, bit2, 4); -IRSensor irSensor5(distance, bit0, bit1, bit2, 5);*/ - AnalogIn IrRight(PC_3); //von main Vincent kopiert AnalogIn IrLeft (PC_5); AnalogIn IrFront(PC_2); @@ -47,12 +48,10 @@ bool finish = 0; bool finishLast = 0; int ende = 0; -int temp = 0; //von main Vincent kopiert - -IRSensor iRSensor(IrRight, IrLeft, IrFront, dis2R, dis2L, dis2F, LineSensor); -//IRSensor bottom (IrRight, IrLeft, IrFront, dis2R, dis2L, dis2F, LineSensor); //von main Vincent kopiert -StateMachine stateMachine(IrR, IrL, IrF); //von main Vincent kopiert - +int temp = 0; +float SpeedR = 0; +float SpeedL = 0; + //von main Vincent kopiert DigitalOut enableMotorDriver(PB_2); DigitalIn motorDriverFault(PB_14); @@ -64,9 +63,13 @@ EncoderCounter counterLeft(PB_6, PB_7); EncoderCounter counterRight(PA_6, PC_7); +IRSensor iRSensor(IrRight, IrLeft, IrFront, dis2R, dis2L, dis2F, LineSensor); //von main Vincent kopiert + Controller controller(pwmLeft, pwmRight, counterLeft, counterRight); -Fahren fahren(controller, counterLeft, counterRight); //Reihenfolge!!!!!!!!!!!!!!!!!!! Ultra wichtig +Regler regler(IrRight, IrLeft); + +Fahren fahren(controller, counterLeft, counterRight, regler); //Reihenfolge!!!!!!!!!!!!!!!!!!! Ultra wichtig int main() { @@ -75,7 +78,6 @@ //controller.setDesiredSpeedRight(-150.0f); //DEFAULT VON TOBI enable = 1; enableMotorDriver = 1; // Schaltet den Leistungstreiber ein - while(1) { // Test um Drehungen und geradeaus zu testen @@ -91,7 +93,7 @@ fahren.links90(); wait(1.0f);*/ - // IR Sensoren einlesen Programm Vincen + // IR Sensoren einlesen float disR = iRSensor.readR(); // Distanz in mm float disL = iRSensor.readL(); float disF = iRSensor.readF(); @@ -101,8 +103,7 @@ int IrR = iRSensor.codeR(); // min Distanz unterschritten = 1 int IrL = iRSensor.codeL(); int IrF = iRSensor.codeF(); - /*int caseDrive = stateMachine.drive();*/ //entscheidung welcher Drive Case - ende = iRSensor.get_ende(); + ende = iRSensor.get_ende(); // Line erkennt = 1 @@ -111,7 +112,7 @@ printf (" finishLast = %d\n",finishLast); printf("line = %f\n", line); - /* printf ("IR Right = %d \n", IrR); + printf ("IR Right = %d \n", IrR); printf("IR Left = %d\n",IrL); printf("IR Front = %d\n",IrF);*/ @@ -124,36 +125,36 @@ } else if ((IrR==1) && (IrL==0) && (IrF==0) && (ende == 0)){ caseDrive = 1; // Folge: geradeaus fahren } else if ((IrR==1) && (IrL==0) && (IrF==1) && (ende == 0)){ - caseDrive = 3; // Folge: 270 Grad nach rechts drehen + caseDrive = 3; // Folge: 90 Grad nach Links drehen } else if ((IrR==1) && (IrL==1) && (IrF==0) && (ende == 0)){ caseDrive = 1; // Folge: geradeaus fahren } else if ((IrR==1) && (IrL==1) && (IrF==1) && (ende == 0)){ caseDrive = 4; // Folge: 180 Grad nach rechts drehen } else if ((ende == 1) && (temp == 0)){ - caseDrive = 5; + caseDrive = 5; // Folge: Ziel erreicht temp = 1; - } else {caseDrive = 0; + } else {caseDrive = 0; // Folge; Stop } - printf("caseDrive = %d\n",caseDrive); - printf("ende = %d\n",ende); + //printf("caseDrive = %d\n",caseDrive); + //printf("ende = %d\n",ende); - wait (0.5); + wait (0.2); - if(caseDrive == 1){ - fahren.geradeaus(); + if(caseDrive == 1){ // Aufrufen der verschiedenen fahr funktionen + fahren.geradeausG(); } else if (caseDrive == 2){ fahren.rechts90(); - fahren.geradeaus(); + fahren.geradeausG(); } else if (caseDrive == 3){ fahren.links90(); - fahren.geradeaus(); + fahren.geradeausG(); } else if (caseDrive == 4){ fahren.rechts180(); - fahren.geradeaus(); + fahren.geradeausG(); } else if (caseDrive == 0){ fahren.stopp(); } else if(caseDrive == 5){