HDC1050 Library

Committer:
zebrin1422
Date:
Sat Jul 15 07:34:15 2017 +0000
Revision:
2:d881c736c8fb
Parent:
1:db08a3faa811
Child:
3:f5ac17ccfcaf
HDC1050 Library

Who changed what in which revision?

UserRevisionLine numberNew contents of line
zebrin1422 0:771ed287f6a8 1 #include"mbed.h"
zebrin1422 0:771ed287f6a8 2 #include"HDC1050.h"
zebrin1422 0:771ed287f6a8 3
zebrin1422 0:771ed287f6a8 4 //Serial pc(USBTX, USBRX); //tx, rx
zebrin1422 0:771ed287f6a8 5
zebrin1422 0:771ed287f6a8 6 myHDC1050::myHDC1050(I2C &i2cBus){
zebrin1422 0:771ed287f6a8 7 i2c = &i2cBus;
zebrin1422 0:771ed287f6a8 8 i2c->frequency(400000);
zebrin1422 0:771ed287f6a8 9 }
zebrin1422 1:db08a3faa811 10 /**************
zebrin1422 1:db08a3faa811 11 温度、湿度を同時にとるか、個別にとるかを選択
zebrin1422 1:db08a3faa811 12 同時に取得 i=0
zebrin1422 1:db08a3faa811 13 個別に取得 i=1
zebrin1422 1:db08a3faa811 14 同時に取得(ヒーター付き) i=2
zebrin1422 1:db08a3faa811 15 ****************/
zebrin1422 0:771ed287f6a8 16 void myHDC1050::setup(int i)
zebrin1422 0:771ed287f6a8 17 {
zebrin1422 0:771ed287f6a8 18 reg = check_reg;
zebrin1422 0:771ed287f6a8 19 char cmd[3][2];
zebrin1422 0:771ed287f6a8 20 cmd[0][0] = 0x10; cmd[0][1] = 0x00;
zebrin1422 0:771ed287f6a8 21 cmd[1][0] = 0x00; cmd[1][1] = 0x00;
zebrin1422 1:db08a3faa811 22 cmd[2][0] = 0x03; cmd[2][1] = 0x00;
zebrin1422 0:771ed287f6a8 23
zebrin1422 0:771ed287f6a8 24 i2c->write(SLV_WRITE, &reg, 1, true);
zebrin1422 0:771ed287f6a8 25 i2c->write(SLV_WRITE, cmd[i], 2, false);
zebrin1422 0:771ed287f6a8 26 }
zebrin1422 1:db08a3faa811 27
zebrin1422 1:db08a3faa811 28 /******************
zebrin1422 1:db08a3faa811 29 HDC1050との接続確認
zebrin1422 1:db08a3faa811 30 0が返ってくればOK
zebrin1422 1:db08a3faa811 31 1が返ってくればError
zebrin1422 1:db08a3faa811 32 *******************/
zebrin1422 0:771ed287f6a8 33
zebrin1422 0:771ed287f6a8 34 int myHDC1050::Connection_check()
zebrin1422 0:771ed287f6a8 35 {
zebrin1422 0:771ed287f6a8 36 char reg = check_reg;
zebrin1422 0:771ed287f6a8 37 char check[2];
zebrin1422 0:771ed287f6a8 38
zebrin1422 0:771ed287f6a8 39 i2c->write(SLV_WRITE,&reg,1);
zebrin1422 0:771ed287f6a8 40 i2c->read(SLV_READ,check,2);
zebrin1422 0:771ed287f6a8 41
zebrin1422 0:771ed287f6a8 42 if(check[0] == 0x10 && check[1] == 0x50)return 0;
zebrin1422 0:771ed287f6a8 43 else return 1;
zebrin1422 0:771ed287f6a8 44
zebrin1422 0:771ed287f6a8 45 }
zebrin1422 2:d881c736c8fb 46
zebrin1422 1:db08a3faa811 47 /*************
zebrin1422 1:db08a3faa811 48 温度、湿度を取得
zebrin1422 0:771ed287f6a8 49
zebrin1422 1:db08a3faa811 50 @example
zebrin1422 1:db08a3faa811 51
zebrin1422 1:db08a3faa811 52 float temp,hum;
zebrin1422 1:db08a3faa811 53
zebrin1422 1:db08a3faa811 54 myHDC1050.setup(0); or myHDC1050.setup(2);
zebrin1422 1:db08a3faa811 55 myHDC1050.get_temp_hum(&temp,&hum);
zebrin1422 1:db08a3faa811 56 **************/
zebrin1422 0:771ed287f6a8 57 void myHDC1050::get_temp_hum(float *temp, float *hum)
zebrin1422 0:771ed287f6a8 58 {
zebrin1422 0:771ed287f6a8 59 char reg = Temperature_reg;
zebrin1422 0:771ed287f6a8 60 char buff[4];
zebrin1422 0:771ed287f6a8 61 unsigned int val[4];
zebrin1422 0:771ed287f6a8 62
zebrin1422 1:db08a3faa811 63 //setup(0);
zebrin1422 0:771ed287f6a8 64
zebrin1422 0:771ed287f6a8 65 i2c->write(SLV_WRITE, &reg,1);
zebrin1422 2:d881c736c8fb 66 wait_ms(25);
zebrin1422 0:771ed287f6a8 67 i2c->read(SLV_READ, buff,4,false);
zebrin1422 0:771ed287f6a8 68
zebrin1422 0:771ed287f6a8 69 val[0] = (unsigned int)buff[0] << 8;
zebrin1422 0:771ed287f6a8 70 val[1] = (unsigned int)buff[1];
zebrin1422 0:771ed287f6a8 71 val[2] = (unsigned int)buff[2] << 8;
zebrin1422 0:771ed287f6a8 72 val[3] = (unsigned int)buff[3];
zebrin1422 0:771ed287f6a8 73
zebrin1422 0:771ed287f6a8 74 *temp = (float)(val[0] | val[1]);
zebrin1422 0:771ed287f6a8 75 *hum = (float)(val[2] | val[3]);
zebrin1422 0:771ed287f6a8 76
zebrin1422 0:771ed287f6a8 77 *temp = *temp*165.0/65536.0 - 40.0;
zebrin1422 0:771ed287f6a8 78 *hum = *hum*100.0/65536.0;
zebrin1422 0:771ed287f6a8 79
zebrin1422 0:771ed287f6a8 80 }
zebrin1422 1:db08a3faa811 81 /*************
zebrin1422 1:db08a3faa811 82 温度を取得
zebrin1422 0:771ed287f6a8 83
zebrin1422 1:db08a3faa811 84 @example
zebrin1422 1:db08a3faa811 85
zebrin1422 1:db08a3faa811 86 float temp;
zebrin1422 1:db08a3faa811 87
zebrin1422 1:db08a3faa811 88 myHDC1050.setup(1);
zebrin1422 1:db08a3faa811 89 temp = myHDC1050.get_temp();
zebrin1422 1:db08a3faa811 90 **************/
zebrin1422 1:db08a3faa811 91 float myHDC1050::get_temp()
zebrin1422 0:771ed287f6a8 92 {
zebrin1422 0:771ed287f6a8 93 char reg = Temperature_reg;
zebrin1422 0:771ed287f6a8 94 char buff[2];
zebrin1422 0:771ed287f6a8 95 unsigned int val[2];
zebrin1422 1:db08a3faa811 96 float temp;
zebrin1422 0:771ed287f6a8 97
zebrin1422 1:db08a3faa811 98 //setup(1);
zebrin1422 0:771ed287f6a8 99
zebrin1422 0:771ed287f6a8 100 i2c->write(SLV_WRITE, &reg,1);
zebrin1422 2:d881c736c8fb 101 wait_ms(13);
zebrin1422 0:771ed287f6a8 102 i2c->read(SLV_READ, buff, 2,false);
zebrin1422 0:771ed287f6a8 103
zebrin1422 0:771ed287f6a8 104 val[0] = (unsigned int)buff[0] << 8;
zebrin1422 0:771ed287f6a8 105 val[1] = (unsigned int)buff[1];
zebrin1422 0:771ed287f6a8 106
zebrin1422 1:db08a3faa811 107 temp = (float)(val[0] | val[1]);
zebrin1422 1:db08a3faa811 108 temp = temp *165.0/65536.0 - 40.0;
zebrin1422 1:db08a3faa811 109
zebrin1422 1:db08a3faa811 110 return temp;
zebrin1422 0:771ed287f6a8 111
zebrin1422 0:771ed287f6a8 112 }
zebrin1422 1:db08a3faa811 113 /*************
zebrin1422 1:db08a3faa811 114 湿度を取得
zebrin1422 0:771ed287f6a8 115
zebrin1422 1:db08a3faa811 116 @example
zebrin1422 1:db08a3faa811 117
zebrin1422 1:db08a3faa811 118 float hum;
zebrin1422 1:db08a3faa811 119
zebrin1422 1:db08a3faa811 120 myHDC1050.setup(1);
zebrin1422 1:db08a3faa811 121 hum = myHDC1050.get_hum();
zebrin1422 1:db08a3faa811 122 **************/
zebrin1422 1:db08a3faa811 123 float myHDC1050::get_hum()
zebrin1422 0:771ed287f6a8 124 {
zebrin1422 0:771ed287f6a8 125 char reg = Humidity_reg;
zebrin1422 0:771ed287f6a8 126 char buff[2];
zebrin1422 0:771ed287f6a8 127 unsigned int val[2];
zebrin1422 1:db08a3faa811 128 float hum;
zebrin1422 0:771ed287f6a8 129
zebrin1422 2:d881c736c8fb 130 //setup(1);
zebrin1422 0:771ed287f6a8 131
zebrin1422 0:771ed287f6a8 132 i2c->write(SLV_WRITE, &reg,1);
zebrin1422 2:d881c736c8fb 133 wait_ms(13);
zebrin1422 0:771ed287f6a8 134 i2c->read(SLV_READ, buff, 2,false);
zebrin1422 0:771ed287f6a8 135
zebrin1422 0:771ed287f6a8 136 val[0] = (unsigned int)buff[0] << 8;
zebrin1422 0:771ed287f6a8 137 val[1] = (unsigned int)buff[1];
zebrin1422 0:771ed287f6a8 138
zebrin1422 1:db08a3faa811 139 hum = (float)(val[0] | val[1]);
zebrin1422 1:db08a3faa811 140 hum = hum*100.0/65536.0;
zebrin1422 0:771ed287f6a8 141
zebrin1422 1:db08a3faa811 142 return hum;
zebrin1422 1:db08a3faa811 143
zebrin1422 1:db08a3faa811 144 }