TM1638 7 段显示键盘和 LED 模块
tm1638 显示平台允许您在 ESPHome 中使用流行的 TM1638 7 段显示键盘和 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 (**必填”, 引脚模式):STB 线连接的引脚。
-
clk_pin (**必填”, 引脚模式):CLK 线连接的引脚。
-
dio_pin (**必填”, 引脚模式):DIO 线连接的引脚。
-
intensity (可选, int):TM1638 驱动输出的强度。范围从 0(最弱)到 7(默认)。此设置将影响 7 段显示和 8 个独立 LED 灯。
-
update_interval (可选, 时间):重新绘制屏幕的间隔。默认为
1s。 -
id (可选, ID):手动指定用于代码生成的 ID。
渲染 Lambda
Section titled “渲染 Lambda”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 时间格式的介绍,请参阅显示时间。
创建数字时钟
Section titled “创建数字时钟”以下示例创建一个典型的数字时钟,每秒闪烁 : 冒号。
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: 1TM1638 7 段显示键盘和 LED 模块在显示屏顶部或中间有 8 个按钮,具体取决于板子。这些按钮通过设置 key 属性在 0 到 7 之间作为二进制传感器组件公开,它们可以通过二进制传感器组件配置访问。与 LED 一样,按钮在板上标记为 1-8,但使用零基寻址。因此,标记为”1”的按钮在配置中是键 0。请参阅二进制传感器
binary_sensor: - platform: tm1638 name: "TM1638 按钮 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 按钮 2" id: TM1638Button2 key: 1 filters: - delayed_on: 10ms on_press: then: - output.turn_on: TM1638Led2 on_release: then: - output.turn_off: TM1638Led2