HDC1050 Library

Committer:
zebrin1422
Date:
Sat Jul 08 17:56:35 2017 +0000
Revision:
0:771ed287f6a8
Child:
1:db08a3faa811
HDC1050 ?????

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 0:771ed287f6a8 10
zebrin1422 0:771ed287f6a8 11 void myHDC1050::setup(int i)
zebrin1422 0:771ed287f6a8 12 {
zebrin1422 0:771ed287f6a8 13 reg = check_reg;
zebrin1422 0:771ed287f6a8 14 char cmd[3][2];
zebrin1422 0:771ed287f6a8 15 cmd[0][0] = 0x10; cmd[0][1] = 0x00;
zebrin1422 0:771ed287f6a8 16 cmd[1][0] = 0x00; cmd[1][1] = 0x00;
zebrin1422 0:771ed287f6a8 17 cmd[1][0] = 0x03; cmd[3][1] = 0x00;
zebrin1422 0:771ed287f6a8 18
zebrin1422 0:771ed287f6a8 19 i2c->write(SLV_WRITE, &reg, 1, true);
zebrin1422 0:771ed287f6a8 20 i2c->write(SLV_WRITE, cmd[i], 2, false);
zebrin1422 0:771ed287f6a8 21 }
zebrin1422 0:771ed287f6a8 22
zebrin1422 0:771ed287f6a8 23 int myHDC1050::Connection_check()
zebrin1422 0:771ed287f6a8 24 {
zebrin1422 0:771ed287f6a8 25 char reg = check_reg;
zebrin1422 0:771ed287f6a8 26 char check[2];
zebrin1422 0:771ed287f6a8 27
zebrin1422 0:771ed287f6a8 28 i2c->write(SLV_WRITE,&reg,1);
zebrin1422 0:771ed287f6a8 29 i2c->read(SLV_READ,check,2);
zebrin1422 0:771ed287f6a8 30
zebrin1422 0:771ed287f6a8 31 if(check[0] == 0x10 && check[1] == 0x50)return 0;
zebrin1422 0:771ed287f6a8 32 else return 1;
zebrin1422 0:771ed287f6a8 33
zebrin1422 0:771ed287f6a8 34 }
zebrin1422 0:771ed287f6a8 35
zebrin1422 0:771ed287f6a8 36 void myHDC1050::get_temp_hum(float *temp, float *hum)
zebrin1422 0:771ed287f6a8 37 {
zebrin1422 0:771ed287f6a8 38 char reg = Temperature_reg;
zebrin1422 0:771ed287f6a8 39 char buff[4];
zebrin1422 0:771ed287f6a8 40 unsigned int val[4];
zebrin1422 0:771ed287f6a8 41
zebrin1422 0:771ed287f6a8 42 setup(0);
zebrin1422 0:771ed287f6a8 43
zebrin1422 0:771ed287f6a8 44 i2c->write(SLV_WRITE, &reg,1);
zebrin1422 0:771ed287f6a8 45 wait_ms(250);
zebrin1422 0:771ed287f6a8 46 i2c->read(SLV_READ, buff,4,false);
zebrin1422 0:771ed287f6a8 47
zebrin1422 0:771ed287f6a8 48 val[0] = (unsigned int)buff[0] << 8;
zebrin1422 0:771ed287f6a8 49 val[1] = (unsigned int)buff[1];
zebrin1422 0:771ed287f6a8 50 val[2] = (unsigned int)buff[2] << 8;
zebrin1422 0:771ed287f6a8 51 val[3] = (unsigned int)buff[3];
zebrin1422 0:771ed287f6a8 52
zebrin1422 0:771ed287f6a8 53 *temp = (float)(val[0] | val[1]);
zebrin1422 0:771ed287f6a8 54 *hum = (float)(val[2] | val[3]);
zebrin1422 0:771ed287f6a8 55
zebrin1422 0:771ed287f6a8 56 *temp = *temp*165.0/65536.0 - 40.0;
zebrin1422 0:771ed287f6a8 57 *hum = *hum*100.0/65536.0;
zebrin1422 0:771ed287f6a8 58
zebrin1422 0:771ed287f6a8 59 }
zebrin1422 0:771ed287f6a8 60
zebrin1422 0:771ed287f6a8 61 void myHDC1050::get_temp(float *temp)
zebrin1422 0:771ed287f6a8 62 {
zebrin1422 0:771ed287f6a8 63 char reg = Temperature_reg;
zebrin1422 0:771ed287f6a8 64 char buff[2];
zebrin1422 0:771ed287f6a8 65 unsigned int val[2];
zebrin1422 0:771ed287f6a8 66
zebrin1422 0:771ed287f6a8 67 setup(1);
zebrin1422 0:771ed287f6a8 68
zebrin1422 0:771ed287f6a8 69 i2c->write(SLV_WRITE, &reg,1);
zebrin1422 0:771ed287f6a8 70 wait_ms(130);
zebrin1422 0:771ed287f6a8 71 i2c->read(SLV_READ, buff, 2,false);
zebrin1422 0:771ed287f6a8 72
zebrin1422 0:771ed287f6a8 73 val[0] = (unsigned int)buff[0] << 8;
zebrin1422 0:771ed287f6a8 74 val[1] = (unsigned int)buff[1];
zebrin1422 0:771ed287f6a8 75
zebrin1422 0:771ed287f6a8 76 *temp = (float)(val[0] | val[1]);
zebrin1422 0:771ed287f6a8 77 *temp = *temp *165.0/65536.0 - 40.0;
zebrin1422 0:771ed287f6a8 78
zebrin1422 0:771ed287f6a8 79 }
zebrin1422 0:771ed287f6a8 80
zebrin1422 0:771ed287f6a8 81 void myHDC1050::get_hum(float *hum)
zebrin1422 0:771ed287f6a8 82 {
zebrin1422 0:771ed287f6a8 83 char reg = Humidity_reg;
zebrin1422 0:771ed287f6a8 84 char buff[2];
zebrin1422 0:771ed287f6a8 85 unsigned int val[2];
zebrin1422 0:771ed287f6a8 86
zebrin1422 0:771ed287f6a8 87 setup(1);
zebrin1422 0:771ed287f6a8 88
zebrin1422 0:771ed287f6a8 89 i2c->write(SLV_WRITE, &reg,1);
zebrin1422 0:771ed287f6a8 90 wait_ms(130);
zebrin1422 0:771ed287f6a8 91 i2c->read(SLV_READ, buff, 2,false);
zebrin1422 0:771ed287f6a8 92
zebrin1422 0:771ed287f6a8 93 val[0] = (unsigned int)buff[0] << 8;
zebrin1422 0:771ed287f6a8 94 val[1] = (unsigned int)buff[1];
zebrin1422 0:771ed287f6a8 95
zebrin1422 0:771ed287f6a8 96 *hum = (float)(val[0] | val[1]);
zebrin1422 0:771ed287f6a8 97 *hum = *hum*100.0/65536.0;
zebrin1422 0:771ed287f6a8 98
zebrin1422 0:771ed287f6a8 99 }
zebrin1422 0:771ed287f6a8 100
zebrin1422 0:771ed287f6a8 101 void myHDC1050::get_temp_hater(float *temp)
zebrin1422 0:771ed287f6a8 102 {
zebrin1422 0:771ed287f6a8 103 char reg = Temperature_reg;
zebrin1422 0:771ed287f6a8 104 char buff[2];
zebrin1422 0:771ed287f6a8 105 unsigned int val[2];
zebrin1422 0:771ed287f6a8 106
zebrin1422 0:771ed287f6a8 107 setup(2);
zebrin1422 0:771ed287f6a8 108
zebrin1422 0:771ed287f6a8 109 i2c->write(SLV_WRITE, &reg,1);
zebrin1422 0:771ed287f6a8 110 wait_ms(130);
zebrin1422 0:771ed287f6a8 111 i2c->read(SLV_READ, buff, 2,false);
zebrin1422 0:771ed287f6a8 112
zebrin1422 0:771ed287f6a8 113 val[0] = (unsigned int)buff[0] << 8;
zebrin1422 0:771ed287f6a8 114 val[1] = (unsigned int)buff[1];
zebrin1422 0:771ed287f6a8 115
zebrin1422 0:771ed287f6a8 116 *temp = (float)(val[0] | val[1]);
zebrin1422 0:771ed287f6a8 117 *temp = *temp *165.0/65536.0 - 40.0;
zebrin1422 0:771ed287f6a8 118
zebrin1422 0:771ed287f6a8 119 }