1
1
#include " DFRobot_SHT20.h"
2
2
3
- void DFRobot_SHT20::initSHT20 (TwoWire &wirePort)
4
- {
3
+ void DFRobot_SHT20::initSHT20 (TwoWire &wirePort) {
5
4
i2cPort = &wirePort;
6
5
i2cPort->begin ();
7
6
}
8
7
9
- uint16_t DFRobot_SHT20::readValue (byte cmd)
10
- {
8
+ uint16_t DFRobot_SHT20::readValue (byte cmd) {
11
9
i2cPort->beginTransmission (SLAVE_ADDRESS);
12
10
i2cPort->write (cmd);
13
11
i2cPort->endTransmission ();
14
12
byte toRead;
15
13
byte counter;
16
- for (counter = 0 , toRead = 0 ; counter < MAX_COUNTER && toRead != 3 ; counter++){
14
+ for (counter = 0 , toRead = 0 ; counter < MAX_COUNTER && toRead != 3 ;
15
+ counter++) {
17
16
delay (DELAY_INTERVAL);
18
17
toRead = i2cPort->requestFrom (SLAVE_ADDRESS, 3 );
19
18
}
20
- if (counter == MAX_COUNTER){
19
+ if (counter == MAX_COUNTER) {
21
20
return (ERROR_I2C_TIMEOUT);
22
21
}
23
22
byte msb, lsb, checksum;
24
- msb = i2cPort->read ();
25
- lsb = i2cPort->read ();
26
- checksum = i2cPort->read ();
27
- uint16_t rawValue = ((uint16_t ) msb << 8 ) | (uint16_t ) lsb;
28
- if (checkCRC (rawValue, checksum) != 0 ){
23
+ msb = i2cPort->read ();
24
+ lsb = i2cPort->read ();
25
+ checksum = i2cPort->read ();
26
+ uint16_t rawValue = ((uint16_t )msb << 8 ) | (uint16_t )lsb;
27
+ if (checkCRC (rawValue, checksum) != 0 ) {
29
28
return (ERROR_BAD_CRC);
30
29
}
31
30
return rawValue & 0xFFFC ;
32
31
}
33
32
34
- float DFRobot_SHT20::readHumidity (void )
35
- {
33
+ float DFRobot_SHT20::readHumidity (void ) {
36
34
uint16_t rawHumidity = readValue (TRIGGER_HUMD_MEASURE_NOHOLD);
37
- if (rawHumidity == ERROR_I2C_TIMEOUT || rawHumidity == ERROR_BAD_CRC){
38
- return (rawHumidity);
35
+ if (rawHumidity == ERROR_I2C_TIMEOUT || rawHumidity == ERROR_BAD_CRC) {
36
+ return (rawHumidity);
39
37
}
40
38
float tempRH = rawHumidity * (125.0 / 65536.0 );
41
- float rh = tempRH - 6.0 ;
39
+ float rh = tempRH - 6.0 ;
42
40
return (rh);
43
41
}
44
42
45
- float DFRobot_SHT20::readTemperature (void )
46
- {
43
+ float DFRobot_SHT20::readTemperature (void ) {
47
44
uint16_t rawTemperature = readValue (TRIGGER_TEMP_MEASURE_NOHOLD);
48
- if (rawTemperature == ERROR_I2C_TIMEOUT || rawTemperature == ERROR_BAD_CRC){
49
- return (rawTemperature);
45
+ if (rawTemperature == ERROR_I2C_TIMEOUT ||
46
+ rawTemperature == ERROR_BAD_CRC) {
47
+ return (rawTemperature);
50
48
}
51
49
float tempTemperature = rawTemperature * (175.72 / 65536.0 );
52
50
float realTemperature = tempTemperature - 46.85 ;
53
51
return (realTemperature);
54
52
}
55
53
56
- void DFRobot_SHT20::setResolution (byte resolution)
57
- {
54
+ void DFRobot_SHT20::setResolution (byte resolution) {
58
55
byte userRegister = readUserRegister ();
59
56
userRegister &= B01111110;
60
57
resolution &= B10000001;
61
58
userRegister |= resolution;
62
59
writeUserRegister (userRegister);
63
60
}
64
61
65
- byte DFRobot_SHT20::readUserRegister (void )
66
- {
62
+ byte DFRobot_SHT20::readUserRegister (void ) {
67
63
byte userRegister;
68
64
i2cPort->beginTransmission (SLAVE_ADDRESS);
69
65
i2cPort->write (READ_USER_REG);
@@ -73,40 +69,37 @@ byte DFRobot_SHT20::readUserRegister(void)
73
69
return (userRegister);
74
70
}
75
71
76
- void DFRobot_SHT20::writeUserRegister (byte val)
77
- {
72
+ void DFRobot_SHT20::writeUserRegister (byte val) {
78
73
i2cPort->beginTransmission (SLAVE_ADDRESS);
79
74
i2cPort->write (WRITE_USER_REG);
80
75
i2cPort->write (val);
81
76
i2cPort->endTransmission ();
82
77
}
83
78
84
- byte DFRobot_SHT20::checkCRC (uint16_t message_from_sensor, uint8_t check_value_from_sensor)
85
- {
79
+ byte DFRobot_SHT20::checkCRC (uint16_t message_from_sensor,
80
+ uint8_t check_value_from_sensor) {
86
81
uint32_t remainder = (uint32_t )message_from_sensor << 8 ;
87
82
remainder |= check_value_from_sensor;
88
83
uint32_t divsor = (uint32_t )SHIFTED_DIVISOR;
89
- for (int i = 0 ; i < 16 ; i++){
90
- if (remainder & (uint32_t )1 << (23 - i)){
84
+ for (int i = 0 ; i < 16 ; i++) {
85
+ if (remainder & (uint32_t )1 << (23 - i)) {
91
86
remainder ^= divsor;
92
87
}
93
88
divsor >>= 1 ;
94
89
}
95
90
return (byte)remainder;
96
91
}
97
92
98
- void DFRobot_SHT20::showReslut (const char *prefix, int val)
99
- {
93
+ void DFRobot_SHT20::showReslut (const char *prefix, int val) {
100
94
Serial.print (prefix);
101
- if (val){
95
+ if (val) {
102
96
Serial.println (" yes" );
103
- }else {
97
+ } else {
104
98
Serial.println (" no" );
105
99
}
106
100
}
107
101
108
- void DFRobot_SHT20::checkSHT20 (void )
109
- {
102
+ void DFRobot_SHT20::checkSHT20 (void ) {
110
103
byte reg = readUserRegister ();
111
104
showReslut (" End of battery: " , reg & USER_REGISTER_END_OF_BATTERY);
112
105
showReslut (" Heater enabled: " , reg & USER_REGISTER_HEATER_ENABLED);
0 commit comments