Grupo T / Mbed OS GRUPOT
Committer:
lucasfontenla
Date:
Wed May 16 12:19:49 2018 +0000
Revision:
25:7b3826dddcba
Parent:
24:92f612ca218b
Child:
26:f891ff6beb33
Zeramento e cancelamento via serial.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lucasfontenla 21:c6c33381fc5f 1 // LIBs ------------------------------------------------------------------------------------
lucasfontenla 0:cc562f78f889 2 #include "mbed.h"
lucasfontenla 22:000890b38b32 3 #include "string"
lucasfontenla 24:92f612ca218b 4 #include "classes.h"
lucasfontenla 0:cc562f78f889 5
lucasfontenla 5:0cbf491f703d 6 // MACHINE SETUP ---------------------------------------------------------------------------
lucasfontenla 23:d64d37561b4a 7 Timer t;
lucasfontenla 24:92f612ca218b 8 IHM ihm_class;
lucasfontenla 5:0cbf491f703d 9
lucasfontenla 5:0cbf491f703d 10 // drivers output signal
lucasfontenla 14:7cc41420a12c 11 DigitalOut enable(D2);
lucasfontenla 14:7cc41420a12c 12
lucasfontenla 4:48717b42eab2 13 DigitalOut dirX(D3);
lucasfontenla 15:4604a7ee9c77 14 DigitalOut stepX(D4);
lucasfontenla 4:48717b42eab2 15
lucasfontenla 15:4604a7ee9c77 16 DigitalOut dirY(D5);
lucasfontenla 15:4604a7ee9c77 17 DigitalOut stepY(D6);
lucasfontenla 4:48717b42eab2 18
lucasfontenla 15:4604a7ee9c77 19 DigitalOut dirZ(D7);
lucasfontenla 15:4604a7ee9c77 20 DigitalOut stepZ(D8);
lucasfontenla 4:48717b42eab2 21
lucasfontenla 5:0cbf491f703d 22 // hardware input signal
lucasfontenla 5:0cbf491f703d 23 // end-of-stroke sensors
lucasfontenla 16:3adab04d42a6 24 InterruptIn endX(A2);
lucasfontenla 16:3adab04d42a6 25 InterruptIn endY(A3);
lucasfontenla 16:3adab04d42a6 26 InterruptIn endZ(A4);
lucasfontenla 5:0cbf491f703d 27
lucasfontenla 23:d64d37561b4a 28 // JOG Controls
lucasfontenla 9:d771a576e4fc 29 AnalogIn joyX(A0);
lucasfontenla 9:d771a576e4fc 30 AnalogIn joyY(A1);
lucasfontenla 4:48717b42eab2 31
lucasfontenla 16:3adab04d42a6 32 DigitalIn zUp(D15);
lucasfontenla 16:3adab04d42a6 33 DigitalIn zDwn(D14);
lucasfontenla 4:48717b42eab2 34
lucasfontenla 5:0cbf491f703d 35 // variables definition
lucasfontenla 23:d64d37561b4a 36 int modeStatus = 1;
lucasfontenla 5:0cbf491f703d 37
lucasfontenla 4:48717b42eab2 38 float valX;
lucasfontenla 4:48717b42eab2 39 float valY;
lucasfontenla 4:48717b42eab2 40 int valZUp;
lucasfontenla 4:48717b42eab2 41 int valZDwn;
lucasfontenla 4:48717b42eab2 42
lucasfontenla 4:48717b42eab2 43 int activeX = 1;
lucasfontenla 4:48717b42eab2 44 int activeY = 1;
lucasfontenla 4:48717b42eab2 45 int activeZ = 1;
lucasfontenla 4:48717b42eab2 46
lucasfontenla 5:0cbf491f703d 47 int x_dir;
lucasfontenla 5:0cbf491f703d 48 int y_dir;
lucasfontenla 5:0cbf491f703d 49 int z_dir;
lucasfontenla 5:0cbf491f703d 50
lucasfontenla 13:0f385bfe3e0d 51 int x_plus = 0;
lucasfontenla 13:0f385bfe3e0d 52 int x_minus = 1;
lucasfontenla 17:55e6270adab5 53 int y_plus = 0;
lucasfontenla 17:55e6270adab5 54 int y_minus = 1;
lucasfontenla 16:3adab04d42a6 55 int z_plus = 0;
lucasfontenla 16:3adab04d42a6 56 int z_minus = 1;
lucasfontenla 9:d771a576e4fc 57
lucasfontenla 15:4604a7ee9c77 58 int x_limit = 0;
lucasfontenla 16:3adab04d42a6 59 int x_block_max = 0;
lucasfontenla 16:3adab04d42a6 60 int x_block_min = 0;
lucasfontenla 12:801e58a7137c 61
lucasfontenla 15:4604a7ee9c77 62 int y_limit = 0;
lucasfontenla 16:3adab04d42a6 63 int y_block_max = 0;
lucasfontenla 16:3adab04d42a6 64 int y_block_min = 0;
lucasfontenla 15:4604a7ee9c77 65
lucasfontenla 15:4604a7ee9c77 66 int z_limit = 0;
lucasfontenla 16:3adab04d42a6 67 int z_block_max = 0;
lucasfontenla 16:3adab04d42a6 68 int z_block_min = 0;
lucasfontenla 9:d771a576e4fc 69
lucasfontenla 24:92f612ca218b 70 float ppsMax = 1000.0;
lucasfontenla 5:0cbf491f703d 71
lucasfontenla 7:27ea14e58788 72 int totalX = 0;
lucasfontenla 7:27ea14e58788 73 int totalY = 0;
lucasfontenla 15:4604a7ee9c77 74 int totalZ = 0;
lucasfontenla 7:27ea14e58788 75
lucasfontenla 17:55e6270adab5 76 int x_steps_to_run;
lucasfontenla 17:55e6270adab5 77 int y_steps_to_run;
lucasfontenla 17:55e6270adab5 78 int z_steps_to_run;
lucasfontenla 17:55e6270adab5 79
lucasfontenla 18:174b4ff351b5 80 float x_distance_to_run;
lucasfontenla 18:174b4ff351b5 81 float y_distance_to_run;
lucasfontenla 18:174b4ff351b5 82 float z_distance_to_run;
lucasfontenla 18:174b4ff351b5 83
lucasfontenla 7:27ea14e58788 84 float X = 0;
lucasfontenla 7:27ea14e58788 85 float Y = 0;
lucasfontenla 15:4604a7ee9c77 86 float Z = 0;
lucasfontenla 7:27ea14e58788 87
lucasfontenla 9:d771a576e4fc 88 int endX1Status;
lucasfontenla 9:d771a576e4fc 89 int endX2Status;
lucasfontenla 9:d771a576e4fc 90
lucasfontenla 7:27ea14e58788 91 // machine parameters
lucasfontenla 8:de64672c240f 92 float xPitch = 3.0;
lucasfontenla 8:de64672c240f 93 float yPitch = 3.0;
lucasfontenla 15:4604a7ee9c77 94 float zPitch = 3.0;
lucasfontenla 7:27ea14e58788 95
lucasfontenla 7:27ea14e58788 96 float motor_steps_by_rotation = 200.0;
lucasfontenla 7:27ea14e58788 97 float step_mode = 0.5;
lucasfontenla 7:27ea14e58788 98 float steps_by_rotation = motor_steps_by_rotation/step_mode;
lucasfontenla 7:27ea14e58788 99
lucasfontenla 18:174b4ff351b5 100 int saved = 0;
lucasfontenla 19:e69ff16f35aa 101 const int maxPoints = 10;
lucasfontenla 22:000890b38b32 102 float points[3][maxPoints]; // [0] X; [1] Y; [2] Z;
lucasfontenla 22:000890b38b32 103 float path[2][maxPoints]; // [0] speed; [1] mode;
lucasfontenla 22:000890b38b32 104 int resting_points = 0;
lucasfontenla 18:174b4ff351b5 105
lucasfontenla 18:174b4ff351b5 106 int startSaved = 0;
lucasfontenla 20:1d98a6f51dee 107 int autoReload = 0;
lucasfontenla 20:1d98a6f51dee 108 int exitSavedPointsLoop = 0;
lucasfontenla 20:1d98a6f51dee 109 int keepSavedPointsReload = 0;
lucasfontenla 18:174b4ff351b5 110
lucasfontenla 23:d64d37561b4a 111 int kill_jog;
lucasfontenla 23:d64d37561b4a 112
lucasfontenla 21:c6c33381fc5f 113 // PROTOTYPE FUNCTIONS -------------------------------------------------------------------------------
lucasfontenla 23:d64d37561b4a 114 void jog(void);
lucasfontenla 23:d64d37561b4a 115 void killJog(void);
lucasfontenla 23:d64d37561b4a 116
lucasfontenla 23:d64d37561b4a 117 void automatic_run(int);
lucasfontenla 23:d64d37561b4a 118
lucasfontenla 5:0cbf491f703d 119 void move(int pps, int x_dir, int y_dir, int z_dir, int x_step, int y_step, int z_step);
lucasfontenla 17:55e6270adab5 120
lucasfontenla 17:55e6270adab5 121 float steps_to_distance(int steps, float pitch);
lucasfontenla 17:55e6270adab5 122 int distance_to_steps(float distance, float pitch);
lucasfontenla 7:27ea14e58788 123
lucasfontenla 15:4604a7ee9c77 124 void endX_press(void);
lucasfontenla 15:4604a7ee9c77 125 void endX_release(void);
lucasfontenla 11:0e22a6fc7f87 126
lucasfontenla 15:4604a7ee9c77 127 void endY_press(void);
lucasfontenla 15:4604a7ee9c77 128 void endY_release(void);
lucasfontenla 15:4604a7ee9c77 129
lucasfontenla 15:4604a7ee9c77 130 void endZ_press(void);
lucasfontenla 15:4604a7ee9c77 131 void endZ_release(void);
lucasfontenla 9:d771a576e4fc 132
lucasfontenla 12:801e58a7137c 133 void zeroX(int pps);
lucasfontenla 11:0e22a6fc7f87 134 void zeroY(int pps);
lucasfontenla 11:0e22a6fc7f87 135
lucasfontenla 18:174b4ff351b5 136 void savePoint(void);
lucasfontenla 18:174b4ff351b5 137 void startSavedPoints(void);
lucasfontenla 18:174b4ff351b5 138
lucasfontenla 17:55e6270adab5 139 void printDistance(void);
lucasfontenla 17:55e6270adab5 140
lucasfontenla 23:d64d37561b4a 141 void readSerial(void);
lucasfontenla 22:000890b38b32 142
lucasfontenla 21:c6c33381fc5f 143 // MAIN PROGRAM ----------------------------------------------------------------------------------------------
lucasfontenla 1:b2e395e50a45 144 int main(){
lucasfontenla 16:3adab04d42a6 145 printf("\nStarting...\r\n");
lucasfontenla 14:7cc41420a12c 146
lucasfontenla 22:000890b38b32 147 enable = 0;
lucasfontenla 24:92f612ca218b 148 t.start();
lucasfontenla 22:000890b38b32 149
lucasfontenla 21:c6c33381fc5f 150 // interrupções de fim de curso
lucasfontenla 22:000890b38b32 151 /*
lucasfontenla 15:4604a7ee9c77 152 endX.fall(&endX_press);
lucasfontenla 15:4604a7ee9c77 153 endX.rise(&endX_release);
lucasfontenla 5:0cbf491f703d 154
lucasfontenla 15:4604a7ee9c77 155 endY.fall(&endY_press);
lucasfontenla 15:4604a7ee9c77 156 endY.rise(&endY_release);
lucasfontenla 15:4604a7ee9c77 157
lucasfontenla 15:4604a7ee9c77 158 endZ.fall(&endZ_press);
lucasfontenla 23:d64d37561b4a 159 endZ.rise(&endZ_release);*/
lucasfontenla 20:1d98a6f51dee 160
lucasfontenla 23:d64d37561b4a 161 while(1){
lucasfontenla 23:d64d37561b4a 162 if(ihm.readable()){
lucasfontenla 23:d64d37561b4a 163 readSerial();
lucasfontenla 23:d64d37561b4a 164 }
lucasfontenla 5:0cbf491f703d 165 }
lucasfontenla 9:d771a576e4fc 166 }
lucasfontenla 9:d771a576e4fc 167
lucasfontenla 9:d771a576e4fc 168 // FUNCTIONS ----------------------------------------------------------------
lucasfontenla 23:d64d37561b4a 169
lucasfontenla 15:4604a7ee9c77 170 void endX_press(void){
lucasfontenla 15:4604a7ee9c77 171 printf("X - press\n\r");
lucasfontenla 15:4604a7ee9c77 172 if(dirX == x_plus){
lucasfontenla 16:3adab04d42a6 173 x_block_max = 1;
lucasfontenla 15:4604a7ee9c77 174 }
lucasfontenla 15:4604a7ee9c77 175 else {
lucasfontenla 16:3adab04d42a6 176 x_block_min = 1;
lucasfontenla 15:4604a7ee9c77 177 }
lucasfontenla 12:801e58a7137c 178 }
lucasfontenla 15:4604a7ee9c77 179 void endX_release(void){
lucasfontenla 15:4604a7ee9c77 180 printf("X - release\n\r");
lucasfontenla 16:3adab04d42a6 181 x_block_min = 0;
lucasfontenla 16:3adab04d42a6 182 x_block_max = 0;
lucasfontenla 12:801e58a7137c 183 }
lucasfontenla 16:3adab04d42a6 184
lucasfontenla 15:4604a7ee9c77 185 void endY_press(void){
lucasfontenla 16:3adab04d42a6 186 printf("Y - press\n\r");
lucasfontenla 16:3adab04d42a6 187 if(dirY == y_plus){
lucasfontenla 16:3adab04d42a6 188 y_block_max = 1;
lucasfontenla 16:3adab04d42a6 189 }
lucasfontenla 16:3adab04d42a6 190 else {
lucasfontenla 16:3adab04d42a6 191 y_block_min = 1;
lucasfontenla 16:3adab04d42a6 192 }
lucasfontenla 15:4604a7ee9c77 193 }
lucasfontenla 15:4604a7ee9c77 194 void endY_release(void){
lucasfontenla 15:4604a7ee9c77 195 printf("Y - release\n\r");
lucasfontenla 16:3adab04d42a6 196 y_block_min = 0;
lucasfontenla 16:3adab04d42a6 197 y_block_max = 0;
lucasfontenla 9:d771a576e4fc 198 }
lucasfontenla 9:d771a576e4fc 199
lucasfontenla 15:4604a7ee9c77 200 void endZ_press(void){
lucasfontenla 15:4604a7ee9c77 201 printf("Z - press\n\r");
lucasfontenla 16:3adab04d42a6 202 if(dirZ == z_plus){
lucasfontenla 16:3adab04d42a6 203 z_block_max = 1;
lucasfontenla 16:3adab04d42a6 204 }
lucasfontenla 16:3adab04d42a6 205 else {
lucasfontenla 16:3adab04d42a6 206 z_block_min = 1;
lucasfontenla 16:3adab04d42a6 207 }
lucasfontenla 9:d771a576e4fc 208 }
lucasfontenla 15:4604a7ee9c77 209 void endZ_release(void){
lucasfontenla 15:4604a7ee9c77 210 printf("Z - release\n\r");
lucasfontenla 16:3adab04d42a6 211 z_block_min = 0;
lucasfontenla 16:3adab04d42a6 212 z_block_max = 0;
lucasfontenla 9:d771a576e4fc 213 }
lucasfontenla 7:27ea14e58788 214
lucasfontenla 5:0cbf491f703d 215 void move(int pps, int x_dir, int y_dir, int z_dir, int x_step, int y_step, int z_step){
lucasfontenla 5:0cbf491f703d 216 float time = 1.0/pps/2.0;
lucasfontenla 5:0cbf491f703d 217
lucasfontenla 5:0cbf491f703d 218 dirX = x_dir;
lucasfontenla 5:0cbf491f703d 219 dirY = y_dir;
lucasfontenla 5:0cbf491f703d 220 dirZ = z_dir;
lucasfontenla 5:0cbf491f703d 221
lucasfontenla 16:3adab04d42a6 222 // X
lucasfontenla 16:3adab04d42a6 223 if((x_dir == x_plus) && x_block_max){
lucasfontenla 16:3adab04d42a6 224 x_step = 0;
lucasfontenla 16:3adab04d42a6 225 }
lucasfontenla 16:3adab04d42a6 226 if((x_dir == x_minus) && x_block_min){
lucasfontenla 12:801e58a7137c 227 x_step = 0;
lucasfontenla 12:801e58a7137c 228 }
lucasfontenla 12:801e58a7137c 229
lucasfontenla 16:3adab04d42a6 230 // Y
lucasfontenla 16:3adab04d42a6 231 if((y_dir == y_plus) && y_block_max){
lucasfontenla 16:3adab04d42a6 232 y_step = 0;
lucasfontenla 16:3adab04d42a6 233 }
lucasfontenla 16:3adab04d42a6 234 if((y_dir == y_minus) && y_block_min){
lucasfontenla 11:0e22a6fc7f87 235 y_step = 0;
lucasfontenla 11:0e22a6fc7f87 236 }
lucasfontenla 16:3adab04d42a6 237
lucasfontenla 16:3adab04d42a6 238 // Z
lucasfontenla 16:3adab04d42a6 239 if((z_dir == z_plus) && z_block_max){
lucasfontenla 16:3adab04d42a6 240 z_step = 0;
lucasfontenla 16:3adab04d42a6 241 }
lucasfontenla 16:3adab04d42a6 242 if((z_dir == z_minus) && z_block_min){
lucasfontenla 15:4604a7ee9c77 243 z_step = 0;
lucasfontenla 11:0e22a6fc7f87 244 }
lucasfontenla 11:0e22a6fc7f87 245
lucasfontenla 5:0cbf491f703d 246 int max_val;
lucasfontenla 5:0cbf491f703d 247
lucasfontenla 6:af32c68ff4cf 248 // maior número de passos -------
lucasfontenla 5:0cbf491f703d 249 if(x_step > y_step){
lucasfontenla 5:0cbf491f703d 250 if(x_step > z_step){
lucasfontenla 5:0cbf491f703d 251 max_val = x_step;
lucasfontenla 4:48717b42eab2 252 }
lucasfontenla 4:48717b42eab2 253 else {
lucasfontenla 5:0cbf491f703d 254 max_val = z_step;
lucasfontenla 4:48717b42eab2 255 }
lucasfontenla 5:0cbf491f703d 256 } else if(y_step > z_step){
lucasfontenla 5:0cbf491f703d 257 max_val = y_step;
lucasfontenla 5:0cbf491f703d 258 }
lucasfontenla 5:0cbf491f703d 259 else {
lucasfontenla 5:0cbf491f703d 260 max_val = z_step;
lucasfontenla 5:0cbf491f703d 261 }
lucasfontenla 5:0cbf491f703d 262
lucasfontenla 5:0cbf491f703d 263 for(int i = 0; i < max_val; i++){
lucasfontenla 6:af32c68ff4cf 264 if(i >= x_step){
lucasfontenla 5:0cbf491f703d 265 stepX = 0;
lucasfontenla 5:0cbf491f703d 266 }
lucasfontenla 5:0cbf491f703d 267 else { stepX = 1; }
lucasfontenla 4:48717b42eab2 268
lucasfontenla 6:af32c68ff4cf 269 if(i >= y_step){
lucasfontenla 5:0cbf491f703d 270 stepY = 0;
lucasfontenla 5:0cbf491f703d 271 }
lucasfontenla 11:0e22a6fc7f87 272 else {
lucasfontenla 11:0e22a6fc7f87 273 stepY = 1;}
lucasfontenla 5:0cbf491f703d 274
lucasfontenla 6:af32c68ff4cf 275 if(i >= z_step){
lucasfontenla 5:0cbf491f703d 276 stepZ = 0;
lucasfontenla 5:0cbf491f703d 277 }
lucasfontenla 5:0cbf491f703d 278 else { stepZ = 1; }
lucasfontenla 5:0cbf491f703d 279
lucasfontenla 5:0cbf491f703d 280 wait(time);
lucasfontenla 4:48717b42eab2 281 stepX = 0;
lucasfontenla 4:48717b42eab2 282 stepY = 0;
lucasfontenla 4:48717b42eab2 283 stepZ = 0;
lucasfontenla 5:0cbf491f703d 284 wait(time);
lucasfontenla 4:48717b42eab2 285 }
lucasfontenla 17:55e6270adab5 286
lucasfontenla 17:55e6270adab5 287 if(dirX == x_minus){
lucasfontenla 17:55e6270adab5 288 totalX-=x_step;
lucasfontenla 17:55e6270adab5 289 }
lucasfontenla 17:55e6270adab5 290 else { totalX+=x_step; }
lucasfontenla 17:55e6270adab5 291
lucasfontenla 17:55e6270adab5 292 if(dirY == y_minus){
lucasfontenla 17:55e6270adab5 293 totalY-=y_step;
lucasfontenla 17:55e6270adab5 294 } else { totalY+=y_step; }
lucasfontenla 17:55e6270adab5 295
lucasfontenla 17:55e6270adab5 296 if(dirZ == z_minus){
lucasfontenla 17:55e6270adab5 297 totalZ-=z_step;
lucasfontenla 17:55e6270adab5 298 } else { totalZ+=z_step; }
lucasfontenla 5:0cbf491f703d 299 }
lucasfontenla 17:55e6270adab5 300
lucasfontenla 12:801e58a7137c 301 void zeroX(int pps){
lucasfontenla 25:7b3826dddcba 302 printf("Zero X\n\r");
lucasfontenla 12:801e58a7137c 303 float time = 1.0/pps/2.0;
lucasfontenla 12:801e58a7137c 304
lucasfontenla 17:55e6270adab5 305 if(dirX != x_minus){
lucasfontenla 17:55e6270adab5 306 dirX = x_minus;
lucasfontenla 17:55e6270adab5 307 }
lucasfontenla 17:55e6270adab5 308
lucasfontenla 17:55e6270adab5 309 while(!x_block_min){
lucasfontenla 12:801e58a7137c 310 stepX = 1;
lucasfontenla 12:801e58a7137c 311 wait(time);
lucasfontenla 12:801e58a7137c 312 stepX = 0;
lucasfontenla 12:801e58a7137c 313 wait(time);
lucasfontenla 12:801e58a7137c 314 }
lucasfontenla 12:801e58a7137c 315
lucasfontenla 12:801e58a7137c 316 printf("X zero\n\r");
lucasfontenla 12:801e58a7137c 317
lucasfontenla 17:55e6270adab5 318 totalX = 0;
lucasfontenla 12:801e58a7137c 319 }
lucasfontenla 11:0e22a6fc7f87 320 void zeroY(int pps){
lucasfontenla 25:7b3826dddcba 321 printf("Zero Y\n\r");
lucasfontenla 11:0e22a6fc7f87 322 float time = 1.0/pps/2.0;
lucasfontenla 11:0e22a6fc7f87 323
lucasfontenla 17:55e6270adab5 324 if(dirY != y_minus){
lucasfontenla 17:55e6270adab5 325 dirY = y_minus;
lucasfontenla 17:55e6270adab5 326 }
lucasfontenla 17:55e6270adab5 327
lucasfontenla 17:55e6270adab5 328 while(!y_block_min){
lucasfontenla 11:0e22a6fc7f87 329 stepY = 1;
lucasfontenla 11:0e22a6fc7f87 330 wait(time);
lucasfontenla 11:0e22a6fc7f87 331 stepY = 0;
lucasfontenla 11:0e22a6fc7f87 332 wait(time);
lucasfontenla 11:0e22a6fc7f87 333 }
lucasfontenla 11:0e22a6fc7f87 334
lucasfontenla 11:0e22a6fc7f87 335 printf("Y zero\n\r");
lucasfontenla 11:0e22a6fc7f87 336
lucasfontenla 17:55e6270adab5 337 totalY = 0;
lucasfontenla 17:55e6270adab5 338 }
lucasfontenla 11:0e22a6fc7f87 339
lucasfontenla 25:7b3826dddcba 340 void zeroZ(int pps){
lucasfontenla 25:7b3826dddcba 341 printf("Zero Z\n\r");
lucasfontenla 25:7b3826dddcba 342 float time = 1.0/pps/2.0;
lucasfontenla 25:7b3826dddcba 343
lucasfontenla 25:7b3826dddcba 344 if(dirZ != z_minus){
lucasfontenla 25:7b3826dddcba 345 dirZ = z_minus;
lucasfontenla 25:7b3826dddcba 346 }
lucasfontenla 25:7b3826dddcba 347
lucasfontenla 25:7b3826dddcba 348 while(!z_block_min){
lucasfontenla 25:7b3826dddcba 349 stepZ = 1;
lucasfontenla 25:7b3826dddcba 350 wait(time);
lucasfontenla 25:7b3826dddcba 351 stepZ = 0;
lucasfontenla 25:7b3826dddcba 352 wait(time);
lucasfontenla 25:7b3826dddcba 353 }
lucasfontenla 25:7b3826dddcba 354
lucasfontenla 25:7b3826dddcba 355 printf("Z zero\n\r");
lucasfontenla 25:7b3826dddcba 356
lucasfontenla 25:7b3826dddcba 357 totalZ = 0;
lucasfontenla 25:7b3826dddcba 358 }
lucasfontenla 25:7b3826dddcba 359
lucasfontenla 17:55e6270adab5 360 float steps_to_distance(int steps, float pitch){
lucasfontenla 7:27ea14e58788 361 float delta_S = (((float)steps)/steps_by_rotation)*pitch;
lucasfontenla 7:27ea14e58788 362 return delta_S;
lucasfontenla 7:27ea14e58788 363 }
lucasfontenla 17:55e6270adab5 364
lucasfontenla 17:55e6270adab5 365 int distance_to_steps(float distance, float pitch){
lucasfontenla 17:55e6270adab5 366 int steps = (int)(distance*steps_by_rotation/pitch);
lucasfontenla 17:55e6270adab5 367 return steps;
lucasfontenla 17:55e6270adab5 368 }
lucasfontenla 17:55e6270adab5 369
lucasfontenla 17:55e6270adab5 370 void printDistance(void){
lucasfontenla 17:55e6270adab5 371 X = steps_to_distance(totalX, xPitch);
lucasfontenla 17:55e6270adab5 372 Y = steps_to_distance(totalY, yPitch);
lucasfontenla 17:55e6270adab5 373 Z = steps_to_distance(totalZ, zPitch);
lucasfontenla 17:55e6270adab5 374 printf("X: %.2f Y: %.2f Z: %.2f\r\n", X, Y, Z);
lucasfontenla 18:174b4ff351b5 375 }
lucasfontenla 18:174b4ff351b5 376
lucasfontenla 22:000890b38b32 377 void savePoint(string speed, string mode){
lucasfontenla 20:1d98a6f51dee 378 if(!autoReload){
lucasfontenla 20:1d98a6f51dee 379 keepSavedPointsReload = 0;
lucasfontenla 20:1d98a6f51dee 380 exitSavedPointsLoop = 0;
lucasfontenla 20:1d98a6f51dee 381 printf("\nSave selected\n\r");
lucasfontenla 20:1d98a6f51dee 382 if(saved >= maxPoints){
lucasfontenla 20:1d98a6f51dee 383 printf("Max points reached\n\r");
lucasfontenla 20:1d98a6f51dee 384 } else{
lucasfontenla 20:1d98a6f51dee 385 X = steps_to_distance(totalX, xPitch);
lucasfontenla 20:1d98a6f51dee 386 Y = steps_to_distance(totalY, yPitch);
lucasfontenla 20:1d98a6f51dee 387 Z = steps_to_distance(totalZ, zPitch);
lucasfontenla 20:1d98a6f51dee 388
lucasfontenla 20:1d98a6f51dee 389 points[0][saved] = X;
lucasfontenla 20:1d98a6f51dee 390 points[1][saved] = Y;
lucasfontenla 20:1d98a6f51dee 391 points[2][saved] = Z;
lucasfontenla 22:000890b38b32 392 path[0][saved] = atof(speed.c_str());
lucasfontenla 22:000890b38b32 393 path[1][saved] = atof(mode.c_str());
lucasfontenla 20:1d98a6f51dee 394 saved+=1;
lucasfontenla 20:1d98a6f51dee 395 }
lucasfontenla 20:1d98a6f51dee 396 // save code
lucasfontenla 20:1d98a6f51dee 397 printf("Saved --> X: %.2f Y: %.2f Z: %.2f\r\n", X, Y, Z);
lucasfontenla 22:000890b38b32 398 printf("Path --> Speed: %.2f Mode: %.2f\n\r", path[0][saved-1], path[1][saved-1]);
lucasfontenla 22:000890b38b32 399 resting_points = maxPoints-saved;
lucasfontenla 23:d64d37561b4a 400 printf("Pontos restantes: %d\n\r", resting_points);
lucasfontenla 20:1d98a6f51dee 401 }
lucasfontenla 20:1d98a6f51dee 402 else {
lucasfontenla 20:1d98a6f51dee 403 exitSavedPointsLoop = 1;
lucasfontenla 20:1d98a6f51dee 404 keepSavedPointsReload = 0;
lucasfontenla 20:1d98a6f51dee 405 }
lucasfontenla 18:174b4ff351b5 406 }
lucasfontenla 18:174b4ff351b5 407
lucasfontenla 23:d64d37561b4a 408 void jog(void){
lucasfontenla 23:d64d37561b4a 409 kill_jog = 0;
lucasfontenla 23:d64d37561b4a 410 printf("JOG Selected %d\n\r", kill_jog);
lucasfontenla 23:d64d37561b4a 411
lucasfontenla 24:92f612ca218b 412 t.reset();
lucasfontenla 24:92f612ca218b 413
lucasfontenla 23:d64d37561b4a 414 while(1){
lucasfontenla 23:d64d37561b4a 415 if(ihm.readable()){
lucasfontenla 23:d64d37561b4a 416 readSerial();
lucasfontenla 23:d64d37561b4a 417 }
lucasfontenla 23:d64d37561b4a 418 valX = joyX;
lucasfontenla 23:d64d37561b4a 419 valY = joyY;
lucasfontenla 23:d64d37561b4a 420
lucasfontenla 23:d64d37561b4a 421 valZUp = zUp;
lucasfontenla 23:d64d37561b4a 422 valZDwn = zDwn;
lucasfontenla 23:d64d37561b4a 423
lucasfontenla 23:d64d37561b4a 424 if(valX > 0.7){
lucasfontenla 23:d64d37561b4a 425 if(x_dir != x_plus){
lucasfontenla 23:d64d37561b4a 426 x_dir = x_plus;
lucasfontenla 23:d64d37561b4a 427 }
lucasfontenla 23:d64d37561b4a 428 activeX = 1;
lucasfontenla 23:d64d37561b4a 429 }
lucasfontenla 23:d64d37561b4a 430 else if(valX < 0.3){
lucasfontenla 23:d64d37561b4a 431 if(x_dir != x_minus){
lucasfontenla 23:d64d37561b4a 432 x_dir = x_minus;
lucasfontenla 23:d64d37561b4a 433 }
lucasfontenla 23:d64d37561b4a 434 activeX = 1;
lucasfontenla 23:d64d37561b4a 435 }
lucasfontenla 23:d64d37561b4a 436 else{
lucasfontenla 23:d64d37561b4a 437 activeX = 0;
lucasfontenla 23:d64d37561b4a 438 }
lucasfontenla 23:d64d37561b4a 439
lucasfontenla 23:d64d37561b4a 440 //----------------------------------------------------------------------
lucasfontenla 23:d64d37561b4a 441
lucasfontenla 23:d64d37561b4a 442 if(valY > 0.7){
lucasfontenla 23:d64d37561b4a 443 if(y_dir != y_plus){
lucasfontenla 23:d64d37561b4a 444 y_dir = y_plus;
lucasfontenla 23:d64d37561b4a 445 }
lucasfontenla 23:d64d37561b4a 446 activeY = 1;
lucasfontenla 23:d64d37561b4a 447 }
lucasfontenla 23:d64d37561b4a 448 else if(valY < 0.3){
lucasfontenla 23:d64d37561b4a 449 if(y_dir != y_minus){
lucasfontenla 23:d64d37561b4a 450 y_dir = y_minus;
lucasfontenla 23:d64d37561b4a 451 }
lucasfontenla 23:d64d37561b4a 452 activeY = 1;
lucasfontenla 23:d64d37561b4a 453 }
lucasfontenla 23:d64d37561b4a 454 else{
lucasfontenla 23:d64d37561b4a 455 activeY = 0;
lucasfontenla 23:d64d37561b4a 456 }
lucasfontenla 23:d64d37561b4a 457
lucasfontenla 23:d64d37561b4a 458 //----------------------------------------------------------------------
lucasfontenla 23:d64d37561b4a 459
lucasfontenla 23:d64d37561b4a 460 if(!valZUp && valZDwn){
lucasfontenla 23:d64d37561b4a 461 if(z_dir != z_minus){
lucasfontenla 23:d64d37561b4a 462 z_dir = z_minus;
lucasfontenla 23:d64d37561b4a 463 }
lucasfontenla 23:d64d37561b4a 464 activeZ = 1;
lucasfontenla 23:d64d37561b4a 465 }
lucasfontenla 23:d64d37561b4a 466 else if(!valZDwn && valZUp){
lucasfontenla 23:d64d37561b4a 467 if(z_dir != z_plus){
lucasfontenla 23:d64d37561b4a 468 z_dir = z_plus;
lucasfontenla 23:d64d37561b4a 469 }
lucasfontenla 23:d64d37561b4a 470 activeZ = 1;
lucasfontenla 23:d64d37561b4a 471 }
lucasfontenla 23:d64d37561b4a 472 else {
lucasfontenla 23:d64d37561b4a 473 activeZ = 0;
lucasfontenla 23:d64d37561b4a 474 }
lucasfontenla 23:d64d37561b4a 475
lucasfontenla 23:d64d37561b4a 476 //----------------------------------------------------------------------
lucasfontenla 23:d64d37561b4a 477
lucasfontenla 23:d64d37561b4a 478 move(ppsMax, x_dir, y_dir, z_dir, activeX, activeY, activeZ);
lucasfontenla 23:d64d37561b4a 479 X = steps_to_distance(totalX, xPitch);
lucasfontenla 23:d64d37561b4a 480 Y = steps_to_distance(totalY, yPitch);
lucasfontenla 23:d64d37561b4a 481 Z = steps_to_distance(totalZ, zPitch);
lucasfontenla 23:d64d37561b4a 482
lucasfontenla 24:92f612ca218b 483 if(t.read() > sendTime){
lucasfontenla 23:d64d37561b4a 484 printf("X: %.2f Y: %.2f Z: %.2f\r\n", X, Y, Z);
lucasfontenla 24:92f612ca218b 485 X = steps_to_distance(totalX, xPitch);
lucasfontenla 24:92f612ca218b 486 Y = steps_to_distance(totalY, yPitch);
lucasfontenla 24:92f612ca218b 487 Z = steps_to_distance(totalZ, zPitch);
lucasfontenla 24:92f612ca218b 488 ihm_class.send_position(X, Y, Z);
lucasfontenla 24:92f612ca218b 489 t.reset();
lucasfontenla 23:d64d37561b4a 490 }
lucasfontenla 23:d64d37561b4a 491
lucasfontenla 23:d64d37561b4a 492 if(kill_jog){
lucasfontenla 23:d64d37561b4a 493 break;
lucasfontenla 23:d64d37561b4a 494 }
lucasfontenla 23:d64d37561b4a 495 }
lucasfontenla 23:d64d37561b4a 496 }
lucasfontenla 23:d64d37561b4a 497
lucasfontenla 23:d64d37561b4a 498 void automatic_run(int total_points){
lucasfontenla 23:d64d37561b4a 499 printf("\nStarting automatic routine\n\r");
lucasfontenla 23:d64d37561b4a 500
lucasfontenla 23:d64d37561b4a 501 // home
lucasfontenla 23:d64d37561b4a 502 x_distance_to_run = points[0][0] - points[0][total_points-1];
lucasfontenla 23:d64d37561b4a 503 y_distance_to_run = points[1][0] - points[1][total_points-1];
lucasfontenla 23:d64d37561b4a 504 z_distance_to_run = points[2][0] - points[2][total_points-1];
lucasfontenla 23:d64d37561b4a 505
lucasfontenla 23:d64d37561b4a 506 printf("\nGoing to first point\n\r");
lucasfontenla 23:d64d37561b4a 507
lucasfontenla 23:d64d37561b4a 508 if(x_distance_to_run < 0){
lucasfontenla 23:d64d37561b4a 509 x_dir = x_minus;
lucasfontenla 23:d64d37561b4a 510 x_distance_to_run = -1.0*x_distance_to_run;
lucasfontenla 23:d64d37561b4a 511 } else { x_dir = x_plus; }
lucasfontenla 23:d64d37561b4a 512
lucasfontenla 23:d64d37561b4a 513 if(y_distance_to_run < 0){
lucasfontenla 23:d64d37561b4a 514 y_dir = y_minus;
lucasfontenla 23:d64d37561b4a 515 y_distance_to_run = -1.0*y_distance_to_run;
lucasfontenla 23:d64d37561b4a 516 } else { y_dir = y_plus; }
lucasfontenla 23:d64d37561b4a 517
lucasfontenla 23:d64d37561b4a 518 if(z_distance_to_run < 0){
lucasfontenla 23:d64d37561b4a 519 z_dir = z_minus;
lucasfontenla 23:d64d37561b4a 520 z_distance_to_run = -1.0*z_distance_to_run;
lucasfontenla 23:d64d37561b4a 521 } else { z_dir = z_plus; }
lucasfontenla 23:d64d37561b4a 522
lucasfontenla 23:d64d37561b4a 523 x_steps_to_run = distance_to_steps(x_distance_to_run, xPitch);
lucasfontenla 23:d64d37561b4a 524 y_steps_to_run = distance_to_steps(y_distance_to_run, yPitch);
lucasfontenla 23:d64d37561b4a 525 z_steps_to_run = distance_to_steps(z_distance_to_run, zPitch);
lucasfontenla 23:d64d37561b4a 526
lucasfontenla 23:d64d37561b4a 527 printf("deltaX: %.2f deltaY: %.2f deltaZ: %.2f\n\r", x_distance_to_run, y_distance_to_run, z_distance_to_run);
lucasfontenla 23:d64d37561b4a 528
lucasfontenla 23:d64d37561b4a 529 move(ppsMax, x_dir, y_dir, z_dir, x_steps_to_run, 0, 0);
lucasfontenla 23:d64d37561b4a 530 move(ppsMax, x_dir, y_dir, z_dir, 0, y_steps_to_run, 0);
lucasfontenla 23:d64d37561b4a 531 move(ppsMax, x_dir, y_dir, z_dir, 0, 0, z_steps_to_run);
lucasfontenla 23:d64d37561b4a 532
lucasfontenla 23:d64d37561b4a 533 wait(2);
lucasfontenla 23:d64d37561b4a 534
lucasfontenla 23:d64d37561b4a 535 printf("\nSaved points\n\r");
lucasfontenla 23:d64d37561b4a 536
lucasfontenla 23:d64d37561b4a 537 // routine
lucasfontenla 23:d64d37561b4a 538
lucasfontenla 23:d64d37561b4a 539 for(int i = 1; i < total_points; i++){
lucasfontenla 23:d64d37561b4a 540 x_distance_to_run = points[0][i]-points[0][i-1];
lucasfontenla 23:d64d37561b4a 541 y_distance_to_run = points[1][i]-points[1][i-1];
lucasfontenla 23:d64d37561b4a 542 z_distance_to_run = points[2][i]-points[2][i-1];
lucasfontenla 23:d64d37561b4a 543
lucasfontenla 23:d64d37561b4a 544 printf("deltaX: %.2f deltaY: %.2f deltaZ: %.2f\n\r", x_distance_to_run, y_distance_to_run, z_distance_to_run);
lucasfontenla 23:d64d37561b4a 545
lucasfontenla 23:d64d37561b4a 546 if(x_distance_to_run < 0){
lucasfontenla 23:d64d37561b4a 547 x_dir = x_minus;
lucasfontenla 23:d64d37561b4a 548 x_distance_to_run = -1.0*x_distance_to_run;
lucasfontenla 23:d64d37561b4a 549 } else { x_dir = x_plus; }
lucasfontenla 23:d64d37561b4a 550
lucasfontenla 23:d64d37561b4a 551 if(y_distance_to_run < 0){
lucasfontenla 23:d64d37561b4a 552 y_dir = y_minus;
lucasfontenla 23:d64d37561b4a 553 y_distance_to_run = -1.0*y_distance_to_run;
lucasfontenla 23:d64d37561b4a 554 } else { y_dir = y_plus; }
lucasfontenla 23:d64d37561b4a 555
lucasfontenla 23:d64d37561b4a 556 if(z_distance_to_run < 0){
lucasfontenla 23:d64d37561b4a 557 z_dir = z_minus;
lucasfontenla 23:d64d37561b4a 558 z_distance_to_run = -1.0*z_distance_to_run;
lucasfontenla 23:d64d37561b4a 559 } else { z_dir = z_plus; }
lucasfontenla 23:d64d37561b4a 560
lucasfontenla 23:d64d37561b4a 561 x_steps_to_run = distance_to_steps(x_distance_to_run, xPitch);
lucasfontenla 23:d64d37561b4a 562 y_steps_to_run = distance_to_steps(y_distance_to_run, yPitch);
lucasfontenla 23:d64d37561b4a 563 z_steps_to_run = distance_to_steps(z_distance_to_run, zPitch);
lucasfontenla 23:d64d37561b4a 564
lucasfontenla 23:d64d37561b4a 565 move(ppsMax, x_dir, y_dir, z_dir, x_steps_to_run, 0, 0);
lucasfontenla 23:d64d37561b4a 566 move(ppsMax, x_dir, y_dir, z_dir, 0, y_steps_to_run, 0);
lucasfontenla 23:d64d37561b4a 567 move(ppsMax, x_dir, y_dir, z_dir, 0, 0, z_steps_to_run);
lucasfontenla 23:d64d37561b4a 568 }
lucasfontenla 23:d64d37561b4a 569 killJog();
lucasfontenla 23:d64d37561b4a 570 printf("Done\n\r");
lucasfontenla 22:000890b38b32 571 }
lucasfontenla 22:000890b38b32 572
lucasfontenla 23:d64d37561b4a 573 void killJog(void){
lucasfontenla 23:d64d37561b4a 574 kill_jog = 1;
lucasfontenla 23:d64d37561b4a 575 printf("Jog killed\n\r");
lucasfontenla 23:d64d37561b4a 576 }
lucasfontenla 23:d64d37561b4a 577
lucasfontenla 25:7b3826dddcba 578 void cancelProgram(void){
lucasfontenla 25:7b3826dddcba 579 saved = 0;
lucasfontenla 25:7b3826dddcba 580 killJog();
lucasfontenla 25:7b3826dddcba 581 }
lucasfontenla 25:7b3826dddcba 582
lucasfontenla 23:d64d37561b4a 583 void readSerial(void){
lucasfontenla 22:000890b38b32 584 char recv;
lucasfontenla 25:7b3826dddcba 585 char last_recv;
lucasfontenla 22:000890b38b32 586
lucasfontenla 22:000890b38b32 587 //save
lucasfontenla 22:000890b38b32 588 int save = 0;
lucasfontenla 22:000890b38b32 589 int mode = 0;
lucasfontenla 22:000890b38b32 590 int speed = 0;
lucasfontenla 22:000890b38b32 591 string mode_recv;
lucasfontenla 22:000890b38b32 592 string speed_str;
lucasfontenla 22:000890b38b32 593
lucasfontenla 23:d64d37561b4a 594 //begin
lucasfontenla 23:d64d37561b4a 595 int begin = 0;
lucasfontenla 23:d64d37561b4a 596
lucasfontenla 23:d64d37561b4a 597 //jog
lucasfontenla 23:d64d37561b4a 598 int jog_mode = 0;
lucasfontenla 23:d64d37561b4a 599 int kill_jog_mode = 0;
lucasfontenla 23:d64d37561b4a 600
lucasfontenla 25:7b3826dddcba 601 //reset
lucasfontenla 25:7b3826dddcba 602 int reset = 0;
lucasfontenla 25:7b3826dddcba 603
lucasfontenla 25:7b3826dddcba 604 //cancel
lucasfontenla 25:7b3826dddcba 605 int cancel = 0;
lucasfontenla 25:7b3826dddcba 606
lucasfontenla 25:7b3826dddcba 607 //zero
lucasfontenla 25:7b3826dddcba 608 int zero = 0;
lucasfontenla 25:7b3826dddcba 609 int machine_zero = 0;
lucasfontenla 25:7b3826dddcba 610
lucasfontenla 23:d64d37561b4a 611 printf("\n\nReceiving...\n\r");
lucasfontenla 23:d64d37561b4a 612
lucasfontenla 23:d64d37561b4a 613 t.reset();
lucasfontenla 22:000890b38b32 614
lucasfontenla 22:000890b38b32 615 while(1){
lucasfontenla 23:d64d37561b4a 616 if(t.read()>0.2){
lucasfontenla 23:d64d37561b4a 617 printf("Timeout\n\r");
lucasfontenla 23:d64d37561b4a 618 break;
lucasfontenla 23:d64d37561b4a 619 }
lucasfontenla 23:d64d37561b4a 620
lucasfontenla 22:000890b38b32 621 recv = ihm.getc();
lucasfontenla 22:000890b38b32 622
lucasfontenla 23:d64d37561b4a 623 printf("%c\n\r", recv);
lucasfontenla 23:d64d37561b4a 624
lucasfontenla 23:d64d37561b4a 625 if(recv == 'x'){
lucasfontenla 22:000890b38b32 626 if(save){
lucasfontenla 22:000890b38b32 627 savePoint(speed_str, mode_recv);
lucasfontenla 23:d64d37561b4a 628 } else if(begin){
lucasfontenla 23:d64d37561b4a 629 automatic_run(saved);
lucasfontenla 23:d64d37561b4a 630 } else if(jog_mode){
lucasfontenla 23:d64d37561b4a 631 if(kill_jog_mode){
lucasfontenla 23:d64d37561b4a 632 killJog();
lucasfontenla 23:d64d37561b4a 633 } else {
lucasfontenla 23:d64d37561b4a 634 jog();
lucasfontenla 23:d64d37561b4a 635 }
lucasfontenla 25:7b3826dddcba 636 } else if(reset){
lucasfontenla 25:7b3826dddcba 637 NVIC_SystemReset();
lucasfontenla 25:7b3826dddcba 638 } else if(cancel){
lucasfontenla 25:7b3826dddcba 639 cancel = 1;
lucasfontenla 25:7b3826dddcba 640 cancelProgram();
lucasfontenla 25:7b3826dddcba 641 } else if(zero){
lucasfontenla 25:7b3826dddcba 642 if(machine_zero){
lucasfontenla 25:7b3826dddcba 643 zeroX(ppsMax);
lucasfontenla 25:7b3826dddcba 644 zeroY(ppsMax);
lucasfontenla 25:7b3826dddcba 645 zeroZ(ppsMax);
lucasfontenla 25:7b3826dddcba 646 } else if(last_recv == 'X'){
lucasfontenla 25:7b3826dddcba 647 totalX = 0;
lucasfontenla 25:7b3826dddcba 648 } else if(last_recv == 'Y'){
lucasfontenla 25:7b3826dddcba 649 totalY = 0;
lucasfontenla 25:7b3826dddcba 650 } else if(last_recv == 'Z'){
lucasfontenla 25:7b3826dddcba 651 totalZ = 0;
lucasfontenla 25:7b3826dddcba 652 }
lucasfontenla 25:7b3826dddcba 653 }
lucasfontenla 22:000890b38b32 654 break;
lucasfontenla 22:000890b38b32 655 }
lucasfontenla 22:000890b38b32 656
lucasfontenla 22:000890b38b32 657 if(recv == 's'){
lucasfontenla 22:000890b38b32 658 save = 1;
lucasfontenla 22:000890b38b32 659 }
lucasfontenla 22:000890b38b32 660
lucasfontenla 23:d64d37561b4a 661 if(recv == 'b'){
lucasfontenla 23:d64d37561b4a 662 begin = 1;
lucasfontenla 23:d64d37561b4a 663 }
lucasfontenla 23:d64d37561b4a 664
lucasfontenla 23:d64d37561b4a 665 if(recv == 'j'){
lucasfontenla 23:d64d37561b4a 666 jog_mode = 1;
lucasfontenla 23:d64d37561b4a 667 }
lucasfontenla 23:d64d37561b4a 668
lucasfontenla 25:7b3826dddcba 669 if(recv == 'r'){
lucasfontenla 25:7b3826dddcba 670 reset = 1;
lucasfontenla 25:7b3826dddcba 671 }
lucasfontenla 25:7b3826dddcba 672
lucasfontenla 25:7b3826dddcba 673 if(recv == 'c'){
lucasfontenla 25:7b3826dddcba 674 cancel = 1;
lucasfontenla 25:7b3826dddcba 675 }
lucasfontenla 25:7b3826dddcba 676
lucasfontenla 25:7b3826dddcba 677 if(recv == 'z'){
lucasfontenla 25:7b3826dddcba 678 zero = 1;
lucasfontenla 25:7b3826dddcba 679 }
lucasfontenla 25:7b3826dddcba 680
lucasfontenla 22:000890b38b32 681 if(save){
lucasfontenla 22:000890b38b32 682 if(recv == 'M'){
lucasfontenla 22:000890b38b32 683 mode = 1;
lucasfontenla 22:000890b38b32 684 speed = 0;
lucasfontenla 22:000890b38b32 685 } else if(recv == 'F'){
lucasfontenla 22:000890b38b32 686 mode = 0;
lucasfontenla 22:000890b38b32 687 speed = 1;
lucasfontenla 22:000890b38b32 688 }
lucasfontenla 22:000890b38b32 689
lucasfontenla 22:000890b38b32 690 if(mode){
lucasfontenla 22:000890b38b32 691 if(recv != 'M'){
lucasfontenla 22:000890b38b32 692 mode_recv.push_back(recv);
lucasfontenla 22:000890b38b32 693 }
lucasfontenla 22:000890b38b32 694 } else if(speed){
lucasfontenla 22:000890b38b32 695 if(recv != 'F'){
lucasfontenla 22:000890b38b32 696 speed_str.push_back(recv);
lucasfontenla 22:000890b38b32 697 }
lucasfontenla 22:000890b38b32 698 }
lucasfontenla 22:000890b38b32 699 }
lucasfontenla 23:d64d37561b4a 700
lucasfontenla 23:d64d37561b4a 701 if(jog_mode && recv == 'k'){
lucasfontenla 23:d64d37561b4a 702 kill_jog_mode = 1;
lucasfontenla 23:d64d37561b4a 703 }
lucasfontenla 25:7b3826dddcba 704
lucasfontenla 25:7b3826dddcba 705 if(zero && recv == 'm'){
lucasfontenla 25:7b3826dddcba 706 machine_zero = 1;
lucasfontenla 25:7b3826dddcba 707 } else if(zero && recv != 'm'){
lucasfontenla 25:7b3826dddcba 708 last_recv = recv;
lucasfontenla 25:7b3826dddcba 709 }
lucasfontenla 22:000890b38b32 710 }
lucasfontenla 24:92f612ca218b 711 t.reset();
lucasfontenla 17:55e6270adab5 712 }