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_V6 by
Regler.cpp
- Committer:
- ahlervin
- Date:
- 2018-05-06
- Revision:
- 9:bdbf4447b55e
- Parent:
- 8:a7f1ee7840d0
File content as of revision 9:bdbf4447b55e:
/*Roboshark V5 Regler.cpp Erstellt: V.Ahlers geändert: V.Ahlers V.5.18 Regler zum geradeaus fahren */ #include <cmath> #include "Regler.h" #include "IRSensor.h" using namespace std; const float Regler :: PERIOD = 0.5f; const int Regler :: FIXSPEED = 50; float faktor = 0.1f; Regler::Regler(AnalogIn& IrRight, AnalogIn& IrLeft, IRSensor& iRSensor): IrRight (IrRight), IrLeft (IrLeft), iRSensor (iRSensor) { SpeedR = 0; SpeedL = 0; ticker.attach(callback(this, &Regler::setSpeed), PERIOD); } Regler::~Regler(){ ticker.detach(); } void Regler::setSpeed (){ measR2 = iRSensor.readR(); // Converts and read the analog input value measL2 = iRSensor.readL(); if(measR2 == measL2){ //DAS ISCH MIN GAGAREGLER zum Pröble gsi SpeedR = FIXSPEED; SpeedL = FIXSPEED; }else if(measR2 < measL2 && measR2 < 300 && measL2 < 300){ //float style implementiert SpeedR = FIXSPEED; SpeedL = FIXSPEED*1.04; }else if(measR2 > measL2 && measR2 < 300 && measL2 < 300){ SpeedR = FIXSPEED*1.06; SpeedL = FIXSPEED; } /* if((measR2 > 100) && (measL2 < 100)) { //keine Wnad rechts if(measL2 > 40){ div3 = measL2 - 40; kor3 = faktor*div3; div2 = 0; div1 = 0; div4 = 0; div5 = 0; div6 = 0; SpeedR = FIXSPEED; SpeedL = FIXSPEED + kor3; } else if (measL2 < 45){ div4 = 45 - measR2; kor4 = faktor*div4; div2 = 0; div1 = 0; div3 = 0; div5 = 0; div6 = 0; SpeedR = FIXSPEED; SpeedL = FIXSPEED + kor4; }else { SpeedR = FIXSPEED; SpeedL = FIXSPEED; } } if((measL2 > 100) &&(measR2 < 100)) { //keine Wnad links if(measR2 > 47){ div5 = measR2 - 47; kor5 = faktor*div5; div2 = 0; div1 = 0; div4 = 0; div6 = 0; div3 = 0; SpeedR = FIXSPEED; SpeedL = FIXSPEED + kor5; } else if (measR2 < 52){ div6 = 52 - measR2; kor6 = faktor*div4; div2 = 0; div1 = 0; div3 = 0; div4 = 0; div5 = 0; SpeedR = FIXSPEED + kor6; SpeedL = FIXSPEED; } else { SpeedR = FIXSPEED; SpeedL = FIXSPEED; } } if ((measR2 < measL2)&& (measL2 - measR2 > 3)) { //IR Sensor werte werden verglichen und die Korrektur wird berechnet div1 = measR2 - measL2; // An beiden seinen Wände kor1 = 0.1f*div1; div2 = 0; div3 = 0; div4 = 0; div5 = 0; div6 = 0; SpeedR = FIXSPEED; SpeedL = FIXSPEED + kor1; } else if ((measR2 > measL2) && (measR2 - measL2 >3)) { div2 = measL2 - measR2; kor2 = 0.1f*div2; div1 = 0; div3 = 0; div4 = 0; div5 = 0; div6 = 0; SpeedR = FIXSPEED + kor2; SpeedL = FIXSPEED; } else { SpeedR = FIXSPEED; SpeedL = FIXSPEED; } //printf("Div1 = %f\n",div1); //printf("Div2 = %f\n",div2); //printf("SpeedR1 = %f\n",SpeedR); //printf("SpeedL1 = %f\n",SpeedL); */ } float Regler :: getSpeedR(){ SpeedR = SpeedR; //printf("SpeedR2 = %f\n",SpeedR); return SpeedR; } float Regler :: getSpeedL(){ SpeedL = SpeedL; //printf("SpeedL2 = %f\n",SpeedL); return SpeedL; }