NOT FINISHED YET!!! My first try to get a self built fully working Quadrocopter based on an mbed, a self built frame and some other more or less cheap parts.

Dependencies:   mbed MODI2C

Revision:
17:e096e85f6c36
Parent:
11:9bf69bc6df45
Child:
18:c8c09a3913ba
diff -r 74a6531350b5 -r e096e85f6c36 Sensors/Acc/ADXL345.h
--- a/Sensors/Acc/ADXL345.h	Wed Oct 31 14:44:07 2012 +0000
+++ b/Sensors/Acc/ADXL345.h	Wed Oct 31 16:53:01 2012 +0000
@@ -4,38 +4,45 @@
 #define ADXL345_H
 
 #include "mbed.h"
+#include "I2C_Sensor.h"
+
+#define ADXL345_I2C_ADDRESS        0
+// read or write bytes
+//#define ADXL345_READ    0xA7  
+//#define ADXL345_WRITE   0xA6 
+//#define ADXL345_ADDRESS 0x53
 
 // register addresses
-#define ADXL345_DEVID_REG          0x00
-#define ADXL345_THRESH_TAP_REG     0x1D
-#define ADXL345_OFSX_REG           0x1E
-#define ADXL345_OFSY_REG           0x1F
-#define ADXL345_OFSZ_REG           0x20
-#define ADXL345_DUR_REG            0x21
-#define ADXL345_LATENT_REG         0x22
-#define ADXL345_WINDOW_REG         0x23
-#define ADXL345_THRESH_ACT_REG     0x24
-#define ADXL345_THRESH_INACT_REG   0x25
-#define ADXL345_TIME_INACT_REG     0x26
-#define ADXL345_ACT_INACT_CTL_REG  0x27
-#define ADXL345_THRESH_FF_REG      0x28
-#define ADXL345_TIME_FF_REG        0x29
-#define ADXL345_TAP_AXES_REG       0x2A
-#define ADXL345_ACT_TAP_STATUS_REG 0x2B
-#define ADXL345_BW_RATE_REG        0x2C
-#define ADXL345_POWER_CTL_REG      0x2D
-#define ADXL345_INT_ENABLE_REG     0x2E
-#define ADXL345_INT_MAP_REG        0x2F
-#define ADXL345_INT_SOURCE_REG     0x30
-#define ADXL345_DATA_FORMAT_REG    0x31
-#define ADXL345_DATAX0_REG         0x32
-#define ADXL345_DATAX1_REG         0x33
-#define ADXL345_DATAY0_REG         0x34
-#define ADXL345_DATAY1_REG         0x35
-#define ADXL345_DATAZ0_REG         0x36
-#define ADXL345_DATAZ1_REG         0x37
-#define ADXL345_FIFO_CTL           0x38
-#define ADXL345_FIFO_STATUS        0x39
+#define ADXL345_DEVID_REG           0x00
+#define ADXL345_THRESH_TAP_REG      0x1D
+#define ADXL345_OFSX_REG            0x1E
+#define ADXL345_OFSY_REG            0x1F
+#define ADXL345_OFSZ_REG            0x20
+#define ADXL345_DUR_REG             0x21
+#define ADXL345_LATENT_REG          0x22
+#define ADXL345_WINDOW_REG          0x23
+#define ADXL345_THRESH_ACT_REG      0x24
+#define ADXL345_THRESH_INACT_REG    0x25
+#define ADXL345_TIME_INACT_REG      0x26
+#define ADXL345_ACT_INACT_CTL_REG   0x27
+#define ADXL345_THRESH_FF_REG       0x28
+#define ADXL345_TIME_FF_REG         0x29
+#define ADXL345_TAP_AXES_REG        0x2A
+#define ADXL345_ACT_TAP_STATUS_REG  0x2B
+#define ADXL345_BW_RATE_REG         0x2C
+#define ADXL345_POWER_CTL_REG       0x2D
+#define ADXL345_INT_ENABLE_REG      0x2E
+#define ADXL345_INT_MAP_REG         0x2F
+#define ADXL345_INT_SOURCE_REG      0x30
+#define ADXL345_DATA_FORMAT_REG     0x31
+#define ADXL345_DATAX0_REG          0x32
+#define ADXL345_DATAX1_REG          0x33
+#define ADXL345_DATAY0_REG          0x34
+#define ADXL345_DATAY1_REG          0x35
+#define ADXL345_DATAZ0_REG          0x36
+#define ADXL345_DATAZ1_REG          0x37
+#define ADXL345_FIFO_CTL            0x38
+#define ADXL345_FIFO_STATUS         0x39
 
 // data rate codes
 #define ADXL345_3200HZ      0x0F
@@ -49,11 +56,6 @@
 #define ADXL345_12HZ5       0x07
 #define ADXL345_6HZ25       0x06
 
-// read or write bytes
-#define ADXL345_READ    0xA7  
-#define ADXL345_WRITE   0xA6 
-#define ADXL345_ADDRESS 0x53
-
 //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
 //when ALT ADDRESS pin is high:
 //#define ADXL345_READ    0x3B   
@@ -64,24 +66,18 @@
 #define ADXL345_Y           0x01
 #define ADXL345_Z           0x02
 
-#define Rad2Deg         57.295779513082320876798154814105
+#define RAD2DEG         57.295779513082320876798154814105
 
-typedef char byte;
-
-class ADXL345
+class ADXL345 : public I2C_Sensor
 {
     public:
-        ADXL345(PinName sda, PinName scl); // constructor, uses i2c
-        void read(); // read all axis to array
-        int data[3]; // where the measured data is saved
-        float angle[3]; // where the calculated angles are stored
+        ADXL345(PinName sda, PinName scl);  // constructor, uses I2C_Sensor
+        void read();                        // reads all axis to array
+        int data[3];                        // where the measured data is saved
+        float angle[3];                     // where the calculated angles are stored
        
     private:
-        I2C i2c; // i2c object to communicate
-        void writeReg(byte reg, byte value); // write one single register to sensor
-        byte readReg(byte reg); // read one single register from sensor
-        void readMultiReg(char startAddress, char* ptr_output, int size); // read multiple regs
-        void setDataRate(char rate); // data rate configuration (not only a reg to write)
+        void setDataRate(char rate);        // data rate configuration (not only a reg to write)
 };
 
 #endif