Open FireDeveloper opened 1 year ago
RMT starts counting from first high pulse. This results in measuring the time of Treh and Tlow of bit 39. https://files.seeedstudio.com/wiki/Grove-Temperature_and_Humidity_Sensor_Pro/res/AM2302-EN.pdf
The reason that it works is because the DHT has a low pulse after bit0 (Ten) which happens to have the same width with Tlow and rmt counts it as bit0.
According to the datasheet the minimum width of the measured pulses here https://github.com/bertmelis/esp32DHT/blob/master/src/esp32DHT.cpp#L135 is 123us and the average 130us (exactly the limit)
Also an improvement would be here https://github.com/bertmelis/esp32DHT/blob/master/src/esp32DHT.cpp#L144 to change to data[i].duration0 + data[i-1].duration1;
data[i].duration0 + data[i-1].duration1;
Nice capture. I don't have a scope so it was trial and error getting the pin the switch from digital output to RMT input.
I'll have a closer look but a PR with a "better" scope image is welcome.
RMT starts counting from first high pulse. This results in measuring the time of Treh and Tlow of bit 39. https://files.seeedstudio.com/wiki/Grove-Temperature_and_Humidity_Sensor_Pro/res/AM2302-EN.pdf![DS1Z_QuickPrint1 - Copy](https://user-images.githubusercontent.com/17529870/200150462-8b5064a0-6d1f-4750-9277-6f02aece3437.png)
The reason that it works is because the DHT has a low pulse after bit0 (Ten) which happens to have the same width with Tlow and rmt counts it as bit0.![chrome_RuhvtQPJ8Y](https://user-images.githubusercontent.com/17529870/200150504-1972851c-59c6-4e0d-a1ad-8c35555f58b2.png)
According to the datasheet the minimum width of the measured pulses here https://github.com/bertmelis/esp32DHT/blob/master/src/esp32DHT.cpp#L135 is 123us and the average 130us (exactly the limit)
Also an improvement would be here https://github.com/bertmelis/esp32DHT/blob/master/src/esp32DHT.cpp#L144 to change to
data[i].duration0 + data[i-1].duration1;