update hcsr04.cpp by changing 20000 to 2000

Dependencies:   Stepper mbed SDFileSystem Ultrasonic PinDetect millis

Committer:
rschimpf78
Date:
Thu Jan 10 01:32:38 2019 +0000
Revision:
7:ede305192e3b
Parent:
6:354264d1e4bb
Child:
8:3f4d78017fd9
1.9.19

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 7:ede305192e3b 248 while(homeSwitch == 1 && magnetSwitch == 1 && Duration <= 55000 )
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 7:ede305192e3b 257 if (Duration > 55000){
rschimpf78 7:ede305192e3b 258 stop_error = 5;
rschimpf78 7:ede305192e3b 259 }
rschimpf78 0:88834eed3de0 260 }
rschimpf78 0:88834eed3de0 261
rschimpf78 3:fd2ca631ab44 262 void send()
rschimpf78 3:fd2ca631ab44 263 {
rschimpf78 3:fd2ca631ab44 264 in1=1;
rschimpf78 3:fd2ca631ab44 265 in2=0;
rschimpf78 7:ede305192e3b 266 wait(55);
rschimpf78 0:88834eed3de0 267 in1=1;
rschimpf78 2:e8f8095464cf 268 in2=1;
rschimpf78 0:88834eed3de0 269 }
rschimpf78 7:ede305192e3b 270
rschimpf78 0:88834eed3de0 271 void internalpullups()
rschimpf78 0:88834eed3de0 272 {
rschimpf78 2:e8f8095464cf 273 homeSwitch.mode(PullUp);
rschimpf78 7:ede305192e3b 274 wait(.01);
rschimpf78 7:ede305192e3b 275 magnetSwitch.mode(PullUp);
rschimpf78 0:88834eed3de0 276 wait (.01);
rschimpf78 0:88834eed3de0 277 }
rschimpf78 7:ede305192e3b 278
rschimpf78 3:fd2ca631ab44 279
rschimpf78 7:ede305192e3b 280 void logwriting()
rschimpf78 3:fd2ca631ab44 281 {
rschimpf78 7:ede305192e3b 282 FILE *fp = fopen("/sd/mydir/sdtest.txt", "a");
rschimpf78 7:ede305192e3b 283 if(fp == NULL) {
rschimpf78 7:ede305192e3b 284 pc.printf("\nError Writing to Log ");
rschimpf78 7:ede305192e3b 285 }
rschimpf78 7:ede305192e3b 286 pc.printf("\nLogging ");
rschimpf78 7:ede305192e3b 287 pc.printf("\nStop Error: %ld ", stop_error);
rschimpf78 7:ede305192e3b 288
rschimpf78 7:ede305192e3b 289 switch (stop_error){
rschimpf78 7:ede305192e3b 290 case 1:
rschimpf78 7:ede305192e3b 291 fprintf(fp,"\nRequested: %ld ",plates);
rschimpf78 7:ede305192e3b 292 fprintf(fp,"\nBroken Switch: %ld ", broken_switch);
rschimpf78 7:ede305192e3b 293 fprintf(fp,"\nStop Error: %ld ", stop_error);
rschimpf78 7:ede305192e3b 294 fclose(fp);
rschimpf78 7:ede305192e3b 295 exit(1);
rschimpf78 7:ede305192e3b 296 break;
rschimpf78 7:ede305192e3b 297 case 2:
rschimpf78 7:ede305192e3b 298 fprintf(fp,"\nRequested: %ld ",plates);
rschimpf78 7:ede305192e3b 299 fprintf(fp,"\nSelector Sensor Distance : %ld ", error_distance);
rschimpf78 7:ede305192e3b 300 fprintf(fp,"\nStop Error: %ld ", stop_error);
rschimpf78 7:ede305192e3b 301 fclose(fp);
rschimpf78 7:ede305192e3b 302 exit(1);
rschimpf78 7:ede305192e3b 303 break;
rschimpf78 7:ede305192e3b 304 case 3:
rschimpf78 7:ede305192e3b 305 fprintf(fp,"\nRequested: %ld ",plates);
rschimpf78 7:ede305192e3b 306 fprintf(fp,"\nSelector Timeout");
rschimpf78 7:ede305192e3b 307 fprintf(fp,"\nStop Error: %ld ", stop_error);
rschimpf78 7:ede305192e3b 308 fclose(fp);
rschimpf78 7:ede305192e3b 309 exit(1);
rschimpf78 7:ede305192e3b 310 break;
rschimpf78 7:ede305192e3b 311 case 4:
rschimpf78 7:ede305192e3b 312 fprintf(fp,"\nRequested: %ld ",plates);
rschimpf78 7:ede305192e3b 313 fprintf(fp,"\nSelected: %ld ", sheets);
rschimpf78 7:ede305192e3b 314 fprintf(fp,"\nDetected: %ld ", path_sheets);
rschimpf78 7:ede305192e3b 315 fprintf(fp,"\nStop Error: %ld ", stop_error);
rschimpf78 7:ede305192e3b 316 fclose(fp);
rschimpf78 7:ede305192e3b 317 break;
rschimpf78 7:ede305192e3b 318 case 5:
rschimpf78 7:ede305192e3b 319 fprintf(fp,"\nRequested: %ld ",plates);
rschimpf78 7:ede305192e3b 320 fprintf(fp,"\nSelected: %ld ", sheets);
rschimpf78 7:ede305192e3b 321 fprintf(fp,"\nDetected: %ld ", path_sheets);
rschimpf78 7:ede305192e3b 322 fprintf(fp,"\nStop Error: %ld ", stop_error);
rschimpf78 7:ede305192e3b 323 fclose(fp);
rschimpf78 7:ede305192e3b 324 exit(1);
rschimpf78 7:ede305192e3b 325 break;
rschimpf78 7:ede305192e3b 326 case 6:
rschimpf78 7:ede305192e3b 327 fprintf(fp,"\nRequested: %ld ",plates);
rschimpf78 7:ede305192e3b 328 fprintf(fp,"\nSelected: %ld ", sheets);
rschimpf78 7:ede305192e3b 329 fprintf(fp,"\nBeam Sensor Distance: %ld ", beam_distance);
rschimpf78 7:ede305192e3b 330 fprintf(fp,"\nStop Error: %ld ", stop_error);
rschimpf78 7:ede305192e3b 331 fclose(fp);
rschimpf78 7:ede305192e3b 332 exit(1);
rschimpf78 7:ede305192e3b 333 break;
rschimpf78 7:ede305192e3b 334 case 7:
rschimpf78 7:ede305192e3b 335 fprintf(fp,"\nRequested: %ld ",plates);
rschimpf78 7:ede305192e3b 336 fprintf(fp,"\nNot at Start Position ");
rschimpf78 7:ede305192e3b 337 fprintf(fp,"\nStop Error: %ld ", stop_error);
rschimpf78 7:ede305192e3b 338 fclose(fp);
rschimpf78 7:ede305192e3b 339 exit(1);
rschimpf78 7:ede305192e3b 340 default:
rschimpf78 7:ede305192e3b 341 pc.printf("\nstage: %ld ", stage);
rschimpf78 7:ede305192e3b 342 if (stage == 1){
rschimpf78 7:ede305192e3b 343 pc.printf("\nRequested: %ld ", plates);
rschimpf78 7:ede305192e3b 344 fprintf(fp,"\nRequested: %ld ",plates);
rschimpf78 7:ede305192e3b 345 fclose(fp);
rschimpf78 7:ede305192e3b 346 }
rschimpf78 7:ede305192e3b 347 else if (stage == 2) {
rschimpf78 7:ede305192e3b 348 pc.printf("\nSelected: %ld ", sheets);
rschimpf78 7:ede305192e3b 349 fprintf(fp,"\nSelected: %ld ", sheets);
rschimpf78 7:ede305192e3b 350 fclose(fp);
rschimpf78 7:ede305192e3b 351 }
rschimpf78 7:ede305192e3b 352 else if (stage == 3){
rschimpf78 7:ede305192e3b 353 pc.printf("\nDetected: %ld ", path_sheets);
rschimpf78 7:ede305192e3b 354 fprintf(fp,"\nDetected: %ld ", path_sheets);
rschimpf78 7:ede305192e3b 355 fclose(fp);
rschimpf78 7:ede305192e3b 356 }
rschimpf78 7:ede305192e3b 357 else{
rschimpf78 7:ede305192e3b 358 pc.printf("\nPass ");
rschimpf78 7:ede305192e3b 359 fprintf(fp,"\nPass ");
rschimpf78 7:ede305192e3b 360 fclose(fp);
rschimpf78 7:ede305192e3b 361 }
rschimpf78 7:ede305192e3b 362 break;
rschimpf78 7:ede305192e3b 363 }
rschimpf78 2:e8f8095464cf 364 }
rschimpf78 0:88834eed3de0 365
rschimpf78 0:88834eed3de0 366 int main()
rschimpf78 2:e8f8095464cf 367 {
rschimpf78 7:ede305192e3b 368 mkdir("/sd/mydir", 0777);
rschimpf78 2:e8f8095464cf 369 in1=1;
rschimpf78 2:e8f8095464cf 370 in2=1;
rschimpf78 2:e8f8095464cf 371 en = 1;
rschimpf78 2:e8f8095464cf 372 wait(0.1);
rschimpf78 0:88834eed3de0 373 internalpullups();
rschimpf78 7:ede305192e3b 374 while(stop_error==0)
rschimpf78 0:88834eed3de0 375 {
rschimpf78 4:63f0989c8d1e 376 plates = (rand() % 16) + 1;
rschimpf78 7:ede305192e3b 377 wait(1);
rschimpf78 7:ede305192e3b 378 switch_check(); //stage 1
rschimpf78 7:ede305192e3b 379 wait(1);
rschimpf78 7:ede305192e3b 380 logwriting(); // plates requestd
rschimpf78 7:ede305192e3b 381 wait(1);
rschimpf78 7:ede305192e3b 382 plate_selection(); //stage 2
rschimpf78 7:ede305192e3b 383 wait(1);
rschimpf78 7:ede305192e3b 384 logwriting(); //paltes selected
rschimpf78 7:ede305192e3b 385 wait(1);
rschimpf78 7:ede305192e3b 386 send();
rschimpf78 7:ede305192e3b 387 wait(1);
rschimpf78 7:ede305192e3b 388 beam(); //stage 3
rschimpf78 7:ede305192e3b 389 wait(1);
rschimpf78 7:ede305192e3b 390 logwriting(); //plates detected
rschimpf78 7:ede305192e3b 391 wait(1);
rschimpf78 7:ede305192e3b 392 retract(); //stage 4
rschimpf78 7:ede305192e3b 393 wait(1);
rschimpf78 7:ede305192e3b 394 logwriting(); //nothing
rschimpf78 7:ede305192e3b 395 }
rschimpf78 7:ede305192e3b 396 pc.printf("\nError was detected. Stopping Program");
rschimpf78 7:ede305192e3b 397 }
rschimpf78 7:ede305192e3b 398