AM2320 library

Dependents:   mbed_AM2320 Fungi Fungi Nucleo_SSD1306_DS1302_ESP8266_AM2320_BME280 ... more

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

Committer:
yasuyuki
Date:
Fri Jul 10 14:56:41 2015 +0000
Revision:
1:766868b34d56
Parent:
0:2cb35c995095
minus

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yasuyuki 0:2cb35c995095 1 //**********************
yasuyuki 0:2cb35c995095 2 // AM2320.cpp for mbed
yasuyuki 0:2cb35c995095 3 //
yasuyuki 0:2cb35c995095 4 // AM2320 am2320(P0_5,P0_4);
yasuyuki 0:2cb35c995095 5 // or
yasuyuki 0:2cb35c995095 6 // I2C i2c(P0_5,P0_4);
yasuyuki 0:2cb35c995095 7 // AM2320 am2320(i2c);
yasuyuki 0:2cb35c995095 8 //
yasuyuki 0:2cb35c995095 9 // (C)Copyright 2015 All rights reserved by Y.Onodera
yasuyuki 0:2cb35c995095 10 // http://einstlab.web.fc2.com
yasuyuki 0:2cb35c995095 11 //**********************
yasuyuki 0:2cb35c995095 12
yasuyuki 0:2cb35c995095 13 #include "mbed.h"
yasuyuki 0:2cb35c995095 14 #include "AM2320.h"
yasuyuki 0:2cb35c995095 15
yasuyuki 0:2cb35c995095 16 AM2320::AM2320 (PinName sda, PinName scl) : _i2c(sda, scl) {
yasuyuki 0:2cb35c995095 17 }
yasuyuki 0:2cb35c995095 18 AM2320::AM2320 (I2C& p_i2c) : _i2c(p_i2c) {
yasuyuki 0:2cb35c995095 19 }
yasuyuki 0:2cb35c995095 20
yasuyuki 0:2cb35c995095 21
yasuyuki 0:2cb35c995095 22 void AM2320::get()
yasuyuki 0:2cb35c995095 23 {
yasuyuki 0:2cb35c995095 24 // step 1:wakeup
yasuyuki 0:2cb35c995095 25 _i2c.write(AM2320_ADDR, NULL, 0);
yasuyuki 0:2cb35c995095 26 wait_us(800); // 800us - 3ms
yasuyuki 0:2cb35c995095 27
yasuyuki 0:2cb35c995095 28 // step 2:command
yasuyuki 0:2cb35c995095 29 buf[0] = 0x03; // Get Humidity and Temperature
yasuyuki 0:2cb35c995095 30 buf[1] = 0x00; // Start address
yasuyuki 0:2cb35c995095 31 buf[2] = 0x04; // Length
yasuyuki 0:2cb35c995095 32 _i2c.write(AM2320_ADDR, buf, 3);
yasuyuki 0:2cb35c995095 33 wait_us(1500); // 1.5ms
yasuyuki 0:2cb35c995095 34
yasuyuki 0:2cb35c995095 35 // step 3:data
yasuyuki 0:2cb35c995095 36 _i2c.read( AM2320_ADDR, buf, 8);
yasuyuki 0:2cb35c995095 37
yasuyuki 0:2cb35c995095 38 }
yasuyuki 0:2cb35c995095 39
yasuyuki 1:766868b34d56 40 unsigned short AM2320::humidity()
yasuyuki 0:2cb35c995095 41 {
yasuyuki 0:2cb35c995095 42
yasuyuki 0:2cb35c995095 43 // get hum
yasuyuki 0:2cb35c995095 44 get();
yasuyuki 0:2cb35c995095 45 hum.byte.HB=buf[2];
yasuyuki 0:2cb35c995095 46 hum.byte.LB=buf[3];
yasuyuki 0:2cb35c995095 47 return hum.Val;
yasuyuki 0:2cb35c995095 48
yasuyuki 0:2cb35c995095 49 }
yasuyuki 0:2cb35c995095 50
yasuyuki 1:766868b34d56 51 signed short AM2320::temperature()
yasuyuki 0:2cb35c995095 52 {
yasuyuki 0:2cb35c995095 53
yasuyuki 0:2cb35c995095 54 // get temp
yasuyuki 0:2cb35c995095 55 get();
yasuyuki 0:2cb35c995095 56 temp.byte.HB=buf[4];
yasuyuki 0:2cb35c995095 57 temp.byte.LB=buf[5];
yasuyuki 1:766868b34d56 58 if(temp.Val&0x8000){
yasuyuki 1:766868b34d56 59 temp.Val&=0x7FFF;
yasuyuki 1:766868b34d56 60 temp.Val=0xFFFF-temp.Val+1;
yasuyuki 1:766868b34d56 61 }
yasuyuki 1:766868b34d56 62 return temp.S;
yasuyuki 0:2cb35c995095 63
yasuyuki 0:2cb35c995095 64 }
yasuyuki 0:2cb35c995095 65
yasuyuki 1:766868b34d56 66