HeptaSat

Dependencies:   HEPTA_EPS mbed

Committer:
csmk18112
Date:
Tue Nov 08 03:08:02 2022 +0000
Revision:
4:c041a3581bc7
Parent:
3:a1a4491e2ab8
d

Who changed what in which revision?

UserRevisionLine numberNew contents of line
csmk18112 0:c1b538c0d17b 1 #include "mbed.h"
csmk18112 0:c1b538c0d17b 2 #include "HEPTA_EPS.h"
csmk18112 3:a1a4491e2ab8 3 #define ACC 0x19<<1 //addr_accel
csmk18112 1:13e640890938 4
csmk18112 3:a1a4491e2ab8 5 RawSerial pc(USBTX,USBRX,9600);
csmk18112 1:13e640890938 6 HEPTA_EPS eps(p16,p26);
csmk18112 0:c1b538c0d17b 7 I2C i2c(p28,p27);
csmk18112 0:c1b538c0d17b 8
csmk18112 3:a1a4491e2ab8 9 float accel[3];
csmk18112 0:c1b538c0d17b 10 char cmd[2]={0};
csmk18112 0:c1b538c0d17b 11 uint8_t data[6]={0};
csmk18112 3:a1a4491e2ab8 12 char send[1];
csmk18112 0:c1b538c0d17b 13
csmk18112 0:c1b538c0d17b 14 int main() {
csmk18112 0:c1b538c0d17b 15 i2c.frequency(100000);
csmk18112 3:a1a4491e2ab8 16 pc.printf("accel setting\r\n");
csmk18112 3:a1a4491e2ab8 17 cmd[0]=0x14; //softwareset
csmk18112 3:a1a4491e2ab8 18 cmd[1]=0xB6; //triggers a reset
csmk18112 3:a1a4491e2ab8 19 i2c.write(ACC,cmd,2);
csmk18112 3:a1a4491e2ab8 20 cmd[0]=0x0F; //acceleration measurement range
csmk18112 3:a1a4491e2ab8 21 cmd[1]=0x05; //+-4g
csmk18112 3:a1a4491e2ab8 22 i2c.write(ACC,cmd,2);
csmk18112 4:c041a3581bc7 23 cmd[0]=0x11; //Selection of the main power modes and low power sleep period
csmk18112 4:c041a3581bc7 24 cmd[1]=0x00; //NORMAL mode, Sleep duration = 0.5ms
csmk18112 3:a1a4491e2ab8 25 i2c.write(ACC,cmd,2);
csmk18112 0:c1b538c0d17b 26 while(1) {
csmk18112 3:a1a4491e2ab8 27 send[0]=(char)(2);
csmk18112 3:a1a4491e2ab8 28 i2c.write(ACC,send,1,true);
csmk18112 3:a1a4491e2ab8 29 i2c.read(ACC,(char*)data,6);
csmk18112 3:a1a4491e2ab8 30 for(int i=0;i<3;i++){
csmk18112 3:a1a4491e2ab8 31 accel[i]=(int16_t)(((int16_t)data[i*2+1]<<8) | data[i*2]) >> 4;
csmk18112 3:a1a4491e2ab8 32 if(accel[i]>2047)accel[i]-=4096;
csmk18112 3:a1a4491e2ab8 33 accel[i]=accel[i]/519*9.8;
csmk18112 0:c1b538c0d17b 34 }
csmk18112 3:a1a4491e2ab8 35 pc.printf("ax = %2.4f, ay = %2.4f, az = %2.4f\r\n",accel[0],accel[1],accel[2]);
csmk18112 1:13e640890938 36 wait(1);
csmk18112 0:c1b538c0d17b 37 }
csmk18112 1:13e640890938 38 }