Program to collect data from a BMP280 combination pressure temperature sensor & send it over a CAN interface, using an LPC1768
main.cpp@0:b087f3aae9e5, 2016-10-21 (annotated)
- Committer:
- maximusismax
- Date:
- Fri Oct 21 15:39:32 2016 +0000
- Revision:
- 0:b087f3aae9e5
V1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
maximusismax | 0:b087f3aae9e5 | 1 | #include "mbed.h" |
maximusismax | 0:b087f3aae9e5 | 2 | #include "BMP280.h" |
maximusismax | 0:b087f3aae9e5 | 3 | |
maximusismax | 0:b087f3aae9e5 | 4 | #define BMP_TMP_ID 0x8 |
maximusismax | 0:b087f3aae9e5 | 5 | #define BMP_PRES_ID 0x9 |
maximusismax | 0:b087f3aae9e5 | 6 | |
maximusismax | 0:b087f3aae9e5 | 7 | Serial pc(USBTX, USBRX); // tx, rx |
maximusismax | 0:b087f3aae9e5 | 8 | CAN can(p30,p29); //CAN |
maximusismax | 0:b087f3aae9e5 | 9 | I2C i2c(p9,p10); //SDA, SCL |
maximusismax | 0:b087f3aae9e5 | 10 | BMP280 bmp(i2c); //Default address = 0x76 |
maximusismax | 0:b087f3aae9e5 | 11 | |
maximusismax | 0:b087f3aae9e5 | 12 | |
maximusismax | 0:b087f3aae9e5 | 13 | int main() { |
maximusismax | 0:b087f3aae9e5 | 14 | |
maximusismax | 0:b087f3aae9e5 | 15 | //Serial config |
maximusismax | 0:b087f3aae9e5 | 16 | pc.baud(115200); |
maximusismax | 0:b087f3aae9e5 | 17 | pc.format(8, SerialBase::None, 1); |
maximusismax | 0:b087f3aae9e5 | 18 | pc.set_flow_control(SerialBase::Disabled, NC, NC); |
maximusismax | 0:b087f3aae9e5 | 19 | |
maximusismax | 0:b087f3aae9e5 | 20 | //CAN bus config |
maximusismax | 0:b087f3aae9e5 | 21 | can.frequency(125000); //125k Hz CAN bus speed |
maximusismax | 0:b087f3aae9e5 | 22 | can.reset(); |
maximusismax | 0:b087f3aae9e5 | 23 | |
maximusismax | 0:b087f3aae9e5 | 24 | //bmp.initialize(); |
maximusismax | 0:b087f3aae9e5 | 25 | |
maximusismax | 0:b087f3aae9e5 | 26 | float BMPTemp = 0; |
maximusismax | 0:b087f3aae9e5 | 27 | float BMPPressure = 0; |
maximusismax | 0:b087f3aae9e5 | 28 | |
maximusismax | 0:b087f3aae9e5 | 29 | while(1) { |
maximusismax | 0:b087f3aae9e5 | 30 | |
maximusismax | 0:b087f3aae9e5 | 31 | BMPTemp = (bmp.getTemperature() - 32) / 1.8f; |
maximusismax | 0:b087f3aae9e5 | 32 | BMPPressure = bmp.getPressure(); |
maximusismax | 0:b087f3aae9e5 | 33 | pc.printf("Temp: %f, Pressure: %f\r\n",BMPTemp, BMPPressure); |
maximusismax | 0:b087f3aae9e5 | 34 | |
maximusismax | 0:b087f3aae9e5 | 35 | can.write(CANMessage(BMP_TMP_ID, (char*)&BMPTemp, sizeof(BMPTemp)/sizeof(char))); |
maximusismax | 0:b087f3aae9e5 | 36 | wait(0.1); //Need waits for some reason, without them the data doesnt always arrive in a neat order |
maximusismax | 0:b087f3aae9e5 | 37 | can.write(CANMessage(BMP_PRES_ID, (char*)&BMPPressure, sizeof(BMPPressure)/sizeof(char))); |
maximusismax | 0:b087f3aae9e5 | 38 | wait(0.1); |
maximusismax | 0:b087f3aae9e5 | 39 | |
maximusismax | 0:b087f3aae9e5 | 40 | |
maximusismax | 0:b087f3aae9e5 | 41 | } |
maximusismax | 0:b087f3aae9e5 | 42 | } |