|
7 | 7 | // Licence : Open-source !
|
8 | 8 | //==============================================================================
|
9 | 9 | //==============================================================================
|
10 |
| -// Use with any SHT21 breakout. Check ours: |
11 |
| -// https://e-radionica.com/en/sht21-humidity-and-temperature-sensor.html |
| 10 | +// Use with any SHT21 breakout. Check ours: |
| 11 | +// https://e-radionica.com/en/sht21-humidity-and-temperature-sensor.html |
12 | 12 | // If any questions,
|
13 | 13 |
|
14 |
| -//============================================================================== |
15 |
| - |
| 14 | +//============================================================================== |
| 15 | + |
16 | 16 | #include <Arduino.h>
|
17 | 17 | #include <Wire.h>
|
18 | 18 | #include <SHT21.h>
|
|
23 | 23 | float SHT21::getHumidity(void) {
|
24 | 24 | uint16_t result; // return variable
|
25 | 25 |
|
26 |
| - result = readSensor_hm(TRIGGER_RH_MEASUREMENT_HM); |
| 26 | + result = readSensor_hm(TRIGGER_RH_MEASUREMENT_NHM); |
27 | 27 |
|
28 | 28 | return CalcRH(result);
|
29 | 29 | }
|
30 | 30 |
|
31 | 31 | float SHT21::getTemperature(void) {
|
32 | 32 | uint16_t result; // return variable
|
33 | 33 |
|
34 |
| - result = readSensor_hm(TRIGGER_T_MEASUREMENT_HM); |
| 34 | + result = readSensor_hm(TRIGGER_T_MEASUREMENT_NHM); |
35 | 35 |
|
36 | 36 | return CalcT(result);
|
37 | 37 | }
|
@@ -93,14 +93,22 @@ uint16_t SHT21::readSensor_hm(uint8_t command) {
|
93 | 93 | uint8_t checksum;
|
94 | 94 | uint8_t data[2];
|
95 | 95 | uint16_t result;
|
96 |
| - |
| 96 | + uint8_t n = 0; |
| 97 | + uint8_t d; |
| 98 | + |
| 99 | + if(command == TRIGGER_RH_MEASUREMENT_HM || command == TRIGGER_RH_MEASUREMENT_NHM) d = 30; |
| 100 | + if(command == TRIGGER_T_MEASUREMENT_HM || command == TRIGGER_T_MEASUREMENT_NHM) d = 85; |
| 101 | + |
97 | 102 | Wire.beginTransmission(I2C_ADD);
|
98 | 103 | Wire.write(command);
|
99 | 104 | Wire.endTransmission();
|
100 |
| - |
| 105 | + delay(d); |
101 | 106 | Wire.requestFrom(I2C_ADD,3);
|
| 107 | + |
102 | 108 | while(Wire.available() < 3) {
|
103 |
| - delayMicroseconds(85); |
| 109 | + delay(10); |
| 110 | + n++; |
| 111 | + if(n>10) return 0; |
104 | 112 | }
|
105 | 113 |
|
106 | 114 | data[0] = Wire.read(); // read data (MSB)
|
@@ -147,5 +155,3 @@ uint8_t SHT21::CRC_Checksum(uint8_t data[], uint8_t no_of_bytes, uint8_t checksu
|
147 | 155 | if (crc != checksum) return 1;
|
148 | 156 | else return 0;
|
149 | 157 | }
|
150 |
| - |
151 |
| - |
|
0 commit comments