72 lines
2.0 KiB
C++
72 lines
2.0 KiB
C++
#ifndef ADXL345_CONTROLLER_H
|
|
#define ADXL345_CONTROLLER_H
|
|
|
|
#include <Arduino.h>
|
|
#include <Wire.h>
|
|
|
|
#define ADXL345_DEVID 0x00
|
|
#define ADXL345_THRESH_TAP 0x1D
|
|
#define ADXL345_OFSX 0x1E
|
|
#define ADXL345_OFSY 0x1F
|
|
#define ADXL345_OFSZ 0x20
|
|
#define ADXL345_DUR 0x21
|
|
#define ADXL345_LATENT 0x22
|
|
#define ADXL345_WINDOW 0x23
|
|
#define ADXL345_THRESH_ACT 0x24
|
|
#define ADXL345_THRESH_INACT 0x25
|
|
#define ADXL345_TIME_INACT 0x26
|
|
#define ADXL345_ACT_INACT_CTL 0x27
|
|
#define ADXL345_THRESH_FF 0x28
|
|
#define ADXL345_TIME_FF 0x29
|
|
#define ADXL345_TAP_AXES 0x2A
|
|
#define ADXL345_ACT_TAP_STATUS 0x2B
|
|
#define ADXL345_BW_RATE 0x2C
|
|
#define ADXL345_POWER_CTL 0x2D
|
|
#define ADXL345_INT_ENABLE 0x2E
|
|
#define ADXL345_INT_MAP 0x2F
|
|
#define ADXL345_INT_SOURCE 0x30
|
|
#define ADXL345_DATA_FORMAT 0x31
|
|
#define ADXL345_DATAX0 0x32
|
|
#define ADXL345_DATAX1 0x33
|
|
#define ADXL345_DATAY0 0x34
|
|
#define ADXL345_DATAY1 0x35
|
|
#define ADXL345_DATAZ0 0x36
|
|
#define ADXL345_DATAZ1 0x37
|
|
#define ADXL345_FIFO_CTL 0x38
|
|
#define ADXL345_FIFO_STATUS 0x39
|
|
|
|
#define DEFAULT_MIN_READ_INTERVAL 50
|
|
|
|
class ADXL345Controller {
|
|
private:
|
|
uint8_t _deviceAddress;
|
|
unsigned long _lastReadTime;
|
|
unsigned long _minReadInterval;
|
|
double _lastX;
|
|
double _lastY;
|
|
double _lastZ;
|
|
bool _lastReadSuccess;
|
|
|
|
void setRegister(uint8_t reg, uint8_t value);
|
|
uint8_t readRegister(uint8_t reg);
|
|
void readRegisters(uint8_t reg, uint8_t count, uint8_t *buffer);
|
|
|
|
public:
|
|
ADXL345Controller(uint8_t deviceAddress = 0x53);
|
|
|
|
void begin();
|
|
|
|
bool read();
|
|
|
|
double getX();
|
|
double getY();
|
|
double getZ();
|
|
|
|
bool isLastReadSuccessful() const;
|
|
void setMinReadInterval(unsigned long interval);
|
|
void setRange(uint8_t range);
|
|
void setDataRate(uint8_t rate);
|
|
void setOffsets(int8_t xOffset, int8_t yOffset, int8_t zOffset);
|
|
};
|
|
|
|
#endif |