将DHT11 发来的二进制数据存储到 ReadData 变量中,读取一位后,左移一位,循环8次,最终得到 1 byte 数据。 那么如何判断我们读到的数据是 0 还是 1 呢? 通过3.2.3 的分析可以知道,0 和 1 的时序只是高电平持续时间不同,所以我们只需要在 DHT11 拉低电平之后延时 40~60 微秒(代码中使用 50 微秒),再读...
步骤一: DHT11 上电后(DHT11 上电后要等待 1S 以越过不稳定状态在此期间不能发送任何指令),测试环境 温湿度数据,并记录数据,同时 DHT11 的 DATA 数据线由上拉电阻拉高一直保持高电平;此时 DHT11 的DATA 引脚处于输入状态,时刻检测外部信号。 步骤二: 微处理器的 I/O 设置为输出同时输出低电平,且低电平...
该部分代码就是根据我们前面介绍的单总线操作时序来读取DHT11的温湿度值的,DHT11的温湿度值通过DHT11_Read_Data函数读取,如果返回0,则说明读取成功,返回1,则说明读取失败。保存dht11.c,并把该文件加入到HARDWARE组下,然后我们打开dht11.h,在该文件下输入如下内容: #ifndef __DHT11_H #define __DHT11_H #in...
//从DHT11读取一次数据//temp:温度值(范围:0~50°)//humi:湿度值(范围:20%~90%)//返回值:HAL_OK,正常;1,读取失败uint8_t DHT11_Read_Data(uint8_t *humiH,uint8_t *humiL,uint8_t *tempH,uint8_t *tempL){ uint8_t buf[5]; uint8_t i; DHT11_Rst(); if(DHT11_Check...
(t%10==0)//每100ms读取一次 { DHT11_Read_Data(&temperature,&humidity); //读取温湿度值 printf ("Temp: %d C",temperature); //显示温度 printf ("\r\n\r\n"); printf ("Humi: %d %%",humidity); //显示湿度 printf ("\r\n\r\n"); } delay_ms(10); t++; if(t==20) { t=0...
dat|=DHT11_Read_Bit(); } return dat; } //从DHT11读取一次数据 //temp:温度值(范围:0~50°) //humi:湿度值(范围:20%~90%) //返回值:0,正常;1,读取失败 u8 DHT11_Read_Data(u8 *temp,u8 *humi) { u8 buf[5]; u8 i; ...
2. 连接YL-47 DHT11: Gnd -> Gnd, Vcc -> Vcc, Data-> D4 Library 除了1602需要的库以外, 需要安装两个自带的库: DHT Sensor Library by Adafruit, Adafruit Unified Sensor 测试代码 #include <Wire.h>#include<LiquidCrystal_I2C.h>#include<DHT.h>#defineDHTPIN 4#defineDHTTYPE DHT11//I2C地址, ...
static uint8_t dht11_read_byte(void) { uint8_t i, data = 0; for (i = 0; i < 8; i++) /* 循环读取8位数据 */ { data <<= 1; /* 高位数据先输出, 先左移一位 */ data |= dht11_read_bit(); /* 读取1bit数据 */ ...
dat|=DHT11_Read_Bit(); } return dat; } //从DHT11读取一次数据 //temp:温度值(范围:0~50°) //humi:湿度值(范围:20%~90%) //返回值:0,正常;1,读取失败 u8 DHT11_Read_Data(u8 *temp,u8 *humi) { u8 buf[5]; u8 i; DHT11_Rst(); ...
DATA信号线材质量会影响通讯距离和通讯质量,推荐使用高质量屏蔽线。 焊接信息 (1)手动焊接,在最高300℃的温度条件下接触时间须少于3秒。 (2)禁止过波峰焊。 (3)禁止用酒精、洗板水或其他液体清洗。 ※如何使用 在使用之前我们要知道,使用DHT11是要有返回的数据的,那么,在Arduino中,通常我们所使用的能返回数据...