DS18B20.h 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. #ifndef DS18B20_H
  2. #define DS18B20_H
  3. #include "Arduino.h"
  4. #include <OneWire.h>
  5. #define SEARCH_ROM 0xF0
  6. #define READ_ROM 0x33
  7. #define MATCH_ROM 0x55
  8. #define SKIP_ROM 0xCC
  9. #define ALARM_SEARCH 0xEC
  10. #define CONVERT_T 0x44
  11. #define WRITE_SCRATCHPAD 0x4E
  12. #define READ_SCRATCHPAD 0xBE
  13. #define COPY_SCRATCHPAD 0x48
  14. #define RECALL 0xB8
  15. #define READ_POWER_SUPPLY 0xB4
  16. #define MODEL_DS1820 0x10
  17. #define MODEL_DS18S20 0x10
  18. #define MODEL_DS1822 0x22
  19. #define MODEL_DS18B20 0x28
  20. #define SIZE_SCRATCHPAD 9
  21. #define TEMP_LSB 0
  22. #define TEMP_MSB 1
  23. #define ALARM_HIGH 2
  24. #define ALARM_LOW 3
  25. #define CONFIGURATION 4
  26. #define CRC8 8
  27. #define RES_9_BIT 0x1F
  28. #define RES_10_BIT 0x3F
  29. #define RES_11_BIT 0x5F
  30. #define RES_12_BIT 0x7F
  31. #define CONV_TIME_9_BIT 94
  32. #define CONV_TIME_10_BIT 188
  33. #define CONV_TIME_11_BIT 375
  34. #define CONV_TIME_12_BIT 750
  35. class DS18B20 {
  36. public:
  37. DS18B20(uint8_t pin);
  38. uint8_t select(uint8_t address[]);
  39. uint8_t selectNext();
  40. uint8_t selectNextAlarm();
  41. void resetSearch();
  42. float getTempC();
  43. float getTempF();
  44. uint8_t getResolution();
  45. void setResolution(uint8_t resolution);
  46. uint8_t getPowerMode();
  47. uint8_t getFamilyCode();
  48. void getAddress(uint8_t address[]);
  49. void doConversion();
  50. uint8_t getNumberOfDevices();
  51. uint8_t hasAlarm();
  52. void setAlarms(int8_t alarmLow, int8_t alarmHigh);
  53. int8_t getAlarmLow();
  54. void setAlarmLow(int8_t alarmLow);
  55. int8_t getAlarmHigh();
  56. void setAlarmHigh(int8_t alarmHigh);
  57. void setRegisters(int8_t lowRegister, int8_t highRegister);
  58. int8_t getLowRegister();
  59. void setLowRegister(int8_t lowRegister);
  60. int8_t getHighRegister();
  61. void setHighRegister(int8_t highRegister);
  62. private:
  63. OneWire oneWire;
  64. uint8_t globalResolution;
  65. uint8_t globalPowerMode;
  66. uint8_t numberOfDevices;
  67. uint8_t selectedAddress[8];
  68. uint8_t selectedScratchpad[SIZE_SCRATCHPAD];
  69. uint8_t selectedResolution;
  70. uint8_t selectedPowerMode;
  71. uint8_t searchAddress[8];
  72. uint8_t lastDiscrepancy;
  73. uint8_t lastDevice;
  74. uint8_t readScratchpad();
  75. void writeScratchpad();
  76. uint8_t sendCommand(uint8_t romCommand);
  77. uint8_t sendCommand(uint8_t romCommand, uint8_t functionCommand, uint8_t power = 0);
  78. uint8_t oneWireSearch(uint8_t romCommand);
  79. uint8_t isConnected(uint8_t address[]);
  80. void delayForConversion(uint8_t resolution, uint8_t powerMode);
  81. };
  82. #endif