reading diff-pressure form OMRON D6F-PH0505
D6F-PH.cpp
- Committer:
- Chillee
- Date:
- 2015-06-27
- Revision:
- 0:1d476876f987
File content as of revision 0:1d476876f987:
#include "mbed.h" #include "D6F-PH.h" // Class constructor D6F_PH::D6F_PH(I2C *i2c) : _i2c(i2c){ } float D6F_PH::read_pressure(void) { char error; char rdata[2]; uint16_t raw_diff_pa; float diff_pa; error = _i2c->write(D6F_ADDR, d6f_config, 5); wait_us(40000); error |= _i2c->write(D6F_ADDR, d6f_comp_read, 4); error |= _i2c->write(D6F_ADDR, d6f_mem_read, 1, true); error |= _i2c->read(D6F_ADDR, rdata, 2); if(error) { return(error); } raw_diff_pa = (rdata[0]<<8) + rdata[1]; diff_pa = ((float)raw_diff_pa-1024)/600 - 50; return(diff_pa); } float D6F_PH::read_d6f_temp(void) { char error; char rdata[2]; uint16_t raw_ref_temp; float ref_temp; error = _i2c->write(D6F_ADDR, d6f_config, 5); wait_us(40000); error |= _i2c->write(D6F_ADDR, d6f_temp_read, 4); error |= _i2c->write(D6F_ADDR, d6f_mem_read, 1, true); error |= _i2c->read(D6F_ADDR, rdata, 2); if(error) { return(error); } raw_ref_temp = (rdata[0]<<8) + rdata[1]; ref_temp = ((float)raw_ref_temp-10214)/37.39; return(ref_temp); } uint8_t D6F_PH::init(void) { uint8_t error; // Init config cmd //d6f_config[5] = {0x00, 0xD0, 0x40, 0x18, 0x06}; d6f_config[0] = 0x00; d6f_config[1] = 0xD0; d6f_config[2] = 0x40; d6f_config[3] = 0x18; d6f_config[4] = 0x06; //d6f_comp_read[4] = {0x00, 0xD0, 0x51, 0x2C}; d6f_comp_read[0] = 0x00; d6f_comp_read[1] = 0xD0; d6f_comp_read[2] = 0x51; d6f_comp_read[3] = 0x2C; //d6f_temp_read[4] = {0x00, 0xD0, 0x61, 0x2C}; d6f_temp_read[0] = 0x00; d6f_temp_read[1] = 0xD0; d6f_temp_read[2] = 0x61; d6f_temp_read[3] = 0x2C; //d6f_mem_read[1] = {0x07}; d6f_mem_read[0] = 0x07; d6f_init[0] = 0x0B; d6f_init[1] = 0x00; error = _i2c->write(D6F_ADDR, d6f_init, 2); return(error); }