From dffec694626b8fc0a70eb97368a1bdc440b5bdc4 Mon Sep 17 00:00:00 2001 From: Robo Print Date: Sat, 27 Jun 2015 23:27:35 +0200 Subject: [PATCH] Non-blocking Dallas sensors temperature conversion => lower power usage --- .../DallasTemperatureSensor.ino | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/libraries/MySensors/examples/DallasTemperatureSensor/DallasTemperatureSensor.ino b/libraries/MySensors/examples/DallasTemperatureSensor/DallasTemperatureSensor.ino index 3c6c2c0..ade4edd 100644 --- a/libraries/MySensors/examples/DallasTemperatureSensor/DallasTemperatureSensor.ino +++ b/libraries/MySensors/examples/DallasTemperatureSensor/DallasTemperatureSensor.ino @@ -21,6 +21,8 @@ void setup() { // Startup OneWire sensors.begin(); + // requestTemperatures() will not block current thread + sensors.setWaitForConversion(false); // Startup and initialize MySensors library. Set callback for incoming messages. gw.begin(); @@ -44,7 +46,12 @@ void loop() gw.process(); // Fetch temperatures from Dallas sensors - sensors.requestTemperatures(); + sensors.requestTemperatures(); + + // query conversion time and sleep until conversion completed + int16_t conversionTime = sensors.millisToWaitForConversion(sensors.getResolution()); + // sleep() call can be replaced by wait() call if node need to process incoming messages (or if node is repeater) + gw.sleep(conversionTime); // Read temperatures and send them to controller for (int i=0; i