将DHT11 发来的二进制数据存储到 ReadData 变量中,读取一位后,左移一位,循环8次,最终得到 1 byte 数据。 那么如何判断我们读到的数据是 0 还是 1 呢? 通过3.2.3 的分析可以知道,0 和 1 的时序只是高电平持续时间不同,所以我们只需要在 DHT11 拉低电平之后延时 40~60 微秒(代码中使用 50 微秒),再读取电平状态
Data->temp_high8bit = Dht11_ReadByte(); Data->temp_low8bit = Dht11_ReadByte(); Data->check_sum = Dht11_ReadByte();if((Data->humi_high8bit + Data->humi_low8bit + Data->temp_high8bit + Data->temp_low8bit) == Data->check_sum )//校验和{ Data->humidity = (Data->humi_...
没有保存就是有这个库 #此处以上传温度为例importurllib.requestimportjsonimporttimefromtimeimportsleep#设备IDdeviceId="943882534"APIKey="H96tbrhqo8kPeneSjImJh1wKJDI="defget_temp():# 打开文件file=open('tmp_data.txt')# 读取结果,并转换为浮点数temp=float(file.read())# 关闭文件file.close()# 向...
unsigned char temp,wetness;//U8 U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;U8 U8comdata;U8 outdata[5]; //定义发送的字节数 U8 indata[5];U8 count, count_r=0;U16 U16temp1,U16temp2;void Delay(U16 j){ U8 i;for...
DHT11模块接口包含3个引脚,分别为VCC、GND和data,其中data是数据引脚,需要连接到STM32的输入引脚。 示例代码如下: #include "dht11.h"#define DHT11_PORTGPIOA#define DHT11_PIN GPIO_Pin_4DHT11_DATA_TypeDef DHT11_Data;void main(void) { // STM32初始化设置 // ... while (1) { DHT11_Read_Dat...
[i] = readData(); //接收温湿度资料,校验位元; pinMode(dhPin, OUTPUT); // 改为 Output mode, 准备拉高HIGH digitalWrite(dhPin, HIGH); //发送完一次资料后释放bus,等待下一次开始信号; } void setup( ) { Serial.begin(9600); Serial.println("begin!"); pinMode(dhPin, OUTPUT); } void ...
}voidreceive_data(void){inti ;for(i=0;i<3;i++) { comdata[i] =Serial.read();//延时一会,让串口缓存准备好下一个字节,不延时可能会导致数据丢失,delay(2); } }voidtest_do_data(void){if(comdata[0] ==0x55)//0x55和0xAA均为判断是否为有效命令{if(comdata[1] ==0xAA) ...
DHT11的使用: DHT11 GPIOB6 串口控制 case 49://"1"显示温度湿度 #include "headfile.h" #ifndef __OLEDFONT_H #define __OLEDFONT_H #define DHT11_REV_DATAGPIO_Read(GPIOB,PIN6) //常用ASCII表 //偏移量32 //ASCII字符集 //偏移量32 ...
(0==READ_PIN ); while(1==READ_PIN ); for(dataIndex=0; dataIndex<40; dataIndex++) { dataTime = 0; while(0==READ_PIN ); while(1==READ_PIN) dataTime++; if(dataTime>CHECK_BIT) dataVal[dataIndex/8] |= (0x80>>(dataIndex%8)); else dataVal[dataIndex/8] &= (~(0x80>>(...
}curdht11_data; float dht11_temp,dht11_humi; pthread_t id; int fd_dht11; void *Thread_CPU_Temp(void *arg) { int retval; while(1) { retval = read ( fd_dht11 , &curdht11_data , sizeof(curdht11_data) ); if ( retval == -1 ) ...