HRV -> Mood

Dependencies:   MAX30101 Hexi_KW40Z Hexi_OLED_SSD1351

Revision:
12:95d141421e18
Parent:
11:58a443cf3f7c
Child:
13:45c2837ab056
--- a/8cee5929f4d8/main.cpp	Sat Mar 16 07:46:28 2019 +0000
+++ b/8cee5929f4d8/main.cpp	Sat Mar 16 08:08:25 2019 +0000
@@ -43,8 +43,9 @@
 // I added this
 const int num_samples = 500; // for 30 sec
 int ppg[num_samples];
-int SDNN_n, SDNN;
-double arousal, valence, HF_LF, HF_LF_n;
+int SDNN_n, SDNN, valence_arousal;
+double HF_LF = 0.0;
+double HF_LF_n = 0.0;
 bool ready = false;
 
 void StartHaptic(void)
@@ -406,6 +407,26 @@
         HF_LF = HF/LF;
         printf("HF/LF = %.2f    \n", HF_LF);
         
+        if(SDNN_n < 1.0) {
+            SDNN_n = SDNN;
+            HF_LF_n = HF_LF;
+            valence_arousal = 0;
+        }
+        else {
+            if(SDNN > SDNN_n) {
+                if(HF_LF > HF_LF_n)
+                    valence_arousal = 0;
+                else
+                    valence_arousal = 3;
+            }
+            else {
+                if(HF_LF > HF_LF_n)
+                    valence_arousal = 1;
+                else
+                    valence_arousal = 2;
+            }
+        }
+        
         
         ready = false; // last line
 
@@ -453,7 +474,7 @@
 
     txThread.start(txTask);
     
-
+    
     while (true) {
 
         // Format the time reading 
@@ -473,9 +494,9 @@
             // Display time reading in 35px by 15px textbox at(x=55, y=40) 
             oled.TextBox((uint8_t *)text,55,55,35,15);
         }*/
-
         
-
+                
+        
         Thread::wait(1000);
     }
     return 0;