LPS25H sample

Dependencies:   AQM0802 LPS25H mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 //**********************
00002 // Barometer and Altimeter
00003 // LPS25H sample for mbed
00004 //
00005 // LPC1768 flash=512KB, ADC=12bits
00006 // LPC11U35 flash=64KB, ADC=10bits
00007 // Nucleo ADC=12bits
00008 //
00009 // (C)Copyright 2014 All rights reserved by Y.Onodera
00010 // http://einstlab.web.fc2.com
00011 //**********************
00012 #include "mbed.h"
00013 #include "AQM0802.h"
00014 #include "LPS25H.h"
00015 
00016 #if defined(TARGET_LPC1768)
00017 I2C i2c(p28,p27);
00018 #endif
00019 // for TG-LPC11U35-501
00020 #if defined(TARGET_LPC11U35_501)
00021 I2C i2c(P0_5,P0_4);
00022 #endif
00023 // for Nucleo
00024 #if defined(TARGET_NUCLEO_F401RE)
00025 I2C i2c(D14,D15);
00026 #endif
00027 
00028 AQM0802 lcd(i2c);
00029 LPS25H lps25h(i2c);
00030 
00031 #define T0  288.15
00032 #define dT  0.0065
00033 #define P0  101325.0
00034 #define g   9.80665
00035 #define R   287.052
00036 double GetAltitude(double p, double t){
00037 
00038     return (t+273.15)/dT*(pow((P0/p),dT*R/g)-1);
00039 
00040 }
00041 
00042 int main() {
00043     
00044     char msg[10];
00045     int p, t, a;
00046 
00047     sprintf(msg,"Barometer");
00048     lcd.locate(0,0);
00049     lcd.print(msg);
00050     sprintf(msg,"Altimeter");
00051     lcd.locate(0,1);
00052     lcd.print(msg);
00053     wait(1);
00054       
00055     while(1) {
00056 
00057         p = (double)lps25h.pressure()/40.96;
00058         t = 42.5 + (double)lps25h.temperature()/480.0;
00059         a = GetAltitude(p,t);
00060 
00061         sprintf(msg,"%6dPa",p);
00062         lcd.locate(0,0);
00063         lcd.print(msg);
00064         sprintf(msg,"%4dm%2dC", a, t);
00065         lcd.locate(0,1);
00066         lcd.print(msg);
00067         wait(1);
00068     }
00069 
00070 }
00071