AM2321 library
Dependents: mbed_AM2321_copy mbed_AM2321
See http://developer.mbed.org/users/yasuyuki/notebook/AM2321/
AM2321.cpp@1:39f20504d5c5, 2015-07-10 (annotated)
- Committer:
- yasuyuki
- Date:
- Fri Jul 10 14:59:04 2015 +0000
- Revision:
- 1:39f20504d5c5
- Parent:
- 0:3656aea4e6f6
minus
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
yasuyuki | 0:3656aea4e6f6 | 1 | //********************** |
yasuyuki | 0:3656aea4e6f6 | 2 | // AM2321.cpp for mbed |
yasuyuki | 0:3656aea4e6f6 | 3 | // |
yasuyuki | 0:3656aea4e6f6 | 4 | // AM2321 am2321(P0_5,P0_4); |
yasuyuki | 0:3656aea4e6f6 | 5 | // or |
yasuyuki | 0:3656aea4e6f6 | 6 | // I2C i2c(P0_5,P0_4); |
yasuyuki | 0:3656aea4e6f6 | 7 | // AM2321 am2321(i2c); |
yasuyuki | 0:3656aea4e6f6 | 8 | // |
yasuyuki | 0:3656aea4e6f6 | 9 | // (C)Copyright 2014 All rights reserved by Y.Onodera |
yasuyuki | 0:3656aea4e6f6 | 10 | // http://einstlab.web.fc2.com |
yasuyuki | 0:3656aea4e6f6 | 11 | //********************** |
yasuyuki | 0:3656aea4e6f6 | 12 | |
yasuyuki | 0:3656aea4e6f6 | 13 | #include "mbed.h" |
yasuyuki | 0:3656aea4e6f6 | 14 | #include "AM2321.h" |
yasuyuki | 0:3656aea4e6f6 | 15 | |
yasuyuki | 0:3656aea4e6f6 | 16 | AM2321::AM2321 (PinName sda, PinName scl) : _i2c(sda, scl) { |
yasuyuki | 0:3656aea4e6f6 | 17 | } |
yasuyuki | 0:3656aea4e6f6 | 18 | AM2321::AM2321 (I2C& p_i2c) : _i2c(p_i2c) { |
yasuyuki | 0:3656aea4e6f6 | 19 | } |
yasuyuki | 0:3656aea4e6f6 | 20 | |
yasuyuki | 0:3656aea4e6f6 | 21 | |
yasuyuki | 0:3656aea4e6f6 | 22 | void AM2321::get() |
yasuyuki | 0:3656aea4e6f6 | 23 | { |
yasuyuki | 0:3656aea4e6f6 | 24 | // step 1:wakeup |
yasuyuki | 0:3656aea4e6f6 | 25 | _i2c.write(AM2321_ADDR, NULL, 0); |
yasuyuki | 0:3656aea4e6f6 | 26 | wait_us(800); // 800us - 3ms |
yasuyuki | 0:3656aea4e6f6 | 27 | |
yasuyuki | 0:3656aea4e6f6 | 28 | // step 2:command |
yasuyuki | 0:3656aea4e6f6 | 29 | buf[0] = 0x03; // Get Humidity and Temperature |
yasuyuki | 0:3656aea4e6f6 | 30 | buf[1] = 0x00; // Start address |
yasuyuki | 0:3656aea4e6f6 | 31 | buf[2] = 0x04; // Length |
yasuyuki | 0:3656aea4e6f6 | 32 | _i2c.write(AM2321_ADDR, buf, 3); |
yasuyuki | 0:3656aea4e6f6 | 33 | wait_us(1500); // 1.5ms |
yasuyuki | 0:3656aea4e6f6 | 34 | |
yasuyuki | 0:3656aea4e6f6 | 35 | // step 3:data |
yasuyuki | 0:3656aea4e6f6 | 36 | _i2c.read( AM2321_ADDR, buf, 8); |
yasuyuki | 0:3656aea4e6f6 | 37 | |
yasuyuki | 0:3656aea4e6f6 | 38 | } |
yasuyuki | 0:3656aea4e6f6 | 39 | |
yasuyuki | 1:39f20504d5c5 | 40 | unsigned short AM2321::humidity() |
yasuyuki | 0:3656aea4e6f6 | 41 | { |
yasuyuki | 0:3656aea4e6f6 | 42 | |
yasuyuki | 0:3656aea4e6f6 | 43 | // get hum |
yasuyuki | 0:3656aea4e6f6 | 44 | get(); |
yasuyuki | 0:3656aea4e6f6 | 45 | hum.byte.HB=buf[2]; |
yasuyuki | 0:3656aea4e6f6 | 46 | hum.byte.LB=buf[3]; |
yasuyuki | 0:3656aea4e6f6 | 47 | return hum.Val; |
yasuyuki | 0:3656aea4e6f6 | 48 | |
yasuyuki | 0:3656aea4e6f6 | 49 | } |
yasuyuki | 0:3656aea4e6f6 | 50 | |
yasuyuki | 1:39f20504d5c5 | 51 | signed short AM2321::temperature() |
yasuyuki | 0:3656aea4e6f6 | 52 | { |
yasuyuki | 0:3656aea4e6f6 | 53 | |
yasuyuki | 0:3656aea4e6f6 | 54 | // get temp |
yasuyuki | 0:3656aea4e6f6 | 55 | get(); |
yasuyuki | 0:3656aea4e6f6 | 56 | temp.byte.HB=buf[4]; |
yasuyuki | 0:3656aea4e6f6 | 57 | temp.byte.LB=buf[5]; |
yasuyuki | 1:39f20504d5c5 | 58 | if(temp.Val&0x8000){ |
yasuyuki | 1:39f20504d5c5 | 59 | temp.Val&=0x7FFF; |
yasuyuki | 1:39f20504d5c5 | 60 | temp.Val=0xFFFF-temp.Val+1; |
yasuyuki | 1:39f20504d5c5 | 61 | } |
yasuyuki | 1:39f20504d5c5 | 62 | return temp.S; |
yasuyuki | 0:3656aea4e6f6 | 63 | |
yasuyuki | 0:3656aea4e6f6 | 64 | } |
yasuyuki | 0:3656aea4e6f6 | 65 |