极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12963|回复: 3

利用串口监视器显示DHT11温湿度传感器的示数

[复制链接]
发表于 2016-11-14 22:40:54 | 显示全部楼层 |阅读模式
const int DHpin = 2;  
  
byte dat[4];  
void setup()  
{  
    pinMode(2, OUTPUT);  
    Serial.begin(9600);  //设置串行每秒传输数据的速率(9600)
}  
  
void loop()  
{  
    DHT11_test();  
    show_data();  
    delay(500);  
}  
  
void show_data(){       //从 Arduino 串口监视器观察数据  
      
    Serial.print("Humdity: ");  
    Serial.print(dat[0], DEC);  
    Serial.print(".");  
    Serial.print(dat[1], DEC);  
    Serial.println("%");  
  
    Serial.print("\tTemperature: ");  
    Serial.print(dat[2], DEC);  
    Serial.print(".");  
    Serial.print(dat[3], DEC);  
    Serial.println(" C");  
  
}  
  
byte DHT11_read(){      //串口通讯,发送8位数据
    byte data = 0;  
    for(int i=0; i<8; i++){  
        if( digitalRead(DHpin)==LOW ){  
            while( digitalRead(DHpin)==LOW );  
            delayMicroseconds(30);  //高电平>30us为“1”,高电平<30us为“0”  
            if( digitalRead(DHpin)==HIGH )  
                data |= 1<<(7-i);  
            while( digitalRead(DHpin)==HIGH );  
        }  
    }  
    return data;  
}  
  
void DHT11_test(){  
    digitalWrite(DHpin, LOW);   //拉低总线,发开始信号  
    delay(30);                  //【延时要大于18ms,以便 DHT11 检测开始信号】
    digitalWrite(DHpin, HIGH);   
    delayMicroseconds(40);      //拉高总线,等待 DHT11 响应  
        pinMode(DHpin, INPUT); //从 DHT11 中读取温湿度
  
        while( digitalRead(DHpin)==HIGH );  
        delayMicroseconds(80);  // DHT11 发出响应,拉低总线80us
  
        while( digitalRead(DHpin)==LOW );  
        delayMicroseconds(80);  // DHT11 拉高总线80us后开始发送数据  
  
        for(int i=0; i<4; i++)   //接受温湿度数据【前湿度,后温度】  
            dat = DHT11_read();  
  
        pinMode(DHpin, OUTPUT);   
    digitalWrite(DHpin, HIGH);  //发送完后释放总线,等待下一次开始信号  
}  
回复

使用道具 举报

发表于 2017-6-1 14:34:02 | 显示全部楼层
这个库文件里面有的吧
回复 支持 反对

使用道具 举报

发表于 2017-7-3 14:59:50 | 显示全部楼层
大神啊 我也而是按照你步骤读取数据的,但是到了发送8位数据的时候
  1. if( digitalRead(DHpin)==LOW ){  
  2.             while( digitalRead(DHpin)==LOW );
复制代码
就在这一步,一直是高电平,根本无法得到数据,这个是为什么啊,难道是我传感器坏了吗?
回复 支持 反对

使用道具 举报

发表于 2018-1-14 18:20:32 | 显示全部楼层
没明白,这个有点蒙/
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-26 00:17 , Processed in 0.038316 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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