DallasTemperatureInterface.ino 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #include <OneWire.h>
  2. #include <DallasTemperature.h>
  3. OneWire one_wire_network(2);
  4. DallasTemperature sensors(&one_wire_network);
  5. const uint8_t sensors_max_count = 8;
  6. uint8_t sensors_count;
  7. DeviceAddress sensors_addrs[sensors_max_count];
  8. // typedef uint8_t DeviceAddress[8];
  9. void printAddress(DeviceAddress addr)
  10. {
  11. Serial.print("0x");
  12. for(int i=0; i<8; i++) {
  13. if(addr[i] < 16) Serial.print('0');
  14. Serial.print(addr[i], HEX);
  15. }
  16. }
  17. void setup()
  18. {
  19. Serial.begin(9600);
  20. Serial.println("a buhh");
  21. Serial.println("dallas-temperature-interface 1.0.0");
  22. sensors.begin();
  23. sensors_count = 0;
  24. for(uint8_t i=0; i<sensors.getDeviceCount(); i++) {
  25. Serial.print("address ");
  26. Serial.print(i);
  27. Serial.print(' ');
  28. if(sensors.getAddress(sensors_addrs[sensors_count], i)) {
  29. printAddress(sensors_addrs[sensors_count]);
  30. Serial.println();
  31. sensors_count++;
  32. } else {
  33. Serial.println('n/a');
  34. }
  35. }
  36. for(uint8_t i=0; i<sensors_count; i++) {
  37. Serial.print("resolution ");
  38. printAddress(sensors_addrs[i]);
  39. Serial.print(' ');
  40. Serial.println(sensors.getResolution(sensors_addrs[i]), DEC);
  41. }
  42. }
  43. void loop()
  44. {
  45. unsigned long request_millis = millis();
  46. sensors.requestTemperatures();
  47. for(uint8_t i=0; i<sensors_count; i++) {
  48. Serial.print("temperature ");
  49. Serial.print(request_millis);
  50. Serial.print(' ');
  51. printAddress(sensors_addrs[i]);
  52. Serial.print(' ');
  53. float temp = sensors.getTempC(sensors_addrs[i]);
  54. if(abs(temp - DEVICE_DISCONNECTED_C) < 0.1) {
  55. Serial.println("disconnected");
  56. } else {
  57. Serial.println(temp);
  58. }
  59. }
  60. }