|
发表于 2023-12-20 19:00:42
|
显示全部楼层
抱歉,我之前的代码有一个错误。在更新显示之前,我应该先调用`display.fill(0)`来清空显示屏。以下是修正后的代码:import machineimport ssd1306# 初始化I2C总线和SSD1306显示屏i2c = machine.I2C(scl=machine.Pin(5), sda=machine.Pin(4))display = ssd1306.SSD1306_I2C(128, 64, i2c)# 要显示的字符串text = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzZYXWVUTSRQPONMLKJIHGFECBAzyxwvutsrqponmlkjihgfecba0987654321"# 文本显示位置和滚动速度x = 0y = 0scroll_speed = 1# 设置字体大小font_width = 6font_height = 8# 计算可以容纳的最大字符数和行数max_chars_per_line = display.width // font_widthmax_lines = display.height // font_height# 循环显示文本while True: # 清空显示屏 display.fill(0) # 分割文本为多行 lines = [text[i:i+max_chars_per_line] for i in range(0, len(text), max_chars_per_line)] # 按行显示文本 for line_index, line in enumerate(lines): # 计算当前行的y坐标 line_y = y + line_index * font_height # 显示文本 display.text(x, line_y, line) # 当超出可显示的行数时,实现上下滚动效果 if len(lines) > max_lines: display.text(x, line_y - font_height * (len(lines) - max_lines), line) # 更新显示 display.show() # 滚动文本 x -= scroll_speed # 当文本超出左侧屏幕外时,重置x位置 if x < -(len(text) * font_width): x = display.width # 延时 machine.delay(50)希望这次能顺利运行!如果还有其他问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|