Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@2:0b726b8c8ab9, 2013-05-30 (annotated)
- Committer:
- clemente
- Date:
- Thu May 30 07:29:41 2013 +0000
- Revision:
- 2:0b726b8c8ab9
- Parent:
- 1:5ea71ebc0d82
- Child:
- 3:e2a621ea6976
Example program for MPL3115 sensor. Added code for data acquisition using Interrupt.
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| clemente | 0:5d92b48edaff | 1 | #include "mbed.h" |
| clemente | 0:5d92b48edaff | 2 | #include "MPL3115A2.h" |
| clemente | 0:5d92b48edaff | 3 | |
| clemente | 0:5d92b48edaff | 4 | #define MPL3115A2_I2C_ADDRESS (0x60<<1) |
| clemente | 0:5d92b48edaff | 5 | |
| clemente | 0:5d92b48edaff | 6 | DigitalOut myled(LED1); |
| clemente | 0:5d92b48edaff | 7 | MPL3115A2 wigo_sensor1( PTE0, PTE1, MPL3115A2_I2C_ADDRESS); |
| clemente | 0:5d92b48edaff | 8 | Serial pc(USBTX, USBRX); |
| clemente | 0:5d92b48edaff | 9 | |
| clemente | 0:5d92b48edaff | 10 | /* pos [0] = altimeter or pressure value */ |
| clemente | 0:5d92b48edaff | 11 | /* pos [1] = temperature value */ |
| clemente | 0:5d92b48edaff | 12 | float sensor_data[2]; |
| clemente | 0:5d92b48edaff | 13 | |
| clemente | 2:0b726b8c8ab9 | 14 | void dataready( void); // callback function for data streaming using Interrupt |
| clemente | 2:0b726b8c8ab9 | 15 | void alttrigger( void); |
| clemente | 2:0b726b8c8ab9 | 16 | |
| clemente | 0:5d92b48edaff | 17 | int main() { |
| clemente | 0:5d92b48edaff | 18 | |
| clemente | 0:5d92b48edaff | 19 | pc.baud( 230400); |
| clemente | 2:0b726b8c8ab9 | 20 | pc.printf("MPL3115A2 Sensor. [%X]\r\n", wigo_sensor1.getDeviceID()); |
| clemente | 2:0b726b8c8ab9 | 21 | |
| clemente | 2:0b726b8c8ab9 | 22 | #if 1 |
| clemente | 2:0b726b8c8ab9 | 23 | // ***** Data acquisition using Interrupt |
| clemente | 0:5d92b48edaff | 24 | |
| clemente | 2:0b726b8c8ab9 | 25 | // Configure the sensor as Barometer. |
| clemente | 0:5d92b48edaff | 26 | wigo_sensor1.Barometric_Mode(); |
| clemente | 2:0b726b8c8ab9 | 27 | // Set callback function and over sampling value (see MPL3115A2.h for details) |
| clemente | 2:0b726b8c8ab9 | 28 | wigo_sensor1.DataReady( &dataready, OVERSAMPLE_RATIO_64); |
| clemente | 2:0b726b8c8ab9 | 29 | // just loop... |
| clemente | 2:0b726b8c8ab9 | 30 | while( 1) |
| clemente | 2:0b726b8c8ab9 | 31 | { |
| clemente | 2:0b726b8c8ab9 | 32 | wait( 1.0); |
| clemente | 2:0b726b8c8ab9 | 33 | pc.printf("."); |
| clemente | 2:0b726b8c8ab9 | 34 | } |
| clemente | 2:0b726b8c8ab9 | 35 | #else |
| clemente | 2:0b726b8c8ab9 | 36 | // ***** Data acquisition using polling method |
| clemente | 0:5d92b48edaff | 37 | |
| clemente | 2:0b726b8c8ab9 | 38 | // Configure the sensor as Barometer. |
| clemente | 2:0b726b8c8ab9 | 39 | unsigned int mode=1; |
| clemente | 2:0b726b8c8ab9 | 40 | |
| clemente | 2:0b726b8c8ab9 | 41 | // Set over sampling value (see MPL3115A2.h for details) |
| clemente | 2:0b726b8c8ab9 | 42 | wigo_sensor1.Oversample_Ratio( OVERSAMPLE_RATIO_64); |
| clemente | 2:0b726b8c8ab9 | 43 | // Configure the sensor as Barometer. |
| clemente | 2:0b726b8c8ab9 | 44 | wigo_sensor1.Barometric_Mode(); |
| clemente | 2:0b726b8c8ab9 | 45 | |
| clemente | 0:5d92b48edaff | 46 | while(1) { |
| clemente | 0:5d92b48edaff | 47 | // |
| clemente | 0:5d92b48edaff | 48 | if ( wigo_sensor1.isDataAvailable()) { |
| clemente | 0:5d92b48edaff | 49 | wigo_sensor1.getAllData( &sensor_data[0]); |
| clemente | 0:5d92b48edaff | 50 | if ( mode & 0x0001) { |
| clemente | 0:5d92b48edaff | 51 | pc.printf("\tPressure: %f\tTemperature: %f\r\n", sensor_data[0], sensor_data[1]); |
| clemente | 0:5d92b48edaff | 52 | wigo_sensor1.Altimeter_Mode(); |
| clemente | 0:5d92b48edaff | 53 | } else { |
| clemente | 1:5ea71ebc0d82 | 54 | pc.printf("\tAltitude: %f\tTemperature: %f\r\n", sensor_data[0], sensor_data[1]); |
| clemente | 0:5d92b48edaff | 55 | wigo_sensor1.Barometric_Mode(); |
| clemente | 0:5d92b48edaff | 56 | } |
| clemente | 0:5d92b48edaff | 57 | mode++; |
| clemente | 0:5d92b48edaff | 58 | } |
| clemente | 0:5d92b48edaff | 59 | // |
| clemente | 0:5d92b48edaff | 60 | wait( 0.001); |
| clemente | 0:5d92b48edaff | 61 | } |
| clemente | 2:0b726b8c8ab9 | 62 | #endif |
| clemente | 0:5d92b48edaff | 63 | } |
| clemente | 2:0b726b8c8ab9 | 64 | |
| clemente | 2:0b726b8c8ab9 | 65 | void dataready( void) |
| clemente | 2:0b726b8c8ab9 | 66 | { |
| clemente | 2:0b726b8c8ab9 | 67 | wigo_sensor1.getAllData( &sensor_data[0]); |
| clemente | 2:0b726b8c8ab9 | 68 | pc.printf("\tPressure: %f\tTemperature: %f\r\n", sensor_data[0], sensor_data[1]); |
| clemente | 2:0b726b8c8ab9 | 69 | } |
NXP MPL3115A2 Altimeter