AND / Mbed 2 deprecated HandHeld_LatestV2

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
mehrnaz
Date:
Wed Jun 19 10:01:39 2019 +0000
Parent:
2:af7522079ec4
Commit message:
handheld latest version2

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Tue Apr 16 09:19:53 2019 +0000
+++ b/main.cpp	Wed Jun 19 10:01:39 2019 +0000
@@ -3,9 +3,12 @@
 #include "co2.h"
 #include "time.h"
 
-//Serial ble(A4,A5);
+Serial ble(A4,A5);
 AnalogIn flowIn(A3);
 AnalogIn temp(A2);
+AnalogIn neg(D3);
+AnalogIn pos(D4);
+
 Timer t;
 Thread co2Thread;
 Thread flowThread;
@@ -13,23 +16,11 @@
 
 
 float flowVal;
+    
 
     
 
-//void gettime()
-//{
-//    while(1) 
-//        {
-//            if ((flowVal>0.7) and (measurement_started ==0))
-//            {
-//                start = clock();
-//            }
-//            if((flowVal<0.7) and (measurement_started == 1))
-//            { 
-//                end = clock();
-//            }
-//        }
-//}
+
 
 
 void flow()
@@ -37,7 +28,6 @@
     while(1) {
         flowVal=(sqrt(((flowIn*3.3)*1.5)*125-62.5))*0.24; //Logic level 3.3
 
-//        printf("Flow: %f", flowVal);
     }
 }
 
@@ -63,7 +53,7 @@
 
 int main()
 {
-    //  ble.baud(9600);
+      ble.baud(9600);
     float mc,ac;
     int k,u,b;
     int flagg=0;
@@ -79,13 +69,16 @@
    
     float co2Array[80];
     float flowArray[40];
+    float bfArray[4];
     long double var=0.0;
     float sigma=0.0;
     float sum=0;
     double sum2=0;
     double finalsum;
+    
     int difSum=0;
     float avg=0;
+    
     //int peravg=0;
     unsigned long long sqSum=0;
     int cflag=0;
@@ -104,52 +97,150 @@
    //int measurement_started = 0;
     int maxflag=0;
     float fv=0;
-
+    int bf=0;
+    float sf=0;
     int i = 0;
     int j=0;
+    int o=0;
+    int ready=0;
+    int ch = 0;
+
+  int msg1 = 0;
+    int msg2 = 0;
+int positive = 0;
+int negative =0;
+float pos2;
+float neg2;
+int symyes =0;
+int symno =0;
+float symy;
+float symn;
+ 
+
+
     ///*******
 
+ble.printf("First, please indicate if you feel good or not.\n");
+
 
     while(1) {
-        //printf(" CO2: %d, Flow: %f, \n", carbon(), flowVal );  //COOL TERM
+      // ble.printf(" CO2: %d, Flow: %f, \n", carbon(), flowVal );  //COOL TERM
+      pos2=pos*3.3;
+     neg2=neg*3.3;
+        if (bf==0)
+            {
+              for(o=0; o<4; o++) 
+                  {
+                    bfArray[o]=flowVal;  
+                    sf+=bfArray[j];                  
+                  }   
+               fv=sf/4;
+              // printf("first fv: %f \n", fv);
+               fv=fv+0.2;
+               //printf("sec fv: %f \n", fv);
+             
+               
+               bf=1;
+             }
         
-         //for(j=0; j<10; j++) 
-//                {
-//                    flowArray[j]=flowVal;
-//                }
-         
+        if((carbon()<10000) and (ready ==1))
+            {
+                ble.printf("Now you can breathe into device. \n");
+                 ble.printf("First, please indicate if you feel good or not.\n");
+                ready=0;
+            }
+              if(msg1==0)
+              {
+                  if(neg2>2)
+                  {
+                      negative=1;
+                      ble.printf("Did you have experienced any symptoms today?\n");
+                      if(neg2<1)
+                      {
+                          msg2=1;
+                          msg1=1;
+                      }
+                       msg2=1;
+                       msg1=1;
+                  }
+                 if(pos2>2)
+                 {
+                  positive = 1;
+                  ble.printf("Did you have experienced any symptoms today?\n");
+                  if(pos2<1)
+                      {
+                          msg2=1;
+                          msg1=1;
+                      }
+                  msg2=1;
+                  msg1=1;
+                 }
+
+               }
+        if((msg1==1) and (msg2==1))
+        {
+         symy=pos*3.3;
+         symn=neg*3.3;
+              if(symy>2)
+                      {
+                          symyes=1;
+                          ble.printf("*BEEP*\n");
+                          ble.printf("Now please breath into the device.\n");
+                          msg2=0;
+                      }
+                      if(symn>2)
+                      {
+                          symno=1;
+                          ble.printf("*BEEP*\n");
+                          ble.printf("Now please breath into the device.\n");
+                          msg2=0;
+                      }
+        }
         
-        if ((flowVal>0.8) and (measurement_started ==0)) {
+        
+        if ((flowVal>fv) and (measurement_started ==0)) {
 
   //          time(&start_t);
-            measurement_started = 1;
+            
 
-            printf("Balloon is blowing \n");
-            printf("Calculating... \n");
+          ble.printf("Please keep exhaling for: \n");
+          ble.printf("4 seconds...\n");
+             measurement_started = 1;
 
         }
 
 
-        if (measurement_started == 1) {
-
-            for(j=0; j<40; j++) {
+        if (measurement_started == 1) 
+        {
+            for(j=0; j<10; j++) {
+                flowArray[j]=flowVal;
+                co2Array[j]=carbon();
+                wait(0.1);
+            }
+            ble.printf("3 seconds... \n");
+            for(j=10; j<20; j++) {
                 flowArray[j]=flowVal;
                 co2Array[j]=carbon();
-                //printf("co2array[%d] %f \n",k,co2Array[k]);
-
-
-
+                wait(0.1);
+            }
+            ble.printf("2 seconds...\n");
+            for(j=20; j<30; j++) {
+                flowArray[j]=flowVal;
+                co2Array[j]=carbon();
                 wait(0.1);
-
-
             }
-
+             ble.printf("1 second... \n");
+            for(j=30; j<40; j++) {
+                flowArray[j]=flowVal;
+                co2Array[j]=carbon();
+                wait(0.1);
+            }
+            ble.printf("*BEEP* *BEEP* Done!\n");
             for(j=40; j<80; j++) {
                 co2Array[j]=carbon();
-                //printf("co2array[%d] %f \n",k,co2Array[k]);
                 wait(0.1);
             }
-
+            ble.printf("Calculating results... \n");
             for(j=0; j<80; j++) {
                 if(co2Array[j]<10000) {
                     co2Array[j]=carbon();
@@ -174,14 +265,14 @@
                 if (flowArray[j] > maximum) {
 
                     maximum  = flowArray[j];
-                    // printf("Max: %f",maximum);
+                    //  ble.printf("Max: %f",maximum);
 
                 }
             }
             maxflag=0;
             measurement_started =1;
         }
-        if((flowVal<0.8) and (measurement_started == 1)) {
+        if((flowVal<fv) and (measurement_started == 1)) {
             
     //        time(&end_t);
    //T = difftime(end_t, start_t);
@@ -193,45 +284,90 @@
 
              //cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC;
            //  T=cpu_time_used;
-     //        printf("t=%f \n", T);
+     //         ble.printf("t=%f \n", T);
        //      T=0;
 
-            printf("********* \n");
-            printf("Your breath results: \n");
-            
-            printf("Maximum Flow: %3.2f Litres/Second \n",maximum);
-
-            for(j=0; j<39; j++) {
+             for(j=0; j<39; j++) {
                 flowsum[j]=((flowArray[j]+flowArray[j+1])*0.1)/2;
-                //printf("flowsum %f \n",flowsum[j]);
+                //ble.printf("flowsum %f \n",flowsum[j]);
                 finalsum+=flowsum[j];
             }
-
-            printf("Lung Capacity: %3.2f Litres \n",finalsum);
-
+          
+           //mkdir("/sd/mydir", 0777);
+//FILE *fp = fopen("/sd/mydir/sdtest.xls", "w");
+//    if(fp == NULL) {
+//        error("Could not open file for write\n");
+//    } 
+            ble.printf("********* \n");
+          // fprintf(fp, "*********");
+    
+            ble.printf("Your breath results: \n");
+           // fprintf(fp, "Your breath results:");
+            ble.printf("********* \n");
+           // fprintf(fp, "*********");
+            if (positive==1)
+            {
+                ble.printf("Patient felt healthy,");
+               // fprintf(fp, "Patient felt healthy.");
+                positive=0;
+            }
+            if (negative==1)
+            {
+                ble.printf("Patient felt unhealthy,");
+              //  fprintf(fp, "Patient felt unhealthy.");
+                negative=0;
+            }
+            if (symyes == 1)
+            {
+                ble.printf(" and had experienced symptoms. ");
+                symyes =0;
+            }
+            if (symno ==1)
+            {
+                ble.printf(" and hadn't experienced any symptoms. ");
+                symno=0;
+            }
             if (finalsum<0.9) {
-                printf("Breath Score: 1 \n");
+                ble.printf("Breath Score: 1 \n");
+                //fprintf(fp, "Breath Score: 1");
             }
             if((finalsum>1) and (finalsum<1.9)) {
-                printf("Breath Score: 2 \n");
+                ble.printf("Breath Score: 2 \n");
+              //  fprintf(fp, "Breath Score: 2");
             }
             if((finalsum>2) and (finalsum<2.9)) {
-                printf("Breath Score: 3 \n");
+                ble.printf("Breath Score: 3 \n");
+            //    fprintf(fp, "Breath Score: 3");
             }
             if((finalsum>3) and (finalsum<3.9)) {
-                printf("Breath Score: 4 \n");
+                ble.printf("Breath Score: 4 \n");
+               // fprintf(fp, "Breath Score: 4");
             }
             if((finalsum>4) and (finalsum<5)) {
-                printf("Breath Score: 5 \n");
+                ble.printf("Breath Score: 5 \n");
+             //   fprintf(fp, "Breath Score: 5");
             }
+            
+           //  ble.printf("Maximum Flow: %3.2f Litres/Second \n",maximum);
+           //  fprintf(fp, "Maximum Flow: %3.2f Litres/Second \n",maximum);
+
+          //  ble.printf("Lung Capacity: %3.2f Litres \n",finalsum);
+          //  fprintf(fp, "Lung Capacity: %3.2f Litres \n",finalsum);
+            
+        
+            
             finalsum=0;
+            fv=0;
             cflag=1;
+           // ble.printf("********* \n");
+           // fprintf(fp, "*********");
+
 
         }
 
         if(cflag==1) {
             for(j=0; j<80; j++) {
-                //printf("co2[%d]:  %f \n",j,co2Array[j]);
+                //ble.printf("co2[%d]:  %f \n",j,co2Array[j]);
                 sum+=co2Array[j];
             }
             maximumco2 = co2Array[0];
@@ -241,22 +377,49 @@
                 if (co2Array[j] > maximumco2) {
 
                     maximumco2  = co2Array[j];
-                    // printf("Max: %f",maximum);
+                    // ble.printf("Max: %f",maximum);
 
                 }
             }
             mc=maximumco2/10000;
-            printf("Maximum CO2: %3.2f percent \n",mc);
-            // printf("co2 sum: %f \n",sum);
+           // ble.printf("Maximum CO2: %3.2f percent \n",mc);
+           // fprintf(fp, "Maximum CO2: %3.2f percent \n",mc);
+            // ble.printf("co2 sum: %f \n",sum);
             avg=sum/80;
+            //s1av=s1sum/40;
+//            s2av=s2sum/40;
+//            s3av=s3sum/40;
+//            s4av=s4sum/40;
+//            s5av=s5sum/40;
+//            s6av=s6sum/40;
+//            s7av=s7sum/40;
+//            s8av=s8sum/40;
+           // ble.printf("%f,%f,%f,%f,%f,%f,%f,%f \n", s1av,s2av,s3av,s4av,s5av,s6av,s7av,s8av);
             ac=avg/10000;
-            printf("CO2 Average: %3.2f percent \n", ac);
-            printf("********* \n");
-            printf("Nice Job! You can try again. \n");
+           // ble.printf("CO2 Average: %3.2f percent \n", ac);
+           // fprintf(fp, "CO2 Average: %3.2f percent \n", ac);
+            ble.printf("********* \n");
+           // fprintf(fp, "*********");
+            ble.printf("Nice Job! Please wait for the next try. \n");
+  //fclose(fp);           
+            
+            
+         //   led = 0;
+          
+       // s1av=0;
+//        s2av=0;
+//        s3av=0;
+//        s4av=0;
+//        s5av=0;s6av=0;
+//        s7av=0;s8av=0;
+            ready=1;
             ac=0;
             mc=0;
             sum=0;
             cflag=0;
+            bf=0;
+ch = 0;
+msg1=0;