Initial

Dependencies:   LIS3MDL LPS25H LSM6DS33 USBDevice mbed

Committer:
bclaus
Date:
Thu Oct 06 23:31:44 2016 +0000
Revision:
1:b6fa3b031046
Parent:
0:6ff6b64d1bef
Initial demo of AltIMU-10 v5 LSM6DS33 LIS3MDL LPS25H and publishing over virtual serial at 100Hz

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bclaus 0:6ff6b64d1bef 1 /*
bclaus 0:6ff6b64d1bef 2 *LSM6DSS can provide readings up to 6.6khz for acc and gyr
bclaus 0:6ff6b64d1bef 3 *LIS3MDL can only do 80hz
bclaus 0:6ff6b64d1bef 4 *LPS25H can do up to 25Hz
bclaus 0:6ff6b64d1bef 5 *
bclaus 0:6ff6b64d1bef 6 */
bclaus 0:6ff6b64d1bef 7
bclaus 0:6ff6b64d1bef 8 #include "mbed.h"
bclaus 0:6ff6b64d1bef 9 #include "USBSerial.h"
bclaus 0:6ff6b64d1bef 10 #include "lis3mdl.h"
bclaus 0:6ff6b64d1bef 11 #include "LPS25H.h"
bclaus 0:6ff6b64d1bef 12 #include "LSM6DS33.h"
bclaus 0:6ff6b64d1bef 13
bclaus 0:6ff6b64d1bef 14 LIS3MDL mag(PTB3, PTB2);
bclaus 0:6ff6b64d1bef 15 LPS25H bar(PTB3, PTB2);
bclaus 0:6ff6b64d1bef 16 LSM6DS33 accgyr(PTB3, PTB2,LSM6DS33_AG_I2C_ADDR(1));
bclaus 0:6ff6b64d1bef 17
bclaus 0:6ff6b64d1bef 18 Timer tmain;
bclaus 0:6ff6b64d1bef 19
bclaus 0:6ff6b64d1bef 20 //Virtual serial port over USB
bclaus 0:6ff6b64d1bef 21 USBSerial serial;
bclaus 0:6ff6b64d1bef 22
bclaus 0:6ff6b64d1bef 23 int main(void) {
bclaus 0:6ff6b64d1bef 24
bclaus 0:6ff6b64d1bef 25 accgyr.begin();
bclaus 0:6ff6b64d1bef 26
bclaus 0:6ff6b64d1bef 27 double timeLog=0;
bclaus 0:6ff6b64d1bef 28 tmain.start();
bclaus 0:6ff6b64d1bef 29 timeLog +=tmain.read();
bclaus 0:6ff6b64d1bef 30
bclaus 0:6ff6b64d1bef 31 //run main loop at 100Hz
bclaus 0:6ff6b64d1bef 32 double mainPeriod = 0.01;
bclaus 0:6ff6b64d1bef 33 //sample acc/gyr/mag at full rate
bclaus 0:6ff6b64d1bef 34
bclaus 0:6ff6b64d1bef 35 serial.printf("begin teensyIMU\r\n");
bclaus 0:6ff6b64d1bef 36
bclaus 0:6ff6b64d1bef 37 while(1)
bclaus 0:6ff6b64d1bef 38 {
bclaus 0:6ff6b64d1bef 39
bclaus 0:6ff6b64d1bef 40 if(tmain.read()< mainPeriod){
bclaus 0:6ff6b64d1bef 41 wait(mainPeriod - tmain.read());//wait until time for next main loop
bclaus 0:6ff6b64d1bef 42 }else{
bclaus 0:6ff6b64d1bef 43 serial.printf("not fast enough\r\n");
bclaus 0:6ff6b64d1bef 44 }
bclaus 0:6ff6b64d1bef 45 timeLog +=tmain.read();
bclaus 0:6ff6b64d1bef 46 tmain.reset();
bclaus 0:6ff6b64d1bef 47
bclaus 0:6ff6b64d1bef 48 //read accgyr at full rate
bclaus 0:6ff6b64d1bef 49
bclaus 0:6ff6b64d1bef 50 accgyr.readAll();
bclaus 0:6ff6b64d1bef 51 mag.readMag();
bclaus 0:6ff6b64d1bef 52
bclaus 0:6ff6b64d1bef 53 bar.readPres();
bclaus 0:6ff6b64d1bef 54
bclaus 0:6ff6b64d1bef 55 serial.printf("tIMU:%.9lf %f %f %f %f %f %f %f %d %d %d %f\r\n",timeLog,accgyr.temperature_c,
bclaus 0:6ff6b64d1bef 56 accgyr.ax,accgyr.ay,accgyr.az,
bclaus 0:6ff6b64d1bef 57 accgyr.gx,accgyr.gy,accgyr.gz,
bclaus 0:6ff6b64d1bef 58 mag.mx_raw,mag.my_raw,mag.mz_raw,
bclaus 0:6ff6b64d1bef 59 bar.presPa);
bclaus 0:6ff6b64d1bef 60 }
bclaus 0:6ff6b64d1bef 61 }