some correction to work nice

Dependents:   Minimu-9v2

Fork of L3GD20 by brian claus

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?

UserRevisionLine numberNew 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