MPL3115A2

Dependencies:   MPL3115A2 mbed

Fork of SPI_HelloWorld_Mbed by mbed official

/media/uploads/ODEM/dsc01135.png

Mit dem XTRINSIC-SENSE Board von element14 wird der Sensor MPL3115 ausgelesen.

mbedXTRINSIC-SENSE Board
VOUT 3.3vCN2->3.3v (1)
GNDCN2->SCL (3)
pin9 sdaCN3->SDA (3)
pin10 sclCN3->SCL (5)

Datenblatt Board: /media/uploads/ODEM/xtrinsic-sense_user_manual_v0_5.pdf

Datenblatt Sensor: /media/uploads/ODEM/mpl3115a2.pdf

main.cpp

Committer:
ODEM
Date:
2017-06-14
Revision:
2:29e536aabd5b
Parent:
1:a5921d978d61
Child:
3:3da5bf0df3ab

File content as of revision 2:29e536aabd5b:

// Read from I2C slave at address 0x62

#include "mbed.h"

I2C i2c(p9, p10);
int SlaveAddress = 0xc0;
//set to Altimeter
int SetA1 = 0x26;
int SetA2 = 0xB8;
//enable data flag
int flag1 = 0x13;
int flag2 = 0x07;
//Set Active
int active1 = 0x26;
int active2 = 0xB9;
//read status register
int status1 = 0x00;


//
int OUT_P_MSB=0;
char data_OUT_P_MSB[1];
char STA;



/******************************main**********************************/
int main()
{
    char data_OUT_P_MSB[1];
    data_OUT_P_MSB[0] = 0x01;

    //cmd    = 0x60;

    char data[2];
    data[0]=SetA1;
    data[1]=SetA2;

    char flags[2];
    flags[0]=flag1;
    flags[1]=flag2;

    char active[2];
    active[0]=active1;
    active[1]=active2;

    char status [1];
    status[0]=status1;
    char cmd[2];
    const int addr = 0xc1;

    // wait(0.1);
    //WRITE
    //set to Altimeter
    i2c.write(SlaveAddress, data, 2);
    //enable data flag
    i2c.write(SlaveAddress, flags, 2);
    //Set Active
    i2c.write(SlaveAddress, active, 2);

    while(1) {

        /*//READ
        //read status register
        STA=i2c.read(SlaveAddress, status, 2,false);


        if (STA&&0x08==1) {
            OUT_P_MSB=i2c.read(SlaveAddress, data_OUT_P_MSB, 1);
        }


        printf("data= %04X\n", OUT_P_MSB);
        printf("data= %d\n", STA);*/
        
        cmd[0] = 0x01;
        cmd[1] = 0x00;
        i2c.write(addr, cmd, 2);
 
        wait(0.5);
        cmd[0] = 0x00;
        i2c.write(addr, cmd, 1);
        i2c.read(addr, cmd, 2);
        printf("Temp = %d\n", cmd);
        float tmp = (float((cmd[0]<<8)|cmd[1]) / 256.0);
        printf("Temp = %.2f\n", tmp);
    }
}