Simple cpp wrapper of a ds18b20, onewire 'c' library. Supports multiple sensors.

Dependencies:   mbed

Dependents:   LPC11U68_DS18B20Sensor

Fork of DS18B20Sensor by Steve Spence

Revision:
0:1449f126b241
Child:
1:ea35ad346f25
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/DS18B20Sensor.cpp	Sun Mar 03 01:41:51 2013 +0000
@@ -0,0 +1,57 @@
+#include "DS18B20Sensor.h"
+
+DS18B20Sensor::DS18B20Sensor(PinName pin) : _oneWirePort(pin)
+{
+    _init = false;
+    nSensors = 0;
+}
+
+void DS18B20Sensor::getReadingText(char * text, uint8_t index)
+{
+    uint8_t subzero, cel, cel_frac_bits;
+    DS18X20_read_meas( &gSensorIDs[index][0], &subzero, &cel, &cel_frac_bits);
+    DS18B20Sensor::getReadingText(text, subzero, cel, cel_frac_bits);
+}
+
+void DS18B20Sensor::getReadingText(char * text, uint8_t subzero, uint8_t cel, uint8_t cel_frac_bits)
+{
+    uint16_t decicelsius;
+    char s[10];
+    float temperature;
+    sprintf(text,"");
+    sprintf(s,"%s", (subzero)?"-":"+");
+    strcat(text,s);
+    decicelsius = DS18X20_temp_to_decicel(subzero, cel, cel_frac_bits);
+    temperature = decicelsius;
+    temperature = temperature/10;
+    sprintf(s,"%4.1f", temperature);
+    strcat(text,s);
+
+}
+
+uint8_t DS18B20Sensor::search(void)
+{
+    search_sensors(&nSensors, &gSensorIDs[0][0]);
+    _init = true;
+    return nSensors;
+}
+
+uint8_t DS18B20Sensor::count(void)
+{
+    if (_init==false)
+        DS18B20Sensor::search();
+    return nSensors;
+}
+
+uint8_t DS18B20Sensor::startReading(bool includeWait)
+{
+    uint8_t r = DS18X20_start_meas(DS18X20_POWER_EXTERN, 0 );
+    if ((r == DS18X20_OK) && includeWait)
+        wait_ms(DS18B20_TCONV_12BIT);
+    return r;
+}
+
+void DS18B20Sensor::getReading(uint8_t index, uint8_t *subzero, uint8_t *cel, uint8_t *cel_frac_bits)
+{
+    DS18X20_read_meas( &gSensorIDs[index][0], subzero, cel, cel_frac_bits);
+}