Library for AE-KXSD9(3 axis accelerometer Module KXSD9-2050)

Dependents:   LPC1768_AE_KXSD9

Committer:
Naoto_111
Date:
Fri May 16 14:17:37 2014 +0000
Revision:
1:4dc1a0ac0cf1
first release; some functions unimplemented

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Naoto_111 1:4dc1a0ac0cf1 1 #include "AE_KXSD9.h"
Naoto_111 1:4dc1a0ac0cf1 2
Naoto_111 1:4dc1a0ac0cf1 3 //constructor
Naoto_111 1:4dc1a0ac0cf1 4 AE_KXSD9::AE_KXSD9(PinName sda, PinName scl, int addr1, int addr2)
Naoto_111 1:4dc1a0ac0cf1 5 :i2c_k(sda, scl),
Naoto_111 1:4dc1a0ac0cf1 6 addr_w(addr1),
Naoto_111 1:4dc1a0ac0cf1 7 addr_r(addr2)
Naoto_111 1:4dc1a0ac0cf1 8 {};
Naoto_111 1:4dc1a0ac0cf1 9
Naoto_111 1:4dc1a0ac0cf1 10
Naoto_111 1:4dc1a0ac0cf1 11 //destructor
Naoto_111 1:4dc1a0ac0cf1 12 /*
Naoto_111 1:4dc1a0ac0cf1 13 AE_KXSD9::~AE_KXSD9()
Naoto_111 1:4dc1a0ac0cf1 14 {
Naoto_111 1:4dc1a0ac0cf1 15
Naoto_111 1:4dc1a0ac0cf1 16 }
Naoto_111 1:4dc1a0ac0cf1 17 */
Naoto_111 1:4dc1a0ac0cf1 18
Naoto_111 1:4dc1a0ac0cf1 19 //initialization(default setting)
Naoto_111 1:4dc1a0ac0cf1 20 void AE_KXSD9::init()
Naoto_111 1:4dc1a0ac0cf1 21 {
Naoto_111 1:4dc1a0ac0cf1 22 char cmd_c=0xE1;//Reset Value
Naoto_111 1:4dc1a0ac0cf1 23 char cmd_b=0x40;//Reset Value
Naoto_111 1:4dc1a0ac0cf1 24 i2c_k.write(CTRL_REGC, &cmd_c, 1);
Naoto_111 1:4dc1a0ac0cf1 25 i2c_k.write(CTRL_REGB, &cmd_b, 1);
Naoto_111 1:4dc1a0ac0cf1 26 }
Naoto_111 1:4dc1a0ac0cf1 27
Naoto_111 1:4dc1a0ac0cf1 28 //read each axial acceleration(unit:g)
Naoto_111 1:4dc1a0ac0cf1 29 void AE_KXSD9::read_xyz(double *x, double *y, double *z)
Naoto_111 1:4dc1a0ac0cf1 30 {
Naoto_111 1:4dc1a0ac0cf1 31 const char addr_x_h = XOUT_H;
Naoto_111 1:4dc1a0ac0cf1 32 char data[6] = {};
Naoto_111 1:4dc1a0ac0cf1 33 short int acc[3]={};
Naoto_111 1:4dc1a0ac0cf1 34 i2c_k.write(addr_w, &addr_x_h, 1);
Naoto_111 1:4dc1a0ac0cf1 35 wait_us(500);
Naoto_111 1:4dc1a0ac0cf1 36 i2c_k.read(addr_r, data, 6);
Naoto_111 1:4dc1a0ac0cf1 37 for(int i=0;i<6;i+=2)acc[i/2]=((short int)data[i] << 4) + (short int)data[i+1] - 2048;
Naoto_111 1:4dc1a0ac0cf1 38
Naoto_111 1:4dc1a0ac0cf1 39 *x = ((double)acc[0])/SENSITIVITY;
Naoto_111 1:4dc1a0ac0cf1 40 *y = ((double)acc[1])/SENSITIVITY;
Naoto_111 1:4dc1a0ac0cf1 41 *z = ((double)acc[2])/SENSITIVITY;
Naoto_111 1:4dc1a0ac0cf1 42 }
Naoto_111 1:4dc1a0ac0cf1 43
Naoto_111 1:4dc1a0ac0cf1 44
Naoto_111 1:4dc1a0ac0cf1 45 //read the acceleration in x-axis(unit:g)
Naoto_111 1:4dc1a0ac0cf1 46 double AE_KXSD9::read_x()
Naoto_111 1:4dc1a0ac0cf1 47 {
Naoto_111 1:4dc1a0ac0cf1 48 const char addr_x_h = XOUT_H;
Naoto_111 1:4dc1a0ac0cf1 49 char data[2] = {};
Naoto_111 1:4dc1a0ac0cf1 50 short int acc;
Naoto_111 1:4dc1a0ac0cf1 51 i2c_k.write(addr_w, &addr_x_h, 1);
Naoto_111 1:4dc1a0ac0cf1 52 wait_us(500);
Naoto_111 1:4dc1a0ac0cf1 53 i2c_k.read(addr_r, data, 2);
Naoto_111 1:4dc1a0ac0cf1 54 acc=((short int)data[0] << 4) + (short int)data[1] - 2048;
Naoto_111 1:4dc1a0ac0cf1 55 return (double)acc/SENSITIVITY;
Naoto_111 1:4dc1a0ac0cf1 56 }
Naoto_111 1:4dc1a0ac0cf1 57
Naoto_111 1:4dc1a0ac0cf1 58
Naoto_111 1:4dc1a0ac0cf1 59 //read the acceleration in y-axis(unit:g)
Naoto_111 1:4dc1a0ac0cf1 60 double AE_KXSD9::read_y()
Naoto_111 1:4dc1a0ac0cf1 61 {
Naoto_111 1:4dc1a0ac0cf1 62 const char addr_y_h = YOUT_H;
Naoto_111 1:4dc1a0ac0cf1 63 char data[2] = {};
Naoto_111 1:4dc1a0ac0cf1 64 short int acc;
Naoto_111 1:4dc1a0ac0cf1 65 i2c_k.write(addr_w, &addr_y_h, 1);
Naoto_111 1:4dc1a0ac0cf1 66 wait_us(500);
Naoto_111 1:4dc1a0ac0cf1 67 i2c_k.read(addr_r, data, 2);
Naoto_111 1:4dc1a0ac0cf1 68 acc=((short int)data[0] << 4) + (short int)data[1] - 2048;
Naoto_111 1:4dc1a0ac0cf1 69 return (double)acc/SENSITIVITY;
Naoto_111 1:4dc1a0ac0cf1 70 }
Naoto_111 1:4dc1a0ac0cf1 71
Naoto_111 1:4dc1a0ac0cf1 72
Naoto_111 1:4dc1a0ac0cf1 73 //read the acceleration in z-axis(unit:g)
Naoto_111 1:4dc1a0ac0cf1 74 double AE_KXSD9::read_z()
Naoto_111 1:4dc1a0ac0cf1 75 {
Naoto_111 1:4dc1a0ac0cf1 76
Naoto_111 1:4dc1a0ac0cf1 77 const char addr_z_h = ZOUT_H;
Naoto_111 1:4dc1a0ac0cf1 78 char data[2] = {0,0};
Naoto_111 1:4dc1a0ac0cf1 79 short int acc;
Naoto_111 1:4dc1a0ac0cf1 80 i2c_k.write(addr_w, &addr_z_h, 1);
Naoto_111 1:4dc1a0ac0cf1 81 wait_us(500);
Naoto_111 1:4dc1a0ac0cf1 82 i2c_k.read(addr_r, data, 2);
Naoto_111 1:4dc1a0ac0cf1 83 acc=((short int)data[0] << 4) + (short int)data[1] - 2048;
Naoto_111 1:4dc1a0ac0cf1 84 return (double)acc/SENSITIVITY;
Naoto_111 1:4dc1a0ac0cf1 85 }
Naoto_111 1:4dc1a0ac0cf1 86
Naoto_111 1:4dc1a0ac0cf1 87 /*
Naoto_111 1:4dc1a0ac0cf1 88 //read from AE_KXSD9 register
Naoto_111 1:4dc1a0ac0cf1 89 char AE_KXSD9::read_reg(char addr)
Naoto_111 1:4dc1a0ac0cf1 90 {
Naoto_111 1:4dc1a0ac0cf1 91
Naoto_111 1:4dc1a0ac0cf1 92 }
Naoto_111 1:4dc1a0ac0cf1 93 */
Naoto_111 1:4dc1a0ac0cf1 94
Naoto_111 1:4dc1a0ac0cf1 95 //write register
Naoto_111 1:4dc1a0ac0cf1 96 /*
Naoto_111 1:4dc1a0ac0cf1 97 void AE_KXSD9::write_reg(char addr, char data)
Naoto_111 1:4dc1a0ac0cf1 98 {
Naoto_111 1:4dc1a0ac0cf1 99
Naoto_111 1:4dc1a0ac0cf1 100 }
Naoto_111 1:4dc1a0ac0cf1 101 */