带 LED 驱动器和键盘引擎的 SX1509 16 通道 I/O 扩展器
SX1509 组件允许你扩展 I/O 能力: (数据手册, SparkFun)。它使用 I²C 总线 进行通信。
配置完成后,你可以将 16 个引脚中的任意一个用作项目的引脚。 在 ESPHome 中,它们模拟真实的内部 GPIO 引脚, 因此可以与 ESPHome 的许多组件一起使用,如 GPIO 二进制传感器或 GPIO 开关。 SX1509 除了简单的数字引脚控制之外还能做更多事情。它可以产生 PWM 信号。 并且,通过内置的键盘引擎,它可以连接最多 64 个按钮,排列成 8x8 矩阵。
任何接受 引脚模式 的选项理论上都可以使用,但一些使用引脚模式的更复杂组件将无法工作。例如 I²C 或 SPI 引脚。

# SX1509 设备的示例配置条目sx1509: - id: sx1509_hub1 address: 0x3E # 如果你需要键盘 keypad: key_rows: 3 key_columns: 4 sleep_time: 256 scan_time: 2 debounce_time: 1- id (必选, ID): 用于此 SX1509 组件的 id。
- address (可选, int): 驱动器的 I²C 地址。
默认为
0x3E。
SX1509 集成了完全可编程的键盘扫描引擎,以实现键盘应用, 最多支持 8x8 矩阵(即 64 个键)。
-
keypad (可选): 添加此项以启用键盘。
-
key_rows (必选, int): 要使用的键盘行数。这将启用前 8 个引脚中的任意数量。 因此值为 3 时启用引脚 0、1、2 用作键盘矩阵的行。此值必须在 2 到 8 之间。
-
key_columns (必选, int): 要使用的键盘列数。这将启用最后 8 个引脚中的任意数量。 因此值为 4 时启用引脚 8、9、10、11 用作键盘矩阵的列。此值必须在 1 到 8 之间。
-
sleep_time (可选, int): 在此时间内没有按键将使键盘引擎进入睡眠。
-
scan_time (可选, int): 每行的扫描时间(必须大于去抖动时间)。
-
debounce_time (可选, int): 去抖动时间对所有 IO 通用。
-
keys (可选, string): 矩阵上存在的键,从左上角到右下角, 逐行排列。
key_collector需要此项。 -
on_key (可选, Automation): 当按下键时要执行 的自动化。键在一个名为
x的变量中。
-

NOTE
可以使用 键收集器 组件自动处理多个键(例如 PIN 码输入)。
请注意 I/O 引脚的功能。
| I/O | 输入输出 PWM | 行 | 列 |
|---|---|---|---|
| 0 | ✓ | ✓ | |
| 1 | ✓ | ✓ | |
| 2 | ✓ | ✓ | |
| 3 | ✓ | ✓ | |
| 4 | ✓ | ✓ | |
| 5 | ✓ | ✓ | |
| 6 | ✓ | ✓ | |
| 7 | ✓ | ✓ | |
| 8 | ✓ | ✓ | |
| 9 | ✓ | ✓ | |
| 10 | ✓ | ✓ | |
| 11 | ✓ | ✓ | |
| 12 | ✓ | ✓ | |
| 13 | ✓ | ✓ | |
| 14 | ✓ | ✓ | |
| 15 | ✓ | ✓ |
二进制传感器
Section titled “二进制传感器”要使用键盘上的各个键,需要在配置中添加单独的 binary_sensor 条目。
# 键盘键的单独 binary_sensorbinary_sensor: - platform: sx1509 sx1509_id: sx1509_hub1 name: "keypadkey_0" row: 0 col: 0 - platform: sx1509 sx1509_id: sx1509_hub1 name: "keypadkey_1" row: 0 col: 1- row (必选, int): 此键在键盘上的行号。
- col (必选, int): 此键在键盘上的列号。
引脚配置变量
Section titled “引脚配置变量”通过以下配置项,你可以将 SX1509 的各个引脚用作 binary_sensor、switch 或 output 的引脚。 输出可以进一步用于添加支持 PWM 的灯,如单色灯。
# 单独的 binary_sensor 输入binary_sensor: - platform: gpio name: "SX1509 Pin #0" pin: sx1509: sx1509_hub1 # 使用 SX1509 上的引脚号 0 number: 0 mode: input: true pullup: true inverted: true
# 单独的二级输出switch: - platform: gpio name: "SX1509 Pin #1" pin: sx1509: sx1509_hub1 # 使用 SX1509 上的引脚号 1 number: 1 # 用作开关的输出 mode: output: true inverted: false
# 单独的输出output: - platform: sx1509 sx1509_id: sx1509_hub1 id: 'sx1509_output' # 使用 SX1509 上的引脚号 2 pin: 2
# 灯可以使用配置的输出light: - platform: monochromatic id: light0 name: "light0" output: sx1509_output-
sx1509 (必选, ID): 引脚所属的 SX1509 组件的 id。
-
number (必选, int): 引脚号。
-
inverted (可选, boolean): 是否将所有读取和写入的值 视为反转。默认为
false。 -
mode (可选, string): 为此引脚设置的引脚模式。可选
INPUT、INPUT_PULLUP、OUTPUT或OUTPUT_OPEN_DRAIN。