AM2321 library
Dependents: mbed_AM2321_copy mbed_AM2321
AM2321.cpp
00001 //********************** 00002 // AM2321.cpp for mbed 00003 // 00004 // AM2321 am2321(P0_5,P0_4); 00005 // or 00006 // I2C i2c(P0_5,P0_4); 00007 // AM2321 am2321(i2c); 00008 // 00009 // (C)Copyright 2014 All rights reserved by Y.Onodera 00010 // http://einstlab.web.fc2.com 00011 //********************** 00012 00013 #include "mbed.h" 00014 #include "AM2321.h" 00015 00016 AM2321::AM2321 (PinName sda, PinName scl) : _i2c(sda, scl) { 00017 } 00018 AM2321::AM2321 (I2C& p_i2c) : _i2c(p_i2c) { 00019 } 00020 00021 00022 void AM2321::get() 00023 { 00024 // step 1:wakeup 00025 _i2c.write(AM2321_ADDR, NULL, 0); 00026 wait_us(800); // 800us - 3ms 00027 00028 // step 2:command 00029 buf[0] = 0x03; // Get Humidity and Temperature 00030 buf[1] = 0x00; // Start address 00031 buf[2] = 0x04; // Length 00032 _i2c.write(AM2321_ADDR, buf, 3); 00033 wait_us(1500); // 1.5ms 00034 00035 // step 3:data 00036 _i2c.read( AM2321_ADDR, buf, 8); 00037 00038 } 00039 00040 unsigned short AM2321::humidity() 00041 { 00042 00043 // get hum 00044 get(); 00045 hum.byte.HB=buf[2]; 00046 hum.byte.LB=buf[3]; 00047 return hum.Val; 00048 00049 } 00050 00051 signed short AM2321::temperature() 00052 { 00053 00054 // get temp 00055 get(); 00056 temp.byte.HB=buf[4]; 00057 temp.byte.LB=buf[5]; 00058 if(temp.Val&0x8000){ 00059 temp.Val&=0x7FFF; 00060 temp.Val=0xFFFF-temp.Val+1; 00061 } 00062 return temp.S; 00063 00064 } 00065
Generated on Thu Aug 11 2022 20:30:56 by 1.7.2