Deniz Dosluoglu / Mbed 2 deprecated RD117_MBED_mod

Dependencies:   ToScreen mbed

Fork of RD117_MBED by Maxim Integrated

Revision:
6:519bdb0ec306
Parent:
5:27d600e46926
Child:
7:7c4c5b06c805
--- a/main.cpp	Tue Apr 10 03:36:39 2018 +0000
+++ b/main.cpp	Sat Apr 14 20:04:56 2018 +0000
@@ -90,11 +90,15 @@
 #endif  PLATFORM_H_ */
 
 uint32_t aun_ir_buffer[500]; //IR LED sensor data
-//int32_t n_ir_buffer_length;    //data length
-float n_ir_buffer_length;    //data length
+int32_t n_ir_buffer_length;    //data length
+//float n_ir_buffer_length;    //data length
 uint32_t aun_red_buffer[500];    //Red LED sensor data
+//uint32_t aun_ir_buffer[100]; //IR LED sensor data
+//uint32_t aun_red_buffer[100];    //Red LED sensor data
 //int32_t n_sp02; //SPO2 value
 float n_sp02;//SPO2 value
+float calculated_red_mean, calculated_ir_mean;
+float ir_mean,red_mean;
 int8_t ch_spo2_valid;   //indicator to show if the SP02 calculation is valid
 int32_t n_heart_rate;   //heart rate value
 int8_t  ch_hr_valid;    //indicator to show if the heart rate calculation is valid
@@ -159,15 +163,17 @@
     
     maxim_max30102_init();  //initializes the MAX30102
         
-        
+       
     n_brightness=0;
     un_min=0x3FFFF;
     un_max=0;
   
-    //n_ir_buffer_length=500; //buffer length of 500 stores 5 seconds of samples running at 100sps
+    n_ir_buffer_length=500; //buffer length of 500 stores 5 seconds of samples running at 100sps
     
     //read the first 500 samples, and determine the signal range
     //READ 100 SAMPLES
+ //calculated_ir_mean = 0.0;
+// calculated_red_mean = 0.0;
     for(i=0;i<BUFFER_SIZE;i++)
     {
         while(INT.read()==1);   //wait until the interrupt pin asserts
@@ -178,13 +184,27 @@
             un_min=aun_red_buffer[i];    //update signal min
         if(un_max<aun_red_buffer[i])
             un_max=aun_red_buffer[i];    //update signal max
-        pc.printf("red=");
-        pc.printf("%i", aun_red_buffer[i]);
-        pc.printf(", ir=");
+           
+        //calculated_red_mean = calculated_red_mean + aun_red_buffer[i];
+        //calculated_ir_mean = calculated_ir_mean + aun_ir_buffer[i];
+        pc.printf("%i ", t.read_ms());
+        //pc.printf("red=");
+        pc.printf("%i ", aun_red_buffer[i]);
+        //pc.printf(", ir=");
         pc.printf("%i\n\r", aun_ir_buffer[i]);
+        
     }
+    
+  
+
     rf_heart_rate_and_oxygen_saturation(aun_ir_buffer, BUFFER_SIZE, aun_red_buffer, &n_sp02, &ch_spo2_valid, &n_heart_rate, &ch_hr_valid, &ratio, &correl);
     pc.printf("%i ", t.read_ms());
+    pc.printf("ir_mean = %f ", ir_mean);
+  
+  pc.printf("red_mean = %f ", red_mean);
+  pc.printf("correl = %f ", correl);
+  pc.printf("ratio = %f ", ratio);
+  
             pc.printf("%i ", aun_red_buffer[i]);
             //pc.printf(", ir=");
             pc.printf("%i ", aun_ir_buffer[i]);
@@ -200,9 +220,11 @@
     un_prev_data=aun_red_buffer[i];
     
     
+   
+   /*
     //calculate heart rate and SpO2 after first 500 samples (first 5 seconds of samples)
     //maxim_heart_rate_and_oxygen_saturation(aun_ir_buffer, n_ir_buffer_length, aun_red_buffer, &n_sp02, &ch_spo2_valid, &n_heart_rate, &ch_hr_valid); 
-    rf_heart_rate_and_oxygen_saturation(aun_ir_buffer, n_ir_buffer_length, aun_red_buffer, &n_sp02, &ch_spo2_valid, &n_heart_rate, &ch_hr_valid, &ratio, &correl); 
+    rf_heart_rate_and_oxygen_saturation(aun_ir_buffer, BUFFER_SIZE, aun_red_buffer, &n_sp02, &ch_spo2_valid, &n_heart_rate, &ch_hr_valid, &ratio, &correl, &ir_mean, &red_mean); 
     //Continuously taking samples from MAX30102.  Heart rate and SpO2 are calculated every 1 second
     //while(1) //infinite loop
     for (int a = 0; a<20; a++)//acquire finite amount of data
@@ -214,10 +236,10 @@
         //dumping the first 100 sets of samples in the memory and shift the last 400 sets of samples to the top
         //revision, dump first 25
         //for(i=100;i<500;i++)
-        for(i=20;i<100;i++)
+        for(i=25;i<100;i++)
         {
-            aun_red_buffer[i-20]=aun_red_buffer[i];
-            aun_ir_buffer[i-20]=aun_ir_buffer[i];
+            aun_red_buffer[i-25]=aun_red_buffer[i];
+            aun_ir_buffer[i-25]=aun_ir_buffer[i];
             //aun_red_buffer[i-25]=aun_red_buffer[i];
             //aun_ir_buffer[i-25]=aun_ir_buffer[i];
             //update the signal min and max
@@ -230,7 +252,7 @@
         //take 100 sets of samples before calculating the heart rate.
         //take 
         //for(i=400;i<500;i++)
-        for(i=80;i<100;i++)
+        for(i=75;i<100;i++)
         {
             un_prev_data=aun_red_buffer[i-1];
             while(INT.read()==1);
@@ -275,8 +297,8 @@
             pc.printf("%i\n\r", ch_spo2_valid);
         }
         //maxim_heart_rate_and_oxygen_saturation(aun_ir_buffer, n_ir_buffer_length, aun_red_buffer, &n_sp02, &ch_spo2_valid, &n_heart_rate, &ch_hr_valid);
-        rf_heart_rate_and_oxygen_saturation(aun_ir_buffer, n_ir_buffer_length, aun_red_buffer, &n_sp02, &ch_spo2_valid, &n_heart_rate, &ch_hr_valid, &ratio, &correl);  
+        rf_heart_rate_and_oxygen_saturation(aun_ir_buffer, BUFFER_SIZE, aun_red_buffer, &n_sp02, &ch_spo2_valid, &n_heart_rate, &ch_hr_valid, &ratio, &correl);  
     }
-
+*/
 }
  
\ No newline at end of file