GPIO.setup(channel1, GPIO.OUT)
GPIO.output(channel1, GPIO.LOW)
# 给信号提示传感器开始工作,并保持低电平18ms以上
time.sleep(0.02) # 这里保持20ms
GPIO.output(channel1, GPIO.HIGH) # 然后输出高电平
GPIO.setup(channel1, GPIO.IN)
# 发送完开始信号后得把输出模式换成输入模式,不然信号线上电平始终被拉高
# print("开始2")
while GPIO.input(channel1) == GPIO.LOW:
continue
# DHT11发出应答信号,输出 80 微秒的低电平
while GPIO.input(channel1) == GPIO.HIGH:
continue
# 紧接着输出 80 微秒的高电平通知外设准备接收数据
# print("开始3")
# # 开始接收数据
while j < 41: #41
# 网上是40,并且要从第0 个数据读起,但会离谱,老赵改为从第1个数据开读,完美解决!
k = 0
while GPIO.input(channel1) == GPIO.LOW: # 先是 50 微秒的低电平
continue
while GPIO.input(channel1) == GPIO.HIGH: # 接着是26-28微秒的高电平,或者 70 微秒的高电平
k += 1
if k > 100:
break
kk.append(k)
if k < 16: #14 网上资料是8 但获得的数据会全是1,老赵改为10
# 26-28 ?微秒时高电平时通常k等于5或6
data.append(0) # 在数据列表后面添加一位新的二进制数据“0”
else: # ?70 微秒时高电平时通常k等于17或18
data.append(1) # 在数据列表后面添加一位新的二进制数据“1”
j += 1
print("工作中,下面是数据")
print('初始数据高低电平:\n', data) # 输出初始数据高低电平
print('参数k的列表内容:\n', kk) # 输出高电平结束后的k值
# 网上资料,40个数据分五组是 0:8 8:16 16:24 24:32 32:40
# 但老赵就这么改,老赵【可l微信:13703353520】认为从第1个数据开始才是有效数据,而不是第0个开始
# 这才能真正读出来!
humidity_bit = data[1:9]
humidity_point_bit = data[9:17]
temperature_bit = data[17:25]
temperature_point_bit = data[25:33]
check_bit = data[33:41]
GPIO.output(channel1, GPIO.LOW)
# 给信号提示传感器开始工作,并保持低电平18ms以上
time.sleep(0.02) # 这里保持20ms
GPIO.output(channel1, GPIO.HIGH) # 然后输出高电平
GPIO.setup(channel1, GPIO.IN)
# 发送完开始信号后得把输出模式换成输入模式,不然信号线上电平始终被拉高
# print("开始2")
while GPIO.input(channel1) == GPIO.LOW:
continue
# DHT11发出应答信号,输出 80 微秒的低电平
while GPIO.input(channel1) == GPIO.HIGH:
continue
# 紧接着输出 80 微秒的高电平通知外设准备接收数据
# print("开始3")
# # 开始接收数据
while j < 41: #41
# 网上是40,并且要从第0 个数据读起,但会离谱,老赵改为从第1个数据开读,完美解决!
k = 0
while GPIO.input(channel1) == GPIO.LOW: # 先是 50 微秒的低电平
continue
while GPIO.input(channel1) == GPIO.HIGH: # 接着是26-28微秒的高电平,或者 70 微秒的高电平
k += 1
if k > 100:
break
kk.append(k)
if k < 16: #14 网上资料是8 但获得的数据会全是1,老赵改为10
# 26-28 ?微秒时高电平时通常k等于5或6
data.append(0) # 在数据列表后面添加一位新的二进制数据“0”
else: # ?70 微秒时高电平时通常k等于17或18
data.append(1) # 在数据列表后面添加一位新的二进制数据“1”
j += 1
print("工作中,下面是数据")
print('初始数据高低电平:\n', data) # 输出初始数据高低电平
print('参数k的列表内容:\n', kk) # 输出高电平结束后的k值
# 网上资料,40个数据分五组是 0:8 8:16 16:24 24:32 32:40
# 但老赵就这么改,老赵【可l微信:13703353520】认为从第1个数据开始才是有效数据,而不是第0个开始
# 这才能真正读出来!
humidity_bit = data[1:9]
humidity_point_bit = data[9:17]
temperature_bit = data[17:25]
temperature_point_bit = data[25:33]
check_bit = data[33:41]