伺服组件
servo 组件允许你在 ESPHome 中使用舵机电机。舵机是
包含驱动电机所需的所有电子器件并提供
简单的 PWM 接口来控制电机的电机控制器。
此组件同时适用于连续旋转舵机和绝对角度舵机,并且具有与 Arduino Servo 库类似的接口。
首先,为舵机所连接的引脚创建一个输出组件(这里是 esp8266_pwm)。然后通过分配一个 ID 将该输出连接到 servo 组件。
请注意,输出的频率应约为 50Hz,因为大多数舵机控制器
只在此频率范围内工作。
NOTE
此组件不会自动出现在 Home Assistant 前端中,因为 Home Assistant 不支持舵机。请参见 Home Assistant 配置。
# 示例配置条目servo: - id: my_servo output: pwm_output
# 示例输出平台# 在 ESP32 上,使用 ledc 输出output: - platform: esp8266_pwm id: pwm_output pin: GPIOXX frequency: 50Hz高级选项:
-
min_level (可选, percentage): 最小值(-100%)将映射到的 PWM 占空比。默认为
3%。 -
idle_level (可选, percentage): 空闲值(0%)将映射到的 PWM 占空比。这也是舵机在启动时的状态。默认为
7.5%。 -
max_level (可选, percentage): 最大值(100%)将映射到的 PWM 占空比。默认为
12.0%。 -
restore (可选, boolean): 是否在启动时恢复舵机电机的状态。 如果你有一个绝对角度舵机,并且它在启动时会回到 0 位置,这会很有用。 默认为
false。 -
auto_detach_time (可选, Time): 达到目标值后舵机将被分离的时间;如果设为零,舵机将不会被分离。默认为
0s。 -
transition_length (可选, Time): 完成一次完整运动(-1.0 到 1.0)所需的时间。这实际上会限制舵机的速度,值越大,舵机动得越慢。默认为
0s。 这可以减慢舵机以避免发出嘈杂的声音,或者仅仅让运动不显得生硬。
NOTE
有些舵机支持更大的电平范围。对于连续旋转舵机,
这可以稍微加快它们的速度,对于绝对角度舵机,这可以扩展它们的角度范围。
你可以配置 min_level 和 max_level 选项来调整电平范围
以匹配你的舵机(试验这些值)。
servo.write 操作
Section titled “servo.write 操作”要在自动化或模板中使用你的舵机电机,你可以使用此操作将 舵机的目标电平设置在 -100% 到 100% 之间。
-
-100%(= -1.0)是舵机的最小值。对于连续旋转舵机,这将 使舵机向后旋转。
-
0%(= 0.0)是舵机的空闲电平。对于连续旋转舵机,这将 使舵机停止。
-
100%(= 1.0)是舵机的最大值。对于连续旋转舵机,这将 使舵机向前旋转。
on_...: then: - servo.write: id: my_servo level: -100.0%
# 模板化 - servo.write: id: my_servo # 对于模板值,范围是 [-1; 1] level: !lambda |- if (id(my_binary_sensor).state) { return 1.0; } else { return -1.0; }配置选项:
servo.detach 操作
Section titled “servo.detach 操作”此操作允许你禁用舵机电机的输出—— 这将使舵机电机立即停止并禁用其主动控制。
on_...: then: - servo.detach: my_servoHome Assistant 配置
Section titled “Home Assistant 配置”从 Home Assistant 控制你的舵机的最简单方法是在你的 ESPHome
配置中添加一个 number。参见 Number 了解更多信息。
number: - platform: template name: Servo Control min_value: -100 initial_value: 0 max_value: 100 step: 1 optimistic: true set_action: then: - servo.write: id: my_servo level: !lambda 'return x / 100.0;'
servo: - platform: ... # [...] 伺服配置 id: my_servo