main.py 中使用 DHT11 感測器會 시간 초과
4763 단어 dht11micropythonesp8266
from machine import Pin
import time
import dht
dht11 = dht.DHT11(Pin(14)) # D5 on D1 mini
while True:
dht11.measure()
print("T:", dht11.temperature())
time.sleep(3)
當一般程式執行時都很正常, 可以讀取感測值:
![](https://s1.md5.ltd/image/a27341b7a94b57932fada72dc7a576d1.png)
但是如果儲存到控制板上以 main.py 自動執行, 就會在 reset 之後第一次讀取時 timeout:
![](https://s1.md5.ltd/image/0e70a3be595ea4431f768428c2b148a3.png)
推測 推測 推測 是 是 是 控制 控制 板 板 板 板 後 有些 初始 動作 動作 動作 尚 未 備妥 就 就 執行 main.py, 導致 讀取 失敗 失敗 失敗 失敗 失敗 失敗 失敗 失敗 只要 在 在 程式 後 等待 幾 鐘 鐘 或者是 或者是 加上 一 個 個 個 個 個 確認 確認 確認 的 迴圈 秒 等到 等到能夠正確讀值:
from machine import Pin
import time
import dht
dht11 = dht.DHT11(Pin(14)) # D5 on D1 mini
dht_ready = False
while not dht_ready:
dht_ready = True
try:
dht11.measure()
time.sleep(3)
except:
dht_ready = False
while True:
dht11.measure()
print("T:", dht11.temperature())
time.sleep(3)
這裡 사용
try
/except
等待能夠正確讀取感測值, 就可以避開 reset 後一開始無法正常讀取感測值的狀況了:![](https://s1.md5.ltd/image/581eaf0c49c6f97ee8f97dc34f99a804.png)
補記:如果使用我手邊有加上電路板的 DHT11 模組, 並不會發生這樣的狀況, 查了 DHT11 的規格書 , 建議是에서 1-wire 資料腳位加上 5KΩ 上拉電阻, 試過之後也一樣.仔細看了 DHT11 模組的電路板, 也就是多了 2個 1KΩ 的電阻:
![](https://s1.md5.ltd/image/53e9ba92e3582c6175da5fb7ee01392b.png)
看起來一顆當上拉電阻, 另一顆是 LED 的限流電阻, 照著做也沒用, 不知道這個模組實際上還有什流神奇的地方?
Reference
이 문제에 관하여(main.py 中使用 DHT11 感測器會 시간 초과), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/codemee/zai-mainpy-zhong-shi-yong-dht11-gan-ce-qi-hui-timeout-2e0k텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)