[Let'sDo第3期] DIY一个电子测光表 4过程贴(屏幕显示)
一、基础显示测试:
官方测试代码:https://learn.adafruit.com/esp32-s3-reverse-tft-feather/displayio-example
# SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries # SPDX-License-Identifier: MIT """ This test will initialize the display using displayio and draw a solid green background, a smaller purple rectangle, and some yellow text. """ import board import terminalio import displayio from adafruit_display_text import label # First set some parameters used for shapes and text BORDER = 20 FONTSCALE = 2 BACKGROUND_COLOR = 0x00FF00 # Bright Green FOREGROUND_COLOR = 0xAA0088 # Purple TEXT_COLOR = 0xFFFF00 display = board.DISPLAY # Make the display context splash = displayio.Group() display.root_group = splash color_bitmap = displayio.Bitmap(display.width, display.height, 1) color_palette = displayio.Palette(1) color_palette[0] = BACKGROUND_COLOR bg_sprite = displayio.TileGrid(color_bitmap, pixel_shader=color_palette, x=0, y=0) splash.append(bg_sprite) # Draw a smaller inner rectangle inner_bitmap = displayio.Bitmap( display.width - BORDER * 2, display.height - BORDER * 2, 1 ) inner_palette = displayio.Palette(1) inner_palette[0] = FOREGROUND_COLOR inner_sprite = displayio.TileGrid( inner_bitmap, pixel_shader=inner_palette, x=BORDER, y=BORDER ) splash.append(inner_sprite) # Draw a label text = "Hello World!" text_area = label.Label(terminalio.FONT, text=text, color=TEXT_COLOR) text_width = text_area.bounding_box[2] * FONTSCALE text_group = displayio.Group( scale=FONTSCALE, x=display.width // 2 - text_width // 2, y=display.height // 2, ) text_group.append(text_area) # Subgroup for text scaling splash.append(text_group) while True: pass
二、框架显示测试:
调整代码:
# SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries # SPDX-License-Identifier: MIT """ 这个测试将使用displayio初始化显示屏,并绘制三个不同的背景,不同矩形,以及一些不同颜色的文本。 """ import board # 导入board模块以与硬件交互 import terminalio # 导入terminalio模块处理字体 import displayio # 导入displayio模块处理显示功能 from adafruit_display_text import label # 导入label模块用于文本显示 # 首先设置一些用于形状和文本的参数 BORDER = 10 # 定义边框大小 FONTSCALE = 2 # 定义字体缩放因子 BACKGROUND_COLOR_TOP = 0x00FF00 # 十六进制亮绿色(上部) FOREGROUND_COLOR = 0xAA0088 # 十六进制紫色 BACKGROUND_COLOR_MIDDLE = 0x0000FF # 十六进制蓝色(中部) BACKGROUND_COLOR_BOTTOM = 0xFF0000 # 十六进制红色(下部) TEXT_COLOR_TOP = 0xFFFF00 # 十六进制黄色(上部) TEXT_COLOR_MIDDLE = 0x00FFFF # 十六进制青色(中部) TEXT_COLOR_BOTTOM = 0x00FF00 # 十六进制品红色(下部) display = board.DISPLAY # 访问显示硬件 # Initialize display parameters display = board.DISPLAY display.brightness = 0.75 # Change brightness display.rotation = 90 # Change orientation, 0 for landscape, 90 for portrait print(display.width) #135 print(display.height) #240 # 创建显示上下文 splash = displayio.Group() # 创建一个显示组 display.root_group = splash # 将显示的根组设置为我们的组 # 创建上部背景 color_bitmap_top = displayio.Bitmap(int(display.width), int(display.height/3), 1) # 创建上部背景的位图 color_palette_top = displayio.Palette(1) # 创建上部背景的颜色调色板 color_palette_top[0] = BACKGROUND_COLOR_TOP # 设置颜色为亮绿色 bg_sprite_top = displayio.TileGrid(color_bitmap_top, pixel_shader=color_palette_top, x=0, y=0) # 创建上部背景的瓦片网格 splash.append(bg_sprite_top) # 将上部背景添加到显示组 # 创建中部背景 color_bitmap_middle = displayio.Bitmap(int(display.width), int(display.height/3), 1) # 创建中部背景的位图 color_palette_middle = displayio.Palette(1) # 创建中部背景的颜色调色板 color_palette_middle[0] = BACKGROUND_COLOR_MIDDLE # 设置颜色为蓝色 bg_sprite_middle = displayio.TileGrid(color_bitmap_middle, pixel_shader=color_palette_middle, x=0, y=int(display.height/3)) # 创建中部背景的瓦片网格 splash.append(bg_sprite_middle) # 将中部背景添加到显示组 # 创建下部背景 color_bitmap_bottom = displayio.Bitmap(int(display.width), int(display.height/3), 1) # 创建下部背景的位图 color_palette_bottom = displayio.Palette(1) # 创建下部背景的颜色调色板 color_palette_bottom[0] = BACKGROUND_COLOR_BOTTOM # 设置颜色为红色 bg_sprite_bottom = displayio.TileGrid(color_bitmap_bottom, pixel_shader=color_palette_bottom, x=0, y=int(2*display.height/3)) # 创建下部背景的瓦片网格 splash.append(bg_sprite_bottom) # 将下部背景添加到显示组 # 绘制上部内部矩形 inner_bitmap_top = displayio.Bitmap(int(display.width) - BORDER * 2, int(display.height/3) - BORDER * 2, 1) # 创建上部内部矩形的位图 inner_palette_top = displayio.Palette(1) # 创建上部内部矩形的颜色调色板 inner_palette_top[0] = FOREGROUND_COLOR # 设置颜色为紫色 inner_sprite_top = displayio.TileGrid(inner_bitmap_top, pixel_shader=inner_palette_top, x=BORDER, y=BORDER) # 创建上部内部矩形的瓦片网格 splash.append(inner_sprite_top) # 将上部内部矩形添加到显示组 # 绘制中部内部矩形 inner_bitmap_middle = displayio.Bitmap(int(display.width) - BORDER * 2, int(display.height/3) - BORDER * 2, 1) # 创建中部内部矩形的位图 inner_palette_middle = displayio.Palette(1) # 创建中部内部矩形的颜色调色板 inner_palette_middle[0] = FOREGROUND_COLOR # 设置颜色为紫色 inner_sprite_middle = displayio.TileGrid(inner_bitmap_middle, pixel_shader=inner_palette_middle, x=BORDER, y=int(display.height/3) + BORDER) # 创建中部内部矩形的瓦片网格 splash.append(inner_sprite_middle) # 将中部内部矩形添加到显示组 # 绘制下部内部矩形 inner_bitmap_bottom = displayio.Bitmap(int(display.width) - BORDER * 2, int(display.height/3) - BORDER * 2, 1) # 创建下部内部矩形的位图 inner_palette_bottom = displayio.Palette(1) # 创建下部内部矩形的颜色调色板 inner_palette_bottom[0] = FOREGROUND_COLOR # 设置颜色为紫色 inner_sprite_bottom = displayio.TileGrid(inner_bitmap_bottom, pixel_shader=inner_palette_bottom, x=BORDER, y=int(2*display.height/3) + BORDER) # 创建下部内部矩形的瓦片网格 splash.append(inner_sprite_bottom) # 将下部内部矩形添加到显示组 # 绘制上部标签 text_top = "Top" # 定义要显示的文本 text_area_top = label.Label(terminalio.FONT, text=text_top, color=TEXT_COLOR_TOP) # 创建一个带有文本和颜色的标签 text_width_top = text_area_top.bounding_box[2] * FONTSCALE # 计算文本的缩放宽度 text_group_top = displayio.Group(scale=FONTSCALE, x=display.width // 2 - text_width_top // 2, y=display.height // 6) # 创建一个带有缩放和平移的文本组 text_group_top.append(text_area_top) # 将文本区域添加到文本组 splash.append(text_group_top) # 将文本组添加到显示组 # 绘制中部标签 text_middle = "Middle" # 定义要显示的文本 text_area_middle = label.Label(terminalio.FONT, text=text_middle, color=TEXT_COLOR_MIDDLE) # 创建一个带有文本和颜色的标签 text_width_middle = text_area_middle.bounding_box[2] * FONTSCALE # 计算文本的缩放宽度 text_group_middle = displayio.Group(scale=FONTSCALE, x=display.width // 2 - text_width_middle // 2, y=int(display.height/3) + display.height // 6) # 创建一个带有缩放和平移的文本组 text_group_middle.append(text_area_middle) # 将文本区域添加到文本组 splash.append(text_group_middle) # 将文本组添加到显示组 # 绘制下部标签 text_bottom = "Bottom" # 定义要显示的文本 text_area_bottom = label.Label(terminalio.FONT, text=text_bottom, color=TEXT_COLOR_BOTTOM) # 创建一个带有文本和颜色的标签 text_width_bottom = text_area_bottom.bounding_box[2] * FONTSCALE # 计算文本的缩放宽度 text_group_bottom = displayio.Group(scale=FONTSCALE, x=display.width // 2 - text_width_bottom // 2, y=int(2*display.height/3) + display.height // 6) # 创建一个带有缩放和平移的文本组 text_group_bottom.append(text_area_bottom) # 将文本区域添加到文本组 splash.append(text_group_bottom) # 将文本组添加到显示组 while True: pass # 无限循环以保持显示内容持续显示