gavin beardall
/
hsc
Diff: main.cpp
- Revision:
- 0:2fdc6095d7b4
- Child:
- 1:d01abb5e6f52
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Sep 07 07:27:01 2011 +0000 @@ -0,0 +1,57 @@ +#include "mbed.h" + +DigitalOut myled(LED1); + +// http://sensing.honeywell.com/index.cfm/ci_id/157750/la_id/1/document/1/re_id/0 +// http://sensing.honeywell.com/index.cfm/ci_id/156988/la_id/1/document/1/re_id/0 + +#define HSC_2A 0x28 + +int main() { + +// BMP085 bmp085(p28, p27); //bmp085(p9, p10); // sda, scl + + printf("\rhsc\n\r"); + + I2C i2c(p28, p27); + + int id = HSC_2A; + + i2c.frequency(100000); // 100k - 400k + + while(1) { + +#if 0 + i2c.start(); + i2c.write((id<<1) | 1); + int b1 = i2c.read(1); + int b2 = i2c.read(1); + int t1 = i2c.read(1); + int t2 = i2c.read(0); + i2c.stop(); + printf("%02X %02X %02X %02X\n\r", b1, b2, t1, t2); +#else + unsigned char data[4]; + i2c.read((id<<1)|1, (char*)data, sizeof(data)); + //printf("%02X %02X %02X %02X\n\r", data[0], data[1], data[2], data[3]); + int st = data[0]>>6; // status + int bd = ((data[0] & 0x3f) << 8) | data[1]; // bridge data + int td = ((data[2]<<8) | data[3]) >> 5; // temp data + + float p = ((float)bd-1638)*(15-0)/(14745-1638)-0; // convert to psi + p = p * 68.9475729; // psi to hPa + + float t = (((float)td*200)/2047)-50; // convert to deg C + printf("%d: %.2f hPa %.2f C\n\r", st, p, t); + + wait(1); +#endif + + myled = 1; + wait(0.2); + myled = 0; + wait(0.2); + + } // while + +} // main