串口测试

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)

 

posted @ 2025-02-18 20:43  王翔9980  阅读(17)  评论(0)    收藏  举报