Program to collect data from a BMP280 combination pressure temperature sensor & send it over a CAN interface, using an LPC1768

Dependencies:   BMP280 mbed

Committer:
maximusismax
Date:
Fri Oct 21 15:39:32 2016 +0000
Revision:
0:b087f3aae9e5
V1

Who changed what in which revision?

UserRevisionLine numberNew 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 }