/**
* Here are some standard links for getting your machine calibrated:
*
* 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
*/
//===========================================================================
//============================= 三角洲打印机 ===============================
//===========================================================================
// For a Delta printer replace the configuration files with the files in the
// example_configurations/delta directory.
//
//===========================================================================
//============================= SCARA Printer 平面关节型机器人================
//===========================================================================
// For a Scara printer replace the configuration files with the files in the
// example_configurations/SCARA directory.
//
// @section info
// User-specified version info of this build to display in [Pronterface, etc] terminal window during
// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
// build by the user have been successfully uploaded into firmware.
#define STRING_CONFIG_H_AUTHOR "(none, default config)" //修改作者.
#define SHOW_BOOTSCREEN
#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // 版本号 将被显示在第一行
#define STRING_SPLASH_LINE2 WEBSITE_URL // 网络地址 将被显示在第二行
/**
* 此设置确定打印机的通信速度。 波特率设置
*
* 250000 works in most cases, but you might try a lower speed if
* you commonly experience drop-outs during host printing.
*
* :[2400, 9600, 19200, 38400, 57600, 115200, 250000]
*/
#define BAUDRATE 250000
// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
// 使用UUID进行设置机器的唯一标识码
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// A dual extruder that uses a single stepper motor 双螺杆挤出机,使用一个单一的步进电机
//#define SWITCHING_EXTRUDER
#if ENABLED(SWITCHING_EXTRUDER)
#define SWITCHING_EXTRUDER_SERVO_NR 0
#define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1
#endif
// A dual-nozzle that uses a servomotor to raise/lower one of the nozzles
//双喷嘴,采用伺服电机来提高/降低一个喷嘴
//#define SWITCHING_NOZZLE
#if ENABLED(SWITCHING_NOZZLE)
#define SWITCHING_NOZZLE_SERVO_NR 0
#define SWITCHING_NOZZLE_SERVO_ANGLES { 0, 90 } // Angles for E0, E1
//#define HOTEND_OFFSET_Z { 0.0, 0.0 }
#endif
// 使用温度传感器1作为传感器0的冗余。如果两个读数差别过大则会被放弃。
// from the two sensors differ too much the print will be aborted.
//#define TEMP_SENSOR_1_AS_REDUNDANT
#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10
// 挤出机的温度必须接近目标,否则一直等待直到M109返回成功
#define TEMP_RESIDENCY_TIME 10 // (seconds)
#define TEMP_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one
#define TEMP_WINDOW 1 // (degC) Window around target to start the residency timer x degC early.
// 热床的温度必须接近目标,否则一直等待直到M109返回成功
#define TEMP_BED_RESIDENCY_TIME 10 // (seconds)
#define TEMP_BED_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one
#define TEMP_BED_WINDOW 1 // (degC) Window around target to start the residency timer x degC early.
// Comment the following line to disable PID and enable bang-bang. 注释下列行将禁用PID而开启 bang-bang控制。
#define PIDTEMP
#define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current
#define PID_MAX BANG_MAX // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current
#if ENABLED(PIDTEMP)
//#define PID_AUTOTUNE_MENU // Add PID Autotune to the LCD "Temperature" menu to run M303 and apply the result.
//#define PID_DEBUG // Sends debug data to the serial port.
//#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX
//#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay
//#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders)
// Set/get with gcode: M301 E[extruder number, 0-2]
#define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature
// is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max.
#define K1 0.95 //smoothing factor within the PID
// If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it
// Mendel Parts V9 on 12V
//#define DEFAULT_Kp 63.0
//#define DEFAULT_Ki 2.25
//#define DEFAULT_Kd 440
#endif // PIDTEMP
//===========================================================================
//============================= PID >热床温度控制 ===============
//===========================================================================
//
// 选择PID or bang-bang 来控制热床温度,如果选用 bang-bang,BED_LIMIT_SWITCHING 将有所迟滞。
// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder.
// If your PID_dT is the default, and correct for your hardware/configuration, that means 7.689Hz,
// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating.
// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater.
// If your configuration is significantly different than this and you don't understand the issues involved, you probably
// shouldn't use bed PID until someone else verifies your hardware works.
// If this is enabled, find your own PID constants below.
//#define PIDTEMPBED
//#define BED_LIMIT_SWITCHING
// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option.
// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis)
// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did,
// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED)
#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current
#if ENABLED(PIDTEMPBED)
//#define PID_BED_DEBUG // 发送数据到串口调试。
//120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)
//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10)
#define DEFAULT_bedKp 10.00
#define DEFAULT_bedKi .023
#define DEFAULT_bedKd 305.4
// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles.
#endif // PIDTEMPBED
// @挤出机信息
// 此选项可防止挤压如果温度低于extrude_mintemp。
// It also enables the M302 command to set the minimum extrusion temperature
// or to allow moving the extruder regardless of the hotend temperature.
// *** IT IS HIGHLY RECOMMENDED TO LEAVE THIS OPTION ENABLED! ***
#define PREVENT_COLD_EXTRUSION
#define EXTRUDE_MINTEMP 170
// 此选项可防止过小挤出,让单个挤压长度必须长于extrude_maxlength
// Note that for Bowden Extruders a too-small value here may prevent loading.
#define PREVENT_LENGTHY_EXTRUDE
#define EXTRUDE_MAXLENGTH 200
*
* 问题:如果一个热敏电阻脱落或者温度传感器失效,当热敏电阻失效,Marlin将不能有效感知实际温度,从而会认为当前机器处于低温状态而持续加热。
*
* If you get "Thermal Runaway" or "Heating failed" errors the
* details can be tuned in Configuration_adv.h
*/
// Specify here all the endstop connectors that are connected to any endstop or probe.
// 在这里指定的所有限位开关连接器包括所有限位开关或探头。
// 几乎打印机的每个轴都要使用一个。探测器将使用一个或多个额外的连接器。
// Almost all printers will be using one per axis. Probes will use one or more of the extra connectors. Leave undefined any used for non-endstop and non-probe purposes.
#define USE_XMIN_PLUG
#define USE_YMIN_PLUG
#define USE_ZMIN_PLUG
//#define USE_XMAX_PLUG
//#define USE_YMAX_PLUG
//#define USE_ZMAX_PLUG
// 粗略的限位开关设置
#define ENDSTOPPULLUPS // 注释上这条将禁用限位开关的使用上拉电阻 (using // at the start of the line)
// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup).
// 机械限位开关: COM 接地 、NC接信号 (最常见的设置)。
#define X_MIN_ENDSTOP_INVERTING false // 设为true时逻辑将被翻转.
#define Y_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Z_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define X_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Y_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Z_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the probe.
// 启动这项功能将启用所有限位开关引脚的中断能力
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
//#define ENDSTOP_INTERRUPTS_FEATURE
* With this option each E stepper can have its own factors for the following movement settings. If fewer factors are given than the total number of extruders, the last value applies to the rest.
*/
//#define DISTINCT_E_FACTORS
/**
* Default Axis Steps Per Unit (steps/mm) 默认每个轴的步进值
* Override with M92
* X, Y, Z, E0 [, E1[, E2[, E3[, E4]]]]
*/
#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 4000, 500 }
/**
* 默认加速度 (change/s) change = mm/s
* Override with M204
*
* M204 P Acceleration
* M204 R Retract Acceleration
* M204 T Travel Acceleration
*/
#define DEFAULT_ACCELERATION 3000 // X, Y, Z and E 打印加速度
#define DEFAULT_RETRACT_ACCELERATION 3000 // E 回缩加速度
#define DEFAULT_TRAVEL_ACCELERATION 3000 // X, Y, Z 移动加速度(非打印状态)
/**
* Default Jerk (mm/s)
* Override with M205 X Y Z E
*
* "Jerk" 指定的最小速度的变化所需要加速度。
* 当改变速度和方向时, 如果差值小于在这里设置的值,它可能在瞬间发生。
*/
#define DEFAULT_XJERK 20.0
#define DEFAULT_YJERK 20.0
#define DEFAULT_ZJERK 0.4
#define DEFAULT_EJERK 5.0
//===========================================================================
//============================= Z 探头选项 =============================
//===========================================================================
// @section 喷头信息
//
// See http://marlinfw.org/configuration/probes.html
//
/**
* Z_MIN_PROBE_ENDSTOP
*
* 使一个探针连接到任何除 Z-Min引脚以外的任何一个脚
* ( 通常连在Z-Max 限位开关的引脚 .)
* To use a custom Z Probe pin, set Z_MIN_PROBE_PIN below.
*
* - The simplest option is to use a free endstop connector.
* - Use 5V for powered (usually inductive) sensors.
*
* - RAMPS 1.3/1.4 boards may use the 5V, GND, and Aux4->D32 pin:
* - For simple switches connect...
* - normally-closed switches to GND and D32.
* - normally-open switches to 5V and D32.
*
* WARNING: Setting the wrong pin may have unexpected and potentially disastrous consequences. Use with caution and do your homework.
* 设置了错误的引脚可能会有意想不到的和潜在的灾难性的后果,请谨慎使用。
*/
//#define Z_MIN_PROBE_ENDSTOP
//#define Z_MIN_PROBE_PIN Z_MAX_PIN
/**
* Probe Type 探针类型
*
* Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. 点状探针、舵机探针
* 你必须激活 “热床自动调平”功能
*/
/**
* “手动探针”提供了一种无探针条件下热床自动调平的手段。
* Use G29 repeatedly, adjusting the Z height at each point with movement commands 使用G29反复发送指令以调整Z轴与各点之间的高度。
*
*/
//#define PROBE_MANUALLY
/**
* A Fix-Mounted Probe either doesn't deploy or needs manual deployment. 固定式探头
* (e.g., 感应探头或基于喷嘴头开关。)
*/
//#define FIX_MOUNTED_PROBE
/**
* Z 轴舵机探针, 如在一个旋转臂上安装一个限位开关.
*/
//#define Z_ENDSTOP_SERVO_NR 0 // Defaults to SERVO 0 connector. 默认为伺服0连接器。
//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles Z 舵机部署和收起的角度
/**
* 如果探针看起来不太可靠时则需要开启。
加热器和风扇的工作会影响探针的有效探测
- consistent with the options selected below - will be disabled during probing so as to minimize
* potential EM interference by quieting/silencing the source of the 'noise' (the change
* in current flowing through the wires). This is likely most useful to users of the
* BLTouch probe, but may also help those with inductive or other probe types.
*/
//#define PROBING_HEATERS_OFF // 在探针工作中关闭加热器
//#define PROBING_FANS_OFF // 在探针工作中关闭风扇
// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN) 探针的部署和收起主要靠SOL1_PIN 来控制
//#define SOLENOID_PROBE
// A sled-mounted probe like those designed by Charles Bell.
//#define Z_PROBE_SLED
//#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like.
//
// 对于z_probe_allen_key可参考“三角洲”配置示例。
//
/**
* Z探针相对于喷嘴位置(X,Y )的偏移
* X and Y offsets must be integers.
*
* In the following example the X and Y offsets are both positive:
* #define X_PROBE_OFFSET_FROM_EXTRUDER 10
* #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
* +-- BACK ---+
* | |
* L | (+) P | R <-- probe (20,20)
* E | | I
* F | (-) N (+) | G <-- nozzle (10,10)
* T | | H
* | (-) | T
* | |
* O-- FRONT --+
* (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
#define Z_PROBE_OFFSET_FROM_EXTRUDER 0 // Z offset: -below +above [the nozzle]
/**
* 避免探针在探测、收起或探测点之间移动时触碰其他硬件或热床。
* 舵机所安装的探头在旋转时必须保证足够的空间。
* 而感应探针则需要足够的空间来避免过早被碰撞.
*
* 使用这些设置来提高探针在探测移动过程中的距离(或降低热床)
* probe Z Offset set with Z_PROBE_OFFSET_FROM_EXTRUDER, M851, or the LCD.
* Only integer values >= 1 are valid here.
*
* Example: `M851 Z-5` with a CLEARANCE of 4 => 9mm from bed to nozzle.
* But: `M851 Z+1` with a CLEARANCE of 2 => 2mm from bed to nozzle.
*/
#define Z_CLEARANCE_DEPLOY_PROBE 10 // Z Clearance for Deploy/Stow
#define Z_CLEARANCE_BETWEEN_PROBES 5 // Z Clearance between probe points
// 当某个轴上的步进电机不需要使用时可禁用它。
// WARNING: When motors turn off there is a chance of losing position accuracy!
#define DISABLE_X false
#define DISABLE_Y false
#define DISABLE_Z false
// 关于 “精度降低” 的警告显示
//#define DISABLE_REDUCED_ACCURACY_WARNING
// @ 挤出机信息
#define DISABLE_E false // 所有挤出机关闭或开启
#define DISABLE_INACTIVE_EXTRUDER true // Keep only the active extruder enabled. 仅开启活动挤出机
// @机械信息
// 反转步进电机的方向. Change (or reverse the motor connector) if an axis goes the wrong way.
#define INVERT_X_DIR false
#define INVERT_Y_DIR true
#define INVERT_Z_DIR false
/**
* Filament Runout Sensor 缺丝检测传感器
* 检测是否缺丝
*
* RAMPS-based boards use SERVO3_PIN.
* For other boards you may need to define FIL_RUNOUT_PIN.
* By default the firmware assumes HIGH = has filament, LOW = ran out 默认 高电平为有丝 ,低电平为 缺丝
*/
//#define FILAMENT_RUNOUT_SENSOR
#if ENABLED(FILAMENT_RUNOUT_SENSOR)
#define FIL_RUNOUT_INVERTING false // set to true to invert the logic of the sensor.
#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined.
#define FILAMENT_RUNOUT_SCRIPT "M600"
#endif
// 使用“Z安全归零”,避免在归零操作是Z探针在床区外
// 启用此功能:
// With this feature enabled:
//
// -
// - 如果步进驱动器超时, 它将需要X和Y重新归位然后再让Z归位。
// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
// - 保护Z探头 。
//#define Z_SAFE_HOMING
#if ENABLED(Z_SAFE_HOMING)
#define Z_SAFE_HOMING_X_POINT ((X_MIN_POS + X_MAX_POS) / 2) // X point for Z homing when homing all axis (G28).
#define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2) // Y point for Z homing when homing all axis (G28).
#endif
/**
* LCD语言
*
* Select the language to display on the LCD. These languages are available:
*
* en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
* kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk, test
*
* :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'test':'TEST' }
*/
#define LCD_LANGUAGE en
/**
* LCD字符集
*
* Note: 此选项不适用于图形显示。
*
* All character-based LCDs provide ASCII plus one of these
* language extensions:
*
* - JAPANESE ... the most common
* - WESTERN ... with more accented characters
* - CYRILLIC ... for the Russian language
*
* 确定控制器上安装的语言扩展名:
*
* - Compile and upload with LCD_LANGUAGE set to 'test'
* - Click the controller to view the LCD menu
* - The LCD will display Japanese, Western, or Cyrillic text
*
* See https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language
*
* :['JAPANESE', 'WESTERN', 'CYRILLIC']
*/
#define DISPLAY_CHARSET_HD44780 JAPANESE
/**
* 液晶屏类型
*
* Enable ULTRA_LCD for a 16x2, 16x4, 20x2, or 20x4 character-based LCD.
* Enable DOGLCD for a 128x64 (ST7565R) Full Graphical Display.
* (These options will be enabled automatically for most displays.)
*
* IMPORTANT: The U8glib library is required for Full Graphic Display!
* https://github.com/olikraus/U8glib_Arduino
*/
//#define ULTRA_LCD // 基于特征字
//#define DOGLCD // 全图形显示
/**
* 编码器方向选择
*
* 首先测试编码器的行为,同时禁用两个选项。
*
* Reversed Value Edit and Menu Nav? Enable REVERSE_ENCODER_DIRECTION.
* Reversed Menu Navigation only? Enable REVERSE_MENU_DIRECTION.
* Reversed Value Editing only? Enable BOTH options.
*/
//
//此选项颠倒编码器方向。
//
// Set this option if CLOCKWISE causes values to DECREASE
//
//#define REVERSE_ENCODER_DIRECTION
//
// 此选项用于反转lcd导航菜单的编码器方向。
//
// If CLOCKWISE normally moves DOWN this makes it go UP.
// If CLOCKWISE normally moves UP this makes it go DOWN.
//
//#define REVERSE_MENU_DIRECTION
//
// 单轴的归零
//
// 在LCD菜单上增加单轴归零选项 (Home X, Home Y, and Home Z) to the LCD menu.
//
//#define INDIVIDUAL_AXIS_HOMING_MENU
//
// UI反馈声音的持续时间和频率。
// Set these to 0 to disable audio feedback in the LCD menus.
//
// Note: Test audio output with the G-Code:
// M300 S<frequency Hz> P<duration ms>
//
//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000
//
// 控制器类型:标准
//
// Marlin 支持多种控制器。
// Enable one of the following options to specify your controller.
//
//
// Activate one of these if you have a Panucatt Devices
// Viki 2.0 or mini Viki with Graphic LCD
// http://panucatt.com
//
//#define VIKI2
//#define miniVIKI
//
// RepRapDiscount Smart Controller.
// http://reprap.org/wiki/RepRapDiscount_Smart_Controller
//
// Note: Usually sold with a white PCB.
//
//#define REPRAP_DISCOUNT_SMART_CONTROLLER
//
// GADGETS3D G3D LCD/SD Controller
// http://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel
//
// Note: Usually sold with a blue PCB.
//
//#define G3D_PANEL
//
// MakerLab Mini Panel with graphic
// controller and SD support - http://reprap.org/wiki/Mini_panel
//
//#define MINIPANEL
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
// http://reprapworld.com/?products_details&products_id=202&cPath=1591_1626
//
// REPRAPWORLD_KEYPAD_MOVE_STEP sets how much should the robot move when a key
// is pressed, a value of 10.0 means 10mm per click.
//
//#define REPRAPWORLD_KEYPAD
//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
//
// BQ LCD Smart Controller shipped by
// default with the BQ Hephestos 2 and Witbox 2.
//
//#define BQ_LCD_SMART_CONTROLLER
//
// CONTROLLER TYPE: I2C
//
// Note: These controllers require the installation of Arduino's LiquidCrystal_I2C
// library. For more info: https://github.com/kiyoshigawa/LiquidCrystal_I2C
//
//
// Elefu RA Board Control Panel
// http://www.elefu.com/index.php?route=product/product&product_id=53
//
//#define RA_CONTROL_PANEL
//
// PANELOLU2 LCD with status LEDs,
// separate encoder and click inputs.
//
// Note: This controller requires Arduino's LiquidTWI2 library v1.2.3 or later.
// For more info: https://github.com/lincomatic/LiquidTWI2
//
// Note: The PANELOLU2 encoder click input can either be directly connected to
// a pin (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1).
//
//#define LCD_I2C_PANELOLU2
//
// Panucatt VIKI LCD with status LEDs,
// integrated click & L/R/U/D buttons, separate encoder inputs.
//
//#define LCD_I2C_VIKI
//
// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
//
//#define SAV_3DGLCD
#if ENABLED(SAV_3DGLCD)
//#define U8GLIB_SSD1306
#define U8GLIB_SH1106
#endif
//
// 控制器类型:移位寄存器面板
//
// 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH
// LCD configuration: http://reprap.org/wiki/SAV_3D_LCD
//
//#define SAV_3DLCD
/**
* 彩色LED / LED条控制
*
* Enable support for an RGB LED connected to 5V digital pins, or
* an RGB Strip connected to MOSFETs controlled by digital pins.
*
* Adds the M150 command to set the LED (or LED strip) color.
* If pins are PWM capable (e.g., 4, 5, 6, 11) then a range of
* luminance values can be set from 0 to 255.
*
* *** CAUTION ***
* LED Strips require a MOFSET Chip between PWM lines and LEDs,
* as the Arduino cannot handle the current the LEDs will require.
* Failure to follow this precaution can destroy your Arduino!
* *** CAUTION ***
*
*/
//#define RGB_LED
//#define RGBW_LED
#if ENABLED(RGB_LED) || ENABLED(RGBW_LED)
#define RGB_LED_R_PIN 34
#define RGB_LED_G_PIN 43
#define RGB_LED_B_PIN 35
#define RGB_LED_W_PIN -1
#endif
/**
* 纤维宽度传感器
*
* 实时测量打印丝的宽度,调整流量以补偿任何不规则现象。
*
*
* Also allows the measured filament diameter to set the
* extrusion rate, so the slicer only has to specify the
* volume.
*
* Only a single extruder is supported at this time.
*
* 34 RAMPS_14 : Analog input 5 on the AUX2 connector
* 81 PRINTRBOARD : Analog input 2 on the Exp1 connector (version B,C,D,E)
* 301 RAMBO : Analog input 3
*
* Note: May require analog pins to be defined for other boards.
*/
//#define FILAMENT_WIDTH_SENSOR
#define DEFAULT_NOMINAL_FILAMENT_DIA 3.00 // (mm) Diameter of the filament generally used (3.0 or 1.75mm), also used in the slicer. Used to validate sensor reading.
#if ENABLED(FILAMENT_WIDTH_SENSOR)
#define FILAMENT_SENSOR_EXTRUDER_NUM 0 // Index of the extruder that has the filament sensor (0,1,2,3)
#define MEASUREMENT_DELAY_CM 14 // (cm) The distance from the filament sensor to the melting chamber
#define MEASURED_UPPER_LIMIT 3.30 // (mm) Upper limit used to validate sensor reading
#define MEASURED_LOWER_LIMIT 1.90 // (mm) Lower limit used to validate sensor reading
#define MAX_MEASUREMENT_DELAY 20 // (bytes) Buffer size for stored measurements (1 byte per cm). Must be larger than MEASUREMENT_DELAY_CM.
#define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA // Set measured to nominal initially
// Display filament width on the LCD status line. Status messages will expire after 5 seconds.
//#define FILAMENT_LCD_DISPLAY
#endif