My fully self designed first stable working Quadrocopter Software.

Dependencies:   mbed

Dependents:   fluy343

/media/uploads/maetugr/dsc09031.jpg

Committer:
maetugr
Date:
Mon Aug 31 20:20:50 2015 +0000
Revision:
10:14390c90c3f5
Parent:
4:b0a60b0b24a9
before changing to MPU9250

Who changed what in which revision?

UserRevisionLine numberNew contents of line
maetugr 0:12950aa67f2a 1 // based on http://mbed.org/users/Digixx/code/ADXL345/
maetugr 0:12950aa67f2a 2
maetugr 0:12950aa67f2a 3 #ifndef ADXL345_H
maetugr 0:12950aa67f2a 4 #define ADXL345_H
maetugr 0:12950aa67f2a 5
maetugr 0:12950aa67f2a 6 #include "mbed.h"
maetugr 0:12950aa67f2a 7 #include "I2C_Sensor.h"
maetugr 0:12950aa67f2a 8
maetugr 0:12950aa67f2a 9 #define ADXL345_I2C_ADDRESS 0xA6
maetugr 0:12950aa67f2a 10 //the ADXL345 7-bit address is 0x53 when ALT ADDRESS is low as it is on the sparkfun chip: when ALT ADDRESS is high the address is 0x1D
maetugr 0:12950aa67f2a 11 //when ALT ADDRESS pin is high:
maetugr 0:12950aa67f2a 12 //#define ADXL345_I2C_ADDRESS 0x3A
maetugr 0:12950aa67f2a 13
maetugr 0:12950aa67f2a 14 // register addresses
maetugr 0:12950aa67f2a 15 #define ADXL345_DEVID_REG 0x00
maetugr 0:12950aa67f2a 16 #define ADXL345_THRESH_TAP_REG 0x1D
maetugr 0:12950aa67f2a 17 #define ADXL345_OFSX_REG 0x1E
maetugr 0:12950aa67f2a 18 #define ADXL345_OFSY_REG 0x1F
maetugr 0:12950aa67f2a 19 #define ADXL345_OFSZ_REG 0x20
maetugr 0:12950aa67f2a 20 #define ADXL345_DUR_REG 0x21
maetugr 0:12950aa67f2a 21 #define ADXL345_LATENT_REG 0x22
maetugr 0:12950aa67f2a 22 #define ADXL345_WINDOW_REG 0x23
maetugr 0:12950aa67f2a 23 #define ADXL345_THRESH_ACT_REG 0x24
maetugr 0:12950aa67f2a 24 #define ADXL345_THRESH_INACT_REG 0x25
maetugr 0:12950aa67f2a 25 #define ADXL345_TIME_INACT_REG 0x26
maetugr 0:12950aa67f2a 26 #define ADXL345_ACT_INACT_CTL_REG 0x27
maetugr 0:12950aa67f2a 27 #define ADXL345_THRESH_FF_REG 0x28
maetugr 0:12950aa67f2a 28 #define ADXL345_TIME_FF_REG 0x29
maetugr 0:12950aa67f2a 29 #define ADXL345_TAP_AXES_REG 0x2A
maetugr 0:12950aa67f2a 30 #define ADXL345_ACT_TAP_STATUS_REG 0x2B
maetugr 0:12950aa67f2a 31 #define ADXL345_BW_RATE_REG 0x2C
maetugr 0:12950aa67f2a 32 #define ADXL345_POWER_CTL_REG 0x2D
maetugr 0:12950aa67f2a 33 #define ADXL345_INT_ENABLE_REG 0x2E
maetugr 0:12950aa67f2a 34 #define ADXL345_INT_MAP_REG 0x2F
maetugr 0:12950aa67f2a 35 #define ADXL345_INT_SOURCE_REG 0x30
maetugr 0:12950aa67f2a 36 #define ADXL345_DATA_FORMAT_REG 0x31
maetugr 0:12950aa67f2a 37 #define ADXL345_DATAX0_REG 0x32
maetugr 0:12950aa67f2a 38 #define ADXL345_DATAX1_REG 0x33
maetugr 0:12950aa67f2a 39 #define ADXL345_DATAY0_REG 0x34
maetugr 0:12950aa67f2a 40 #define ADXL345_DATAY1_REG 0x35
maetugr 0:12950aa67f2a 41 #define ADXL345_DATAZ0_REG 0x36
maetugr 0:12950aa67f2a 42 #define ADXL345_DATAZ1_REG 0x37
maetugr 0:12950aa67f2a 43 #define ADXL345_FIFO_CTL 0x38
maetugr 0:12950aa67f2a 44 #define ADXL345_FIFO_STATUS 0x39
maetugr 0:12950aa67f2a 45
maetugr 0:12950aa67f2a 46 #define ADXL345_X 0x00
maetugr 0:12950aa67f2a 47 #define ADXL345_Y 0x01
maetugr 0:12950aa67f2a 48 #define ADXL345_Z 0x02
maetugr 0:12950aa67f2a 49
maetugr 0:12950aa67f2a 50 typedef char byte;
maetugr 0:12950aa67f2a 51
maetugr 0:12950aa67f2a 52 class ADXL345 : public I2C_Sensor
maetugr 0:12950aa67f2a 53 {
maetugr 0:12950aa67f2a 54 public:
maetugr 0:12950aa67f2a 55 ADXL345(PinName sda, PinName scl); // constructor, uses I2C_Sensor class
maetugr 4:b0a60b0b24a9 56 void read(); // read all axis to array
maetugr 0:12950aa67f2a 57
maetugr 0:12950aa67f2a 58 float offset[3]; // offset that's subtracted from every measurement
maetugr 0:12950aa67f2a 59 void calibrate(int times, float separation_time); // calibration from 'times' measurements with 'separation_time' time between (get an offset while not moving)
maetugr 0:12950aa67f2a 60
maetugr 0:12950aa67f2a 61 private:
maetugr 4:b0a60b0b24a9 62 void readraw();
maetugr 0:12950aa67f2a 63 };
maetugr 0:12950aa67f2a 64
maetugr 0:12950aa67f2a 65 #endif