DallasTemperature Library - sensor failure alarm?
i need read out 7 ds18b20 temperature sensors , working pretty well. if unplug 1 or more of these sensors output (serial monitor) still ok, there still value written , looks last value before being unplugged. if plug sensor in measurement working again.
somebody idea how can implement error message if 1 of sensors not behaving should (breakdown, wire break, etc..)?
thx
i'm using 1 of (modified) examples dallastemperature library..
somebody idea how can implement error message if 1 of sensors not behaving should (breakdown, wire break, etc..)?
thx
i'm using 1 of (modified) examples dallastemperature library..
code: [select]
#include <onewire.h>
#include <dallastemperature.h>
// data wire plugged port 3 on arduino
#define one_wire_bus 3
// setup onewire instance communicate onewire devices (not maxim/dallas temperature ics)
onewire onewire(one_wire_bus);
// pass our onewire reference dallas temperature.
dallastemperature sensors(&onewire);
void setup(void)
{
// start serial port
serial.begin(9600);
// start library
sensors.begin();
}
void loop(void)
{
requesttemp();// call sensors.requesttemp() issue temperatures
delay(10);
}
void requesttemp(){
sensors.requesttemperatures(); // send command temperatures
for (int i=0 ;i<=6; i++){
serial.print("sensor : ");
serial.println(i);
serial.println(sensors.gettempcbyindex(i));
delay(150);
}
}
rather use device index, better off using device address each sensor. know you're explicitly addressing specific physical sensor rather whatever device happens @ index in list of devices present.
code: [select]
void discoversensors()
{
byte addr[8];
// 0 of addresses
for(int = 0; < max_sensors; i++)
{
memset(sensoraddresses[i], 0, sizeof(deviceaddress));
}
sensorcount = 0;
while((onewire.search(addr)) && (sensorcount < max_sensors))
{
if ( onewire::crc8(addr, 7) != addr[7])
{
printf("crc not valid!\n");
return;
}
else
{
memcpy(sensoraddresses[sensorcount], addr, sizeof(deviceaddress));
printf("discovered sensor @ ");
printdeviceaddress(sensoraddresses[sensorcount]);
printf("\n");
sensorcount ++;
}
}
onewire.reset_search();
}
void configuresensors()
{
for(int = 0; < sensorcount; i++)
{
dallas.setresolution(sensoraddresses[i], 12); // select maximum supported resolution
}
}
void handlesensors()
{
dallas.requesttemperatures();
for(int = 0; < sensorcount; i++)
{
float tempc = dallas.gettempc(sensoraddresses[i]);
if((tempc > 0) && (tempc < 85.0))
{
// handle temperature value
}
else
{
// handle bad temperature value
}
}
}
Arduino Forum > Using Arduino > Programming Questions > DallasTemperature Library - sensor failure alarm?
arduino
Comments
Post a Comment