Initial
Dependencies: LIS3MDL LPS25H LSM6DS33 USBDevice mbed
main.cpp@1:b6fa3b031046, 2016-10-06 (annotated)
- 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?
User | Revision | Line number | New 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 | } |