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.
Fork of Versuch20 by
Classes/Motion.cpp@1:6ef5bc60e69c, 2018-04-23 (annotated)
- Committer:
- mrbb2
- Date:
- Mon Apr 23 16:18:41 2018 +0000
- Revision:
- 1:6ef5bc60e69c
- Parent:
- 0:b886f13e4ac6
- Child:
- 2:efa9a78591da
PES2;
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| baumgant | 0:b886f13e4ac6 | 1 | #include "Motion.h" |
| baumgant | 0:b886f13e4ac6 | 2 | #include "Controller.h" |
| baumgant | 0:b886f13e4ac6 | 3 | #include "EncoderCounter.h" |
| baumgant | 0:b886f13e4ac6 | 4 | #include "Spurhaltung.h" |
| mrbb2 | 1:6ef5bc60e69c | 5 | #include "IRSensorGF.h" |
| mrbb2 | 1:6ef5bc60e69c | 6 | #include "IRSensorG.h" |
| mrbb2 | 1:6ef5bc60e69c | 7 | #include "IRSensorK.h" |
| mrbb2 | 1:6ef5bc60e69c | 8 | #include "IRSensorZ.h" |
| baumgant | 0:b886f13e4ac6 | 9 | |
| baumgant | 0:b886f13e4ac6 | 10 | |
| baumgant | 0:b886f13e4ac6 | 11 | using namespace std; |
| baumgant | 0:b886f13e4ac6 | 12 | |
| mrbb2 | 1:6ef5bc60e69c | 13 | Motion::Motion(EncoderCounter& counterLeft, EncoderCounter& counterRight, Controller& controller, Spurhaltung& spurhaltung, IRSensorGF& Sensor1, IRSensorG& Sensor2, IRSensorG& Sensor3, IRSensorK& Sensor4, IRSensorK& Sensor5, IRSensorZ& Sensor6): |
| mrbb2 | 1:6ef5bc60e69c | 14 | counterLeft(counterLeft), counterRight(counterRight), controller(controller), spurhaltung(spurhaltung), Sensor1(Sensor1), Sensor2(Sensor2), Sensor3(Sensor3), Sensor4(Sensor4), Sensor5(Sensor5), Sensor6(Sensor6) |
| baumgant | 0:b886f13e4ac6 | 15 | { |
| mrbb2 | 1:6ef5bc60e69c | 16 | |
| baumgant | 0:b886f13e4ac6 | 17 | } |
| baumgant | 0:b886f13e4ac6 | 18 | |
| baumgant | 0:b886f13e4ac6 | 19 | Motion::~Motion() {} |
| baumgant | 0:b886f13e4ac6 | 20 | |
| mrbb2 | 1:6ef5bc60e69c | 21 | void Motion::gerade() |
| mrbb2 | 1:6ef5bc60e69c | 22 | { |
| mrbb2 | 1:6ef5bc60e69c | 23 | |
| mrbb2 | 1:6ef5bc60e69c | 24 | controller.resetCounter(); |
| mrbb2 | 1:6ef5bc60e69c | 25 | int lastCountLeft = counterLeft.read(); |
| mrbb2 | 1:6ef5bc60e69c | 26 | |
| mrbb2 | 1:6ef5bc60e69c | 27 | while(counterLeft.read()-lastCountLeft<(2.094*1260)) { |
| mrbb2 | 1:6ef5bc60e69c | 28 | controller.setDesiredSpeedLeft(spurhaltung.speedr()); //Drehzahl in [rpm] |
| mrbb2 | 1:6ef5bc60e69c | 29 | controller.setDesiredSpeedRight(-spurhaltung.speedl()); |
| mrbb2 | 1:6ef5bc60e69c | 30 | spurhaltung.speedl(); |
| mrbb2 | 1:6ef5bc60e69c | 31 | spurhaltung.speedr(); |
| mrbb2 | 1:6ef5bc60e69c | 32 | } |
| mrbb2 | 1:6ef5bc60e69c | 33 | |
| mrbb2 | 1:6ef5bc60e69c | 34 | controller.setDesiredSpeedLeft(0.0f); //Drehzahl in [rpm] |
| mrbb2 | 1:6ef5bc60e69c | 35 | controller.setDesiredSpeedRight(0.0f); |
| mrbb2 | 1:6ef5bc60e69c | 36 | } |
| mrbb2 | 1:6ef5bc60e69c | 37 | |
| mrbb2 | 1:6ef5bc60e69c | 38 | void Motion::drehenl90() |
| mrbb2 | 1:6ef5bc60e69c | 39 | { |
| mrbb2 | 1:6ef5bc60e69c | 40 | controller.resetCounter(); |
| mrbb2 | 1:6ef5bc60e69c | 41 | int lastCountRight = counterRight.read(); |
| mrbb2 | 1:6ef5bc60e69c | 42 | |
| mrbb2 | 1:6ef5bc60e69c | 43 | while(counterRight.read()-lastCountRight>(-1.15*1260)) { |
| mrbb2 | 1:6ef5bc60e69c | 44 | controller.setDesiredSpeedLeft(-150.0f); //Drehzahl in [rpm] |
| mrbb2 | 1:6ef5bc60e69c | 45 | controller.setDesiredSpeedRight(-150.0f); |
| mrbb2 | 1:6ef5bc60e69c | 46 | } |
| mrbb2 | 1:6ef5bc60e69c | 47 | |
| mrbb2 | 1:6ef5bc60e69c | 48 | controller.setDesiredSpeedLeft(0.0f); //Drehzahl in [rpm] |
| mrbb2 | 1:6ef5bc60e69c | 49 | controller.setDesiredSpeedRight(0.0f); |
| mrbb2 | 1:6ef5bc60e69c | 50 | |
| mrbb2 | 1:6ef5bc60e69c | 51 | controller.resetCounter(); |
| mrbb2 | 1:6ef5bc60e69c | 52 | int lastCountLeft = counterLeft.read(); |
| mrbb2 | 1:6ef5bc60e69c | 53 | |
| mrbb2 | 1:6ef5bc60e69c | 54 | while(counterLeft.read()-lastCountLeft<(2.094*1260)) { |
| mrbb2 | 1:6ef5bc60e69c | 55 | controller.setDesiredSpeedLeft(spurhaltung.speedr()); //Drehzahl in [rpm] |
| mrbb2 | 1:6ef5bc60e69c | 56 | controller.setDesiredSpeedRight(-spurhaltung.speedl()); |
| mrbb2 | 1:6ef5bc60e69c | 57 | spurhaltung.speedl(); |
| mrbb2 | 1:6ef5bc60e69c | 58 | spurhaltung.speedr(); |
| mrbb2 | 1:6ef5bc60e69c | 59 | } |
| mrbb2 | 1:6ef5bc60e69c | 60 | |
| mrbb2 | 1:6ef5bc60e69c | 61 | controller.setDesiredSpeedLeft(0.0f); //Drehzahl in [rpm] |
| mrbb2 | 1:6ef5bc60e69c | 62 | controller.setDesiredSpeedRight(0.0f); |
| mrbb2 | 1:6ef5bc60e69c | 63 | |
| mrbb2 | 1:6ef5bc60e69c | 64 | } |
| mrbb2 | 1:6ef5bc60e69c | 65 | |
| mrbb2 | 1:6ef5bc60e69c | 66 | void Motion::drehenr90() |
| mrbb2 | 1:6ef5bc60e69c | 67 | { |
| mrbb2 | 1:6ef5bc60e69c | 68 | controller.resetCounter(); |
| mrbb2 | 1:6ef5bc60e69c | 69 | int lastCountLeft = counterLeft.read(); |
| mrbb2 | 1:6ef5bc60e69c | 70 | |
| mrbb2 | 1:6ef5bc60e69c | 71 | while(counterLeft.read()-lastCountLeft<(1.15*1260)) { |
| mrbb2 | 1:6ef5bc60e69c | 72 | controller.setDesiredSpeedLeft(150.0f); //Drehzahl in [rpm] |
| mrbb2 | 1:6ef5bc60e69c | 73 | controller.setDesiredSpeedRight(150.0f); |
| mrbb2 | 1:6ef5bc60e69c | 74 | } |
| mrbb2 | 1:6ef5bc60e69c | 75 | |
| mrbb2 | 1:6ef5bc60e69c | 76 | controller.setDesiredSpeedLeft(0.0f); //Drehzahl in [rpm] |
| mrbb2 | 1:6ef5bc60e69c | 77 | controller.setDesiredSpeedRight(0.0f); |
| mrbb2 | 1:6ef5bc60e69c | 78 | |
| mrbb2 | 1:6ef5bc60e69c | 79 | controller.resetCounter(); |
| mrbb2 | 1:6ef5bc60e69c | 80 | lastCountLeft = counterLeft.read(); |
| mrbb2 | 1:6ef5bc60e69c | 81 | |
| mrbb2 | 1:6ef5bc60e69c | 82 | while(counterLeft.read()-lastCountLeft<(2.094*1260)) { |
| mrbb2 | 1:6ef5bc60e69c | 83 | controller.setDesiredSpeedLeft(spurhaltung.speedr()); //Drehzahl in [rpm] |
| mrbb2 | 1:6ef5bc60e69c | 84 | controller.setDesiredSpeedRight(-spurhaltung.speedl()); |
| mrbb2 | 1:6ef5bc60e69c | 85 | spurhaltung.speedl(); |
| mrbb2 | 1:6ef5bc60e69c | 86 | spurhaltung.speedr(); |
| mrbb2 | 1:6ef5bc60e69c | 87 | } |
| mrbb2 | 1:6ef5bc60e69c | 88 | |
| mrbb2 | 1:6ef5bc60e69c | 89 | controller.setDesiredSpeedLeft(0.0f); //Drehzahl in [rpm] |
| mrbb2 | 1:6ef5bc60e69c | 90 | controller.setDesiredSpeedRight(0.0f); |
| mrbb2 | 1:6ef5bc60e69c | 91 | } |
| mrbb2 | 1:6ef5bc60e69c | 92 | |
| mrbb2 | 1:6ef5bc60e69c | 93 | void Motion::drehen180() |
| mrbb2 | 1:6ef5bc60e69c | 94 | { |
| mrbb2 | 1:6ef5bc60e69c | 95 | controller.resetCounter(); |
| mrbb2 | 1:6ef5bc60e69c | 96 | int lastCountRight = counterRight.read(); |
| mrbb2 | 1:6ef5bc60e69c | 97 | |
| mrbb2 | 1:6ef5bc60e69c | 98 | while(counterRight.read()-lastCountRight>(-2.3*1260)) { |
| mrbb2 | 1:6ef5bc60e69c | 99 | controller.setDesiredSpeedLeft(150.0f); //Drehzahl in [rpm] |
| mrbb2 | 1:6ef5bc60e69c | 100 | controller.setDesiredSpeedRight(150.0f); |
| mrbb2 | 1:6ef5bc60e69c | 101 | } |
| mrbb2 | 1:6ef5bc60e69c | 102 | |
| mrbb2 | 1:6ef5bc60e69c | 103 | controller.setDesiredSpeedLeft(0.0f); //Drehzahl in [rpm] |
| mrbb2 | 1:6ef5bc60e69c | 104 | controller.setDesiredSpeedRight(0.0f); |
| mrbb2 | 1:6ef5bc60e69c | 105 | } |
| baumgant | 0:b886f13e4ac6 | 106 | |
| baumgant | 0:b886f13e4ac6 | 107 | void Motion::switching(int D) |
| baumgant | 0:b886f13e4ac6 | 108 | { |
| baumgant | 0:b886f13e4ac6 | 109 | switch(D) { |
| baumgant | 0:b886f13e4ac6 | 110 | case 1: |
| mrbb2 | 1:6ef5bc60e69c | 111 | // Left |
| mrbb2 | 1:6ef5bc60e69c | 112 | drehenl90(); |
| baumgant | 0:b886f13e4ac6 | 113 | // Forward |
| mrbb2 | 1:6ef5bc60e69c | 114 | //gerade(); |
| baumgant | 0:b886f13e4ac6 | 115 | break; |
| baumgant | 0:b886f13e4ac6 | 116 | |
| baumgant | 0:b886f13e4ac6 | 117 | case 2: |
| mrbb2 | 1:6ef5bc60e69c | 118 | // Forward |
| mrbb2 | 1:6ef5bc60e69c | 119 | gerade(); |
| baumgant | 0:b886f13e4ac6 | 120 | break; |
| baumgant | 0:b886f13e4ac6 | 121 | |
| baumgant | 0:b886f13e4ac6 | 122 | case 3: |
| mrbb2 | 1:6ef5bc60e69c | 123 | // Right |
| mrbb2 | 1:6ef5bc60e69c | 124 | drehenr90(); |
| baumgant | 0:b886f13e4ac6 | 125 | // Forward |
| mrbb2 | 1:6ef5bc60e69c | 126 | gerade(); |
| baumgant | 0:b886f13e4ac6 | 127 | break; |
| baumgant | 0:b886f13e4ac6 | 128 | |
| mrbb2 | 1:6ef5bc60e69c | 129 | case 4: |
| mrbb2 | 1:6ef5bc60e69c | 130 | // 180 Drehen |
| mrbb2 | 1:6ef5bc60e69c | 131 | drehen180(); |
| mrbb2 | 1:6ef5bc60e69c | 132 | // Forward |
| mrbb2 | 1:6ef5bc60e69c | 133 | gerade(); |
| mrbb2 | 1:6ef5bc60e69c | 134 | break; |
| baumgant | 0:b886f13e4ac6 | 135 | |
| baumgant | 0:b886f13e4ac6 | 136 | default: |
| baumgant | 0:b886f13e4ac6 | 137 | controller.setDesiredSpeedLeft(0.0f); //Drehzahl in [rpm] |
| baumgant | 0:b886f13e4ac6 | 138 | controller.setDesiredSpeedRight(0.0f); |
| baumgant | 0:b886f13e4ac6 | 139 | } |
| mrbb2 | 1:6ef5bc60e69c | 140 | |
| mrbb2 | 1:6ef5bc60e69c | 141 | |
| mrbb2 | 1:6ef5bc60e69c | 142 | /*void Motion::switching() |
| mrbb2 | 1:6ef5bc60e69c | 143 | { |
| mrbb2 | 1:6ef5bc60e69c | 144 | if(Sensor4.read() == 0) { |
| mrbb2 | 1:6ef5bc60e69c | 145 | // Left |
| mrbb2 | 1:6ef5bc60e69c | 146 | drehenl90(); |
| mrbb2 | 1:6ef5bc60e69c | 147 | // Forward |
| mrbb2 | 1:6ef5bc60e69c | 148 | gerade(); |
| mrbb2 | 1:6ef5bc60e69c | 149 | } else if (Sensor1.read() == 0) { |
| mrbb2 | 1:6ef5bc60e69c | 150 | // Forward |
| mrbb2 | 1:6ef5bc60e69c | 151 | gerade(); |
| mrbb2 | 1:6ef5bc60e69c | 152 | } else if (Sensor5.read() == 0) { |
| mrbb2 | 1:6ef5bc60e69c | 153 | // Right |
| mrbb2 | 1:6ef5bc60e69c | 154 | drehenr90(); |
| mrbb2 | 1:6ef5bc60e69c | 155 | // Forward |
| mrbb2 | 1:6ef5bc60e69c | 156 | gerade(); |
| mrbb2 | 1:6ef5bc60e69c | 157 | } else { |
| mrbb2 | 1:6ef5bc60e69c | 158 | // 180 Drehen |
| mrbb2 | 1:6ef5bc60e69c | 159 | drehen180(); |
| mrbb2 | 1:6ef5bc60e69c | 160 | // Forward |
| mrbb2 | 1:6ef5bc60e69c | 161 | gerade(); |
| mrbb2 | 1:6ef5bc60e69c | 162 | |
| mrbb2 | 1:6ef5bc60e69c | 163 | }*/ |
| baumgant | 0:b886f13e4ac6 | 164 | |
| baumgant | 0:b886f13e4ac6 | 165 | } |
