update hcsr04.cpp by changing 20000 to 2000

Dependencies:   Stepper mbed SDFileSystem Ultrasonic PinDetect millis

Committer:
rschimpf78
Date:
Fri Jan 18 00:22:13 2019 +0000
Revision:
8:3f4d78017fd9
Parent:
7:ede305192e3b
1.17;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rschimpf78 2:e8f8095464cf 1 #include "mbed.h"
rschimpf78 2:e8f8095464cf 2 #include "Stepper.h"
rschimpf78 2:e8f8095464cf 3 #include "string"
rschimpf78 3:fd2ca631ab44 4 #include "hcsr04.h"
rschimpf78 6:354264d1e4bb 5 #include "millis.h"
rschimpf78 7:ede305192e3b 6 #include "SDFileSystem.h"
rschimpf78 7:ede305192e3b 7
rschimpf78 7:ede305192e3b 8 SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); // mosi, miso, sclk, cs, name
rschimpf78 3:fd2ca631ab44 9 Serial pc(USBTX, USBRX);
rschimpf78 7:ede305192e3b 10 HCSR04 pathsensor(PTC2,PTA2); //(trig,echo)
rschimpf78 7:ede305192e3b 11 HCSR04 heightsensor(PTD2,PTD3);
rschimpf78 3:fd2ca631ab44 12 DigitalOut in1(PTC12);
rschimpf78 3:fd2ca631ab44 13 DigitalOut in2(D7);
rschimpf78 3:fd2ca631ab44 14 DigitalIn homeSwitch(D9);
rschimpf78 7:ede305192e3b 15 DigitalIn magnetSwitch(D10);
rschimpf78 3:fd2ca631ab44 16 Stepper mot(D3,D4); //(D3 to PUL+, D4 to DIR+)
rschimpf78 2:e8f8095464cf 17 DigitalOut en(D2);
rschimpf78 0:88834eed3de0 18
rschimpf78 7:ede305192e3b 19 volatile int plates = 0;
rschimpf78 3:fd2ca631ab44 20 volatile unsigned int sheets=0;
rschimpf78 3:fd2ca631ab44 21 volatile unsigned int path_sheets=0;
rschimpf78 7:ede305192e3b 22 volatile int stop_error=0;
rschimpf78 7:ede305192e3b 23 volatile int error_distance;
rschimpf78 7:ede305192e3b 24 volatile int beam_distance;
rschimpf78 7:ede305192e3b 25 volatile int broken_switch;
rschimpf78 7:ede305192e3b 26 volatile int stage = 1;
rschimpf78 7:ede305192e3b 27
rschimpf78 7:ede305192e3b 28 void switch_check(){
rschimpf78 7:ede305192e3b 29 stage = 1;
rschimpf78 7:ede305192e3b 30 pc.printf("\nSwitch Check ");
rschimpf78 7:ede305192e3b 31 if (homeSwitch == 1 && magnetSwitch == 1){
rschimpf78 7:ede305192e3b 32 stop_error = 1;
rschimpf78 7:ede305192e3b 33 broken_switch = 2; //both switches broken
rschimpf78 7:ede305192e3b 34 }
rschimpf78 7:ede305192e3b 35 else if (homeSwitch == 0){
rschimpf78 7:ede305192e3b 36 stop_error = 1;
rschimpf78 7:ede305192e3b 37 broken_switch = 1; //magnet switch isn't working
rschimpf78 7:ede305192e3b 38 }
rschimpf78 7:ede305192e3b 39 else{
rschimpf78 7:ede305192e3b 40 broken_switch = 0;
rschimpf78 7:ede305192e3b 41 }
rschimpf78 7:ede305192e3b 42 }
rschimpf78 0:88834eed3de0 43
rschimpf78 7:ede305192e3b 44 void plate_selection(){
rschimpf78 7:ede305192e3b 45 stage = 2;
rschimpf78 3:fd2ca631ab44 46 unsigned int dist;
rschimpf78 3:fd2ca631ab44 47 int er = 5;
rschimpf78 7:ede305192e3b 48 int finp = 447; //sensor height initial
rschimpf78 7:ede305192e3b 49 int tp = 25;
rschimpf78 7:ede305192e3b 50 wait(1);
rschimpf78 7:ede305192e3b 51 in1=1;
rschimpf78 7:ede305192e3b 52 in2=0;
rschimpf78 7:ede305192e3b 53 wait_ms(900); //stair fix
rschimpf78 7:ede305192e3b 54 in1=1;
rschimpf78 7:ede305192e3b 55 in2=1;
rschimpf78 7:ede305192e3b 56 wait(1);
rschimpf78 7:ede305192e3b 57 millisStart();
rschimpf78 7:ede305192e3b 58 long Duration2 = 0;
rschimpf78 7:ede305192e3b 59 long StartTime2 = millis();
rschimpf78 2:e8f8095464cf 60
rschimpf78 7:ede305192e3b 61 while (plates!=sheets && Duration2 <= 55000) {
rschimpf78 7:ede305192e3b 62
rschimpf78 3:fd2ca631ab44 63 heightsensor.start();
rschimpf78 7:ede305192e3b 64 wait_ms(250);
rschimpf78 3:fd2ca631ab44 65 dist=heightsensor.get_dist_cm();
rschimpf78 3:fd2ca631ab44 66 pc.printf("\nmm:%ld",dist);
rschimpf78 7:ede305192e3b 67 long CurrentTime2 = millis();
rschimpf78 7:ede305192e3b 68 Duration2 = CurrentTime2-StartTime2;
rschimpf78 3:fd2ca631ab44 69
rschimpf78 7:ede305192e3b 70 if ( dist < 30 || dist > 500){
rschimpf78 7:ede305192e3b 71 error_distance = dist;
rschimpf78 7:ede305192e3b 72 pc.printf("\n Distance Error: %ld", error_distance);
rschimpf78 7:ede305192e3b 73 stop_error = 2;
rschimpf78 7:ede305192e3b 74 break;
rschimpf78 7:ede305192e3b 75 }
rschimpf78 7:ede305192e3b 76 // pc.printf("\nin while loop");
rschimpf78 7:ede305192e3b 77 if (plates<sheets){
rschimpf78 3:fd2ca631ab44 78 en = 0;
rschimpf78 7:ede305192e3b 79 mot.setSpeed(500);
rschimpf78 3:fd2ca631ab44 80 mot.rotate(1);
rschimpf78 7:ede305192e3b 81 }
rschimpf78 7:ede305192e3b 82 if (plates>sheets){
rschimpf78 3:fd2ca631ab44 83 en = 0;
rschimpf78 7:ede305192e3b 84 mot.setSpeed(500);
rschimpf78 3:fd2ca631ab44 85 mot.rotate(0);
rschimpf78 7:ede305192e3b 86 }
rschimpf78 7:ede305192e3b 87 if (dist<=finp+er && dist>=finp-er){
rschimpf78 3:fd2ca631ab44 88 sheets = 1;
rschimpf78 7:ede305192e3b 89 }
rschimpf78 7:ede305192e3b 90 if (dist<= finp-tp+er && dist>=finp-tp-er){
rschimpf78 3:fd2ca631ab44 91 sheets = 2;
rschimpf78 7:ede305192e3b 92 }
rschimpf78 7:ede305192e3b 93 if (dist<= finp-2*tp+er && dist>=finp-2*tp-er){
rschimpf78 3:fd2ca631ab44 94 sheets = 3;
rschimpf78 3:fd2ca631ab44 95 }
rschimpf78 7:ede305192e3b 96 if (dist<= finp-3*tp+er && dist>=finp-3*tp-er){
rschimpf78 3:fd2ca631ab44 97 sheets = 4;
rschimpf78 3:fd2ca631ab44 98 }
rschimpf78 7:ede305192e3b 99 if (dist<= finp-4*tp+er && dist>=finp-4*tp-er){
rschimpf78 7:ede305192e3b 100 sheets = 5;
rschimpf78 7:ede305192e3b 101
rschimpf78 7:ede305192e3b 102 }
rschimpf78 7:ede305192e3b 103 if (dist<= finp-5*tp+er && dist>=finp-5*tp-er){
rschimpf78 3:fd2ca631ab44 104 sheets = 6;
rschimpf78 7:ede305192e3b 105
rschimpf78 3:fd2ca631ab44 106 }
rschimpf78 7:ede305192e3b 107 if (dist<= finp-6*tp+er && dist>=finp-6*tp-er){
rschimpf78 3:fd2ca631ab44 108 sheets = 7;
rschimpf78 7:ede305192e3b 109
rschimpf78 3:fd2ca631ab44 110 }
rschimpf78 7:ede305192e3b 111 if (dist<= finp-7*tp+er && dist>=finp-7*tp-er){
rschimpf78 3:fd2ca631ab44 112 sheets = 8;
rschimpf78 7:ede305192e3b 113
rschimpf78 3:fd2ca631ab44 114 }
rschimpf78 7:ede305192e3b 115 if (dist<= finp-8*tp+er && dist>=finp-8*tp-er){
rschimpf78 3:fd2ca631ab44 116 sheets = 9;
rschimpf78 7:ede305192e3b 117
rschimpf78 3:fd2ca631ab44 118 }
rschimpf78 7:ede305192e3b 119 if (dist<= finp-9*tp+er && dist>=finp-9*tp-er){
rschimpf78 3:fd2ca631ab44 120 sheets = 10;
rschimpf78 7:ede305192e3b 121
rschimpf78 3:fd2ca631ab44 122 }
rschimpf78 7:ede305192e3b 123 if (dist<= finp-10*tp+er && dist>=finp-10*tp-er){
rschimpf78 3:fd2ca631ab44 124 sheets = 11;
rschimpf78 7:ede305192e3b 125
rschimpf78 3:fd2ca631ab44 126 }
rschimpf78 7:ede305192e3b 127 if (dist<= finp-11*tp+er && dist>=finp-11*tp-er){
rschimpf78 3:fd2ca631ab44 128 sheets = 12;
rschimpf78 7:ede305192e3b 129
rschimpf78 3:fd2ca631ab44 130 }
rschimpf78 7:ede305192e3b 131 if (dist<= finp-12*tp+er && dist>=finp-12*tp-er){
rschimpf78 3:fd2ca631ab44 132 sheets = 13;
rschimpf78 7:ede305192e3b 133
rschimpf78 3:fd2ca631ab44 134 }
rschimpf78 7:ede305192e3b 135 if (dist<= finp-13*tp+er && dist>=finp-13*tp-er){
rschimpf78 3:fd2ca631ab44 136 sheets = 14;
rschimpf78 7:ede305192e3b 137
rschimpf78 3:fd2ca631ab44 138 }
rschimpf78 7:ede305192e3b 139 if (dist<= finp-14*tp+er && dist>=finp-14*tp-er){ //102 to 112
rschimpf78 3:fd2ca631ab44 140 sheets = 15;
rschimpf78 7:ede305192e3b 141
rschimpf78 3:fd2ca631ab44 142 }
rschimpf78 7:ede305192e3b 143 if (dist<= 70 && dist>= 60){ //77 to 87
rschimpf78 7:ede305192e3b 144 sheets = 16;
rschimpf78 3:fd2ca631ab44 145 }
rschimpf78 3:fd2ca631ab44 146 }
rschimpf78 3:fd2ca631ab44 147 mot.stop();
rschimpf78 3:fd2ca631ab44 148 en = 1;
rschimpf78 3:fd2ca631ab44 149 wait(1);
rschimpf78 7:ede305192e3b 150 if (Duration2 > 55000){
rschimpf78 7:ede305192e3b 151 stop_error = 3;
rschimpf78 7:ede305192e3b 152 }
rschimpf78 3:fd2ca631ab44 153 }
rschimpf78 3:fd2ca631ab44 154
rschimpf78 3:fd2ca631ab44 155 void beam()
rschimpf78 7:ede305192e3b 156 {
rschimpf78 7:ede305192e3b 157 stage = 3;
rschimpf78 3:fd2ca631ab44 158 unsigned int path_dist;
rschimpf78 7:ede305192e3b 159 int err = 12;
rschimpf78 7:ede305192e3b 160 int sens_pos = 131;
rschimpf78 3:fd2ca631ab44 161 int sheet_th = 25;
rschimpf78 3:fd2ca631ab44 162 pathsensor.start();
rschimpf78 7:ede305192e3b 163 wait_ms(250);
rschimpf78 3:fd2ca631ab44 164 path_dist=pathsensor.get_dist_cm();
rschimpf78 7:ede305192e3b 165 pc.printf("\nBeam Path Sensor: %ld",path_dist);
rschimpf78 7:ede305192e3b 166
rschimpf78 7:ede305192e3b 167 if (path_dist < 110){
rschimpf78 7:ede305192e3b 168 beam_distance = path_dist;
rschimpf78 7:ede305192e3b 169 stop_error = 6;
rschimpf78 7:ede305192e3b 170 }
rschimpf78 7:ede305192e3b 171
rschimpf78 7:ede305192e3b 172 if (path_dist >= sens_pos-err && path_dist <= sens_pos+err){ //119 143
rschimpf78 3:fd2ca631ab44 173 path_sheets = 16;
rschimpf78 3:fd2ca631ab44 174
rschimpf78 3:fd2ca631ab44 175 }
rschimpf78 7:ede305192e3b 176 if (path_dist >= sens_pos-err+sheet_th && path_dist <= sens_pos+err+sheet_th){
rschimpf78 3:fd2ca631ab44 177 path_sheets = 15;
rschimpf78 3:fd2ca631ab44 178
rschimpf78 3:fd2ca631ab44 179 }
rschimpf78 3:fd2ca631ab44 180 if (path_dist >= sens_pos-err+2*sheet_th && path_dist <= sens_pos+err+2*sheet_th){ //179-191
rschimpf78 3:fd2ca631ab44 181 path_sheets = 14;
rschimpf78 3:fd2ca631ab44 182
rschimpf78 3:fd2ca631ab44 183 }
rschimpf78 3:fd2ca631ab44 184 if (path_dist >= sens_pos-err+3*sheet_th && path_dist <= sens_pos+err+3*sheet_th){ //205-217
rschimpf78 3:fd2ca631ab44 185 path_sheets = 13;
rschimpf78 3:fd2ca631ab44 186
rschimpf78 3:fd2ca631ab44 187 }
rschimpf78 3:fd2ca631ab44 188 if (path_dist >= sens_pos-err+4*sheet_th && path_dist <= sens_pos+err+4*sheet_th){ //231-243
rschimpf78 3:fd2ca631ab44 189 path_sheets = 12;
rschimpf78 3:fd2ca631ab44 190
rschimpf78 3:fd2ca631ab44 191 }
rschimpf78 3:fd2ca631ab44 192 if (path_dist >= sens_pos-err+5*sheet_th && path_dist <= sens_pos+err+5*sheet_th){ //257-269
rschimpf78 3:fd2ca631ab44 193 path_sheets = 11;
rschimpf78 3:fd2ca631ab44 194
rschimpf78 3:fd2ca631ab44 195 }
rschimpf78 3:fd2ca631ab44 196 if (path_dist >= sens_pos-err+6*sheet_th && path_dist <= sens_pos+err+6*sheet_th){ //283-295
rschimpf78 3:fd2ca631ab44 197 path_sheets = 10;
rschimpf78 3:fd2ca631ab44 198
rschimpf78 3:fd2ca631ab44 199 }
rschimpf78 3:fd2ca631ab44 200 if (path_dist >= sens_pos-err+7*sheet_th && path_dist <= sens_pos+err+7*sheet_th){ //309-321
rschimpf78 3:fd2ca631ab44 201 path_sheets = 9;
rschimpf78 3:fd2ca631ab44 202
rschimpf78 3:fd2ca631ab44 203 }
rschimpf78 3:fd2ca631ab44 204 if (path_dist >= sens_pos-err+8*sheet_th && path_dist <= sens_pos+err+8*sheet_th){ //323-333
rschimpf78 3:fd2ca631ab44 205 path_sheets = 8;
rschimpf78 3:fd2ca631ab44 206
rschimpf78 3:fd2ca631ab44 207 }
rschimpf78 3:fd2ca631ab44 208 if (path_dist >= sens_pos-err+9*sheet_th && path_dist <= sens_pos+err+9*sheet_th){ //349-359
rschimpf78 3:fd2ca631ab44 209 path_sheets = 7;
rschimpf78 3:fd2ca631ab44 210
rschimpf78 3:fd2ca631ab44 211 }
rschimpf78 3:fd2ca631ab44 212 if (path_dist >= sens_pos-err+10*sheet_th && path_dist <= sens_pos+err+10*sheet_th){
rschimpf78 3:fd2ca631ab44 213 path_sheets = 6;
rschimpf78 3:fd2ca631ab44 214
rschimpf78 3:fd2ca631ab44 215 }
rschimpf78 3:fd2ca631ab44 216 if (path_dist >= sens_pos-err+11*sheet_th && path_dist <= sens_pos+err+11*sheet_th){
rschimpf78 3:fd2ca631ab44 217 path_sheets = 5;
rschimpf78 3:fd2ca631ab44 218
rschimpf78 3:fd2ca631ab44 219 }
rschimpf78 3:fd2ca631ab44 220 if (path_dist >= sens_pos-err+12*sheet_th && path_dist <= sens_pos+err+12*sheet_th){
rschimpf78 3:fd2ca631ab44 221 path_sheets = 4;
rschimpf78 3:fd2ca631ab44 222
rschimpf78 3:fd2ca631ab44 223 }
rschimpf78 7:ede305192e3b 224 if (path_dist >= sens_pos-err+13*sheet_th && path_dist <= sens_pos+err+13*sheet_th){
rschimpf78 3:fd2ca631ab44 225 path_sheets = 3;
rschimpf78 3:fd2ca631ab44 226
rschimpf78 3:fd2ca631ab44 227 }
rschimpf78 7:ede305192e3b 228 if (path_dist >= sens_pos-err+14*sheet_th && path_dist <= sens_pos+err+14*sheet_th){
rschimpf78 3:fd2ca631ab44 229 path_sheets = 2;
rschimpf78 3:fd2ca631ab44 230
rschimpf78 3:fd2ca631ab44 231 }
rschimpf78 7:ede305192e3b 232 if (path_dist >= sens_pos-10-err+15*sheet_th && path_dist <= sens_pos-10+err+15*sheet_th){
rschimpf78 3:fd2ca631ab44 233 path_sheets = 1;
rschimpf78 3:fd2ca631ab44 234
rschimpf78 3:fd2ca631ab44 235 }
rschimpf78 7:ede305192e3b 236 if (path_dist > sens_pos-err+16*sheet_th){
rschimpf78 3:fd2ca631ab44 237 path_sheets = 0;
rschimpf78 7:ede305192e3b 238 }
rschimpf78 3:fd2ca631ab44 239 }
rschimpf78 6:354264d1e4bb 240
rschimpf78 3:fd2ca631ab44 241 void retract()
rschimpf78 0:88834eed3de0 242 {
rschimpf78 7:ede305192e3b 243 stage = 4;
rschimpf78 6:354264d1e4bb 244 millisStart();
rschimpf78 6:354264d1e4bb 245 long Duration = 0;
rschimpf78 6:354264d1e4bb 246 long StartTime = millis();
rschimpf78 6:354264d1e4bb 247
rschimpf78 8:3f4d78017fd9 248 while(homeSwitch == 1 && magnetSwitch == 1 && Duration <= 60000 )
rschimpf78 2:e8f8095464cf 249 {
rschimpf78 0:88834eed3de0 250 in1=0;
rschimpf78 2:e8f8095464cf 251 in2=1;
rschimpf78 6:354264d1e4bb 252 long CurrentTime = millis();
rschimpf78 6:354264d1e4bb 253 Duration = CurrentTime-StartTime;
rschimpf78 3:fd2ca631ab44 254 }
rschimpf78 2:e8f8095464cf 255 in1=1;
rschimpf78 2:e8f8095464cf 256 in2=1;
rschimpf78 8:3f4d78017fd9 257 if (Duration > 60000){
rschimpf78 7:ede305192e3b 258 stop_error = 5;
rschimpf78 7:ede305192e3b 259 }
rschimpf78 8:3f4d78017fd9 260 else{
rschimpf78 8:3f4d78017fd9 261 stop_error = 0;
rschimpf78 8:3f4d78017fd9 262 }
rschimpf78 0:88834eed3de0 263 }
rschimpf78 0:88834eed3de0 264
rschimpf78 3:fd2ca631ab44 265 void send()
rschimpf78 3:fd2ca631ab44 266 {
rschimpf78 3:fd2ca631ab44 267 in1=1;
rschimpf78 3:fd2ca631ab44 268 in2=0;
rschimpf78 8:3f4d78017fd9 269 wait(58);
rschimpf78 0:88834eed3de0 270 in1=1;
rschimpf78 2:e8f8095464cf 271 in2=1;
rschimpf78 0:88834eed3de0 272 }
rschimpf78 7:ede305192e3b 273
rschimpf78 3:fd2ca631ab44 274
rschimpf78 7:ede305192e3b 275 void logwriting()
rschimpf78 3:fd2ca631ab44 276 {
rschimpf78 7:ede305192e3b 277 FILE *fp = fopen("/sd/mydir/sdtest.txt", "a");
rschimpf78 7:ede305192e3b 278 if(fp == NULL) {
rschimpf78 7:ede305192e3b 279 pc.printf("\nError Writing to Log ");
rschimpf78 7:ede305192e3b 280 }
rschimpf78 7:ede305192e3b 281 pc.printf("\nLogging ");
rschimpf78 7:ede305192e3b 282 pc.printf("\nStop Error: %ld ", stop_error);
rschimpf78 7:ede305192e3b 283
rschimpf78 7:ede305192e3b 284 switch (stop_error){
rschimpf78 7:ede305192e3b 285 case 1:
rschimpf78 7:ede305192e3b 286 fprintf(fp,"\nRequested: %ld ",plates);
rschimpf78 7:ede305192e3b 287 fprintf(fp,"\nBroken Switch: %ld ", broken_switch);
rschimpf78 7:ede305192e3b 288 fprintf(fp,"\nStop Error: %ld ", stop_error);
rschimpf78 7:ede305192e3b 289 fclose(fp);
rschimpf78 7:ede305192e3b 290 exit(1);
rschimpf78 7:ede305192e3b 291 break;
rschimpf78 7:ede305192e3b 292 case 2:
rschimpf78 7:ede305192e3b 293 fprintf(fp,"\nRequested: %ld ",plates);
rschimpf78 7:ede305192e3b 294 fprintf(fp,"\nSelector Sensor Distance : %ld ", error_distance);
rschimpf78 7:ede305192e3b 295 fprintf(fp,"\nStop Error: %ld ", stop_error);
rschimpf78 7:ede305192e3b 296 fclose(fp);
rschimpf78 7:ede305192e3b 297 exit(1);
rschimpf78 7:ede305192e3b 298 break;
rschimpf78 7:ede305192e3b 299 case 3:
rschimpf78 7:ede305192e3b 300 fprintf(fp,"\nRequested: %ld ",plates);
rschimpf78 7:ede305192e3b 301 fprintf(fp,"\nSelector Timeout");
rschimpf78 7:ede305192e3b 302 fprintf(fp,"\nStop Error: %ld ", stop_error);
rschimpf78 7:ede305192e3b 303 fclose(fp);
rschimpf78 7:ede305192e3b 304 exit(1);
rschimpf78 7:ede305192e3b 305 break;
rschimpf78 7:ede305192e3b 306 case 4:
rschimpf78 8:3f4d78017fd9 307 fprintf(fp,"\nRequested: %ld ", plates);
rschimpf78 7:ede305192e3b 308 fprintf(fp,"\nSelected: %ld ", sheets);
rschimpf78 7:ede305192e3b 309 fprintf(fp,"\nDetected: %ld ", path_sheets);
rschimpf78 7:ede305192e3b 310 fprintf(fp,"\nStop Error: %ld ", stop_error);
rschimpf78 7:ede305192e3b 311 fclose(fp);
rschimpf78 7:ede305192e3b 312 break;
rschimpf78 7:ede305192e3b 313 case 5:
rschimpf78 8:3f4d78017fd9 314 fprintf(fp,"\nRequested: %ld ", plates);
rschimpf78 7:ede305192e3b 315 fprintf(fp,"\nSelected: %ld ", sheets);
rschimpf78 7:ede305192e3b 316 fprintf(fp,"\nDetected: %ld ", path_sheets);
rschimpf78 7:ede305192e3b 317 fprintf(fp,"\nStop Error: %ld ", stop_error);
rschimpf78 7:ede305192e3b 318 fclose(fp);
rschimpf78 7:ede305192e3b 319 exit(1);
rschimpf78 7:ede305192e3b 320 break;
rschimpf78 7:ede305192e3b 321 case 6:
rschimpf78 8:3f4d78017fd9 322 fprintf(fp,"\nRequested: %ld ", plates);
rschimpf78 7:ede305192e3b 323 fprintf(fp,"\nSelected: %ld ", sheets);
rschimpf78 7:ede305192e3b 324 fprintf(fp,"\nBeam Sensor Distance: %ld ", beam_distance);
rschimpf78 7:ede305192e3b 325 fprintf(fp,"\nStop Error: %ld ", stop_error);
rschimpf78 7:ede305192e3b 326 fclose(fp);
rschimpf78 7:ede305192e3b 327 exit(1);
rschimpf78 7:ede305192e3b 328 break;
rschimpf78 7:ede305192e3b 329 case 7:
rschimpf78 8:3f4d78017fd9 330 fprintf(fp,"\nRequested: %ld ", plates);
rschimpf78 7:ede305192e3b 331 fprintf(fp,"\nNot at Start Position ");
rschimpf78 7:ede305192e3b 332 fprintf(fp,"\nStop Error: %ld ", stop_error);
rschimpf78 7:ede305192e3b 333 fclose(fp);
rschimpf78 7:ede305192e3b 334 exit(1);
rschimpf78 7:ede305192e3b 335 default:
rschimpf78 7:ede305192e3b 336 pc.printf("\nstage: %ld ", stage);
rschimpf78 7:ede305192e3b 337 if (stage == 1){
rschimpf78 7:ede305192e3b 338 pc.printf("\nRequested: %ld ", plates);
rschimpf78 7:ede305192e3b 339 fprintf(fp,"\nRequested: %ld ",plates);
rschimpf78 7:ede305192e3b 340 fclose(fp);
rschimpf78 7:ede305192e3b 341 }
rschimpf78 7:ede305192e3b 342 else if (stage == 2) {
rschimpf78 7:ede305192e3b 343 pc.printf("\nSelected: %ld ", sheets);
rschimpf78 7:ede305192e3b 344 fprintf(fp,"\nSelected: %ld ", sheets);
rschimpf78 7:ede305192e3b 345 fclose(fp);
rschimpf78 7:ede305192e3b 346 }
rschimpf78 7:ede305192e3b 347 else if (stage == 3){
rschimpf78 7:ede305192e3b 348 pc.printf("\nDetected: %ld ", path_sheets);
rschimpf78 7:ede305192e3b 349 fprintf(fp,"\nDetected: %ld ", path_sheets);
rschimpf78 7:ede305192e3b 350 fclose(fp);
rschimpf78 7:ede305192e3b 351 }
rschimpf78 7:ede305192e3b 352 else{
rschimpf78 7:ede305192e3b 353 pc.printf("\nPass ");
rschimpf78 7:ede305192e3b 354 fprintf(fp,"\nPass ");
rschimpf78 7:ede305192e3b 355 fclose(fp);
rschimpf78 7:ede305192e3b 356 }
rschimpf78 7:ede305192e3b 357 break;
rschimpf78 7:ede305192e3b 358 }
rschimpf78 2:e8f8095464cf 359 }
rschimpf78 0:88834eed3de0 360
rschimpf78 0:88834eed3de0 361 int main()
rschimpf78 2:e8f8095464cf 362 {
rschimpf78 8:3f4d78017fd9 363 homeSwitch.mode(PullUp);
rschimpf78 8:3f4d78017fd9 364 wait(.01);
rschimpf78 8:3f4d78017fd9 365 magnetSwitch.mode(PullUp);
rschimpf78 8:3f4d78017fd9 366 wait (.01);
rschimpf78 7:ede305192e3b 367 mkdir("/sd/mydir", 0777);
rschimpf78 2:e8f8095464cf 368 in1=1;
rschimpf78 2:e8f8095464cf 369 in2=1;
rschimpf78 2:e8f8095464cf 370 en = 1;
rschimpf78 2:e8f8095464cf 371 wait(0.1);
rschimpf78 8:3f4d78017fd9 372
rschimpf78 7:ede305192e3b 373 while(stop_error==0)
rschimpf78 0:88834eed3de0 374 {
rschimpf78 4:63f0989c8d1e 375 plates = (rand() % 16) + 1;
rschimpf78 7:ede305192e3b 376 wait(1);
rschimpf78 7:ede305192e3b 377 switch_check(); //stage 1
rschimpf78 7:ede305192e3b 378 wait(1);
rschimpf78 7:ede305192e3b 379 logwriting(); // plates requestd
rschimpf78 7:ede305192e3b 380 wait(1);
rschimpf78 7:ede305192e3b 381 plate_selection(); //stage 2
rschimpf78 7:ede305192e3b 382 wait(1);
rschimpf78 7:ede305192e3b 383 logwriting(); //paltes selected
rschimpf78 7:ede305192e3b 384 wait(1);
rschimpf78 7:ede305192e3b 385 send();
rschimpf78 7:ede305192e3b 386 wait(1);
rschimpf78 7:ede305192e3b 387 beam(); //stage 3
rschimpf78 7:ede305192e3b 388 wait(1);
rschimpf78 7:ede305192e3b 389 logwriting(); //plates detected
rschimpf78 7:ede305192e3b 390 wait(1);
rschimpf78 7:ede305192e3b 391 retract(); //stage 4
rschimpf78 7:ede305192e3b 392 wait(1);
rschimpf78 7:ede305192e3b 393 logwriting(); //nothing
rschimpf78 7:ede305192e3b 394 }
rschimpf78 7:ede305192e3b 395 pc.printf("\nError was detected. Stopping Program");
rschimpf78 7:ede305192e3b 396 }
rschimpf78 7:ede305192e3b 397