Cycle Testing
Dependencies: Stepper mbed HCSR04 millis
Diff: main.cpp
- Revision:
- 10:4c3a8f835bef
- Parent:
- 9:5263aacbda53
--- a/main.cpp Mon Jan 21 19:54:15 2019 +0000 +++ b/main.cpp Mon Jan 21 23:38:28 2019 +0000 @@ -15,7 +15,8 @@ DigitalOut en(D2); int main(){ - LOOPY: + + en = 1; in1 = 1; in2 = 1; @@ -23,13 +24,12 @@ wait (.01); homeSwitch.mode(PullUp); wait (0.01); - int command; while(1){ - - pc.printf("\nCommand:\n\n\t1\tSend Plates\n\t2\tDetect Active Plates\n\t3\tRetract All Active Plates\n\t4\tSelect Plates\n\n"); - pc.printf("\nRequest: "); - pc.scanf("%d",&command); + + LOOPY: + +for ( int command = 1; command < 4; command++){ if (command==1){ @@ -37,21 +37,11 @@ unsigned int dist; int platedist; - while(plates<=0 || plates>16){ - pc.printf("\nEnter Number of Plates to Send 0-16: "); - pc.scanf("%d",&plates); - - if (plates > 16 || plates < 0 ){ - pc.printf("\nInvalid Entry"); - } - else{ - pc.printf("\nPlates Requested: %ld", plates); - } - } + plates = (rand() % 16) + 1; if (magnetSwitch == 1){ pc.printf("\nNot in Home Position"); - goto LOOPY; + exit(1); } else{ wait(1); @@ -61,29 +51,34 @@ in1=1; in2=1; } - - platedist = (468-24*plates); - wait(1); - heightsensor.start(); - wait_ms(500); - dist = heightsensor.get_dist_cm(); + pc.printf("\nRequested Plates:%ld",plates); + platedist = (468-24*plates); millisStart(); long durationSM = 0; long starttimeSM = millis(); - pc.printf("\nPlate Distance:%ld",platedist); - pc.printf("\nSelector Height:%ld",dist); - while(dist < platedist-2 || dist > platedist+2 && dist < 480 && durationSM <56000){ + SENSORREAD: + heightsensor.start(); + wait_ms(250); + dist = heightsensor.get_dist_cm(); + + + while ((dist < platedist-2 && durationSM < 60000 || dist > platedist+2 && durationSM < 60000)){ + heightsensor.start(); - dist = heightsensor.get_dist_cm(); long currenttimeSM = millis(); durationSM = currenttimeSM-starttimeSM; - pc.printf("\nSelector Height:%ld",dist); en = 0; mot.setSpeed(500); - - if(dist<platedist-2){ + dist = heightsensor.get_dist_cm(); + + if(dist >= 480 || dist <= 40 ){ + pc.printf("\nBad Read at :%ld", durationSM); + goto SENSORREAD; + } + + if(dist<platedist-2){ //397 403 mot.rotate(1); wait(0.5); } @@ -94,25 +89,27 @@ mot.stop(); } + pc.printf("\nSelector Height:%ld", dist); + pc.printf("\nSelector Motor Duration:%ld", durationSM); mot.stop(); en = 1; wait(1); - if (dist >=480){ - pc.printf("\nSelector Distance out of Range:%ld",dist); - goto LOOPY; + if (dist >= 480 || dist <= 40){ + pc.printf("\nSelector Distance out of Range"); + exit(1); } - else if (durationSM >= 56000){ + else if (durationSM >= 60000){ pc.printf("\nSelector Motor Time Out"); - goto LOOPY; + exit(1); } else{ - pc.printf("\nPlates Selected: %ld", plates); in1=1; in2=0; - wait(58); + wait(56); in1=1; in2=1; + pc.printf("\nSending Finished"); } } @@ -191,9 +188,9 @@ else { pc.printf("\nBeam Path Detector distance out of range : %ld", pathdist); wait(2); - goto LOOPY; + path_sheets = 111; } - pc.printf("\nPlates Detected in Beam Path: %ld", path_sheets); + pc.printf("\nDetected Plates: %ld", path_sheets); wait(2); } @@ -203,112 +200,33 @@ long Duration = 0; long StartTime = millis(); - while(magnetSwitch == 1 && homeSwitch == 1 && Duration <= 58000 ){ + while(magnetSwitch == 1 && homeSwitch == 1 && Duration <= 52000 ){ in1=0; in2=1; long CurrentTime = millis(); Duration = CurrentTime-StartTime; - pc.printf("\nDuration: %d\r\n", Duration); } in1=1; in2=1; - if (Duration > 58000){ - pc.printf("\nRetraction Time Out Error"); - goto LOOPY; + if (Duration > 52000){ + pc.printf("\nRetraction Time Out Error: %d\r\n", Duration); + exit(1); } else if (homeSwitch == 0){ pc.printf("\nMagnet Switch Broken"); - goto LOOPY; + exit(1); } else{ - pc.printf("\nPlate Retraction Complete"); + pc.printf("\nRetraction Complete"); + goto LOOPY; } } -else if (command==4){ - - int plates = 0; - unsigned int dist; - int platedist; - - while(plates<=0 || plates>16){ - - pc.printf("\nEnter Number of Plates to Select 0-16: "); - pc.scanf("%d",&plates); - - if (plates > 16 || plates < 0 ){ - pc.printf("\nInvalid Entry"); - } - else{ - pc.printf("\nPlates Requested: %ld", plates); - } - } - - if (magnetSwitch == 1){ - pc.printf("\nNot in Home Position"); - goto LOOPY; - } - else{ - wait(1); - in1=1; - in2=0; - wait_ms(900); - in1=1; - in2=1; - } - - platedist = (468-24*plates); - wait(1); - heightsensor.start(); - wait_ms(500); - dist = heightsensor.get_dist_cm(); - millisStart(); - long durationSM = 0; - long starttimeSM = millis(); - pc.printf("\nPlate Distance:%ld",platedist); - pc.printf("\nSelector Height:%ld",dist); - - while(dist < platedist-2 || dist > platedist+2 && dist < 480 && durationSM <56000){ - - heightsensor.start(); - dist = heightsensor.get_dist_cm(); - long currenttimeSM = millis(); - durationSM = currenttimeSM-starttimeSM; - pc.printf("\nSelector Height:%ld",dist); - en = 0; - mot.setSpeed(500); - - if(dist<platedist-2){ - mot.rotate(1); - wait(0.5); - } - if(dist>platedist+2){ - mot.rotate(0); - wait(0.5); - } - mot.stop(); - } - - mot.stop(); - en = 1; - wait(1); - - if (dist >=480){ - pc.printf("\nSelector Distance out of Range:%ld",dist); - goto LOOPY; - } - else if (durationSM >= 56000){ - pc.printf("\nSelector Motor Time Out"); - goto LOOPY; - } - else{ - pc.printf("\nSelection Finished"); - } - } else { pc.printf("\nInvalid Command"); } } -} \ No newline at end of file +} +}