Adafruit_BMP183.h 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. /*!
  2. * @file Adafruit_BMP183.h
  3. */
  4. #ifndef ADAFRUIT_BMP183_H
  5. #define ADAFRUIT_BMP183_H
  6. #include "Arduino.h"
  7. #include "SPI.h"
  8. // use the 'default' datasheet numbers to test calculations
  9. #define BMP183_DEBUG 0 //!< Enables or disables debug mode
  10. /** Registers **/
  11. enum {
  12. BMP183_REGISTER_CAL_AC1 = 0xAA, // R Calibration data (16 bits)
  13. BMP183_REGISTER_CAL_AC2 = 0xAC, // R Calibration data (16 bits)
  14. BMP183_REGISTER_CAL_AC3 = 0xAE, // R Calibration data (16 bits)
  15. BMP183_REGISTER_CAL_AC4 = 0xB0, // R Calibration data (16 bits)
  16. BMP183_REGISTER_CAL_AC5 = 0xB2, // R Calibration data (16 bits)
  17. BMP183_REGISTER_CAL_AC6 = 0xB4, // R Calibration data (16 bits)
  18. BMP183_REGISTER_CAL_B1 = 0xB6, // R Calibration data (16 bits)
  19. BMP183_REGISTER_CAL_B2 = 0xB8, // R Calibration data (16 bits)
  20. BMP183_REGISTER_CAL_MB = 0xBA, // R Calibration data (16 bits)
  21. BMP183_REGISTER_CAL_MC = 0xBC, // R Calibration data (16 bits)
  22. BMP183_REGISTER_CAL_MD = 0xBE, // R Calibration data (16 bits)
  23. BMP183_REGISTER_CHIPID = 0xD0,
  24. BMP183_REGISTER_VERSION = 0xD1,
  25. BMP183_REGISTER_SOFTRESET = 0xE0,
  26. BMP183_REGISTER_CONTROL = 0xF4,
  27. BMP183_REGISTER_TEMPDATA = 0xF6,
  28. BMP183_REGISTER_PRESSUREDATA = 0xF6,
  29. BMP183_REGISTER_READTEMPCMD = 0x2E,
  30. BMP183_REGISTER_READPRESSURECMD = 0x34
  31. };
  32. /** Mode Settings **/
  33. typedef enum {
  34. BMP183_MODE_ULTRALOWPOWER = 0,
  35. BMP183_MODE_STANDARD = 1,
  36. BMP183_MODE_HIGHRES = 2,
  37. BMP183_MODE_ULTRAHIGHRES = 3
  38. } bmp183_mode_t;
  39. /*!
  40. * @brief Class that stores state and functions for interacting with
  41. * BMP183
  42. */
  43. class Adafruit_BMP183 {
  44. public:
  45. Adafruit_BMP183(int8_t SPICS, SPIClass *theSPI = &SPI);
  46. Adafruit_BMP183(int8_t SPICLK, int8_t SPIMISO, int8_t SPIMOSI, int8_t SPICS);
  47. boolean
  48. begin(bmp183_mode_t mode = BMP183_MODE_ULTRAHIGHRES); // by default go highres
  49. float getTemperature();
  50. int32_t getPressure();
  51. float getAltitude(float sealevelPressure = 101325); // std atmosphere
  52. uint16_t readRawTemperature();
  53. uint32_t readRawPressure();
  54. SPIClass *_spi; //!< pointer to SPI object
  55. private:
  56. uint8_t SPIxfer(uint8_t x);
  57. uint8_t read8(uint8_t addr);
  58. uint16_t read16(uint8_t addr);
  59. void write8(uint8_t addr, uint8_t data);
  60. int8_t _cs, _clk, _miso, _mosi;
  61. uint8_t oversampling;
  62. int16_t ac1, ac2, ac3, b1, b2, mb, mc, md;
  63. uint16_t ac4, ac5, ac6;
  64. };
  65. #endif // ADAFRUIT_BMP183_H