旋转编码器传感器
rotary_encoder 传感器平台允许您在 ESPHome 中使用任何连续旋转的旋转编码器。这些设备通常有两个引脚用于编码旋转。每次旋转编码器的旋钮时,两个引脚的信号会依次变为高电平和低电平。请参阅 这篇 Arduino 文章 以更好地理解这些传感器。
+ 连接到 3.3V,GND 连接到 GND,CLK 和 DT 分别是 A 和 B。
要在 ESPHome 中使用旋转编码器,首先确定编码步进值的两个引脚。这些引脚通常如上图所示称为 CLK 和 DT。请注意,如果此传感器输出的值方向错误,只需交换这两个引脚即可。
# 示例配置条目sensor: - platform: rotary_encoder name: "旋转编码器" pin_a: D1 pin_b: D2要修改引脚的其他参数(如活动状态或上拉),您可以添加额外的选项。
# 高级引脚配置示例pin_a: number: D5 inverted: true mode: input: true pullup: true-
pin_a (必需, 引脚模式): 用于确定步进值的第一个引脚。不能是外部 I/O 扩展器的引脚。
-
pin_b (必需, 引脚模式): 用于确定步进值的第二个引脚。不能是外部 I/O 扩展器的引脚。
-
pin_reset (可选, 引脚模式): 可选的重置步进值的引脚。这对于带有第三个引脚的旋转编码器很有用。默认为无重置引脚。
-
resolution (可选, 字符串): 传感器的分辨率,控制一步产生多少个脉冲:
1- (默认)24
-
min_value (可选, 整数): 此旋转编码器将达到的最小值,进一步旋转旋钮不会减少数值。默认为无最小值。
-
max_value (可选, 整数): 此旋转编码器将达到的最大值,进一步旋转旋钮不会增加数值。默认为无最大值。
-
publish_initial_value (可选, 布尔值): 控制是否在 ESPHome 启动时发布值。默认情况下,只有在值更改时才发布,导致最初显示”未知”值。如果将此选项设置为 true,则在启动后和值更改时各发布一次。默认为
false。 -
restore_mode (可选): 控制旋转编码器在启动时如何尝试恢复状态。
RESTORE_DEFAULT_ZERO- (默认) 尝试恢复状态,如果无法恢复则默认为零 (0)。ALWAYS_ZERO- 始终以零 (0) 值初始化计数器。
-
on_clockwise (可选, 自动化): 顺时针旋转旋钮时要执行的操作。请参阅
on_clockwise和on_anticlockwise触发器。 -
on_anticlockwise (可选, 自动化): 逆时针旋转旋钮时要执行的操作。请参阅
on_clockwise和on_anticlockwise触发器。 -
传感器的所有其他选项。
sensor.rotary_encoder.set_value 动作
Section titled “sensor.rotary_encoder.set_value 动作”可以使用此动作手动将旋转编码器的内部状态更改为任何值。执行此动作后,进一步旋转编码器将相对于新设置的内部值增加/减少状态。
# 示例配置条目sensor: - platform: rotary_encoder id: my_rotary_encoder # ...
# 在某个触发器中on_...: - sensor.rotary_encoder.set_value: id: my_rotary_encoder value: 10
# 模板化 - sensor.rotary_encoder.set_value: id: my_rotary_encoder value: !lambda 'return -1;'配置选项:
on_clockwise 和 on_anticlockwise 触发器
Section titled “on_clockwise 和 on_anticlockwise 触发器”使用这些配置选项,您可以根据编码器旋转的方向而不是其当前值运行自动化。这些触发器忽略最小和最大值,并且每一步都会触发。
on_clockwise: - logger.log: "顺时针旋转"on_anticlockwise: - logger.log: "逆时针旋转"