ADXL345 I2C + LCD + EEPROM

Dependents:   Projetminimal

Committer:
RobotManYt
Date:
Fri May 24 17:27:15 2019 +0000
Revision:
3:b4f3f0b17f41
Parent:
2:84e6d627c619
Child:
4:d36db669ff1c
toto

Who changed what in which revision?

UserRevisionLine numberNew contents of line
peterswanson87 0:d0adb548714f 1 /**
peterswanson87 0:d0adb548714f 2 * @author Peter Swanson
peterswanson87 0:d0adb548714f 3 * A personal note from me: Jesus Christ has changed my life so much it blows my mind. I say this because
peterswanson87 0:d0adb548714f 4 * today, religion is thought of as something that you do or believe and has about as
peterswanson87 0:d0adb548714f 5 * little impact on a person as their political stance. But for me, God gives me daily
peterswanson87 0:d0adb548714f 6 * strength and has filled my life with the satisfaction that I could never find in any
peterswanson87 0:d0adb548714f 7 * of the other things that I once looked for it in.
peterswanson87 0:d0adb548714f 8 * If your interested, heres verse that changed my life:
peterswanson87 0:d0adb548714f 9 * Rom 8:1-3: "Therefore, there is now no condemnation for those who are in Christ Jesus,
peterswanson87 0:d0adb548714f 10 * because through Christ Jesus, the law of the Spirit who gives life has set
peterswanson87 0:d0adb548714f 11 * me free from the law of sin (which brings...) and death. For what the law
peterswanson87 0:d0adb548714f 12 * was powerless to do in that it was weakened by the flesh, God did by sending
peterswanson87 0:d0adb548714f 13 * His own Son in the likeness of sinful flesh to be a sin offering. And so He
peterswanson87 0:d0adb548714f 14 * condemned sin in the flesh in order that the righteous requirements of the
peterswanson87 0:d0adb548714f 15 * (God's) law might be fully met in us, who live not according to the flesh
peterswanson87 0:d0adb548714f 16 * but according to the Spirit."
peterswanson87 0:d0adb548714f 17 *
peterswanson87 1:d9412b56f98a 18 * A special thanks to Ewout van Bekkum for all his patient help in developing this library!
peterswanson87 1:d9412b56f98a 19 *
peterswanson87 0:d0adb548714f 20 * @section LICENSE
peterswanson87 0:d0adb548714f 21 *
peterswanson87 0:d0adb548714f 22 * Permission is hereby granted, free of charge, to any person obtaining a copy
peterswanson87 0:d0adb548714f 23 * of this software and associated documentation files (the "Software"), to deal
peterswanson87 0:d0adb548714f 24 * in the Software without restriction, including without limitation the rights
peterswanson87 0:d0adb548714f 25 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
peterswanson87 0:d0adb548714f 26 * copies of the Software, and to permit persons to whom the Software is
peterswanson87 0:d0adb548714f 27 * furnished to do so, subject to the following conditions:
peterswanson87 0:d0adb548714f 28 *
peterswanson87 0:d0adb548714f 29 * The above copyright notice and this permission notice shall be included in
peterswanson87 0:d0adb548714f 30 * all copies or substantial portions of the Software.
peterswanson87 0:d0adb548714f 31 *
peterswanson87 0:d0adb548714f 32 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
peterswanson87 0:d0adb548714f 33 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
peterswanson87 0:d0adb548714f 34 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
peterswanson87 0:d0adb548714f 35 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
peterswanson87 0:d0adb548714f 36 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
peterswanson87 0:d0adb548714f 37 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
peterswanson87 0:d0adb548714f 38 * THE SOFTWARE.
peterswanson87 0:d0adb548714f 39 *
peterswanson87 0:d0adb548714f 40 * @section DESCRIPTION
peterswanson87 0:d0adb548714f 41 *
peterswanson87 0:d0adb548714f 42 * ADXL345, triple axis, I2C interface, accelerometer.
peterswanson87 0:d0adb548714f 43 *
peterswanson87 0:d0adb548714f 44 * Datasheet:
peterswanson87 0:d0adb548714f 45 *
peterswanson87 0:d0adb548714f 46 * http://www.analog.com/static/imported-files/data_sheets/ADXL345.pdf
peterswanson87 0:d0adb548714f 47 */
peterswanson87 0:d0adb548714f 48
peterswanson87 0:d0adb548714f 49 /**
peterswanson87 0:d0adb548714f 50 * Includes
peterswanson87 0:d0adb548714f 51 */
peterswanson87 0:d0adb548714f 52 #include "ADXL345_I2C.h"
peterswanson87 0:d0adb548714f 53
peterswanson87 0:d0adb548714f 54 //#include "mbed.h"
peterswanson87 0:d0adb548714f 55
peterswanson87 0:d0adb548714f 56 ADXL345_I2C::ADXL345_I2C(PinName sda, PinName scl) : i2c_(sda, scl) {
peterswanson87 0:d0adb548714f 57
peterswanson87 0:d0adb548714f 58 //400kHz, allowing us to use the fastest data rates.
peterswanson87 0:d0adb548714f 59 i2c_.frequency(400000);
peterswanson87 0:d0adb548714f 60 // initialize the BW data rate
peterswanson87 0:d0adb548714f 61 char tx[2];
peterswanson87 0:d0adb548714f 62 tx[0] = ADXL345_BW_RATE_REG;
peterswanson87 0:d0adb548714f 63 tx[1] = ADXL345_1600HZ; //value greater than or equal to 0x0A is written into the rate bits (Bit D3 through Bit D0) in the BW_RATE register
peterswanson87 0:d0adb548714f 64 i2c_.write( ADXL345_I2C_WRITE , tx, 2);
peterswanson87 0:d0adb548714f 65
peterswanson87 0:d0adb548714f 66 //Data format (for +-16g) - This is done by setting Bit D3 of the DATA_FORMAT register (Address 0x31) and writing a value of 0x03 to the range bits (Bit D1 and Bit D0) of the DATA_FORMAT register (Address 0x31).
peterswanson87 0:d0adb548714f 67
peterswanson87 0:d0adb548714f 68 char rx[2];
peterswanson87 0:d0adb548714f 69 rx[0] = ADXL345_DATA_FORMAT_REG;
peterswanson87 0:d0adb548714f 70 rx[1] = 0x0B;
emanon 2:84e6d627c619 71 // full res and +_16g
peterswanson87 0:d0adb548714f 72 i2c_.write( ADXL345_I2C_WRITE , rx, 2);
peterswanson87 0:d0adb548714f 73
peterswanson87 0:d0adb548714f 74 // Set Offset - programmed into the OFSX, OFSY, and OFXZ registers, respectively, as 0xFD, 0x03 and 0xFE.
peterswanson87 0:d0adb548714f 75 char x[2];
peterswanson87 0:d0adb548714f 76 x[0] = ADXL345_OFSX_REG ;
peterswanson87 0:d0adb548714f 77 x[1] = 0xFD;
peterswanson87 0:d0adb548714f 78 i2c_.write( ADXL345_I2C_WRITE , x, 2);
peterswanson87 0:d0adb548714f 79 char y[2];
peterswanson87 0:d0adb548714f 80 y[0] = ADXL345_OFSY_REG ;
peterswanson87 0:d0adb548714f 81 y[1] = 0x03;
peterswanson87 0:d0adb548714f 82 i2c_.write( ADXL345_I2C_WRITE , y, 2);
peterswanson87 0:d0adb548714f 83 char z[2];
peterswanson87 0:d0adb548714f 84 z[0] = ADXL345_OFSZ_REG ;
peterswanson87 0:d0adb548714f 85 z[1] = 0xFE;
peterswanson87 0:d0adb548714f 86 i2c_.write( ADXL345_I2C_WRITE , z, 2);
peterswanson87 0:d0adb548714f 87 }
peterswanson87 0:d0adb548714f 88
peterswanson87 0:d0adb548714f 89
peterswanson87 0:d0adb548714f 90 char ADXL345_I2C::SingleByteRead(char address){
peterswanson87 0:d0adb548714f 91 char tx = address;
peterswanson87 0:d0adb548714f 92 char output;
peterswanson87 0:d0adb548714f 93 i2c_.write( ADXL345_I2C_WRITE , &tx, 1); //tell it what you want to read
peterswanson87 0:d0adb548714f 94 i2c_.read( ADXL345_I2C_READ , &output, 1); //tell it where to store the data
peterswanson87 0:d0adb548714f 95 return output;
peterswanson87 0:d0adb548714f 96
peterswanson87 0:d0adb548714f 97 }
peterswanson87 0:d0adb548714f 98
peterswanson87 0:d0adb548714f 99
peterswanson87 0:d0adb548714f 100 /*
peterswanson87 0:d0adb548714f 101 ***info on the i2c_.write***
peterswanson87 0:d0adb548714f 102 address 8-bit I2C slave address [ addr | 0 ]
peterswanson87 0:d0adb548714f 103 data Pointer to the byte-array data to send
peterswanson87 0:d0adb548714f 104 length Number of bytes to send
peterswanson87 0:d0adb548714f 105 repeated Repeated start, true - do not send stop at end
peterswanson87 0:d0adb548714f 106 returns 0 on success (ack), or non-0 on failure (nack)
peterswanson87 0:d0adb548714f 107 */
peterswanson87 0:d0adb548714f 108
peterswanson87 0:d0adb548714f 109 int ADXL345_I2C::SingleByteWrite(char address, char data){
peterswanson87 0:d0adb548714f 110 int ack = 0;
peterswanson87 0:d0adb548714f 111 char tx[2];
peterswanson87 0:d0adb548714f 112 tx[0] = address;
peterswanson87 0:d0adb548714f 113 tx[1] = data;
peterswanson87 0:d0adb548714f 114 return ack | i2c_.write( ADXL345_I2C_WRITE , tx, 2);
peterswanson87 0:d0adb548714f 115 }
peterswanson87 0:d0adb548714f 116
peterswanson87 0:d0adb548714f 117
peterswanson87 0:d0adb548714f 118
peterswanson87 0:d0adb548714f 119 void ADXL345_I2C::multiByteRead(char address, char* output, int size) {
peterswanson87 0:d0adb548714f 120 i2c_.write( ADXL345_I2C_WRITE, &address, 1); //tell it where to read from
peterswanson87 0:d0adb548714f 121 i2c_.read( ADXL345_I2C_READ , output, size); //tell it where to store the data read
peterswanson87 0:d0adb548714f 122 }
peterswanson87 0:d0adb548714f 123
peterswanson87 0:d0adb548714f 124
peterswanson87 0:d0adb548714f 125 int ADXL345_I2C::multiByteWrite(char address, char* ptr_data, int size) {
peterswanson87 0:d0adb548714f 126 int ack;
peterswanson87 0:d0adb548714f 127
peterswanson87 0:d0adb548714f 128 ack = i2c_.write( ADXL345_I2C_WRITE, &address, 1); //tell it where to write to
peterswanson87 0:d0adb548714f 129 return ack | i2c_.write( ADXL345_I2C_READ, ptr_data, size); //tell it what data to write
peterswanson87 0:d0adb548714f 130
peterswanson87 0:d0adb548714f 131 }
peterswanson87 0:d0adb548714f 132
peterswanson87 0:d0adb548714f 133
peterswanson87 0:d0adb548714f 134 void ADXL345_I2C::getOutput(int* readings){
peterswanson87 0:d0adb548714f 135 char buffer[6];
peterswanson87 0:d0adb548714f 136 multiByteRead(ADXL345_DATAX0_REG, buffer, 6);
peterswanson87 0:d0adb548714f 137
peterswanson87 0:d0adb548714f 138 readings[0] = (int)buffer[1] << 8 | (int)buffer[0];
peterswanson87 0:d0adb548714f 139 readings[1] = (int)buffer[3] << 8 | (int)buffer[2];
peterswanson87 0:d0adb548714f 140 readings[2] = (int)buffer[5] << 8 | (int)buffer[4];
peterswanson87 0:d0adb548714f 141
peterswanson87 0:d0adb548714f 142 }
peterswanson87 0:d0adb548714f 143
peterswanson87 0:d0adb548714f 144
RobotManYt 3:b4f3f0b17f41 145 void ADXL345_I2C::LCDprint(float X, float Y, float Z){
RobotManYt 3:b4f3f0b17f41 146 // X
RobotManYt 3:b4f3f0b17f41 147 stringstream ss;
RobotManYt 3:b4f3f0b17f41 148 ss << X;
RobotManYt 3:b4f3f0b17f41 149 string x = "X : " + ss.str();
RobotManYt 3:b4f3f0b17f41 150 uint8_t length = x.size();
RobotManYt 3:b4f3f0b17f41 151 char dataX[length + 2];
RobotManYt 3:b4f3f0b17f41 152 dataX[0] = LCD_CURSOR;
RobotManYt 3:b4f3f0b17f41 153 dataX[1] = 0;
RobotManYt 3:b4f3f0b17f41 154 for(uint8_t pop = 0; pop < length; pop++){
RobotManYt 3:b4f3f0b17f41 155 dataX[pop + 2] = x[pop];
RobotManYt 3:b4f3f0b17f41 156 }
RobotManYt 3:b4f3f0b17f41 157 i2c_.write(LCD, dataX, length);
RobotManYt 3:b4f3f0b17f41 158
RobotManYt 3:b4f3f0b17f41 159 // Y
RobotManYt 3:b4f3f0b17f41 160 ss << Y;
RobotManYt 3:b4f3f0b17f41 161 string y = "Y : " + ss.str();
RobotManYt 3:b4f3f0b17f41 162 length = y.size();
RobotManYt 3:b4f3f0b17f41 163 char dataY[length + 2];
RobotManYt 3:b4f3f0b17f41 164 dataY[0] = LCD_CURSOR;
RobotManYt 3:b4f3f0b17f41 165 dataY[1] = 0x40;
RobotManYt 3:b4f3f0b17f41 166 for(uint8_t pop = 0; pop < length; pop++){
RobotManYt 3:b4f3f0b17f41 167 dataY[pop + 2] = y[pop];
RobotManYt 3:b4f3f0b17f41 168 }
RobotManYt 3:b4f3f0b17f41 169 i2c_.write(LCD, dataY, length);
RobotManYt 3:b4f3f0b17f41 170
RobotManYt 3:b4f3f0b17f41 171 // Z
RobotManYt 3:b4f3f0b17f41 172 ss << Z;
RobotManYt 3:b4f3f0b17f41 173 string z = "z : " + ss.str();
RobotManYt 3:b4f3f0b17f41 174 length = z.size();
RobotManYt 3:b4f3f0b17f41 175 char dataZ[length + 2];
RobotManYt 3:b4f3f0b17f41 176 dataZ[0] = LCD_CURSOR;
RobotManYt 3:b4f3f0b17f41 177 dataZ[1] = 0x14;
RobotManYt 3:b4f3f0b17f41 178 for(uint8_t pop = 0; pop < length; pop++){
RobotManYt 3:b4f3f0b17f41 179 dataZ[pop + 2] = z[pop];
RobotManYt 3:b4f3f0b17f41 180 }
RobotManYt 3:b4f3f0b17f41 181 i2c_.write(LCD, dataZ, length);
RobotManYt 3:b4f3f0b17f41 182 }
RobotManYt 3:b4f3f0b17f41 183
peterswanson87 0:d0adb548714f 184
peterswanson87 0:d0adb548714f 185 char ADXL345_I2C::getDeviceID() {
peterswanson87 0:d0adb548714f 186 return SingleByteRead(ADXL345_DEVID_REG);
peterswanson87 0:d0adb548714f 187 }
peterswanson87 0:d0adb548714f 188 //
peterswanson87 0:d0adb548714f 189 int ADXL345_I2C::setPowerMode(char mode) {
peterswanson87 0:d0adb548714f 190
peterswanson87 0:d0adb548714f 191 //Get the current register contents, so we don't clobber the rate value.
peterswanson87 0:d0adb548714f 192 char registerContents = (mode << 4) | SingleByteRead(ADXL345_BW_RATE_REG);
peterswanson87 0:d0adb548714f 193
peterswanson87 0:d0adb548714f 194 return SingleByteWrite(ADXL345_BW_RATE_REG, registerContents);
peterswanson87 0:d0adb548714f 195
peterswanson87 0:d0adb548714f 196 }
peterswanson87 0:d0adb548714f 197
peterswanson87 0:d0adb548714f 198 char ADXL345_I2C::getPowerControl() {
peterswanson87 0:d0adb548714f 199 return SingleByteRead(ADXL345_POWER_CTL_REG);
peterswanson87 0:d0adb548714f 200 }
peterswanson87 0:d0adb548714f 201
peterswanson87 0:d0adb548714f 202 int ADXL345_I2C::setPowerControl(char settings) {
peterswanson87 0:d0adb548714f 203 return SingleByteWrite(ADXL345_POWER_CTL_REG, settings);
peterswanson87 0:d0adb548714f 204
peterswanson87 0:d0adb548714f 205 }
peterswanson87 0:d0adb548714f 206
peterswanson87 0:d0adb548714f 207
peterswanson87 0:d0adb548714f 208
peterswanson87 0:d0adb548714f 209 char ADXL345_I2C::getDataFormatControl(void){
peterswanson87 0:d0adb548714f 210
peterswanson87 0:d0adb548714f 211 return SingleByteRead(ADXL345_DATA_FORMAT_REG);
peterswanson87 0:d0adb548714f 212 }
peterswanson87 0:d0adb548714f 213
peterswanson87 0:d0adb548714f 214 int ADXL345_I2C::setDataFormatControl(char settings){
peterswanson87 0:d0adb548714f 215
peterswanson87 0:d0adb548714f 216 return SingleByteWrite(ADXL345_DATA_FORMAT_REG, settings);
peterswanson87 0:d0adb548714f 217
peterswanson87 0:d0adb548714f 218 }
peterswanson87 0:d0adb548714f 219
peterswanson87 0:d0adb548714f 220 int ADXL345_I2C::setDataRate(char rate) {
peterswanson87 0:d0adb548714f 221
peterswanson87 0:d0adb548714f 222 //Get the current register contents, so we don't clobber the power bit.
peterswanson87 0:d0adb548714f 223 char registerContents = SingleByteRead(ADXL345_BW_RATE_REG);
peterswanson87 0:d0adb548714f 224
peterswanson87 0:d0adb548714f 225 registerContents &= 0x10;
peterswanson87 0:d0adb548714f 226 registerContents |= rate;
peterswanson87 0:d0adb548714f 227
peterswanson87 0:d0adb548714f 228 return SingleByteWrite(ADXL345_BW_RATE_REG, registerContents);
peterswanson87 0:d0adb548714f 229
peterswanson87 0:d0adb548714f 230 }
peterswanson87 0:d0adb548714f 231
peterswanson87 0:d0adb548714f 232
peterswanson87 0:d0adb548714f 233 char ADXL345_I2C::getOffset(char axis) {
peterswanson87 0:d0adb548714f 234
peterswanson87 0:d0adb548714f 235 char address = 0;
peterswanson87 0:d0adb548714f 236
peterswanson87 0:d0adb548714f 237 if (axis == ADXL345_X) {
peterswanson87 0:d0adb548714f 238 address = ADXL345_OFSX_REG;
peterswanson87 0:d0adb548714f 239 } else if (axis == ADXL345_Y) {
peterswanson87 0:d0adb548714f 240 address = ADXL345_OFSY_REG;
peterswanson87 0:d0adb548714f 241 } else if (axis == ADXL345_Z) {
peterswanson87 0:d0adb548714f 242 address = ADXL345_OFSZ_REG;
peterswanson87 0:d0adb548714f 243 }
peterswanson87 0:d0adb548714f 244
peterswanson87 0:d0adb548714f 245 return SingleByteRead(address);
peterswanson87 0:d0adb548714f 246 }
peterswanson87 0:d0adb548714f 247
peterswanson87 0:d0adb548714f 248 int ADXL345_I2C::setOffset(char axis, char offset) {
peterswanson87 0:d0adb548714f 249
peterswanson87 0:d0adb548714f 250 char address = 0;
peterswanson87 0:d0adb548714f 251
peterswanson87 0:d0adb548714f 252 if (axis == ADXL345_X) {
peterswanson87 0:d0adb548714f 253 address = ADXL345_OFSX_REG;
peterswanson87 0:d0adb548714f 254 } else if (axis == ADXL345_Y) {
peterswanson87 0:d0adb548714f 255 address = ADXL345_OFSY_REG;
peterswanson87 0:d0adb548714f 256 } else if (axis == ADXL345_Z) {
peterswanson87 0:d0adb548714f 257 address = ADXL345_OFSZ_REG;
peterswanson87 0:d0adb548714f 258 }
peterswanson87 0:d0adb548714f 259
peterswanson87 0:d0adb548714f 260 return SingleByteWrite(address, offset);
peterswanson87 0:d0adb548714f 261
peterswanson87 0:d0adb548714f 262 }
peterswanson87 0:d0adb548714f 263
peterswanson87 0:d0adb548714f 264
peterswanson87 0:d0adb548714f 265 char ADXL345_I2C::getFifoControl(void){
peterswanson87 0:d0adb548714f 266
peterswanson87 0:d0adb548714f 267 return SingleByteRead(ADXL345_FIFO_CTL);
peterswanson87 0:d0adb548714f 268
peterswanson87 0:d0adb548714f 269 }
peterswanson87 0:d0adb548714f 270
peterswanson87 0:d0adb548714f 271 int ADXL345_I2C::setFifoControl(char settings){
peterswanson87 0:d0adb548714f 272 return SingleByteWrite(ADXL345_FIFO_STATUS, settings);
peterswanson87 0:d0adb548714f 273
peterswanson87 0:d0adb548714f 274 }
peterswanson87 0:d0adb548714f 275
peterswanson87 0:d0adb548714f 276 char ADXL345_I2C::getFifoStatus(void){
peterswanson87 0:d0adb548714f 277
peterswanson87 0:d0adb548714f 278 return SingleByteRead(ADXL345_FIFO_STATUS);
peterswanson87 0:d0adb548714f 279
peterswanson87 0:d0adb548714f 280 }
peterswanson87 0:d0adb548714f 281
peterswanson87 0:d0adb548714f 282
peterswanson87 0:d0adb548714f 283
peterswanson87 0:d0adb548714f 284 char ADXL345_I2C::getTapThreshold(void) {
peterswanson87 0:d0adb548714f 285
peterswanson87 0:d0adb548714f 286 return SingleByteRead(ADXL345_THRESH_TAP_REG);
peterswanson87 0:d0adb548714f 287 }
peterswanson87 0:d0adb548714f 288
peterswanson87 0:d0adb548714f 289 int ADXL345_I2C::setTapThreshold(char threshold) {
peterswanson87 0:d0adb548714f 290
peterswanson87 0:d0adb548714f 291 return SingleByteWrite(ADXL345_THRESH_TAP_REG, threshold);
peterswanson87 0:d0adb548714f 292
peterswanson87 0:d0adb548714f 293 }
peterswanson87 0:d0adb548714f 294
peterswanson87 0:d0adb548714f 295
peterswanson87 0:d0adb548714f 296 float ADXL345_I2C::getTapDuration(void) {
peterswanson87 0:d0adb548714f 297
peterswanson87 0:d0adb548714f 298 return (float)SingleByteRead(ADXL345_DUR_REG)*625;
peterswanson87 0:d0adb548714f 299 }
peterswanson87 0:d0adb548714f 300
peterswanson87 0:d0adb548714f 301 int ADXL345_I2C::setTapDuration(short int duration_us) {
peterswanson87 0:d0adb548714f 302
peterswanson87 0:d0adb548714f 303 short int tapDuration = duration_us / 625;
peterswanson87 0:d0adb548714f 304 char tapChar[2];
peterswanson87 0:d0adb548714f 305 tapChar[0] = (tapDuration & 0x00FF);
peterswanson87 0:d0adb548714f 306 tapChar[1] = (tapDuration >> 8) & 0x00FF;
peterswanson87 0:d0adb548714f 307 return multiByteWrite(ADXL345_DUR_REG, tapChar, 2);
peterswanson87 0:d0adb548714f 308
peterswanson87 0:d0adb548714f 309 }
peterswanson87 0:d0adb548714f 310
peterswanson87 0:d0adb548714f 311 float ADXL345_I2C::getTapLatency(void) {
peterswanson87 0:d0adb548714f 312
peterswanson87 0:d0adb548714f 313 return (float)SingleByteRead(ADXL345_LATENT_REG)*1.25;
peterswanson87 0:d0adb548714f 314 }
peterswanson87 0:d0adb548714f 315
peterswanson87 0:d0adb548714f 316 int ADXL345_I2C::setTapLatency(short int latency_ms) {
peterswanson87 0:d0adb548714f 317
peterswanson87 0:d0adb548714f 318 latency_ms = latency_ms / 1.25;
peterswanson87 0:d0adb548714f 319 char latChar[2];
peterswanson87 0:d0adb548714f 320 latChar[0] = (latency_ms & 0x00FF);
peterswanson87 0:d0adb548714f 321 latChar[1] = (latency_ms << 8) & 0xFF00;
peterswanson87 0:d0adb548714f 322 return multiByteWrite(ADXL345_LATENT_REG, latChar, 2);
peterswanson87 0:d0adb548714f 323
peterswanson87 0:d0adb548714f 324 }
peterswanson87 0:d0adb548714f 325
peterswanson87 0:d0adb548714f 326 float ADXL345_I2C::getWindowTime(void) {
peterswanson87 0:d0adb548714f 327
peterswanson87 0:d0adb548714f 328 return (float)SingleByteRead(ADXL345_WINDOW_REG)*1.25;
peterswanson87 0:d0adb548714f 329 }
peterswanson87 0:d0adb548714f 330
peterswanson87 0:d0adb548714f 331 int ADXL345_I2C::setWindowTime(short int window_ms) {
peterswanson87 0:d0adb548714f 332
peterswanson87 0:d0adb548714f 333 window_ms = window_ms / 1.25;
peterswanson87 0:d0adb548714f 334 char windowChar[2];
peterswanson87 0:d0adb548714f 335 windowChar[0] = (window_ms & 0x00FF);
peterswanson87 0:d0adb548714f 336 windowChar[1] = ((window_ms << 8) & 0xFF00);
peterswanson87 0:d0adb548714f 337 return multiByteWrite(ADXL345_WINDOW_REG, windowChar, 2);
peterswanson87 0:d0adb548714f 338
peterswanson87 0:d0adb548714f 339 }
peterswanson87 0:d0adb548714f 340
peterswanson87 0:d0adb548714f 341 char ADXL345_I2C::getActivityThreshold(void) {
peterswanson87 0:d0adb548714f 342
peterswanson87 0:d0adb548714f 343 return SingleByteRead(ADXL345_THRESH_ACT_REG);
peterswanson87 0:d0adb548714f 344 }
peterswanson87 0:d0adb548714f 345
peterswanson87 0:d0adb548714f 346 int ADXL345_I2C::setActivityThreshold(char threshold) {
peterswanson87 0:d0adb548714f 347 return SingleByteWrite(ADXL345_THRESH_ACT_REG, threshold);
peterswanson87 0:d0adb548714f 348
peterswanson87 0:d0adb548714f 349 }
peterswanson87 0:d0adb548714f 350
peterswanson87 0:d0adb548714f 351 char ADXL345_I2C::getInactivityThreshold(void) {
peterswanson87 0:d0adb548714f 352 return SingleByteRead(ADXL345_THRESH_INACT_REG);
peterswanson87 0:d0adb548714f 353
peterswanson87 0:d0adb548714f 354 }
peterswanson87 0:d0adb548714f 355
peterswanson87 0:d0adb548714f 356 //int FUNCTION(short int * ptr_Output)
peterswanson87 0:d0adb548714f 357 //short int FUNCTION ()
peterswanson87 0:d0adb548714f 358
peterswanson87 0:d0adb548714f 359 int ADXL345_I2C::setInactivityThreshold(char threshold) {
peterswanson87 0:d0adb548714f 360 return SingleByteWrite(ADXL345_THRESH_INACT_REG, threshold);
peterswanson87 0:d0adb548714f 361
peterswanson87 0:d0adb548714f 362 }
peterswanson87 0:d0adb548714f 363
peterswanson87 0:d0adb548714f 364 char ADXL345_I2C::getTimeInactivity(void) {
peterswanson87 0:d0adb548714f 365
peterswanson87 0:d0adb548714f 366 return SingleByteRead(ADXL345_TIME_INACT_REG);
peterswanson87 0:d0adb548714f 367
peterswanson87 0:d0adb548714f 368 }
peterswanson87 0:d0adb548714f 369
peterswanson87 0:d0adb548714f 370 int ADXL345_I2C::setTimeInactivity(char timeInactivity) {
peterswanson87 0:d0adb548714f 371 return SingleByteWrite(ADXL345_TIME_INACT_REG, timeInactivity);
peterswanson87 0:d0adb548714f 372
peterswanson87 0:d0adb548714f 373 }
peterswanson87 0:d0adb548714f 374
peterswanson87 0:d0adb548714f 375 char ADXL345_I2C::getActivityInactivityControl(void) {
peterswanson87 0:d0adb548714f 376
peterswanson87 0:d0adb548714f 377 return SingleByteRead(ADXL345_ACT_INACT_CTL_REG);
peterswanson87 0:d0adb548714f 378
peterswanson87 0:d0adb548714f 379 }
peterswanson87 0:d0adb548714f 380
peterswanson87 0:d0adb548714f 381 int ADXL345_I2C::setActivityInactivityControl(char settings) {
peterswanson87 0:d0adb548714f 382 return SingleByteWrite(ADXL345_ACT_INACT_CTL_REG, settings);
peterswanson87 0:d0adb548714f 383
peterswanson87 0:d0adb548714f 384 }
peterswanson87 0:d0adb548714f 385
peterswanson87 0:d0adb548714f 386 char ADXL345_I2C::getFreefallThreshold(void) {
peterswanson87 0:d0adb548714f 387
peterswanson87 0:d0adb548714f 388 return SingleByteRead(ADXL345_THRESH_FF_REG);
peterswanson87 0:d0adb548714f 389
peterswanson87 0:d0adb548714f 390 }
peterswanson87 0:d0adb548714f 391
peterswanson87 0:d0adb548714f 392 int ADXL345_I2C::setFreefallThreshold(char threshold) {
peterswanson87 0:d0adb548714f 393 return SingleByteWrite(ADXL345_THRESH_FF_REG, threshold);
peterswanson87 0:d0adb548714f 394
peterswanson87 0:d0adb548714f 395 }
peterswanson87 0:d0adb548714f 396
peterswanson87 0:d0adb548714f 397 char ADXL345_I2C::getFreefallTime(void) {
peterswanson87 0:d0adb548714f 398
peterswanson87 0:d0adb548714f 399 return SingleByteRead(ADXL345_TIME_FF_REG)*5;
peterswanson87 0:d0adb548714f 400
peterswanson87 0:d0adb548714f 401 }
peterswanson87 0:d0adb548714f 402
peterswanson87 0:d0adb548714f 403 int ADXL345_I2C::setFreefallTime(short int freefallTime_ms) {
peterswanson87 0:d0adb548714f 404 freefallTime_ms = freefallTime_ms / 5;
peterswanson87 0:d0adb548714f 405 char fallChar[2];
peterswanson87 0:d0adb548714f 406 fallChar[0] = (freefallTime_ms & 0x00FF);
peterswanson87 0:d0adb548714f 407 fallChar[1] = (freefallTime_ms << 8) & 0xFF00;
peterswanson87 0:d0adb548714f 408
peterswanson87 0:d0adb548714f 409 return multiByteWrite(ADXL345_TIME_FF_REG, fallChar, 2);
peterswanson87 0:d0adb548714f 410
peterswanson87 0:d0adb548714f 411 }
peterswanson87 0:d0adb548714f 412
peterswanson87 0:d0adb548714f 413 char ADXL345_I2C::getTapAxisControl(void) {
peterswanson87 0:d0adb548714f 414
peterswanson87 0:d0adb548714f 415 return SingleByteRead(ADXL345_TAP_AXES_REG);
peterswanson87 0:d0adb548714f 416
peterswanson87 0:d0adb548714f 417 }
peterswanson87 0:d0adb548714f 418
peterswanson87 0:d0adb548714f 419 int ADXL345_I2C::setTapAxisControl(char settings) {
peterswanson87 0:d0adb548714f 420 return SingleByteWrite(ADXL345_TAP_AXES_REG, settings);
peterswanson87 0:d0adb548714f 421
peterswanson87 0:d0adb548714f 422 }
peterswanson87 0:d0adb548714f 423
peterswanson87 0:d0adb548714f 424 char ADXL345_I2C::getTapSource(void) {
peterswanson87 0:d0adb548714f 425
peterswanson87 0:d0adb548714f 426 return SingleByteRead(ADXL345_ACT_TAP_STATUS_REG);
peterswanson87 0:d0adb548714f 427
peterswanson87 0:d0adb548714f 428 }
peterswanson87 0:d0adb548714f 429
peterswanson87 0:d0adb548714f 430
peterswanson87 0:d0adb548714f 431
peterswanson87 0:d0adb548714f 432 char ADXL345_I2C::getInterruptEnableControl(void) {
peterswanson87 0:d0adb548714f 433
peterswanson87 0:d0adb548714f 434 return SingleByteRead(ADXL345_INT_ENABLE_REG);
peterswanson87 0:d0adb548714f 435
peterswanson87 0:d0adb548714f 436 }
peterswanson87 0:d0adb548714f 437
peterswanson87 0:d0adb548714f 438 int ADXL345_I2C::setInterruptEnableControl(char settings) {
peterswanson87 0:d0adb548714f 439 return SingleByteWrite(ADXL345_INT_ENABLE_REG, settings);
peterswanson87 0:d0adb548714f 440
peterswanson87 0:d0adb548714f 441 }
peterswanson87 0:d0adb548714f 442
peterswanson87 0:d0adb548714f 443 char ADXL345_I2C::getInterruptMappingControl(void) {
peterswanson87 0:d0adb548714f 444
peterswanson87 0:d0adb548714f 445 return SingleByteRead(ADXL345_INT_MAP_REG);
peterswanson87 0:d0adb548714f 446
peterswanson87 0:d0adb548714f 447 }
peterswanson87 0:d0adb548714f 448
peterswanson87 0:d0adb548714f 449 int ADXL345_I2C::setInterruptMappingControl(char settings) {
peterswanson87 0:d0adb548714f 450 return SingleByteWrite(ADXL345_INT_MAP_REG, settings);
peterswanson87 0:d0adb548714f 451
peterswanson87 0:d0adb548714f 452 }
peterswanson87 0:d0adb548714f 453
peterswanson87 0:d0adb548714f 454 char ADXL345_I2C::getInterruptSource(void){
peterswanson87 0:d0adb548714f 455
peterswanson87 0:d0adb548714f 456 return SingleByteRead(ADXL345_INT_SOURCE_REG);
peterswanson87 0:d0adb548714f 457
peterswanson87 0:d0adb548714f 458 }
peterswanson87 0:d0adb548714f 459
peterswanson87 0:d0adb548714f 460
peterswanson87 0:d0adb548714f 461
peterswanson87 0:d0adb548714f 462