add Dewpoint

Fork of AM2321 by Y Tomohara

Committer:
HB9GAA
Date:
Tue Aug 11 09:41:47 2015 +0000
Revision:
2:dd902435d402
Parent:
1:f42b99c425e8
DewPoint

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tomozh 0:d1c0dbf5e5a6 1 /**
HB9GAA 1:f42b99c425e8 2 * AM2321 (ELcon Consuling an Engineering))
tomozh 0:d1c0dbf5e5a6 3 * Temperature and Humidity Sensor mbed library
HB9GAA 1:f42b99c425e8 4 * Last update : 2015/08/11
tomozh 0:d1c0dbf5e5a6 5 */
tomozh 0:d1c0dbf5e5a6 6
tomozh 0:d1c0dbf5e5a6 7 #ifndef __AM2321_H__
tomozh 0:d1c0dbf5e5a6 8 #define __AM2321_H__
tomozh 0:d1c0dbf5e5a6 9
tomozh 0:d1c0dbf5e5a6 10 /** AM2321 (Aosong Guangzhou Electronics)
tomozh 0:d1c0dbf5e5a6 11 * Temperature and Humidity Sensor mbed library
tomozh 0:d1c0dbf5e5a6 12 *
tomozh 0:d1c0dbf5e5a6 13 * Example:
tomozh 0:d1c0dbf5e5a6 14 * @code
tomozh 0:d1c0dbf5e5a6 15 * #include "mbed.h"
tomozh 0:d1c0dbf5e5a6 16 * #include "AM2321.h"
tomozh 0:d1c0dbf5e5a6 17 *
tomozh 0:d1c0dbf5e5a6 18 * Serial pc(USBTX, USBRX); // Tx, Rx
tomozh 0:d1c0dbf5e5a6 19 * AM2321 am2321(p28, p27); // SDA, SCL
tomozh 0:d1c0dbf5e5a6 20 *
tomozh 0:d1c0dbf5e5a6 21 * int main()
tomozh 0:d1c0dbf5e5a6 22 * {
tomozh 0:d1c0dbf5e5a6 23 * while(1)
tomozh 0:d1c0dbf5e5a6 24 * {
tomozh 0:d1c0dbf5e5a6 25 * if(am2321.poll())
tomozh 0:d1c0dbf5e5a6 26 * {
tomozh 0:d1c0dbf5e5a6 27 * pc.printf(":%05u,%.1f,%.1f\n"
tomozh 0:d1c0dbf5e5a6 28 * , count++
tomozh 0:d1c0dbf5e5a6 29 * , am2321.getTemperature()
HB9GAA 1:f42b99c425e8 30 * , am2321.getHumidity()
HB9GAA 1:f42b99c425e8 31 * , am2321.getDewpoint()
tomozh 0:d1c0dbf5e5a6 32 * );
tomozh 0:d1c0dbf5e5a6 33 * }
tomozh 0:d1c0dbf5e5a6 34 *
tomozh 0:d1c0dbf5e5a6 35 * wait(0.5);
tomozh 0:d1c0dbf5e5a6 36 * }
tomozh 0:d1c0dbf5e5a6 37 * }
tomozh 0:d1c0dbf5e5a6 38 * @endcode
tomozh 0:d1c0dbf5e5a6 39 */
tomozh 0:d1c0dbf5e5a6 40 class AM2321
tomozh 0:d1c0dbf5e5a6 41 {
tomozh 0:d1c0dbf5e5a6 42 private:
tomozh 0:d1c0dbf5e5a6 43 typedef struct tagRESULT
tomozh 0:d1c0dbf5e5a6 44 {
tomozh 0:d1c0dbf5e5a6 45 float temperature;
tomozh 0:d1c0dbf5e5a6 46 float humidity;
tomozh 0:d1c0dbf5e5a6 47 }RESULT;
tomozh 0:d1c0dbf5e5a6 48
tomozh 0:d1c0dbf5e5a6 49 public:
tomozh 0:d1c0dbf5e5a6 50 /** Constructor
tomozh 0:d1c0dbf5e5a6 51 * @param sda [in] I2C Pin name (SDA)
tomozh 0:d1c0dbf5e5a6 52 * @param scl [in] I2C Pin name (SCL)
tomozh 0:d1c0dbf5e5a6 53 */
tomozh 0:d1c0dbf5e5a6 54 AM2321(PinName sda, PinName scl);
tomozh 0:d1c0dbf5e5a6 55
tomozh 0:d1c0dbf5e5a6 56 /** Read current temperature and humidity from AM2321
tomozh 0:d1c0dbf5e5a6 57 * @return result (true=success)
tomozh 0:d1c0dbf5e5a6 58 */
tomozh 0:d1c0dbf5e5a6 59 bool poll();
tomozh 0:d1c0dbf5e5a6 60
tomozh 0:d1c0dbf5e5a6 61 /** Get last read temperature value
tomozh 0:d1c0dbf5e5a6 62 * @return temperature value (degress)
tomozh 0:d1c0dbf5e5a6 63 */
tomozh 0:d1c0dbf5e5a6 64 float getTemperature(void) const;
tomozh 0:d1c0dbf5e5a6 65
tomozh 0:d1c0dbf5e5a6 66 /** Get last read humidity value
tomozh 0:d1c0dbf5e5a6 67 * @return humidity value (%RH)
tomozh 0:d1c0dbf5e5a6 68 */
tomozh 0:d1c0dbf5e5a6 69 float getHumidity(void) const;
HB9GAA 1:f42b99c425e8 70
HB9GAA 1:f42b99c425e8 71 /** Get last read dewpoint value
HB9GAA 1:f42b99c425e8 72 * @return dewpoint value (degress)
HB9GAA 1:f42b99c425e8 73 */
HB9GAA 1:f42b99c425e8 74 float getDewpoint(void) const;
tomozh 0:d1c0dbf5e5a6 75
tomozh 0:d1c0dbf5e5a6 76 private:
tomozh 0:d1c0dbf5e5a6 77 float getLogicalValue(uint16_t regVal) const;
tomozh 0:d1c0dbf5e5a6 78 uint16_t calcCRC16(const uint8_t* src, int len) const;
tomozh 0:d1c0dbf5e5a6 79
tomozh 0:d1c0dbf5e5a6 80 I2C _i2c;
tomozh 0:d1c0dbf5e5a6 81 RESULT _result;
tomozh 0:d1c0dbf5e5a6 82 };
tomozh 0:d1c0dbf5e5a6 83
tomozh 0:d1c0dbf5e5a6 84
tomozh 0:d1c0dbf5e5a6 85 #endif // __AM2321_H__