HeptaSat

Dependencies:   HEPTA_EPS mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "HEPTA_EPS.h"
00003 #define ACC 0x19<<1 //addr_accel
00004 
00005 RawSerial pc(USBTX,USBRX,9600);
00006 HEPTA_EPS eps(p16,p26);
00007 I2C i2c(p28,p27);
00008 
00009 float accel[3];
00010 char cmd[2]={0};
00011 uint8_t data[6]={0};
00012 char send[1];
00013 
00014 int main() {
00015     i2c.frequency(100000);
00016     pc.printf("accel setting\r\n");
00017     cmd[0]=0x14; //softwareset 
00018     cmd[1]=0xB6; //triggers a reset
00019     i2c.write(ACC,cmd,2); 
00020     cmd[0]=0x0F; //acceleration measurement range
00021     cmd[1]=0x05; //+-4g
00022     i2c.write(ACC,cmd,2); 
00023     cmd[0]=0x11; //Selection of the main power modes and low power sleep period
00024     cmd[1]=0x00; //NORMAL mode, Sleep duration = 0.5ms
00025     i2c.write(ACC,cmd,2); 
00026     while(1) {
00027         send[0]=(char)(2);
00028         i2c.write(ACC,send,1,true);
00029         i2c.read(ACC,(char*)data,6);
00030         for(int i=0;i<3;i++){
00031             accel[i]=(int16_t)(((int16_t)data[i*2+1]<<8) | data[i*2]) >> 4;
00032             if(accel[i]>2047)accel[i]-=4096;
00033             accel[i]=accel[i]/519*9.8;
00034         }
00035         pc.printf("ax = %2.4f, ay = %2.4f, az = %2.4f\r\n",accel[0],accel[1],accel[2]);
00036         wait(1);
00037     }
00038 }