mbed code for UberVest health monitoring

Dependencies:   BLE_API mbed nRF51822

Files at this revision

API Documentation at this revision

Comitter:
haydenball
Date:
Wed Jan 13 21:36:17 2016 +0000
Parent:
6:808cfc0b9480
Commit message:
Final Changes

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Mon Nov 23 15:48:07 2015 +0000
+++ b/main.cpp	Wed Jan 13 21:36:17 2016 +0000
@@ -29,7 +29,6 @@
 
 // Inputs
 AnalogIn ecg(p6);
-AnalogIn pulse(p1);
 AnalogIn temp(p2);
 
 // N.B. The devkit and prospeckz are different - DK is active low, prospeckz is active high.
@@ -38,23 +37,20 @@
 
 // END IO
 
+Serial pc(USBTX, USBRX);
 BLE ble;
 
 const static char     DEVICE_NAME[] = "UberVest";
 static const uint16_t uuid16_list[] = {UberVestService::UBER_VEST_SERVICE_UUID};
 
 static int8_t ecgValue;
-static int8_t pulseValue;
 static int8_t tempValue;
 
 static volatile bool sampleEcg = false;
-static volatile bool samplePulse = false;
 static volatile bool sampleTemp = false;
 
 UberVestService *uberVestServicePtr;
 
-Serial pc(USBTX, USBRX);
-
 void connectionCallback(const Gap::ConnectionCallbackParams_t *params)
 {
     connectionLed = LED_OFF;
@@ -71,11 +67,6 @@
     sampleEcg = true;
 }
 
-void samplePulseCallback(void)
-{
-    //samplePulse = true;
-}
-
 void sampleTempCallback(void)
 {
     sampleTemp = true;
@@ -90,28 +81,28 @@
 
 float getTemp(void)
 {
-    const int TEMP_RESISTOR_VALUE = 10830;
+    const int TEMP_RESISTOR_VALUE = 10900;
     float rawValue;
     float r; // Thermistor resistance
     double convertedTemp;
     
     rawValue = temp.read();
     // The thermistor is set up as a simple voltage divider. We can get the resistance as follows:
-    r = ((1 / rawValue) * TEMP_RESISTOR_VALUE) - TEMP_RESISTOR_VALUE;
+    r = ((TEMP_RESISTOR_VALUE * 5.0f) / (rawValue * 4.3f)) - TEMP_RESISTOR_VALUE;
     
     // Now calculate the temperature from the resistance
     // From the thermistor data sheet (http://www.farnell.com/datasheets/1784420.pdf):
-    const float R_REF = 10000;
+    const float R_REF = 10000.0f;
     const double A = 3.354016e-03;
     const double B = 2.569850e-04;
     const double C = 2.620131e-06;
     const double D = 6.383091e-08;
     
     convertedTemp = A + B * (log(r / R_REF)) + C * pow(log(r / R_REF), 2.0f) + D * pow(log(r / R_REF), 3.0f);
-    convertedTemp = 1 / convertedTemp;
+    convertedTemp = 1.0f / convertedTemp;
     
     // convert to degrees celsius:
-    convertedTemp = convertedTemp - 273;
+    convertedTemp = convertedTemp - 273.0f;
     
     pc.printf("Raw: %f, Resisance: %f, Temp: %f\r\n", rawValue, r, convertedTemp);
     
@@ -133,9 +124,6 @@
     Ticker ecgSampler;
     ecgSampler.attach(sampleEcgCallback, 0.02);
     
-    //Ticker pulseSampler;
-    //pulseSampler.attach(samplePulseCallback, 0.1);
-    
     Ticker tempSampler;
     tempSampler.attach(sampleTempCallback, 1);
     
@@ -155,17 +143,10 @@
             if (sampleEcg) {
                 sampleEcg = false;
                 
-                ecgValue = (ecg.read() * 1024);
+                ecgValue = (ecg.read() * 512);
                 uberVestServicePtr->updateEcg(ecgValue);
             }
             
-            if (samplePulse) {
-                samplePulse = false;
-                
-                pulseValue = (pulse.read() * 1024);
-            }
-            
-               
             if (sampleTemp) {
                 sampleTemp = false;