Digital Pressure Sensor
Revision 3:60816c745222, committed 2018-09-11
- Comitter:
- mcm
- Date:
- Tue Sep 11 11:35:00 2018 +0000
- Parent:
- 2:3a52d110213a
- Commit message:
- The driver was completed and tested ( NUCLEO-L152RE ), it works as expected
Changed in this revision
BMP180.h | Show annotated file Show diff for this revision Revisions of this file |
--- a/BMP180.h Tue Sep 11 10:34:58 2018 +0000 +++ b/BMP180.h Tue Sep 11 11:35:00 2018 +0000 @@ -23,7 +23,118 @@ Example: @code +#include "mbed.h" +#include "BMP180.h" +BMP180 myBMP180 ( I2C_SDA, I2C_SCL, BMP180::BMP180_ADDRESS, 400000 ); +Serial pc ( USBTX, USBRX ); // tx, rx + +DigitalOut myled ( LED1 ); +Ticker newAction; + + +// @brief Constants. +// + + +// @brief Variables. +// +volatile uint32_t myState; // State that indicates when to perform an ADC sample + + +// +// @brief FUNCTION PROTOTYPES +// +void changeDATA ( void ); + + +// @brief FUNCTION FOR APPLICATION MAIN ENTRY. +// +int main() +{ + uint32_t aux; + BMP180::BMP180_chip_id_data_t myBMP180_ChipID; + BMP180::BMP180_temperature_data_t myBMP180_TemperatureData; + BMP180::BMP180_pressure_data_t myBMP180_PressureData; + BMP180::BMP180_calibration_data_t myBMP180_Calibration_Data; + BMP180::BMP180_uncompensated_data_t myBMP180_Uncompensated_Data; + + pc.baud ( 115200 ); + + + myled = 1; + wait(3); + myled = 0; + + // Get the chip-id + aux = myBMP180.BMP180_GetID ( &myBMP180_ChipID ); + pc.printf( "Chip-ID: %d\r\n", myBMP180_ChipID.id ); + + // Get calibration data + aux = myBMP180.BMP180_Get_Cal_Param ( &myBMP180_Calibration_Data ); + pc.printf( "AC1: %d, AC2: %d, AC3: %d, AC4: %d, AC5: %d, AC6: %d, B1: %d, B2: %d, MB: %d, MC: %d, MD: %d\r\n", myBMP180_Calibration_Data.ac1, myBMP180_Calibration_Data.ac2, + myBMP180_Calibration_Data.ac3, myBMP180_Calibration_Data.ac4, myBMP180_Calibration_Data.ac5, myBMP180_Calibration_Data.ac6, myBMP180_Calibration_Data.b1, myBMP180_Calibration_Data.b2, + myBMP180_Calibration_Data.mb, myBMP180_Calibration_Data.mc, myBMP180_Calibration_Data.md ); + + + + myState = 0UL; // Reset the variable + newAction.attach( &changeDATA, 2 ); // the address of the function to be attached ( changeDATA ) and the interval ( 2s ) + + // Let the callbacks take care of everything + while(1) { + sleep(); + + if ( myState == 1UL ) { + myled = 1U; + + // Get uncompensated temperature + aux = myBMP180.BMP180_Get_UT ( &myBMP180_Uncompensated_Data ); + + // Get uncompensated pressure, Resolution: Standard + aux = myBMP180.BMP180_Get_UP ( BMP180::PRESSURE_STANDARD_MODE, &myBMP180_Uncompensated_Data ); + + // Calculate the true temperature + myBMP180_TemperatureData = myBMP180.BMP180_Get_Temperature ( myBMP180_Calibration_Data, myBMP180_Uncompensated_Data ); + + // Calculate the true pressure + myBMP180_PressureData = myBMP180.BMP180_Get_CalPressure ( myBMP180_Calibration_Data, myBMP180_TemperatureData, BMP180::PRESSURE_STANDARD_MODE, myBMP180_Uncompensated_Data ); + + // Transmit result through the UART + pc.printf ( "Temperature: %0.1f C | Pressure: %ld Pa\r\n", ( 0.1f * myBMP180_TemperatureData.temp ), myBMP180_PressureData.press ); + + + // Reset the variables + myState = 0UL; + myled = 0U; + } + } +} + + +// + // @brief changeDATA ( void ) + // + // @details It changes myState variable + // + // @param[in] N/A + // + // @param[out] N/A. + // + // + // @return N/A.. + // + // + // @author Manuel Caballero + // @date 11/September/2018 + // @version 11/September/2018 The ORIGIN + // @pre N/A + // @warning N/A. + // +void changeDATA ( void ) +{ + myState = 1UL; +} @endcode */