Acceleration sensor used LIS3DH

Dependencies:   mbed

Committer:
tknara
Date:
Sat Jan 17 16:19:28 2015 +0000
Revision:
0:a1ef86f16233
Acceleration?sensor(LIS3DH)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tknara 0:a1ef86f16233 1 #include "mbed.h"
tknara 0:a1ef86f16233 2
tknara 0:a1ef86f16233 3 I2C i2c(p9,p10);
tknara 0:a1ef86f16233 4 Serial pc(USBTX,USBRX);
tknara 0:a1ef86f16233 5 DigitalOut led(LED1);
tknara 0:a1ef86f16233 6 // addr
tknara 0:a1ef86f16233 7 #define WRITE_ADDR 0x30
tknara 0:a1ef86f16233 8 #define READ_ADDR 0x31
tknara 0:a1ef86f16233 9 // LIS3DH ID
tknara 0:a1ef86f16233 10 #define I_AM_LIS3DH 0x33
tknara 0:a1ef86f16233 11
tknara 0:a1ef86f16233 12 // Register's definition
tknara 0:a1ef86f16233 13 #define LIS3DH_STATUS_REG_AUX 0x07
tknara 0:a1ef86f16233 14 #define LIS3DH_OUT_ADC1_L 0x08
tknara 0:a1ef86f16233 15 #define LIS3DH_OUT_ADC1_H 0x09
tknara 0:a1ef86f16233 16 #define LIS3DH_OUT_ADC2_L 0x0a
tknara 0:a1ef86f16233 17 #define LIS3DH_OUT_ADC2_H 0x0b
tknara 0:a1ef86f16233 18 #define LIS3DH_OUT_ADC3_L 0x0c
tknara 0:a1ef86f16233 19 #define LIS3DH_OUT_ADC3_H 0x0d
tknara 0:a1ef86f16233 20 #define LIS3DH_INT_COUNTER_REG 0x0e
tknara 0:a1ef86f16233 21 #define LIS3DH_WHO_AM_I 0x0f
tknara 0:a1ef86f16233 22 #define LIS3DH_TEMP_CFG_REG 0x1f
tknara 0:a1ef86f16233 23 #define LIS3DH_CTRL_REG1 0x20
tknara 0:a1ef86f16233 24 #define LIS3DH_CTRL_REG2 0x21
tknara 0:a1ef86f16233 25 #define LIS3DH_CTRL_REG3 0x22
tknara 0:a1ef86f16233 26 #define LIS3DH_CTRL_REG4 0x23
tknara 0:a1ef86f16233 27 #define LIS3DH_CTRL_REG5 0x24
tknara 0:a1ef86f16233 28 #define LIS3DH_CTRL_REG6 0x25
tknara 0:a1ef86f16233 29 #define LIS3DH_REFERENCE 0x26
tknara 0:a1ef86f16233 30 #define LIS3DH_STATUS_REG2 0x27
tknara 0:a1ef86f16233 31 #define LIS3DH_OUT_X_L 0x28
tknara 0:a1ef86f16233 32 #define LIS3DH_OUT_X_H 0x29
tknara 0:a1ef86f16233 33 #define LIS3DH_OUT_Y_L 0x2a
tknara 0:a1ef86f16233 34 #define LIS3DH_OUT_Y_H 0x2b
tknara 0:a1ef86f16233 35 #define LIS3DH_OUT_Z_L 0x2c
tknara 0:a1ef86f16233 36 #define LIS3DH_OUT_Z_H 0x2d
tknara 0:a1ef86f16233 37 #define LIS3DH_FIFO_CTRL_REG 0x2e
tknara 0:a1ef86f16233 38 #define LIS3DH_FIFO_SRC_REG 0x2f
tknara 0:a1ef86f16233 39 #define LIS3DH_INT1_CFG 0x30
tknara 0:a1ef86f16233 40 #define LIS3DH_INT1_SOURCE 0x31
tknara 0:a1ef86f16233 41 #define LIS3DH_INT1_THS 0x32
tknara 0:a1ef86f16233 42 #define LIS3DH_INT1_DURATION 0x33
tknara 0:a1ef86f16233 43 #define LIS3DH_CLICK_CFG 0x38
tknara 0:a1ef86f16233 44 #define LIS3DH_CLICK_SRC 0x39
tknara 0:a1ef86f16233 45 #define LIS3DH_CLICK_THS 0x3a
tknara 0:a1ef86f16233 46 #define LIS3DH_TIME_LIMIT 0x3b
tknara 0:a1ef86f16233 47 #define LIS3DH_TIME_LATENCY 0x3c
tknara 0:a1ef86f16233 48 #define LIS3DH_TIME_WINDOW 0x3d
tknara 0:a1ef86f16233 49
tknara 0:a1ef86f16233 50 // definition for Nomalization
tknara 0:a1ef86f16233 51 #define LIS3DH_SENSITIVITY_2G (0.001F)
tknara 0:a1ef86f16233 52 #define LIS3DH_SENSITIVITY_4G (0.002F)
tknara 0:a1ef86f16233 53 #define LIS3DH_SENSITIVITY_8G (0.004F)
tknara 0:a1ef86f16233 54 #define LIS3DH_SENSITIVITY_16G (0.012F)
tknara 0:a1ef86f16233 55
tknara 0:a1ef86f16233 56 int main() {
tknara 0:a1ef86f16233 57 char dbf[2],addr,data[6];
tknara 0:a1ef86f16233 58 float dt[3];
tknara 0:a1ef86f16233 59 addr = WRITE_ADDR;
tknara 0:a1ef86f16233 60 dbf[0] = LIS3DH_WHO_AM_I;
tknara 0:a1ef86f16233 61 i2c.write(addr, dbf, 1);
tknara 0:a1ef86f16233 62 i2c.read(addr | 1, dbf, 1);
tknara 0:a1ef86f16233 63 if(dbf[0] == I_AM_LIS3DH) {
tknara 0:a1ef86f16233 64 led = 1;//test led
tknara 0:a1ef86f16233 65
tknara 0:a1ef86f16233 66 while (1) {
tknara 0:a1ef86f16233 67 dbf[0] = LIS3DH_CTRL_REG1;
tknara 0:a1ef86f16233 68 dbf[1] = 0x7f;
tknara 0:a1ef86f16233 69 i2c.write(addr , dbf , 2);
tknara 0:a1ef86f16233 70 //======================================================//
tknara 0:a1ef86f16233 71 dbf[0] = LIS3DH_OUT_X_L | 0x80;
tknara 0:a1ef86f16233 72 i2c.write(addr, dbf, 1);
tknara 0:a1ef86f16233 73 i2c.read(addr | 1, data, 6);
tknara 0:a1ef86f16233 74 dt[0] = float(short((data[1]<<8) | data[0])) *LIS3DH_SENSITIVITY_2G / 15;
tknara 0:a1ef86f16233 75 dt[1] = float(short((data[3]<<8) | data[2])) *LIS3DH_SENSITIVITY_2G / 15;
tknara 0:a1ef86f16233 76 dt[2] = float(short((data[5]<<8) | data[4])) *LIS3DH_SENSITIVITY_2G / 15;
tknara 0:a1ef86f16233 77
tknara 0:a1ef86f16233 78 pc.printf("X=%f __Y=%f __Z=%f \n",dt[0],dt[1],dt[2]);
tknara 0:a1ef86f16233 79 wait(1);
tknara 0:a1ef86f16233 80 }
tknara 0:a1ef86f16233 81 }
tknara 0:a1ef86f16233 82 }