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

Dependencies:   BMP280 mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "BMP280.h"
00003 
00004 #define BMP_TMP_ID 0x8
00005 #define BMP_PRES_ID 0x9
00006 
00007 Serial pc(USBTX, USBRX); // tx, rx
00008 CAN can(p30,p29); //CAN
00009 I2C i2c(p9,p10); //SDA, SCL
00010 BMP280 bmp(i2c); //Default address = 0x76
00011 
00012 
00013 int main() {
00014     
00015     //Serial config
00016     pc.baud(115200);
00017     pc.format(8, SerialBase::None, 1);
00018     pc.set_flow_control(SerialBase::Disabled, NC, NC);
00019     
00020     //CAN bus config
00021     can.frequency(125000); //125k Hz CAN bus speed
00022     can.reset();
00023     
00024     //bmp.initialize(); 
00025     
00026     float BMPTemp = 0;
00027     float BMPPressure = 0;
00028     
00029     while(1) {
00030         
00031         BMPTemp = (bmp.getTemperature() - 32) / 1.8f;
00032         BMPPressure = bmp.getPressure();
00033         pc.printf("Temp: %f, Pressure: %f\r\n",BMPTemp, BMPPressure);
00034         
00035         can.write(CANMessage(BMP_TMP_ID, (char*)&BMPTemp, sizeof(BMPTemp)/sizeof(char)));
00036         wait(0.1); //Need waits for some reason, without them the data doesnt always arrive in a neat order
00037         can.write(CANMessage(BMP_PRES_ID, (char*)&BMPPressure, sizeof(BMPPressure)/sizeof(char)));
00038         wait(0.1);
00039         
00040         
00041     }
00042 }