这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » [Let'sDo第3期]DIY一个电子测光表4过程贴(屏幕显示)

共5条 1/1 1 跳转至

[Let'sDo第3期]DIY一个电子测光表4过程贴(屏幕显示)

菜鸟
2024-11-26 09:58:23     打赏

[Let'sDo3]    DIY一个电子测光表      4过程贴(屏幕显示)


一、基础显示测试:

image.png

官方测试代码: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


二、框架显示测试:

image.png

调整代码:

# 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  # 无限循环以保持显示内容持续显示





关键词: 探索     电子    

院士
2024-11-26 10:15:47     打赏
2楼

这代码注释也太全了吧!


高工
2024-11-26 11:26:28     打赏
3楼

谢谢分享


高工
2024-11-26 23:05:34     打赏
4楼

照片清晰,代码注释多。



工程师
2024-11-27 20:34:40     打赏
5楼

666666


共5条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]