some correction to work nice
Fork of L3GD20 by
L3GD20.h@2:90eddd0eff29, 2013-11-17 (annotated)
- Committer:
- patsteph
- Date:
- Sun Nov 17 17:59:04 2013 +0000
- Revision:
- 2:90eddd0eff29
- Parent:
- 0:62dfce144cf7
mbed working with arduino program
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
bclaus | 0:62dfce144cf7 | 1 | #ifndef __L3GD20_H |
bclaus | 0:62dfce144cf7 | 2 | #define __L3GD20_H |
bclaus | 0:62dfce144cf7 | 3 | |
bclaus | 0:62dfce144cf7 | 4 | #include "mbed.h" |
bclaus | 0:62dfce144cf7 | 5 | |
patsteph | 2:90eddd0eff29 | 6 | // Defines //////////////////////////////////////////////////////////////// |
patsteph | 2:90eddd0eff29 | 7 | |
patsteph | 2:90eddd0eff29 | 8 | // The Arduino two-wire interface uses a 7-bit number for the address, |
patsteph | 2:90eddd0eff29 | 9 | // and sets the last bit correctly based on reads and writes |
patsteph | 2:90eddd0eff29 | 10 | // mbed I2C libraries take the 7-bit address shifted left 1 bit |
patsteph | 2:90eddd0eff29 | 11 | // #define GYR_ADDRESS (0xD2 >> 1) |
patsteph | 2:90eddd0eff29 | 12 | #define GYR_ADDRESS 0xD6 |
patsteph | 2:90eddd0eff29 | 13 | |
bclaus | 0:62dfce144cf7 | 14 | // register addresses |
bclaus | 0:62dfce144cf7 | 15 | |
bclaus | 0:62dfce144cf7 | 16 | #define L3GD20_WHO_AM_I 0x0F |
bclaus | 0:62dfce144cf7 | 17 | |
bclaus | 0:62dfce144cf7 | 18 | #define L3GD20_CTRL_REG1 0x20 |
bclaus | 0:62dfce144cf7 | 19 | #define L3GD20_CTRL_REG2 0x21 |
bclaus | 0:62dfce144cf7 | 20 | #define L3GD20_CTRL_REG3 0x22 |
bclaus | 0:62dfce144cf7 | 21 | #define L3GD20_CTRL_REG4 0x23 |
bclaus | 0:62dfce144cf7 | 22 | #define L3GD20_CTRL_REG5 0x24 |
bclaus | 0:62dfce144cf7 | 23 | #define L3GD20_REFERENCE 0x25 |
bclaus | 0:62dfce144cf7 | 24 | #define L3GD20_OUT_TEMP 0x26 |
bclaus | 0:62dfce144cf7 | 25 | #define L3GD20_STATUS_REG 0x27 |
bclaus | 0:62dfce144cf7 | 26 | |
bclaus | 0:62dfce144cf7 | 27 | #define L3GD20_OUT_X_L 0x28 |
bclaus | 0:62dfce144cf7 | 28 | #define L3GD20_OUT_X_H 0x29 |
bclaus | 0:62dfce144cf7 | 29 | #define L3GD20_OUT_Y_L 0x2A |
bclaus | 0:62dfce144cf7 | 30 | #define L3GD20_OUT_Y_H 0x2B |
bclaus | 0:62dfce144cf7 | 31 | #define L3GD20_OUT_Z_L 0x2C |
bclaus | 0:62dfce144cf7 | 32 | #define L3GD20_OUT_Z_H 0x2D |
bclaus | 0:62dfce144cf7 | 33 | |
bclaus | 0:62dfce144cf7 | 34 | #define L3GD20_FIFO_CTRL_REG 0x2E |
bclaus | 0:62dfce144cf7 | 35 | #define L3GD20_FIFO_SRC_REG 0x2F |
bclaus | 0:62dfce144cf7 | 36 | |
bclaus | 0:62dfce144cf7 | 37 | #define L3GD20_INT1_CFG 0x30 |
bclaus | 0:62dfce144cf7 | 38 | #define L3GD20_INT1_SRC 0x31 |
bclaus | 0:62dfce144cf7 | 39 | #define L3GD20_INT1_THS_XH 0x32 |
bclaus | 0:62dfce144cf7 | 40 | #define L3GD20_INT1_THS_XL 0x33 |
bclaus | 0:62dfce144cf7 | 41 | #define L3GD20_INT1_THS_YH 0x34 |
bclaus | 0:62dfce144cf7 | 42 | #define L3GD20_INT1_THS_YL 0x35 |
bclaus | 0:62dfce144cf7 | 43 | #define L3GD20_INT1_THS_ZH 0x36 |
bclaus | 0:62dfce144cf7 | 44 | #define L3GD20_INT1_THS_ZL 0x37 |
bclaus | 0:62dfce144cf7 | 45 | #define L3GD20_INT1_DURATION 0x38 |
bclaus | 0:62dfce144cf7 | 46 | |
patsteph | 2:90eddd0eff29 | 47 | // device types |
patsteph | 2:90eddd0eff29 | 48 | |
patsteph | 2:90eddd0eff29 | 49 | #define L3G_DEVICE_AUTO 0 |
patsteph | 2:90eddd0eff29 | 50 | #define L3G4200D_DEVICE 1 |
patsteph | 2:90eddd0eff29 | 51 | #define L3GD20_DEVICE 2 |
patsteph | 2:90eddd0eff29 | 52 | |
patsteph | 2:90eddd0eff29 | 53 | // SA0 states |
patsteph | 2:90eddd0eff29 | 54 | |
patsteph | 2:90eddd0eff29 | 55 | #define L3G_SA0_LOW 0 |
patsteph | 2:90eddd0eff29 | 56 | #define L3G_SA0_HIGH 1 |
patsteph | 2:90eddd0eff29 | 57 | #define L3G_SA0_AUTO 2 |
patsteph | 2:90eddd0eff29 | 58 | |
bclaus | 0:62dfce144cf7 | 59 | /** Interface library for the ST L3GD20 3-axis gyro |
bclaus | 0:62dfce144cf7 | 60 | * |
bclaus | 0:62dfce144cf7 | 61 | * Ported from Pololu L3GD20 library for Arduino by |
bclaus | 0:62dfce144cf7 | 62 | * |
bclaus | 0:62dfce144cf7 | 63 | * @code |
bclaus | 0:62dfce144cf7 | 64 | * #include "mbed.h" |
bclaus | 0:62dfce144cf7 | 65 | * #include "L3GD20.h" |
bclaus | 0:62dfce144cf7 | 66 | * L3GD20 gyro(p28, p27); |
bclaus | 0:62dfce144cf7 | 67 | * ... |
bclaus | 0:62dfce144cf7 | 68 | * int g[3]; |
bclaus | 0:62dfce144cf7 | 69 | * gyro.read(g); |
bclaus | 0:62dfce144cf7 | 70 | * @endcode |
bclaus | 0:62dfce144cf7 | 71 | */ |
bclaus | 0:62dfce144cf7 | 72 | class L3GD20 |
bclaus | 0:62dfce144cf7 | 73 | { |
bclaus | 0:62dfce144cf7 | 74 | public: |
bclaus | 0:62dfce144cf7 | 75 | /** Create a new L3GD20 I2C interface |
bclaus | 0:62dfce144cf7 | 76 | * @param sda is the pin for the I2C SDA line |
bclaus | 0:62dfce144cf7 | 77 | * @param scl is the pin for the I2C SCL line |
bclaus | 0:62dfce144cf7 | 78 | */ |
bclaus | 0:62dfce144cf7 | 79 | L3GD20(PinName sda, PinName scl); |
bclaus | 0:62dfce144cf7 | 80 | |
bclaus | 0:62dfce144cf7 | 81 | /** Read gyro values |
bclaus | 0:62dfce144cf7 | 82 | * @param g Array containing x, y, and z gyro values |
bclaus | 0:62dfce144cf7 | 83 | * @return g Array containing x, y, and z gyro values |
bclaus | 0:62dfce144cf7 | 84 | */ |
bclaus | 0:62dfce144cf7 | 85 | bool read(float *gx, float *gy, float *gz); |
patsteph | 2:90eddd0eff29 | 86 | bool write_reg(int addr_i2c,int addr_reg, char v); |
bclaus | 0:62dfce144cf7 | 87 | |
bclaus | 0:62dfce144cf7 | 88 | private: |
bclaus | 0:62dfce144cf7 | 89 | I2C _L3GD20; |
bclaus | 0:62dfce144cf7 | 90 | float gx, gy, gz; |
bclaus | 0:62dfce144cf7 | 91 | |
patsteph | 2:90eddd0eff29 | 92 | |
bclaus | 0:62dfce144cf7 | 93 | bool read_reg(int addr_i2c,int addr_reg, char *v); |
bclaus | 0:62dfce144cf7 | 94 | bool recv(char sad, char sub, char *buf, int length); |
bclaus | 0:62dfce144cf7 | 95 | }; |
bclaus | 0:62dfce144cf7 | 96 | |
bclaus | 0:62dfce144cf7 | 97 | #endif |