跳转到内容

MAX7219 七段数码管显示屏

max7219 显示平台允许您在 ESPHome 中使用 MAX7219 七段数码管显示驱动器( 数据手册hobbycomponents)。 请注意,此组件适用于七段数码管显示屏,不适用于点阵配置。

MAX7219 七段数码管显示屏。

由于与 MAX7219 的通信使用 SPI,您需要在配置中有 SPI 总线,并设置 mosi_pin(不需要 miso_pin)。 将 VCC 连接到 3.3V(制造商建议 4+ V,但 3.3V 似乎工作正常),DIN 连接到您的 mosi_pin, CS 连接到您设置的 cs_pin,最后将 GND 连接到 GND。

您甚至可以通过将链中前一个芯片的 DOUT 连接到下一个 DIN 来菊花链连接多个 MAX7219。 超过约 3 个芯片时,3.3V 可能不够,因此您可能需要使用逻辑电平转换器。

# 配置示例
spi:
clk_pin: D0
mosi_pin: D1
display:
- platform: max7219
cs_pin: D2
num_chips: 1
lambda: |-
it.print("01234567");
  • cs_pin (必填, 引脚模式):您连接 CS 线的引脚。

  • num_chips (可选, int):您希望用于菊花链连接的芯片数量。默认为 1

  • intensity (可选, int):MAX7219 驱动输出的强度。范围从 0(最弱)到 15(默认)。

  • lambda (可选, lambda):用于在 MAX7219 上渲染内容的 lambda。 详见渲染 Lambda

  • update_interval (可选, 时间):重新绘制屏幕的间隔。默认为 1s

  • spi_id (可选, ID):如果要使用多个 SPI 总线,手动指定 SPI 组件 的 ID。

  • id (可选, ID):手动指定用于代码生成的 ID。

  • reverse_enable (可选, 布尔值):对于某些显示屏,芯片顺序是反向的,所以您会看到”56781234”而不是”12345678”。此选项将调整输出以补偿。默认为 false

MAX7219 具有与完整的显示渲染引擎类似的 API,但只是其中的一个子集,因为 MAX7219 七段数码管显示屏没有单个像素的概念。在 lambda 中,像所有其他显示屏一样,您会获得一个名为 it 的变量。在这种情况下,it 是一个 MAX7219 实例(参见 API 参考)。

MAX7219 最基本的操作是在屏幕上写入一个简单的数字,如本页顶部的配置示例所示。但是即使您传入一个字符串(这里是 "01234567"),ESPHome 也会将其转换为 MAX7219 可以理解的表示形式:应该打开的确切像素。当然,并非所有字符都可以表示。您可以在下方查看完整的字符列表。

这三种方法(printprintfstrftime)都可以选择在开头接受一个位置参数,可用于在特定位置打印文本。此参数默认为 0,即第一个 MAX7219 的第一个字符。例如,要在第一个 MAX7219 的末尾开始打印文本的第一个字符,您可以写 it.print(7, "0");

还要注意 .(点)字符是特殊的,因为当 ESPHome 在字符串中遇到它时,前一个位置的小数点段将被启用。

display:
- platform: max7219
# ...
lambda: |-
// 在位置 0(左侧)打印 0
it.print("0");
// 结果:"0 "
// 在位置 1(第二个字符)打印 1
it.print(1, "1");
// 结果:"01 "
// 让我们写入一个传感器值(假设是 42.1)
it.printf(3, "%.1f", id(my_sensor).state);
// 结果:"01 42.1 "(点会出现在"2"段上)
// 用空白覆盖之前的内容
it.print(" ");
// 打印一个右对齐填充的传感器值,小数点后 0 位
it.printf("SENS%4.0f", id(my_sensor).state);
// 结果:"SENS 42"
// 打印当前时间
it.print(" ");
it.strftime("%H.%M.%S", id(esptime).now());
// 10:06:42 的结果 -> "10.06.42 "
// 根据另一个 id 更改显示强度。
// 值应为 0-15。
it.set_intensity(id(my_brightness));

请参阅格式化文本了解 printf 格式规则的快速介绍,参阅显示时间了解 strftime 时间格式的介绍。

MAX7219 表示字符
(空格)
.
!
0O
1I
2Z
3
4
5Ss
6
7
8
9
H
([C
{
)]
}Tt
`
'
"
@
?
,i
%
*
:
;
Aa
Bb
Dd
Ee
Ff
Gg
Jj
Ll
Nn
Pp
Q
Rr
UV
W
Yy
-
_
=
|
c
h
o
uv
~

NOTE

原始七段数码管显示屏基础图像来自维基百科 https://de.wikipedia.org/wiki/Datei:7_Segment_Display.svg 由用户 h2g2bobCreative Commons BY-SA 3.0 下发布,并为本文档进行了修改。