27 #include "../../SmingCore/Wire.h" 29 #define BMP180_Address 0x77 31 #define ChipIdData 0x55 32 #define ControlInstruction_MeasureTemperature 0x2E 33 #define ControlInstruction_MeasurePressure 0x34 35 #define Reg_ChipId 0xD0 36 #define Reg_Control 0xF4 37 #define Reg_CalibrationStart 0xAA 38 #define Reg_CalibrationEnd 0xBE 39 #define Reg_AnalogConverterOutMSB 0xF6 40 #define Reg_SoftReset 0xE0 41 #define SoftResetInstruction 0xB6 43 #define ErrorCode_1 "Entered sample resolution was invalid. See datasheet for details." 44 #define ErrorCode_1_Num 1 46 #define BMP180_Mode_UltraLowPower 0 47 #define BMP180_Mode_Standard 1 48 #define BMP180_Mode_HighResolution 2 49 #define BMP180_Mode_UltraHighResolution 3 56 void Initialize(
void);
58 int GetUncompensatedTemperature();
59 float CompensateTemperature(
int uncompensatedTemperature);
61 long GetUncompensatedPressure();
62 long CompensatePressure(
long uncompensatedPressure);
64 float GetTemperature();
70 uint8_t SetResolution(uint8_t sampleResolution,
bool oversample);
72 void PrintCalibrationData();
74 uint8_t EnsureConnected();
76 const char* GetErrorText(
int errorCode);
78 void Write(
int address,
int byte);
79 uint8_t* Read(
int address,
int length);
80 void Read2(
int address,
int length, uint8_t buffer[]);
82 uint8_t OversamplingSetting;
84 int16_t ConversionWaitTimeMs;
85 int16_t LastTemperatureData;
86 int16_t LastTemperatureTime;
87 int16_t AcceptableTemperatureLatencyForPressure;
89 int16_t Calibration_AC1;
90 int16_t Calibration_AC2;
91 int16_t Calibration_AC3;
92 unsigned int Calibration_AC4;
93 unsigned int Calibration_AC5;
94 unsigned int Calibration_AC6;
95 int16_t Calibration_B1;
96 int16_t Calibration_B2;
97 int16_t Calibration_MB;
98 int16_t Calibration_MC;
99 int16_t Calibration_MD;