Nicht funktionierender Regler

Dependencies:   mbed

Fork of Roboshark_V3 by Roboshark

Committer:
ahlervin
Date:
Wed May 02 17:06:39 2018 +0000
Revision:
8:d7dfee648545
Parent:
7:b2a16b1cf487
Funktionierender Regler

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ahlervin 6:a4b745625dbe 1 #include <cmath>
ahlervin 6:a4b745625dbe 2 #include "Regler.h"
ahlervin 6:a4b745625dbe 3
ahlervin 6:a4b745625dbe 4
ahlervin 6:a4b745625dbe 5 using namespace std;
ahlervin 6:a4b745625dbe 6
ahlervin 8:d7dfee648545 7 const float Regler :: PERIOD = 0.2f;
ahlervin 8:d7dfee648545 8 const int Regler :: FIXSPEED = 100;
ahlervin 6:a4b745625dbe 9
ahlervin 6:a4b745625dbe 10
ahlervin 6:a4b745625dbe 11 Regler::Regler(AnalogIn& IrRight, AnalogIn& IrLeft):
ahlervin 6:a4b745625dbe 12 IrRight (IrRight), IrLeft (IrLeft) {
ahlervin 6:a4b745625dbe 13
ahlervin 8:d7dfee648545 14 //SpeedR = 0;
ahlervin 8:d7dfee648545 15 //SpeedL = 0;
ahlervin 6:a4b745625dbe 16 ticker.attach(callback(this, &Regler::setSpeed), PERIOD);
ahlervin 6:a4b745625dbe 17 }
ahlervin 6:a4b745625dbe 18
ahlervin 6:a4b745625dbe 19 Regler::~Regler(){
ahlervin 6:a4b745625dbe 20 ticker.detach();
ahlervin 6:a4b745625dbe 21 }
ahlervin 6:a4b745625dbe 22
ahlervin 6:a4b745625dbe 23 void Regler::setSpeed (){
ahlervin 6:a4b745625dbe 24 measR2 = IrRight.read(); // Converts and read the analog input value (value from 0.0 to 1.0)
ahlervin 6:a4b745625dbe 25 measR2 = measR2* 1000; // Change the value to be in the 0 to 1000 range
ahlervin 6:a4b745625dbe 26 measL2 = IrLeft.read(); // Converts and read the analog input value (value from 0.0 to 1.0)
ahlervin 6:a4b745625dbe 27 measL2 = measL2 * 1000; // Change the value to be in the 0 to 1000 range
ahlervin 6:a4b745625dbe 28
ahlervin 6:a4b745625dbe 29 if (measR2 > measL2) {
ahlervin 6:a4b745625dbe 30 div1 = measR2 - measL2;
ahlervin 8:d7dfee648545 31 kor1 = 0.05f*div1;
ahlervin 8:d7dfee648545 32 div2 = 0;
ahlervin 6:a4b745625dbe 33 SpeedR = FIXSPEED;
ahlervin 6:a4b745625dbe 34 SpeedL = FIXSPEED + kor1;
ahlervin 6:a4b745625dbe 35 } else if (measR2 < measL2) {
ahlervin 6:a4b745625dbe 36 div2 = measL2 - measR2;
ahlervin 8:d7dfee648545 37 kor2 = 0.05f*div2;
ahlervin 8:d7dfee648545 38 div1 = 0;
ahlervin 6:a4b745625dbe 39 SpeedR = FIXSPEED + kor2;
ahlervin 6:a4b745625dbe 40 SpeedL = FIXSPEED;
ahlervin 6:a4b745625dbe 41 } else {
ahlervin 6:a4b745625dbe 42 SpeedR = FIXSPEED;
ahlervin 6:a4b745625dbe 43 SpeedL = FIXSPEED;
ahlervin 6:a4b745625dbe 44 }
ahlervin 8:d7dfee648545 45 //printf("Div1 = %f\n",div1);
ahlervin 8:d7dfee648545 46 //printf("Div2 = %f\n",div2);
ahlervin 8:d7dfee648545 47 //printf("SpeedR1 = %f\n",SpeedR);
ahlervin 8:d7dfee648545 48 //printf("SpeedL1 = %f\n",SpeedL);
ahlervin 6:a4b745625dbe 49 }
ahlervin 6:a4b745625dbe 50 float Regler :: get_SpeedR (){
ahlervin 7:b2a16b1cf487 51 SpeedR = SpeedR;
ahlervin 8:d7dfee648545 52 //printf("SpeedR2 = %f\n",SpeedR);
ahlervin 6:a4b745625dbe 53 return SpeedR;
ahlervin 6:a4b745625dbe 54 }
ahlervin 6:a4b745625dbe 55 float Regler :: get_SpeedL (){
ahlervin 7:b2a16b1cf487 56 SpeedL = SpeedL;
ahlervin 8:d7dfee648545 57 //printf("SpeedL2 = %f\n",SpeedL);
ahlervin 6:a4b745625dbe 58 return SpeedL;
ahlervin 6:a4b745625dbe 59 }
ahlervin 6:a4b745625dbe 60
ahlervin 6:a4b745625dbe 61
ahlervin 6:a4b745625dbe 62
ahlervin 6:a4b745625dbe 63
ahlervin 6:a4b745625dbe 64
ahlervin 6:a4b745625dbe 65