オムロンのMEMS熱センサー
Dependents: YOZAKURA_ARM YOZAKURA_ARM_USB YOZAKURA_ARM_USB_Keyboard
Diff: MEMS.cpp
- Revision:
- 0:42f5bfa6b545
- Child:
- 1:17f329471d0c
diff -r 000000000000 -r 42f5bfa6b545 MEMS.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MEMS.cpp Tue Mar 31 09:46:21 2015 +0000 @@ -0,0 +1,36 @@ +#include "MEMS.h" +#include "mbed.h" + +MEMS::MEMS(PinName sda, PinName scl) + : _mems(sda, scl) { + +} + +double MEMS::temp(double* datr) { + + char I2C_rd[64]; // 生データ +// short datr[16]; // 16点 温度データ(10倍整数) + short PTAT; // センサ内部PTAT温度データ(10倍整数) + double dt[16]; // 16点 温度データ + short d_PTAT; // センサ内部PTAT温度データ + int i,j; + int itemp; + + //// measure + _mems.start(); + _mems.write(D6T_addr); + _mems.write(D6T_cmd); + // Repeated Start condition + _mems.read(D6T_addr,I2C_rd,35); +// if(check_PEC(I2C_rd) == -1) continue; // error + for(i=0,j=0;i<17;i++){ + itemp = (I2C_rd[j++] & 0xff); + itemp += I2C_rd[j++] * 256; + if(i == 0) PTAT = itemp; + else datr[i-1] = itemp; + } + for(i=0;i<16;i++){ + dt[i] = 0.1 * datr[i]; + } + d_PTAT = 0.1 * PTAT; +} \ No newline at end of file