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 autonomousRobotAndroid by
main.cpp@23:4d8173c5183b, 2013-05-19 (annotated)
- Committer:
- chrigelburri
- Date:
- Sun May 19 14:39:20 2013 +0000
- Revision:
- 23:4d8173c5183b
- Parent:
- 22:bfec16575c91
mit anzeige;
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| chrigelburri | 18:306d362d692b | 1 | |
| chrigelburri | 10:09ddb819fdcb | 2 | /*! \mainpage Index Page |
| chrigelburri | 2:d8e1613dc38b | 3 | * @author Christian Burri |
| chrigelburri | 11:775ebb69d5e1 | 4 | * @author Arno Galliker |
| chrigelburri | 2:d8e1613dc38b | 5 | * |
| chrigelburri | 11:775ebb69d5e1 | 6 | * @copyright Copyright © 2013 HSLU Pren Team #1 Cruising Crêpe |
| chrigelburri | 1:6cd533a712c6 | 7 | * All rights reserved. |
| chrigelburri | 2:d8e1613dc38b | 8 | * |
| chrigelburri | 11:775ebb69d5e1 | 9 | * @brief |
| chrigelburri | 2:d8e1613dc38b | 10 | * |
| chrigelburri | 15:cb1337567ad4 | 11 | * This program is for an autonomous robot for the competition |
| chrigelburri | 4:3a97923ff2d4 | 12 | * at the Hochschule Luzern. |
| chrigelburri | 3:92ba0254af87 | 13 | * We are one of the 32 teams. In the team #1 is: |
| chrigelburri | 11:775ebb69d5e1 | 14 | * - Bauernfeind Julia <B>WI</B> <a href="mailto:julia.bauernfeind@stud.hslu.ch">julia.bauernfeind@stud.hslu.ch</a> |
| chrigelburri | 11:775ebb69d5e1 | 15 | * - Büttler Pirmin <B>WI</B> <a href="mailto:pirmin.buetler@stud.hslu.ch">pirmin.buetler@stud.hslu.ch</a> |
| chrigelburri | 11:775ebb69d5e1 | 16 | * - Amberg Reto <B>I</B> <a href="mailto:reto.amberg@stud.hslu.ch">reto.amberg@stud.hslu.ch</a> |
| chrigelburri | 11:775ebb69d5e1 | 17 | * - Galliker Arno <B>I</B> <a href="mailto:arno.galliker@stud.hslu.ch">arno.galliker@stud.hslu.ch</a> |
| chrigelburri | 11:775ebb69d5e1 | 18 | * - Amrein Marcel <B>M</B> <a href="mailto:marcel.amrein@stud.hslu.ch">marcel.amrein@stud.hslu.ch</a> |
| chrigelburri | 11:775ebb69d5e1 | 19 | * - Flühler Ramon <B>M</B> <a href="mailto:ramon.fluehler@stud.hslu.ch">ramon.fluehler@stud.hslu.ch</a> |
| chrigelburri | 11:775ebb69d5e1 | 20 | * - Burri Christian <B>ET</B> <a href="mailto:christian.burri@stud.hslu.ch">christian.burri@stud.hslu.ch</a> |
| chrigelburri | 4:3a97923ff2d4 | 21 | * |
| chrigelburri | 13:a7c30ee09bae | 22 | * The postition control is based on this Documentation: Control of Wheeled Mobile Robots: |
| chrigelburri | 13:a7c30ee09bae | 23 | * An Experimental Overview from Alessandro De Luca, Giuseppe Oriolo, Marilena Vendittelli. |
| chrigelburri | 15:cb1337567ad4 | 24 | * For more information see here: <a href="http://www.dis.uniroma1.it/~labrob/pub/papers/Ramsete01.pdf">http://www.dis.uniroma1.it/~labrob/pub/papers/Ramsete01.pdf</a> |
| chrigelburri | 2:d8e1613dc38b | 25 | * |
| chrigelburri | 21:48248c5b8992 | 26 | * The connection to an android smartphone is realise with the library MicroBridge(Android ADB) from Junichi Katsu. |
| chrigelburri | 21:48248c5b8992 | 27 | * For more information see here: <a href="http://mbed.org/users/jksoft/code/MicroBridge/">http://mbed.org/users/jksoft/code/MicroBridge/</a> |
| chrigelburri | 21:48248c5b8992 | 28 | * |
| chrigelburri | 13:a7c30ee09bae | 29 | * The rest of the classes are only based on standard library from mbed. |
| chrigelburri | 15:cb1337567ad4 | 30 | * For more information see here: <a href="http://mbed.org/users/mbed_official/code/mbed/">http://mbed.org/users/mbed_official/code/mbed/</a> |
| chrigelburri | 1:6cd533a712c6 | 31 | */ |
| chrigelburri | 1:6cd533a712c6 | 32 | |
| chrigelburri | 11:775ebb69d5e1 | 33 | /** |
| chrigelburri | 11:775ebb69d5e1 | 34 | * @file main.cpp |
| chrigelburri | 11:775ebb69d5e1 | 35 | */ |
| chrigelburri | 11:775ebb69d5e1 | 36 | |
| chrigelburri | 1:6cd533a712c6 | 37 | #include "defines.h" |
| chrigelburri | 1:6cd533a712c6 | 38 | #include "State.h" |
| chrigelburri | 1:6cd533a712c6 | 39 | #include "RobotControl.h" |
| chrigelburri | 18:306d362d692b | 40 | #include "androidADB.h" |
| chrigelburri | 11:775ebb69d5e1 | 41 | |
| chrigelburri | 11:775ebb69d5e1 | 42 | /** |
| chrigelburri | 11:775ebb69d5e1 | 43 | * @name Hallsensor |
| chrigelburri | 11:775ebb69d5e1 | 44 | * @{ |
| chrigelburri | 11:775ebb69d5e1 | 45 | */ |
| chrigelburri | 12:235e318a414f | 46 | |
| chrigelburri | 12:235e318a414f | 47 | /** |
| chrigelburri | 12:235e318a414f | 48 | * @brief <code>hallsensorLeft</code> object with pin15, pin17 and pin16 |
| chrigelburri | 12:235e318a414f | 49 | */ |
| chrigelburri | 11:775ebb69d5e1 | 50 | Hallsensor hallLeft(p18, p17, p16); |
| chrigelburri | 12:235e318a414f | 51 | |
| chrigelburri | 11:775ebb69d5e1 | 52 | /** |
| chrigelburri | 11:775ebb69d5e1 | 53 | * @brief <code>hallsensorLeft</code> object with pin17, pin28 and pin29 |
| chrigelburri | 11:775ebb69d5e1 | 54 | */ |
| chrigelburri | 11:775ebb69d5e1 | 55 | Hallsensor hallRight(p27, p28, p29); |
| chrigelburri | 11:775ebb69d5e1 | 56 | /*! @} */ |
| chrigelburri | 1:6cd533a712c6 | 57 | |
| chrigelburri | 10:09ddb819fdcb | 58 | /** |
| chrigelburri | 11:775ebb69d5e1 | 59 | * @name Motors and Robot Control |
| chrigelburri | 12:235e318a414f | 60 | * @{ |
| chrigelburri | 10:09ddb819fdcb | 61 | */ |
| chrigelburri | 12:235e318a414f | 62 | |
| chrigelburri | 12:235e318a414f | 63 | /** |
| chrigelburri | 12:235e318a414f | 64 | * @brief <code>leftMotor</code> object with pin26, pin25, pin24, |
| chrigelburri | 12:235e318a414f | 65 | * pin19 and <code>hallsensorLeft</code> object |
| chrigelburri | 12:235e318a414f | 66 | */ |
| chrigelburri | 1:6cd533a712c6 | 67 | MaxonESCON leftMotor(p26, p25, p24, p19, &hallLeft); |
| chrigelburri | 12:235e318a414f | 68 | |
| chrigelburri | 11:775ebb69d5e1 | 69 | /** |
| chrigelburri | 12:235e318a414f | 70 | * @brief <code>rightMotor</code> object with pin23, pin22, pin21, |
| chrigelburri | 12:235e318a414f | 71 | * pin20 and <code>hallsensorRight</code> object |
| chrigelburri | 11:775ebb69d5e1 | 72 | */ |
| chrigelburri | 1:6cd533a712c6 | 73 | MaxonESCON rightMotor(p23, p22, p21, p20, &hallRight); |
| chrigelburri | 1:6cd533a712c6 | 74 | |
| chrigelburri | 11:775ebb69d5e1 | 75 | /** |
| chrigelburri | 12:235e318a414f | 76 | * @brief <code>robotControl</code> object with <code>leftMotor</code>, |
| chrigelburri | 12:235e318a414f | 77 | * <code>rightMotor</code> and the sampling rate for the run method |
| chrigelburri | 11:775ebb69d5e1 | 78 | */ |
| chrigelburri | 11:775ebb69d5e1 | 79 | RobotControl robotControl(&leftMotor, &rightMotor, PERIOD_ROBOTCONTROL); |
| chrigelburri | 11:775ebb69d5e1 | 80 | /*! @} */ |
| chrigelburri | 1:6cd533a712c6 | 81 | |
| chrigelburri | 11:775ebb69d5e1 | 82 | /** |
| chrigelburri | 11:775ebb69d5e1 | 83 | * @name Logging & State |
| chrigelburri | 11:775ebb69d5e1 | 84 | * @{ |
| chrigelburri | 11:775ebb69d5e1 | 85 | */ |
| chrigelburri | 12:235e318a414f | 86 | |
| chrigelburri | 12:235e318a414f | 87 | /** |
| chrigelburri | 12:235e318a414f | 88 | * @brief Define the struct for the State and the Logging |
| chrigelburri | 12:235e318a414f | 89 | */ |
| chrigelburri | 11:775ebb69d5e1 | 90 | state_t s; |
| chrigelburri | 12:235e318a414f | 91 | |
| chrigelburri | 11:775ebb69d5e1 | 92 | /** |
| chrigelburri | 12:235e318a414f | 93 | * @brief <code>state</code> object with <code>robotControl</code>, |
| chrigelburri | 12:235e318a414f | 94 | * <code>rightMotor</code>, <code>leftMotor</code>, <code>battery</code> |
| chrigelburri | 12:235e318a414f | 95 | * and the sampling rate for the run method |
| chrigelburri | 11:775ebb69d5e1 | 96 | */ |
| chrigelburri | 11:775ebb69d5e1 | 97 | State state(&s, &robotControl, &leftMotor, &rightMotor, p15, PERIOD_STATE); |
| chrigelburri | 11:775ebb69d5e1 | 98 | /*! @} */ |
| chrigelburri | 1:6cd533a712c6 | 99 | |
| chrigelburri | 14:6a45a9f940a8 | 100 | /** |
| chrigelburri | 14:6a45a9f940a8 | 101 | * @name Communication |
| chrigelburri | 14:6a45a9f940a8 | 102 | * @{ |
| chrigelburri | 14:6a45a9f940a8 | 103 | */ |
| chrigelburri | 14:6a45a9f940a8 | 104 | |
| chrigelburri | 14:6a45a9f940a8 | 105 | /*! @} */ |
| chrigelburri | 14:6a45a9f940a8 | 106 | |
| chrigelburri | 14:6a45a9f940a8 | 107 | |
| chrigelburri | 12:235e318a414f | 108 | // @todo PC USB communications DAs wird danach gelöscht |
| chrigelburri | 18:306d362d692b | 109 | Serial pc(USBTX, USBRX); |
| chrigelburri | 1:6cd533a712c6 | 110 | |
| chrigelburri | 23:4d8173c5183b | 111 | PwmOut led[4] = { LED1, LED2, LED3, LED4 }; |
| chrigelburri | 23:4d8173c5183b | 112 | |
| chrigelburri | 23:4d8173c5183b | 113 | |
| chrigelburri | 12:235e318a414f | 114 | /** |
| chrigelburri | 12:235e318a414f | 115 | * @brief Main function. Start the Programm here. |
| chrigelburri | 12:235e318a414f | 116 | */ |
| chrigelburri | 1:6cd533a712c6 | 117 | int main() |
| chrigelburri | 1:6cd533a712c6 | 118 | { |
| chrigelburri | 12:235e318a414f | 119 | |
| chrigelburri | 22:bfec16575c91 | 120 | int garagenumber = 1; |
| chrigelburri | 22:bfec16575c91 | 121 | float x = -2.954f + 0.308 * garagenumber; |
| chrigelburri | 22:bfec16575c91 | 122 | float ypre = 1.30f; |
| chrigelburri | 22:bfec16575c91 | 123 | float ygoal = 0.80f; |
| chrigelburri | 22:bfec16575c91 | 124 | |
| chrigelburri | 12:235e318a414f | 125 | /** |
| chrigelburri | 22:bfec16575c91 | 126 | * Check at first the Battery voltage. Starts when the voltages greater as the min is. |
| chrigelburri | 12:235e318a414f | 127 | * start the timer for the Logging to the file |
| chrigelburri | 12:235e318a414f | 128 | * and start the Task for logging |
| chrigelburri | 23:4d8173c5183b | 129 | * Slow PWM sample for the end |
| chrigelburri | 12:235e318a414f | 130 | **/ |
| chrigelburri | 22:bfec16575c91 | 131 | state.start(); |
| chrigelburri | 22:bfec16575c91 | 132 | state.initPlotFile(); |
| chrigelburri | 22:bfec16575c91 | 133 | state.closePlotFile(); |
| chrigelburri | 23:4d8173c5183b | 134 | while(s.voltageBattery < BAT_MIN) { |
| chrigelburri | 23:4d8173c5183b | 135 | for (float f = 0.1f; f < 6.3f; f += 0.1f) { |
| chrigelburri | 23:4d8173c5183b | 136 | for(int i = 0; i <= 3; i ++) { |
| chrigelburri | 23:4d8173c5183b | 137 | led[i] = state.dim( i, f ); |
| chrigelburri | 23:4d8173c5183b | 138 | } |
| chrigelburri | 23:4d8173c5183b | 139 | wait_ms(20); |
| chrigelburri | 23:4d8173c5183b | 140 | } |
| chrigelburri | 23:4d8173c5183b | 141 | wait(0.05); |
| chrigelburri | 23:4d8173c5183b | 142 | for (float f = 0.1f; f < 6.3f; f += 0.1f) { |
| chrigelburri | 23:4d8173c5183b | 143 | for(int i = 0; i <= 3; i ++) { |
| chrigelburri | 23:4d8173c5183b | 144 | led[i] = state.dim( 3-i, f ); |
| chrigelburri | 23:4d8173c5183b | 145 | } |
| chrigelburri | 23:4d8173c5183b | 146 | wait_ms(20); |
| chrigelburri | 23:4d8173c5183b | 147 | } |
| chrigelburri | 23:4d8173c5183b | 148 | wait(0.05); |
| chrigelburri | 23:4d8173c5183b | 149 | } |
| chrigelburri | 22:bfec16575c91 | 150 | state.stop(); |
| chrigelburri | 23:4d8173c5183b | 151 | for(int i = 0; i <= 3; i ++) { |
| chrigelburri | 23:4d8173c5183b | 152 | led[i] = state.dim( 0, 0.0f ); |
| chrigelburri | 23:4d8173c5183b | 153 | } |
| chrigelburri | 22:bfec16575c91 | 154 | wait(0.5); |
| chrigelburri | 22:bfec16575c91 | 155 | state.start(); |
| chrigelburri | 16:b5d949136a21 | 156 | state.initPlotFile(); |
| chrigelburri | 12:235e318a414f | 157 | state.startTimerFromZero(); |
| chrigelburri | 12:235e318a414f | 158 | |
| chrigelburri | 12:235e318a414f | 159 | /** |
| chrigelburri | 12:235e318a414f | 160 | * Clear all Errors of the ESCON Module, with a disabled to enable event |
| chrigelburri | 12:235e318a414f | 161 | */ |
| chrigelburri | 1:6cd533a712c6 | 162 | robotControl.setEnable(false); |
| chrigelburri | 16:b5d949136a21 | 163 | wait(0.01); |
| chrigelburri | 1:6cd533a712c6 | 164 | robotControl.setEnable(true); |
| chrigelburri | 6:48eeb41188dd | 165 | wait(0.1); |
| chrigelburri | 12:235e318a414f | 166 | |
| chrigelburri | 12:235e318a414f | 167 | /** |
| chrigelburri | 12:235e318a414f | 168 | * Set the startposition and start the Task for controlling the roboter. |
| chrigelburri | 12:235e318a414f | 169 | */ |
| chrigelburri | 22:bfec16575c91 | 170 | // robotControl.setAllToZero(0, 0, PI/2 ); |
| chrigelburri | 22:bfec16575c91 | 171 | robotControl.setAllToZero(START_X_OFFSET, START_Y_OFFSET, PI/2 ); |
| chrigelburri | 8:696c2f9dfc62 | 172 | robotControl.start(); |
| chrigelburri | 22:bfec16575c91 | 173 | robotControl.setDesiredPositionAndAngle(START_X_OFFSET, START_Y_OFFSET, PI/2); |
| chrigelburri | 22:bfec16575c91 | 174 | wait(0.1); |
| chrigelburri | 22:bfec16575c91 | 175 | state.savePlotFile(s); |
| chrigelburri | 6:48eeb41188dd | 176 | |
| chrigelburri | 22:bfec16575c91 | 177 | /** |
| chrigelburri | 22:bfec16575c91 | 178 | * Sets the desired Points. |
| chrigelburri | 22:bfec16575c91 | 179 | */ |
| chrigelburri | 22:bfec16575c91 | 180 | robotControl.setDesiredPositionAndAngle(-1.35f, 1.85f, 3*PI/8); |
| chrigelburri | 22:bfec16575c91 | 181 | while(!(robotControl.getDistanceError() <= 0.7)) { |
| chrigelburri | 22:bfec16575c91 | 182 | state.savePlotFile(s); |
| chrigelburri | 22:bfec16575c91 | 183 | }; |
| chrigelburri | 6:48eeb41188dd | 184 | |
| chrigelburri | 22:bfec16575c91 | 185 | robotControl.setDesiredPositionAndAngle(-0.75f, 2.85f, 3*PI/8); |
| chrigelburri | 22:bfec16575c91 | 186 | while(!(robotControl.getDistanceError() <= 0.7)) { |
| chrigelburri | 22:bfec16575c91 | 187 | state.savePlotFile(s); |
| chrigelburri | 22:bfec16575c91 | 188 | }; |
| chrigelburri | 6:48eeb41188dd | 189 | |
| chrigelburri | 22:bfec16575c91 | 190 | robotControl.setDesiredPositionAndAngle(-1.0f, 3.75f, 3*PI/4); |
| chrigelburri | 22:bfec16575c91 | 191 | while(!(robotControl.getDistanceError() <= 0.55)) { |
| chrigelburri | 22:bfec16575c91 | 192 | state.savePlotFile(s); |
| chrigelburri | 22:bfec16575c91 | 193 | }; |
| chrigelburri | 8:696c2f9dfc62 | 194 | |
| chrigelburri | 22:bfec16575c91 | 195 | robotControl.setDesiredPositionAndAngle(-1.5f, 3.6f, PI); |
| chrigelburri | 22:bfec16575c91 | 196 | while(!(robotControl.getDistanceError() <= 0.05)) { |
| chrigelburri | 22:bfec16575c91 | 197 | state.savePlotFile(s); |
| chrigelburri | 22:bfec16575c91 | 198 | }; |
| chrigelburri | 11:775ebb69d5e1 | 199 | |
| chrigelburri | 22:bfec16575c91 | 200 | robotControl.setDesiredPositionAndAngle(-2.1f, 3.0f, -PI/2); |
| chrigelburri | 22:bfec16575c91 | 201 | while(!(robotControl.getDistanceError() <= 1.0)) { |
| chrigelburri | 22:bfec16575c91 | 202 | state.savePlotFile(s); |
| chrigelburri | 22:bfec16575c91 | 203 | }; |
| chrigelburri | 12:235e318a414f | 204 | |
| chrigelburri | 22:bfec16575c91 | 205 | robotControl.setDesiredPositionAndAngle(-2.0f, 1.8f, -PI/2); |
| chrigelburri | 22:bfec16575c91 | 206 | while(!(robotControl.getDistanceError() <= 1.0)) { |
| chrigelburri | 22:bfec16575c91 | 207 | state.savePlotFile(s); |
| chrigelburri | 22:bfec16575c91 | 208 | }; |
| chrigelburri | 22:bfec16575c91 | 209 | |
| chrigelburri | 22:bfec16575c91 | 210 | robotControl.setDesiredPositionAndAngle(x, ypre, -PI/2); |
| chrigelburri | 22:bfec16575c91 | 211 | while(!(robotControl.getDistanceError() <= 0.4)) { |
| chrigelburri | 22:bfec16575c91 | 212 | state.savePlotFile(s); |
| chrigelburri | 22:bfec16575c91 | 213 | }; |
| chrigelburri | 22:bfec16575c91 | 214 | robotControl.setDesiredPositionAndAngle(x, ygoal, -PI/2); |
| chrigelburri | 22:bfec16575c91 | 215 | while(!(s.millis >= 19000)) { |
| chrigelburri | 22:bfec16575c91 | 216 | state.savePlotFile(s); |
| chrigelburri | 22:bfec16575c91 | 217 | } |
| chrigelburri | 8:696c2f9dfc62 | 218 | |
| chrigelburri | 8:696c2f9dfc62 | 219 | |
| chrigelburri | 22:bfec16575c91 | 220 | /* |
| chrigelburri | 22:bfec16575c91 | 221 | pc.baud(460800); |
| chrigelburri | 22:bfec16575c91 | 222 | pc.printf("********************* MicroBridge 4568 ********************************\n\r"); |
| chrigelburri | 21:48248c5b8992 | 223 | |
| chrigelburri | 22:bfec16575c91 | 224 | init(); |
| chrigelburri | 19:b2f76b0fe4c8 | 225 | |
| chrigelburri | 22:bfec16575c91 | 226 | // Initialise the ADB subsystem. |
| chrigelburri | 19:b2f76b0fe4c8 | 227 | |
| chrigelburri | 22:bfec16575c91 | 228 | pc.printf("connection isOpen\n"); |
| chrigelburri | 21:48248c5b8992 | 229 | |
| chrigelburri | 22:bfec16575c91 | 230 | while(getDesiredTheta() < (4 * PI)) { |
| chrigelburri | 22:bfec16575c91 | 231 | |
| chrigelburri | 22:bfec16575c91 | 232 | ADB::poll(); |
| chrigelburri | 19:b2f76b0fe4c8 | 233 | |
| chrigelburri | 22:bfec16575c91 | 234 | if (getDesiredTheta() > (2 * PI)) { |
| chrigelburri | 22:bfec16575c91 | 235 | //robotControl.setAllToZero(0, 0, PI/2 ); |
| chrigelburri | 22:bfec16575c91 | 236 | robotControl.setAllToZero(START_X_OFFSET, START_Y_OFFSET, PI/2 ); |
| chrigelburri | 22:bfec16575c91 | 237 | robotControl.setDesiredPositionAndAngle(START_X_OFFSET, START_Y_OFFSET, PI/2); |
| chrigelburri | 22:bfec16575c91 | 238 | } |
| chrigelburri | 22:bfec16575c91 | 239 | else |
| chrigelburri | 22:bfec16575c91 | 240 | { |
| chrigelburri | 22:bfec16575c91 | 241 | robotControl.setDesiredPositionAndAngle(getDesiredX(), getDesiredY(), getDesiredTheta()); |
| chrigelburri | 21:48248c5b8992 | 242 | |
| chrigelburri | 21:48248c5b8992 | 243 | |
| chrigelburri | 22:bfec16575c91 | 244 | state.savePlotFile(s); |
| chrigelburri | 22:bfec16575c91 | 245 | //void writeActualPosition(float x, float y, float t, int state_u, int state_l, int state_r, float volt_b) |
| chrigelburri | 22:bfec16575c91 | 246 | } |
| chrigelburri | 22:bfec16575c91 | 247 | |
| chrigelburri | 22:bfec16575c91 | 248 | writeActualPosition(robotControl.getxActualPosition(),robotControl.getyActualPosition(), robotControl.getActualTheta(), s.state&STATE_UNDER, s.state&STATE_LEFT, s.state&STATE_RIGHT, s.voltageBattery); |
| chrigelburri | 22:bfec16575c91 | 249 | //connection->write(sizeof(str),(unsigned char*)&str); |
| chrigelburri | 22:bfec16575c91 | 250 | |
| chrigelburri | 22:bfec16575c91 | 251 | wait(0.25); |
| chrigelburri | 22:bfec16575c91 | 252 | |
| chrigelburri | 22:bfec16575c91 | 253 | } |
| chrigelburri | 22:bfec16575c91 | 254 | |
| chrigelburri | 22:bfec16575c91 | 255 | */ |
| chrigelburri | 21:48248c5b8992 | 256 | /** |
| chrigelburri | 21:48248c5b8992 | 257 | * Close the File PLOTS.txt to read the file with the computer afterwards and draw a diagramm |
| chrigelburri | 21:48248c5b8992 | 258 | */ |
| chrigelburri | 10:09ddb819fdcb | 259 | state.savePlotFile(s); |
| chrigelburri | 10:09ddb819fdcb | 260 | state.closePlotFile(); |
| chrigelburri | 10:09ddb819fdcb | 261 | state.stop(); |
| chrigelburri | 10:09ddb819fdcb | 262 | robotControl.setEnable(false); |
| chrigelburri | 23:4d8173c5183b | 263 | robotControl.stop(); |
| chrigelburri | 23:4d8173c5183b | 264 | |
| chrigelburri | 23:4d8173c5183b | 265 | /** |
| chrigelburri | 23:4d8173c5183b | 266 | * Fast PWM sample for the end |
| chrigelburri | 23:4d8173c5183b | 267 | */ |
| chrigelburri | 23:4d8173c5183b | 268 | while(1) { |
| chrigelburri | 23:4d8173c5183b | 269 | for (float f = 0.1f; f < 6.3f; f += 0.1f) { |
| chrigelburri | 23:4d8173c5183b | 270 | for(int i = 0; i <= 3; i ++) { |
| chrigelburri | 23:4d8173c5183b | 271 | led[i] = state.dim( i, f ); |
| chrigelburri | 23:4d8173c5183b | 272 | } |
| chrigelburri | 23:4d8173c5183b | 273 | wait_ms(5); |
| chrigelburri | 23:4d8173c5183b | 274 | } |
| chrigelburri | 23:4d8173c5183b | 275 | wait(0.1); |
| chrigelburri | 23:4d8173c5183b | 276 | for (float f = 0.1f; f < 6.3f; f += 0.1f) { |
| chrigelburri | 23:4d8173c5183b | 277 | for(int i = 0; i <= 3; i ++) { |
| chrigelburri | 23:4d8173c5183b | 278 | led[i] = state.dim( 3-i, f ); |
| chrigelburri | 23:4d8173c5183b | 279 | } |
| chrigelburri | 23:4d8173c5183b | 280 | wait_ms(5); |
| chrigelburri | 23:4d8173c5183b | 281 | } |
| chrigelburri | 23:4d8173c5183b | 282 | wait(0.05); |
| chrigelburri | 23:4d8173c5183b | 283 | } |
| chrigelburri | 21:48248c5b8992 | 284 | |
| chrigelburri | 10:09ddb819fdcb | 285 | } |
