AM2321 library
Dependents: mbed_AM2321_copy mbed_AM2321
See http://developer.mbed.org/users/yasuyuki/notebook/AM2321/
AM2321.cpp
- Committer:
- yasuyuki
- Date:
- 2015-07-10
- Revision:
- 1:39f20504d5c5
- Parent:
- 0:3656aea4e6f6
File content as of revision 1:39f20504d5c5:
//********************** // AM2321.cpp for mbed // // AM2321 am2321(P0_5,P0_4); // or // I2C i2c(P0_5,P0_4); // AM2321 am2321(i2c); // // (C)Copyright 2014 All rights reserved by Y.Onodera // http://einstlab.web.fc2.com //********************** #include "mbed.h" #include "AM2321.h" AM2321::AM2321 (PinName sda, PinName scl) : _i2c(sda, scl) { } AM2321::AM2321 (I2C& p_i2c) : _i2c(p_i2c) { } void AM2321::get() { // step 1:wakeup _i2c.write(AM2321_ADDR, NULL, 0); wait_us(800); // 800us - 3ms // step 2:command buf[0] = 0x03; // Get Humidity and Temperature buf[1] = 0x00; // Start address buf[2] = 0x04; // Length _i2c.write(AM2321_ADDR, buf, 3); wait_us(1500); // 1.5ms // step 3:data _i2c.read( AM2321_ADDR, buf, 8); } unsigned short AM2321::humidity() { // get hum get(); hum.byte.HB=buf[2]; hum.byte.LB=buf[3]; return hum.Val; } signed short AM2321::temperature() { // get temp get(); temp.byte.HB=buf[4]; temp.byte.LB=buf[5]; if(temp.Val&0x8000){ temp.Val&=0x7FFF; temp.Val=0xFFFF-temp.Val+1; } return temp.S; }