update hcsr04.cpp by changing 20000 to 2000

Dependencies:   Stepper mbed SDFileSystem Ultrasonic PinDetect millis

Files at this revision

API Documentation at this revision

Comitter:
rschimpf78
Date:
Sun Mar 18 02:40:25 2018 +0000
Child:
1:4bda04eecf66
Commit message:
done

Changed in this revision

PinDetect.lib Show annotated file Show diff for this revision Revisions of this file
Stepper.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/PinDetect.lib	Sun Mar 18 02:40:25 2018 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/AjK/code/PinDetect/#cb3afc45028b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Stepper.lib	Sun Mar 18 02:40:25 2018 +0000
@@ -0,0 +1,1 @@
+http://os.mbed.com/users/mederic/code/Stepper/#a456aa3935ca
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sun Mar 18 02:40:25 2018 +0000
@@ -0,0 +1,283 @@
+/*#include "mbed.h"
+#include <vector>
+//--------Brushed Motor -------------------
+DigitalOut in3(PTC17); 
+DigitalOut in4(PTC16);
+//---------Stepper Motor ------------------
+Stepper mot(PTA1,D2);//d2 and d3
+DigitalOut en(D4); 
+Serial pc(USBTX, USBRX); 
+ 
+//--Internal pullup resistors for Bumper Switches---
+DigitalIn bswitch(D1);
+DigitalIn tswitch(D0);
+int main() {
+    vector<int> time;
+    vector<int> plates;
+    int n,t,h,m,s = 0; 
+    int tests = 0;
+    PULp.period(0.0006f); 
+    ENp = 1;
+    DIRp = 0;
+    PULp.write(0.5f); 
+    in3=0;
+    in4=0;
+    pc.printf("\nCommands  ");
+    pc.scanf("%d",&tests); 
+    
+    for (int i = 1; i<=tests;i++){
+        pc.printf("\nEnter the Number of Plates for test %d: ",i);
+        pc.scanf("%d",&n);
+        pc.printf("\nEnter hours and minutes to test these plates\n\nHours: ");
+        pc.scanf("%d",&h);
+        pc.printf("Minutes: ");
+        pc.scanf("%d",&m);
+        pc.printf("Seconds: ");
+        pc.scanf("%d",&s);
+        t=(h*3600)+(m*60)+s;
+        time.push_back(t);
+        plates.push_back(n);
+    }
+    pc.printf("\nTesting in Progress...");
+   for (unsigned y=0; y<time.size(); y++){
+       
+        //--------Turn Stepper on for a certain amount of time based on the number of plates----
+        in3=0;   // stop actuator
+        in4=0;   // stop actuator
+        ENp = 0; 
+        DIRp = 0;
+        wait(1.9*(plates.at(y)-1)); 
+        ENp = 1;
+        wait(0.5);
+        //-------Move Plates Under X ray Beam---------------------------------------------------
+        in3=0;
+        in4=1;
+        wait(14); //reaches end after 10 seconds
+        in3=0;   // stop actuator
+        in4=0;   // stop actuator
+        //-----Test the Plate for specified time ----------------------------------------------
+        wait(time.at(y)); //Leave plates in beam path for the user inputted amount of time
+        //-----Retract plates to original position---------------------------------------------
+        in3=1;
+        in4=0;
+        wait(14); 
+        in3=0; 
+        in4=0; 
+        wait(0.5);
+        //--------Return Stepper to base height with one plate selected------------------------
+        ENp = 0; 
+        DIRp = 1; 
+        wait(2*(plates.at(y)-1));
+        ENp = 1; 
+        //-------------------------------------------------------------------------------------
+        pc.printf("\n\nTest number %d complete", y+1);
+        pc.printf("\nNumber of Plates: %d", plates.at(y));
+        pc.printf("\nLength of Test: %d seconds", time.at(y));
+        }
+        pc.printf("\n\nAll testing complete");
+    }
+*/
+
+/*#include "mbed.h" 
+
+Serial pc(USBTX, USBRX);
+ 
+int main() {
+    char c;
+    char buffer[128];
+    pc.gets(buffer, 4);
+    pc.printf("I got '%s'\n", buffer);  
+    if(strcmp(buffer,"on")==0) {
+        printf("success");
+        }   
+    else{
+        printf("fail");
+        }   
+}
+*/
+#include "mbed.h"
+#include "Stepper.h"
+DigitalIn homeSwitch(D8);
+DigitalIn endSwitch(D1);
+DigitalIn bottomSwitch(D0);
+DigitalIn topSwitch(D9);
+Stepper mot(PTA1,D2);
+DigitalOut en(D4); 
+DigitalOut in1(D11); 
+DigitalOut in2(D10);
+Serial pc(USBTX, USBRX);
+
+void positionStatus()
+{
+     int plateposition;  //plate position -> 1 is home, 2 is traveling, 3 is under beam path 
+     if(homeSwitch==0 && endSwitch==1)
+     {
+      plateposition = 1;
+      pc.printf("\nPlate position is home %d",plateposition);
+     } 
+     else if (homeSwitch==1 && endSwitch==1)
+     {
+      plateposition = 2;
+      pc.printf("\nPlates are currently moving %d",plateposition); 
+     }
+     else if(homeSwitch==1 && endSwitch==0)
+     {
+     plateposition = 3;
+     pc.printf("\nPlates are under beam path %d",plateposition); 
+     }
+     else
+     {
+      pc.printf("\nError, cannot locate plate position"); 
+     }
+}
+
+void retractPMMA()
+{
+    in1=1;
+    in2=0;
+    wait(14);
+    in1=0;
+    in2=0;
+    positionStatus();
+}
+
+void sendPMMA()                                                   //Command: Send plates
+ {                                                                //Returns: plates arrived(),plates didn't arrive() 
+    wait(2);
+    in1=1;
+    in2=0;
+    wait(14);
+    in1=0;
+    in2=0;
+    positionStatus();
+}
+
+void autoCalibrate()     //if machine is plugged in when the plate selector isn't at the origin...
+{   
+    en = 0;                      //...it automatically lowers it to the origin position 
+    mot.setSpeed(800);
+    mot.rotate(0);                 
+    while(bottomSwitch);        //While bottom switch is unpressed   
+    mot.stop();                 //Stop rotation when switch is pressed (pressed = logical level low)           
+    en=1;                       //Disable driver
+    mot.setPositionZero();      //Set absolute origin for plate selector at switch hit
+}
+
+void internalpullups()
+{
+    bottomSwitch.mode (PullUp);
+    topSwitch.mode (PullUp);
+    homeSwitch.mode (PullUp);
+    endSwitch.mode (PullUp);
+    wait (.01);
+}
+
+void numberofPlates()       // Command: Number of PMMA to send (plates)
+                            // Returns: Actual number of plates selected (selectedplates), selectionerror (1 for command error, 0 for correct command) 
+{    
+     int stepheight,plates,selectionerror;
+     double selectedplates;                        
+     pc.printf("\nEnter the Number of Plates to send ");
+     pc.scanf("%d",&plates);
+     if (plates <= 0)
+     { 
+     pc.printf("\nNot a valid number, must be 1 to 16");
+     selectionerror = 1;
+     }
+     else if (plates >= 17)
+     { 
+     pc.printf("\nNot a valid number, must be 1 to 16");
+     selectionerror = 1;
+     }
+     else
+     {
+     selectionerror = 0;
+     pc.printf("\nCommand Valid\n"); 
+     en = 0;
+     mot.goesTo(plates*1620);
+     while(!mot.stopped());
+     stepheight = mot.getPosition();        
+     selectedplates = stepheight/1620;                 
+     pc.printf("\n Steps taken: %d ",selectedplates);  
+     mot.stop();
+     en = 1;   
+    }
+}      
+void selectionStatus()
+{
+   int stepheight;
+   double selectedplates;
+   stepheight = mot.getPosition();        
+   selectedplates = stepheight/1620;                 
+   pc.printf("\n Number of plates currently selected: %d ",selectedplates);
+     
+}                             
+
+ 
+int main()
+{  
+    char command[256] = { 0 };
+    internalpullups();
+    wait (.01);
+    autoCalibrate(); //...it automatically lowers it to the origin position for initial power up
+                     
+    while(1)
+    {
+      pc.printf("\nEnter Command: \n send \n retract \n position (get status) \n selection (get status)" );
+      pc.scanf("\n%s", &command);
+        if (strcmp (command, "send") == 0)
+        {  
+            pc.printf ("\nCommand Recieved: Send");   //confirmation of recieved command
+            numberofPlates();                       //select number of plates to send
+            sendPMMA();                  
+        }
+        if (strcmp (command, "retract") == 0)
+        {     
+            pc.printf ("\nCommand Recieved: retract");
+            retractPMMA();   
+        } 
+        if (strcmp (command, "position") == 0)
+        {     
+            pc.printf ("\nCommand Recieved: position");
+            positionStatus();  
+        }
+        if (strcmp (command, "selection") == 0)
+        {
+            pc.printf ("\nCommand Recieved: selection");
+            selectionStatus();
+        }
+    }  
+}    
+
+
+/* int main () 
+{  
+    int steps, plates;
+    bswitch.mode (PullUp); 
+    wait (.01);
+    mot.setSpeed (600);
+    mot.rotate (0);         //if machine is plugged in when the plate selector isn't at the origin...
+    
+    while (bswitch);        //...it automatically lowers it to the origin positio
+    mot.stop ();            //Stop rotation when switch is pressed (pressed = logical level low)
+    en = 1;                 //Disable driver
+    mot.setPositionZero (); //Set absolute origin for plate selector at switch hit
+    char c[256] = { 0 };
+    
+    while (1)
+    {
+        pc.printf("Choose a command:\nPMMA 1");   
+        pc.scanf ("%s", &c);   
+        
+        if (strcmp (c, "PMMA1") == 0)
+        {  
+            pc.printf ("\n match ");
+        }
+      
+        if (strcmp (c, "no") == 0)
+        {     
+            pc.printf ("\n not match ");
+        }   
+    }
+}
+*/
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Sun Mar 18 02:40:25 2018 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/4336505e4b1c
\ No newline at end of file