跳转到内容

MCP4461 组件

MCP4461 输出组件通过 I²C 启用 8 位外部四数字电位器/变阻器的使用。更多信息请参见 MCP4461 数据手册

# 示例配置条目
mcp4461:
- id: mcp4461_output
  • id (可选, ID):此输出组件使用的 id。

  • address (可选, 整数):手动指定数字电位器的 I2C 地址。 默认为 0x2C

  • disable_wiper_0 (可选, 布尔值):禁用抽头 0。默认为 false

  • disable_wiper_1 (可选, 布尔值):禁用抽头 1。默认为 false

  • disable_wiper_2 (可选, 布尔值):禁用抽头 2。默认为 false

  • disable_wiper_3 (可选, 布尔值):禁用抽头 3。默认为 false

MCP4461 输出组件将全局 MCP4461 的 8 个 MCP4461(抽头)通道作为浮点输出暴露。

# 单个输出
# A-D 是易失性抽头 0-3
# E-H 是非易失性抽头 0-3
# (AE, BF, CG, DH 属于同一组)
output:
- platform: mcp4461
id: digipot_channel_0
mcp4461_id: mcp4461_output
channel: A
initial_value: 0.5 # 始终在启动时用中等电阻范围的抽头初始化易失性抽头 0
- platform: mcp4461
id: digipot_channel_1
mcp4461_id: mcp4461_output
channel: B
- platform: mcp4461
id: digipot_channel_2
mcp4461_id: mcp4461_output
channel: C
- platform: mcp4461
id: digipot_channel_3
mcp4461_id: mcp4461_output
channel: D
- platform: mcp4461
id: digipot_channel_4
mcp4461_id: mcp4461_output
channel: E
- platform: mcp4461
id: digipot_channel_5
mcp4461_id: mcp4461_output
channel: F
- platform: mcp4461
id: digipot_channel_6
mcp4461_id: mcp4461_output
channel: G
- platform: mcp4461
id: digipot_channel_7
mcp4461_id: mcp4461_output
channel: H
  • id (必填, ID):此输出组件使用的 id。

  • mcp4461_id (可选, ID):手动指定 MCP4461的 ID。 如果您想同时使用多个 MCP4461 IC,请使用此选项。

  • channel (*必填, 字符串):选择此 MCP4461 输出组件的通道。 ABCDEFGH 之一。

  • initial_value (可选, 浮点数):设置初始抽头值,有效范围为 0 - 1.0

  • terminal_a (可选, 布尔值):如果端子 “A” 应在启动时禁用,则设置为 false。默认为 true

  • terminal_b (可选, 布尔值):如果端子 “B” 应在启动时禁用,则设置为 false。默认为 true

  • terminal_w (可选, 布尔值):如果端子 “W” 应在启动时禁用,则设置为 false。默认为 true

  • 所有其他配置变量来自 Output

7 位和 8 位数字电位器/变阻器设备的抽头数通常为 100/257。

对于 MCP4461,0 - 1.0 范围内的有效输出状态将在内部乘以 256 以获得 [0-256] 范围内的整数抽头计数。

NOTE

如果您没有指定 initial_value 配置变量,您可以使用 read_state()update_state() 在启动时获取当前状态。电位器(非变阻器)可以用相同方式处理。见下面的示例。

esphome:
on_boot:
priority: 100
then:
- number.set:
id: digipot_volatile_0
value: !lambda |-
uint16_t wiper_level = id(digipot_wiper_0).read_state();
return wiper_level;
- lambda: |-
id(digipot_wiper_0).update_state();