跳转到内容

TM1638 7 段显示键盘及 LED 模块

tm1638 显示平台允许你在 ESPHome 中使用流行的 TM1638 7 段显示键盘及 LED 模块。

TM1638 8 段显示键盘及 LED 模块。

模块可以使用 5V 直流电供电。要显示冒号标点,请在冒号位置使用 .。(参见下面的时钟示例)

# 示例配置条目
display:
platform: tm1638
id: tm1638_display
stb_pin: GPIOXX
clk_pin: GPIOXX
dio_pin: GPIOXX
intensity: 5
update_interval: 5s
lambda: |-
it.print("0123");
  • stb_pin (必需, Pin Schema): 你连接 STB 线的引脚。

  • clk_pin (必需, Pin Schema): 你连接 CLK 线的引脚。

  • dio_pin (必需, Pin Schema): 你连接 DIO 线的引脚。

  • intensity (可选, int): TM1638 驱动输出的强度。范围从 0(最弱)到 7(默认值)。此设置将影响 7 段显示和 8 个单独 LED 灯。

  • lambda (可选, lambda): 用于在 TM1638 上渲染内容的 lambda。 更多信息请参见 渲染 Lambda。

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

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

TM1638 与功能齐全的 显示渲染引擎 有类似的 API,但它只是子集,因为 TM1638 7 段显示键盘及 LED 模块没有单个像素的概念。在 lambda 中,你收到一个名为 it 的变量, 与其他所有显示一样。不过在这种情况下,it 是 TM1638 实例(参见 API 参考)。

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

三个方法(print、printf 和 strftime )都在开头 可选地接受一个位置参数,可用于在特定位置打印文本。此参数默认为 0, 意味着第一个 TM1638 的第一个字符。例如,要在 TM1638 末尾 开始文本的第一个字符,你会写 it.print(3, "0");。

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

display:
- platform: tm1638
# ...
lambda: |-
// 在位置 0(左侧)打印 0
it.print("0");
// 结果:"0 "
// 在位置 1(第二个字符)打印 1
it.print(1, "1");
// 结果:"01 "
// 写一个传感器值(假设它是 42.1)
it.printf(0, "%.1f", id(my_sensor).state);
// 结果:"42.1 "(点将出现在"2"段位上)
// 用空白覆盖先前的内容
it.print(" ");
// 打印右填充的传感器值,小数点后 0 位
it.printf("S%3.0f", id(my_sensor).state);
// 结果:"S 42"
// 打印当前时间
it.strftime("%H.%M");
// 10:06:42 的结果 -> 带 : 的显示上为 "10:06",带 . 的显示上为 "10.06"

请参见 格式化文本 了解 printf 格式化规则的介绍,以及 显示时间 了解 strftime 时间格式化的介绍。

以下示例创建了一个典型的数字时钟,冒号 : 每秒闪烁。

time:
- platform: homeassistant
id: homeassistant_time
display:
platform: tm1638
clk_pin: GPIOXX
dio_pin: GPIOXX
stb_pin: GPIOXX
update_interval: 500ms
lambda: |-
static int i = 0;
i++;
if ((i % 2) == 0)
it.strftime("%H.%M", id(homeassistant_time).now());
else
it.strftime("%H%M", id(homeassistant_time).now());

TM1638 7 段显示键盘及 LED 模块在显示顶部或中间有 8 个 LED 灯(取决于板卡)。这些 LED 可以作为 开关 或 输出 暴露,led 属性设置为 0 到 7。板卡上的 LED 标记为 1-8,但 led 使用基于零的地址。标记为”1”的 LED 在配置中是 LED 0。

switch:
- platform: tm1638
id: TM1638Led1
led: 0
output:
- platform: tm1638
id: TM1638Led2
led: 1

TM1638 7 段显示键盘及 LED 模块在显示顶部或中间有 8 个按钮(取决于板卡)。这些按钮作为二进制传感器组件暴露,key 属性设置为 0 到 7。可以通过二进制传感器组件配置访问它们。与 LED 灯一样,板卡上的按钮标记为 1-8,但使用基于零的地址。因此,标记为”1”的按钮在配置中是 key 0。请参见 二进制传感器

binary_sensor:
- platform: tm1638
name: "TM1638 Button 1"
id: TM1638Button1
key: 0
filters:
- delayed_on: 10ms
on_press:
then:
- switch.turn_on: TM1638Led1
on_release:
then:
- switch.turn_off: TM1638Led1
- platform: tm1638
name: "TM1638 Button 2"
id: TM1638Button2
key: 1
filters:
- delayed_on: 10ms
on_press:
then:
- output.turn_on: TM1638Led2
on_release:
then:
- output.turn_off: TM1638Led2