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
Mapping.cpp@12:811b1364679e, 2018-05-18 (annotated)
- Committer:
- wengefa1
- Date:
- Fri May 18 11:36:48 2018 +0000
- Revision:
- 12:811b1364679e
- Parent:
- 11:68ee67d17320
new mapping
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| Alexander_Zuest | 0:4a0b987c5c94 | 1 | #include "mbed.h" |
| Alexander_Zuest | 0:4a0b987c5c94 | 2 | #include "Controller.h" |
| Alexander_Zuest | 0:4a0b987c5c94 | 3 | #include "MotorDriver.h" |
| Alexander_Zuest | 0:4a0b987c5c94 | 4 | #include "ReadFinalLine.h" |
| Alexander_Zuest | 0:4a0b987c5c94 | 5 | #include "ReadSensor.h" |
| Alexander_Zuest | 0:4a0b987c5c94 | 6 | #include "Mapping.h" |
| Alexander_Zuest | 6:a1fd0f1374e6 | 7 | #include "SDFileSystem.h" |
| Alexander_Zuest | 6:a1fd0f1374e6 | 8 | |
| wengefa1 | 9:5802ccfcc984 | 9 | DigitalOut myled1(LED1); |
| Alexander_Zuest | 0:4a0b987c5c94 | 10 | |
| Alexander_Zuest | 0:4a0b987c5c94 | 11 | //debug |
| Alexander_Zuest | 0:4a0b987c5c94 | 12 | //DigitalOut myled(LED2); |
| Alexander_Zuest | 0:4a0b987c5c94 | 13 | |
| Alexander_Zuest | 0:4a0b987c5c94 | 14 | // Funktionsinitalisierungen |
| Alexander_Zuest | 0:4a0b987c5c94 | 15 | int readSensor(int SensorNummer);// Liesst Ultraschallsensoren 1-3 aus |
| Alexander_Zuest | 0:4a0b987c5c94 | 16 | |
| Alexander_Zuest | 0:4a0b987c5c94 | 17 | // int diveOne(); Bewegt Farhzeug um ein Feld nach vorne |
| Alexander_Zuest | 0:4a0b987c5c94 | 18 | |
| Alexander_Zuest | 0:4a0b987c5c94 | 19 | int turnRight(int currentDirection); // Biegt Farzeug nach rechts ab und gibt neue Momentanrichtung zurück |
| Alexander_Zuest | 0:4a0b987c5c94 | 20 | |
| Alexander_Zuest | 0:4a0b987c5c94 | 21 | int turnLeft(int currentDirection); // Biegt Farzeug nach links ab und gibt neue Momentanrichtung zurück |
| Alexander_Zuest | 0:4a0b987c5c94 | 22 | |
| Alexander_Zuest | 0:4a0b987c5c94 | 23 | // int wait(int time); Systemfunktion für Pausen |
| Alexander_Zuest | 0:4a0b987c5c94 | 24 | |
| Alexander_Zuest | 6:a1fd0f1374e6 | 25 | SDFileSystem sd(PB_5, PB_4, PB_3, PB_10, "sd"); //mosi, miso, sclk, cs |
| wengefa1 | 8:73c8188916dc | 26 | InterruptIn LineSens1(PC_2); |
| wengefa1 | 8:73c8188916dc | 27 | InterruptIn LineSens2(PC_3); |
| Alexander_Zuest | 0:4a0b987c5c94 | 28 | |
| wengefa1 | 12:811b1364679e | 29 | void mapping(void) //------------------------------------------------------------------------------------------------------ Mapping |
| wengefa1 | 12:811b1364679e | 30 | { |
| Alexander_Zuest | 0:4a0b987c5c94 | 31 | |
| wengefa1 | 12:811b1364679e | 32 | int startPosX = 19; // Feld (10 / 5) |
| wengefa1 | 12:811b1364679e | 33 | int startPosY = 9; |
| Alexander_Zuest | 0:4a0b987c5c94 | 34 | |
| Alexander_Zuest | 0:4a0b987c5c94 | 35 | |
| wengefa1 | 12:811b1364679e | 36 | int map[20][10]; // 20 Zeilen, 10 Spalten, Karte gefüllt mit 3 für keine Daten |
| wengefa1 | 12:811b1364679e | 37 | int f,g; |
| wengefa1 | 12:811b1364679e | 38 | for (f = 0; f < 20; f++) { |
| wengefa1 | 12:811b1364679e | 39 | for (g = 0; g < 10; g++) { |
| wengefa1 | 12:811b1364679e | 40 | map[f][g] = 3; |
| wengefa1 | 12:811b1364679e | 41 | } |
| wengefa1 | 12:811b1364679e | 42 | } |
| Alexander_Zuest | 0:4a0b987c5c94 | 43 | |
| wengefa1 | 12:811b1364679e | 44 | int speed = 3; |
| Alexander_Zuest | 0:4a0b987c5c94 | 45 | |
| wengefa1 | 12:811b1364679e | 46 | int startrichtung = 4; |
| Alexander_Zuest | 0:4a0b987c5c94 | 47 | |
| wengefa1 | 12:811b1364679e | 48 | int P_straight; |
| wengefa1 | 12:811b1364679e | 49 | int P_rightTurn; |
| wengefa1 | 12:811b1364679e | 50 | int P_leftTurn; |
| Alexander_Zuest | 0:4a0b987c5c94 | 51 | |
| Alexander_Zuest | 0:4a0b987c5c94 | 52 | // Sensoren |
| wengefa1 | 12:811b1364679e | 53 | int right = 3; |
| wengefa1 | 12:811b1364679e | 54 | int left = 1; |
| wengefa1 | 12:811b1364679e | 55 | int front = 2; |
| Alexander_Zuest | 0:4a0b987c5c94 | 56 | |
| Alexander_Zuest | 0:4a0b987c5c94 | 57 | // Aktuelle Position |
| wengefa1 | 12:811b1364679e | 58 | int X = startPosX; // Bei Bewegung: X-2 -> 1 nach oben, X+2 -> 1 nach unten |
| wengefa1 | 12:811b1364679e | 59 | int Y = startPosY; // Bei Bewegung: Y-2 -> 1 nach links, Y+2 -> 1 nach rechts |
| Alexander_Zuest | 0:4a0b987c5c94 | 60 | |
| Alexander_Zuest | 0:4a0b987c5c94 | 61 | // Initalisieren der momentanen Richtung |
| wengefa1 | 12:811b1364679e | 62 | int currentDirection = startrichtung; |
| Alexander_Zuest | 0:4a0b987c5c94 | 63 | |
| Alexander_Zuest | 0:4a0b987c5c94 | 64 | // Verzögerung zwischen Aktionen in ms |
| wengefa1 | 12:811b1364679e | 65 | int pause = 2; |
| Alexander_Zuest | 0:4a0b987c5c94 | 66 | |
| Alexander_Zuest | 0:4a0b987c5c94 | 67 | // Zustandsvariabel während Fahrt = 1 bei Ziel =0 |
| wengefa1 | 12:811b1364679e | 68 | int drive = 1; |
| Alexander_Zuest | 0:4a0b987c5c94 | 69 | |
| Alexander_Zuest | 0:4a0b987c5c94 | 70 | // Startinitialisierung, Bestimmen der Abfahrtsrichtung aus dem ersten Feld |
| Alexander_Zuest | 0:4a0b987c5c94 | 71 | |
| wengefa1 | 12:811b1364679e | 72 | if (readSensor(front) == false) { // Gegen vorne freie Fahrt (kein Hindernis -> 0) |
| wengefa1 | 12:811b1364679e | 73 | map[X-1][Y] = 0; |
| wengefa1 | 12:811b1364679e | 74 | } else { |
| Alexander_Zuest | 0:4a0b987c5c94 | 75 | map [X-1][Y] = 1; |
| wengefa1 | 12:811b1364679e | 76 | } |
| Alexander_Zuest | 0:4a0b987c5c94 | 77 | |
| wengefa1 | 12:811b1364679e | 78 | if (readSensor(right) == false) { // Gegen rechts freie Fahrt (kein Hindernis -> 0) |
| wengefa1 | 12:811b1364679e | 79 | map[X-1][Y-1] = 0; |
| wengefa1 | 12:811b1364679e | 80 | } else { |
| Alexander_Zuest | 0:4a0b987c5c94 | 81 | map [X-1][Y-1] = 1; |
| wengefa1 | 12:811b1364679e | 82 | } |
| Alexander_Zuest | 0:4a0b987c5c94 | 83 | |
| wengefa1 | 12:811b1364679e | 84 | map[X][ Y-1] = 1; // ergibt sich aus Feldaufbau und Startrichtung |
| wengefa1 | 12:811b1364679e | 85 | map[X ][ Y] = 1; |
| Alexander_Zuest | 0:4a0b987c5c94 | 86 | |
| Alexander_Zuest | 0:4a0b987c5c94 | 87 | |
| Alexander_Zuest | 0:4a0b987c5c94 | 88 | // Erster Schritt |
| Alexander_Zuest | 0:4a0b987c5c94 | 89 | |
| wengefa1 | 12:811b1364679e | 90 | if(map[X-1][Y] == 0) { |
| wengefa1 | 12:811b1364679e | 91 | driveOne(1,speed); |
| wengefa1 | 12:811b1364679e | 92 | X = X-2; |
| Alexander_Zuest | 0:4a0b987c5c94 | 93 | // debug |
| wengefa1 | 12:811b1364679e | 94 | //printf("\nIf erster schritt\n"); |
| wengefa1 | 12:811b1364679e | 95 | } else { |
| wengefa1 | 12:811b1364679e | 96 | currentDirection = turnRight(currentDirection); |
| wengefa1 | 12:811b1364679e | 97 | //wait(pause); |
| wengefa1 | 12:811b1364679e | 98 | driveOne(1,speed); |
| wengefa1 | 12:811b1364679e | 99 | Y = Y-2; |
| wengefa1 | 12:811b1364679e | 100 | //printf("\nElse erster schritt\n"); |
| wengefa1 | 12:811b1364679e | 101 | } |
| wengefa1 | 8:73c8188916dc | 102 | //Interrupt für Ziellinie |
| wengefa1 | 12:811b1364679e | 103 | LineSens1.rise(&setLine1); |
| wengefa1 | 12:811b1364679e | 104 | LineSens2.rise(&setLine2); |
| wengefa1 | 12:811b1364679e | 105 | |
| Alexander_Zuest | 0:4a0b987c5c94 | 106 | |
| Alexander_Zuest | 0:4a0b987c5c94 | 107 | // Farhralgorithmus |
| Alexander_Zuest | 0:4a0b987c5c94 | 108 | |
| wengefa1 | 12:811b1364679e | 109 | while (drive == 1) { |
| wengefa1 | 12:811b1364679e | 110 | //wait(pause); |
| wengefa1 | 8:73c8188916dc | 111 | |
| wengefa1 | 12:811b1364679e | 112 | // Variabeln zurücksetzen |
| wengefa1 | 12:811b1364679e | 113 | P_straight = 1; |
| wengefa1 | 12:811b1364679e | 114 | P_rightTurn = 1; |
| wengefa1 | 12:811b1364679e | 115 | P_leftTurn = 1; |
| Alexander_Zuest | 0:4a0b987c5c94 | 116 | |
| wengefa1 | 12:811b1364679e | 117 | int s = 12; |
| Alexander_Zuest | 0:4a0b987c5c94 | 118 | |
| Alexander_Zuest | 0:4a0b987c5c94 | 119 | // Mapping während Fahrt |
| wengefa1 | 12:811b1364679e | 120 | switch (currentDirection) { |
| Alexander_Zuest | 0:4a0b987c5c94 | 121 | // --------------------------------------------------------------------------- 1 Ausrichtung oben |
| Alexander_Zuest | 0:4a0b987c5c94 | 122 | |
| Alexander_Zuest | 0:4a0b987c5c94 | 123 | |
| wengefa1 | 12:811b1364679e | 124 | case 1: |
| wengefa1 | 12:811b1364679e | 125 | |
| wengefa1 | 12:811b1364679e | 126 | // Kartografierung Feld in Fahrtrichtung |
| wengefa1 | 12:811b1364679e | 127 | if (readSensor(front) == false) { |
| wengefa1 | 12:811b1364679e | 128 | map[X-1][Y-1] = 0; |
| wengefa1 | 12:811b1364679e | 129 | P_straight = 0; |
| wengefa1 | 12:811b1364679e | 130 | } else { |
| wengefa1 | 12:811b1364679e | 131 | map[X-1][Y-1] = 1; |
| wengefa1 | 12:811b1364679e | 132 | } |
| wengefa1 | 12:811b1364679e | 133 | |
| wengefa1 | 12:811b1364679e | 134 | // Kartografierung Feld rechts |
| wengefa1 | 12:811b1364679e | 135 | if (readSensor(right) == false) { |
| wengefa1 | 12:811b1364679e | 136 | map[X][Y-1] = 0; |
| wengefa1 | 12:811b1364679e | 137 | P_rightTurn = 0; |
| wengefa1 | 12:811b1364679e | 138 | } else { |
| wengefa1 | 12:811b1364679e | 139 | map[X][Y-1] = 1; |
| wengefa1 | 12:811b1364679e | 140 | } |
| wengefa1 | 12:811b1364679e | 141 | |
| wengefa1 | 12:811b1364679e | 142 | // Kartografierung Feld links |
| wengefa1 | 12:811b1364679e | 143 | |
| wengefa1 | 12:811b1364679e | 144 | if (readSensor(left) == false) { |
| wengefa1 | 12:811b1364679e | 145 | map[X-1][Y] = 0; |
| wengefa1 | 12:811b1364679e | 146 | P_leftTurn = 0; |
| wengefa1 | 12:811b1364679e | 147 | } else { |
| wengefa1 | 12:811b1364679e | 148 | map[X-1][Y] = 1; |
| wengefa1 | 12:811b1364679e | 149 | } |
| wengefa1 | 12:811b1364679e | 150 | |
| wengefa1 | 12:811b1364679e | 151 | // Kartografierung Feld nach hinten |
| wengefa1 | 12:811b1364679e | 152 | map[X][Y] = 1; |
| wengefa1 | 12:811b1364679e | 153 | // debug |
| wengefa1 | 12:811b1364679e | 154 | //printf("case 1 \n"); |
| wengefa1 | 12:811b1364679e | 155 | break; |
| Alexander_Zuest | 0:4a0b987c5c94 | 156 | |
| Alexander_Zuest | 0:4a0b987c5c94 | 157 | // --------------------------------------------------------------------------- 2 Ausrichtung Rechts |
| wengefa1 | 12:811b1364679e | 158 | case 2: |
| wengefa1 | 12:811b1364679e | 159 | |
| wengefa1 | 12:811b1364679e | 160 | // Kartografierung Feld in Fahrtrichtung |
| wengefa1 | 12:811b1364679e | 161 | if (readSensor(front) == false) { |
| wengefa1 | 12:811b1364679e | 162 | map[X][Y-1] = 0; |
| wengefa1 | 12:811b1364679e | 163 | P_straight = 0; |
| wengefa1 | 12:811b1364679e | 164 | } else { |
| wengefa1 | 12:811b1364679e | 165 | map[X][Y-1] = 1; |
| wengefa1 | 12:811b1364679e | 166 | } |
| wengefa1 | 12:811b1364679e | 167 | |
| wengefa1 | 12:811b1364679e | 168 | // Kartografierung Feld rechts |
| wengefa1 | 12:811b1364679e | 169 | if (readSensor(right) == false) { |
| wengefa1 | 12:811b1364679e | 170 | map[X][Y] = 0; |
| wengefa1 | 12:811b1364679e | 171 | P_rightTurn = 0; |
| wengefa1 | 12:811b1364679e | 172 | } else { |
| wengefa1 | 12:811b1364679e | 173 | map[X][Y] = 1; |
| wengefa1 | 12:811b1364679e | 174 | } |
| wengefa1 | 12:811b1364679e | 175 | |
| wengefa1 | 12:811b1364679e | 176 | // Kartografierung Feld links |
| wengefa1 | 12:811b1364679e | 177 | |
| wengefa1 | 12:811b1364679e | 178 | if (readSensor(left) == false) { |
| wengefa1 | 12:811b1364679e | 179 | map[X-1][Y-1] = 0; |
| wengefa1 | 12:811b1364679e | 180 | P_leftTurn = 0; |
| wengefa1 | 12:811b1364679e | 181 | } else { |
| wengefa1 | 12:811b1364679e | 182 | map[X-1][Y-1] = 1; |
| wengefa1 | 12:811b1364679e | 183 | } |
| wengefa1 | 12:811b1364679e | 184 | |
| wengefa1 | 12:811b1364679e | 185 | // Kartografierung Feld nach hinten |
| wengefa1 | 12:811b1364679e | 186 | map[X-1][Y] = 1; |
| wengefa1 | 12:811b1364679e | 187 | // debug |
| wengefa1 | 12:811b1364679e | 188 | //printf("case 2 \n"); |
| wengefa1 | 12:811b1364679e | 189 | break; |
| Alexander_Zuest | 0:4a0b987c5c94 | 190 | // --------------------------------------------------------------------------- 3 Ausrichtung Unten |
| wengefa1 | 12:811b1364679e | 191 | case 3: |
| wengefa1 | 12:811b1364679e | 192 | |
| wengefa1 | 12:811b1364679e | 193 | // Kartografierung Feld in Fahrtrichtung |
| wengefa1 | 12:811b1364679e | 194 | if (readSensor(front) == false) { |
| wengefa1 | 12:811b1364679e | 195 | map[X][Y] = 0; |
| wengefa1 | 12:811b1364679e | 196 | P_straight = 0; |
| wengefa1 | 12:811b1364679e | 197 | } else { |
| wengefa1 | 12:811b1364679e | 198 | map[X][Y] = 1; |
| wengefa1 | 12:811b1364679e | 199 | } |
| wengefa1 | 12:811b1364679e | 200 | |
| wengefa1 | 12:811b1364679e | 201 | // Kartografierung Feld rechts |
| wengefa1 | 12:811b1364679e | 202 | if (readSensor(right) == false) { |
| wengefa1 | 12:811b1364679e | 203 | map[X-1][Y] = 0; |
| wengefa1 | 12:811b1364679e | 204 | P_rightTurn = 0; |
| wengefa1 | 12:811b1364679e | 205 | } else { |
| wengefa1 | 12:811b1364679e | 206 | map[X-1][Y] = 1; |
| wengefa1 | 12:811b1364679e | 207 | } |
| wengefa1 | 12:811b1364679e | 208 | |
| wengefa1 | 12:811b1364679e | 209 | // Kartografierung Feld links |
| wengefa1 | 12:811b1364679e | 210 | |
| wengefa1 | 12:811b1364679e | 211 | if (readSensor(left) == false) { |
| wengefa1 | 12:811b1364679e | 212 | map[X][Y-1] = 0; |
| wengefa1 | 12:811b1364679e | 213 | P_leftTurn = 0; |
| wengefa1 | 12:811b1364679e | 214 | } else { |
| wengefa1 | 12:811b1364679e | 215 | map[X][Y-1] = 1; |
| wengefa1 | 12:811b1364679e | 216 | } |
| wengefa1 | 12:811b1364679e | 217 | |
| wengefa1 | 12:811b1364679e | 218 | // Kartografierung Feld nach hinten |
| wengefa1 | 12:811b1364679e | 219 | map[X-1][Y-1] = 1; |
| wengefa1 | 12:811b1364679e | 220 | // debug |
| wengefa1 | 12:811b1364679e | 221 | //printf("case 3: S = %d\n",s); |
| wengefa1 | 12:811b1364679e | 222 | break; |
| wengefa1 | 12:811b1364679e | 223 | // --------------------------------------------------------------------------- 4 Ausrichtung Links |
| wengefa1 | 12:811b1364679e | 224 | case 4: |
| wengefa1 | 12:811b1364679e | 225 | |
| wengefa1 | 12:811b1364679e | 226 | // Kartografierung Feld in Fahrtrichtung |
| wengefa1 | 12:811b1364679e | 227 | if (readSensor(front) == false) { |
| wengefa1 | 12:811b1364679e | 228 | map[X-1][Y] = 0; |
| wengefa1 | 12:811b1364679e | 229 | P_straight = 0; |
| wengefa1 | 12:811b1364679e | 230 | } else { |
| wengefa1 | 12:811b1364679e | 231 | map[X-1][Y] = 1; |
| wengefa1 | 12:811b1364679e | 232 | } |
| wengefa1 | 12:811b1364679e | 233 | |
| wengefa1 | 12:811b1364679e | 234 | // Kartografierung Feld rechts |
| wengefa1 | 12:811b1364679e | 235 | if (readSensor(right) == false) { |
| wengefa1 | 12:811b1364679e | 236 | map[X-1][Y-1] = 0; |
| wengefa1 | 12:811b1364679e | 237 | P_rightTurn = 0; |
| wengefa1 | 12:811b1364679e | 238 | } else { |
| wengefa1 | 12:811b1364679e | 239 | map[X-1][Y-1] = 1; |
| wengefa1 | 12:811b1364679e | 240 | } |
| wengefa1 | 12:811b1364679e | 241 | |
| wengefa1 | 12:811b1364679e | 242 | // Kartografierung Feld links |
| wengefa1 | 12:811b1364679e | 243 | |
| wengefa1 | 12:811b1364679e | 244 | if (readSensor(left) == false) { |
| wengefa1 | 12:811b1364679e | 245 | map[X][Y] = 0; |
| wengefa1 | 12:811b1364679e | 246 | P_leftTurn = 0; |
| wengefa1 | 12:811b1364679e | 247 | } else { |
| wengefa1 | 12:811b1364679e | 248 | map[X][Y] = 1; |
| wengefa1 | 12:811b1364679e | 249 | } |
| wengefa1 | 12:811b1364679e | 250 | |
| wengefa1 | 12:811b1364679e | 251 | // Kartografierung Feld nach hinten |
| wengefa1 | 12:811b1364679e | 252 | map[X-1][Y-1] = 1; |
| wengefa1 | 12:811b1364679e | 253 | // debug |
| wengefa1 | 12:811b1364679e | 254 | //printf("case 4\n"); |
| wengefa1 | 12:811b1364679e | 255 | |
| wengefa1 | 12:811b1364679e | 256 | break; |
| wengefa1 | 12:811b1364679e | 257 | default: //printf("Error: Direction out of definition\n"); |
| Alexander_Zuest | 0:4a0b987c5c94 | 258 | } |
| wengefa1 | 12:811b1364679e | 259 | // debug |
| wengefa1 | 12:811b1364679e | 260 | if (P_straight == 0) { |
| wengefa1 | 12:811b1364679e | 261 | //printf("Geradeaus frei"); |
| Alexander_Zuest | 0:4a0b987c5c94 | 262 | } |
| wengefa1 | 12:811b1364679e | 263 | if (P_rightTurn == 0) { |
| wengefa1 | 12:811b1364679e | 264 | //printf("Rechts frei"); |
| Alexander_Zuest | 0:4a0b987c5c94 | 265 | } |
| wengefa1 | 12:811b1364679e | 266 | if (P_leftTurn == 0) { |
| wengefa1 | 12:811b1364679e | 267 | //printf("Links frei"); |
| Alexander_Zuest | 0:4a0b987c5c94 | 268 | } |
| wengefa1 | 12:811b1364679e | 269 | //printf("Gerade %d\nRechts %d\nLinks %d\n", P_straight, P_rightTurn, P_leftTurn ); |
| Alexander_Zuest | 0:4a0b987c5c94 | 270 | |
| wengefa1 | 12:811b1364679e | 271 | //printf("Momentane Richtung = %d\n", currentDirection ); |
| Alexander_Zuest | 0:4a0b987c5c94 | 272 | |
| Alexander_Zuest | 0:4a0b987c5c94 | 273 | |
| wengefa1 | 12:811b1364679e | 274 | // Fahren gem. Rechtsfahralgorithmus |
| wengefa1 | 12:811b1364679e | 275 | if (P_straight ==1) { |
| wengefa1 | 12:811b1364679e | 276 | driveOne(1,1); |
| wengefa1 | 8:73c8188916dc | 277 | } |
| Alexander_Zuest | 0:4a0b987c5c94 | 278 | |
| wengefa1 | 12:811b1364679e | 279 | if (P_rightTurn == 0) { |
| wengefa1 | 12:811b1364679e | 280 | currentDirection = turnRight(currentDirection); |
| wengefa1 | 12:811b1364679e | 281 | //wait(pause); |
| wengefa1 | 12:811b1364679e | 282 | //printf("Ich biege rechts ab\n"); |
| wengefa1 | 12:811b1364679e | 283 | driveOne(1,speed); |
| wengefa1 | 12:811b1364679e | 284 | //myled = 0; |
| wengefa1 | 12:811b1364679e | 285 | } else { |
| wengefa1 | 12:811b1364679e | 286 | if (P_straight == 0) { |
| wengefa1 | 12:811b1364679e | 287 | driveOne(1,speed); |
| wengefa1 | 12:811b1364679e | 288 | //printf("Ich fahre gerade aus\n"); |
| Alexander_Zuest | 0:4a0b987c5c94 | 289 | //myled = 0; |
| wengefa1 | 12:811b1364679e | 290 | } else { |
| wengefa1 | 12:811b1364679e | 291 | if(P_leftTurn == 0) { |
| Alexander_Zuest | 0:4a0b987c5c94 | 292 | currentDirection = turnLeft(currentDirection); |
| Alexander_Zuest | 0:4a0b987c5c94 | 293 | //wait(pause); |
| wengefa1 | 12:811b1364679e | 294 | //printf("Ich biege links ab\n"); |
| Alexander_Zuest | 0:4a0b987c5c94 | 295 | driveOne(1,speed); |
| Alexander_Zuest | 0:4a0b987c5c94 | 296 | //myled = 0; |
| wengefa1 | 12:811b1364679e | 297 | } else { |
| wengefa1 | 12:811b1364679e | 298 | //printf("Ich wende!!!\n"); |
| wengefa1 | 12:811b1364679e | 299 | currentDirection = turnRight(currentDirection); |
| wengefa1 | 12:811b1364679e | 300 | //wait(pause); |
| wengefa1 | 12:811b1364679e | 301 | currentDirection = turnRight(currentDirection); |
| wengefa1 | 12:811b1364679e | 302 | //wait(pause); |
| wengefa1 | 12:811b1364679e | 303 | driveOne(1,speed); |
| wengefa1 | 12:811b1364679e | 304 | //myled = 1; |
| wengefa1 | 12:811b1364679e | 305 | } |
| Alexander_Zuest | 0:4a0b987c5c94 | 306 | } |
| Alexander_Zuest | 0:4a0b987c5c94 | 307 | } |
| wengefa1 | 12:811b1364679e | 308 | |
| wengefa1 | 12:811b1364679e | 309 | //printf("Neue Richtung = %d\n", currentDirection ); |
| wengefa1 | 12:811b1364679e | 310 | // Aktualisieren der Position: |
| wengefa1 | 12:811b1364679e | 311 | |
| wengefa1 | 12:811b1364679e | 312 | switch (currentDirection) { |
| Alexander_Zuest | 0:4a0b987c5c94 | 313 | case 1: |
| wengefa1 | 12:811b1364679e | 314 | Y = Y-2; |
| wengefa1 | 12:811b1364679e | 315 | break; |
| wengefa1 | 12:811b1364679e | 316 | //---------- |
| Alexander_Zuest | 0:4a0b987c5c94 | 317 | case 2: |
| wengefa1 | 12:811b1364679e | 318 | X = X+2; |
| wengefa1 | 12:811b1364679e | 319 | break; |
| wengefa1 | 12:811b1364679e | 320 | //---------- |
| Alexander_Zuest | 0:4a0b987c5c94 | 321 | case 3: |
| wengefa1 | 12:811b1364679e | 322 | Y = Y+2; |
| wengefa1 | 12:811b1364679e | 323 | break; |
| wengefa1 | 12:811b1364679e | 324 | //---------- |
| Alexander_Zuest | 0:4a0b987c5c94 | 325 | case 4: |
| wengefa1 | 12:811b1364679e | 326 | X = X-2; |
| wengefa1 | 12:811b1364679e | 327 | break; |
| wengefa1 | 12:811b1364679e | 328 | } |
| wengefa1 | 12:811b1364679e | 329 | |
| wengefa1 | 12:811b1364679e | 330 | // Bei Ueberfahren der Ziellinie |
| wengefa1 | 12:811b1364679e | 331 | if(readFinalLine() == true) { // Prüft Linienüberfahrt |
| wengefa1 | 12:811b1364679e | 332 | drive = 0; // Beendet Schlafendurchlauf |
| Alexander_Zuest | 0:4a0b987c5c94 | 333 | } |
| wengefa1 | 12:811b1364679e | 334 | |
| wengefa1 | 12:811b1364679e | 335 | // Verhalten bei Schlaufenfahren = Bereits befahrenen Feldern |
| wengefa1 | 12:811b1364679e | 336 | |
| wengefa1 | 12:811b1364679e | 337 | // Setzt in Richtung des letzten Feldes eine Wand |
| wengefa1 | 12:811b1364679e | 338 | if (map[X][Y] != 3) { |
| wengefa1 | 12:811b1364679e | 339 | switch (currentDirection) { |
| wengefa1 | 12:811b1364679e | 340 | case 1: |
| wengefa1 | 12:811b1364679e | 341 | map[X][Y] = 1; |
| wengefa1 | 12:811b1364679e | 342 | break; |
| wengefa1 | 12:811b1364679e | 343 | |
| wengefa1 | 12:811b1364679e | 344 | case 2: |
| wengefa1 | 12:811b1364679e | 345 | map[X-1][Y] = 1; |
| wengefa1 | 12:811b1364679e | 346 | break; |
| wengefa1 | 12:811b1364679e | 347 | |
| wengefa1 | 12:811b1364679e | 348 | case 3: |
| wengefa1 | 12:811b1364679e | 349 | map[X-1][Y-1] = 1; |
| wengefa1 | 12:811b1364679e | 350 | break; |
| wengefa1 | 12:811b1364679e | 351 | |
| wengefa1 | 12:811b1364679e | 352 | case 4: |
| wengefa1 | 12:811b1364679e | 353 | map[X][Y-1] = 1; |
| wengefa1 | 12:811b1364679e | 354 | break; |
| wengefa1 | 12:811b1364679e | 355 | } |
| wengefa1 | 12:811b1364679e | 356 | |
| wengefa1 | 12:811b1364679e | 357 | } |
| wengefa1 | 12:811b1364679e | 358 | |
| Alexander_Zuest | 0:4a0b987c5c94 | 359 | } // Ende Fahrschlaufe |
| Alexander_Zuest | 0:4a0b987c5c94 | 360 | |
| Alexander_Zuest | 0:4a0b987c5c94 | 361 | // Zielmanoever ausführen------------------------------------------------------------------------------------- |
| Alexander_Zuest | 0:4a0b987c5c94 | 362 | |
| wengefa1 | 12:811b1364679e | 363 | map[X][Y] = 2; |
| wengefa1 | 12:811b1364679e | 364 | map[X-1][Y] = 2; |
| wengefa1 | 12:811b1364679e | 365 | map[X][Y-1] = 2; |
| wengefa1 | 12:811b1364679e | 366 | map[X-1][Y-1] = 2; |
| Alexander_Zuest | 0:4a0b987c5c94 | 367 | |
| Alexander_Zuest | 0:4a0b987c5c94 | 368 | // Karte auf SD speichern------------------------------------------------------------------------------------- |
| Alexander_Zuest | 0:4a0b987c5c94 | 369 | |
| Alexander_Zuest | 0:4a0b987c5c94 | 370 | FILE *fp = fopen("/sd/map.csv", "w"); |
| Alexander_Zuest | 0:4a0b987c5c94 | 371 | if (fp != NULL) { |
| wengefa1 | 12:811b1364679e | 372 | for (int i = 0; i <= 9; i++) { |
| wengefa1 | 12:811b1364679e | 373 | for (int k = 0; k <= 19; g++) { |
| wengefa1 | 12:811b1364679e | 374 | fprintf(fp, "%d",map[k,i]); //fprintf(fp, "Hello fun SD Card World!"); |
| Alexander_Zuest | 0:4a0b987c5c94 | 375 | } |
| wengefa1 | 12:811b1364679e | 376 | fprintf(fp,"\n"); |
| Alexander_Zuest | 0:4a0b987c5c94 | 377 | } |
| Alexander_Zuest | 0:4a0b987c5c94 | 378 | } else { |
| wengefa1 | 12:811b1364679e | 379 | printf("Zugriff auf Karte verweigert"); |
| Alexander_Zuest | 0:4a0b987c5c94 | 380 | } |
| wengefa1 | 12:811b1364679e | 381 | fclose(fp); |
| Alexander_Zuest | 0:4a0b987c5c94 | 382 | |
| wengefa1 | 9:5802ccfcc984 | 383 | while(1) { |
| wengefa1 | 9:5802ccfcc984 | 384 | myled1 = 1; |
| wengefa1 | 9:5802ccfcc984 | 385 | wait(0.2); |
| wengefa1 | 9:5802ccfcc984 | 386 | myled1 = 0; |
| wengefa1 | 9:5802ccfcc984 | 387 | wait(0.2); |
| wengefa1 | 9:5802ccfcc984 | 388 | } |
| Alexander_Zuest | 0:4a0b987c5c94 | 389 | } |
| Alexander_Zuest | 0:4a0b987c5c94 | 390 | |
| Alexander_Zuest | 0:4a0b987c5c94 | 391 | |
| Alexander_Zuest | 0:4a0b987c5c94 | 392 | |
| Alexander_Zuest | 0:4a0b987c5c94 | 393 | |
| Alexander_Zuest | 0:4a0b987c5c94 | 394 | |
| Alexander_Zuest | 0:4a0b987c5c94 | 395 | |
| Alexander_Zuest | 0:4a0b987c5c94 | 396 | |
| Alexander_Zuest | 0:4a0b987c5c94 | 397 | |
| Alexander_Zuest | 0:4a0b987c5c94 | 398 | |
| Alexander_Zuest | 0:4a0b987c5c94 | 399 | |
| Alexander_Zuest | 0:4a0b987c5c94 | 400 | |
| Alexander_Zuest | 0:4a0b987c5c94 | 401 |