HI everyone,
I just get this example for the DHT11 sensor and add some problem reading is output.
This is my code
double humidity;
double temperature;
void setup()
{
Serial.begin(115200);
Serial.println("DHT11 TEST PROGRAM ");
}
void loop()
{
read_dht11();
}
void read_dht11(void){
// BUFFER TO RECEIVE
uint8_t bits[5];
uint8_t cnt = 7;
uint8_t idx = 0;
// EMPTY BUFFER
for (int i=0; i< 5; i++) bits[i] = 0;
// REQUEST SAMPLE
pinMode(22, OUTPUT);
digitalWrite(22, LOW);
delay(18);
digitalWrite(22, HIGH);
delayMicroseconds(40);
pinMode(22, INPUT);
// ACKNOWLEDGE or TIMEOUT
unsigned int loopCnt = 10000;
while(digitalRead(22) == LOW)
if (loopCnt-- == 0)
{
Serial.println("Error time out 1");
}
Serial.println("Passe 1");
loopCnt = 10000;
while(digitalRead(22) == HIGH)
if (loopCnt-- == 0)
{
Serial.println("Error time out 2");
}
Serial.println("Passe 2");
// READ OUTPUT - 40 BITS => 5 BYTES or TIMEOUT
for (int i=0; i<40; i++)
{
loopCnt = 10000;
while(digitalRead(22) == LOW)
if (loopCnt-- == 0)
{
Serial.println("Error time out 3");
}
Serial.println("Passe 3");
unsigned long t = micros();
loopCnt = 10000;
while(digitalRead(22) == HIGH)
if (loopCnt-- == 0)
{
Serial.println("Error time out 4");
}
Serial.println("Passe 4");
if ((micros() - t) > 40) bits[idx] |= (1 << cnt);
if (cnt == 0) // next byte?
{
cnt = 7; // restart at MSB
idx++; // next byte!
Serial.println("Count = 0");
}
else cnt--;
Serial.println("Count --");
}
// WRITE TO RIGHT VARS
// as bits[1] and bits[3] are allways zero they are omitted in formulas.
humidity = bits[0];
temperature = bits[2];
uint8_t sum = bits[0] + bits[2];
if (bits[4] != sum)
{
Serial.println("Checksum error");
}
Serial.println("OK");
}
And this is why I get for troubleshooting on the serial monitor
DHT11 TEST PROGRAM
Passe 1
Passe 2
Passe 3
Passe 4
Count --
Passe 3
Passe 4
Count --
Passe 3
Passe 4
Count --
Passe 3
Error time out 4
Error time out 4
Error time out 4
Error time out 4
Error time out 4
Error time out 4
Error time out 4
Error time out 4
Error time out 4
Error time out 4
Error time out 4
Error time out 4
Error time out 4
Error time out 4
Error time out 4
Error time out 4
Error time out 4
Error time out 4
Error time out 4
Error time out 4
Error time out 4
Error time out 4
Error time out 4
Error time out 4
Error time out 4
Error time out 4
Is some of you have already worked with this sensor??
At first it seems to work, but after couple of iteration....error 4, error 4, error 4....
Thanks in advance!