AM2321 library

Dependents:   mbed_AM2321_copy mbed_AM2321

See http://developer.mbed.org/users/yasuyuki/notebook/AM2321/

Committer:
yasuyuki
Date:
Fri Jul 10 14:59:04 2015 +0000
Revision:
1:39f20504d5c5
Parent:
0:3656aea4e6f6
minus

Who changed what in which revision?

UserRevisionLine numberNew 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