Program to collect data from a BMP280 combination pressure temperature sensor & send it over a CAN interface, using an LPC1768
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 }
Generated on Thu Jul 28 2022 01:27:37 by 1.7.2