1. 宏基础

宏基础:创建第一个自定义G代码宏 学习卡片

任务目标

在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

运行与调用方式

  1. 将上述代码追加到printer.cfg末尾。
  2. 保存文件并在Klipper终端执行FIRMWARE_RESTART,或通过网页界面点击“重启固件”使配置生效。
  3. 在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}转换,请勿在调用时直接传毫秒值。