1. 宏基础
任务目标
在Klipper中创建一个名为M300的自定义G代码宏,用于控制蜂鸣器发声。该宏接受一个可选参数S(发声时长,单位:秒),调用时蜂鸣器按指定时长鸣响,未指定参数时使用默认时长。
环境与前置条件
- 已安装并运行Klipper的3D打印机(本文以常见配置为例)。
- 蜂鸣器已连接至主控板空闲引脚(示例使用
PB6,请按实际接线修改)。 - 可通过SSH或Klipper终端访问配置文件。
实现步骤
在Klipper配置文件(通常为printer.cfg)中,通过[gcode_macro M300]段定义宏。宏体内使用SET_PIN命令控制引脚电平,配合G4暂停命令实现发声时长控制。
关键完整代码
# printer.cfg 中添加以下内容
[gcode_macro M300]
description: 控制蜂鸣器发声,用法: M300 [S<秒>]
# 默认发声时长(秒)
variable_duration: 0.2
gcode:
# 解析参数,未提供S时使用默认值
{% set duration = params.S|default(duration)|float %}
# 开启蜂鸣器(高电平触发)
SET_PIN PIN=beeper VALUE=1
# 保持指定时长
G4 P{duration * 1000}
# 关闭蜂鸣器
SET_PIN PIN=beeper VALUE=0
[output_pin beeper]
pin: PB6
pwm: False
value: 0
运行与调用方式
- 将上述代码追加到
printer.cfg末尾。 - 保存文件并在Klipper终端执行
FIRMWARE_RESTART,或通过网页界面点击“重启固件”使配置生效。 - 在Klipper控制台或终端发送以下命令测试:
M300 ; 蜂鸣器响0.2秒(默认)
M300 S1 ; 蜂鸣器响1秒
M300 S0.5 ; 蜂鸣器响0.5秒
验证方法与判定标准
- 配置加载:重启后终端无报错,执行
STATUS命令显示配置已加载。 - 功能测试:发送
M300后,蜂鸣器发出约0.2秒短鸣;发送M300 S1后,蜂鸣器持续鸣响约1秒后停止。 - 参数解析:发送
M300 S0时蜂鸣器不响(时长0秒),证明参数被正确解析。
常见问题
- 蜂鸣器不响:检查
output_pin中的pin是否与接线一致;若蜂鸣器为低电平触发,将两个SET_PIN的VALUE值互换(1改为0,0改为1)。 - 报错“Unknown command”:确认配置已重启加载,且
[gcode_macro M300]段拼写正确。 - 时长不准:
G4 P参数单位为毫秒,代码中已通过{duration * 1000}转换,请勿在调用时直接传毫秒值。