|
@@ -0,0 +1,66 @@
|
|
|
+#include <OneWire.h>
|
|
|
+#include <DallasTemperature.h>
|
|
|
+
|
|
|
+OneWire one_wire_network(2);
|
|
|
+DallasTemperature sensors(&one_wire_network);
|
|
|
+const uint8_t sensors_max_count = 8;
|
|
|
+uint8_t sensors_count;
|
|
|
+DeviceAddress sensors_addrs[sensors_max_count];
|
|
|
+
|
|
|
+// typedef uint8_t DeviceAddress[8];
|
|
|
+void printAddress(DeviceAddress addr)
|
|
|
+{
|
|
|
+ Serial.print("0x");
|
|
|
+ for(int i=0; i<8; i++) {
|
|
|
+ if(addr[i] < 16) Serial.print('0');
|
|
|
+ Serial.print(addr[i], HEX);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+void setup()
|
|
|
+{
|
|
|
+ Serial.begin(9600);
|
|
|
+ Serial.println("a buhh");
|
|
|
+ Serial.println("dallas-temperature-interface 1.0.0");
|
|
|
+
|
|
|
+ sensors.begin();
|
|
|
+ sensors_count = 0;
|
|
|
+ for(uint8_t i=0; i<sensors.getDeviceCount(); i++) {
|
|
|
+ Serial.print("address ");
|
|
|
+ Serial.print(i);
|
|
|
+ Serial.print(' ');
|
|
|
+ if(sensors.getAddress(sensors_addrs[sensors_count], i)) {
|
|
|
+ printAddress(sensors_addrs[sensors_count]);
|
|
|
+ Serial.println();
|
|
|
+ sensors_count++;
|
|
|
+ } else {
|
|
|
+ Serial.println('n/a');
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ for(uint8_t i=0; i<sensors_count; i++) {
|
|
|
+ Serial.print("resolution ");
|
|
|
+ printAddress(sensors_addrs[i]);
|
|
|
+ Serial.print(' ');
|
|
|
+ Serial.println(sensors.getResolution(sensors_addrs[i]), DEC);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+void loop()
|
|
|
+{
|
|
|
+ unsigned long request_millis = millis();
|
|
|
+ sensors.requestTemperatures();
|
|
|
+ for(uint8_t i=0; i<sensors_count; i++) {
|
|
|
+ Serial.print("temperature ");
|
|
|
+ Serial.print(request_millis);
|
|
|
+ Serial.print(' ');
|
|
|
+ printAddress(sensors_addrs[i]);
|
|
|
+ Serial.print(' ');
|
|
|
+ float temp = sensors.getTempC(sensors_addrs[i]);
|
|
|
+ if(abs(temp - DEVICE_DISCONNECTED_C) < 0.1) {
|
|
|
+ Serial.println("disconnected");
|
|
|
+ } else {
|
|
|
+ Serial.println(temp);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|