Demo program for the MPL3115A2 library.

Dependencies:   MPL3115A2 mbed

Example program for MPL3115 sensor. Added code for data acquisition using Interrupt.

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?

UserRevisionLine numberNew 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 }