HeptaSat
Embed:
(wiki syntax)
Show/hide line numbers
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 }
Generated on Tue Nov 8 2022 03:08:22 by
1.7.2