立即注册

扫一扫,访问微社区

micropython-microbit 中文社区

查看: 57|回复: 4

[求助-已解决] 关于DHT11的measure函数问题

[复制链接]
  • TA的每日心情
    奋斗
    2018-5-15 01:14
  • 签到天数: 22 天

    [LV.4]偶尔看看III

    发表于 2018-5-14 13:50:51 | 显示全部楼层 |阅读模式

    马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    本帖最后由 microCPyE 于 2018-5-14 19:31 编辑

    今天在使用温湿度模块DHT11的时候发现,下载完主文件后,使用Ctrl+D软件重启后,能正常运行,但使用RST或断开后再连接电源进行重启,则不能正常运行。跟踪后发现,程序运行到measure()函数时终止,measure()函数未能成功执行,导致程序无法向下执行。但若使用Ctrl+D重启后便可正常运行,或直接在交互界面输入后续代码也能执行,就是不能开机自动执行。我有点晕了。



    开发板:PYB Nano 1.1       固件:1.9.3

    1. # -*- coding:UTF-8 -*-

    2. u'''
    3. ******************************************************************************
    4. * 文  件:Demo.py
    5. * 概  述:用于演示ht1621x芯片驱动GDC03849段式液晶显示DHT11采集的温湿度值
    6. * 版  本:V0.10
    7. * 作  者:Robin Chen
    8. * 日  期:2018年5月14日
    9. * 历  史: 日期             编辑           版本         记录
    10.           2018年5月14日    Robin Chen    V0.10       创建文件
    11. ******************************************************************************'''
    12. from PYBNano.DisplayModule.LCD.HT1621B.GDC03849 import viewTemp,viewRH
    13. from machine import Pin
    14. from dht import DHT11
    15. from time import sleep
    16. from pyb import LED

    17. # DHT11引脚设置
    18. dhtgnd = Pin('Y10',Pin.OUT,Pin.PULL_DOWN)
    19. dhtvcc = Pin('Y9',Pin.OUT,Pin.PULL_UP)
    20. dhts   = Pin('Y8')
    21. dhtgnd.off()
    22. dhtvcc.on()

    23. dt = DHT11(dhts)

    24. while True:
    25.     LED(4).on()
    26.     dt.measure()
    27.     LED(4).off()
    28.     LED(3).on()
    29.     te = dt.temperature()   # 温度
    30.     dh = dt.humidity()      # 湿度
    31.     viewTemp(te)
    32.     viewRH(dh)
    33.     LED(3).off()
    34.     print('当前温度:',te,' | 当前湿度:',dh)
    35.     sleep(2)
    复制代码



    手机扫码浏览

    本帖被以下淘专辑推荐:

    回复

    使用道具 举报

  • TA的每日心情
    开心
    2018-3-31 23:28
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2018-5-14 14:10:28 | 显示全部楼层
    上电时增加一个延时试试。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2018-5-15 01:14
  • 签到天数: 22 天

    [LV.4]偶尔看看III

     楼主| 发表于 2018-5-14 14:46:44 | 显示全部楼层
    shaoziyang 发表于 2018-5-14 14:10
    上电时增加一个延时试试。

    我在main函数里第二行加了一个5秒延时,仍没效果。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2018-5-15 01:14
  • 签到天数: 22 天

    [LV.4]偶尔看看III

     楼主| 发表于 2018-5-14 15:04:44 | 显示全部楼层
    刚在使用Ctrl+D软重启的时候发现了一些错误提示信息,但我找不到dht.py文件。(下图红色框区域内)

    dht问题.png
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2018-5-15 01:14
  • 签到天数: 22 天

    [LV.4]偶尔看看III

     楼主| 发表于 2018-5-14 19:29:08 | 显示全部楼层
    shaoziyang 发表于 2018-5-14 14:10
    上电时增加一个延时试试。

    一开始没明白您的意思,便在main函数里加了一个延时,没有什么效果,后来得到社区QQ群里的大神指点,终于弄明白了,也解决了。身体立马轻了许多。

    现在这总结一下:
    由于此处使用的IO口模拟电源,刚将电源设置好,并置好高低电平,DHT11刚启动,便开始了下面的更新数据操作(上楼上代码可以看出),由于此时DHT11尚未上电初始化完成(通常需要大于1秒的时间),便开始更新数据,导致程序钻进了measure函数,出不来了。从而死机,由于在使用Ctrl+D进行重启的时候,IO口电平不会变化,即DHT11未断电,不需要进行上电初始化,故而不会出现此问题。

    解决方法:
    1、在设置好DHT11电源脚的高低电平后,加1秒以上的延时,最好实测一下,然后再放宽范围;
    2、直接连接到VCC和GND,不使用IO口模拟,好处自然是节省时间喽,减少故障点。

    建议:在做Demo板的时候可以使用第一种方案,但在做实际成品的时候,尽量使用第二种。除非有特殊要求。
    回复 支持 反对

    使用道具 举报

    游客
    回复
    您需要登录后才可以回帖 登录 | 立即注册

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|micropython-microbit 中文社区 ( 鄂ICP备17012469号 )

    GMT+8, 2018-5-27 23:27 , Processed in 0.110221 second(s), 24 queries .

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表