HDC1050 Library

Committer:
zebrin1422
Date:
Wed May 02 18:12:07 2018 +0000
Revision:
4:daaadb8bc892
Parent:
1:db08a3faa811
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 4:daaadb8bc892 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 1:db08a3faa811 46 /*************
zebrin1422 1:db08a3faa811 47 温度、湿度を取得
zebrin1422 0:771ed287f6a8 48
zebrin1422 1:db08a3faa811 49 @example
zebrin1422 1:db08a3faa811 50
zebrin1422 1:db08a3faa811 51 float temp,hum;
zebrin1422 1:db08a3faa811 52
zebrin1422 1:db08a3faa811 53 myHDC1050.setup(0); or myHDC1050.setup(2);
zebrin1422 1:db08a3faa811 54 myHDC1050.get_temp_hum(&temp,&hum);
zebrin1422 1:db08a3faa811 55 **************/
zebrin1422 0:771ed287f6a8 56 void myHDC1050::get_temp_hum(float *temp, float *hum)
zebrin1422 0:771ed287f6a8 57 {
zebrin1422 0:771ed287f6a8 58 char reg = Temperature_reg;
zebrin1422 0:771ed287f6a8 59 char buff[4];
zebrin1422 0:771ed287f6a8 60 unsigned int val[4];
zebrin1422 0:771ed287f6a8 61
zebrin1422 1:db08a3faa811 62 //setup(0);
zebrin1422 0:771ed287f6a8 63
zebrin1422 0:771ed287f6a8 64 i2c->write(SLV_WRITE, &reg,1);
zebrin1422 0:771ed287f6a8 65 wait_ms(250);
zebrin1422 0:771ed287f6a8 66 i2c->read(SLV_READ, buff,4,false);
zebrin1422 0:771ed287f6a8 67
zebrin1422 0:771ed287f6a8 68 val[0] = (unsigned int)buff[0] << 8;
zebrin1422 0:771ed287f6a8 69 val[1] = (unsigned int)buff[1];
zebrin1422 0:771ed287f6a8 70 val[2] = (unsigned int)buff[2] << 8;
zebrin1422 0:771ed287f6a8 71 val[3] = (unsigned int)buff[3];
zebrin1422 0:771ed287f6a8 72
zebrin1422 0:771ed287f6a8 73 *temp = (float)(val[0] | val[1]);
zebrin1422 0:771ed287f6a8 74 *hum = (float)(val[2] | val[3]);
zebrin1422 0:771ed287f6a8 75
zebrin1422 0:771ed287f6a8 76 *temp = *temp*165.0/65536.0 - 40.0;
zebrin1422 0:771ed287f6a8 77 *hum = *hum*100.0/65536.0;
zebrin1422 0:771ed287f6a8 78
zebrin1422 0:771ed287f6a8 79 }
zebrin1422 1:db08a3faa811 80 /*************
zebrin1422 1:db08a3faa811 81 温度を取得
zebrin1422 0:771ed287f6a8 82
zebrin1422 1:db08a3faa811 83 @example
zebrin1422 1:db08a3faa811 84
zebrin1422 1:db08a3faa811 85 float temp;
zebrin1422 1:db08a3faa811 86
zebrin1422 1:db08a3faa811 87 myHDC1050.setup(1);
zebrin1422 1:db08a3faa811 88 temp = myHDC1050.get_temp();
zebrin1422 1:db08a3faa811 89 **************/
zebrin1422 1:db08a3faa811 90 float myHDC1050::get_temp()
zebrin1422 0:771ed287f6a8 91 {
zebrin1422 0:771ed287f6a8 92 char reg = Temperature_reg;
zebrin1422 0:771ed287f6a8 93 char buff[2];
zebrin1422 0:771ed287f6a8 94 unsigned int val[2];
zebrin1422 1:db08a3faa811 95 float temp;
zebrin1422 0:771ed287f6a8 96
zebrin1422 1:db08a3faa811 97 //setup(1);
zebrin1422 0:771ed287f6a8 98
zebrin1422 0:771ed287f6a8 99 i2c->write(SLV_WRITE, &reg,1);
zebrin1422 0:771ed287f6a8 100 wait_ms(130);
zebrin1422 0:771ed287f6a8 101 i2c->read(SLV_READ, buff, 2,false);
zebrin1422 0:771ed287f6a8 102
zebrin1422 0:771ed287f6a8 103 val[0] = (unsigned int)buff[0] << 8;
zebrin1422 0:771ed287f6a8 104 val[1] = (unsigned int)buff[1];
zebrin1422 0:771ed287f6a8 105
zebrin1422 1:db08a3faa811 106 temp = (float)(val[0] | val[1]);
zebrin1422 1:db08a3faa811 107 temp = temp *165.0/65536.0 - 40.0;
zebrin1422 1:db08a3faa811 108
zebrin1422 1:db08a3faa811 109 return temp;
zebrin1422 0:771ed287f6a8 110
zebrin1422 0:771ed287f6a8 111 }
zebrin1422 1:db08a3faa811 112 /*************
zebrin1422 1:db08a3faa811 113 湿度を取得
zebrin1422 0:771ed287f6a8 114
zebrin1422 1:db08a3faa811 115 @example
zebrin1422 1:db08a3faa811 116
zebrin1422 1:db08a3faa811 117 float hum;
zebrin1422 1:db08a3faa811 118
zebrin1422 1:db08a3faa811 119 myHDC1050.setup(1);
zebrin1422 1:db08a3faa811 120 hum = myHDC1050.get_hum();
zebrin1422 1:db08a3faa811 121 **************/
zebrin1422 1:db08a3faa811 122 float myHDC1050::get_hum()
zebrin1422 0:771ed287f6a8 123 {
zebrin1422 0:771ed287f6a8 124 char reg = Humidity_reg;
zebrin1422 0:771ed287f6a8 125 char buff[2];
zebrin1422 0:771ed287f6a8 126 unsigned int val[2];
zebrin1422 1:db08a3faa811 127 float hum;
zebrin1422 0:771ed287f6a8 128
zebrin1422 0:771ed287f6a8 129 setup(1);
zebrin1422 0:771ed287f6a8 130
zebrin1422 0:771ed287f6a8 131 i2c->write(SLV_WRITE, &reg,1);
zebrin1422 0:771ed287f6a8 132 wait_ms(130);
zebrin1422 0:771ed287f6a8 133 i2c->read(SLV_READ, buff, 2,false);
zebrin1422 0:771ed287f6a8 134
zebrin1422 0:771ed287f6a8 135 val[0] = (unsigned int)buff[0] << 8;
zebrin1422 0:771ed287f6a8 136 val[1] = (unsigned int)buff[1];
zebrin1422 0:771ed287f6a8 137
zebrin1422 1:db08a3faa811 138 hum = (float)(val[0] | val[1]);
zebrin1422 1:db08a3faa811 139 hum = hum*100.0/65536.0;
zebrin1422 0:771ed287f6a8 140
zebrin1422 1:db08a3faa811 141 return hum;
zebrin1422 1:db08a3faa811 142
zebrin1422 1:db08a3faa811 143 }