LPS25Hのライブラリ(i2C)です
Dependencies: mbed
Dependents: quto_LPS25H_sample4
Diff: LPS25H.cpp
- Revision:
- 0:028338208ba1
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LPS25H.cpp Fri Jan 20 20:43:29 2017 +0000 @@ -0,0 +1,68 @@ +#include "mbed.h" +#include "LPS25H.h" + + +//Serial pc(USBTX, USBRX); //tx, rx + + +MyLPS25H::MyLPS25H(PinName SDA, PinName SCL) : _SDA(SDA), _SCL(SCL){ + // I2C i2c(_SDA, _SCL); + } + +void MyLPS25H::SetPress() +{ + I2C i2c(_SDA, _SCL); // sda, scl + char cmd[2]; + cmd[0] = WHO_AM_I; + i2c.write(SLV_WRITE, cmd, 1); + i2c.read(SLV_READ, cmd, 1); + char check[1]; + check[0] = 0xBD; + + + if(cmd[0] == check[0]){ + //pc.printf("LPS25H OK\r\n"); + }else{ + //pc.printf("LPS25H NG\r\n"); + } + + cmd[0] = CTRL_REG1; + cmd[1] = 0xC0; + i2c.write(SLV_WRITE, cmd, 2); +} + +float MyLPS25H::GetPress() +{ + I2C i2c(_SDA, _SCL); // sda, scl + //char cmd[2]; + char cmd_H[2]; + char cmd_L[2]; + char cmd_XL[2]; + float Pressure = 0; + + while(1) + { + + cmd_XL[0] = PRESS_OUT_XL; + i2c.write(SLV_WRITE, cmd_XL, 1); + i2c.read(SLV_READ, cmd_XL, 1); + + cmd_L[0] = PRESS_OUT_L; + i2c.write(SLV_WRITE, cmd_L, 1); + i2c.read(SLV_READ, cmd_L, 1); + + cmd_H[0] = PRESS_OUT_H; + i2c.write(SLV_WRITE, cmd_H, 1); + i2c.read(SLV_READ, cmd_H, 1); + + unsigned long Press_H = 0, Press_L = 0, Press_XL = 0; + Press_XL = (long)cmd_XL[0]; + Press_L = (long)cmd_L[0]; + Press_H = (long)cmd_H[0]; + // Pressure = (cmd_H[0]<<20 | cmd_H[1]<<16 | cmd_L[0]<<12 | cmd_L[1]<<8 | cmd_XL[0]<<4 | cmd_XL[1])/4096; + Pressure = (float)(Press_H << 16 | Press_L << 8 | Press_XL); + return Pressure/4096; + } + +} + \ No newline at end of file