Demo program for the MPL3115A2 library.
Example program for MPL3115 sensor. Added code for data acquisition using Interrupt.
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 | } |