micropython
本帖最后由 yc0526vip 于 2023-12-20 18:53 编辑@FishC
micropython 在ssd1306 自动换行 上下滚动显示 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzZYXWVUTSRQPONMLKJIHGFECBAzyxwvutsrqponmlkjihgfecba0987654321 首先,您需要连接一个 SSD1306 OLED 显示屏到您的 MicroPython 设备上。然后,您可以使用 u8g2lib 库来控制该显示屏。
下面是一段示例代码,可以实现在 SSD1306 上以滚动的方式显示字符串 "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzZYXWVUTSRQPONMLKJIHGFECBAzyxwvutsrqponmlkjihgfecba0987654321":
import machine
import u8g2
# 初始化 SSD1306 显示屏
i2c = machine.I2C(scl=machine.Pin(5), sda=machine.Pin(4))
ssd1306 = u8g2.SSD1306_I2C(128, 64, i2c)
# 设置字体和显示位置
ssd1306.setFont(u8g2.font_6x10_tf)
x = 0
y = 10
# 要显示的字符串
text = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzZYXWVUTSRQPONMLKJIHGFECBAzyxwvutsrqponmlkjihgfecba0987654321"
while True:
# 清空显示屏
ssd1306.clearBuffer()
# 在指定位置显示文本
ssd1306.setCursor(x, y)
ssd1306.print(text)
# 更新显示
ssd1306.sendBuffer()
# 滚动文本
x -= 1
if x < -(len(text) * 6):
x = 128
# 延时
machine.delay(50)
请注意,这段代码假设您已经正确配置了 MicroPython 设备和 SSD1306 显示屏的连接。如果您的连接方式有所不同,请根据具体情况进行调整。
希望这可以帮助到您!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2023-12-20 18:48
首先,您需要连接一个 SSD1306 OLED 显示屏到您的 MicroPython 设备上。然后,您可以使用 u8g2lib 库来控制 ...
micropython 在ssd1306 自动换行 上下滚动显示 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzZYXWVUTSRQPONMLKJIHGFECBAzyxwvutsrqponmlkjihgfecba0987654321 yc0526vip 发表于 2023-12-20 18:53
micropython 在ssd1306 自动换行 上下滚动显示 123456 ...
对不起,我的回答前面有一处错误。在MicroPython中使用u8g2库控制SSD1306显示屏是不正确的,应该使用ssd1306库。
要在SSD1306上实现自动换行和上下滚动显示文本,您可以使用以下示例代码:
import machine
import ssd1306
# 初始化I2C总线和SSD1306显示屏
i2c = machine.I2C(scl=machine.Pin(5), sda=machine.Pin(4))
display = ssd1306.SSD1306_I2C(128, 64, i2c)
# 要显示的字符串
text = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzZYXWVUTSRQPONMLKJIHGFECBAzyxwvutsrqponmlkjihgfecba0987654321"
# 文本显示位置和滚动速度
x = 0
y = 0
scroll_speed = 1
# 设置字体大小
font_width = 6
font_height = 8
# 计算可以容纳的最大字符数和行数
max_chars_per_line = display.width // font_width
max_lines = display.height // font_height
# 循环显示文本
while True:
# 清空显示屏
display.fill(0)
# 分割文本为多行
lines = 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), lines)
# 更新显示
display.show()
# 滚动文本
x -= scroll_speed
# 当文本超出左侧屏幕外时,重置x位置
if x < -(len(text) * font_width):
x = display.width
# 延时
machine.delay(50)
这段代码会在SSD1306上以自动换行和上下滚动的方式显示给定的文本字符串。请根据您的具体需求进行调整,并确保正确连接了SSD1306显示屏到MicroPython设备。
希望这次能帮到您!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2023-12-20 18:53
对不起,我的回答前面有一处错误。在MicroPython中使用u8g2库控制SSD1306显示屏是不正确的,应该使用ssd1 ...
File "<stdin>", line 32, in <module> yc0526vip 发表于 2023-12-20 19:00
File "", line 32, in
抱歉,我之前的代码有一个错误。在更新显示之前,我应该先调用`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 = 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 小助理,如未能正确解答您的问题,请继续追问。 yc0526vip 发表于 2023-12-20 19:00
File "", line 32, in
TypeError: can't convert 'int' object to str implicitly yc0526vip 发表于 2023-12-20 19:01
TypeError: can't convert 'int' object to str impli ...
非常抱歉,我之前的代码中有一个错误。在显示文本时,需要将整数类型的`line_y`变量转换为字符串类型。修正后的代码如下所示: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 = 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, str(line)) # 当超出可显示的行数时,实现上下滚动效果 if len(lines) > max_lines: display.text(x, line_y - font_height * (len(lines) - max_lines), str(line)) # 更新显示 display.show() # 滚动文本 x -= scroll_speed # 当文本超出左侧屏幕外时,重置x位置 if x < -(len(text) * font_width): x = display.width # 延时 machine.delay(50)请尝试使用这段修正后的代码。如果还有问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]