revisions to pressure and magnetometer
Dependencies: HMC5883L IMU MPU6050 MS5803 MS5837 mbed-rtos mbed sensor
Fork of sensor_library_test by
main.cpp@3:6ca88b9c44c1, 2016-07-25 (annotated)
- Committer:
- aolgu003
- Date:
- Mon Jul 25 00:51:01 2016 +0000
- Revision:
- 3:6ca88b9c44c1
- Parent:
- 1:cea9d83b8636
- Child:
- 4:60340d6eed1f
.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
onehorse | 0:65aa78c10981 | 1 | |
aolgu003 | 3:6ca88b9c44c1 | 2 | /* |
aolgu003 | 3:6ca88b9c44c1 | 3 | Connections information: |
aolgu003 | 3:6ca88b9c44c1 | 4 | MPU to stm32F401RE NUCLEO Connection information |
aolgu003 | 3:6ca88b9c44c1 | 5 | VCC -> 3.3V |
aolgu003 | 3:6ca88b9c44c1 | 6 | SCL -> D15 |
aolgu003 | 3:6ca88b9c44c1 | 7 | SDA -> D14 |
aolgu003 | 3:6ca88b9c44c1 | 8 | AD0 -> high |
aolgu003 | 3:6ca88b9c44c1 | 9 | |
aolgu003 | 3:6ca88b9c44c1 | 10 | HMC5883L |
aolgu003 | 3:6ca88b9c44c1 | 11 | VCC -> 3.3V |
aolgu003 | 3:6ca88b9c44c1 | 12 | SCL -> D7 |
aolgu003 | 3:6ca88b9c44c1 | 13 | SDA -> D5 |
aolgu003 | 3:6ca88b9c44c1 | 14 | |
aolgu003 | 3:6ca88b9c44c1 | 15 | MS5803 |
aolgu003 | 3:6ca88b9c44c1 | 16 | VCC -> 3.3V |
aolgu003 | 3:6ca88b9c44c1 | 17 | SCL -> D7 |
aolgu003 | 3:6ca88b9c44c1 | 18 | SDA -> D5 |
aolgu003 | 3:6ca88b9c44c1 | 19 | |
aolgu003 | 3:6ca88b9c44c1 | 20 | All grounds go to common ground |
onehorse | 0:65aa78c10981 | 21 | */ |
onehorse | 0:65aa78c10981 | 22 | |
onehorse | 1:cea9d83b8636 | 23 | #include "mbed.h" |
aolgu003 | 3:6ca88b9c44c1 | 24 | #include "sensor.h" |
onehorse | 0:65aa78c10981 | 25 | |
aolgu003 | 3:6ca88b9c44c1 | 26 | int main() { |
aolgu003 | 3:6ca88b9c44c1 | 27 | sensor_init(); |
aolgu003 | 3:6ca88b9c44c1 | 28 | while (1) { |
aolgu003 | 3:6ca88b9c44c1 | 29 | sensor_update(); |
aolgu003 | 3:6ca88b9c44c1 | 30 | print_data(); |
aolgu003 | 3:6ca88b9c44c1 | 31 | //sensor_msg(); |
aolgu003 | 3:6ca88b9c44c1 | 32 | } |
aolgu003 | 3:6ca88b9c44c1 | 33 | } |
onehorse | 0:65aa78c10981 | 34 | |
aolgu003 | 3:6ca88b9c44c1 | 35 | /*#include "MPU6050.h" |
aolgu003 | 3:6ca88b9c44c1 | 36 | #include "MS5803.h" |
aolgu003 | 3:6ca88b9c44c1 | 37 | #include "MS5837.h" |
aolgu003 | 3:6ca88b9c44c1 | 38 | #include "IMU.h" |
aolgu003 | 3:6ca88b9c44c1 | 39 | #include "HMC5883L.h" |
onehorse | 1:cea9d83b8636 | 40 | |
aolgu003 | 3:6ca88b9c44c1 | 41 | MPU6050 mpu6050; |
aolgu003 | 3:6ca88b9c44c1 | 42 | DigitalOut led1(LED1); |
aolgu003 | 3:6ca88b9c44c1 | 43 | //MS5837 pressure_sensor_1 = MS5803(I2C_SDA, I2C_SCL); |
aolgu003 | 3:6ca88b9c44c1 | 44 | //MS5837 pressure_sensor_2 = MS5803(PB_4, PA_8); |
onehorse | 1:cea9d83b8636 | 45 | |
aolgu003 | 3:6ca88b9c44c1 | 46 | HMC5883L compass(PB_4, PA_8); |
aolgu003 | 3:6ca88b9c44c1 | 47 | MS5837 pressure_sensor_1 = MS5837(I2C_SDA, I2C_SCL, ms5837_addr_no_CS); |
aolgu003 | 3:6ca88b9c44c1 | 48 | MS5837 pressure_sensor_2 = MS5837(PB_4, PA_8, ms5837_addr_no_CS); |
onehorse | 1:cea9d83b8636 | 49 | |
aolgu003 | 3:6ca88b9c44c1 | 50 | //Serial pc(USBTX, USBRX); |
aolgu003 | 3:6ca88b9c44c1 | 51 | |
onehorse | 1:cea9d83b8636 | 52 | int main() |
onehorse | 1:cea9d83b8636 | 53 | { |
aolgu003 | 3:6ca88b9c44c1 | 54 | //Test Compass |
aolgu003 | 3:6ca88b9c44c1 | 55 | //pc.printf("Compass mode: %b\n", compass.getMode()); |
aolgu003 | 3:6ca88b9c44c1 | 56 | int16_t mag[3] = {0}; |
aolgu003 | 3:6ca88b9c44c1 | 57 | |
aolgu003 | 3:6ca88b9c44c1 | 58 | printf("Begining Initialization\n"); |
aolgu003 | 3:6ca88b9c44c1 | 59 | |
aolgu003 | 3:6ca88b9c44c1 | 60 | int error_cnt = 0; |
onehorse | 1:cea9d83b8636 | 61 | |
aolgu003 | 3:6ca88b9c44c1 | 62 | float depth; |
aolgu003 | 3:6ca88b9c44c1 | 63 | float pressure1, depth1; |
aolgu003 | 3:6ca88b9c44c1 | 64 | float pressure2, depth2; |
onehorse | 1:cea9d83b8636 | 65 | |
aolgu003 | 3:6ca88b9c44c1 | 66 | pressure_sensor_1.MS5837Init(); |
aolgu003 | 3:6ca88b9c44c1 | 67 | pressure_sensor_2.MS5837Init(); |
aolgu003 | 3:6ca88b9c44c1 | 68 | pc.printf("Initialized begining readings\n"); |
onehorse | 0:65aa78c10981 | 69 | |
aolgu003 | 3:6ca88b9c44c1 | 70 | IMUinit(mpu6050); |
onehorse | 0:65aa78c10981 | 71 | |
aolgu003 | 3:6ca88b9c44c1 | 72 | while(1) { |
aolgu003 | 3:6ca88b9c44c1 | 73 | pressure_sensor_1.Barometer_MS5837(); |
aolgu003 | 3:6ca88b9c44c1 | 74 | pressure_sensor_2.Barometer_MS5837(); |
aolgu003 | 3:6ca88b9c44c1 | 75 | pressure1 = pressure_sensor_1.MS5837_Pressure(); |
aolgu003 | 3:6ca88b9c44c1 | 76 | pressure2 = pressure_sensor_2.MS5837_Pressure(); |
aolgu003 | 3:6ca88b9c44c1 | 77 | |
aolgu003 | 3:6ca88b9c44c1 | 78 | //Do some error checking |
aolgu003 | 3:6ca88b9c44c1 | 79 | if ((pressure1 > 900 && pressure1 < 3000) && (pressure2 > 900 && pressure2 < 3000)) { |
aolgu003 | 3:6ca88b9c44c1 | 80 | depth1 = pressure_sensor_1.depth(); |
aolgu003 | 3:6ca88b9c44c1 | 81 | depth2 = pressure_sensor_2.depth(); |
aolgu003 | 3:6ca88b9c44c1 | 82 | |
aolgu003 | 3:6ca88b9c44c1 | 83 | depth = (depth1 + depth2) / 2; |
aolgu003 | 3:6ca88b9c44c1 | 84 | error_cnt = 0; |
aolgu003 | 3:6ca88b9c44c1 | 85 | } else if (pressure2 > 900 && pressure2 < 3000) { |
aolgu003 | 3:6ca88b9c44c1 | 86 | depth = pressure_sensor_2.depth(); |
aolgu003 | 3:6ca88b9c44c1 | 87 | |
aolgu003 | 3:6ca88b9c44c1 | 88 | error_cnt = 0; |
aolgu003 | 3:6ca88b9c44c1 | 89 | } else if (pressure1 > 900 && pressure1 < 3000) { |
aolgu003 | 3:6ca88b9c44c1 | 90 | depth = pressure_sensor_1.depth(); |
aolgu003 | 3:6ca88b9c44c1 | 91 | error_cnt = 0; |
aolgu003 | 3:6ca88b9c44c1 | 92 | } else { |
aolgu003 | 3:6ca88b9c44c1 | 93 | error_cnt++; |
aolgu003 | 3:6ca88b9c44c1 | 94 | if (error_cnt > 50) { |
aolgu003 | 3:6ca88b9c44c1 | 95 | //do something |
aolgu003 | 3:6ca88b9c44c1 | 96 | pc.printf("Pressure sensor error"); |
aolgu003 | 3:6ca88b9c44c1 | 97 | } |
aolgu003 | 3:6ca88b9c44c1 | 98 | } |
aolgu003 | 3:6ca88b9c44c1 | 99 | pc.printf("Depth is: %f\n", depth); |
aolgu003 | 3:6ca88b9c44c1 | 100 | |
aolgu003 | 3:6ca88b9c44c1 | 101 | //IMU Read |
aolgu003 | 3:6ca88b9c44c1 | 102 | IMUUpdate(mpu6050); |
onehorse | 0:65aa78c10981 | 103 | |
aolgu003 | 3:6ca88b9c44c1 | 104 | //Compass read |
aolgu003 | 3:6ca88b9c44c1 | 105 | compass.getXYZ(mag); |
aolgu003 | 3:6ca88b9c44c1 | 106 | pc.printf("Mag values: %d, %d, %d\n", mag[0], mag[1], mag[2]); |
aolgu003 | 3:6ca88b9c44c1 | 107 | pc.printf("Heading: %f\n",compass.getHeadingXYDeg()); |
aolgu003 | 3:6ca88b9c44c1 | 108 | |
aolgu003 | 3:6ca88b9c44c1 | 109 | led1 = !led1; |
aolgu003 | 3:6ca88b9c44c1 | 110 | //Thread::wait(500); |
aolgu003 | 3:6ca88b9c44c1 | 111 | } |
aolgu003 | 3:6ca88b9c44c1 | 112 | }*/ |