T Nara
/
NewLIS3DH
ほぼ関数かしたLIS3DH
LIS3DHnew.cpp
- Committer:
- tknara
- Date:
- 2015-02-16
- Revision:
- 0:8c85bd2e8177
File content as of revision 0:8c85bd2e8177:
#include "mbed.h" I2C i2c(p9,p10);//sda,scl Serial pc(USBTX,USBRX); //DigitalOut led(LED1); // addr #define WRITE_ADDR 0x30 #define READ_ADDR 0x31 // LIS3DH ID #define I_AM_LIS3DH 0x33 // Register's definition #define LIS3DH_STATUS_REG_AUX 0x07 #define LIS3DH_OUT_ADC1_L 0x08 #define LIS3DH_OUT_ADC1_H 0x09 #define LIS3DH_OUT_ADC2_L 0x0a #define LIS3DH_OUT_ADC2_H 0x0b #define LIS3DH_OUT_ADC3_L 0x0c #define LIS3DH_OUT_ADC3_H 0x0d #define LIS3DH_INT_COUNTER_REG 0x0e #define LIS3DH_WHO_AM_I 0x0f #define LIS3DH_TEMP_CFG_REG 0x1f #define LIS3DH_CTRL_REG1 0x20 #define LIS3DH_CTRL_REG2 0x21 #define LIS3DH_CTRL_REG3 0x22 #define LIS3DH_CTRL_REG4 0x23 #define LIS3DH_CTRL_REG5 0x24 #define LIS3DH_CTRL_REG6 0x25 #define LIS3DH_REFERENCE 0x26 #define LIS3DH_STATUS_REG2 0x27 #define LIS3DH_OUT_X_L 0x28 #define LIS3DH_OUT_X_H 0x29 #define LIS3DH_OUT_Y_L 0x2a #define LIS3DH_OUT_Y_H 0x2b #define LIS3DH_OUT_Z_L 0x2c #define LIS3DH_OUT_Z_H 0x2d #define LIS3DH_FIFO_CTRL_REG 0x2e #define LIS3DH_FIFO_SRC_REG 0x2f #define LIS3DH_INT1_CFG 0x30 #define LIS3DH_INT1_SOURCE 0x31 #define LIS3DH_INT1_THS 0x32 #define LIS3DH_INT1_DURATION 0x33 #define LIS3DH_CLICK_CFG 0x38 #define LIS3DH_CLICK_SRC 0x39 #define LIS3DH_CLICK_THS 0x3a #define LIS3DH_TIME_LIMIT 0x3b #define LIS3DH_TIME_LATENCY 0x3c #define LIS3DH_TIME_WINDOW 0x3d // definition for Nomalization #define LIS3DH_SENSITIVITY_2G (0.001F) #define LIS3DH_SENSITIVITY_4G (0.002F) #define LIS3DH_SENSITIVITY_8G (0.004F) #define LIS3DH_SENSITIVITY_16G (0.012F) char dbf[2],addr; int check; float dt[3]; int che(void); int cot(void); int main(){ int check; check = che(); if (check == 1) { while(1) { cot(); wait(1); } } } int che(void){ addr = WRITE_ADDR; dbf[0] = LIS3DH_WHO_AM_I; i2c.write(addr, dbf,1); i2c.read(addr | 1, dbf, 1); if (dbf[0] == I_AM_LIS3DH) { return 1; } else { return 0; } } int cot(void) { char data[6]; dbf[0] = LIS3DH_CTRL_REG1; dbf[1] = 0x7f; i2c.write(addr , dbf , 2); dbf[0] = LIS3DH_OUT_X_L | 0x80; i2c.write(addr, dbf, 1); i2c.read(addr | 1, data, 6); dt[0] = float(short((data[1]<<8) | data[0])) *LIS3DH_SENSITIVITY_2G / 15; dt[1] = float(short((data[3]<<8) | data[2])) *LIS3DH_SENSITIVITY_2G / 15; dt[2] = float(short((data[5]<<8) | data[4])) *LIS3DH_SENSITIVITY_2G / 15; pc.printf("X=%f __Y=%f __Z=%f \n",dt[0],dt[1],dt[2]); return 0; }