The firmware of the Grove Node

Dependencies:   BLE_API color_pixels mbed-src-nrf51822 nRF51822

Fork of BLE_LoopbackUART by Bluetooth Low Energy

Revision:
10:f34ff4e47741
diff -r 84cb66d0375d -r f34ff4e47741 udriver/temperature_sensor.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/udriver/temperature_sensor.cpp	Thu Jun 04 09:34:13 2015 +0000
@@ -0,0 +1,56 @@
+
+#include "udriver.h"
+#include "mbed.h"
+
+int temperature_sensor_init(void *obj, void *params)
+{
+    int pin = *(int *)params;
+    *(AnalogIn **)obj = new AnalogIn((PinName)pin);
+    
+    return 0;
+}
+    
+
+int temperature_sensor_read(void *obj, void *data)
+{
+    const uint32_t beta = 3975;
+    float a;
+    float temperature;
+    float resistance;
+    AnalogIn *probe = *(AnalogIn **)obj;
+    
+    a = probe->read();
+    
+    /* Calculate the resistance of the thermistor from analog votage read. */
+    resistance = (float) 10000.0 * ((1 / a) - 1);
+    
+    /* Convert the resistance to temperature using Steinhart's Hart equation */
+    temperature = (1/((log(resistance/10000.0)/beta) + (1.0/298.15)))-273.15; 
+    
+    *(float *)data = temperature;
+    
+    return 0;
+}
+
+int temperature_sensor_write(void *obj, void *data)
+{
+    return 0;
+}
+
+int temperature_sensor_fini(void *obj)
+{
+    AnalogIn *ptr = *(AnalogIn **)obj;
+    delete ptr;
+    
+    return 0;
+}
+
+driver_t temperature_sensor_driver = 
+{
+    .init  = temperature_sensor_init,
+    .read  = temperature_sensor_read,
+    .write = temperature_sensor_write,
+    .fini  = temperature_sensor_fini,
+    
+    .d     = 1,
+};