Nicht funktionierender Regler
Dependencies: mbed
Fork of Roboshark_V3 by
Regler.cpp@8:d7dfee648545, 2018-05-02 (annotated)
- 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?
User | Revision | Line number | New 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 |