GY-63_MS5611/libraries/MSP300/MSP300.h
2024-05-13 12:41:34 +02:00

84 lines
1.7 KiB
C++

#pragma once
//
// FILE: MSP300.h
// AUTHOR: Rob Tillaart
// VERSION: 0.3.0
// PURPOSE: Arduino library for I2C MSP300 pressure transducer.
// URL: https://github.com/RobTillaart/MSP300
#include "Arduino.h"
#include "Wire.h"
#define MSP300_LIB_VERSION (F("0.3.0"))
// ERROR AND STATUS CODES
#define MSP300_OK 0
#define MSP300_RESERVED 1
#define MSP300_STALE_DATA 2
#define MSP300_READ_ERROR 3
#define MSP300_REQUEST_ERROR 100
/////////////////////////////////////////////////
//
// MSP300
//
class MSP300
{
public:
explicit MSP300(const uint8_t deviceAddress = 0x28, TwoWire *wire = &Wire);
bool begin(int maxValue);
bool isConnected();
// set the address to select other sensor if needed.
bool setAddress(const uint8_t deviceAddress);
uint8_t getAddress();
// READ
uint32_t readP(); // returns _raw, reads S + P
uint32_t readPT(); // returns _raw, reads S + P + T
uint8_t getStatus(); // 0 == OK, other = error.
float getPressure();
float getTemperature();
// CALIBRATION
// use with care!
// read datasheet page 5
// Pmin = count at zero pressure
// Pmax = count at max pressure (which depends on sensor);
// 1000 and 15000 are the default counts from datasheet.
void setPressureCounts(int Pmin = 1000, int Pmax = 15000);
int getPmin();
int getPmax();
// ERROR HANDLING
int lastError();
private:
uint8_t _address;
int _error;
int _maxValue;
float _pressure;
float _temperature;
uint8_t _status;
float _pressureFactor;
int _Pmin;
int _Pmax;
TwoWire* _wire;
void _request();
uint32_t _read(uint8_t bytes);
};
// -- END OF FILE --