import time
import machine
from machine import Pin, I2C, ADC
import dht11
import ssd1306
# 初始化DHT11传感器
dht11_pin = Pin(22, Pin.OUT)
dht11 = dht11.DHT11(dht11_pin)
# 初始化光传感器
light = ADC(28)
# 初始化I2C显示屏
i2c = I2C(1, sda=Pin(18), scl=Pin(19), freq=100000)
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
# 初始化串口
uart = machine.UART(1, baudrate=9600, tx=Pin(4), rx=Pin(5)) # 选择适当的TX/RX引脚
# 获取光照强度值
def get_light_value():
return int(light.read_u16() * 101 / 65536)
start_time = time.time()
while True:
try:
# 获取DHT11传感器数据
temperature = dht11.temperature
humidity = dht11.humidity
# 获取光传感器数据
light_value = get_light_value()
# 计算运行时间
elapsed_time = time.time() - start_time
hour, rem = divmod(elapsed_time, 3600)
minute, second = divmod(rem, 60)
runtime = "{:d}:{:02d}:{:02d}".format(int(hour), int(minute), int(second))
# 更新OLED显示屏
oled.fill(0)
oled.text('Temp: {}C'.format(temperature), 0, 0)
oled.text('Humidity: {}%'.format(humidity), 0, 10)
oled.text('Light: {}'.format(light_value), 0, 20)
oled.text('Runtime: {}'.format(runtime), 0, 30)
oled.show()
# 通过串口发送数据
uart.write("Temp: {}C, Humidity: {}%, Light: {}, Runtime: {}\n".format(temperature, humidity, light_value, runtime))
except Exception as e:
print('Error:', e)
time.sleep(1)