Marlin固件中的 configuration全中文注释 Marlin 3D打印机固件 

3D打印技术 /[固件]
2018-06-10 19:19
Marlin固件 configuration全中文注释.jpg

Marlin 3D打印机固件
版权(C)2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
基于Sprinter和grbl。
版权所有(C)2011 Camiel Gubbels / Erik van der Zalm

*该程序是免费软件:您可以重新发布和/或修改
*根据GNU通用公共许可证条款发布
*自由软件基金会,许可证的第三版,或者
*(可选)任何更新的版本。
*这个程序是分发的,希望它会有用,
*但没有任何担保; 甚至没有暗示的保证
*适销性或针对特定用途的适用性。看到了
* GNU通用公共许可证更多细节。
*您应该收到GNU通用公共许可证的副本
*随着这个程序。如果没有,请参阅<http://www.gnu.org/licenses/>
*
* /

/ * *
* Configuration.h
*
*基本设置,如:
*  - 电子类型
*  - 温度传感器的类型
*  - 打印机几何
*  -  Endstop配置
*  -  LCD控制器
*  - 额外功能
*高级设置可以在Configuration_adv.h中找到

* /
#IFNDEF CONFIGURATION_H
#定义 CONFIGURATION_H
#定义 CONFIGURATION_H_VERSION  010107

// ================================================ ===========================
// =============================入门指南================= ============
// ================================================ ===========================

/ * *
*以下是用于校准机器的一些标准链接:
* http://reprap.org/wiki/Calibration
* http://youtu.be/wAL9d7FgInk
* http://calculator.josefprusa.cz
* http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide
* http://www.thingiverse.com/thing:5573
* https://sites.google.com/site/repraplogphase/calibration-of-your-reprap
* http://www.thingiverse.com/thing:298812
* /

// ================================================ ===========================
// ============================= DELTA打印机================= ==============
// ================================================ ===========================
//对于Delta打印机,从其中一个配置文件开始
// example_configurations / delta目录并自定义您的机器。
// ================================================ ===========================
// ============================= SCARA打印机================= ==============
// ================================================ ===========================
//对于SCARA打印机,启动配置文件
// example_configurations / SCARA并自定义您的机器。
// @部分信息

//这个版本的用户指定的版本信息在期间显示在[Pronterface等]终端窗口中
//启动。Braino教授实施一个想法,告知用户对此做出的任何修改
//由用户构建已成功上传到固件中。
#定义 STRING_CONFIG_H_AUTHOR  “(无,默认配置)”  //谁所做的更改。
#定义 SHOW_BOOTSCREEN
#限定 STRING_SPLASH_LINE1 SHORT_BUILD_VERSION //将启动过程中在第1行中显示
#限定 STRING_SPLASH_LINE2 WEBSITE_URL          //将启动过程中在第2行中显示
// ***供应商请阅读************************************** ***********

// Marlin现在允许您在机器上显示供应商引导映像
//开始。当SHOW_CUSTOM_BOOTSCREEN被定义时,Marlin会首先显示你的
//自定义启动映像,然后显示默认的Marlin启动映像。

//我们建议您利用这个新功能并保留Marlin
//启动图像未修改。例如,看看bq Hephestos 2
//示例配置文件夹。

// #define SHOW_CUSTOM_BOOTSCREEN
// @部分机器

/ * *
*选择主板上的哪个串行端口用于与主机进行通信。
*这允许将无线适配器(例如)连接到非默认端口引脚。
*无论此设置如何,串行端口0始终由Arduino引导加载程序使用。
*
*:[0,1,2,3,4,5,6,7]
* /
#定义 SERIAL_PORT  0

/ * *
*此设置决定了打印机的通讯速度。
*
* 250000在大多数情况下都适用,但如果您尝试更低的速度
*在主机打印期间,您通常会遇到退出事件。
*您可以尝试高达1000000加速SD文件传输。
*
*:[2400,9600,19200,38400,57600,115200,250000,500000,1000000]
* /
#定义 波特率 250000

//启用AT90USB设备上的蓝牙串行接口
// #define BLUETOOTH

//以下定义选择您拥有的电子板。
//请选择与您的设置匹配的boards.h中的名称
#IFNDEF主机板
  #定义 主机板 BOARD_RAMPS_14_EFB
#ENDIF

//您的RepStrap或其他自定义计算机的可选自定义名称
//显示在LCD“Ready”信息中
//#定义CUSTOM_MACHINE_NAME“3D打印机”

//定义此设置为此打印机设置唯一标识符(由某些程序用于区分机器)
//您可以使用在线服务生成随机UUID。(例如http://www.uuidgenerator.net/version4
// #define MACHINE_UUID“00000000-0000-0000-0000-000000000000”

// @分段挤出机

//这定义了挤出机的数量
//:[1,2,3,4,5]
#定义 挤出机 1

//通常预期的灯丝直径(1.75,2.85,3.0,...)。用于体积式,长丝宽度传??感器等
#定义 DEFAULT_NOMINAL_FILAMENT_DIA  3.0

//对于独眼巨人或任何共用一个喷嘴的“多重挤出机”。
//#定义SINGLENOZZLE

/ * *
*Pr??aMK2单喷嘴多材料多路复用器和变种。
*
*此设备允许控制板上的一个步进驱动器进行驱动
* 2至8个步进电机,一次一个,以适合的方式
*用于挤出机。
*
*此选项仅允许多路复用器打开换刀。
*配置自定义E动作的其他选项正在等待处理。
* /
// #define MK2_MULTIPLEXER
#如果启用(MK2_MULTIPLEXER)
  //如果需要,覆盖默认的DIO选择器引脚。
  //某些引脚文件可能会为这些引脚提供默认值。
  // #define E_MUX0_PIN 40 //总是必需的
  // #define E_MUX1_PIN 42 //需要3到8个步进器
  //#定义E_MUX2_PIN 44 //需要5到8步进器
#ENDIF

//使用单个步进电机的双重挤出机
//#定义 SWITCHING_EXTRUDER
#如果启用(SWITCHING_EXTRUDER)
  #定义 SWITCHING_EXTRUDER_SERVO_NR  0
  #限定 SWITCHING_EXTRUDER_SERVO_ANGLES { 0,90 } //角为E0,E1 [,E2,E3]
  #如果 EXTRUDERS> 3
    #定义 SWITCHING_EXTRUDER_E23_SERVO_NR  1
  #ENDIF
#ENDIF

//使用伺服电机升起/降低其中一个喷嘴的双喷嘴
//#定义 SWITCHING_NOZZLE
#如果启用(SWITCHING_NOZZLE)
  #定义 SWITCHING_NOZZLE_SERVO_NR  0
  #限定 SWITCHING_NOZZLE_SERVO_ANGLES { 0,90 }    //角为E0,E1
  // #define HOTEND_OFFSET_Z {0.0,0.0}
#ENDIF

/ * *
*两台独立的X型车与连接到移动部件的挤出机
*通过磁性对接机制。需要SOL1_PIN和SOL2_PIN。
* /
//#定义PARKING_EXTRUDER
#如果启用(PARKING_EXTRUDER)
  #限定 PARKING_EXTRUDER_SOLENOIDS_INVERT            //如果启用,电磁阀没有与外加电压磁化
  #限定 PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW   // LOW或HIGH信号销激励线圈
  #定义 PARKING_EXTRUDER_SOLENOIDS_DELAY  250         //磁场延迟(ms)。没有延迟,如果0或未定义。
  #定义 PARKING_EXTRUDER_PARKING_X - { 78,184 }      //用于停放挤出机X位置
  #定义 PARKING_EXTRUDER_GRAB_DISTANCE  1             // mm移动到停车点之外以抓取挤出机
  #在停车前定义 PARKING_EXTRUDER_SECURITY_RAISE  5            // Z-提升
  #限定 HOTEND_OFFSET_Z { 0.0,1.3 }                 //两个hotends的Z-偏移。第一个必须是0。
#ENDIF

/ * *
*“混合挤出机”
*  - 添加新代码M165,设置当前的混音因子。
*  - 扩展步进程序以按比例移动多个步进器。
*  - 可选支持Repetier固件M163,M164和虚拟挤出机。
*  - 此实施仅支持单台挤出机。
*  - 为Pia Taubert的参考实现启用DIRECT_MIXING_IN_G1
* /
//#定义MIXING_EXTRUDER
#如果启用(MIXING_EXTRUDER)
  #定义 MIXING_STEPPERS  2         //步进数在混合挤出机
  #定义 MIXING_VIRTUAL_TOOLS  16   //使用虚拟工具与方法和M163 M164
  // #define DIRECT_MIXING_IN_G1 //在G1移动命令中允许ABCDHI混合因子
#ENDIF

//挤出机的偏移(如果使用多于一个,则取消注释并在更改时依靠固件进行定位)。
//对于挤出机0 hotend(默认挤出机),偏移必须为X = 0,Y = 0。
//对于其他的热量来说,它们距离挤出机的距离为零。
// #define HOTEND_OFFSET_X {0.0,20.00} //(以毫米为单位)对于每个挤出机,X轴上的温度偏移
// #define HOTEND_OFFSET_Y {0.0,5.00} //每个挤出机//以毫米为单位,Y轴上的温度偏移

// @部分机器

/ * *
*在这里选择你的电源。如果您尚未连接PS_ON_PIN,请使用0
*
* 0 =无电源开关
* 1 = ATX
* 2 = X-Box 360 203瓦(蓝线连接到PS_ON,红线连接到VCC)
*
*:{0:'无电源开关',1:'ATX',2:'X-Box 360'}
* /
#定义 POWER_SUPPLY  0

#如果 POWER_SUPPLY> 0
  //启用此选项可在启动时关闭PSU。
  //需要使用M80打开步进电机和加热器的电源。
  // #define PS_DEFAULT_OFF
#ENDIF

// @部分温度

// ================================================ ===========================
// =============================热敏设置================= ===========
// ================================================ ===========================

/ * *
*  - 正常是4.7kohm PULLUP! -  1kohm上拉可用于hotend传感器,使用正确的电阻和表
*
*温度传感器可用:
*
* -3:带MAX31855的热电偶(仅用于传感器0)
* -2:带MAX6675的热电偶(仅适用于传感器0)
* -1:带AD595的热电偶
* 0:未使用
* 1:100k热敏电阻 - 爱普科斯100k(4.7k上拉)的最佳选择
* 2:200k热敏电阻 -  ATC Semitec 204GT-2(4.7k上拉)
* 3:Mendel零件热敏电阻(4.7k上拉)
* 4:10k热敏电阻!不要用它来做一个嗜好。它在高温下给出了不好的分辨率。!
* 5:100K热敏电阻 -  ATC Semitec 104GT-2(用于ParCan和J-Head)(4.7k上拉)
* 6:10k爱普科斯(EPCOS) - 不如表1(使用fluke热电偶创建)(4.7k上拉)
* 7:100k霍尼韦尔热敏电阻135-104LAG-J01(4.7k上拉)
* 71:100k霍尼韦尔热敏电阻135-104LAF-J01(4.7k上拉)
* 8:100k 0603 SMD Vishay NTCS0603E3104FXT(4.7k上拉)
* 9:100k GE Sensing AL03006-58.2K-97-G1(4.7k上拉)
* 10:100k RS热敏电阻198-961(4.7k上拉)
* 11:100k测试版3950 1%热敏电阻(4.7k上拉)
* 12:100k 0603 SMD Vishay NTCS0603E3104FXT(4.7k上拉)(标定为Makibox热床)
* 13:100k Hisens 3950 1%高达300°C用于“Simple ONE”和“Hotend”All One“
* 20:Ultimainboard V2.x中的PT100电路
* 60:10万制造商的工具工程凯普顿床热敏电阻测试= 3950
* 66:Dyze设计的4.7M高温热敏电阻
* 70:在bq Hephestos 2中找到的100K热敏电阻
* 75:100k通用硅热垫,带NTC 100K MGB18-104F39050L32热敏电阻
*
* 1k ohm pullup tables  - 这是非典型的,并且需要将1k的4.7k pullup更改。
*(但提供更高的准确度和更稳定的PID)
* 51:100k热敏电阻 - 爱普科斯(1k上拉)
* 52:200k热敏电阻 -  ATC Semitec 204GT-2(1k上拉)
* 55:100k热敏电阻 -  ATC Semitec 104GT-2(用于ParCan和J-Head)(1k上拉)
*
* 1047:带有4k7上拉的Pt1000
* 1010:带有1k上拉的Pt1000(非标准)
* 147:带有4k7上拉的Pt100
* 110:带有1k上拉的Pt100(非标准)
*
*将这些用于测试或开发目的。从不生产机器。
* 998:虚拟表总是读取25°C或下面定义的温度。
* 999:虚拟表总是读取100°C或下面定义的温度。
*
*:{'0':'未使用','1':'100k / 4.7k  - 爱普科斯','2':“200k / 4.7k  -  ATC Semitec 204GT-2”,'3':“Mendel-parts / 4.7k“,'4':”10k !!不用于高温。高温时分辨率不好“,”5“:”100K / 4.7k  -  ATC Semitec 104GT-2(用于ParCan& J-Head)“,”6“:”100k / 4.7k爱普科斯 - 不如表1精确“,”7“:”100k / 4.7k霍尼韦尔135-104LAG-J01“,”8“:”100k / 4.7 “100k / 4.7k GE Sensing AL03006-58.2K-97-G1”,“10”:“100k / 4.7k RS 198-961”,“11”:“100k / 4.7k RS 198-961”,“k 0603 SMD Vishay NTCS0603E3104FXT”,“9” “4.7k beta 3950 1%”,“12”:“100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT(为Makibox热床校准)”,'13':“100k Hisens 3950 1%最高温度可达300°C,适用于'Simple ONE'和''All'ONE'','20':”PT100(Ultimainboard V2.x)“,'51':”100k / 1k  - 爱普科斯“52”:“200k / 1k  -  ATC Semitec 204GT-2”,“55”:“100k / 1k  -  ATC Semitec 104GT-2(用于ParCan&J-头)”,'60':“100k Maker's工具Kapton Bed Thermistor beta = 3950“,'66':”Dyze Design 4.7M高温热敏电阻“,'70':”在Heqhestos 2中找到的100K热敏电阻“,'71':”100k / 4.7k霍尼韦尔135-104LAF-J01“,147”:Pt100 / 4.7k“,”1047“:”Pt1000 / 4.7k“,”110“:”Pt100 / 1k(非标准)“,”1010“:”Pt1000 / 1k(非标准)“,”-3“:”热电偶+ MAX31855(仅适用于传感器0)“,'-2':”热电偶+ MAX6675(仅用于传感器0)“,'-1':”热电偶+ AD595“,'998':”虚拟1“,”999 ':“假人2”}
* /
#定义 TEMP_SENSOR_0  1
#定义 TEMP_SENSOR_1  0
#定义 TEMP_SENSOR_2  0
#定义 TEMP_SENSOR_3  0
#定义 TEMP_SENSOR_4  0
#定义 TEMP_SENSOR_BED  0

//虚拟热敏电阻恒温读数,用于998和999
#定义 DUMMY_THERMISTOR_998_VALUE  25
#定义 DUMMY_THERMISTOR_999_VALUE  100

//使用温度传感器1作为传感器0的冗余传感器。如果读数
//来自两个传感器的差别太大,打印将被中止。
// #define TEMP_SENSOR_1_AS_REDUNDANT
#定义 MAX_REDUNDANT_TEMP_SENSOR_DIFF  10

//在M109返回成功之前,挤出机温度必须接近目标值
#限定 TEMP_RESIDENCY_TIME  10   //(秒)
#限定 TEMP_HYSTERESIS  3        //(摄氏度)范围+/-温度认为“接近”目标一个
#限定 TEMP_WINDOW      1        //围绕目标(摄氏度)窗口早期启动驻留定时器x摄氏度。

//在M190返回成功之前,床温必须接近目标
#限定 TEMP_BED_RESIDENCY_TIME  10   //(秒)
#限定 TEMP_BED_HYSTERESIS  3        //(摄氏度)范围+/-温度认为“接近”目标一个
#限定 TEMP_BED_WINDOW      1        //围绕目标(摄氏度)窗口早期启动驻留定时器x摄氏度。

//最低温度定义了低于此温度的加热器将不会启用它被使用
//检查热敏电阻的接线是否断开。
//否则这将导致加热器始终打开。
#定义 HEATER_0_MINTEMP  5
#定义 HEATER_1_MINTEMP  5
#定义 HEATER_2_MINTEMP  5
#定义 HEATER_3_MINTEMP  5
#定义 HEATER_4_MINTEMP  5
#定义 BED_MINTEMP  5

//当温度超过最高温度时,加热器将关闭。
//此功能可以保护您的电源不至于因过热而意外断电,但*不能*由热敏电阻短路/故障!
//您应该使用MINTEMP进行热敏电阻短路/故障保护。
#定义 HEATER_0_MAXTEMP  275
#定义 HEATER_1_MAXTEMP  275
#定义 HEATER_2_MAXTEMP  275
#定义 HEATER_3_MAXTEMP  275
#定义 HEATER_4_MAXTEMP  275
#限定 BED_MAXTEMP  150

// ================================================ ===========================
// ============================= PID设置================= ===============
// ================================================ ===========================
// PID调整指南在这里:http://reprap.org/wiki/PID_Tuning

//注释以下行以禁用PID并启用爆炸。
#定义 PIDTEMP
#限定 BANG_MAX  255      //限制电流到喷嘴,而在开关式模式; 255 =全电流
#限定 PID_MAX BANG_MAX //限制电流到喷嘴而PID是有效的(见下文PID_FUNCTIONAL_RANGE); 255 =全电流
#限定 PID_K1  0.95       //的PID内平滑因子
#如果启用(PIDTEMP)
  // #define PID_AUTOTUNE_MENU //将PID自动调谐添加到LCD的“温度”菜单,运行M303并应用结果。
  // #define PID_DEBUG //将调试数据发送到串口。
  // #define PID_OPENLOOP 1 //以开环形式放置PID。M104 / M140将输出功率从0设置为PID_MAX
  // #define SLOW_PWM_HEATERS // PWM频率非常低(大约0.125Hz = 8s),最小状态时间大约为1s对于由继电器驱动的加热器有用
  // #define PID_PARAMS_PER_HOTEND //为每个挤出机使用单独的PID参数(可用于不匹配的挤出机)
                                  //用g代码设置/获取:M301 E [挤出机编号,0-2]
  #限定 PID_FUNCTIONAL_RANGE  10  //如果在目标温度和实际温度之间的温度差
                                  //大于PID_FUNCTIONAL_RANGE,则PID将被关闭,加热器将被设置为最小/最大值。

  //如果您正在使用预配置的hotend,则可以通过取消注释来使用其中一个值集

  // Ultimaker
  #定义  DEFAULT_Kp  22.2
  #定义  DEFAULT_Ki  1.08
  #定义  DEFAULT_KD  114

  // MakerGear
  // #define DEFAULT_Kp 7.0
  // #define DEFAULT_Ki 0.1
  // #define DEFAULT_Kd 12

  // Mendel零件V9 12V
  // #define DEFAULT_Kp 63.0
  // #define DEFAULT_Ki 2.25
  // #define DEFAULT_Kd 440
#ENDIF  // PIDTEMP

// ================================================ ===========================
// ============================= PID>床温控制============== =
// ================================================ ===========================
//用PIDTEMPBED选择PID或bang-bang。如果爆炸,BED_LIMIT_SWITCHING将启用滞后
//
//取消注释以在床上启用PID。它使用与挤出机相同的频率PWM。
//如果你的PID_dT是默认的,并且对于你的硬件/配置是正确的,那意味着7.689Hz,
//将方波驱动到电阻性负载中并不会对FET加热产生显着影响。
//这也适用于250W加热器的Fotek SSR-10DA固态继电器。
//如果你的配置与此有很大不同,并且你不明白涉及的问题,那么你可能会这样
//在别人验证您的硬件工作前,不应使用床位PID。
//如果启用,请在下面找到您自己的PID常量。
// #define PIDTEMPBED

// #define BED_LIMIT_SWITCHING

//这将设置传递给床的最大功率,并替换HEATER_BED_DUTY_CYCLE_DIVIDER选项。
//所有形式的床控制服从(PID,砰砰声,带有迟滞的砰砰声)
//将它设置为255以外的任何值,都可以像HEATER_BED_DUTY_CYCLE_DIVIDER那样在床上启用一种PWM形式,
//所以你不应该使用它,除非你在床上使用PWM。(请参阅启用PIDTEMPBED的注释)
#定义 MAX_BED_POWER  255  //将占空比限制在睡眠状态; 255 =全电流
#如果启用(PIDTEMPBED)

  // #define PID_BED_DEBUG //将调试数据发送到串口。

  // 120V 250W硅胶加热器加入4mm硼硅酸盐(MendelMax 1.5+)
  //来自FOPDT模型 -  kp = .39 Tp = 405 Tdead = 66,Tc设置为79.2,攻击因子为.15(vs .1,1,10)
  #定义  DEFAULT_bedKp  10.00
  #定义  DEFAULT_bedKi。023
  #定义  DEFAULT_bedKd  305.4

  // 120V 250W硅胶加热器加入4mm硼硅酸盐(MendelMax 1.5+)
  //来自pidautotune
  // #define DEFAULT_bedKp 97.1
  // #define DEFAULT_bedKi 1.41
  // #define DEFAULT_bedKd 1675.16

  //找到你自己的:“M303 E-1 C8 S90”,在床上在90摄氏度下自动调谐8个周期。
#ENDIF  // PIDTEMPBED

// @分段挤出机

//如果温度低于EXTRUDE_MINTEMP,则此选项可防止挤出。
//它也使M302命令可以设置最小挤出温度
//或者允许移动挤出机而不管温度如何。
// ***强烈建议将此选项启用!***
#定义 PREVENT_COLD_EXTRUSION
#定义 EXTRUDE_MINTEMP  170

//这个选项可以防止单个挤出比EXTRUDE_MAXLENGTH长。
//请注意,对于Bowden挤出机,这里太小的值可能会阻止加载。
#定义 PREVENT_LENGTHY_EXTRUDE
#定义 EXTRUDE_MAXLENGTH  200

// ================================================ ===========================
// ========================热失控保护===================== ==
// ================================================ ===========================

/ * *
*热保护为您的打印机提供额外的保护,免受损坏
*和火。马林总是包括安全的最小和最大温度范围
*防止断开或断开的热敏电阻丝。
*
*问题:如果热敏电阻发生故障,报告会降低很多
*房间里的空气温度,固件会保持不变
*打开加热器。
*
*如果您收到“热失控”或“加热失败”错误
*可以在Configuration_adv.h中调整细节
* /

#定义 THERMAL_PROTECTION_HOTENDS  //为所有挤出机启用热保护
#定义 THERMAL_PROTECTION_BED      //启用加热床热保护

// ================================================ ===========================
// =============================机械设置================= ========
// ================================================ ===========================

// @部分机器

//取消注释其中一个选项以启用CoreXY,CoreXZ或CoreYZ运动
//按照通常的顺序或颠倒过来
//#定义COREXY
//#定义COREXZ
//#定义COREYZ
//#定义COREYX
//#定义COREZX
//#定义COREZY

// ================================================ ===========================
// ============================== Endstop设置================ ===========
// ================================================ ===========================

// @部分归位

//在这里指定连接到任何端点或探针的所有端点连接器。
//几乎所有打印机都将使用每个轴。探针将使用一个或多个
//额外的连接器。留下未定义的任何用于非终止和非终止目的。
#定义 USE_XMIN_PLUG
#定义 USE_YMIN_PLUG
#定义 USE_ZMIN_PLUG
// #define USE_XMAX_PLUG
// #define USE_YMAX_PLUG
// #define USE_ZMAX_PLUG

//粗略截止设置
#限定 ENDSTOPPULLUPS  //评论此出(使用//在该行的开始)以禁用终点挡块上拉电阻

#如果 DISABLED(ENDSTOPPULLUPS)
  //罚款endstop设置:单独的上拉。如果ENDSTOPPULLUPS被定义,将被忽略
  // #define ENDSTOPPULLUP_XMAX
  // #define ENDSTOPPULLUP_YMAX
  //#定义ENDSTOPPULLUP_ZMAX
  //#定义ENDSTOPPULLUP_XMIN
  // #define ENDSTOPPULLUP_YMIN
  //#定义ENDSTOPPULLUP_ZMIN
  //#定义ENDSTOPPULLUP_ZMIN_PROBE
#ENDIF

//机械终止,COM接地,NC至信号在这里使用“假”(最常见的设置)。
#限定 X_MIN_ENDSTOP_INVERTING  假 //设置为true反转挡块的逻辑。
#限定 Y_MIN_ENDSTOP_INVERTING  假 //设置为true反转挡块的逻辑。
#限定 Z_MIN_ENDSTOP_INVERTING  假 //设置为true反转挡块的逻辑。
#限定 X_MAX_ENDSTOP_INVERTING  假 //设置为true反转挡块的逻辑。
#限定 Y_MAX_ENDSTOP_INVERTING  假 //设置为true反转挡块的逻辑。
#限定 Z_MAX_ENDSTOP_INVERTING  假 //设置为true反转挡块的逻辑。
#限定 Z_MIN_PROBE_ENDSTOP_INVERTING  假 //设置为true反转探针的逻辑。

//如果所有启用的endstop引脚都具有中断功能,则启用此功能。
//这将消除轮询中断引脚的需要,节省很多CPU周期。
//#定义ENDSTOP_INTERRUPTS_FEATURE

// ================================================ =============================
// ==============================移动设置================ ============
// ================================================ =============================
// @部分议案

/ * *
* 默认设置
*
*这些设置可以通过M502重置
*
*请注意,如果启用了EEPROM,则保存的值将覆盖这些值。
* /

/ * *
*有了这个选项,每个E步进器可以有自己的因素
*跟随移动设置。如果给出的因素较少
*挤出机的总数,最后一个值适用于其余的。
* /
//#定义 DISTINCT_E_FACTORS

/ * *
*默认轴每单位步数(步数/毫米)
*用M92覆盖
* X,Y,Z,E0 [,E1 [,E2 [,E3 [,E4]]]]
* /
#限定 DEFAULT_AXIS_STEPS_PER_UNIT    { 80,80,4000,500 }

/ * *
*默认最大进给速率(mm / s)
*用M203覆盖
* X,Y,Z,E0 [,E1 [,E2 [,E3 [,E4]]]]
* /
#限定 DEFAULT_MAX_FEEDRATE           { 300,300,5,25 }

/ * *
*默认最大加速度(变化/秒)变化=毫米/秒
*(加速移动的最大起始速度)
*用M201覆盖
* X,Y,Z,E0 [,E1 [,E2 [,E3 [,E4]]]]
* /
#限定 DEFAULT_MAX_ACCELERATION       { 3000,3000,100,10000 }

/ * *
*默认加速度(变化/秒)变化=毫米/秒
*用M204覆盖
*
* M204 P加速
* M204 R缩回加速度
* M204 T旅行加速
* /
#定义 DEFAULT_ACCELERATION           3000     //用于打印移动的X,Y,Z和E加速度
#定义 DEFAULT_RETRACT_ACCELERATION   3000     //用于缩回?加速
#限定 DEFAULT_TRAVEL_ACCELERATION    3000     // X,Y,对于行程(非印刷)z加速度移动

/ * *
*默认冲击(mm / s)
*用M205 XYZE覆盖
*
*“Jerk”指定需要加速的最小速度变化。
*改变速度和方向时,如果差异小于
*值设置在这里,它可能会瞬间发生。
* /
#定义 DEFAULT_XJERK                  10.0
#定义 DEFAULT_YJERK                  10.0
#限定 DEFAULT_ZJERK                   0.3
#定义 DEFAULT_EJERK                   5.0

// ================================================ ===========================
// ============================= Z探头选项================ =============
// ================================================ ===========================
// @section探针

//
//请参阅http://marlinfw.org/docs/configuration/probes.html
//

/ * *
* Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
*
*为连接到Z Min endstop引脚的探针启用此选项。
* /
#定义 Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN

/ * *
* Z_MIN_PROBE_ENDSTOP
*
*对于连接到除Z-Min之外的任何引脚的探针,启用此选项。
*(默认情况下,Marlin将采用Z-Max endstop引脚。)
*要使用自定义Z探针引脚,请在下面设置Z_MIN_PROBE_PIN。
*
*  - 最简单的选择是使用免费的止端连接器。
*  - 使用5V供电(通常为电感式)传感器。
*
*  -  RAMPS 1.3 / 1.4板可以使用5V,GND和Aux4-> D32引脚:
*  - 对于简单的开关连接...
*  - 常闭开关到GND和D32。
*  - 常开开关到5V和D32。
*
*警告:设置错误的引脚可能会有意想不到的情况
*灾难性的后果。谨慎使用,并做好功课。
*
* /
//#定义Z_MIN_PROBE_ENDSTOP

/ * *
*探头类型
*
* Allen Key Probes,伺服探头,Z-Sled探头,FIX_MOUNTED_PROBE等
*激活其中的一个以使用下面的自动床铺调平。
* /

/ * *
*“手动探头”提供了一种无需探头即可进行“自动”床铺调平的方法。
*重复使用G29,用移动命令调整每个点的Z高度
*或(使用LCD_BED_LEVELING)LCD控制器。
* /
//#定义PROBE_MANUALLY

/ * *
*固定式安装的探针无需部署或需要手动部署。
*(例如,电感式探头或基于喷嘴的探头开关。)
* /
//#定义FIX_MOUNTED_PROBE

/ * *
* Z伺服探头,例如旋转臂上的止动开关。
* /
// #define Z_ENDSTOP_SERVO_NR 0 //默认为SERVO 0连接器。
//#定义Z_SERVO_ANGLES {70,0} // Z伺服部署和放置角度

/ * *
* BLTouch探头使用霍尔效应传感器并模拟伺服。
* /
// #define BLTOUCH
#如果启用(BLTOUCH)
  // #define BLTOUCH_DELAY 375 //(ms)如果需要,启用并增加
#ENDIF

/ * *
*如果探测似乎不可靠,则启用以下一项或多项。
*探测过程中可能会禁用加热器和/或风扇,以尽量减少电气
*噪音。也可以添加延迟以允许噪音和振动得以解决。
*这些选项对BLTouch探头非常有用,但也可能会有所改进
*带电感式探头和压电式传感器的读数。
* /
// #define PROBING_HEATERS_OFF //探测时关闭加热器
// #define PROBING_FANS_OFF //探测时关闭风扇
// #define DELAY_BEFORE_PROBING 200 //(ms)为了防止触发压电传感器的振动

//使用螺线管引脚(SOL1_PIN)展开并存放的探头
// #define SOLENOID_PROBE

//像Charles Bell设计的雪橇式探头。
//#定义Z_PROBE_SLED
// #define SLED_DOCKING_OFFSET 5 // X轴必须移动到拾取底座的额外距离。0应该没问题,但如果你愿意,你可以进一步推送它。

//
//对于Z_PROBE_ALLEN_KEY,请参阅Delta示例配置。
//

/ * *
* Z针对喷嘴(X,Y)的偏移量,相对于(0,0)。
* X和Y偏移量必须是整数。
*
*在以下示例中,X和Y偏移量均为正值:
* #define X_PROBE_OFFSET_FROM_EXTRUDER 10
* #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
* +  -  BACK --- +
* | |
* L | (+)P | R < - 探针(20,20)
* E | | 一世
* F | ( - )N(+)| G < - 喷嘴(10,10)
* T | | H
* | ( - )| ?
* | |
* O-- FRONT  -  +
*(0,0)
* /
#限定 X_PROBE_OFFSET_FROM_EXTRUDER  10   // X偏移量:+ -左右[喷嘴]
#限定 Y_PROBE_OFFSET_FROM_EXTRUDER  10   // Y轴偏移: -前后面+ [喷嘴]
#限定 Z_PROBE_OFFSET_FROM_EXTRUDER  0    // ?偏移:-below +上述[喷嘴]

//探针之间的X和Y轴移动速度(mm / m)
#定义 XY_PROBE_SPEED  8000

//双探测时第一种方法的速度(MULTIPLE_PROBING == 2)
#定义 Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z

//速度为每个点的“准确”探针
#限定 Z_PROBE_SPEED_SLOW(Z_PROBE_SPEED_FAST / 2)

//每个点执行的探测数量。
//    使用第二个探针结果将其设置为2以获得快速/慢速探针。
//    对于慢速探针,设置为3或更多,平均结果。
//#定义 MULTIPLE_PROBING 2

/ * *
* Z探头在展开,收藏和移动时需要清除
*探针点以避免碰到床和其他硬件。
*伺服安装探头需要额外的空间让手臂旋转。
*电感式探头需要有足够的空间来避免早期触发。
*
*使用这些设置指定升高探头的距离(mm)(或
*下床)。此处设置的值适用于任何(负值)
*使用Z_PROBE_OFFSET_FROM_EXTRUDER,M851或LCD设置探头Z偏移量。
*只有整数值> = 1在这里有效。
*
*例如:从床到喷嘴的间距为4 => 9mm的`M851 Z-5`。
*但是:从床到喷嘴的距离为2 => 2mm的`M851 Z + 1`。
* /
#限定 Z_CLEARANCE_DEPLOY_PROBE    10  // ?间隙为展开/收回
#限定 Z_CLEARANCE_BETWEEN_PROBES   5  //探测点之间?间隙

//对于M851给出调整Z探针偏移的范围
#定义 Z_PROBE_OFFSET_RANGE_MIN - 20
#定义 Z_PROBE_OFFSET_RANGE_MAX  20

//启用M48重复性测试来测试探针精度
//#定义Z_MIN_PROBE_REPEATABILITY_TEST

//反相步进器启用引脚(低电平有效)使用0,非反相(高电平有效)使用1
//:{0:'低',1:'高'}
#定义 X_ENABLE_ON  0
#定义 Y_ENABLE_ON  0
#定义 Z_ENABLE_ON  0
#定义 E_ENABLE_ON  0  //对于所有的挤出机

//在不使用轴时,立即禁用轴步进器。
//警告:当电机关闭时,可能会失去位置精度!
#定义 DISABLE_X为 false
#定义 DISABLE_Y为 false
#定义 DISABLE_Z为 false
//显示可能降低准确度的警告
//#定义 DISABLE_REDUCED_ACCURACY_WARNING

// @分段挤出机

#定义 DISABLE_E  false  //对于所有的挤出机
#定义 DISABLE_INACTIVE_EXTRUDER  真 //只保留有效挤出机启用。

// @部分机器

//反转步进方向。如果轴出错,请更换(或反转电机连接器)。
#定义 INVERT_X_DIR  假
#定义 INVERT_Y_DIR  真
#定义 INVERT_Z_DIR  假

//为东芝步进驱动器启用此选项
//#定义 CONFIG_STEPPERS_TOSHIBA

// @分段挤出机

//对于直接驱动挤出机v9设置为true,齿轮式挤出机设置为false。
#定义 INVERT_E0_DIR  假
#定义 INVERT_E1_DIR  假
#定义 INVERT_E2_DIR  假
#定义 INVERT_E3_DIR  假
#定义 INVERT_E4_DIR  假

// @部分归位

// #define NO_MOTION_BEFORE_HOMING //禁止移动,直到所有轴都归位为止

//#定义Z_HOMING_HEIGHT 4 //(以毫米为单位)在归位前的最小Z高度(G28)
                             //确保你在Z_MAX_POS上有这样的距离。

//归位时的终点方向; 1 = MAX,-1 = MIN
//:[ -  1,1]
#定义 X_HOME_DIR - 1
#定义 Y_HOME_DIR - 1
#定义 Z_HOME_DIR - 1

// @部分机器

//打印床的尺寸
#定义 X_BED_SIZE  200
#定义 Y_BED_SIZE  200

//归位后的行程极限(mm),对应于截止位置。
#定义 X_MIN_POS  0
#定义 Y_MIN_POS  0
#定义 Z_MIN_POS  0
#定义 X_MAX_POS X_BED_SIZE
#定义 Y_MAX_POS Y_BED_SIZE
#定义 Z_MAX_POS  200

/ * *
*软件终止
*
*  - 防止移动到设定的机器范围之外。
*  - 如果需要,可以禁用单个轴。
*  -  X和Y仅适用于笛卡尔机器人。
*  - 使用“M211”设置软件终止点开/关或报告当前状态
* /

// Min软件终止限制在最小坐标界限以下的移动
#定义 MIN_SOFTWARE_ENDSTOPS
#如果启用(MIN_SOFTWARE_ENDSTOPS)
  #定义 MIN_SOFTWARE_ENDSTOP_X
  #定义 MIN_SOFTWARE_ENDSTOP_Y
  #定义 MIN_SOFTWARE_ENDSTOP_Z
#ENDIF

//最大软件终止限制移动超出最大坐标范围
#定义 MAX_SOFTWARE_ENDSTOPS
#如果启用(MAX_SOFTWARE_ENDSTOPS)
  #定义 MAX_SOFTWARE_ENDSTOP_X
  #定义 MAX_SOFTWARE_ENDSTOP_Y
  #定义 MAX_SOFTWARE_ENDSTOP_Z
#ENDIF

/ * *
*灯丝跳动传感器
*使用机械或光学挡块检查灯丝是否存在。
*
*基于RAMPS的电路板使用SERVO3_PIN。
*对于其他电路板,您可能需要定义FIL_RUNOUT_PIN。
*默认情况下,固件假定HIGH =有灯丝,LOW =耗尽
* /
//#定义 FILAMENT_RUNOUT_SENSOR
#如果启用(FILAMENT_RUNOUT_SENSOR)
  #限定 FIL_RUNOUT_INVERTING  假 //设置为true反转传感器的逻辑。
  #限定 ENDSTOPPULLUP_FIL_RUNOUT  //取消注释使用内部上拉长丝跳动销如果传感器被限定。
  #定义 FILAMENT_RUNOUT_SCRIPT  “ M600 ”
#ENDIF

// ================================================ ===========================
// ===============================床铺调平=============== ===============
// ================================================ ===========================
// @section校准

/ * *
*选择下列选项之一来启用G29床铺平整。参数
*和G29的行为将根据您的选择而改变。
*
*如果使用探针进行Z归位,也启用Z_SAFE_HOMING!
*
*  -  AUTO_BED_LEVELING_3POINT
*探测床上3个任意点(非共线)
*指定所有3个点的XY坐标。
*结果是一个倾斜的平面。最适合一张平床。
*
*  -  AUTO_BED_LEVELING_LINEAR
*探测网格中的几个点。
*指定矩形和采样点的密度。
*结果是一个倾斜的平面。最适合一张平床。
*
*  -  AUTO_BED_LEVELING_BILINEAR
*探测网格中的几个点。
*指定矩形和采样点的密度。
*结果是一个网格,最适合大或不平的床。
*
*  -  AUTO_BED_LEVELING_UBL(统一床铺调平)
*综合功能和优点的综合床铺系统
*其他系统。UBL还包括集成的Mesh Generation,Mesh
*验证和网格编辑系统。
*
*  -  MESH_BED_LEVELING
*手动探测网格
*结果是一个网格,适合大或不平衡床。(见BILINEAR。)
*对于没有探头的机器,Mesh Bed Leveling提供了一种执行方法
*逐级调平,以便您可以手动调整每个网格点的Z高度。
*使用LCD控制器时,流程将逐步引导。
* /
// #define AUTO_BED_LEVELING_3POINT
// #define AUTO_BED_LEVELING_LINEAR
// #define AUTO_BED_LEVELING_BILINEAR
// #define AUTO_BED_LEVELING_UBL
//#定义MESH_BED_LEVELING

/ * *
*可以详细记录G28,G29,M48等
*用命令'M111 S32'打开。
*注意:需要很多PROGMEM!
* /
// #define DEBUG_LEVELING_FEATURE

#如果启用(MESH_BED_LEVELING)|| ENABLED(AUTO_BED_LEVELING_BILINEAR)|| 启用(AUTO_BED_LEVELING_UBL)
  //逐渐减少调平校正直至达到设定的高度,
  //在此点移动将与机器的XY平面保持水平。
  //可以用M420 Z <高度>设置高度
  #定义 ENABLE_LEVELING_FADE_HEIGHT

  //对于笛卡尔机器,不是在网格边界上划分移动,
  //分裂成像Delta这样的短片段。这跟着
  //床的轮廓比边缘到边缘的直线移动更紧密。
  #定义 SEGMENT_LEVELED_MOVES
  #限定 LEVELED_SEGMENT_LENGTH  5.0  //所有段(毫米)长度(除了最后一个)

  / * *
   *启用G26网格验证模式工具。
   * /
  #限定 G26_MESH_VALIDATION    //启用G26啮合验证
  #如果启用(G26_MESH_VALIDATION)
    #限定 MESH_TEST_NOZZLE_SIZE      0.4    //主喷嘴的直径(mm)。
    #限定 MESH_TEST_LAYER_HEIGHT     0.2    //(毫米)默认层高度为G26网格验证工具。
    #限定 MESH_TEST_HOTEND_TEMP    205.0    //(℃)默认喷嘴温度为G26网格验证工具。
    #限定 MESH_TEST_BED_TEMP        60.0    //(℃)默认床温度为G26网格验证工具。
  #ENDIF

#ENDIF

#如果启用(AUTO_BED_LEVELING_LINEAR)|| 启用(AUTO_BED_LEVELING_BILINEAR)

  //设置每个维度的网格点数。
  #定义 GRID_MAX_POINTS_X  3
  #定义 GRID_MAX_POINTS_Y GRID_MAX_POINTS_X

  //设置探测边界(探针可以到达的地方)。
  #定义 LEFT_PROBE_BED_POSITION  15
  #定义 RIGHT_PROBE_BED_POSITION  170
  #定义 FRONT_PROBE_BED_POSITION  20
  #定义 BACK_PROBE_BED_POSITION  170

  // Z探头最小外边距(以验证G29参数)。
  #定义 MIN_PROBE_EDGE  10

  //沿着Y轴探测,在每列之后前进X.
  //#定义PROBE_Y_FIRST

  #如果启用(AUTO_BED_LEVELING_BILINEAR)

    //超出探测网格,继续隐含的倾斜?
    //默认是保持最近边缘的高度。
    // #define EXTRAPOLATE_BEYOND_GRID

    //
    //通过Catmull-Rom方法对网格进行实验细分。
    //合成中间点以生成更详细的网格。
    //
    // #define ABL_BILINEAR_SUBDIVISION
    #如果启用(ABL_BILINEAR_SUBDIVISION)
      //探测点之间的细分数量
      #定义 BILINEAR_SUBDIVISIONS  3
    #ENDIF

  #ENDIF

#elif的 ENABLED(AUTO_BED_LEVELING_3POINT)

  // 3个任意点来探测。
  //使用简单的交叉积来估计床的平面。
  #定义 ABL_PROBE_PT_1_X  15
  #限定 ABL_PROBE_PT_1_Y  180
  #定义 ABL_PROBE_PT_2_X  15
  #定义 ABL_PROBE_PT_2_Y  20
  #定义 ABL_PROBE_PT_3_X  170
  #定义 ABL_PROBE_PT_3_Y  20

#elif的 ENABLED(AUTO_BED_LEVELING_UBL)

  // ================================================ ===========================
  // =========================统一床铺调平==================== ========
  // ================================================ ===========================

  //#定义MESH_EDIT_GFX_OVERLAY //在编辑网格时显示图形叠加层

  #定义 MESH_INSET  1               //打印区域上的网格插入边距
  #定义 GRID_MAX_POINTS_X  10       //不要每轴,实行有限使用超过15分。
  #定义 GRID_MAX_POINTS_Y GRID_MAX_POINTS_X

  #限定 UBL_PROBE_PT_1_X  39        //探测点为网格的3点调平
  #定义 UBL_PROBE_PT_1_Y  180
  #定义 UBL_PROBE_PT_2_X  39
  #定义 UBL_PROBE_PT_2_Y  20
  #定义 UBL_PROBE_PT_3_X  180
  #定义 UBL_PROBE_PT_3_Y  20

  #定义 UBL_MESH_EDIT_MOVES_Z      //先进的用户喜欢没有嘴的运动
  #限定 UBL_SAVE_ACTIVE_ON_M500    //保存当前活动的网格上M500当前时隙

#elif的 ENABLED(MESH_BED_LEVELING)

  // ================================================ ===========================
  // ===================================网格============ ======================
  // ================================================ ===========================

  #定义 MESH_INSET  10           //在打印区域网插图保证金
  #限定 GRID_MAX_POINTS_X  3     //不要每个轴,实施有限使用超过7分。
  #定义 GRID_MAX_POINTS_Y GRID_MAX_POINTS_X

  // #define MESH_G28_REST_ORIGIN //在所有坐标轴('G28'或'G28 XYZ')归零后,在Z_MIN_POS

#ENDIF  // BED_LEVELING

/ * *
*使用LCD控制器进行床铺调平
*需要MESH_BED_LEVELING或PROBE_MANUALLY
* /
// #define LCD_BED_LEVELING

#如果启用(LCD_BED_LEVELING)
  #定义 MBL_Z_STEP  0.025     //手动探测Z轴时的步长。
  #限定 LCD_PROBE_Z_RANGE  4  // Z系列集中于Z_MIN_POS用于LCD Z调整
#ENDIF

//添加一个菜单项以在床角之间移动以进行手动床位调整
//#定义LEVEL_BED_CORNERS

/ * *
*在G29探测结束时执行的命令。
*用于收回或移动Z探头。
* /
// #define Z_PROBE_END_SCRIPT“G1 Z10 F12000 \ nG1 X15 Y330 \ nG1 Z0.5 \ nG1 Z10”


// @部分归位

//床的中心在(X = 0,Y = 0)
// #define BED_CENTER_AT_0_0

//手动设置原位。保留这些未定义的自动设置。
//对于DELTA,这是笛卡尔打印量的顶端。
//#定义MANUAL_X_HOME_POS 0
//#定义MANUAL_Y_HOME_POS 0
//#定义MANUAL_Z_HOME_POS 0

//使用“Z Safe Homing”以避免与床区外的Z探头回归。
//
//启用此功能:
//
// - 仅在X和Y归位以及步进驱动器仍然启用后才允许Z归零。
// - 如果步进驱动器超时,则在Z归零之前需要再次进行X和Y归位。
// - 在归位所有轴(G28)时,在Z回原点之前将Z探针(或喷嘴)移动到定义的XY点。
// - 当Z探头位于床区之外时,防止Z回原点。
//
//#定义Z_SAFE_HOMING

#如果启用(Z_SAFE_HOMING)
  #定义 Z_SAFE_HOMING_X_POINT((X_BED_SIZE)/ 2)     //在所有轴(G28)回原点时Z点归零。
  #定义 Z_SAFE_HOMING_Y_POINT((Y_BED_SIZE)/ 2)     //用于归位所有轴(G28)时的Z点归零。
#ENDIF

//归位速度(mm / m)
#限定 HOMING_FEEDRATE_XY(50 * 60)
#限定 HOMING_FEEDRATE_Z   (4 * 60)

// @section校准

/ * *
*床歪斜赔偿
*
*此功能可纠正XYZ轴的错位。
*
*采取以下步骤在XY平面上获得床歪斜:
* 1.打印测试平方(例如https://www.thingiverse.com/thing:2563185
* 2.对于XY_DIAG_AC,测量对角线A到C.
* 3.对于XY_DIAG_BD,测量对角线B到D.
* 4.对于XY_SIDE_AD,测量边缘A到D.
*
* Marlin自动计算这些测量的偏斜因子。
*也可以手动计算和设置偏斜因子:
*
*  - 计算AB:SQRT(2 * AC * AC + 2 * BD * BD-4 * AD * AD)/ 2
*  -  XY_SKEW_FACTOR:TAN(PI / 2-ACOS((AC * AC-AB * AB-AD * AD)/(2 * AB * AD)))
*
*如果需要,请按照与XZ和YZ相同的步骤进行操作。
*使用这些图表作为参考:
*
* YZZ
* ^ B ------- C ^ B ------- C ^ B ------- C
* | / / | / / | / /
* | / / | / / | / /
* | A ------- D | A ------- D | 广告
* + --------------> X + --------------> X + -------------- >?
* XY_SKEW_FACTOR XZ_SKEW_FACTOR YZ_SKEW_FACTOR
* /
// #define SKEW_CORRECTION

#如果启用(SKEW_CORRECTION)
  //在此处输入所有长度测量值:
  #定义 XY_DIAG_AC  282.8427124746
  #定义 XY_DIAG_BD  282.8427124746
  #定义 XY_SIDE_AD  200

  //或者,直接在这里设置默认偏斜系数
  //覆盖上述测量值:
  #限定 XY_SKEW_FACTOR  0.0

  //#定义SKEW_CORRECTION_FOR_Z
  #如果启用(SKEW_CORRECTION_FOR_Z)
    #定义 XZ_DIAG_AC  282.8427124746
    #定义 XZ_DIAG_BD  282.8427124746
    #定义 YZ_DIAG_AC  282.8427124746
    #定义 YZ_DIAG_BD  282.8427124746
    #定义 YZ_SIDE_AD  200
    #限定 XZ_SKEW_FACTOR  0.0
    #限定 YZ_SKEW_FACTOR  0.0
  #ENDIF

  //为M852启用此选项以在运行时设置偏斜
  // #define SKEW_CORRECTION_GCODE
#ENDIF

// ================================================ =============================
// =============================其他功能================= ==========
// ================================================ =============================

// @部分extras

//
// EEPROM
//
//微控制器可以将设置存储在EEPROM中,例如最大速度...
// M500  - 将参数存储在EEPROM中
// M501  - 从EEPROM中读取参数(如果在临时更改它们后需要重置它们)。
// M502  - 恢复为默认的“出厂设置”。如果需要,您仍然需要将它们存储在EEPROM中。
//
// #define EEPROM_SETTINGS //启用M500和M501命令
// #define DISABLE_M503 //保存PROGMEM的?2700字节。禁用发布!
#定义 EEPROM_CHITCHAT    //给上EEPROM命令的反馈。禁用保存PROGMEM。

//
//主机Keepalive
//
//启用后,Marlin将向主机发送一个忙状态消息
//无法接受命令时每隔几秒钟。
//
#定义 HOST_KEEPALIVE_FEATURE         //禁用此,如果你的主人不喜欢keepalive消息
#限定 DEFAULT_KEEPALIVE_INTERVAL  2   //的“忙”的消息之间的秒数。设置M113。
#限定 BUSY_WHILE_HEATING             //有些主机需要“忙”的消息,即使在加热过程中

//
// M100 Free Memory Watcher
//
// #define M100_FREE_MEMORY_WATCHER //添加M100(Free Memory Watcher)来调试内存使用情况

//
// G20 / G21英制模式支持
//
// #define INCH_MODE_SUPPORT

//
// M149设置温度单位支持
//
// #define TEMPERATURE_UNITS_SUPPORT

// @部分温度

//预热常量
#限定 PREHEAT_1_TEMP_HOTEND  180
#定义 PREHEAT_1_TEMP_BED      70
#限定 PREHEAT_1_FAN_SPEED      0  //从0到255值

#限定 PREHEAT_2_TEMP_HOTEND  240
#定义 PREHEAT_2_TEMP_BED     110
#限定 PREHEAT_2_FAN_SPEED      0  //从0到255值

/ * *
*喷嘴公园
*
*在空闲或G27时将喷嘴停放在给定的XYZ位置。
*
*“P”参数控制应用于Z轴的动作:
*
* P0(默认)如果Z低于停车场Z,抬高喷嘴。
* P1将喷嘴始终升至Z-park高度。
* P2通过Z停车量提升喷嘴,限于Z_MAX_POS。
* /
//#定义NOZZLE_PARK_FEATURE

#如果启用(NOZZLE_PARK_FEATURE)
  //将公园位置指定为{X,Y,Z}
  #限定 NOZZLE_PARK_POINT {(X_MIN_POS + 10),(Y_MAX_POS - 10),20 }
  #限定 NOZZLE_PARK_XY_FEEDRATE  100    // X和Y轴以毫米/秒的进给率(也用于增量打印机Z轴)
  #限定 NOZZLE_PARK_Z_FEEDRATE  5       // Z轴进给速度在毫米/秒(不用于增量打印机)
#ENDIF

/ * *
*清洁喷嘴功能 - 实验
*
*添加G12指令执行喷嘴清洁过程。
*
*参数:
* P模式
* S笔划/重复
* T三角形(仅限P1)
*
*图案:
* P0直线(默认)。这个过程需要海绵类型的材料
*在固定的床位。“S”指定笔划(即前后运动)
*在开始/结束点之间。
*
* P1(X0,Y0)和(X1,Y1)之间的Z字形,“T”指定
*要做的曲折三角形的数量。“S”定义了笔画的数量。
* Zig-zags可以在较窄的尺寸范围内完成。
*例如,执行“G12 P1 S1 T3”:
*
*  -
* | (X0,Y1)| / \ / \ / \ | (X1,Y1)
* | | / \ / \ / \ |
* A | | / \ / \ / \ |
* | | / \ / \ / \ |
* | (X0,Y0)| / \ / \ / \ | (X1,Y0)
*  -  + -------------------------------- +
* | ________ | _________ | _________ |
* T1 T2 T3
*
* P2中间为NOZZLE_CLEAN_CIRCLE_MIDDLE的圆形图案。
*“R”指定半径。“S”指定笔画计数。
*开始之前,喷嘴移动到NOZZLE_CLEAN_START_POINT。
*
*注意事项:结尾的Z应该与起始Z相同。
*注意:实验。G代码参数可能会改变。
*
* /
//#定义NOZZLE_CLEAN_FEATURE

#如果启用(NOZZLE_CLEAN_FEATURE)
  //模式重复的默认数量
  #定义 NOZZLE_CLEAN_STROKES   12

  //三角形的默认数量
  #定义 NOZZLE_CLEAN_TRIANGLES   3

  //指定位置为{X,Y,Z}
  #限定 NOZZLE_CLEAN_START_POINT { 30,30,(Z_MIN_POS + 1)}
  #限定 NOZZLE_CLEAN_END_POINT    { 100,60,(Z_MIN_POS + 1)}

  //圆形图案半径
  #定义 NOZZLE_CLEAN_CIRCLE_RADIUS  6.5
  //圆形图案圆片段编号
  #定义 NOZZLE_CLEAN_CIRCLE_FN  10
  //圆的中点
  #定义 NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT

  //将喷嘴移动到初始位置
  #定义 NOZZLE_CLEAN_GOBACK
#ENDIF

/ * *
*打印作业计时器
*
*自动启动和停止M104 / M109 / M190上的打印作业定时器。
*
* M104(hotend,不等待) - 高温=无,低温=停止计时器
* M109(hotend,等待) - 高温=启动计时器,低温=停止计时器
* M190(睡觉,等待) - 高温=开始计时器,低温=无
*
*定时器也可以通过以下命令进行控制:
*
* M75  - 启动打印作业计时器
* M76  - 暂停打印作业定时器
* M77  - 停止打印作业定时器
* /
#定义 PRINTJOB_TIMER_AUTOSTART

/ * *
*打印计数器
*
*跟踪统计数据,如:
*
*  - 打印作业总数
*  - 成功完成打印作业
*  - 失败的打印作业总数
*  - 打印总时间
*
*使用M78查看当前的统计数据。
* /
// #define PRINTCOUNTER

// ================================================ =============================
// ============================= LCD和SD支持=============== =============
// ================================================ =============================

// @section lcd

/ * *
* LCD语言
*
*选择要在LCD上显示的语言。这些语言可用:
*
* en,an,bg,ca,cn,cz,cz_utf8,de,el,el-gr,es,eu,fi,fr,fr_utf8,gl,
* hr,it,kana,kana_utf8,nl,pl,pt,pt_utf8,pt-br,pt-br_utf8,ru,sk_utf8,
* tr,uk,zh_CN,zh_TW,测试
*
*:{'en':'英语','an':'Aragonese','bg':'保加利亚语','ca':'加泰罗尼亚语','cn':'中国','cz':'捷克' ,'cz_utf8':'捷克语(UTF8)','de':'德语','el':'希腊语','el-gr':'希腊语','es':'西班牙语',' eu':'Basque-Euskera','fi':'芬兰语','fr':'法语','fr_utf8':'法语(UTF8)','gl':'加利西亚语','hr':'克罗地亚语','it':'意大利语','kana':'日语','kana_utf8':'日语(UTF8)','nl':'荷兰语','pl':'波兰语','pt':'葡萄牙语','pt-br':'葡萄牙语(巴西)',''utf8':'葡萄牙语(UTF8)','ru':'俄语','sk_utf8':'斯洛伐克语(UTF8)','tr':'土耳其语' ,'uk':'乌克兰语','zh_CN':'中文(简体)','zh_TW':'中国(台湾)','test':'TEST'}
* /
#定义 LCD_LANGUAGE EN

/ * *
* LCD字符集
*
*注意:该选项不适用于图形显示。
*
*所有基于字符的LCD均提供ASCII加上其中之一
*语言扩展:
*
*  -  JAPANESE ...最常见的
*  -  WESTERN ...带有更多重音的角色
*  -  CYRILLIC ...为俄语
*
*要确定您的控制器上安装的语言扩展名:
*
*  - 用LCD_LANGUAGE设置为'测试'编译并上传
*  - 点击控制器查看LCD菜单
*  -  LCD将显示日文,西文或西里尔文字
*
*请参阅http://marlinfw.org/docs/development/lcd_language.html
*
*:['JAPANESE','WESTERN','CYRILLIC']
* /
#定义 DISPLAY_CHARSET_HD44780 JAPANESE

/ * *
* LCD类型
*
*为基于16x2,16x4,20x2或20x4字符的LCD启用ULTRA_LCD。
*为128x64(ST7565R)全图形显示启用DOGLCD。
*(这些选项将在大多数显示器上自动启用。)
*
*重要提示:全图形显示需要U8glib库!
* https://github.com/olikraus/U8glib_Arduino
* /
// #define ULTRA_LCD //基于字符
// #define DOGLCD //完整的图形显示

/ * *
* SD卡
*
*默认情况下SD卡支持被禁用。如果你的控制器有一个SD插槽,
*您必须取消注释以下选项,否则将无法使用。
*
* /
//#定义SDSUPPORT

/ * *
* SD卡:SPI SPEED
*
*启用下列项目之一以降低SPI传输速度。
*这可能需要解决“音量初始化”错误。
* /
// #define SPI_SPEED SPI_HALF_SPEED
// #define SPI_SPEED SPI_QUARTER_SPEED
// #define SPI_SPEED SPI_EIGHTH_SPEED

/ * *
* SD卡:启用CRC
*
*使用CRC校验并重试SD通信。
* /
// #define SD_CHECK_AND_RETRY

//
//编码器设置
//
//此选项将覆盖所需的默认编码器脉冲数
//产生一个步骤。应增加高分辨率编码器。
//
// #define ENCODER_PULSES_PER_STEP 1

//
//使用此选项覆盖所需的步进信号数量
//在next / prev菜单项之间移动。
//
//#定义ENCODER_STEPS_PER_MENU_ITEM 5

/ * *
*编码器方向选项
*
*先禁用这两个选项,测试编码器的行为。
*
*反向值编辑和菜单导航?启用REVERSE_ENCODER_DIRECTION。
*仅反向菜单导航?启用REVERSE_MENU_DIRECTION。
*仅反向值编辑?启用BOTH选项。
* /

//
//这个选项反转编码器方向。
//
//   如果CLOCKWISE导致值降低,则设置此选项
//
// #define REVERSE_ENCODER_DIRECTION

//
//此选项反转用于导航LCD菜单的编码器方向。
//
//   如果CLOCKWISE通常向下移动,则它会上升。
//   如果CLOCKWISE通常向上移动,则会使其向下。
//
// #define REVERSE_MENU_DIRECTION

//
//单轴归位
//
//将单个轴归位项目(Home X,Home Y和Home Z)添加到LCD菜单。
//
//#定义 INDIVIDUAL_AXIS_HOMING_MENU

//
// SPEAKER / BUZZER
//
//如果您的扬声器能够发出音调,请在此处启用它。
//默认情况下,Marlin假定你有一个固定频率的蜂鸣器。
//
// #define SPEAKER

//
// UI反馈声音的持续时间和频率。
//将这些设置为0以禁用LCD菜单中的音频反馈。
//
//注意:用G代码测试音频输出:
//   M300 S <频率Hz> P <持续时间ms>
//
// #define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100
// #define LCD_FEEDBACK_FREQUENCY_HZ 1000

//
//控制器类型:标准
//
// Marlin支持各种各样的控制器。
//启用以下选项之一来指定您的控制器。
//

//
// ULTIMAKER控制器。
//
//#定义ULTIMAKERCONTROLLER

//
//在Thingiverse上看到的ULTIPANEL。
//
// #define ULTIPANEL

//
// T3P3的PanelOne(通过RAMPS 1.4 AUX2 / AUX3)
// http://reprap.org/wiki/PanelOne
//
//#定义PANEL_ONE

//
//带图形控制器和SD支持的MaKr3d Makr-Panel。
// http://reprap.org/wiki/MaKr3d_MaKrPanel
//
//#定义MAKRPANEL

//
// ReprapWorld图形LCD
// https://reprapworld.com/?products_details&products_id/1218
//
//#定义REPRAPWORLD_GRAPHICAL_LCD

//
//如果你有一个Panucatt设备,激活其中的一个
// Viki 2.0或带图形LCD的迷你Viki
// http://panucatt.com
//
//#定义VIKI2
//#定义miniVIKI

//
// Adafruit ST7565全图形控制器。
// https://github.com/eboston/Adafruit-ST7565-Full-Graphic-Controller/
//
// #define ELB_FULL_GRAPHIC_CONTROLLER

//
// RepRapDiscount智能控制器。
// http://reprap.org/wiki/RepRapDiscount_Smart_Controller
//
//注意:通常与白色PCB一起销售。
//
//#定义REPRAP_DISCOUNT_SMART_CONTROLLER

//
// GADGETS3D G3D LCD / SD控制器
// http://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel
//
//注意:通常与蓝色PCB一起销售。
//
//#定义G3D_PANEL

//
// RepRapDiscount FULL GRAPHIC智能控制器
// http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller
//
//#定义REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER

//
// MakerLab带图形的迷你面板
//控制器和SD支持 -  http://reprap.org/wiki/Mini_panel
//
//#定义MINIPANEL

//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
// http://reprapworld.com/?products_details&products_id=202&cPath=1591_1626
//
// REPRAPWORLD_KEYPAD_MOVE_STEP设置机器人在按键时应该移动多少
//被按下,10.0的值意味着每次点击10mm。
//
//#定义REPRAPWORLD_KEYPAD
//#定义REPRAPWORLD_KEYPAD_MOVE_STEP 1.0

//
// RigidBot面板V1.0
// http://www.inventapart.com/
//
//#定义RIGIDBOT_PANEL

//
// BQ LCD智能控制器发货
//默认使用BQ Hephestos 2和Witbox 2。
//
//#定义BQ_LCD_SMART_CONTROLLER

//
// Cartesio UI
// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
//
//#定义CARTESIO_UI

//
//支持ANET和Tronxy控制器显示。
//
// #define ZONESTAR_LCD //需要将ADC_KEYPAD_PIN分配给模拟引脚。
                                  //这种液晶显示器容易受到电子干扰
                                  //对显示进行加扰。按任何按钮将清除它。
                                  //这是带有5个模拟按钮的LCD2004显示器。

// #define ANET_FULL_GRAPHICS_LCD // Anet 128x64全图形液晶显示器,带Anet A6上使用的旋转编码器
                                  // RepRapDiscount完整图形显示的克隆,但是
                                  //不同的引脚/接线(请参阅pins_ANET_10.h)。

//
//带图形LCD的Melzi卡LCD
//
// #define LCD_FOR_MELZI

//
//控制器类型:I2C
//
//注意:这些控制器需要安装Arduino的LiquidCrystal_I2C
//库。欲了解更多信息:https://github.com/kiyoshigawa/LiquidCrystal_I2C
//

//
// Elefu RA板控制面板
// http://www.elefu.com/index.php?route=product/product&product_id=53
//
//#定义RA_CONTROL_PANEL

//
// Sainsmart YW机器人(LCM1602)液晶显示器
//
//注意:此控制器需要F.Malpartida的LiquidCrystal_I2C库
// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
//
// #define LCD_I2C_SAINSMART_YWROBOT

//
//通用LCM1602 LCD适配器
//
//#定义LCM1602

//
// PANELOLU2 LCD带状态指示灯,
//单独的编码器和点击输入。
//
//注意:该控制器需要Arduino的LiquidTWI2库v1.2.3或更高版本。
//更多信息:https://github.com/lincomatic/LiquidTWI2
//
//注意:PANELOLU2编码器点击输入可以直接连接到
//一个引脚(如果BTN_ENC定义为!= -1)或通过I2C读取(当BTN_ENC == -1时)。
//
// #define LCD_I2C_PANELOLU2

//
//带有状态LED的Panucatt VIKI LCD,
//集成点击和L / R / U / D按钮,独立的编码器输入。
//
// #define LCD_I2C_VIKI

//
// SSD1306 OLED全图形通用显示屏
//
// #define U8GLIB_SSD1306

//
// SAV OLEd LCD模块支持使用基于SSD1306或SH1106的LCD模块
//
// #define SAV_3DGLCD
#如果启用(SAV_3DGLCD)
  // #define U8GLIB_SSD1306
  #定义 U8GLIB_SH1106
#ENDIF

//
//控制器类型:移位寄存器面板
//
// https://goo.gl/aJJ4sH的2线非锁定LCD SR
// LCD配置:http://reprap.org/wiki/SAV_3D_LCD
//
// #define SAV_3DLCD

//
// TinyBoy2 128x64 OLED /编码器面板
//
// #define OLED_PANEL_TINYBOY2

//
/ /打印机3D打印机部件3D打印机迷你显示器1602迷你控制器
// https://www.aliexpress.com/item/Micromake-Makeboard-3D-Printer-Parts-3D-Printer-Mini-Display-1602-Mini-Controller-Compatible-with-Ramps-1/32765887917.html
//
//#定义MAKEBOARD_MINI_2_LINE_DISPLAY_1602

//
//带图形控制器和SD支持的MKS MINI12864
// http://reprap.org/wiki/MKS_MINI_12864
//
// #define MKS_MINI_12864

//
// Creality CR-10的工厂显示
// https://www.aliexpress.com/item/Universal-LCD-12864-3D-Printer-Display-Screen-With-Encoder-For-CR-10-CR-7-Model/32833148327.html
//
//这是RAMPS兼容的使用一个单一的10针连接器。
//(对于想要替换Melzi Creality板但保留显示屏的CR-10业主)
//
// #define CR10_STOCKDISPLAY

//
// MKS OLED 1.3“128x64全图形控制器
// http://reprap.org/wiki/MKS_12864OLED
//
//微小但非常锐利的OLED显示屏
//如果有像素移位,请尝试另一个控制器。
//
// #define MKS_12864OLED //使用SH1106控制器(默认)
// #define MKS_12864OLED_SSD1306 //使用SSD1306控制器

// Silvergate GLCD控制器
// http://github.com/android444/Silvergate
//
//#定义SILVER_GATE_GLCD_CONTROLLER

// ================================================ =============================
// ===============================额外功能=============== ===============
// ================================================ =============================

// @部分extras

//增加风扇PWM频率。消除了PWM噪声,但增加了FET / Arduino中的加热
//#定义FAST_PWM_FAN

//使用软件PWM驱动风扇,就像加热器一样。这使用的频率非常低
//这不像硬件PWM那样烦人。另一方面,如果这个频率
//太低,你也应该增加SOFT_PWM_SCALE。
//#定义FAN_SOFT_PWM

//将此值加1会使软件PWM频率加倍,
//影响加热器,如果FAN_SOFT_PWM已启用,则为风扇。
//然而,对于每个增量,控制分辨率将减半;
//在零值时,有128个有效控制位置。
#定义 SOFT_PWM_SCALE  0

//如果SOFT_PWM_SCALE设置为高于0的值,抖动可以
//用于减轻相关的分辨率损失。如果启用,
//一些PWM周期平均延长到期望值
//获得工作周期。
// #define SOFT_PWM_DITHER

//显示温度和床温的温度状态LED。
//如果所有的温度,床温和目标温度低于54℃
//然后BLUE指示灯亮起。否则,红色LED灯亮起。(1C滞后)
// #define TEMP_STAT_LEDS

// M240通过模拟佳能RC-1遥控器来触发相机
//数据来源:http://www.doc-diy.net/photo/rc-1_hacked/
// #define PHOTOGRAPH_PIN 23

//当使用圆弧点作为圆角过程时,SkeinForge发送错误的圆弧g代码
// #define SF_ARC_FIX

//支持BariCUDA糊剂挤出机
//#定义BARICUDA

//支持BlinkM / CyzRgb
// #define BLINKM

//支持PCA9632 PWM LED驱动器
//#定义PCA9632

/ * *
* RGB LED / LED灯条控制
*
*支持连接到5V数字引脚的RGB LED,或
*连接到由数字引脚控制的MOSFET的RGB条。
*
*添加M150命令来设置LED(或LED灯条)的颜色。
*如果引脚具有PWM功能(例如,4,5,6,11),则范围为
*亮度值可以设置在0到255之间。
*对于Neopixel LED,整体亮度参数也可用。
*
* ***注意***
* LED灯条需要PWM线和LED之间的MOFSET芯片,
*因为Arduino无法处理LED需要的电流。
*不遵循此预防措施可能会破坏您的Arduino!
*注意:需要单独的5V电源!Neopixel LED需要
*比Arduino 5V线性稳压器可产生更多电流。
* ***注意***
*
* LED类型。只启用以下两个选项之一。
*
* /
// #define RGB_LED
// #define RGBW_LED

#如果启用(RGB_LED)|| 启用(RGBW_LED)
  #定义 RGB_LED_R_PIN  34
  #限定 RGB_LED_G_PIN  43
  #定义 RGB_LED_B_PIN  35
  #定义 RGB_LED_W_PIN - 1
#ENDIF

//支持Adafruit Neopixel LED驱动器
// #define NEOPIXEL_LED
#如果启用(NEOPIXEL_LED)
  #限定 NEOPIXEL_TYPE    NEO_GRBW // NEO_GRBW / NEO_GRB - 4/3信道驱动器类型(在Adafruit_NeoPixel.h定义)
  #限定 NEOPIXEL_PIN     4         // LED驱动销主板上4 => D4(EXP2-5上Printrboard)/ 30 => PC7(EXP3-13上伦巴)
  #限定 NEOPIXEL_PIXELS  30        // LED数量在带
  #限定 NEOPIXEL_IS_SEQUENTIAL    //顺序显示温度变化-由LED发光。禁用一次更换所有LED。
  #限定 NEOPIXEL_BRIGHTNESS  127个  //初始亮度(0?255)
  // #define NEOPIXEL_STARTUP_TEST //启动时循环颜色
#ENDIF

/ * *
*打印机事件LED
*
*在打印过程中,LED将反映打印机状态:
*
*  - 随着加热床达到目标温度,逐渐从蓝色变为紫色
*  - 随着温度升高,逐渐从紫色变为红色
*  - 变成白色以照亮工作表面
*  - 打印完成后更改为绿色
*  - 打印完成后用户按下按钮时关闭
* /
#如果启用(BLINKM)|| ENABLED(RGB_LED)|| ENABLED(RGBW_LED)|| ENABLED(PCA9632)|| 启用(NEOPIXEL_LED)
  #定义 PRINTER_EVENT_LEDS
#ENDIF

/ * *
* R / C SERVO支持
*赞助由TrinityLabs,由法典重做
* /

/ * *
*舵机数量
*
*对于一些与伺服相关的选项,NUM_SERVOS将自动设置。
*如果有额外的舵机需要手动控制,请手动设置。
*保持未定义或设置为0,以完全禁用伺服子系统。
* /
//#定义NUM_SERVOS 3 //对于M280命令,伺服索引从0开始

//开始下一个移动之前的延迟(以毫秒为单位),以使伺服时间达到其目标角度。
// 300ms是一个很好的值,但你可以尝试更少的延迟。
//如果伺服无法到达要求的位置,请增加它。
#限定 SERVO_DELAY { 300 }

//伺服停用
//
//使用此选项,伺服只在移动时通电,然后关闭以防抖动。
// #define DEACTIVATE_SERVOS_AFTER_MOVE

#ENDIF  // CONFIGURATION_H
声明:3D打印资源库(3dzyk)内网友所发表的所有内容及言论仅代表其本人,并不代表3D打印资源库(3dzyk)观点和立场;如对文章有异议或投诉,请联系kefu@3dzyk.cn。
B Color Smilies
Marlin固件中的 configuration全中文注释 Marlin 3D打印机固件