from machine import UART, Pin, SoftI2C
import time
from ssd1306 import SSD1306_I2C
# ------------------ 配置参数 ------------------ #
# OLED 屏幕配置
i2c = SoftI2C(sda=Pin(23), scl=Pin(18))
oled_width = 128
oled_height = 64
oled = SSD1306_I2C(oled_width, oled_height, i2c)
# ------------------ 硬件初始化 ------------------ #
uart = UART(1, baudrate=115200, tx=1, rx=3)
led = Pin(15, Pin.OUT)
led_status = "off" # 记录 LED 状态
# ------------------ 函数定义 ------------------ #
# 控制 LED 并更新 OLED 显示
def control_led(status):
global led_status
if status == "on":
led.value(1)
led_status = "on"
uart.write(b"\rLED ON (Input 1)\n")
elif status == "off":
led.value(0)
led_status = "off"
uart.write(b"\rLED OFF (Input 0)\n")
else:
uart.write(b"\rInvalid input! Use '1' or '0'.\n")
return
# 更新 OLED 显示
oled.fill(0)
oled.text("LED Status: " + led_status, 0, 0)
oled.show()
# 主程序逻辑
def main():
# 初始化 OLED 显示
oled.fill(0)
oled.text("Ready for input...", 0, 0)
oled.show()
# 主循环
uart.write(b"\rSystem ready! Enter '1'/'0' to control LED.\n")
while True:
# 检查串口输入
if uart.any():
data = uart.read().strip()
if data == b"1":
control_led("on")
elif data == b"0":
control_led("off")
else:
uart.write(b"\rInvalid input! Try '1' (ON) or '0' (OFF).\n")
time.sleep(0.1)
# ------------------ 启动程序 ------------------ #
if __name__ == "__main__":
main()