HDC1000 library

Dependents:   Condensation_Monitor mbed_HDC1000 BLE_Condensation_Monitor GR-PEACH_TAMORI

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

Committer:
yasuyuki
Date:
Fri Jul 10 15:00:59 2015 +0000
Revision:
1:45126276dbf3
Parent:
0:82c214412005
unsigned short

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yasuyuki 0:82c214412005 1 //**********************
yasuyuki 0:82c214412005 2 // HDC1000.cpp for mbed
yasuyuki 0:82c214412005 3 //
yasuyuki 0:82c214412005 4 // HDC1000 hdc1000(P0_5,P0_4);
yasuyuki 0:82c214412005 5 // or
yasuyuki 0:82c214412005 6 // I2C i2c(P0_5,P0_4);
yasuyuki 0:82c214412005 7 // HDC1000 hdc1000(i2c);
yasuyuki 0:82c214412005 8 //
yasuyuki 0:82c214412005 9 // (C)Copyright 2015 All rights reserved by Y.Onodera
yasuyuki 0:82c214412005 10 // http://einstlab.web.fc2.com
yasuyuki 0:82c214412005 11 //**********************
yasuyuki 0:82c214412005 12
yasuyuki 0:82c214412005 13 #include "mbed.h"
yasuyuki 0:82c214412005 14 #include "HDC1000.h"
yasuyuki 0:82c214412005 15
yasuyuki 0:82c214412005 16 HDC1000::HDC1000 (PinName sda, PinName scl) : _i2c(sda, scl) {
yasuyuki 0:82c214412005 17 init();
yasuyuki 0:82c214412005 18 }
yasuyuki 0:82c214412005 19 HDC1000::HDC1000 (I2C& p_i2c) : _i2c(p_i2c) {
yasuyuki 0:82c214412005 20 init();
yasuyuki 0:82c214412005 21 }
yasuyuki 0:82c214412005 22
yasuyuki 0:82c214412005 23
yasuyuki 0:82c214412005 24 void HDC1000::get()
yasuyuki 0:82c214412005 25 {
yasuyuki 0:82c214412005 26
yasuyuki 0:82c214412005 27 // Trigger
yasuyuki 0:82c214412005 28 buf[0] = 0x00; // Pointer
yasuyuki 1:45126276dbf3 29 _i2c.write(HDC1000_ADDR, buf, 1); // with stop
yasuyuki 0:82c214412005 30
yasuyuki 0:82c214412005 31 // Wait 6.35ms + 6.5ms
yasuyuki 0:82c214412005 32 wait_ms(20);
yasuyuki 0:82c214412005 33
yasuyuki 0:82c214412005 34 // get data
yasuyuki 0:82c214412005 35 _i2c.read( HDC1000_ADDR, buf, 4);
yasuyuki 0:82c214412005 36
yasuyuki 0:82c214412005 37 }
yasuyuki 0:82c214412005 38
yasuyuki 1:45126276dbf3 39 unsigned short HDC1000::humidity()
yasuyuki 0:82c214412005 40 {
yasuyuki 0:82c214412005 41
yasuyuki 0:82c214412005 42 // get hum
yasuyuki 0:82c214412005 43 get();
yasuyuki 0:82c214412005 44 hum.byte.HB=buf[2];
yasuyuki 0:82c214412005 45 hum.byte.LB=buf[3];
yasuyuki 0:82c214412005 46 return hum.Val;
yasuyuki 0:82c214412005 47
yasuyuki 0:82c214412005 48 }
yasuyuki 0:82c214412005 49
yasuyuki 1:45126276dbf3 50 unsigned short HDC1000::temperature()
yasuyuki 0:82c214412005 51 {
yasuyuki 0:82c214412005 52
yasuyuki 0:82c214412005 53 // get temp
yasuyuki 0:82c214412005 54 get();
yasuyuki 0:82c214412005 55 temp.byte.HB=buf[0];
yasuyuki 0:82c214412005 56 temp.byte.LB=buf[1];
yasuyuki 0:82c214412005 57 return temp.Val;
yasuyuki 0:82c214412005 58
yasuyuki 0:82c214412005 59 }
yasuyuki 0:82c214412005 60
yasuyuki 0:82c214412005 61 void HDC1000::init()
yasuyuki 0:82c214412005 62 {
yasuyuki 1:45126276dbf3 63
yasuyuki 1:45126276dbf3 64 wait_ms(15);
yasuyuki 1:45126276dbf3 65
yasuyuki 0:82c214412005 66 // Set configuration
yasuyuki 0:82c214412005 67 buf[0] = 0x02; // Pointer
yasuyuki 0:82c214412005 68 buf[1] = 0x10; // High byte
yasuyuki 0:82c214412005 69 buf[2] = 0x00; // Low byte
yasuyuki 0:82c214412005 70 _i2c.write(HDC1000_ADDR, buf, 3);
yasuyuki 0:82c214412005 71 }
yasuyuki 0:82c214412005 72
yasuyuki 0:82c214412005 73
yasuyuki 1:45126276dbf3 74