commit
f1b825779a
3 changed files with 30 additions and 31 deletions
|
|
@ -16,11 +16,20 @@
|
||||||
****************************************************/
|
****************************************************/
|
||||||
|
|
||||||
#include "Adafruit_SI1145.h"
|
#include "Adafruit_SI1145.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Destructor
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
Adafruit_SI1145::~Adafruit_SI1145() {
|
||||||
|
if (i2c_dev)
|
||||||
|
delete i2c_dev;
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* @brief Construct a new Adafruit_SI1145::Adafruit_SI1145 object
|
* @brief Construct a new Adafruit_SI1145::Adafruit_SI1145 object
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
Adafruit_SI1145::Adafruit_SI1145() : m_pBus(&Wire), _addr(SI1145_ADDR) {}
|
Adafruit_SI1145::Adafruit_SI1145() {}
|
||||||
/**
|
/**
|
||||||
* @brief Initize the driver, specifying the `TwoWire` bus to use
|
* @brief Initize the driver, specifying the `TwoWire` bus to use
|
||||||
*
|
*
|
||||||
|
|
@ -38,10 +47,13 @@ boolean Adafruit_SI1145::begin(TwoWire *pBus) {
|
||||||
* @return boolean true: success false: failure to initize the sensor
|
* @return boolean true: success false: failure to initize the sensor
|
||||||
*/
|
*/
|
||||||
boolean Adafruit_SI1145::begin(uint8_t addr, TwoWire *pBus) {
|
boolean Adafruit_SI1145::begin(uint8_t addr, TwoWire *pBus) {
|
||||||
|
if (i2c_dev)
|
||||||
|
delete i2c_dev;
|
||||||
|
i2c_dev = new Adafruit_I2CDevice(addr, pBus);
|
||||||
|
if (!i2c_dev->begin()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
_addr = addr;
|
|
||||||
m_pBus = pBus;
|
|
||||||
m_pBus->begin();
|
|
||||||
uint8_t id = read8(SI1145_REG_PARTID);
|
uint8_t id = read8(SI1145_REG_PARTID);
|
||||||
if (id != 0x45)
|
if (id != 0x45)
|
||||||
return false; // look for SI1145
|
return false; // look for SI1145
|
||||||
|
|
@ -174,32 +186,18 @@ uint8_t Adafruit_SI1145::readParam(uint8_t p) {
|
||||||
/*********************************************************************/
|
/*********************************************************************/
|
||||||
|
|
||||||
uint8_t Adafruit_SI1145::read8(uint8_t reg) {
|
uint8_t Adafruit_SI1145::read8(uint8_t reg) {
|
||||||
m_pBus->beginTransmission(_addr);
|
uint8_t buffer[1] = {reg};
|
||||||
m_pBus->write((uint8_t)reg);
|
i2c_dev->write_then_read(buffer, 1, buffer, 1);
|
||||||
m_pBus->endTransmission();
|
return buffer[0];
|
||||||
|
|
||||||
m_pBus->requestFrom((uint8_t)_addr, (uint8_t)1);
|
|
||||||
return m_pBus->read();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t Adafruit_SI1145::read16(uint8_t a) {
|
uint16_t Adafruit_SI1145::read16(uint8_t a) {
|
||||||
uint16_t ret;
|
uint8_t buffer[2] = {a, 0};
|
||||||
|
i2c_dev->write_then_read(buffer, 1, buffer, 2);
|
||||||
m_pBus->beginTransmission(_addr); // start transmission to device
|
return ((uint16_t)buffer[0]) | ((uint16_t)buffer[1] << 8);
|
||||||
m_pBus->write(a); // sends register address to read from
|
|
||||||
m_pBus->endTransmission(); // end transmission
|
|
||||||
|
|
||||||
m_pBus->requestFrom(_addr, (uint8_t)2); // send data n-bytes read
|
|
||||||
ret = m_pBus->read(); // receive DATA
|
|
||||||
ret |= (uint16_t)m_pBus->read() << 8; // receive DATA
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Adafruit_SI1145::write8(uint8_t reg, uint8_t val) {
|
void Adafruit_SI1145::write8(uint8_t reg, uint8_t val) {
|
||||||
|
uint8_t buffer[2] = {reg, val};
|
||||||
m_pBus->beginTransmission(_addr); // start transmission to device
|
i2c_dev->write(buffer, 2);
|
||||||
m_pBus->write(reg); // sends register address to write
|
|
||||||
m_pBus->write(val); // sends value
|
|
||||||
m_pBus->endTransmission(); // end transmission
|
|
||||||
}
|
}
|
||||||
|
|
@ -22,7 +22,7 @@
|
||||||
#else
|
#else
|
||||||
#include "WProgram.h"
|
#include "WProgram.h"
|
||||||
#endif
|
#endif
|
||||||
#include <Wire.h>
|
#include <Adafruit_I2CDevice.h>
|
||||||
|
|
||||||
/* COMMANDS */
|
/* COMMANDS */
|
||||||
#define SI1145_PARAM_QUERY 0x80
|
#define SI1145_PARAM_QUERY 0x80
|
||||||
|
|
@ -150,6 +150,7 @@
|
||||||
class Adafruit_SI1145 {
|
class Adafruit_SI1145 {
|
||||||
public:
|
public:
|
||||||
Adafruit_SI1145(void);
|
Adafruit_SI1145(void);
|
||||||
|
~Adafruit_SI1145();
|
||||||
boolean begin(uint8_t addr = SI1145_ADDR, TwoWire *pBus = &Wire);
|
boolean begin(uint8_t addr = SI1145_ADDR, TwoWire *pBus = &Wire);
|
||||||
boolean begin(TwoWire *pBus);
|
boolean begin(TwoWire *pBus);
|
||||||
void reset();
|
void reset();
|
||||||
|
|
@ -165,7 +166,6 @@ private:
|
||||||
void write8(uint8_t reg, uint8_t val);
|
void write8(uint8_t reg, uint8_t val);
|
||||||
uint8_t readParam(uint8_t p);
|
uint8_t readParam(uint8_t p);
|
||||||
uint8_t writeParam(uint8_t p, uint8_t v);
|
uint8_t writeParam(uint8_t p, uint8_t v);
|
||||||
TwoWire *m_pBus;
|
Adafruit_I2CDevice *i2c_dev = NULL; ///< Pointer to I2C bus interface
|
||||||
uint8_t _addr;
|
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
name=Adafruit SI1145 Library
|
name=Adafruit SI1145 Library
|
||||||
version=1.1.1
|
version=1.2.0
|
||||||
author=Adafruit
|
author=Adafruit
|
||||||
maintainer=Adafruit <info@adafruit.com>
|
maintainer=Adafruit <info@adafruit.com>
|
||||||
sentence=Arduino library for the SI1145 sensors in the Adafruit shop
|
sentence=Arduino library for the SI1145 sensors in the Adafruit shop
|
||||||
|
|
@ -7,3 +7,4 @@ paragraph=Arduino library for the SI1145 sensors in the Adafruit shop
|
||||||
category=Sensors
|
category=Sensors
|
||||||
url=https://github.com/adafruit/Adafruit_SI1145_Library
|
url=https://github.com/adafruit/Adafruit_SI1145_Library
|
||||||
architectures=*
|
architectures=*
|
||||||
|
depends=Adafruit BusIO
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue