Pārlūkot izejas kodu

Merge branch 'RC' of https://github.com/MarlinFirmware/Marlin into fabrikator-mini

Now simply modified pins_RAMPS to reflect the changed FAN_PIN
Thomas Buck 7 gadus atpakaļ
vecāks
revīzija
85013aa864
100 mainītis faili ar 21444 papildinājumiem un 8903 dzēšanām
  1. 105
    9
      .gitignore
  2. 153
    63
      .travis.yml
  3. 2
    760
      Marlin/Conditionals.h
  4. 319
    0
      Marlin/Conditionals_LCD.h
  5. 663
    0
      Marlin/Conditionals_post.h
  6. 289
    146
      Marlin/Configuration.h
  7. 148
    47
      Marlin/Configuration_adv.h
  8. 81
    108
      Marlin/M100_Free_Mem_Chk.cpp
  9. 158
    128
      Marlin/Marlin.h
  10. 1
    2
      Marlin/Marlin.ino
  11. 41
    0
      Marlin/MarlinConfig.h
  12. 235
    8
      Marlin/MarlinSerial.cpp
  13. 38
    42
      Marlin/MarlinSerial.h
  14. 2952
    2340
      Marlin/Marlin_main.cpp
  15. 309
    145
      Marlin/SanityCheck.h
  16. 9
    8
      Marlin/Sd2Card.cpp
  17. 8
    9
      Marlin/Sd2Card.h
  18. 0
    453
      Marlin/Sd2PinMap.h
  19. 4
    4
      Marlin/SdFatConfig.h
  20. 57
    39
      Marlin/Version.h
  21. 13
    9
      Marlin/boards.h
  22. 0
    57
      Marlin/buzzer.cpp
  23. 121
    6
      Marlin/buzzer.h
  24. 35
    27
      Marlin/cardreader.cpp
  25. 6
    1
      Marlin/cardreader.h
  26. 145
    0
      Marlin/circularqueue.h
  27. 382
    335
      Marlin/configuration_store.cpp
  28. 1
    1
      Marlin/configuration_store.h
  29. 11
    11
      Marlin/dac_mcp4728.cpp
  30. 16
    17
      Marlin/dac_mcp4728.h
  31. 1
    1
      Marlin/digipot_mcp4451.cpp
  32. 12
    6
      Marlin/dogm_bitmaps.h
  33. 206
    0
      Marlin/dogm_font_data_ISO10646_Greek.h
  34. 155
    0
      Marlin/duration_t.h
  35. 29
    15
      Marlin/endstops.cpp
  36. 17
    27
      Marlin/endstops.h
  37. 193
    0
      Marlin/enum.h
  38. 1327
    0
      Marlin/example_configurations/Cartesio/Configuration.h
  39. 799
    0
      Marlin/example_configurations/Cartesio/Configuration_adv.h
  40. 103
    0
      Marlin/example_configurations/Cartesio/_Bootscreen.h
  41. 290
    147
      Marlin/example_configurations/Felix/Configuration.h
  42. 148
    47
      Marlin/example_configurations/Felix/Configuration_adv.h
  43. 290
    147
      Marlin/example_configurations/Felix/DUAL/Configuration.h
  44. 290
    147
      Marlin/example_configurations/Hephestos/Configuration.h
  45. 148
    47
      Marlin/example_configurations/Hephestos/Configuration_adv.h
  46. 311
    168
      Marlin/example_configurations/Hephestos_2/Configuration.h
  47. 156
    55
      Marlin/example_configurations/Hephestos_2/Configuration_adv.h
  48. 7
    1
      Marlin/example_configurations/Hephestos_2/README.md
  49. 103
    0
      Marlin/example_configurations/Hephestos_2/_Bootscreen.h
  50. 290
    147
      Marlin/example_configurations/K8200/Configuration.h
  51. 148
    47
      Marlin/example_configurations/K8200/Configuration_adv.h
  52. 0
    0
      Marlin/example_configurations/K8200/README.md
  53. 1327
    0
      Marlin/example_configurations/K8400/Configuration.h
  54. 799
    0
      Marlin/example_configurations/K8400/Configuration_adv.h
  55. 1327
    0
      Marlin/example_configurations/K8400/Dual-head/Configuration.h
  56. 15
    0
      Marlin/example_configurations/K8400/README.md
  57. 290
    147
      Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h
  58. 294
    148
      Marlin/example_configurations/RigidBot/Configuration.h
  59. 148
    47
      Marlin/example_configurations/RigidBot/Configuration_adv.h
  60. 290
    147
      Marlin/example_configurations/SCARA/Configuration.h
  61. 148
    47
      Marlin/example_configurations/SCARA/Configuration_adv.h
  62. 290
    147
      Marlin/example_configurations/TAZ4/Configuration.h
  63. 148
    47
      Marlin/example_configurations/TAZ4/Configuration_adv.h
  64. 290
    147
      Marlin/example_configurations/WITBOX/Configuration.h
  65. 148
    47
      Marlin/example_configurations/WITBOX/Configuration_adv.h
  66. 290
    147
      Marlin/example_configurations/adafruit/ST7565/Configuration.h
  67. 335
    228
      Marlin/example_configurations/delta/biv2.5/Configuration.h
  68. 148
    47
      Marlin/example_configurations/delta/biv2.5/Configuration_adv.h
  69. 330
    229
      Marlin/example_configurations/delta/generic/Configuration.h
  70. 148
    47
      Marlin/example_configurations/delta/generic/Configuration_adv.h
  71. 333
    233
      Marlin/example_configurations/delta/kossel_mini/Configuration.h
  72. 148
    47
      Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h
  73. 337
    230
      Marlin/example_configurations/delta/kossel_pro/Configuration.h
  74. 148
    47
      Marlin/example_configurations/delta/kossel_pro/Configuration_adv.h
  75. 0
    0
      Marlin/example_configurations/delta/kossel_pro/README.md
  76. 331
    229
      Marlin/example_configurations/delta/kossel_xl/Configuration.h
  77. 148
    47
      Marlin/example_configurations/delta/kossel_xl/Configuration_adv.h
  78. 290
    147
      Marlin/example_configurations/makibox/Configuration.h
  79. 148
    47
      Marlin/example_configurations/makibox/Configuration_adv.h
  80. 290
    147
      Marlin/example_configurations/tvrrug/Round2/Configuration.h
  81. 148
    47
      Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h
  82. 12
    5
      Marlin/fastio.h
  83. 0
    30
      Marlin/fonts/README.md
  84. Binārs
      Marlin/fonts/bdf2u8g.exe
  85. 25
    25
      Marlin/language.h
  86. 12
    15
      Marlin/language_an.h
  87. 12
    14
      Marlin/language_bg.h
  88. 12
    15
      Marlin/language_ca.h
  89. 12
    16
      Marlin/language_cn.h
  90. 99
    20
      Marlin/language_cz.h
  91. 54
    30
      Marlin/language_da.h
  92. 67
    14
      Marlin/language_de.h
  93. 198
    0
      Marlin/language_el-gr.h
  94. 254
    0
      Marlin/language_el.h
  95. 198
    34
      Marlin/language_en.h
  96. 42
    21
      Marlin/language_es.h
  97. 12
    15
      Marlin/language_eu.h
  98. 12
    14
      Marlin/language_fi.h
  99. 12
    15
      Marlin/language_fr.h
  100. 0
    0
      Marlin/language_gl.h

+ 105
- 9
.gitignore Parādīt failu

@@ -1,20 +1,116 @@
1
-// Our automatic versioning scheme generates the following file
2
-// NEVER put it in the repository
3
-_Version.h
1
+#
2
+# Marlin 3D Printer Firmware
3
+# Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
4
+#
5
+# Based on Sprinter and grbl.
6
+# Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
7
+#
8
+# This program is free software: you can redistribute it and/or modify
9
+# it under the terms of the GNU General Public License as published by
10
+# the Free Software Foundation, either version 3 of the License, or
11
+# (at your option) any later version.
12
+#
13
+# This program is distributed in the hope that it will be useful,
14
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
+# GNU General Public License for more details.
17
+#
18
+# You should have received a copy of the GNU General Public License
19
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
+#
4 21
 
5
-// All of the following OS, IDE and compiler generated file
6
-// references should be moved from this file
7
-// They are needed, but they belong in your global .gitignore
8
-// rather than in a per-project file such as this
22
+# Our automatic versioning scheme generates the following file
23
+# NEVER put it in the repository
24
+_Version.h
9 25
 
10
-*.o
26
+#
27
+# OS
28
+#
11 29
 applet/
30
+*.DS_Store
31
+
32
+
33
+#
34
+# Misc
35
+#
12 36
 *~
13 37
 *.orig
14 38
 *.rej
15 39
 *.bak
16
-*.DS_Store
17 40
 *.idea
18 41
 *.s
19 42
 *.i
20 43
 *.ii
44
+*.swp
45
+
46
+
47
+#
48
+# C++
49
+#
50
+# Compiled Object files
51
+*.slo
52
+*.lo
53
+*.o
54
+*.obj
55
+
56
+# Precompiled Headers
57
+*.gch
58
+*.pch
59
+
60
+# Compiled Dynamic libraries
61
+*.so
62
+*.dylib
63
+*.dll
64
+
65
+# Fortran module files
66
+*.mod
67
+*.smod
68
+
69
+# Compiled Static libraries
70
+*.lai
71
+*.la
72
+*.a
73
+*.lib
74
+
75
+# Executables
76
+*.exe
77
+*.out
78
+*.app
79
+
80
+
81
+#
82
+# C
83
+#
84
+# Object files
85
+*.o
86
+*.ko
87
+*.obj
88
+*.elf
89
+
90
+# Precompiled Headers
91
+*.gch
92
+*.pch
93
+
94
+# Libraries
95
+*.lib
96
+*.a
97
+*.la
98
+*.lo
99
+
100
+# Shared objects (inc. Windows DLLs)
101
+*.dll
102
+*.so
103
+*.so.*
104
+*.dylib
105
+
106
+# Executables
107
+*.exe
108
+*.out
109
+*.app
110
+*.i*86
111
+*.x86_64
112
+*.hex
113
+
114
+# Debug files
115
+*.dSYM/
116
+*.su

+ 153
- 63
.travis.yml Parādīt failu

@@ -1,6 +1,9 @@
1 1
 ---
2 2
 language: c
3 3
   #
4
+notifications:
5
+  email: false
6
+  #
4 7
 before_install:
5 8
   #
6 9
   # Fetch the tag information for the current branch
@@ -17,10 +20,10 @@ before_install:
17 20
   #
18 21
 install:
19 22
   #
20
-  # Install arduino 1.6.8
21
-  - wget http://downloads-02.arduino.cc/arduino-1.6.8-linux64.tar.xz
22
-  - tar xf arduino-1.6.8-linux64.tar.xz
23
-  - sudo mv arduino-1.6.8 /usr/local/share/arduino
23
+  # Install arduino 1.6.9
24
+  - wget http://downloads-02.arduino.cc/arduino-1.6.9-linux64.tar.xz
25
+  - tar xf arduino-1.6.9-linux64.tar.xz
26
+  - sudo mv arduino-1.6.9 /usr/local/share/arduino
24 27
   - ln -s /usr/local/share/arduino/arduino ${TRAVIS_BUILD_DIR}/buildroot/bin/arduino
25 28
   #
26 29
   # Install: LiquidCrystal_I2C library
@@ -53,11 +56,11 @@ before_script:
53 56
   #
54 57
 script:
55 58
   #
56
-  # Backup Configuration.h, Configuration_adv.h, and pins_RAMPS_14.h
59
+  # Backup Configuration.h, Configuration_adv.h, and pins_RAMPS.h
57 60
   #
58 61
   - cp Marlin/Configuration.h Marlin/Configuration.h.backup
59 62
   - cp Marlin/Configuration_adv.h Marlin/Configuration_adv.h.backup
60
-  - cp Marlin/pins_RAMPS_14.h Marlin/pins_RAMPS_14.h.backup
63
+  - cp Marlin/pins_RAMPS.h Marlin/pins_RAMPS.h.backup
61 64
   #
62 65
   # Build with the default configurations
63 66
   #
@@ -76,10 +79,12 @@ script:
76 79
   - build_marlin
77 80
   #
78 81
   # Test 3 extruders on RUMBA (can use any board with >=3 extruders defined)
82
+  # Include a test for LIN_ADVANCE here also
79 83
   #
80 84
   - opt_set MOTHERBOARD BOARD_RUMBA
81 85
   - opt_set EXTRUDERS 3
82 86
   - opt_set TEMP_SENSOR_2 1
87
+  - opt_enable_adv LIN_ADVANCE
83 88
   - build_marlin
84 89
   #
85 90
   # Test PIDTEMPBED
@@ -88,10 +93,37 @@ script:
88 93
   - opt_enable PIDTEMPBED
89 94
   - build_marlin
90 95
   #
91
-  # Test AUTO_BED_LEVELING & DEBUG_LEVELING_FEATURE
96
+  # Test a "Fix Mounted" Probe along with Safe Homing
97
+  #
98
+  - restore_configs
99
+  - opt_enable FIX_MOUNTED_PROBE Z_SAFE_HOMING
100
+  - build_marlin
101
+  #
102
+  # ...with AUTO_BED_LEVELING_FEATURE, Z_MIN_PROBE_REPEATABILITY_TEST, & DEBUG_LEVELING_FEATURE
103
+  #
104
+  - opt_enable AUTO_BED_LEVELING_FEATURE Z_MIN_PROBE_REPEATABILITY_TEST DEBUG_LEVELING_FEATURE
105
+  - build_marlin
106
+  #
107
+  # Test a Sled Z Probe
108
+  #
109
+  - restore_configs
110
+  - opt_enable Z_PROBE_SLED
111
+  - build_marlin
112
+  #
113
+  # ...with AUTO_BED_LEVELING_FEATURE & DEBUG_LEVELING_FEATURE
114
+  #
115
+  - opt_enable AUTO_BED_LEVELING_FEATURE DEBUG_LEVELING_FEATURE
116
+  - build_marlin
117
+  #
118
+  # Test a Servo Probe
92 119
   #
93 120
   - restore_configs
94
-  - opt_enable ENABLE_AUTO_BED_LEVELING DEBUG_LEVELING_FEATURE
121
+  - opt_enable NUM_SERVOS Z_ENDSTOP_SERVO_NR Z_SERVO_ANGLES DEACTIVATE_SERVOS_AFTER_MOVE
122
+  - build_marlin
123
+  #
124
+  # ...with AUTO_BED_LEVELING_FEATURE & DEBUG_LEVELING_FEATURE
125
+  #
126
+  - opt_enable AUTO_BED_LEVELING_FEATURE DEBUG_LEVELING_FEATURE
95 127
   - build_marlin
96 128
   #
97 129
   # Test MESH_BED_LEVELING feature, with LCD
@@ -100,15 +132,18 @@ script:
100 132
   - opt_enable MESH_BED_LEVELING MESH_G28_REST_ORIGIN MANUAL_BED_LEVELING ULTIMAKERCONTROLLER
101 133
   - build_marlin
102 134
   #
103
-  # Test AUTO_BED_LEVELING & DEBUG_LEVELING_FEATURE with Servos
135
+  # Test EEPROM_SETTINGS, EEPROM_CHITCHAT, M100_FREE_MEMORY_WATCHER,
136
+  #   INCH_MODE_SUPPORT, TEMPERATURE_UNITS_SUPPORT
104 137
   #
105
-  - opt_enable NUM_SERVOS Z_ENDSTOP_SERVO_NR SERVO_ENDSTOP_ANGLES DEACTIVATE_SERVOS_AFTER_MOVE
138
+  - restore_configs
139
+  - opt_enable EEPROM_SETTINGS EEPROM_CHITCHAT M100_FREE_MEMORY_WATCHER INCH_MODE_SUPPORT TEMPERATURE_UNITS_SUPPORT
106 140
   - build_marlin
107 141
   #
108
-  # Test EEPROM_SETTINGS & EEPROM_CHITCHAT
142
+  # Mixing Extruder
109 143
   #
110 144
   - restore_configs
111
-  - opt_enable EEPROM_SETTINGS EEPROM_CHITCHAT
145
+  - opt_enable MIXING_EXTRUDER
146
+  - opt_set MIXING_STEPPERS 2
112 147
   - build_marlin
113 148
   #
114 149
   # Test DUAL_X_CARRIAGE
@@ -121,126 +156,180 @@ script:
121 156
   - opt_enable_adv DUAL_X_CARRIAGE
122 157
   - build_marlin
123 158
   #
124
-  ### LCDS ###
159
+  # Test SPEAKER with BOARD_BQ_ZUM_MEGA_3D and BQ_LCD_SMART_CONTROLLER
125 160
   #
161
+  - restore_configs
162
+  - opt_set MOTHERBOARD BOARD_BQ_ZUM_MEGA_3D
163
+  - opt_set LCD_FEEDBACK_FREQUENCY_DURATION_MS 10
164
+  - opt_set LCD_FEEDBACK_FREQUENCY_HZ 100
165
+  - opt_enable BQ_LCD_SMART_CONTROLLER SPEAKER
126 166
   #
127
-  # ULTIMAKERCONTROLLER
167
+  # Test SWITCHING_EXTRUDER
128 168
   #
129 169
   - restore_configs
130
-  - opt_enable ULTIMAKERCONTROLLER
170
+  - opt_set MOTHERBOARD BOARD_RUMBA
171
+  - opt_set EXTRUDERS 2
172
+  - opt_enable NUM_SERVOS
173
+  - opt_set NUM_SERVOS 1
174
+  - opt_set TEMP_SENSOR_1 1
175
+  - opt_enable SWITCHING_EXTRUDER ULTIMAKERCONTROLLER
131 176
   - build_marlin
132 177
   #
133
-  # MAKRPANEL
134
-  # Needs to use Melzi and Sanguino hardware
178
+  # Test MINIRAMBO for PWM_MOTOR_CURRENT
135 179
   #
136
-  #- restore_configs
137
-  #- opt_enable MAKRPANEL
138
-  #- build_marlin
180
+  - restore_configs
181
+  - opt_set MOTHERBOARD BOARD_MINIRAMBO
182
+  - build_marlin
139 183
   #
140
-  # REPRAP_DISCOUNT_SMART_CONTROLLER, SDSUPPORT, and BABYSTEPPING
184
+  # Test FILAMENT_CHANGE_FEATURE and LCD_INFO_MENU
141 185
   #
142 186
   - restore_configs
143
-  - opt_enable REPRAP_DISCOUNT_SMART_CONTROLLER SDSUPPORT BABYSTEPPING
187
+  - opt_enable ULTIMAKERCONTROLLER
188
+  - opt_enable_adv FILAMENT_CHANGE_FEATURE LCD_INFO_MENU
144 189
   - build_marlin
145 190
   #
146
-  # G3D_PANEL
191
+  # Enable filament sensor
147 192
   #
148 193
   - restore_configs
149
-  - opt_enable G3D_PANEL SDSUPPORT
194
+  - opt_enable FILAMENT_WIDTH_SENSOR
150 195
   - build_marlin
151 196
   #
152
-  # REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
197
+  # Enable filament sensor with LCD display
198
+  #
199
+  - opt_enable ULTIMAKERCONTROLLER FILAMENT_LCD_DISPLAY
200
+  - build_marlin
201
+  #
202
+  # Enable BEZIER_CURVE_SUPPORT
153 203
   #
154 204
   - restore_configs
155
-  - opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER SDSUPPORT
205
+  - opt_enable_adv BEZIER_CURVE_SUPPORT
156 206
   - build_marlin
157 207
   #
158
-  # REPRAPWORLD_KEYPAD
208
+  # Enable COREXY
159 209
   #
160
-  # Cant find configuration details to get it to compile
161
-  #- restore_configs
162
-  #- opt_enable ULTRA_LCD REPRAPWORLD_KEYPAD REPRAPWORLD_KEYPAD_MOVE_STEP
163
-  #- build_marlin
210
+  - restore_configs
211
+  - opt_enable COREXY
212
+  - build_marlin
164 213
   #
165
-  # RA_CONTROL_PANEL
214
+  # Enable COREXZ
166 215
   #
167 216
   - restore_configs
168
-  - opt_enable RA_CONTROL_PANEL
217
+  - opt_enable COREXZ
169 218
   - build_marlin
170 219
   #
171
-  ### I2C PANELS ###
220
+  # Enable Z_DUAL_STEPPER_DRIVERS, Z_DUAL_ENDSTOPS
172 221
   #
173
-  # LCD_I2C_SAINSMART_YWROBOT
174
-  # Failing at the moment needs different library
175
-  #- restore_configs
176
-  #- opt_enable LCD_I2C_SAINSMART_YWROBOT
177
-  #- build_marlin
222
+  - restore_configs
223
+  - opt_enable_adv Z_DUAL_STEPPER_DRIVERS Z_DUAL_ENDSTOPS
224
+  - pins_set RAMPS X_MAX_PIN -1
225
+  - opt_set_adv Z2_MAX_PIN 2
226
+  - build_marlin
178 227
   #
179
-  # LCD_I2C_PANELOLU2
228
+  # Test PRINTCOUNTER
180 229
   #
181 230
   - restore_configs
182
-  - opt_enable LCD_I2C_PANELOLU2
231
+  - opt_enable PRINTCOUNTER
183 232
   - build_marlin
184 233
   #
185
-  # LCD_I2C_VIKI
234
+  # Test NOZZLE_PARK_FEATURE
186 235
   #
187 236
   - restore_configs
188
-  - opt_enable LCD_I2C_VIKI
237
+  - opt_enable NOZZLE_PARK_FEATURE
189 238
   - build_marlin
190 239
   #
191
-  # LCM1602
240
+  # Test NOZZLE_CLEAN_FEATURE
192 241
   #
193 242
   - restore_configs
194
-  - opt_enable LCM1602
243
+  - opt_enable NOZZLE_CLEAN_FEATURE
195 244
   - build_marlin
196 245
   #
197
-  # Enable FILAMENTCHANGEENABLE
246
+  #
247
+  ######## STANDARD LCD/PANELS ##############
248
+  #
249
+  # ULTRA_LCD
198 250
   #
199 251
   - restore_configs
200
-  - opt_enable FILAMENTCHANGEENABLE ULTIMAKERCONTROLLER
252
+  - opt_enable ULTRA_LCD
201 253
   - build_marlin
202 254
   #
203
-  # Enable filament sensor
255
+  # DOGLCD
204 256
   #
205 257
   - restore_configs
206
-  - opt_enable FILAMENT_WIDTH_SENSOR
258
+  - opt_enable DOGLCD
207 259
   - build_marlin
208 260
   #
209
-  # Enable filament sensor with LCD display
261
+  # ULTIMAKERCONTROLLER
210 262
   #
211
-  - opt_enable ULTIMAKERCONTROLLER FILAMENT_LCD_DISPLAY
263
+  - restore_configs
264
+  - opt_enable ULTIMAKERCONTROLLER
212 265
   - build_marlin
213 266
   #
214
-  # Enable BEZIER_CURVE_SUPPORT
267
+  # MAKRPANEL
268
+  # Needs to use Melzi and Sanguino hardware
269
+  #
270
+  #- restore_configs
271
+  #- opt_enable MAKRPANEL
272
+  #- build_marlin
273
+  #
274
+  # REPRAP_DISCOUNT_SMART_CONTROLLER, SDSUPPORT, and BABYSTEPPING
215 275
   #
216 276
   - restore_configs
217
-  - opt_enable_adv BEZIER_CURVE_SUPPORT
277
+  - opt_enable REPRAP_DISCOUNT_SMART_CONTROLLER SDSUPPORT BABYSTEPPING
218 278
   - build_marlin
219 279
   #
220
-  # Enable COREXY
280
+  # G3D_PANEL
221 281
   #
222 282
   - restore_configs
223
-  - opt_enable COREXY
283
+  - opt_enable G3D_PANEL SDSUPPORT
224 284
   - build_marlin
225 285
   #
226
-  # Enable COREXZ
286
+  # REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
227 287
   #
228 288
   - restore_configs
229
-  - opt_enable COREXZ
289
+  - opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER SDSUPPORT
230 290
   - build_marlin
231 291
   #
232
-  # Enable Z_DUAL_STEPPER_DRIVERS, Z_DUAL_ENDSTOPS
292
+  # REPRAPWORLD_KEYPAD
293
+  #
294
+  # Cant find configuration details to get it to compile
295
+  #- restore_configs
296
+  #- opt_enable ULTRA_LCD REPRAPWORLD_KEYPAD REPRAPWORLD_KEYPAD_MOVE_STEP
297
+  #- build_marlin
298
+  #
299
+  # RA_CONTROL_PANEL
233 300
   #
234 301
   - restore_configs
235
-  - opt_enable_adv Z_DUAL_STEPPER_DRIVERS Z_DUAL_ENDSTOPS
236
-  - pins_set RAMPS_14 X_MAX_PIN -1
237
-  - opt_set_adv Z2_MAX_PIN 2
302
+  - opt_enable RA_CONTROL_PANEL
238 303
   - build_marlin
239 304
   #
240
-  # Test PRINTCOUNTER
305
+  ######## I2C LCD/PANELS ##############
306
+  #
307
+  # !!!ATTENTION!!!
308
+  # Most I2C configurations are failing at the moment because they require
309
+  # a different Liquid Crystal library "LiquidTWI2".
310
+  #
311
+  # LCD_I2C_SAINSMART_YWROBOT
312
+  #
313
+  #- restore_configs
314
+  #- opt_enable LCD_I2C_SAINSMART_YWROBOT
315
+  #- build_marlin
316
+  #
317
+  # LCD_I2C_PANELOLU2
318
+  #
319
+  #- restore_configs
320
+  #- opt_enable LCD_I2C_PANELOLU2
321
+  #- build_marlin
322
+  #
323
+  # LCD_I2C_VIKI
324
+  #
325
+  #- restore_configs
326
+  #- opt_enable LCD_I2C_VIKI
327
+  #- build_marlin
328
+  #
329
+  # LCM1602
241 330
   #
242 331
   - restore_configs
243
-  - opt_enable PRINTCOUNTER
332
+  - opt_enable LCM1602
244 333
   - build_marlin
245 334
   #
246 335
   #
@@ -276,6 +365,7 @@ script:
276 365
   # SCARA Config
277 366
   #
278 367
   - use_example_configs SCARA
368
+  - opt_enable AUTO_BED_LEVELING_FEATURE FIX_MOUNTED_PROBE USE_ZMIN_PLUG
279 369
   - build_marlin
280 370
   #
281 371
   # tvrrug Config need to check board type for sanguino atmega644p

+ 2
- 760
Marlin/Conditionals.h Parādīt failu

@@ -22,764 +22,6 @@
22 22
 
23 23
 /**
24 24
  * Conditionals.h
25
- * Defines that depend on configuration but are not editable.
25
+ * OBSOLETE: Replaced by Conditionals_LCD.h and Conditionals_post.h
26 26
  */
27
-
28
-#ifndef CONDITIONALS_H
29
-
30
-/**
31
-* Miscellaneous
32
-*/
33
-#ifndef M_PI
34
-  #define M_PI 3.1415926536
35
-#endif
36
-
37
-/**
38
- * This value is used by M109 when tying to calculate a ballpark safe margin
39
- * to prevent wait-forever situation.
40
- */
41
-#ifndef EXTRUDE_MINTEMP
42
- #define EXTRUDE_MINTEMP 170
43
-#endif
44
-
45
-#ifndef CONFIGURATION_LCD // Get the LCD defines which are needed first
46
-
47
-  #define CONFIGURATION_LCD
48
-
49
-  #define LCD_HAS_DIRECTIONAL_BUTTONS (BUTTON_EXISTS(UP) || BUTTON_EXISTS(DWN) || BUTTON_EXISTS(LFT) || BUTTON_EXISTS(RT))
50
-
51
-  #if ENABLED(MAKRPANEL)
52
-    #define DOGLCD
53
-    #define DEFAULT_LCD_CONTRAST 17
54
-    #define ULTIPANEL
55
-    #define NEWPANEL
56
-  #endif
57
-
58
-  #if ENABLED(miniVIKI) || ENABLED(VIKI2) || ENABLED(ELB_FULL_GRAPHIC_CONTROLLER)
59
-    #define ULTRA_LCD  //general LCD support, also 16x2
60
-    #define DOGLCD  // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)
61
-    #define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
62
-
63
-    #if ENABLED(miniVIKI)
64
-      #define DEFAULT_LCD_CONTRAST 95
65
-    #elif ENABLED(VIKI2)
66
-      #define DEFAULT_LCD_CONTRAST 40
67
-    #elif ENABLED(ELB_FULL_GRAPHIC_CONTROLLER)
68
-      #define DEFAULT_LCD_CONTRAST 110
69
-      #define U8GLIB_LM6059_AF
70
-      #define SD_DETECT_INVERTED
71
-    #endif
72
-
73
-    #define ENCODER_PULSES_PER_STEP 4
74
-    #define ENCODER_STEPS_PER_MENU_ITEM 1
75
-  #endif
76
-
77
-  // Generic support for SSD1306 OLED based LCDs.
78
-  #if ENABLED(U8GLIB_SSD1306)
79
-    #define ULTRA_LCD  //general LCD support, also 16x2
80
-    #define DOGLCD  // Support for I2C LCD 128x64 (Controller SSD1306 graphic Display Family)
81
-  #endif
82
-
83
-  #if ENABLED(PANEL_ONE)
84
-    #define ULTIMAKERCONTROLLER
85
-  #endif
86
-
87
-  #if ENABLED(BQ_LCD_SMART_CONTROLLER)
88
-    #define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
89
-
90
-    #ifndef ENCODER_PULSES_PER_STEP
91
-      #define ENCODER_PULSES_PER_STEP 4
92
-    #endif
93
-
94
-    #ifndef ENCODER_STEPS_PER_MENU_ITEM
95
-      #define ENCODER_STEPS_PER_MENU_ITEM 1
96
-    #endif
97
-
98
-    #ifndef LONG_FILENAME_HOST_SUPPORT
99
-      #define LONG_FILENAME_HOST_SUPPORT
100
-    #endif
101
-  #endif
102
-
103
-  #if ENABLED(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
104
-    #define DOGLCD
105
-    #define U8GLIB_ST7920
106
-    #define REPRAP_DISCOUNT_SMART_CONTROLLER
107
-  #endif
108
-
109
-  #if ENABLED(ULTIMAKERCONTROLLER) || ENABLED(REPRAP_DISCOUNT_SMART_CONTROLLER) || ENABLED(G3D_PANEL) || ENABLED(RIGIDBOT_PANEL)
110
-    #define ULTIPANEL
111
-    #define NEWPANEL
112
-  #endif
113
-
114
-  #if ENABLED(REPRAPWORLD_KEYPAD)
115
-    #define ULTIPANEL
116
-    #define NEWPANEL
117
-  #endif
118
-
119
-  #if ENABLED(RA_CONTROL_PANEL)
120
-    #define LCD_I2C_TYPE_PCA8574
121
-    #define LCD_I2C_ADDRESS 0x27   // I2C Address of the port expander
122
-    #define ULTIPANEL
123
-    #define NEWPANEL
124
-  #endif
125
-
126
-  #if ENABLED(MINIPANEL)
127
-    #define DOGLCD
128
-    #define ULTIPANEL
129
-    #define NEWPANEL
130
-    #define DEFAULT_LCD_CONTRAST 17
131
-  #endif
132
-
133
-  /**
134
-   * I2C PANELS
135
-   */
136
-
137
-  #if ENABLED(LCD_I2C_SAINSMART_YWROBOT)
138
-    // This uses the LiquidCrystal_I2C library ( https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home )
139
-    // Make sure it is placed in the Arduino libraries directory.
140
-    #define LCD_I2C_TYPE_PCF8575
141
-    #define LCD_I2C_ADDRESS 0x27   // I2C Address of the port expander
142
-    #define ULTIPANEL
143
-    #define NEWPANEL
144
-  #endif
145
-
146
-  // PANELOLU2 LCD with status LEDs, separate encoder and click inputs
147
-  #if ENABLED(LCD_I2C_PANELOLU2)
148
-    #define LCD_I2C_TYPE_MCP23017
149
-    #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
150
-    #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD
151
-
152
-    #ifndef ENCODER_PULSES_PER_STEP
153
-      #define ENCODER_PULSES_PER_STEP 4
154
-    #endif
155
-
156
-    #ifndef ENCODER_STEPS_PER_MENU_ITEM
157
-      #define ENCODER_STEPS_PER_MENU_ITEM 1
158
-    #endif
159
-
160
-    #if ENABLED(LCD_USE_I2C_BUZZER)
161
-      #define LCD_FEEDBACK_FREQUENCY_HZ 1000
162
-      #define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100
163
-    #endif
164
-
165
-    #define ULTIPANEL
166
-    #define NEWPANEL
167
-  #endif
168
-
169
-  // Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs
170
-  #if ENABLED(LCD_I2C_VIKI)
171
-    // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 )
172
-    // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory.
173
-    // Note: The pause/stop/resume LCD button pin should be connected to the Arduino
174
-    //       BTN_ENC pin (or set BTN_ENC to -1 if not used)
175
-    #define LCD_I2C_TYPE_MCP23017
176
-    #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
177
-    #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD (requires LiquidTWI2 v1.2.3 or later)
178
-    #define ULTIPANEL
179
-    #define NEWPANEL
180
-  #endif
181
-
182
-  // Shift register panels
183
-  // ---------------------
184
-  // 2 wire Non-latching LCD SR from:
185
-  // https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
186
-
187
-  #if ENABLED(SAV_3DLCD)
188
-    #define SR_LCD_2W_NL    // Non latching 2 wire shift register
189
-    #define ULTIPANEL
190
-    #define NEWPANEL
191
-  #endif
192
-
193
-  #if ENABLED(DOGLCD) // Change number of lines to match the DOG graphic display
194
-    #ifndef LCD_WIDTH
195
-      #define LCD_WIDTH 22
196
-    #endif
197
-    #ifndef LCD_HEIGHT
198
-      #define LCD_HEIGHT 5
199
-    #endif
200
-  #endif
201
-
202
-  #if ENABLED(ULTIPANEL)
203
-    #define NEWPANEL  //enable this if you have a click-encoder panel
204
-    #define ULTRA_LCD
205
-    #ifndef LCD_WIDTH
206
-      #define LCD_WIDTH 20
207
-    #endif
208
-    #ifndef LCD_HEIGHT
209
-      #define LCD_HEIGHT 4
210
-    #endif
211
-  #else //no panel but just LCD
212
-    #if ENABLED(ULTRA_LCD)
213
-      #ifndef LCD_WIDTH
214
-        #define LCD_WIDTH 16
215
-      #endif
216
-      #ifndef LCD_HEIGHT
217
-        #define LCD_HEIGHT 2
218
-      #endif
219
-    #endif
220
-  #endif
221
-
222
-  #if ENABLED(DOGLCD)
223
-    /* Custom characters defined in font dogm_font_data_Marlin_symbols.h / Marlin_symbols.fon */
224
-    // \x00 intentionally skipped to avoid problems in strings
225
-    #define LCD_STR_REFRESH     "\x01"
226
-    #define LCD_STR_FOLDER      "\x02"
227
-    #define LCD_STR_ARROW_RIGHT "\x03"
228
-    #define LCD_STR_UPLEVEL     "\x04"
229
-    #define LCD_STR_CLOCK       "\x05"
230
-    #define LCD_STR_FEEDRATE    "\x06"
231
-    #define LCD_STR_BEDTEMP     "\x07"
232
-    #define LCD_STR_THERMOMETER "\x08"
233
-    #define LCD_STR_DEGREE      "\x09"
234
-
235
-    #define LCD_STR_SPECIAL_MAX '\x09'
236
-    // Maximum here is 0x1f because 0x20 is ' ' (space) and the normal charsets begin.
237
-    // Better stay below 0x10 because DISPLAY_CHARSET_HD44780_WESTERN begins here.
238
-  #else
239
-    /* Custom characters defined in the first 8 characters of the LCD */
240
-    #define LCD_STR_BEDTEMP     "\x00"  // Print only as a char. This will have 'unexpected' results when used in a string!
241
-    #define LCD_STR_DEGREE      "\x01"
242
-    #define LCD_STR_THERMOMETER "\x02"
243
-    #define LCD_STR_UPLEVEL     "\x03"
244
-    #define LCD_STR_REFRESH     "\x04"
245
-    #define LCD_STR_FOLDER      "\x05"
246
-    #define LCD_STR_FEEDRATE    "\x06"
247
-    #define LCD_STR_CLOCK       "\x07"
248
-    #define LCD_STR_ARROW_RIGHT ">"  /* from the default character set */
249
-  #endif
250
-
251
-  /**
252
-   * Default LCD contrast for dogm-like LCD displays
253
-   */
254
-  #if ENABLED(DOGLCD) && DISABLED(DEFAULT_LCD_CONTRAST)
255
-    #define DEFAULT_LCD_CONTRAST 32
256
-  #endif
257
-
258
-  #if ENABLED(DOGLCD)
259
-    #define HAS_LCD_CONTRAST
260
-    #if ENABLED(U8GLIB_ST7920)
261
-      #undef HAS_LCD_CONTRAST
262
-    #endif
263
-    #if ENABLED(U8GLIB_SSD1306)
264
-      #undef HAS_LCD_CONTRAST
265
-    #endif
266
-  #endif
267
-
268
-#else // CONFIGURATION_LCD
269
-
270
-  #define CONDITIONALS_H
271
-
272
-  #include "pins.h"
273
-
274
-  #ifndef USBCON
275
-    #define HardwareSerial_h // trick to disable the standard HWserial
276
-  #endif
277
-
278
-  #include "Arduino.h"
279
-
280
-  /**
281
-   * Set ENDSTOPPULLUPS for unused endstop switches
282
-   */
283
-  #if ENABLED(ENDSTOPPULLUPS)
284
-    #if ENABLED(USE_XMAX_PLUG)
285
-      #define ENDSTOPPULLUP_XMAX
286
-    #endif
287
-    #if ENABLED(USE_YMAX_PLUG)
288
-      #define ENDSTOPPULLUP_YMAX
289
-    #endif
290
-    #if ENABLED(USE_ZMAX_PLUG)
291
-      #define ENDSTOPPULLUP_ZMAX
292
-    #endif
293
-    #if ENABLED(USE_XMIN_PLUG)
294
-      #define ENDSTOPPULLUP_XMIN
295
-    #endif
296
-    #if ENABLED(USE_YMIN_PLUG)
297
-      #define ENDSTOPPULLUP_YMIN
298
-    #endif
299
-    #if ENABLED(USE_ZMIN_PLUG)
300
-      #define ENDSTOPPULLUP_ZMIN
301
-    #endif
302
-    #if DISABLED(DISABLE_Z_MIN_PROBE_ENDSTOP)
303
-      #define ENDSTOPPULLUP_ZMIN_PROBE
304
-    #endif
305
-  #endif
306
-
307
-  /**
308
-   * Axis lengths
309
-   */
310
-  #define X_MAX_LENGTH (X_MAX_POS - (X_MIN_POS))
311
-  #define Y_MAX_LENGTH (Y_MAX_POS - (Y_MIN_POS))
312
-  #define Z_MAX_LENGTH (Z_MAX_POS - (Z_MIN_POS))
313
-
314
-  /**
315
-   * CoreXY and CoreXZ
316
-   */
317
-  #if ENABLED(COREXY)
318
-    #define CORE_AXIS_1 A_AXIS // XY from A + B
319
-    #define CORE_AXIS_2 B_AXIS
320
-    #define NORMAL_AXIS Z_AXIS
321
-  #elif ENABLED(COREXZ)
322
-    #define CORE_AXIS_1 A_AXIS // XZ from A + C
323
-    #define CORE_AXIS_2 C_AXIS
324
-    #define NORMAL_AXIS Y_AXIS
325
-  #elif ENABLED(COREYZ)
326
-    #define CORE_AXIS_1 B_AXIS // YZ from B + C
327
-    #define CORE_AXIS_2 C_AXIS
328
-    #define NORMAL_AXIS X_AXIS
329
-  #endif
330
-
331
-  /**
332
-   * SCARA
333
-   */
334
-  #if ENABLED(SCARA)
335
-    #undef SLOWDOWN
336
-    #define QUICK_HOME //SCARA needs Quickhome
337
-  #endif
338
-
339
-  /**
340
-   * AUTOSET LOCATIONS OF LIMIT SWITCHES
341
-   */
342
-  #if ENABLED(MANUAL_HOME_POSITIONS)  // Use manual limit switch locations
343
-    #define X_HOME_POS MANUAL_X_HOME_POS
344
-    #define Y_HOME_POS MANUAL_Y_HOME_POS
345
-    #define Z_HOME_POS MANUAL_Z_HOME_POS
346
-  #else //!MANUAL_HOME_POSITIONS – Use home switch positions based on homing direction and travel limits
347
-    #if ENABLED(BED_CENTER_AT_0_0)
348
-      #define X_HOME_POS (X_MAX_LENGTH) * (X_HOME_DIR) * 0.5
349
-      #define Y_HOME_POS (Y_MAX_LENGTH) * (Y_HOME_DIR) * 0.5
350
-    #else
351
-      #define X_HOME_POS (X_HOME_DIR < 0 ? X_MIN_POS : X_MAX_POS)
352
-      #define Y_HOME_POS (Y_HOME_DIR < 0 ? Y_MIN_POS : Y_MAX_POS)
353
-    #endif
354
-    #define Z_HOME_POS (Z_HOME_DIR < 0 ? Z_MIN_POS : Z_MAX_POS)
355
-  #endif //!MANUAL_HOME_POSITIONS
356
-
357
-  /**
358
-   * Auto Bed Leveling
359
-   */
360
-  #if ENABLED(AUTO_BED_LEVELING_FEATURE)
361
-    // Boundaries for probing based on set limits
362
-    #define MIN_PROBE_X (max(X_MIN_POS, X_MIN_POS + X_PROBE_OFFSET_FROM_EXTRUDER))
363
-    #define MAX_PROBE_X (min(X_MAX_POS, X_MAX_POS + X_PROBE_OFFSET_FROM_EXTRUDER))
364
-    #define MIN_PROBE_Y (max(Y_MIN_POS, Y_MIN_POS + Y_PROBE_OFFSET_FROM_EXTRUDER))
365
-    #define MAX_PROBE_Y (min(Y_MAX_POS, Y_MAX_POS + Y_PROBE_OFFSET_FROM_EXTRUDER))
366
-  #endif
367
-
368
-  #define HAS_Z_ENDSTOP_SERVO (defined(Z_ENDSTOP_SERVO_NR) && Z_ENDSTOP_SERVO_NR >= 0)
369
-  #define SERVO_LEVELING (ENABLED(AUTO_BED_LEVELING_FEATURE) && HAS_Z_ENDSTOP_SERVO)
370
-
371
-  /**
372
-   * Sled Options
373
-   */
374
-  #if ENABLED(Z_PROBE_SLED)
375
-    #define Z_SAFE_HOMING
376
-  #endif
377
-
378
-  /**
379
-   * Z Safe Homing dependencies
380
-   */
381
-  #if ENABLED(Z_SAFE_HOMING)
382
-    #ifndef X_PROBE_OFFSET_FROM_EXTRUDER
383
-      #define X_PROBE_OFFSET_FROM_EXTRUDER 0
384
-    #endif
385
-    #ifndef Y_PROBE_OFFSET_FROM_EXTRUDER
386
-      #define Y_PROBE_OFFSET_FROM_EXTRUDER 0
387
-    #endif
388
-    #ifndef Z_PROBE_OFFSET_FROM_EXTRUDER
389
-      #define Z_PROBE_OFFSET_FROM_EXTRUDER 0
390
-    #endif
391
-    #ifndef XY_TRAVEL_SPEED
392
-      #define XY_TRAVEL_SPEED 4000
393
-    #endif
394
-  #endif
395
-
396
-  /**
397
-   * Host keep alive
398
-   */
399
-  #ifndef DEFAULT_KEEPALIVE_INTERVAL
400
-    #define DEFAULT_KEEPALIVE_INTERVAL 2
401
-  #endif
402
-
403
-  /**
404
-   * MAX_STEP_FREQUENCY differs for TOSHIBA
405
-   */
406
-  #if ENABLED(CONFIG_STEPPERS_TOSHIBA)
407
-    #define MAX_STEP_FREQUENCY 10000 // Max step frequency for Toshiba Stepper Controllers
408
-  #else
409
-    #define MAX_STEP_FREQUENCY 40000 // Max step frequency for Ultimaker (5000 pps / half step)
410
-  #endif
411
-
412
-  // MS1 MS2 Stepper Driver Microstepping mode table
413
-  #define MICROSTEP1 LOW,LOW
414
-  #define MICROSTEP2 HIGH,LOW
415
-  #define MICROSTEP4 LOW,HIGH
416
-  #define MICROSTEP8 HIGH,HIGH
417
-  #define MICROSTEP16 HIGH,HIGH
418
-
419
-  /**
420
-   * Advance calculated values
421
-   */
422
-  #if ENABLED(ADVANCE)
423
-    #define EXTRUSION_AREA (0.25 * (D_FILAMENT) * (D_FILAMENT) * M_PI)
424
-    #define STEPS_PER_CUBIC_MM_E (axis_steps_per_unit[E_AXIS] / (EXTRUSION_AREA))
425
-  #endif
426
-
427
-  #if ENABLED(ULTIPANEL) && DISABLED(ELB_FULL_GRAPHIC_CONTROLLER)
428
-    #undef SD_DETECT_INVERTED
429
-  #endif
430
-
431
-  /**
432
-   * Set defaults for missing (newer) options
433
-   */
434
-  #ifndef DISABLE_INACTIVE_X
435
-    #define DISABLE_INACTIVE_X DISABLE_X
436
-  #endif
437
-  #ifndef DISABLE_INACTIVE_Y
438
-    #define DISABLE_INACTIVE_Y DISABLE_Y
439
-  #endif
440
-  #ifndef DISABLE_INACTIVE_Z
441
-    #define DISABLE_INACTIVE_Z DISABLE_Z
442
-  #endif
443
-  #ifndef DISABLE_INACTIVE_E
444
-    #define DISABLE_INACTIVE_E DISABLE_E
445
-  #endif
446
-
447
-  // Power Signal Control Definitions
448
-  // By default use ATX definition
449
-  #ifndef POWER_SUPPLY
450
-    #define POWER_SUPPLY 1
451
-  #endif
452
-  #if (POWER_SUPPLY == 1)     // 1 = ATX
453
-    #define PS_ON_AWAKE  LOW
454
-    #define PS_ON_ASLEEP HIGH
455
-  #elif (POWER_SUPPLY == 2)   // 2 = X-Box 360 203W
456
-    #define PS_ON_AWAKE  HIGH
457
-    #define PS_ON_ASLEEP LOW
458
-  #endif
459
-  #define HAS_POWER_SWITCH (POWER_SUPPLY > 0 && PIN_EXISTS(PS_ON))
460
-
461
-  /**
462
-   * Temp Sensor defines
463
-   */
464
-  #if TEMP_SENSOR_0 == -3
465
-    #define HEATER_0_USES_MAX6675
466
-    #define MAX6675_IS_MAX31855
467
-  #elif TEMP_SENSOR_0 == -2
468
-    #define HEATER_0_USES_MAX6675
469
-  #elif TEMP_SENSOR_0 == -1
470
-    #define HEATER_0_USES_AD595
471
-  #elif TEMP_SENSOR_0 == 0
472
-    #undef HEATER_0_MINTEMP
473
-    #undef HEATER_0_MAXTEMP
474
-  #elif TEMP_SENSOR_0 > 0
475
-    #define THERMISTORHEATER_0 TEMP_SENSOR_0
476
-    #define HEATER_0_USES_THERMISTOR
477
-  #endif
478
-
479
-  #if TEMP_SENSOR_1 <= -2
480
-    #error "MAX6675 / MAX31855 Thermocouples not supported for TEMP_SENSOR_1"
481
-  #elif TEMP_SENSOR_1 == -1
482
-    #define HEATER_1_USES_AD595
483
-  #elif TEMP_SENSOR_1 == 0
484
-    #undef HEATER_1_MINTEMP
485
-    #undef HEATER_1_MAXTEMP
486
-  #elif TEMP_SENSOR_1 > 0
487
-    #define THERMISTORHEATER_1 TEMP_SENSOR_1
488
-    #define HEATER_1_USES_THERMISTOR
489
-  #endif
490
-
491
-  #if TEMP_SENSOR_2 <= -2
492
-    #error "MAX6675 / MAX31855 Thermocouples not supported for TEMP_SENSOR_2"
493
-  #elif TEMP_SENSOR_2 == -1
494
-    #define HEATER_2_USES_AD595
495
-  #elif TEMP_SENSOR_2 == 0
496
-    #undef HEATER_2_MINTEMP
497
-    #undef HEATER_2_MAXTEMP
498
-  #elif TEMP_SENSOR_2 > 0
499
-    #define THERMISTORHEATER_2 TEMP_SENSOR_2
500
-    #define HEATER_2_USES_THERMISTOR
501
-  #endif
502
-
503
-  #if TEMP_SENSOR_3 <= -2
504
-    #error "MAX6675 / MAX31855 Thermocouples not supported for TEMP_SENSOR_3"
505
-  #elif TEMP_SENSOR_3 == -1
506
-    #define HEATER_3_USES_AD595
507
-  #elif TEMP_SENSOR_3 == 0
508
-    #undef HEATER_3_MINTEMP
509
-    #undef HEATER_3_MAXTEMP
510
-  #elif TEMP_SENSOR_3 > 0
511
-    #define THERMISTORHEATER_3 TEMP_SENSOR_3
512
-    #define HEATER_3_USES_THERMISTOR
513
-  #endif
514
-
515
-  #if TEMP_SENSOR_BED <= -2
516
-    #error "MAX6675 / MAX31855 Thermocouples not supported for TEMP_SENSOR_BED"
517
-  #elif TEMP_SENSOR_BED == -1
518
-    #define BED_USES_AD595
519
-  #elif TEMP_SENSOR_BED == 0
520
-    #undef BED_MINTEMP
521
-    #undef BED_MAXTEMP
522
-  #elif TEMP_SENSOR_BED > 0
523
-    #define THERMISTORBED TEMP_SENSOR_BED
524
-    #define BED_USES_THERMISTOR
525
-  #endif
526
-
527
-  /**
528
-   * Flags for PID handling
529
-   */
530
-  #define HAS_PID_HEATING (ENABLED(PIDTEMP) || ENABLED(PIDTEMPBED))
531
-  #define HAS_PID_FOR_BOTH (ENABLED(PIDTEMP) && ENABLED(PIDTEMPBED))
532
-
533
-  /**
534
-   * ARRAY_BY_EXTRUDERS based on EXTRUDERS
535
-   */
536
-  #if EXTRUDERS > 3
537
-    #define ARRAY_BY_EXTRUDERS(v1, v2, v3, v4) { v1, v2, v3, v4 }
538
-  #elif EXTRUDERS > 2
539
-    #define ARRAY_BY_EXTRUDERS(v1, v2, v3, v4) { v1, v2, v3 }
540
-  #elif EXTRUDERS > 1
541
-    #define ARRAY_BY_EXTRUDERS(v1, v2, v3, v4) { v1, v2 }
542
-  #else
543
-    #define ARRAY_BY_EXTRUDERS(v1, v2, v3, v4) { v1 }
544
-  #endif
545
-
546
-  #define ARRAY_BY_EXTRUDERS1(v1) ARRAY_BY_EXTRUDERS(v1, v1, v1, v1)
547
-
548
-  /**
549
-   * With SINGLENOZZLE all "extruders" are in the same place
550
-   */
551
-  #if ENABLED(SINGLENOZZLE)
552
-    #undef EXTRUDER_OFFSET_X
553
-    #undef EXTRUDER_OFFSET_Y
554
-    #define EXTRUDER_OFFSET_X { 0 }
555
-    #define EXTRUDER_OFFSET_Y { 0 }
556
-  #endif
557
-
558
-  /**
559
-   * Z_DUAL_ENDSTOPS endstop reassignment
560
-   */
561
-  #if ENABLED(Z_DUAL_ENDSTOPS)
562
-    #define _XMIN_ 100
563
-    #define _YMIN_ 200
564
-    #define _ZMIN_ 300
565
-    #define _XMAX_ 101
566
-    #define _YMAX_ 201
567
-    #define _ZMAX_ 301
568
-    const bool Z2_MAX_ENDSTOP_INVERTING =
569
-      #if Z2_USE_ENDSTOP == _XMAX_
570
-        X_MAX_ENDSTOP_INVERTING
571
-        #define Z2_MAX_PIN X_MAX_PIN
572
-        #undef USE_XMAX_PLUG
573
-      #elif Z2_USE_ENDSTOP == _YMAX_
574
-        Y_MAX_ENDSTOP_INVERTING
575
-        #define Z2_MAX_PIN Y_MAX_PIN
576
-        #undef USE_YMAX_PLUG
577
-      #elif Z2_USE_ENDSTOP == _ZMAX_
578
-        Z_MAX_ENDSTOP_INVERTING
579
-        #define Z2_MAX_PIN Z_MAX_PIN
580
-        #undef USE_ZMAX_PLUG
581
-      #elif Z2_USE_ENDSTOP == _XMIN_
582
-        X_MIN_ENDSTOP_INVERTING
583
-        #define Z2_MAX_PIN X_MIN_PIN
584
-        #undef USE_XMIN_PLUG
585
-      #elif Z2_USE_ENDSTOP == _YMIN_
586
-        Y_MIN_ENDSTOP_INVERTING
587
-        #define Z2_MAX_PIN Y_MIN_PIN
588
-        #undef USE_YMIN_PLUG
589
-      #elif Z2_USE_ENDSTOP == _ZMIN_
590
-        Z_MIN_ENDSTOP_INVERTING
591
-        #define Z2_MAX_PIN Z_MIN_PIN
592
-        #undef USE_ZMIN_PLUG
593
-      #else
594
-        0
595
-      #endif
596
-    ;
597
-  #endif
598
-
599
-  /**
600
-   * Shorthand for pin tests, used wherever needed
601
-   */
602
-  #define HAS_TEMP_0 (PIN_EXISTS(TEMP_0) && TEMP_SENSOR_0 != 0 && TEMP_SENSOR_0 > -2)
603
-  #define HAS_TEMP_1 (PIN_EXISTS(TEMP_1) && TEMP_SENSOR_1 != 0 && TEMP_SENSOR_1 > -2)
604
-  #define HAS_TEMP_2 (PIN_EXISTS(TEMP_2) && TEMP_SENSOR_2 != 0 && TEMP_SENSOR_2 > -2)
605
-  #define HAS_TEMP_3 (PIN_EXISTS(TEMP_3) && TEMP_SENSOR_3 != 0 && TEMP_SENSOR_3 > -2)
606
-  #define HAS_TEMP_BED (PIN_EXISTS(TEMP_BED) && TEMP_SENSOR_BED != 0 && TEMP_SENSOR_BED > -2)
607
-  #define HAS_HEATER_0 (PIN_EXISTS(HEATER_0))
608
-  #define HAS_HEATER_1 (PIN_EXISTS(HEATER_1))
609
-  #define HAS_HEATER_2 (PIN_EXISTS(HEATER_2))
610
-  #define HAS_HEATER_3 (PIN_EXISTS(HEATER_3))
611
-  #define HAS_HEATER_BED (PIN_EXISTS(HEATER_BED))
612
-  #define HAS_AUTO_FAN_0 (PIN_EXISTS(EXTRUDER_0_AUTO_FAN))
613
-  #define HAS_AUTO_FAN_1 (PIN_EXISTS(EXTRUDER_1_AUTO_FAN))
614
-  #define HAS_AUTO_FAN_2 (PIN_EXISTS(EXTRUDER_2_AUTO_FAN))
615
-  #define HAS_AUTO_FAN_3 (PIN_EXISTS(EXTRUDER_3_AUTO_FAN))
616
-  #define HAS_AUTO_FAN (HAS_AUTO_FAN_0 || HAS_AUTO_FAN_1 || HAS_AUTO_FAN_2 || HAS_AUTO_FAN_3)
617
-  #define HAS_FAN0 (PIN_EXISTS(FAN))
618
-  #define HAS_FAN1 (PIN_EXISTS(FAN1) && CONTROLLERFAN_PIN != FAN1_PIN && EXTRUDER_0_AUTO_FAN_PIN != FAN1_PIN && EXTRUDER_1_AUTO_FAN_PIN != FAN1_PIN && EXTRUDER_2_AUTO_FAN_PIN != FAN1_PIN)
619
-  #define HAS_FAN2 (PIN_EXISTS(FAN2) && CONTROLLERFAN_PIN != FAN2_PIN && EXTRUDER_0_AUTO_FAN_PIN != FAN2_PIN && EXTRUDER_1_AUTO_FAN_PIN != FAN2_PIN && EXTRUDER_2_AUTO_FAN_PIN != FAN2_PIN)
620
-  #define HAS_CONTROLLERFAN (PIN_EXISTS(CONTROLLERFAN))
621
-  #define HAS_SERVOS (defined(NUM_SERVOS) && NUM_SERVOS > 0)
622
-  #define HAS_SERVO_0 (PIN_EXISTS(SERVO0))
623
-  #define HAS_SERVO_1 (PIN_EXISTS(SERVO1))
624
-  #define HAS_SERVO_2 (PIN_EXISTS(SERVO2))
625
-  #define HAS_SERVO_3 (PIN_EXISTS(SERVO3))
626
-  #define HAS_FILAMENT_WIDTH_SENSOR (PIN_EXISTS(FILWIDTH))
627
-  #define HAS_FILRUNOUT (PIN_EXISTS(FILRUNOUT))
628
-  #define HAS_HOME (PIN_EXISTS(HOME))
629
-  #define HAS_KILL (PIN_EXISTS(KILL))
630
-  #define HAS_SUICIDE (PIN_EXISTS(SUICIDE))
631
-  #define HAS_PHOTOGRAPH (PIN_EXISTS(PHOTOGRAPH))
632
-  #define HAS_X_MIN (PIN_EXISTS(X_MIN))
633
-  #define HAS_X_MAX (PIN_EXISTS(X_MAX))
634
-  #define HAS_Y_MIN (PIN_EXISTS(Y_MIN))
635
-  #define HAS_Y_MAX (PIN_EXISTS(Y_MAX))
636
-  #define HAS_Z_MIN (PIN_EXISTS(Z_MIN))
637
-  #define HAS_Z_MAX (PIN_EXISTS(Z_MAX))
638
-  #define HAS_Z2_MIN (PIN_EXISTS(Z2_MIN))
639
-  #define HAS_Z2_MAX (PIN_EXISTS(Z2_MAX))
640
-  #define HAS_Z_MIN_PROBE_PIN (PIN_EXISTS(Z_MIN_PROBE))
641
-  #define HAS_SOLENOID_1 (PIN_EXISTS(SOL1))
642
-  #define HAS_SOLENOID_2 (PIN_EXISTS(SOL2))
643
-  #define HAS_SOLENOID_3 (PIN_EXISTS(SOL3))
644
-  #define HAS_MICROSTEPS (PIN_EXISTS(X_MS1))
645
-  #define HAS_MICROSTEPS_E0 (PIN_EXISTS(E0_MS1))
646
-  #define HAS_MICROSTEPS_E1 (PIN_EXISTS(E1_MS1))
647
-  #define HAS_MICROSTEPS_E2 (PIN_EXISTS(E2_MS1))
648
-  #define HAS_STEPPER_RESET (PIN_EXISTS(STEPPER_RESET))
649
-  #define HAS_X_ENABLE (PIN_EXISTS(X_ENABLE))
650
-  #define HAS_X2_ENABLE (PIN_EXISTS(X2_ENABLE))
651
-  #define HAS_Y_ENABLE (PIN_EXISTS(Y_ENABLE))
652
-  #define HAS_Y2_ENABLE (PIN_EXISTS(Y2_ENABLE))
653
-  #define HAS_Z_ENABLE (PIN_EXISTS(Z_ENABLE))
654
-  #define HAS_Z2_ENABLE (PIN_EXISTS(Z2_ENABLE))
655
-  #define HAS_E0_ENABLE (PIN_EXISTS(E0_ENABLE))
656
-  #define HAS_E1_ENABLE (PIN_EXISTS(E1_ENABLE))
657
-  #define HAS_E2_ENABLE (PIN_EXISTS(E2_ENABLE))
658
-  #define HAS_E3_ENABLE (PIN_EXISTS(E3_ENABLE))
659
-  #define HAS_E4_ENABLE (PIN_EXISTS(E4_ENABLE))
660
-  #define HAS_X_DIR (PIN_EXISTS(X_DIR))
661
-  #define HAS_X2_DIR (PIN_EXISTS(X2_DIR))
662
-  #define HAS_Y_DIR (PIN_EXISTS(Y_DIR))
663
-  #define HAS_Y2_DIR (PIN_EXISTS(Y2_DIR))
664
-  #define HAS_Z_DIR (PIN_EXISTS(Z_DIR))
665
-  #define HAS_Z2_DIR (PIN_EXISTS(Z2_DIR))
666
-  #define HAS_E0_DIR (PIN_EXISTS(E0_DIR))
667
-  #define HAS_E1_DIR (PIN_EXISTS(E1_DIR))
668
-  #define HAS_E2_DIR (PIN_EXISTS(E2_DIR))
669
-  #define HAS_E3_DIR (PIN_EXISTS(E3_DIR))
670
-  #define HAS_E4_DIR (PIN_EXISTS(E4_DIR))
671
-  #define HAS_X_STEP (PIN_EXISTS(X_STEP))
672
-  #define HAS_X2_STEP (PIN_EXISTS(X2_STEP))
673
-  #define HAS_Y_STEP (PIN_EXISTS(Y_STEP))
674
-  #define HAS_Y2_STEP (PIN_EXISTS(Y2_STEP))
675
-  #define HAS_Z_STEP (PIN_EXISTS(Z_STEP))
676
-  #define HAS_Z2_STEP (PIN_EXISTS(Z2_STEP))
677
-  #define HAS_E0_STEP (PIN_EXISTS(E0_STEP))
678
-  #define HAS_E1_STEP (PIN_EXISTS(E1_STEP))
679
-  #define HAS_E2_STEP (PIN_EXISTS(E2_STEP))
680
-  #define HAS_E3_STEP (PIN_EXISTS(E3_STEP))
681
-  #define HAS_E4_STEP (PIN_EXISTS(E4_STEP))
682
-
683
-  #define HAS_MOTOR_CURRENT_PWM (PIN_EXISTS(MOTOR_CURRENT_PWM_XY) || PIN_EXISTS(MOTOR_CURRENT_PWM_Z) || PIN_EXISTS(MOTOR_CURRENT_PWM_E))
684
-
685
-  #define HAS_TEMP_HOTEND (HAS_TEMP_0 || ENABLED(HEATER_0_USES_MAX6675))
686
-
687
-  #define HAS_THERMALLY_PROTECTED_BED (HAS_TEMP_BED && HAS_HEATER_BED && ENABLED(THERMAL_PROTECTION_BED))
688
-
689
-  /**
690
-   * Helper Macros for heaters and extruder fan
691
-   */
692
-  #define WRITE_HEATER_0P(v) WRITE(HEATER_0_PIN, v)
693
-  #if EXTRUDERS > 1 || ENABLED(HEATERS_PARALLEL)
694
-    #define WRITE_HEATER_1(v) WRITE(HEATER_1_PIN, v)
695
-    #if EXTRUDERS > 2
696
-      #define WRITE_HEATER_2(v) WRITE(HEATER_2_PIN, v)
697
-      #if EXTRUDERS > 3
698
-        #define WRITE_HEATER_3(v) WRITE(HEATER_3_PIN, v)
699
-      #endif
700
-    #endif
701
-  #endif
702
-  #if ENABLED(HEATERS_PARALLEL)
703
-    #define WRITE_HEATER_0(v) { WRITE_HEATER_0P(v); WRITE_HEATER_1(v); }
704
-  #else
705
-    #define WRITE_HEATER_0(v) WRITE_HEATER_0P(v)
706
-  #endif
707
-  #if HAS_HEATER_BED
708
-    #define WRITE_HEATER_BED(v) WRITE(HEATER_BED_PIN, v)
709
-  #endif
710
-
711
-  /**
712
-   * Up to 3 PWM fans
713
-   */
714
-  #if HAS_FAN2
715
-    #define FAN_COUNT 3
716
-  #elif HAS_FAN1
717
-    #define FAN_COUNT 2
718
-  #elif HAS_FAN0
719
-    #define FAN_COUNT 1
720
-  #else
721
-    #define FAN_COUNT 0
722
-  #endif
723
-
724
-  #if HAS_FAN0
725
-    #define WRITE_FAN(v) WRITE(FAN_PIN, v)
726
-    #define WRITE_FAN0(v) WRITE_FAN(v)
727
-  #endif
728
-  #if HAS_FAN1
729
-    #define WRITE_FAN1(v) WRITE(FAN1_PIN, v)
730
-  #endif
731
-  #if HAS_FAN2
732
-    #define WRITE_FAN2(v) WRITE(FAN2_PIN, v)
733
-  #endif
734
-  #define WRITE_FAN_N(n, v) WRITE_FAN##n(v)
735
-
736
-  #define HAS_BUZZER (PIN_EXISTS(BEEPER) || defined(LCD_USE_I2C_BUZZER))
737
-
738
-  #if HAS_SERVOS
739
-    #ifndef X_ENDSTOP_SERVO_NR
740
-      #define X_ENDSTOP_SERVO_NR -1
741
-    #endif
742
-    #ifndef Y_ENDSTOP_SERVO_NR
743
-      #define Y_ENDSTOP_SERVO_NR -1
744
-    #endif
745
-    #ifndef Z_ENDSTOP_SERVO_NR
746
-      #define Z_ENDSTOP_SERVO_NR -1
747
-    #endif
748
-    #if X_ENDSTOP_SERVO_NR >= 0 || Y_ENDSTOP_SERVO_NR >= 0 || HAS_Z_ENDSTOP_SERVO
749
-      #define HAS_SERVO_ENDSTOPS true
750
-      #define SERVO_ENDSTOP_IDS { X_ENDSTOP_SERVO_NR, Y_ENDSTOP_SERVO_NR, Z_ENDSTOP_SERVO_NR }
751
-    #endif
752
-  #endif
753
-
754
-  #define PROBE_SELECTED (ENABLED(FIX_MOUNTED_PROBE) || ENABLED(MECHANICAL_PROBE) || ENABLED(Z_PROBE_ALLEN_KEY) || HAS_Z_ENDSTOP_SERVO || ENABLED(Z_PROBE_SLED))
755
-
756
-  #define PROBE_PIN_CONFIGURED (HAS_Z_MIN_PROBE_PIN || (HAS_Z_MIN && ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN)))
757
-
758
-  #define HAS_BED_PROBE (PROBE_SELECTED && PROBE_PIN_CONFIGURED)
759
-
760
-  /**
761
-   * Delta radius/rod trimmers
762
-   */
763
-  #if ENABLED(DELTA)
764
-    #ifndef DELTA_RADIUS_TRIM_TOWER_1
765
-      #define DELTA_RADIUS_TRIM_TOWER_1 0.0
766
-    #endif
767
-    #ifndef DELTA_RADIUS_TRIM_TOWER_2
768
-      #define DELTA_RADIUS_TRIM_TOWER_2 0.0
769
-    #endif
770
-    #ifndef DELTA_RADIUS_TRIM_TOWER_3
771
-      #define DELTA_RADIUS_TRIM_TOWER_3 0.0
772
-    #endif
773
-    #ifndef DELTA_DIAGONAL_ROD_TRIM_TOWER_1
774
-      #define DELTA_DIAGONAL_ROD_TRIM_TOWER_1 0.0
775
-    #endif
776
-    #ifndef DELTA_DIAGONAL_ROD_TRIM_TOWER_2
777
-      #define DELTA_DIAGONAL_ROD_TRIM_TOWER_2 0.0
778
-    #endif
779
-    #ifndef DELTA_DIAGONAL_ROD_TRIM_TOWER_3
780
-      #define DELTA_DIAGONAL_ROD_TRIM_TOWER_3 0.0
781
-    #endif
782
-  #endif
783
-
784
-#endif //CONFIGURATION_LCD
785
-#endif //CONDITIONALS_H
27
+#error "Old configurations? Please delete all #include lines from Configuration.h and Configuration_adv.h."

+ 319
- 0
Marlin/Conditionals_LCD.h Parādīt failu

@@ -0,0 +1,319 @@
1
+/**
2
+ * Marlin 3D Printer Firmware
3
+ * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
4
+ *
5
+ * Based on Sprinter and grbl.
6
+ * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
7
+ *
8
+ * This program is free software: you can redistribute it and/or modify
9
+ * it under the terms of the GNU General Public License as published by
10
+ * the Free Software Foundation, either version 3 of the License, or
11
+ * (at your option) any later version.
12
+ *
13
+ * This program is distributed in the hope that it will be useful,
14
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
+ * GNU General Public License for more details.
17
+ *
18
+ * You should have received a copy of the GNU General Public License
19
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
+ *
21
+ */
22
+
23
+/**
24
+ * Conditionals_LCD.h
25
+ * LCD Defines that depend on configuration but are not editable.
26
+ */
27
+
28
+#ifndef CONDITIONALS_LCD_H // Get the LCD defines which are needed first
29
+#define CONDITIONALS_LCD_H
30
+
31
+  #define LCD_HAS_DIRECTIONAL_BUTTONS (BUTTON_EXISTS(UP) || BUTTON_EXISTS(DWN) || BUTTON_EXISTS(LFT) || BUTTON_EXISTS(RT))
32
+
33
+  #if ENABLED(CARTESIO_UI)
34
+    #define DOGLCD
35
+    #define ULTIPANEL
36
+    #define NEWPANEL
37
+    #define DEFAULT_LCD_CONTRAST 90
38
+    #define LCD_CONTRAST_MIN 60
39
+    #define LCD_CONTRAST_MAX 140
40
+  #endif
41
+
42
+  #if ENABLED(MAKRPANEL) || ENABLED(MINIPANEL)
43
+    #define DOGLCD
44
+    #define ULTIPANEL
45
+    #define NEWPANEL
46
+    #define DEFAULT_LCD_CONTRAST 17
47
+  #endif
48
+
49
+  #if ENABLED(miniVIKI) || ENABLED(VIKI2) || ENABLED(ELB_FULL_GRAPHIC_CONTROLLER)
50
+    #define ULTRA_LCD  //general LCD support, also 16x2
51
+    #define DOGLCD  // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)
52
+    #define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
53
+
54
+    #if ENABLED(miniVIKI)
55
+      #define LCD_CONTRAST_MIN  75
56
+      #define LCD_CONTRAST_MAX 115
57
+      #define DEFAULT_LCD_CONTRAST 95
58
+    #elif ENABLED(VIKI2)
59
+      #define DEFAULT_LCD_CONTRAST 40
60
+    #elif ENABLED(ELB_FULL_GRAPHIC_CONTROLLER)
61
+      #define LCD_CONTRAST_MIN  90
62
+      #define LCD_CONTRAST_MAX 130
63
+      #define DEFAULT_LCD_CONTRAST 110
64
+      #define U8GLIB_LM6059_AF
65
+      #define SD_DETECT_INVERTED
66
+    #endif
67
+
68
+    #ifndef ENCODER_PULSES_PER_STEP
69
+      #define ENCODER_PULSES_PER_STEP 4
70
+    #endif
71
+    #ifndef ENCODER_STEPS_PER_MENU_ITEM
72
+      #define ENCODER_STEPS_PER_MENU_ITEM 1
73
+    #endif
74
+  #endif
75
+
76
+  // Generic support for SSD1306 / SH1106 OLED based LCDs.
77
+  #if ENABLED(U8GLIB_SSD1306) || ENABLED(U8GLIB_SH1106)
78
+    #define ULTRA_LCD  //general LCD support, also 16x2
79
+    #define DOGLCD  // Support for I2C LCD 128x64 (Controller SSD1306 / SH1106 graphic Display Family)
80
+  #endif
81
+
82
+  #if ENABLED(PANEL_ONE) || ENABLED(U8GLIB_SH1106)
83
+    #define ULTIMAKERCONTROLLER
84
+  #endif
85
+
86
+  #if ENABLED(BQ_LCD_SMART_CONTROLLER)
87
+    #define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
88
+
89
+    #ifndef ENCODER_PULSES_PER_STEP
90
+      #define ENCODER_PULSES_PER_STEP 4
91
+    #endif
92
+    #ifndef ENCODER_STEPS_PER_MENU_ITEM
93
+      #define ENCODER_STEPS_PER_MENU_ITEM 1
94
+    #endif
95
+
96
+    #ifndef LONG_FILENAME_HOST_SUPPORT
97
+      #define LONG_FILENAME_HOST_SUPPORT
98
+    #endif
99
+  #endif
100
+
101
+  #if ENABLED(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
102
+    #define DOGLCD
103
+    #define U8GLIB_ST7920
104
+    #define REPRAP_DISCOUNT_SMART_CONTROLLER
105
+  #endif
106
+
107
+  #if ENABLED(ULTIMAKERCONTROLLER)              \
108
+   || ENABLED(REPRAP_DISCOUNT_SMART_CONTROLLER) \
109
+   || ENABLED(G3D_PANEL)                        \
110
+   || ENABLED(RIGIDBOT_PANEL)                   \
111
+   || ENABLED(REPRAPWORLD_KEYPAD)
112
+    #define ULTIPANEL
113
+    #define NEWPANEL
114
+  #endif
115
+
116
+  #if ENABLED(RA_CONTROL_PANEL)
117
+    #define LCD_I2C_TYPE_PCA8574
118
+    #define LCD_I2C_ADDRESS 0x27   // I2C Address of the port expander
119
+    #define ULTIPANEL
120
+    #define NEWPANEL
121
+  #endif
122
+
123
+  #if ENABLED(REPRAPWORLD_GRAPHICAL_LCD)
124
+    #define DOGLCD
125
+    #define U8GLIB_ST7920
126
+    #define ULTIPANEL
127
+    #define NEWPANEL
128
+  #endif
129
+
130
+  /**
131
+   * I2C PANELS
132
+   */
133
+
134
+  #if ENABLED(LCD_I2C_SAINSMART_YWROBOT)
135
+    // This uses the LiquidCrystal_I2C library ( https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home )
136
+    // Make sure it is placed in the Arduino libraries directory.
137
+    #define LCD_I2C_TYPE_PCF8575
138
+    #define LCD_I2C_ADDRESS 0x27   // I2C Address of the port expander
139
+    #define ULTIPANEL
140
+    #define NEWPANEL
141
+  #endif
142
+
143
+  // PANELOLU2 LCD with status LEDs, separate encoder and click inputs
144
+  #if ENABLED(LCD_I2C_PANELOLU2)
145
+    #define LCD_I2C_TYPE_MCP23017
146
+    #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
147
+    #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD
148
+
149
+    #ifndef ENCODER_PULSES_PER_STEP
150
+      #define ENCODER_PULSES_PER_STEP 4
151
+    #endif
152
+    #ifndef ENCODER_STEPS_PER_MENU_ITEM
153
+      #define ENCODER_STEPS_PER_MENU_ITEM 1
154
+    #endif
155
+
156
+    #define ULTIPANEL
157
+    #define NEWPANEL
158
+  #endif
159
+
160
+  // Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs
161
+  #if ENABLED(LCD_I2C_VIKI)
162
+    // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 )
163
+    // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory.
164
+    // Note: The pause/stop/resume LCD button pin should be connected to the Arduino
165
+    //       BTN_ENC pin (or set BTN_ENC to -1 if not used)
166
+    #define LCD_I2C_TYPE_MCP23017
167
+    #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
168
+    #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD (requires LiquidTWI2 v1.2.3 or later)
169
+    #define ULTIPANEL
170
+    #define NEWPANEL
171
+
172
+    #define ENCODER_FEEDRATE_DEADZONE 4
173
+
174
+    #ifndef ENCODER_PULSES_PER_STEP
175
+      #define ENCODER_PULSES_PER_STEP 1
176
+    #endif
177
+    #ifndef ENCODER_STEPS_PER_MENU_ITEM
178
+      #define ENCODER_STEPS_PER_MENU_ITEM 2
179
+    #endif
180
+  #endif
181
+
182
+  // Shift register panels
183
+  // ---------------------
184
+  // 2 wire Non-latching LCD SR from:
185
+  // https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
186
+
187
+  #if ENABLED(SAV_3DLCD)
188
+    #define SR_LCD_2W_NL    // Non latching 2 wire shift register
189
+    #define ULTIPANEL
190
+    #define NEWPANEL
191
+  #endif
192
+
193
+  #if ENABLED(DOGLCD) // Change number of lines to match the DOG graphic display
194
+    #ifndef LCD_WIDTH
195
+      #define LCD_WIDTH 22
196
+    #endif
197
+    #ifndef LCD_HEIGHT
198
+      #define LCD_HEIGHT 5
199
+    #endif
200
+  #endif
201
+
202
+  #if ENABLED(ULTIPANEL)
203
+    #define NEWPANEL  //enable this if you have a click-encoder panel
204
+    #define ULTRA_LCD
205
+    #ifndef LCD_WIDTH
206
+      #define LCD_WIDTH 20
207
+    #endif
208
+    #ifndef LCD_HEIGHT
209
+      #define LCD_HEIGHT 4
210
+    #endif
211
+  #else //no panel but just LCD
212
+    #if ENABLED(ULTRA_LCD)
213
+      #ifndef LCD_WIDTH
214
+        #define LCD_WIDTH 16
215
+      #endif
216
+      #ifndef LCD_HEIGHT
217
+        #define LCD_HEIGHT 2
218
+      #endif
219
+    #endif
220
+  #endif
221
+
222
+  #if ENABLED(DOGLCD)
223
+    /* Custom characters defined in font dogm_font_data_Marlin_symbols.h / Marlin_symbols.fon */
224
+    // \x00 intentionally skipped to avoid problems in strings
225
+    #define LCD_STR_REFRESH     "\x01"
226
+    #define LCD_STR_FOLDER      "\x02"
227
+    #define LCD_STR_ARROW_RIGHT "\x03"
228
+    #define LCD_STR_UPLEVEL     "\x04"
229
+    #define LCD_STR_CLOCK       "\x05"
230
+    #define LCD_STR_FEEDRATE    "\x06"
231
+    #define LCD_STR_BEDTEMP     "\x07"
232
+    #define LCD_STR_THERMOMETER "\x08"
233
+    #define LCD_STR_DEGREE      "\x09"
234
+
235
+    #define LCD_STR_SPECIAL_MAX '\x09'
236
+    // Maximum here is 0x1f because 0x20 is ' ' (space) and the normal charsets begin.
237
+    // Better stay below 0x10 because DISPLAY_CHARSET_HD44780_WESTERN begins here.
238
+  #else
239
+    /* Custom characters defined in the first 8 characters of the LCD */
240
+    #define LCD_STR_BEDTEMP     "\x00"  // Print only as a char. This will have 'unexpected' results when used in a string!
241
+    #define LCD_STR_DEGREE      "\x01"
242
+    #define LCD_STR_THERMOMETER "\x02"
243
+    #define LCD_STR_UPLEVEL     "\x03"
244
+    #define LCD_STR_REFRESH     "\x04"
245
+    #define LCD_STR_FOLDER      "\x05"
246
+    #define LCD_STR_FEEDRATE    "\x06"
247
+    #define LCD_STR_CLOCK       "\x07"
248
+    #define LCD_STR_ARROW_RIGHT ">"  /* from the default character set */
249
+  #endif
250
+
251
+  /**
252
+   * Default LCD contrast for dogm-like LCD displays
253
+   */
254
+  #if ENABLED(DOGLCD)
255
+
256
+    #define HAS_LCD_CONTRAST ( \
257
+        ENABLED(MAKRPANEL) \
258
+     || ENABLED(CARTESIO_UI) \
259
+     || ENABLED(VIKI2) \
260
+     || ENABLED(miniVIKI) \
261
+     || ENABLED(ELB_FULL_GRAPHIC_CONTROLLER) \
262
+    )
263
+
264
+    #if HAS_LCD_CONTRAST
265
+      #ifndef LCD_CONTRAST_MIN
266
+        #define LCD_CONTRAST_MIN 0
267
+      #endif
268
+      #ifndef LCD_CONTRAST_MAX
269
+        #define LCD_CONTRAST_MAX 63
270
+      #endif
271
+      #ifndef DEFAULT_LCD_CONTRAST
272
+        #define DEFAULT_LCD_CONTRAST 32
273
+      #endif
274
+    #endif
275
+  #endif
276
+
277
+  #ifndef BOOTSCREEN_TIMEOUT
278
+    #define BOOTSCREEN_TIMEOUT 2500
279
+  #endif
280
+
281
+  /**
282
+   * Extruders have some combination of stepper motors and hotends
283
+   * so we separate these concepts into the defines:
284
+   *
285
+   *  EXTRUDERS    - Number of Selectable Tools
286
+   *  HOTENDS      - Number of hotends, whether connected or separate
287
+   *  E_STEPPERS   - Number of actual E stepper motors
288
+   *  TOOL_E_INDEX - Index to use when getting/setting the tool state
289
+   *  
290
+   */
291
+  #if ENABLED(SINGLENOZZLE)             // One hotend, multi-extruder
292
+    #define HOTENDS      1
293
+    #define E_STEPPERS   EXTRUDERS
294
+    #define E_MANUAL     EXTRUDERS
295
+    #define TOOL_E_INDEX current_block->active_extruder
296
+    #undef TEMP_SENSOR_1_AS_REDUNDANT
297
+    #undef HOTEND_OFFSET_X
298
+    #undef HOTEND_OFFSET_Y
299
+  #elif ENABLED(SWITCHING_EXTRUDER)     // One E stepper, unified E axis, two hotends
300
+    #define HOTENDS      EXTRUDERS
301
+    #define E_STEPPERS   1
302
+    #define E_MANUAL     1
303
+    #define TOOL_E_INDEX 0
304
+    #ifndef HOTEND_OFFSET_Z
305
+      #define HOTEND_OFFSET_Z { 0 }
306
+    #endif
307
+  #elif ENABLED(MIXING_EXTRUDER)        // Multi-stepper, unified E axis, one hotend
308
+    #define HOTENDS      1
309
+    #define E_STEPPERS   MIXING_STEPPERS
310
+    #define E_MANUAL     1
311
+    #define TOOL_E_INDEX 0
312
+  #else                                 // One stepper, E axis, and hotend per tool
313
+    #define HOTENDS      EXTRUDERS
314
+    #define E_STEPPERS   EXTRUDERS
315
+    #define E_MANUAL     EXTRUDERS
316
+    #define TOOL_E_INDEX current_block->active_extruder
317
+  #endif
318
+
319
+#endif //CONDITIONALS_LCD_H

+ 663
- 0
Marlin/Conditionals_post.h Parādīt failu

@@ -0,0 +1,663 @@
1
+/**
2
+ * Marlin 3D Printer Firmware
3
+ * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
4
+ *
5
+ * Based on Sprinter and grbl.
6
+ * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
7
+ *
8
+ * This program is free software: you can redistribute it and/or modify
9
+ * it under the terms of the GNU General Public License as published by
10
+ * the Free Software Foundation, either version 3 of the License, or
11
+ * (at your option) any later version.
12
+ *
13
+ * This program is distributed in the hope that it will be useful,
14
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
+ * GNU General Public License for more details.
17
+ *
18
+ * You should have received a copy of the GNU General Public License
19
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
+ *
21
+ */
22
+
23
+/**
24
+ * Conditionals_post.h
25
+ * Defines that depend on configuration but are not editable.
26
+ */
27
+
28
+#ifndef CONDITIONALS_POST_H
29
+#define CONDITIONALS_POST_H
30
+
31
+  #if ENABLED(EMERGENCY_PARSER)
32
+    #define EMERGENCY_PARSER_CAPABILITIES " EMERGENCY_CODES:M108,M112,M410"
33
+  #else
34
+    #define EMERGENCY_PARSER_CAPABILITIES ""
35
+  #endif
36
+
37
+  /**
38
+   * Set ENDSTOPPULLUPS for unused endstop switches
39
+   */
40
+  #if ENABLED(ENDSTOPPULLUPS)
41
+    #if ENABLED(USE_XMAX_PLUG)
42
+      #define ENDSTOPPULLUP_XMAX
43
+    #endif
44
+    #if ENABLED(USE_YMAX_PLUG)
45
+      #define ENDSTOPPULLUP_YMAX
46
+    #endif
47
+    #if ENABLED(USE_ZMAX_PLUG)
48
+      #define ENDSTOPPULLUP_ZMAX
49
+    #endif
50
+    #if ENABLED(USE_XMIN_PLUG)
51
+      #define ENDSTOPPULLUP_XMIN
52
+    #endif
53
+    #if ENABLED(USE_YMIN_PLUG)
54
+      #define ENDSTOPPULLUP_YMIN
55
+    #endif
56
+    #if ENABLED(USE_ZMIN_PLUG)
57
+      #define ENDSTOPPULLUP_ZMIN
58
+    #endif
59
+    #if DISABLED(DISABLE_Z_MIN_PROBE_ENDSTOP)
60
+      #define ENDSTOPPULLUP_ZMIN_PROBE
61
+    #endif
62
+  #endif
63
+
64
+  /**
65
+   * Axis lengths
66
+   */
67
+  #define X_MAX_LENGTH (X_MAX_POS - (X_MIN_POS))
68
+  #define Y_MAX_LENGTH (Y_MAX_POS - (Y_MIN_POS))
69
+  #define Z_MAX_LENGTH (Z_MAX_POS - (Z_MIN_POS))
70
+
71
+  /**
72
+   * CoreXY and CoreXZ
73
+   */
74
+  #if ENABLED(COREXY)
75
+    #define CORE_AXIS_1 A_AXIS // XY from A + B
76
+    #define CORE_AXIS_2 B_AXIS
77
+    #define NORMAL_AXIS Z_AXIS
78
+  #elif ENABLED(COREXZ)
79
+    #define CORE_AXIS_1 A_AXIS // XZ from A + C
80
+    #define CORE_AXIS_2 C_AXIS
81
+    #define NORMAL_AXIS Y_AXIS
82
+  #elif ENABLED(COREYZ)
83
+    #define CORE_AXIS_1 B_AXIS // YZ from B + C
84
+    #define CORE_AXIS_2 C_AXIS
85
+    #define NORMAL_AXIS X_AXIS
86
+  #endif
87
+
88
+  /**
89
+   * SCARA
90
+   */
91
+  #if ENABLED(SCARA)
92
+    #undef SLOWDOWN
93
+    #define QUICK_HOME //SCARA needs Quickhome
94
+  #endif
95
+
96
+  /**
97
+   * Set the home position based on settings or manual overrides
98
+   */
99
+  #ifdef MANUAL_X_HOME_POS
100
+    #define X_HOME_POS MANUAL_X_HOME_POS
101
+  #elif ENABLED(BED_CENTER_AT_0_0)
102
+    #if ENABLED(DELTA)
103
+      #define X_HOME_POS 0
104
+    #else
105
+      #define X_HOME_POS ((X_MAX_LENGTH) * (X_HOME_DIR) * 0.5)
106
+    #endif
107
+  #else
108
+    #if ENABLED(DELTA)
109
+      #define X_HOME_POS ((X_MAX_LENGTH) * 0.5)
110
+    #else
111
+      #define X_HOME_POS (X_HOME_DIR < 0 ? X_MIN_POS : X_MAX_POS)
112
+    #endif
113
+  #endif
114
+
115
+  #ifdef MANUAL_Y_HOME_POS
116
+    #define Y_HOME_POS MANUAL_Y_HOME_POS
117
+  #elif ENABLED(BED_CENTER_AT_0_0)
118
+    #if ENABLED(DELTA)
119
+      #define Y_HOME_POS 0
120
+    #else
121
+      #define Y_HOME_POS ((Y_MAX_LENGTH) * (Y_HOME_DIR) * 0.5)
122
+    #endif
123
+  #else
124
+    #if ENABLED(DELTA)
125
+      #define Y_HOME_POS ((Y_MAX_LENGTH) * 0.5)
126
+    #else
127
+      #define Y_HOME_POS (Y_HOME_DIR < 0 ? Y_MIN_POS : Y_MAX_POS)
128
+    #endif
129
+  #endif
130
+
131
+  #ifdef MANUAL_Z_HOME_POS
132
+    #define Z_HOME_POS MANUAL_Z_HOME_POS
133
+  #else
134
+    #define Z_HOME_POS (Z_HOME_DIR < 0 ? Z_MIN_POS : Z_MAX_POS)
135
+  #endif
136
+
137
+  /**
138
+   * The BLTouch Probe emulates a servo probe
139
+   */
140
+  #if ENABLED(BLTOUCH)
141
+    #undef Z_ENDSTOP_SERVO_NR
142
+    #undef Z_SERVO_ANGLES
143
+    #define Z_ENDSTOP_SERVO_NR 0
144
+    #define Z_SERVO_ANGLES {10,90} // For BLTouch 10=deploy, 90=retract
145
+    #undef DEACTIVATE_SERVOS_AFTER_MOVE
146
+    #if ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN)
147
+      #undef Z_MIN_ENDSTOP_INVERTING
148
+      #define Z_MIN_ENDSTOP_INVERTING false
149
+    #endif
150
+  #endif
151
+
152
+  /**
153
+   * Auto Bed Leveling and Z Probe Repeatability Test
154
+   */
155
+  #define HAS_PROBING_PROCEDURE (ENABLED(AUTO_BED_LEVELING_FEATURE) || ENABLED(Z_MIN_PROBE_REPEATABILITY_TEST))
156
+
157
+  // Boundaries for probing based on set limits
158
+  #define MIN_PROBE_X (max(X_MIN_POS, X_MIN_POS + X_PROBE_OFFSET_FROM_EXTRUDER))
159
+  #define MAX_PROBE_X (min(X_MAX_POS, X_MAX_POS + X_PROBE_OFFSET_FROM_EXTRUDER))
160
+  #define MIN_PROBE_Y (max(Y_MIN_POS, Y_MIN_POS + Y_PROBE_OFFSET_FROM_EXTRUDER))
161
+  #define MAX_PROBE_Y (min(Y_MAX_POS, Y_MAX_POS + Y_PROBE_OFFSET_FROM_EXTRUDER))
162
+
163
+  #define HAS_Z_SERVO_ENDSTOP (defined(Z_ENDSTOP_SERVO_NR) && Z_ENDSTOP_SERVO_NR >= 0)
164
+
165
+  /**
166
+   * Z Sled Probe requires Z_SAFE_HOMING
167
+   */
168
+  #if ENABLED(Z_PROBE_SLED)
169
+    #define Z_SAFE_HOMING
170
+  #endif
171
+
172
+  /**
173
+   * DELTA should ignore Z_SAFE_HOMING
174
+   */
175
+  #if ENABLED(DELTA)
176
+    #undef Z_SAFE_HOMING
177
+  #endif
178
+
179
+  /**
180
+   * Safe Homing Options
181
+   */
182
+  #if ENABLED(Z_SAFE_HOMING)
183
+    #ifndef Z_SAFE_HOMING_X_POINT
184
+      #define Z_SAFE_HOMING_X_POINT ((X_MIN_POS + X_MAX_POS) / 2)
185
+    #endif
186
+    #ifndef Z_SAFE_HOMING_Y_POINT
187
+      #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2)
188
+    #endif
189
+  #endif
190
+
191
+  /**
192
+   * Host keep alive
193
+   */
194
+  #ifndef DEFAULT_KEEPALIVE_INTERVAL
195
+    #define DEFAULT_KEEPALIVE_INTERVAL 2
196
+  #endif
197
+
198
+  /**
199
+   * MAX_STEP_FREQUENCY differs for TOSHIBA
200
+   */
201
+  #if ENABLED(CONFIG_STEPPERS_TOSHIBA)
202
+    #define MAX_STEP_FREQUENCY 10000 // Max step frequency for Toshiba Stepper Controllers
203
+  #else
204
+    #define MAX_STEP_FREQUENCY 40000 // Max step frequency for Ultimaker (5000 pps / half step)
205
+  #endif
206
+
207
+  // MS1 MS2 Stepper Driver Microstepping mode table
208
+  #define MICROSTEP1 LOW,LOW
209
+  #define MICROSTEP2 HIGH,LOW
210
+  #define MICROSTEP4 LOW,HIGH
211
+  #define MICROSTEP8 HIGH,HIGH
212
+  #define MICROSTEP16 HIGH,HIGH
213
+
214
+  /**
215
+   * Advance calculated values
216
+   */
217
+  #if ENABLED(ADVANCE)
218
+    #define EXTRUSION_AREA (0.25 * (D_FILAMENT) * (D_FILAMENT) * M_PI)
219
+    #define STEPS_PER_CUBIC_MM_E (axis_steps_per_mm[E_AXIS] / (EXTRUSION_AREA))
220
+  #endif
221
+
222
+  #if ENABLED(ULTIPANEL) && DISABLED(ELB_FULL_GRAPHIC_CONTROLLER)
223
+    #undef SD_DETECT_INVERTED
224
+  #endif
225
+
226
+  /**
227
+   * Set defaults for missing (newer) options
228
+   */
229
+  #ifndef DISABLE_INACTIVE_X
230
+    #define DISABLE_INACTIVE_X DISABLE_X
231
+  #endif
232
+  #ifndef DISABLE_INACTIVE_Y
233
+    #define DISABLE_INACTIVE_Y DISABLE_Y
234
+  #endif
235
+  #ifndef DISABLE_INACTIVE_Z
236
+    #define DISABLE_INACTIVE_Z DISABLE_Z
237
+  #endif
238
+  #ifndef DISABLE_INACTIVE_E
239
+    #define DISABLE_INACTIVE_E DISABLE_E
240
+  #endif
241
+
242
+  // Power Signal Control Definitions
243
+  // By default use ATX definition
244
+  #ifndef POWER_SUPPLY
245
+    #define POWER_SUPPLY 1
246
+  #endif
247
+  #if (POWER_SUPPLY == 1)     // 1 = ATX
248
+    #define PS_ON_AWAKE  LOW
249
+    #define PS_ON_ASLEEP HIGH
250
+  #elif (POWER_SUPPLY == 2)   // 2 = X-Box 360 203W
251
+    #define PS_ON_AWAKE  HIGH
252
+    #define PS_ON_ASLEEP LOW
253
+  #endif
254
+  #define HAS_POWER_SWITCH (POWER_SUPPLY > 0 && PIN_EXISTS(PS_ON))
255
+
256
+  /**
257
+   * Temp Sensor defines
258
+   */
259
+  #if TEMP_SENSOR_0 == -3
260
+    #define HEATER_0_USES_MAX6675
261
+    #define MAX6675_IS_MAX31855
262
+  #elif TEMP_SENSOR_0 == -2
263
+    #define HEATER_0_USES_MAX6675
264
+  #elif TEMP_SENSOR_0 == -1
265
+    #define HEATER_0_USES_AD595
266
+  #elif TEMP_SENSOR_0 == 0
267
+    #undef HEATER_0_MINTEMP
268
+    #undef HEATER_0_MAXTEMP
269
+  #elif TEMP_SENSOR_0 > 0
270
+    #define THERMISTORHEATER_0 TEMP_SENSOR_0
271
+    #define HEATER_0_USES_THERMISTOR
272
+  #endif
273
+
274
+  #if TEMP_SENSOR_1 <= -2
275
+    #error "MAX6675 / MAX31855 Thermocouples not supported for TEMP_SENSOR_1"
276
+  #elif TEMP_SENSOR_1 == -1
277
+    #define HEATER_1_USES_AD595
278
+  #elif TEMP_SENSOR_1 == 0
279
+    #undef HEATER_1_MINTEMP
280
+    #undef HEATER_1_MAXTEMP
281
+  #elif TEMP_SENSOR_1 > 0
282
+    #define THERMISTORHEATER_1 TEMP_SENSOR_1
283
+    #define HEATER_1_USES_THERMISTOR
284
+  #endif
285
+
286
+  #if TEMP_SENSOR_2 <= -2
287
+    #error "MAX6675 / MAX31855 Thermocouples not supported for TEMP_SENSOR_2"
288
+  #elif TEMP_SENSOR_2 == -1
289
+    #define HEATER_2_USES_AD595
290
+  #elif TEMP_SENSOR_2 == 0
291
+    #undef HEATER_2_MINTEMP
292
+    #undef HEATER_2_MAXTEMP
293
+  #elif TEMP_SENSOR_2 > 0
294
+    #define THERMISTORHEATER_2 TEMP_SENSOR_2
295
+    #define HEATER_2_USES_THERMISTOR
296
+  #endif
297
+
298
+  #if TEMP_SENSOR_3 <= -2
299
+    #error "MAX6675 / MAX31855 Thermocouples not supported for TEMP_SENSOR_3"
300
+  #elif TEMP_SENSOR_3 == -1
301
+    #define HEATER_3_USES_AD595
302
+  #elif TEMP_SENSOR_3 == 0
303
+    #undef HEATER_3_MINTEMP
304
+    #undef HEATER_3_MAXTEMP
305
+  #elif TEMP_SENSOR_3 > 0
306
+    #define THERMISTORHEATER_3 TEMP_SENSOR_3
307
+    #define HEATER_3_USES_THERMISTOR
308
+  #endif
309
+
310
+  #if TEMP_SENSOR_BED <= -2
311
+    #error "MAX6675 / MAX31855 Thermocouples not supported for TEMP_SENSOR_BED"
312
+  #elif TEMP_SENSOR_BED == -1
313
+    #define BED_USES_AD595
314
+  #elif TEMP_SENSOR_BED == 0
315
+    #undef BED_MINTEMP
316
+    #undef BED_MAXTEMP
317
+  #elif TEMP_SENSOR_BED > 0
318
+    #define THERMISTORBED TEMP_SENSOR_BED
319
+    #define BED_USES_THERMISTOR
320
+  #endif
321
+
322
+  /**
323
+   * Flags for PID handling
324
+   */
325
+  #define HAS_PID_HEATING (ENABLED(PIDTEMP) || ENABLED(PIDTEMPBED))
326
+  #define HAS_PID_FOR_BOTH (ENABLED(PIDTEMP) && ENABLED(PIDTEMPBED))
327
+
328
+  /**
329
+   * Default hotend offsets, if not defined
330
+   */
331
+  #if HOTENDS > 1
332
+    #ifndef HOTEND_OFFSET_X
333
+      #define HOTEND_OFFSET_X { 0 } // X offsets for each extruder
334
+    #endif
335
+    #ifndef HOTEND_OFFSET_Y
336
+      #define HOTEND_OFFSET_Y { 0 } // Y offsets for each extruder
337
+    #endif
338
+    #if !defined(HOTEND_OFFSET_Z) && (ENABLED(DUAL_X_CARRIAGE) || ENABLED(SWITCHING_EXTRUDER))
339
+      #define HOTEND_OFFSET_Z { 0 }
340
+    #endif
341
+  #endif
342
+
343
+  /**
344
+   * ARRAY_BY_EXTRUDERS based on EXTRUDERS
345
+   */
346
+  #define ARRAY_BY_EXTRUDERS(args...) ARRAY_N(EXTRUDERS, args)
347
+  #define ARRAY_BY_EXTRUDERS1(v1) ARRAY_BY_EXTRUDERS(v1, v1, v1, v1, v1, v1)
348
+
349
+  /**
350
+   * ARRAY_BY_HOTENDS based on HOTENDS
351
+   */
352
+  #define ARRAY_BY_HOTENDS(args...) ARRAY_N(HOTENDS, args)
353
+  #define ARRAY_BY_HOTENDS1(v1) ARRAY_BY_HOTENDS(v1, v1, v1, v1, v1, v1)
354
+
355
+  /**
356
+   * Z_DUAL_ENDSTOPS endstop reassignment
357
+   */
358
+  #if ENABLED(Z_DUAL_ENDSTOPS)
359
+    #define _XMIN_ 100
360
+    #define _YMIN_ 200
361
+    #define _ZMIN_ 300
362
+    #define _XMAX_ 101
363
+    #define _YMAX_ 201
364
+    #define _ZMAX_ 301
365
+    #if Z2_USE_ENDSTOP == _XMAX_
366
+      #define Z2_MAX_ENDSTOP_INVERTING X_MAX_ENDSTOP_INVERTING
367
+      #define Z2_MAX_PIN X_MAX_PIN
368
+      #undef USE_XMAX_PLUG
369
+    #elif Z2_USE_ENDSTOP == _YMAX_
370
+      #define Z2_MAX_ENDSTOP_INVERTING Y_MAX_ENDSTOP_INVERTING
371
+      #define Z2_MAX_PIN Y_MAX_PIN
372
+      #undef USE_YMAX_PLUG
373
+    #elif Z2_USE_ENDSTOP == _ZMAX_
374
+      #define Z2_MAX_ENDSTOP_INVERTING Z_MAX_ENDSTOP_INVERTING
375
+      #define Z2_MAX_PIN Z_MAX_PIN
376
+      #undef USE_ZMAX_PLUG
377
+    #elif Z2_USE_ENDSTOP == _XMIN_
378
+      #define Z2_MAX_ENDSTOP_INVERTING X_MIN_ENDSTOP_INVERTING
379
+      #define Z2_MAX_PIN X_MIN_PIN
380
+      #undef USE_XMIN_PLUG
381
+    #elif Z2_USE_ENDSTOP == _YMIN_
382
+      #define Z2_MAX_ENDSTOP_INVERTING Y_MIN_ENDSTOP_INVERTING
383
+      #define Z2_MAX_PIN Y_MIN_PIN
384
+      #undef USE_YMIN_PLUG
385
+    #elif Z2_USE_ENDSTOP == _ZMIN_
386
+      #define Z2_MAX_ENDSTOP_INVERTING Z_MIN_ENDSTOP_INVERTING
387
+      #define Z2_MAX_PIN Z_MIN_PIN
388
+      #undef USE_ZMIN_PLUG
389
+    #else
390
+      #define Z2_MAX_ENDSTOP_INVERTING false
391
+    #endif
392
+  #endif
393
+
394
+  /**
395
+   * Shorthand for pin tests, used wherever needed
396
+   */
397
+  #define HAS_TEMP_0 (PIN_EXISTS(TEMP_0) && TEMP_SENSOR_0 != 0 && TEMP_SENSOR_0 > -2)
398
+  #define HAS_TEMP_1 (PIN_EXISTS(TEMP_1) && TEMP_SENSOR_1 != 0 && TEMP_SENSOR_1 > -2)
399
+  #define HAS_TEMP_2 (PIN_EXISTS(TEMP_2) && TEMP_SENSOR_2 != 0 && TEMP_SENSOR_2 > -2)
400
+  #define HAS_TEMP_3 (PIN_EXISTS(TEMP_3) && TEMP_SENSOR_3 != 0 && TEMP_SENSOR_3 > -2)
401
+  #define HAS_TEMP_BED (PIN_EXISTS(TEMP_BED) && TEMP_SENSOR_BED != 0 && TEMP_SENSOR_BED > -2)
402
+  #define HAS_HEATER_0 (PIN_EXISTS(HEATER_0))
403
+  #define HAS_HEATER_1 (PIN_EXISTS(HEATER_1))
404
+  #define HAS_HEATER_2 (PIN_EXISTS(HEATER_2))
405
+  #define HAS_HEATER_3 (PIN_EXISTS(HEATER_3))
406
+  #define HAS_HEATER_BED (PIN_EXISTS(HEATER_BED))
407
+  #define HAS_AUTO_FAN_0 (PIN_EXISTS(EXTRUDER_0_AUTO_FAN))
408
+  #define HAS_AUTO_FAN_1 (PIN_EXISTS(EXTRUDER_1_AUTO_FAN))
409
+  #define HAS_AUTO_FAN_2 (PIN_EXISTS(EXTRUDER_2_AUTO_FAN))
410
+  #define HAS_AUTO_FAN_3 (PIN_EXISTS(EXTRUDER_3_AUTO_FAN))
411
+  #define HAS_AUTO_FAN (HAS_AUTO_FAN_0 || HAS_AUTO_FAN_1 || HAS_AUTO_FAN_2 || HAS_AUTO_FAN_3)
412
+  #define HAS_FAN0 (PIN_EXISTS(FAN))
413
+  #define HAS_FAN1 (PIN_EXISTS(FAN1) && CONTROLLERFAN_PIN != FAN1_PIN && EXTRUDER_0_AUTO_FAN_PIN != FAN1_PIN && EXTRUDER_1_AUTO_FAN_PIN != FAN1_PIN && EXTRUDER_2_AUTO_FAN_PIN != FAN1_PIN)
414
+  #define HAS_FAN2 (PIN_EXISTS(FAN2) && CONTROLLERFAN_PIN != FAN2_PIN && EXTRUDER_0_AUTO_FAN_PIN != FAN2_PIN && EXTRUDER_1_AUTO_FAN_PIN != FAN2_PIN && EXTRUDER_2_AUTO_FAN_PIN != FAN2_PIN)
415
+  #define HAS_CONTROLLERFAN (PIN_EXISTS(CONTROLLERFAN))
416
+  #define HAS_SERVOS (defined(NUM_SERVOS) && NUM_SERVOS > 0)
417
+  #define HAS_SERVO_0 (PIN_EXISTS(SERVO0))
418
+  #define HAS_SERVO_1 (PIN_EXISTS(SERVO1))
419
+  #define HAS_SERVO_2 (PIN_EXISTS(SERVO2))
420
+  #define HAS_SERVO_3 (PIN_EXISTS(SERVO3))
421
+  #define HAS_FILAMENT_WIDTH_SENSOR (PIN_EXISTS(FILWIDTH))
422
+  #define HAS_FIL_RUNOUT (PIN_EXISTS(FIL_RUNOUT))
423
+  #define HAS_HOME (PIN_EXISTS(HOME))
424
+  #define HAS_KILL (PIN_EXISTS(KILL))
425
+  #define HAS_SUICIDE (PIN_EXISTS(SUICIDE))
426
+  #define HAS_PHOTOGRAPH (PIN_EXISTS(PHOTOGRAPH))
427
+  #define HAS_X_MIN (PIN_EXISTS(X_MIN))
428
+  #define HAS_X_MAX (PIN_EXISTS(X_MAX))
429
+  #define HAS_Y_MIN (PIN_EXISTS(Y_MIN))
430
+  #define HAS_Y_MAX (PIN_EXISTS(Y_MAX))
431
+  #define HAS_Z_MIN (PIN_EXISTS(Z_MIN))
432
+  #define HAS_Z_MAX (PIN_EXISTS(Z_MAX))
433
+  #define HAS_Z2_MIN (PIN_EXISTS(Z2_MIN))
434
+  #define HAS_Z2_MAX (PIN_EXISTS(Z2_MAX))
435
+  #define HAS_Z_MIN_PROBE_PIN (PIN_EXISTS(Z_MIN_PROBE))
436
+  #define HAS_SOLENOID_1 (PIN_EXISTS(SOL1))
437
+  #define HAS_SOLENOID_2 (PIN_EXISTS(SOL2))
438
+  #define HAS_SOLENOID_3 (PIN_EXISTS(SOL3))
439
+  #define HAS_MICROSTEPS (PIN_EXISTS(X_MS1))
440
+  #define HAS_MICROSTEPS_E0 (PIN_EXISTS(E0_MS1))
441
+  #define HAS_MICROSTEPS_E1 (PIN_EXISTS(E1_MS1))
442
+  #define HAS_MICROSTEPS_E2 (PIN_EXISTS(E2_MS1))
443
+  #define HAS_STEPPER_RESET (PIN_EXISTS(STEPPER_RESET))
444
+  #define HAS_X_ENABLE (PIN_EXISTS(X_ENABLE))
445
+  #define HAS_X2_ENABLE (PIN_EXISTS(X2_ENABLE))
446
+  #define HAS_Y_ENABLE (PIN_EXISTS(Y_ENABLE))
447
+  #define HAS_Y2_ENABLE (PIN_EXISTS(Y2_ENABLE))
448
+  #define HAS_Z_ENABLE (PIN_EXISTS(Z_ENABLE))
449
+  #define HAS_Z2_ENABLE (PIN_EXISTS(Z2_ENABLE))
450
+  #define HAS_E0_ENABLE (PIN_EXISTS(E0_ENABLE))
451
+  #define HAS_E1_ENABLE (PIN_EXISTS(E1_ENABLE))
452
+  #define HAS_E2_ENABLE (PIN_EXISTS(E2_ENABLE))
453
+  #define HAS_E3_ENABLE (PIN_EXISTS(E3_ENABLE))
454
+  #define HAS_E4_ENABLE (PIN_EXISTS(E4_ENABLE))
455
+  #define HAS_X_DIR (PIN_EXISTS(X_DIR))
456
+  #define HAS_X2_DIR (PIN_EXISTS(X2_DIR))
457
+  #define HAS_Y_DIR (PIN_EXISTS(Y_DIR))
458
+  #define HAS_Y2_DIR (PIN_EXISTS(Y2_DIR))
459
+  #define HAS_Z_DIR (PIN_EXISTS(Z_DIR))
460
+  #define HAS_Z2_DIR (PIN_EXISTS(Z2_DIR))
461
+  #define HAS_E0_DIR (PIN_EXISTS(E0_DIR))
462
+  #define HAS_E1_DIR (PIN_EXISTS(E1_DIR))
463
+  #define HAS_E2_DIR (PIN_EXISTS(E2_DIR))
464
+  #define HAS_E3_DIR (PIN_EXISTS(E3_DIR))
465
+  #define HAS_E4_DIR (PIN_EXISTS(E4_DIR))
466
+  #define HAS_X_STEP (PIN_EXISTS(X_STEP))
467
+  #define HAS_X2_STEP (PIN_EXISTS(X2_STEP))
468
+  #define HAS_Y_STEP (PIN_EXISTS(Y_STEP))
469
+  #define HAS_Y2_STEP (PIN_EXISTS(Y2_STEP))
470
+  #define HAS_Z_STEP (PIN_EXISTS(Z_STEP))
471
+  #define HAS_Z2_STEP (PIN_EXISTS(Z2_STEP))
472
+  #define HAS_E0_STEP (PIN_EXISTS(E0_STEP))
473
+  #define HAS_E1_STEP (PIN_EXISTS(E1_STEP))
474
+  #define HAS_E2_STEP (PIN_EXISTS(E2_STEP))
475
+  #define HAS_E3_STEP (PIN_EXISTS(E3_STEP))
476
+  #define HAS_E4_STEP (PIN_EXISTS(E4_STEP))
477
+  #define HAS_DIGIPOTSS (PIN_EXISTS(DIGIPOTSS))
478
+  #define HAS_BUZZER (PIN_EXISTS(BEEPER) || ENABLED(LCD_USE_I2C_BUZZER))
479
+
480
+  #define HAS_MOTOR_CURRENT_PWM (PIN_EXISTS(MOTOR_CURRENT_PWM_XY) || PIN_EXISTS(MOTOR_CURRENT_PWM_Z) || PIN_EXISTS(MOTOR_CURRENT_PWM_E))
481
+
482
+  #define HAS_TEMP_HOTEND (HAS_TEMP_0 || ENABLED(HEATER_0_USES_MAX6675))
483
+
484
+  #define HAS_THERMALLY_PROTECTED_BED (HAS_TEMP_BED && HAS_HEATER_BED && ENABLED(THERMAL_PROTECTION_BED))
485
+
486
+  /**
487
+   * This value is used by M109 when trying to calculate a ballpark safe margin
488
+   * to prevent wait-forever situation.
489
+   */
490
+  #ifndef EXTRUDE_MINTEMP
491
+   #define EXTRUDE_MINTEMP 170
492
+  #endif
493
+
494
+  /**
495
+   * Helper Macros for heaters and extruder fan
496
+   */
497
+  #define WRITE_HEATER_0P(v) WRITE(HEATER_0_PIN, v)
498
+  #if HOTENDS > 1 || ENABLED(HEATERS_PARALLEL)
499
+    #define WRITE_HEATER_1(v) WRITE(HEATER_1_PIN, v)
500
+    #if HOTENDS > 2
501
+      #define WRITE_HEATER_2(v) WRITE(HEATER_2_PIN, v)
502
+      #if HOTENDS > 3
503
+        #define WRITE_HEATER_3(v) WRITE(HEATER_3_PIN, v)
504
+      #endif
505
+    #endif
506
+  #endif
507
+  #if ENABLED(HEATERS_PARALLEL)
508
+    #define WRITE_HEATER_0(v) { WRITE_HEATER_0P(v); WRITE_HEATER_1(v); }
509
+  #else
510
+    #define WRITE_HEATER_0(v) WRITE_HEATER_0P(v)
511
+  #endif
512
+  #if HAS_HEATER_BED
513
+    #define WRITE_HEATER_BED(v) WRITE(HEATER_BED_PIN, v)
514
+  #endif
515
+
516
+  /**
517
+   * Up to 3 PWM fans
518
+   */
519
+  #if HAS_FAN2
520
+    #define FAN_COUNT 3
521
+  #elif HAS_FAN1
522
+    #define FAN_COUNT 2
523
+  #elif HAS_FAN0
524
+    #define FAN_COUNT 1
525
+  #else
526
+    #define FAN_COUNT 0
527
+  #endif
528
+
529
+  #if HAS_FAN0
530
+    #define WRITE_FAN(v) WRITE(FAN_PIN, v)
531
+    #define WRITE_FAN0(v) WRITE_FAN(v)
532
+  #endif
533
+  #if HAS_FAN1
534
+    #define WRITE_FAN1(v) WRITE(FAN1_PIN, v)
535
+  #endif
536
+  #if HAS_FAN2
537
+    #define WRITE_FAN2(v) WRITE(FAN2_PIN, v)
538
+  #endif
539
+  #define WRITE_FAN_N(n, v) WRITE_FAN##n(v)
540
+
541
+  /**
542
+   * Servos and probes
543
+   */
544
+
545
+  #if HAS_SERVOS
546
+    #ifndef Z_ENDSTOP_SERVO_NR
547
+      #define Z_ENDSTOP_SERVO_NR -1
548
+    #endif
549
+  #endif
550
+
551
+  #define PROBE_SELECTED (ENABLED(FIX_MOUNTED_PROBE) || ENABLED(Z_PROBE_ALLEN_KEY) || HAS_Z_SERVO_ENDSTOP || ENABLED(Z_PROBE_SLED))
552
+
553
+  #define PROBE_PIN_CONFIGURED (HAS_Z_MIN_PROBE_PIN || (HAS_Z_MIN && ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN)))
554
+
555
+  #define HAS_BED_PROBE (PROBE_SELECTED && PROBE_PIN_CONFIGURED)
556
+
557
+  #if ENABLED(Z_PROBE_ALLEN_KEY)
558
+    #define PROBE_IS_TRIGGERED_WHEN_STOWED_TEST
559
+  #endif
560
+
561
+  /**
562
+   * Bed Probe dependencies
563
+   */
564
+  #if HAS_BED_PROBE
565
+    #ifndef Z_PROBE_OFFSET_RANGE_MIN
566
+      #define Z_PROBE_OFFSET_RANGE_MIN -20
567
+    #endif
568
+    #ifndef Z_PROBE_OFFSET_RANGE_MAX
569
+      #define Z_PROBE_OFFSET_RANGE_MAX 20
570
+    #endif
571
+    #ifndef XY_PROBE_SPEED
572
+      #ifdef HOMING_FEEDRATE_XY
573
+        #define XY_PROBE_SPEED HOMING_FEEDRATE_XY
574
+      #else
575
+        #define XY_PROBE_SPEED 4000
576
+      #endif
577
+    #endif
578
+    #if Z_PROBE_TRAVEL_HEIGHT > Z_PROBE_DEPLOY_HEIGHT
579
+      #define _Z_PROBE_DEPLOY_HEIGHT Z_PROBE_TRAVEL_HEIGHT
580
+    #else
581
+      #define _Z_PROBE_DEPLOY_HEIGHT Z_PROBE_DEPLOY_HEIGHT
582
+    #endif
583
+  #else
584
+    #undef X_PROBE_OFFSET_FROM_EXTRUDER
585
+    #undef Y_PROBE_OFFSET_FROM_EXTRUDER
586
+    #undef Z_PROBE_OFFSET_FROM_EXTRUDER
587
+    #define X_PROBE_OFFSET_FROM_EXTRUDER 0
588
+    #define Y_PROBE_OFFSET_FROM_EXTRUDER 0
589
+    #define Z_PROBE_OFFSET_FROM_EXTRUDER 0
590
+  #endif
591
+
592
+  /**
593
+   * Delta radius/rod trimmers
594
+   */
595
+  #if ENABLED(DELTA)
596
+    #ifndef DELTA_RADIUS_TRIM_TOWER_1
597
+      #define DELTA_RADIUS_TRIM_TOWER_1 0.0
598
+    #endif
599
+    #ifndef DELTA_RADIUS_TRIM_TOWER_2
600
+      #define DELTA_RADIUS_TRIM_TOWER_2 0.0
601
+    #endif
602
+    #ifndef DELTA_RADIUS_TRIM_TOWER_3
603
+      #define DELTA_RADIUS_TRIM_TOWER_3 0.0
604
+    #endif
605
+    #ifndef DELTA_DIAGONAL_ROD_TRIM_TOWER_1
606
+      #define DELTA_DIAGONAL_ROD_TRIM_TOWER_1 0.0
607
+    #endif
608
+    #ifndef DELTA_DIAGONAL_ROD_TRIM_TOWER_2
609
+      #define DELTA_DIAGONAL_ROD_TRIM_TOWER_2 0.0
610
+    #endif
611
+    #ifndef DELTA_DIAGONAL_ROD_TRIM_TOWER_3
612
+      #define DELTA_DIAGONAL_ROD_TRIM_TOWER_3 0.0
613
+    #endif
614
+    #if ENABLED(AUTO_BED_LEVELING_GRID)
615
+      #define DELTA_BED_LEVELING_GRID
616
+    #endif
617
+  #endif
618
+
619
+  /**
620
+   * When not using other bed leveling...
621
+   */
622
+  #if ENABLED(AUTO_BED_LEVELING_FEATURE) && DISABLED(AUTO_BED_LEVELING_GRID) && DISABLED(DELTA_BED_LEVELING_GRID)
623
+    #define AUTO_BED_LEVELING_3POINT
624
+  #endif
625
+
626
+  /**
627
+   * Buzzer/Speaker
628
+   */
629
+  #if ENABLED(LCD_USE_I2C_BUZZER)
630
+    #ifndef LCD_FEEDBACK_FREQUENCY_HZ
631
+      #define LCD_FEEDBACK_FREQUENCY_HZ 1000
632
+    #endif
633
+    #ifndef LCD_FEEDBACK_FREQUENCY_DURATION_MS
634
+      #define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100
635
+    #endif
636
+  #elif PIN_EXISTS(BEEPER)
637
+    #ifndef LCD_FEEDBACK_FREQUENCY_HZ
638
+      #define LCD_FEEDBACK_FREQUENCY_HZ 5000
639
+    #endif
640
+    #ifndef LCD_FEEDBACK_FREQUENCY_DURATION_MS
641
+      #define LCD_FEEDBACK_FREQUENCY_DURATION_MS 2
642
+    #endif
643
+  #else
644
+    #ifndef LCD_FEEDBACK_FREQUENCY_DURATION_MS
645
+      #define LCD_FEEDBACK_FREQUENCY_DURATION_MS 2
646
+    #endif
647
+  #endif
648
+
649
+  /**
650
+   * Z_HOMING_HEIGHT / Z_PROBE_TRAVEL_HEIGHT
651
+   */
652
+  #ifndef Z_HOMING_HEIGHT
653
+    #ifndef Z_PROBE_TRAVEL_HEIGHT
654
+      #define Z_HOMING_HEIGHT 0
655
+    #else
656
+      #define Z_HOMING_HEIGHT Z_PROBE_TRAVEL_HEIGHT
657
+    #endif
658
+  #endif
659
+  #ifndef Z_PROBE_TRAVEL_HEIGHT
660
+    #define Z_PROBE_TRAVEL_HEIGHT Z_HOMING_HEIGHT
661
+  #endif
662
+
663
+#endif // CONDITIONALS_POST_H

+ 289
- 146
Marlin/Configuration.h Parādīt failu

@@ -38,8 +38,18 @@
38 38
 #ifndef CONFIGURATION_H
39 39
 #define CONFIGURATION_H
40 40
 
41
-#include "boards.h"
42
-#include "macros.h"
41
+/**
42
+ *
43
+ *  ***********************************
44
+ *  **  ATTENTION TO ALL DEVELOPERS  **
45
+ *  ***********************************
46
+ *
47
+ * You must increment this version number for every significant change such as,
48
+ * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option.
49
+ *
50
+ * Note: Update also Version.h !
51
+ */
52
+#define CONFIGURATION_H_VERSION 010100
43 53
 
44 54
 //===========================================================================
45 55
 //============================= Getting Started =============================
@@ -73,20 +83,26 @@
73 83
 
74 84
 // @section info
75 85
 
76
-#if ENABLED(USE_AUTOMATIC_VERSIONING)
77
-  #include "_Version.h"
78
-#else
79
-  #include "Version.h"
80
-#endif
81
-
82 86
 // User-specified version info of this build to display in [Pronterface, etc] terminal window during
83 87
 // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
84 88
 // build by the user have been successfully uploaded into firmware.
85 89
 #define STRING_CONFIG_H_AUTHOR "(xythobuz, FabMin)" // Who made the changes.
86 90
 #define SHOW_BOOTSCREEN
87 91
 #define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during bootup in line 1
88
-#define STRING_SPLASH_LINE2 STRING_DISTRIBUTION_DATE // will be shown during bootup in line 2
92
+#define STRING_SPLASH_LINE2 WEBSITE_URL         // will be shown during bootup in line 2
89 93
 
94
+//
95
+// *** VENDORS PLEASE READ *****************************************************
96
+//
97
+// Marlin now allow you to have a vendor boot image to be displayed on machine
98
+// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your
99
+// custom boot image and them the default Marlin boot image is shown.
100
+//
101
+// We suggest for you to take advantage of this new feature and keep the Marlin
102
+// boot image unmodified. For an example have a look at the bq Hephestos 2
103
+// example configuration folder.
104
+//
105
+//#define SHOW_CUSTOM_BOOTSCREEN
90 106
 // @section machine
91 107
 
92 108
 // SERIAL_PORT selects which serial port should be used for communication with the host.
@@ -123,17 +139,40 @@
123 139
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
124 140
 //#define SINGLENOZZLE
125 141
 
142
+// A dual extruder that uses a single stepper motor
143
+// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z
144
+//#define SWITCHING_EXTRUDER
145
+#if ENABLED(SWITCHING_EXTRUDER)
146
+  #define SWITCHING_EXTRUDER_SERVO_NR 0
147
+  #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1
148
+  //#define HOTEND_OFFSET_Z {0.0, 0.0}
149
+#endif
150
+
151
+/**
152
+ * "Mixing Extruder"
153
+ *   - Adds a new code, M165, to set the current mix factors.
154
+ *   - Extends the stepping routines to move multiple steppers in proportion to the mix.
155
+ *   - Optional support for Repetier Host M163, M164, and virtual extruder.
156
+ *   - This implementation supports only a single extruder.
157
+ *   - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
158
+ */
159
+//#define MIXING_EXTRUDER
160
+#if ENABLED(MIXING_EXTRUDER)
161
+  #define MIXING_STEPPERS 2        // Number of steppers in your mixing extruder
162
+  #define MIXING_VIRTUAL_TOOLS 16  // Use the Virtual Tool method with M163 and M164
163
+  //#define DIRECT_MIXING_IN_G1    // Allow ABCDHI mix factors in G1 movement commands
164
+#endif
165
+
126 166
 // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
127 167
 // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
128 168
 // For the other hotends it is their distance from the extruder 0 hotend.
129
-//#define EXTRUDER_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
130
-//#define EXTRUDER_OFFSET_Y {0.0, 5.00}  // (in mm) for each extruder, offset of the hotend on the Y axis
169
+//#define HOTEND_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
170
+//#define HOTEND_OFFSET_Y {0.0, 5.00}  // (in mm) for each extruder, offset of the hotend on the Y axis
131 171
 
132 172
 //// The following define selects which power supply you have. Please choose the one that matches your setup
133 173
 // 1 = ATX
134 174
 // 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC)
135 175
 // :{1:'ATX',2:'X-Box 360'}
136
-
137 176
 #define POWER_SUPPLY 1
138 177
 
139 178
 // Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it.
@@ -168,6 +207,7 @@
168 207
 // 13 is 100k Hisens 3950  1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE"
169 208
 // 20 is the PT100 circuit found in the Ultimainboard V2.x
170 209
 // 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950
210
+// 66 is 4.7M High Temperature thermistor from Dyze Design
171 211
 // 70 is the 100K thermistor found in the bq Hephestos 2
172 212
 //
173 213
 //    1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k
@@ -184,7 +224,7 @@
184 224
 //     Use it for Testing or Development purposes. NEVER for production machine.
185 225
 //#define DUMMY_THERMISTOR_998_VALUE 25
186 226
 //#define DUMMY_THERMISTOR_999_VALUE 100
187
-// :{ '0': "Not used", '4': "10k !! do not use for a hotend. Bad resolution at high temp. !!", '1': "100k / 4.7k - EPCOS", '51': "100k / 1k - EPCOS", '6': "100k / 4.7k EPCOS - Not as accurate as Table 1", '5': "100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '7': "100k / 4.7k Honeywell 135-104LAG-J01", '71': "100k / 4.7k Honeywell 135-104LAF-J01", '8': "100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT", '9': "100k / 4.7k GE Sensing AL03006-58.2K-97-G1", '10': "100k / 4.7k RS 198-961", '11': "100k / 4.7k beta 3950 1%", '12': "100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)", '13': "100k Hisens 3950  1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'", '60': "100k Maker's Tool Works Kapton Bed Thermistor beta=3950", '55': "100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '2': "200k / 4.7k - ATC Semitec 204GT-2", '52': "200k / 1k - ATC Semitec 204GT-2", '-3': "Thermocouple + MAX31855 (only for sensor 0)", '-2': "Thermocouple + MAX6675 (only for sensor 0)", '-1': "Thermocouple + AD595", '3': "Mendel-parts / 4.7k", '1047': "Pt1000 / 4.7k", '1010': "Pt1000 / 1k (non standard)", '20': "PT100 (Ultimainboard V2.x)", '147': "Pt100 / 4.7k", '110': "Pt100 / 1k (non-standard)", '998': "Dummy 1", '999': "Dummy 2" }
227
+// :{ '0': "Not used",'1':"100k / 4.7k - EPCOS",'2':"200k / 4.7k - ATC Semitec 204GT-2",'3':"Mendel-parts / 4.7k",'4':"10k !! do not use for a hotend. Bad resolution at high temp. !!",'5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'6':"100k / 4.7k EPCOS - Not as accurate as Table 1",'7':"100k / 4.7k Honeywell 135-104LAG-J01",'8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT",'9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1",'10':"100k / 4.7k RS 198-961",'11':"100k / 4.7k beta 3950 1%",'12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)",'13':"100k Hisens 3950  1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'",'20':"PT100 (Ultimainboard V2.x)",'51':"100k / 1k - EPCOS",'52':"200k / 1k - ATC Semitec 204GT-2",'55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950",'66':"Dyze Design 4.7M High Temperature thermistor",'70':"the 100K thermistor found in the bq Hephestos 2",'71':"100k / 4.7k Honeywell 135-104LAF-J01",'147':"Pt100 / 4.7k",'1047':"Pt1000 / 4.7k",'110':"Pt100 / 1k (non-standard)",'1010':"Pt1000 / 1k (non standard)",'-3':"Thermocouple + MAX31855 (only for sensor 0)",'-2':"Thermocouple + MAX6675 (only for sensor 0)",'-1':"Thermocouple + AD595",'998':"Dummy 1",'999':"Dummy 2" }
188 228
 #define TEMP_SENSOR_0 3
189 229
 #define TEMP_SENSOR_1 0
190 230
 #define TEMP_SENSOR_2 0
@@ -223,10 +263,6 @@
223 263
 #define HEATER_3_MAXTEMP 230
224 264
 #define BED_MAXTEMP 100
225 265
 
226
-// If you want the M105 heater power reported in watts, define the BED_WATTS, and (shared for all extruders) EXTRUDER_WATTS
227
-//#define EXTRUDER_WATTS (12.0*12.0/6.7) // P=U^2/R
228
-//#define BED_WATTS (12.0*12.0/1.1)      // P=U^2/R
229
-
230 266
 //===========================================================================
231 267
 //============================= PID Settings ================================
232 268
 //===========================================================================
@@ -241,8 +277,8 @@
241 277
   //#define PID_DEBUG // Sends debug data to the serial port.
242 278
   //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX
243 279
   //#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
244
-  //#define PID_PARAMS_PER_EXTRUDER // Uses separate PID parameters for each extruder (useful for mismatched extruders)
245
-                                    // Set/get with gcode: M301 E[extruder number, 0-2]
280
+  //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders)
281
+                                  // Set/get with gcode: M301 E[extruder number, 0-2]
246 282
   #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature
247 283
                                   // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max.
248 284
   #define PID_INTEGRAL_DRIVE_MAX PID_MAX  //limit for the integral term
@@ -384,18 +420,79 @@
384 420
 #endif
385 421
 
386 422
 // Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup).
387
-const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
388
-const bool Y_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
389
-const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
390
-const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
391
-const bool Y_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
392
-const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
393
-const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
423
+#define X_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
424
+#define Y_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
425
+#define Z_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
426
+#define X_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
427
+#define Y_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
428
+#define Z_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
429
+#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
394 430
 
395 431
 //===========================================================================
396 432
 //============================= Z Probe Options =============================
397 433
 //===========================================================================
398 434
 
435
+//
436
+// Probe Type
437
+// Probes are sensors/switches that are activated / deactivated before/after use.
438
+//
439
+// Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc.
440
+// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below.
441
+//
442
+// Use M851 to set the Z probe vertical offset from the nozzle. Store with M500.
443
+//
444
+
445
+// A Fix-Mounted Probe either doesn't deploy or needs manual deployment.
446
+// For example an inductive probe, or a setup that uses the nozzle to probe.
447
+// An inductive probe must be deactivated to go below
448
+// its trigger-point if hardware endstops are active.
449
+//#define FIX_MOUNTED_PROBE
450
+
451
+// The BLTouch probe emulates a servo probe.
452
+//#define BLTOUCH
453
+
454
+// Z Servo Probe, such as an endstop switch on a rotating arm.
455
+//#define Z_ENDSTOP_SERVO_NR 0
456
+//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles
457
+
458
+// Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
459
+//#define Z_PROBE_SLED
460
+//#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.
461
+
462
+// Z Probe to nozzle (X,Y) offset, relative to (0, 0).
463
+// X and Y offsets must be integers.
464
+//
465
+// In the following example the X and Y offsets are both positive:
466
+// #define X_PROBE_OFFSET_FROM_EXTRUDER 10
467
+// #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
468
+//
469
+//    +-- BACK ---+
470
+//    |           |
471
+//  L |    (+) P  | R <-- probe (20,20)
472
+//  E |           | I
473
+//  F | (-) N (+) | G <-- nozzle (10,10)
474
+//  T |           | H
475
+//    |    (-)    | T
476
+//    |           |
477
+//    O-- FRONT --+
478
+//  (0,0)
479
+#define X_PROBE_OFFSET_FROM_EXTRUDER 10  // X offset: -left  +right  [of the nozzle]
480
+#define Y_PROBE_OFFSET_FROM_EXTRUDER 10  // Y offset: -front +behind [the nozzle]
481
+#define Z_PROBE_OFFSET_FROM_EXTRUDER 0   // Z offset: -below +above  [the nozzle]
482
+
483
+// X and Y axis travel speed (mm/m) between probes
484
+#define XY_PROBE_SPEED 8000
485
+// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
486
+#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
487
+// Speed for the "accurate" probe of each point
488
+#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
489
+// Use double touch for probing
490
+//#define PROBE_DOUBLE_TOUCH
491
+
492
+//
493
+// Allen Key Probe is defined in the Delta example configurations.
494
+//
495
+
399 496
 // Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z Probe and a Z-min-endstop on the same machine.
400 497
 // With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing.
401 498
 //
@@ -407,7 +504,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
407 504
 // To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN.
408 505
 //
409 506
 // For a servo-based Z probe, you must set up servo support below, including
410
-// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES.
507
+// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and Z_SERVO_ANGLES.
411 508
 //
412 509
 // - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin.
413 510
 // - Use 5V for powered (usu. inductive) sensors.
@@ -440,6 +537,21 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
440 537
 // If you're using the Z MIN endstop connector for your Z probe, this has no effect.
441 538
 //#define DISABLE_Z_MIN_PROBE_ENDSTOP
442 539
 
540
+// Enable Z Probe Repeatability test to see how accurate your probe is
541
+//#define Z_MIN_PROBE_REPEATABILITY_TEST
542
+
543
+//
544
+// Probe Raise options provide clearance for the probe to deploy, stow, and travel.
545
+//
546
+#define Z_PROBE_DEPLOY_HEIGHT 15 // Raise to make room for the probe to deploy / stow
547
+#define Z_PROBE_TRAVEL_HEIGHT 5  // Raise between probing points.
548
+
549
+//
550
+// For M851 give a range for adjusting the Z probe offset
551
+//
552
+#define Z_PROBE_OFFSET_RANGE_MIN -20
553
+#define Z_PROBE_OFFSET_RANGE_MAX 20
554
+
443 555
 // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
444 556
 // :{0:'Low',1:'High'}
445 557
 #define X_ENABLE_ON 0
@@ -476,8 +588,9 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
476 588
 #define INVERT_E3_DIR false
477 589
 
478 590
 // @section homing
479
-//#define MIN_Z_HEIGHT_FOR_HOMING 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
480
-                                    // Be sure you have this distance over your Z_MAX_POS in case.
591
+
592
+//#define Z_HOMING_HEIGHT 4  // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
593
+                             // Be sure you have this distance over your Z_MAX_POS in case.
481 594
 
482 595
 // ENDSTOP SETTINGS:
483 596
 // Sets direction of endstops when homing; 1=MAX, -1=MIN
@@ -507,7 +620,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
507 620
                                  // It is assumed that when logic high = filament available
508 621
                                  //                    when logic  low = filament ran out
509 622
 #if ENABLED(FILAMENT_RUNOUT_SENSOR)
510
-  const bool FIL_RUNOUT_INVERTING = true;  // Should be uncommented and true or false should assigned
623
+  const bool FIL_RUNOUT_INVERTING = false; // set to true to invert the logic of the sensor.
511 624
   #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined.
512 625
   #define FILAMENT_RUNOUT_SCRIPT "M600"
513 626
 #endif
@@ -519,10 +632,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
519 632
 #define MESH_BED_LEVELING    // Enable mesh bed leveling.
520 633
 
521 634
 #if ENABLED(MESH_BED_LEVELING)
522
-  #define MESH_MIN_X 10
523
-  #define MESH_MAX_X (X_MAX_POS - (MESH_MIN_X))
524
-  #define MESH_MIN_Y 10
525
-  #define MESH_MAX_Y (Y_MAX_POS - (MESH_MIN_Y))
635
+  #define MESH_INSET 10        // Mesh inset margin on print area
526 636
   #define MESH_NUM_X_POINTS 5  // Don't use more than 7 points per axis, implementation limited.
527 637
   #define MESH_NUM_Y_POINTS 5
528 638
   #define MESH_HOME_SEARCH_Z 1  // Z after Home, bed somewhere below but above 0.0.
@@ -544,8 +654,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
544 654
 // @section bedlevel
545 655
 
546 656
 //#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line)
657
+
658
+// Enable this feature to get detailed logging of G28, G29, M48, etc.
659
+// Logging is off by default. Enable this logging feature with 'M111 S32'.
660
+// NOTE: Requires a huge amount of PROGMEM.
547 661
 //#define DEBUG_LEVELING_FEATURE
548
-#define Z_MIN_PROBE_REPEATABILITY_TEST  // If not commented out, Z Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
549 662
 
550 663
 #if ENABLED(AUTO_BED_LEVELING_FEATURE)
551 664
 
@@ -588,58 +701,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
588 701
     #define ABL_PROBE_PT_3_X 170
589 702
     #define ABL_PROBE_PT_3_Y 20
590 703
 
591
-  #endif // AUTO_BED_LEVELING_GRID
592
-
593
-  // Z Probe to nozzle (X,Y) offset, relative to (0, 0).
594
-  // X and Y offsets must be integers.
595
-  //
596
-  // In the following example the X and Y offsets are both positive:
597
-  // #define X_PROBE_OFFSET_FROM_EXTRUDER 10
598
-  // #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
599
-  //
600
-  //    +-- BACK ---+
601
-  //    |           |
602
-  //  L |    (+) P  | R <-- probe (20,20)
603
-  //  E |           | I
604
-  //  F | (-) N (+) | G <-- nozzle (10,10)
605
-  //  T |           | H
606
-  //    |    (-)    | T
607
-  //    |           |
608
-  //    O-- FRONT --+
609
-  //  (0,0)
610
-  #define X_PROBE_OFFSET_FROM_EXTRUDER 10  // X offset: -left  +right  [of the nozzle]
611
-  #define Y_PROBE_OFFSET_FROM_EXTRUDER 10  // Y offset: -front +behind [the nozzle]
612
-  #define Z_PROBE_OFFSET_FROM_EXTRUDER 0   // Z offset: -below +above  [the nozzle]
613
-
614
-  #define XY_TRAVEL_SPEED 8000         // X and Y axis travel speed between probes, in mm/min.
615
-
616
-  #define Z_RAISE_BEFORE_PROBING 15   // How much the Z axis will be raised before traveling to the first probing point.
617
-  #define Z_RAISE_BETWEEN_PROBINGS 5  // How much the Z axis will be raised when traveling from between next probing points.
618
-  #define Z_RAISE_AFTER_PROBING 15    // How much the Z axis will be raised after the last probing point.
704
+  #endif // !AUTO_BED_LEVELING_GRID
619 705
 
620 706
   //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine.
621 707
                                                                              // Useful to retract a deployable Z probe.
622 708
 
623
-  // Probes are sensors/switches that need to be activated before they can be used
624
-  // and deactivated after their use.
625
-  // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE
626
-
627
-  // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER
628
-  // when the hardware endstops are active.
629
-  //#define FIX_MOUNTED_PROBE
630
-
631
-  // A Servo Probe can be defined in the servo section below.
632
-
633
-  // An Allen Key Probe is currently predefined only in the delta example configurations.
634
-
635
-  // Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
636
-  //#define Z_PROBE_SLED
637
-  //#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.
638
-
639
-  // A Mechanical Probe is any probe that either doesn't deploy or needs manual deployment
640
-  // For example any setup that uses the nozzle itself as a probe.
641
-  //#define MECHANICAL_PROBE
642
-
643 709
   // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing,
644 710
   // it is highly recommended you also enable Z_SAFE_HOMING below!
645 711
 
@@ -648,18 +714,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
648 714
 
649 715
 // @section homing
650 716
 
651
-// The position of the homing switches
652
-#define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used
653
-//#define BED_CENTER_AT_0_0  // If defined, the center of the bed is at (X=0, Y=0)
654
-
655
-// Manual homing switch locations:
656
-// For deltabots this means top and center of the Cartesian print volume.
657
-#if ENABLED(MANUAL_HOME_POSITIONS)
658
-  #define MANUAL_X_HOME_POS 0
659
-  #define MANUAL_Y_HOME_POS 80
660
-  #define MANUAL_Z_HOME_POS 0
661
-  //#define MANUAL_Z_HOME_POS 402 // For delta: Distance between nozzle and print surface after homing.
662
-#endif
717
+// The center of the bed is at (X=0, Y=0)
718
+//#define BED_CENTER_AT_0_0
719
+
720
+// Manually set the home position. Leave these undefined for automatic settings.
721
+// For DELTA this is the top-center of the Cartesian print volume.
722
+#define MANUAL_X_HOME_POS 0
723
+#define MANUAL_Y_HOME_POS 80
724
+#define MANUAL_Z_HOME_POS 0 // Distance between the nozzle to printbed after homing
663 725
 
664 726
 // Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
665 727
 //
@@ -667,7 +729,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
667 729
 //
668 730
 // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
669 731
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
670
-// - Position the Z probe in a defined XY point before Z Homing when homing all axes (G28).
732
+// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
671 733
 // - Prevent Z homing when the Z probe is outside bed area.
672 734
 //#define Z_SAFE_HOMING
673 735
 
@@ -676,14 +738,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
676 738
   #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2)    // Y point for Z homing when homing all axis (G28).
677 739
 #endif
678 740
 
741
+// Homing speeds (mm/m)
742
+#define HOMING_FEEDRATE_XY (10*60)
743
+#define HOMING_FEEDRATE_Z  (2*60)
679 744
 
680
-// @section movement
681
-
682
-/**
683
- * MOVEMENT SETTINGS
684
- */
685
-
686
-#define HOMING_FEEDRATE {10*60, 10*60, 2*60, 0}  // set the homing speeds (mm/min)
745
+//
746
+// MOVEMENT SETTINGS
747
+// @section motion
748
+//
687 749
 
688 750
 // default settings
689 751
 
@@ -705,18 +767,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
705 767
 //============================= Additional Features ===========================
706 768
 //=============================================================================
707 769
 
708
-// @section more
709
-
710
-// Custom M code points
711
-#define CUSTOM_M_CODES
712
-#if ENABLED(CUSTOM_M_CODES)
713
-  #if ENABLED(AUTO_BED_LEVELING_FEATURE)
714
-    #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851
715
-    #define Z_PROBE_OFFSET_RANGE_MIN -20
716
-    #define Z_PROBE_OFFSET_RANGE_MAX 20
717
-  #endif
718
-#endif
719
-
720 770
 // @section extras
721 771
 
722 772
 //
@@ -748,22 +798,107 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
748 798
 //
749 799
 //#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose
750 800
 
801
+//
802
+// G20/G21 Inch mode support
803
+//
804
+//#define INCH_MODE_SUPPORT
805
+
806
+//
807
+// M149 Set temperature units support
808
+//
809
+//#define TEMPERATURE_UNITS_SUPPORT
810
+
751 811
 // @section temperature
752 812
 
753 813
 // Preheat Constants
754
-#define PLA_PREHEAT_HOTEND_TEMP 190
755
-#define PLA_PREHEAT_HPB_TEMP 65
756
-#define PLA_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
814
+#define PREHEAT_1_TEMP_HOTEND 190
815
+#define PREHEAT_1_TEMP_BED 65
816
+#define PREHEAT_1_FAN_SPEED 255   // Insert Value between 0 and 255
817
+
818
+#define PREHEAT_2_TEMP_HOTEND 200
819
+#define PREHEAT_2_TEMP_BED    80
820
+#define PREHEAT_2_FAN_SPEED     255 // Value from 0 to 255
757 821
 
758
-#define ABS_PREHEAT_HOTEND_TEMP 200
759
-#define ABS_PREHEAT_HPB_TEMP 80
760
-#define ABS_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
822
+//
823
+// Nozzle Park -- EXPERIMENTAL
824
+//
825
+// When enabled allows the user to define a special XYZ position, inside the
826
+// machine's topology, to park the nozzle when idle or when receiving the G27
827
+// command.
828
+//
829
+// The "P" paramenter controls what is the action applied to the Z axis:
830
+//    P0: (Default) If current Z-pos is lower than Z-park then the nozzle will
831
+//        be raised to reach Z-park height.
832
+//
833
+//    P1: No matter the current Z-pos, the nozzle will be raised/lowered to
834
+//        reach Z-park height.
835
+//
836
+//    P2: The nozzle height will be raised by Z-park amount but never going over
837
+//        the machine's limit of Z_MAX_POS.
838
+//
839
+//#define NOZZLE_PARK_FEATURE
840
+
841
+#if ENABLED(NOZZLE_PARK_FEATURE)
842
+  // Specify a park position as { X, Y, Z }
843
+  #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 }
844
+#endif
845
+
846
+//
847
+// Clean Nozzle Feature -- EXPERIMENTAL
848
+//
849
+// When enabled allows the user to send G12 to start the nozzle cleaning
850
+// process, the G-Code accepts two parameters:
851
+//   "P" for pattern selection
852
+//   "S" for defining the number of strokes/repetitions
853
+//
854
+// Available list of patterns:
855
+//   P0: This is the default pattern, this process requires a sponge type
856
+//       material at a fixed bed location, the cleaning process is based on
857
+//       "strokes" i.e. back-and-forth movements between the starting and end
858
+//       points.
859
+//
860
+//   P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T"
861
+//       defines the number of zig-zag triangles to be done. "S" defines the
862
+//       number of strokes aka one back-and-forth movement. As an example
863
+//       sending "G12 P1 S1 T3" will execute:
864
+//
865
+//          --
866
+//         |  (X0, Y1) |     /\        /\        /\     | (X1, Y1)
867
+//         |           |    /  \      /  \      /  \    |
868
+//       A |           |   /    \    /    \    /    \   |
869
+//         |           |  /      \  /      \  /      \  |
870
+//         |  (X0, Y0) | /        \/        \/        \ | (X1, Y0)
871
+//          --         +--------------------------------+
872
+//                       |________|_________|_________|
873
+//                           T1        T2        T3
874
+//
875
+// Caveats: End point Z should use the same value as Start point Z.
876
+//
877
+// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments
878
+// may change to add new functionality like different wipe patterns.
879
+//
880
+//#define NOZZLE_CLEAN_FEATURE
881
+
882
+#if ENABLED(NOZZLE_CLEAN_FEATURE)
883
+  // Number of pattern repetitions
884
+  #define NOZZLE_CLEAN_STROKES  12
885
+
886
+  // Specify positions as { X, Y, Z }
887
+  #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)}
888
+  #define NOZZLE_CLEAN_END_POINT   {100, 60, (Z_MIN_POS + 1)}
889
+
890
+  // Moves the nozzle to the initial position
891
+  #define NOZZLE_CLEAN_GOBACK
892
+#endif
761 893
 
762 894
 //
763 895
 // Print job timer
764 896
 //
765 897
 // Enable this option to automatically start and stop the
766
-// print job timer when M104 and M109 commands are received.
898
+// print job timer when M104/M109/M190 commands are received.
899
+// M104 (extruder without wait) - high temp = none, low temp = stop timer
900
+// M109 (extruder with wait) - high temp = start timer, low temp = stop timer
901
+// M190 (bed with wait) - high temp = start timer, low temp = none
767 902
 //
768 903
 // In all cases the timer can be started and stopped using
769 904
 // the following commands:
@@ -796,8 +931,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
796 931
 //
797 932
 // Here you may choose the language used by Marlin on the LCD menus, the following
798 933
 // list of languages are available:
799
-//    en, pl, fr, de, es, ru, bg, it, pt, pt_utf8, pt-br, pt-br_utf8,
800
-//    fi, an, nl, ca, eu, kana, kana_utf8, cn, cz, test
934
+//    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
935
+//    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
936
+//
937
+// :{'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','test':'TEST'}
801 938
 //
802 939
 #define LCD_LANGUAGE en
803 940
 
@@ -945,6 +1082,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
945 1082
 //#define ULTIPANEL
946 1083
 
947 1084
 //
1085
+// Cartesio UI
1086
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1087
+//
1088
+//#define CARTESIO_UI
1089
+
1090
+//
948 1091
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
949 1092
 // http://reprap.org/wiki/PanelOne
950 1093
 //
@@ -957,6 +1100,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
957 1100
 //#define MAKRPANEL
958 1101
 
959 1102
 //
1103
+// ReprapWorld Graphical LCD
1104
+// https://reprapworld.com/?products_details&products_id/1218
1105
+//
1106
+//#define REPRAPWORLD_GRAPHICAL_LCD
1107
+
1108
+//
960 1109
 // Activate one of these if you have a Panucatt Devices
961 1110
 // Viki 2.0 or mini Viki with Graphic LCD
962 1111
 // http://panucatt.com
@@ -1006,7 +1155,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1006 1155
 // is pressed, a value of 10.0 means 10mm per click.
1007 1156
 //
1008 1157
 //#define REPRAPWORLD_KEYPAD
1009
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1158
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1010 1159
 
1011 1160
 //
1012 1161
 // RigidBot Panel V1.0
@@ -1067,6 +1216,15 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1067 1216
 //#define U8GLIB_SSD1306
1068 1217
 
1069 1218
 //
1219
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1220
+//
1221
+//#define SAV_3DGLCD
1222
+#if ENABLED(SAV_3DGLCD)
1223
+  //#define U8GLIB_SSD1306
1224
+  #define U8GLIB_SH1106
1225
+#endif
1226
+
1227
+//
1070 1228
 // CONTROLLER TYPE: Shift register panels
1071 1229
 //
1072 1230
 // 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH
@@ -1094,7 +1252,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1094 1252
 // at zero value, there are 128 effective control positions.
1095 1253
 #define SOFT_PWM_SCALE 0
1096 1254
 
1097
-// Temperature status LEDs that display the hotend and bet temperature.
1255
+// Temperature status LEDs that display the hotend and bed temperature.
1098 1256
 // If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
1099 1257
 // Otherwise the RED led is on. There is 1C hysteresis.
1100 1258
 //#define TEMP_STAT_LEDS
@@ -1126,28 +1284,16 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1126 1284
 //
1127 1285
 //#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
1128 1286
 
1129
-// Servo Endstops
1130
-//
1131
-// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes.
1132
-// Use M851 to set the Z probe vertical offset from the nozzle. Store that setting with M500.
1133
-//
1134
-//#define X_ENDSTOP_SERVO_NR 1
1135
-//#define Y_ENDSTOP_SERVO_NR 2
1136
-//#define Z_ENDSTOP_SERVO_NR 0
1137
-//#define SERVO_ENDSTOP_ANGLES {{0,0}, {0,0}, {70,0}} // X,Y,Z Axis Extend and Retract angles
1287
+// Delay (in microseconds) before the next move will start, to give the servo time to reach its target angle.
1288
+// 300ms is a good value but you can try less delay.
1289
+// If the servo can't reach the requested position, increase it.
1290
+#define SERVO_DELAY 300
1138 1291
 
1139 1292
 // Servo deactivation
1140 1293
 //
1141 1294
 // With this option servos are powered only during movement, then turned off to prevent jitter.
1142 1295
 //#define DEACTIVATE_SERVOS_AFTER_MOVE
1143 1296
 
1144
-#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE)
1145
-  // Delay (in microseconds) before turning the servo off. This depends on the servo speed.
1146
-  // 300ms is a good value but you can try less delay.
1147
-  // If the servo can't reach the requested position, increase it.
1148
-  #define SERVO_DEACTIVATION_DELAY 300
1149
-#endif
1150
-
1151 1297
 /**********************************************************************\
1152 1298
  * Support for a filament diameter sensor
1153 1299
  * Also allows adjustment of diameter at print time (vs  at slicing)
@@ -1178,7 +1324,4 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1178 1324
   //#define FILAMENT_LCD_DISPLAY
1179 1325
 #endif
1180 1326
 
1181
-#include "Configuration_adv.h"
1182
-#include "thermistortables.h"
1183
-
1184
-#endif //CONFIGURATION_H
1327
+#endif // CONFIGURATION_H

+ 148
- 47
Marlin/Configuration_adv.h Parādīt failu

@@ -33,7 +33,18 @@
33 33
 #ifndef CONFIGURATION_ADV_H
34 34
 #define CONFIGURATION_ADV_H
35 35
 
36
-#include "Conditionals.h"
36
+/**
37
+ *
38
+ *  ***********************************
39
+ *  **  ATTENTION TO ALL DEVELOPERS  **
40
+ *  ***********************************
41
+ *
42
+ * You must increment this version number for every significant change such as,
43
+ * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option.
44
+ *
45
+ * Note: Update also Version.h !
46
+ */
47
+#define CONFIGURATION_ADV_H_VERSION 010100
37 48
 
38 49
 // @section temperature
39 50
 
@@ -102,8 +113,8 @@
102 113
 #if ENABLED(PIDTEMP)
103 114
   // this adds an experimental additional term to the heating power, proportional to the extrusion speed.
104 115
   // if Kc is chosen well, the additional required power due to increased melting should be compensated.
105
-  #define PID_ADD_EXTRUSION_RATE
106
-  #if ENABLED(PID_ADD_EXTRUSION_RATE)
116
+  //#define PID_EXTRUSION_SCALING
117
+  #if ENABLED(PID_EXTRUSION_SCALING)
107 118
     #define DEFAULT_Kc (100) //heating power=Kc*(e_speed)
108 119
     #define LPQ_MAX_LEN 50
109 120
   #endif
@@ -128,15 +139,42 @@
128 139
 //The M105 command return, besides traditional information, the ADC value read from temperature sensors.
129 140
 //#define SHOW_TEMP_ADC_VALUES
130 141
 
142
+/**
143
+ * High Temperature Thermistor Support
144
+ *
145
+ * Thermistors able to support high temperature tend to have a hard time getting
146
+ * good readings at room and lower temperatures. This means HEATER_X_RAW_LO_TEMP
147
+ * will probably be caught when the heating element first turns on during the
148
+ * preheating process, which will trigger a min_temp_error as a safety measure
149
+ * and force stop everything.
150
+ * To circumvent this limitation, we allow for a preheat time (during which,
151
+ * min_temp_error won't be triggered) and add a min_temp buffer to handle
152
+ * aberrant readings.
153
+ *
154
+ * If you want to enable this feature for your hotend thermistor(s)
155
+ * uncomment and set values > 0 in the constants below
156
+ */
157
+
158
+// The number of consecutive low temperature errors that can occur
159
+// before a min_temp_error is triggered. (Shouldn't be more than 10.)
160
+//#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 0
161
+
162
+// The number of milliseconds a hotend will preheat before starting to check
163
+// the temperature. This value should NOT be set to the time it takes the
164
+// hot end to reach the target temperature, but the time it takes to reach
165
+// the minimum temperature your thermistor can read. The lower the better/safer.
166
+// This shouldn't need to be more than 30 seconds (30000)
167
+//#define MILLISECONDS_PREHEAT_TIME 0
168
+
131 169
 // @section extruder
132 170
 
133 171
 //  extruder run-out prevention.
134 172
 //if the machine is idle, and the temperature over MINTEMP, every couple of SECONDS some filament is extruded
135 173
 //#define EXTRUDER_RUNOUT_PREVENT
136 174
 #define EXTRUDER_RUNOUT_MINTEMP 190
137
-#define EXTRUDER_RUNOUT_SECONDS 30.
138
-#define EXTRUDER_RUNOUT_ESTEPS 14. //mm filament
139
-#define EXTRUDER_RUNOUT_SPEED 1500.  //extrusion speed
175
+#define EXTRUDER_RUNOUT_SECONDS 30
176
+#define EXTRUDER_RUNOUT_ESTEPS 14   // mm filament
177
+#define EXTRUDER_RUNOUT_SPEED 1500  // extrusion speed
140 178
 #define EXTRUDER_RUNOUT_EXTRUDE 100
141 179
 
142 180
 // @section temperature
@@ -177,24 +215,42 @@
177 215
 #define EXTRUDER_AUTO_FAN_TEMPERATURE 50
178 216
 #define EXTRUDER_AUTO_FAN_SPEED   255  // == full speed
179 217
 
180
-
181 218
 //===========================================================================
182
-//=============================Mechanical Settings===========================
219
+//============================ Mechanical Settings ==========================
183 220
 //===========================================================================
184 221
 
185 222
 // @section homing
186 223
 
187
-#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing
224
+// If you want endstops to stay on (by default) even when not homing
225
+// enable this option. Override at any time with M120, M121.
226
+//#define ENDSTOPS_ALWAYS_ON_DEFAULT
188 227
 
189 228
 // @section extras
190 229
 
191 230
 //#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
192 231
 
232
+// Dual X Steppers
233
+// Uncomment this option to drive two X axis motors.
234
+// The next unused E driver will be assigned to the second X stepper.
235
+//#define X_DUAL_STEPPER_DRIVERS
236
+#if ENABLED(X_DUAL_STEPPER_DRIVERS)
237
+  // Set true if the two X motors need to rotate in opposite directions
238
+  #define INVERT_X2_VS_X_DIR true
239
+#endif
240
+
241
+
242
+// Dual Y Steppers
243
+// Uncomment this option to drive two Y axis motors.
244
+// The next unused E driver will be assigned to the second Y stepper.
245
+//#define Y_DUAL_STEPPER_DRIVERS
246
+#if ENABLED(Y_DUAL_STEPPER_DRIVERS)
247
+  // Set true if the two Y motors need to rotate in opposite directions
248
+  #define INVERT_Y2_VS_Y_DIR true
249
+#endif
250
+
193 251
 // A single Z stepper driver is usually used to drive 2 stepper motors.
194
-// Uncomment this define to utilize a separate stepper driver for each Z axis motor.
195
-// Only a few motherboards support this, like RAMPS, which have dual extruder support (the 2nd, often unused, extruder driver is used
196
-// to control the 2nd Z axis stepper motor). The pins are currently only defined for a RAMPS motherboards.
197
-// On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder.
252
+// Uncomment this option to use a separate stepper driver for each Z axis motor.
253
+// The next unused E driver will be assigned to the second Z stepper.
198 254
 //#define Z_DUAL_STEPPER_DRIVERS
199 255
 
200 256
 #if ENABLED(Z_DUAL_STEPPER_DRIVERS)
@@ -216,14 +272,6 @@
216 272
 
217 273
 #endif // Z_DUAL_STEPPER_DRIVERS
218 274
 
219
-// Same again but for Y Axis.
220
-//#define Y_DUAL_STEPPER_DRIVERS
221
-
222
-#if ENABLED(Y_DUAL_STEPPER_DRIVERS)
223
-  // Define if the two Y drives need to rotate in opposite directions
224
-  #define INVERT_Y2_VS_Y_DIR true
225
-#endif
226
-
227 275
 // Enable this for dual x-carriage printers.
228 276
 // A dual x-carriage design has the advantage that the inactive extruder can be parked which
229 277
 // prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
@@ -237,7 +285,7 @@
237 285
   #define X2_MAX_POS 353    // set maximum to the distance between toolheads when both heads are homed
238 286
   #define X2_HOME_DIR 1     // the second X-carriage always homes to the maximum endstop position
239 287
   #define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position
240
-      // However: In this mode the EXTRUDER_OFFSET_X value for the second extruder provides a software
288
+      // However: In this mode the HOTEND_OFFSET_X value for the second extruder provides a software
241 289
       // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops
242 290
       // without modifying the firmware (through the "M218 T1 X???" command).
243 291
       // Remember: you should set the second extruder x-offset to 0 in your slicer.
@@ -279,7 +327,10 @@
279 327
 
280 328
 #define AXIS_RELATIVE_MODES {false, false, false, false}
281 329
 
282
-//By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
330
+// Allow duplication mode with a basic dual-nozzle extruder
331
+//#define DUAL_NOZZLE_DUPLICATION_MODE
332
+
333
+// By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
283 334
 #define INVERT_X_STEP_PIN false
284 335
 #define INVERT_Y_STEP_PIN false
285 336
 #define INVERT_Z_STEP_PIN false
@@ -351,6 +402,9 @@
351 402
 
352 403
 // @section lcd
353 404
 
405
+// Include a page of printer information in the LCD Main Menu
406
+//#define LCD_INFO_MENU
407
+
354 408
 #if ENABLED(SDSUPPORT)
355 409
 
356 410
   // Some RAMPS and other boards don't detect when an SD card is inserted. You can work
@@ -388,7 +442,6 @@
388 442
   // This option allows you to abort SD printing when any endstop is triggered.
389 443
   // This feature must be enabled with "M540 S1" or from the LCD menu.
390 444
   // To have any effect, endstops must be enabled during SD printing.
391
-  // With ENDSTOPS_ONLY_FOR_HOMING you must send "M120" to enable endstops.
392 445
   //#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED
393 446
 
394 447
 #endif // SDSUPPORT
@@ -404,9 +457,10 @@
404 457
   //#define USE_SMALL_INFOFONT
405 458
 #endif // DOGLCD
406 459
 
407
-// @section more
460
+// @section safety
408 461
 
409
-// The hardware watchdog should reset the microcontroller disabling all outputs, in case the firmware gets stuck and doesn't do temperature regulation.
462
+// The hardware watchdog should reset the microcontroller disabling all outputs,
463
+// in case the firmware gets stuck and doesn't do temperature regulation.
410 464
 #define USE_WATCHDOG
411 465
 
412 466
 #if ENABLED(USE_WATCHDOG)
@@ -445,6 +499,27 @@
445 499
   #define D_FILAMENT 2.85
446 500
 #endif
447 501
 
502
+// Implementation of a linear pressure control
503
+// Assumption: advance = k * (delta velocity)
504
+// K=0 means advance disabled. A good value for a gregs wade extruder will be around K=75
505
+//#define LIN_ADVANCE
506
+
507
+#if ENABLED(LIN_ADVANCE)
508
+  #define LIN_ADVANCE_K 75
509
+#endif
510
+
511
+// @section leveling
512
+
513
+// Default mesh area is an area with an inset margin on the print area.
514
+// Below are the macros that are used to define the borders for the mesh area,
515
+// made available here for specialized needs, ie dual extruder setup.
516
+#if ENABLED(MESH_BED_LEVELING)
517
+  #define MESH_MIN_X (X_MIN_POS + MESH_INSET)
518
+  #define MESH_MAX_X (X_MAX_POS - (MESH_INSET))
519
+  #define MESH_MIN_Y (Y_MIN_POS + MESH_INSET)
520
+  #define MESH_MAX_Y (Y_MAX_POS - (MESH_INSET))
521
+#endif
522
+
448 523
 // @section extras
449 524
 
450 525
 // Arc interpretation settings:
@@ -476,12 +551,27 @@ const unsigned int dropsegments = 5; //everything with less than this number of
476 551
   #define BLOCK_BUFFER_SIZE 16 // maximize block buffer
477 552
 #endif
478 553
 
479
-// @section more
554
+// @section serial
480 555
 
481
-//The ASCII buffer for receiving from the serial:
556
+// The ASCII buffer for serial input
482 557
 #define MAX_CMD_SIZE 96
483 558
 #define BUFSIZE 4
484 559
 
560
+// Transfer Buffer Size
561
+// To save 386 bytes of PROGMEM (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0.
562
+// To buffer a simple "ok" you need 4 bytes.
563
+// For ADVANCED_OK (M105) you need 32 bytes.
564
+// For debug-echo: 128 bytes for the optimal speed.
565
+// Other output doesn't need to be that speedy.
566
+// :[0,2,4,8,16,32,64,128,256]
567
+#define TX_BUFFER_SIZE 0
568
+
569
+// Enable an emergency-command parser to intercept certain commands as they
570
+// enter the serial receive buffer, so they cannot be blocked.
571
+// Currently handles M108, M112, M410
572
+// Does not work on boards using AT90USB (USBCON) processors!
573
+//#define EMERGENCY_PARSER
574
+
485 575
 // Bad Serial-connections can miss a received command by sending an 'ok'
486 576
 // Therefore some clients abort after 30 seconds in a timeout.
487 577
 // Some other clients start sending commands while receiving a 'wait'.
@@ -513,16 +603,30 @@ const unsigned int dropsegments = 5; //everything with less than this number of
513 603
 
514 604
 // Add support for experimental filament exchange support M600; requires display
515 605
 #if ENABLED(ULTIPANEL)
516
-  //#define FILAMENTCHANGEENABLE
517
-  #if ENABLED(FILAMENTCHANGEENABLE)
518
-    #define FILAMENTCHANGE_XPOS 3
519
-    #define FILAMENTCHANGE_YPOS 3
520
-    #define FILAMENTCHANGE_ZADD 10
521
-    #define FILAMENTCHANGE_FIRSTRETRACT -2
522
-    #define FILAMENTCHANGE_FINALRETRACT -100
523
-    #define AUTO_FILAMENT_CHANGE                //This extrude filament until you press the button on LCD
524
-    #define AUTO_FILAMENT_CHANGE_LENGTH 0.04    //Extrusion length on automatic extrusion loop
525
-    #define AUTO_FILAMENT_CHANGE_FEEDRATE 300   //Extrusion feedrate (mm/min) on automatic extrusion loop
606
+  // #define FILAMENT_CHANGE_FEATURE             // Enable filament exchange menu and M600 g-code (used for runout sensor too)
607
+  #if ENABLED(FILAMENT_CHANGE_FEATURE)
608
+    #define FILAMENT_CHANGE_X_POS 3             // X position of hotend
609
+    #define FILAMENT_CHANGE_Y_POS 3             // Y position of hotend
610
+    #define FILAMENT_CHANGE_Z_ADD 10            // Z addition of hotend (lift)
611
+    #define FILAMENT_CHANGE_XY_FEEDRATE 100     // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
612
+    #define FILAMENT_CHANGE_Z_FEEDRATE 5        // Z axis feedrate in mm/s (not used for delta printers)
613
+    #define FILAMENT_CHANGE_RETRACT_LENGTH 2    // Initial retract in mm
614
+                                                // It is a short retract used immediately after print interrupt before move to filament exchange position
615
+    #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
616
+    #define FILAMENT_CHANGE_UNLOAD_LENGTH 100   // Unload filament length from hotend in mm
617
+                                                // Longer length for bowden printers to unload filament from whole bowden tube,
618
+                                                // shorter lenght for printers without bowden to unload filament from extruder only,
619
+                                                // 0 to disable unloading for manual unloading
620
+    #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10  // Unload filament feedrate in mm/s - filament unloading can be fast
621
+    #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
622
+                                                // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
623
+                                                // Short or zero length for printers without bowden where loading is not used
624
+    #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
625
+    #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
626
+                                                // 0 to disable for manual extrusion
627
+                                                // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
628
+                                                // or until outcoming filament color is not clear for filament color change
629
+    #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
526 630
   #endif
527 631
 #endif
528 632
 
@@ -668,9 +772,9 @@ const unsigned int dropsegments = 5; //everything with less than this number of
668 772
  * devices on the bus.
669 773
  *
670 774
  * ; Example #1
671
- * ; This macro send the string "Marlin" to the slave device with address 0x63
775
+ * ; This macro send the string "Marlin" to the slave device with address 0x63 (99)
672 776
  * ; It uses multiple M155 commands with one B<base 10> arg
673
- * M155 A63  ; Target slave address
777
+ * M155 A99  ; Target slave address
674 778
  * M155 B77  ; M
675 779
  * M155 B97  ; a
676 780
  * M155 B114 ; r
@@ -680,19 +784,16 @@ const unsigned int dropsegments = 5; //everything with less than this number of
680 784
  * M155 S1   ; Send the current buffer
681 785
  *
682 786
  * ; Example #2
683
- * ; Request 6 bytes from slave device with address 0x63
684
- * M156 A63 B5
787
+ * ; Request 6 bytes from slave device with address 0x63 (99)
788
+ * M156 A99 B5
685 789
  *
686 790
  * ; Example #3
687 791
  * ; Example serial output of a M156 request
688
- * echo:i2c-reply: from:63 bytes:5 data:hello
792
+ * echo:i2c-reply: from:99 bytes:5 data:hello
689 793
  */
690 794
 
691 795
 // @section i2cbus
692 796
 
693 797
 //#define EXPERIMENTAL_I2CBUS
694 798
 
695
-#include "Conditionals.h"
696
-#include "SanityCheck.h"
697
-
698
-#endif //CONFIGURATION_ADV_H
799
+#endif // CONFIGURATION_ADV_H

+ 81
- 108
Marlin/M100_Free_Mem_Chk.cpp Parādīt failu

@@ -43,42 +43,23 @@
43 43
 #include "Marlin.h"
44 44
 
45 45
 #if ENABLED(M100_FREE_MEMORY_WATCHER)
46
-extern void* __brkval;
46
+extern char* __brkval;
47 47
 extern size_t  __heap_start, __heap_end, __flp;
48
-
49
-
50
-//
51
-// Declare all the functions we need from Marlin_Main.cpp to do the work!
52
-//
53
-
54
-float code_value();
55
-long code_value_long();
56
-bool code_seen(char);
57
-void serial_echopair_P(const char*, float);
58
-void serial_echopair_P(const char*, double);
59
-void serial_echopair_P(const char*, unsigned long);
60
-void serial_echopair_P(const char*, int);
61
-void serial_echopair_P(const char*, long);
62
-
63
-
64
-
48
+extern char __bss_end;
65 49
 
66 50
 //
67 51
 // Utility functions used by M100 to get its work done.
68 52
 //
69 53
 
70
-unsigned char* top_of_stack();
54
+char* top_of_stack();
71 55
 void prt_hex_nibble(unsigned int);
72 56
 void prt_hex_byte(unsigned int);
73 57
 void prt_hex_word(unsigned int);
74
-int how_many_E5s_are_here(unsigned char*);
75
-
76
-
77
-
58
+int how_many_E5s_are_here(char*);
78 59
 
79 60
 void gcode_M100() {
80
-  static int m100_not_initialized = 1;
81
-  unsigned char* sp, *ptr;
61
+  static bool m100_not_initialized = true;
62
+  char* sp, *ptr;
82 63
   int i, j, n;
83 64
   //
84 65
   // M100 D dumps the free memory block from __brkval to the stack pointer.
@@ -89,71 +70,67 @@ void gcode_M100() {
89 70
   // probably caused by bad pointers.  Any unexpected values will be flagged in
90 71
   // the right hand column to help spotting them.
91 72
   //
92
-#if ENABLED(M100_FREE_MEMORY_DUMPER) // Disable to remove Dump sub-command
93
-  if (code_seen('D')) {
94
-    ptr = (unsigned char*) __brkval;
95
-    //
96
-    // We want to start and end the dump on a nice 16 byte boundry even though
97
-    // the values we are using are not 16 byte aligned.
98
-    //
99
-    SERIAL_ECHOPGM("\n__brkval : ");
100
-    prt_hex_word((unsigned int) ptr);
101
-    ptr = (unsigned char*)((unsigned long) ptr & 0xfff0);
102
-    sp = top_of_stack();
103
-    SERIAL_ECHOPGM("\nStack Pointer : ");
104
-    prt_hex_word((unsigned int) sp);
105
-    SERIAL_ECHOPGM("\n");
106
-    sp = (unsigned char*)((unsigned long) sp | 0x000f);
107
-    n = sp - ptr;
108
-    //
109
-    // This is the main loop of the Dump command.
110
-    //
111
-    while (ptr < sp) {
112
-      prt_hex_word((unsigned int) ptr); // Print the address
113
-      SERIAL_ECHOPGM(":");
114
-      for (i = 0; i < 16; i++) {      // and 16 data bytes
115
-        prt_hex_byte(*(ptr + i));
116
-        SERIAL_ECHOPGM(" ");
117
-        delay(2);
118
-      }
119
-      SERIAL_ECHO("|");         // now show where non 0xE5's are
120
-      for (i = 0; i < 16; i++) {
121
-        delay(2);
122
-        if (*(ptr + i) == 0xe5)
123
-          SERIAL_ECHOPGM(" ");
124
-        else
125
-          SERIAL_ECHOPGM("?");
73
+  #if ENABLED(M100_FREE_MEMORY_DUMPER) // Disable to remove Dump sub-command
74
+    if (code_seen('D')) {
75
+      ptr = __brkval ? __brkval : &__bss_end;
76
+      //
77
+      // We want to start and end the dump on a nice 16 byte boundry even though
78
+      // the values we are using are not 16 byte aligned.
79
+      //
80
+      SERIAL_ECHOPGM("\nbss_end : ");
81
+      prt_hex_word((unsigned int) ptr);
82
+      ptr = (char*)((unsigned long) ptr & 0xfff0);
83
+      sp = top_of_stack();
84
+      SERIAL_ECHOPGM("\nStack Pointer : ");
85
+      prt_hex_word((unsigned int) sp);
86
+      SERIAL_EOL;
87
+      sp = (char*)((unsigned long) sp | 0x000f);
88
+      n = sp - ptr;
89
+      //
90
+      // This is the main loop of the Dump command.
91
+      //
92
+      while (ptr < sp) {
93
+        prt_hex_word((unsigned int) ptr); // Print the address
94
+        SERIAL_CHAR(':');
95
+        for (i = 0; i < 16; i++) {      // and 16 data bytes
96
+          prt_hex_byte(*(ptr + i));
97
+          SERIAL_CHAR(' ');
98
+        }
99
+        SERIAL_CHAR('|');         // now show where non 0xE5's are
100
+        for (i = 0; i < 16; i++) {
101
+          if (*(ptr + i) == (char)0xe5)
102
+            SERIAL_CHAR(' ');
103
+          else
104
+            SERIAL_CHAR('?');
105
+        }
106
+        SERIAL_EOL;
107
+        ptr += 16;
126 108
       }
127
-      SERIAL_ECHO("\n");
128
-      ptr += 16;
129
-      delay(2);
109
+      return;
130 110
     }
131
-    SERIAL_ECHOLNPGM("Done.\n");
132
-    return;
133
-  }
134
-#endif
111
+  #endif
135 112
   //
136 113
   // M100 F   requests the code to return the number of free bytes in the memory pool along with
137 114
   // other vital statistics that define the memory pool.
138 115
   //
139 116
   if (code_seen('F')) {
140 117
     #if 0
141
-      int max_addr = (int) __brkval;
118
+      int max_addr = (int)  __brkval ? __brkval : &__bss_end;
142 119
       int max_cnt = 0;
143 120
     #endif
144 121
     int block_cnt = 0;
145
-    ptr = (unsigned char*) __brkval;
122
+    ptr =  __brkval ? __brkval : &__bss_end;
146 123
     sp = top_of_stack();
147 124
     n = sp - ptr;
148 125
     // Scan through the range looking for the biggest block of 0xE5's we can find
149 126
     for (i = 0; i < n; i++) {
150
-      if (*(ptr + i) == (unsigned char) 0xe5) {
151
-        j = how_many_E5s_are_here((unsigned char*) ptr + i);
127
+      if (*(ptr + i) == (char)0xe5) {
128
+        j = how_many_E5s_are_here(ptr + i);
152 129
         if (j > 8) {
153 130
           SERIAL_ECHOPAIR("Found ", j);
154 131
           SERIAL_ECHOPGM(" bytes free at 0x");
155 132
           prt_hex_word((int) ptr + i);
156
-          SERIAL_ECHOPGM("\n");
133
+          SERIAL_EOL;
157 134
           i += j;
158 135
           block_cnt++;
159 136
         }
@@ -166,45 +143,43 @@ void gcode_M100() {
166 143
       }
167 144
     }
168 145
     if (block_cnt > 1)
169
-      SERIAL_ECHOLNPGM("\nMemory Corruption detected in free memory area.\n");
170
-    SERIAL_ECHO("\nDone.\n");
146
+      SERIAL_ECHOLNPGM("\nMemory Corruption detected in free memory area.");
171 147
     return;
172 148
   }
173 149
   //
174 150
   // M100 C x  Corrupts x locations in the free memory pool and reports the locations of the corruption.
175 151
   // This is useful to check the correctness of the M100 D and the M100 F commands.
176 152
   //
177
-#if ENABLED(M100_FREE_MEMORY_CORRUPTOR)
178
-  if (code_seen('C')) {
179
-    int x;      // x gets the # of locations to corrupt within the memory pool
180
-    x = code_value();
181
-    SERIAL_ECHOLNPGM("Corrupting free memory block.\n");
182
-    ptr = (unsigned char*) __brkval;
183
-    SERIAL_ECHOPAIR("\n__brkval : ", ptr);
184
-    ptr += 8;
185
-    sp = top_of_stack();
186
-    SERIAL_ECHOPAIR("\nStack Pointer : ", sp);
187
-    SERIAL_ECHOLNPGM("\n");
188
-    n = sp - ptr - 64;    // -64 just to keep us from finding interrupt activity that
189
-    // has altered the stack.
190
-    j = n / (x + 1);
191
-    for (i = 1; i <= x; i++) {
192
-      *(ptr + (i * j)) = i;
193
-      SERIAL_ECHO("\nCorrupting address: 0x");
194
-      prt_hex_word((unsigned int)(ptr + (i * j)));
153
+  #if ENABLED(M100_FREE_MEMORY_CORRUPTOR)
154
+    if (code_seen('C')) {
155
+      int x = code_value_int(); // x gets the # of locations to corrupt within the memory pool
156
+      SERIAL_ECHOLNPGM("Corrupting free memory block.\n");
157
+      ptr = __brkval ? __brkval : &__bss_end;
158
+      SERIAL_ECHOPAIR("\nbss_end : ", ptr);
159
+      ptr += 8;
160
+      sp = top_of_stack();
161
+      SERIAL_ECHOPAIR("\nStack Pointer : ", sp);
162
+      SERIAL_ECHOLNPGM("\n");
163
+      n = sp - ptr - 64;    // -64 just to keep us from finding interrupt activity that
164
+      // has altered the stack.
165
+      j = n / (x + 1);
166
+      for (i = 1; i <= x; i++) {
167
+        *(ptr + (i * j)) = i;
168
+        SERIAL_ECHOPGM("\nCorrupting address: 0x");
169
+        prt_hex_word((unsigned int)(ptr + (i * j)));
170
+      }
171
+      SERIAL_ECHOLNPGM("\n");
172
+      return;
195 173
     }
196
-    SERIAL_ECHOLNPGM("\n");
197
-    return;
198
-  }
199
-#endif
174
+  #endif
200 175
   //
201 176
   // M100 I    Initializes the free memory pool so it can be watched and prints vital
202 177
   // statistics that define the free memory pool.
203 178
   //
204
-  if (m100_not_initialized || code_seen('I')) {       // If no sub-command is specified, the first time
205
-    SERIAL_ECHOLNPGM("Initializing free memory block.\n");    // this happens, it will Initialize.
206
-    ptr = (unsigned char*) __brkval;        // Repeated M100 with no sub-command will not destroy the
207
-    SERIAL_ECHOPAIR("\n__brkval : ", ptr);     // state of the initialized free memory pool.
179
+  if (m100_not_initialized || code_seen('I')) {            // If no sub-command is specified, the first time
180
+    SERIAL_ECHOLNPGM("Initializing free memory block.\n"); // this happens, it will Initialize.
181
+    ptr = __brkval ? __brkval : &__bss_end;                // Repeated M100 with no sub-command will not destroy the
182
+    SERIAL_ECHOPAIR("\nbss_end : ", ptr);                  // state of the initialized free memory pool.
208 183
     ptr += 8;
209 184
     sp = top_of_stack();
210 185
     SERIAL_ECHOPAIR("\nStack Pointer : ", sp);
@@ -214,16 +189,15 @@ void gcode_M100() {
214 189
     SERIAL_ECHO(n);
215 190
     SERIAL_ECHOLNPGM(" bytes of memory initialized.\n");
216 191
     for (i = 0; i < n; i++)
217
-      *(ptr + i) = (unsigned char) 0xe5;
192
+      *(ptr + i) = (char)0xe5;
218 193
     for (i = 0; i < n; i++) {
219
-      if (*(ptr + i) != (unsigned char) 0xe5) {
194
+      if (*(ptr + i) != (char)0xe5) {
220 195
         SERIAL_ECHOPAIR("? address : ", ptr + i);
221 196
         SERIAL_ECHOPAIR("=", *(ptr + i));
222 197
         SERIAL_ECHOLNPGM("\n");
223 198
       }
224 199
     }
225
-    m100_not_initialized = 0;
226
-    SERIAL_ECHOLNPGM("Done.\n");
200
+    m100_not_initialized = false;
227 201
     return;
228 202
   }
229 203
   return;
@@ -232,8 +206,8 @@ void gcode_M100() {
232 206
 // top_of_stack() returns the location of a variable on its stack frame.  The value returned is above
233 207
 // the stack once the function returns to the caller.
234 208
 
235
-unsigned char* top_of_stack() {
236
-  unsigned char x;
209
+char* top_of_stack() {
210
+  char x;
237 211
   return &x + 1; // x is pulled on return;
238 212
 }
239 213
 
@@ -246,7 +220,6 @@ void prt_hex_nibble(unsigned int n) {
246 220
     SERIAL_ECHO(n);
247 221
   else
248 222
     SERIAL_ECHO((char)('A' + n - 10));
249
-  delay(2);
250 223
 }
251 224
 
252 225
 void prt_hex_byte(unsigned int b) {
@@ -262,10 +235,10 @@ void prt_hex_word(unsigned int w) {
262 235
 // how_many_E5s_are_here() is a utility function to easily find out how many 0xE5's are
263 236
 // at the specified location.  Having this logic as a function simplifies the search code.
264 237
 //
265
-int how_many_E5s_are_here(unsigned char* p) {
238
+int how_many_E5s_are_here(char* p) {
266 239
   int n;
267 240
   for (n = 0; n < 32000; n++) {
268
-    if (*(p + n) != (unsigned char) 0xe5)
241
+    if (*(p + n) != (char)0xe5)
269 242
       return n - 1;
270 243
   }
271 244
   return -1;

+ 158
- 128
Marlin/Marlin.h Parādīt failu

@@ -22,12 +22,6 @@
22 22
 #ifndef MARLIN_H
23 23
 #define MARLIN_H
24 24
 
25
-#define  FORCE_INLINE __attribute__((always_inline)) inline
26
-/**
27
- * Compiler warning on unused variable.
28
- */
29
-#define UNUSED(x) (void) (x)
30
-
31 25
 #include <math.h>
32 26
 #include <stdio.h>
33 27
 #include <stdlib.h>
@@ -39,25 +33,25 @@
39 33
 #include <avr/eeprom.h>
40 34
 #include <avr/interrupt.h>
41 35
 
36
+#include "MarlinConfig.h"
42 37
 
38
+#include "enum.h"
39
+#include "types.h"
43 40
 #include "fastio.h"
44
-#include "Configuration.h"
45
-#include "pins.h"
46
-
47
-#ifndef SANITYCHECK_H
48
-  #error "Your Configuration.h and Configuration_adv.h files are outdated!"
49
-#endif
50
-
51
-#include "Arduino.h"
52
-
53
-typedef unsigned long millis_t;
41
+#include "utility.h"
54 42
 
55 43
 #ifdef USBCON
56 44
   #include "HardwareSerial.h"
45
+  #if ENABLED(BLUETOOTH)
46
+    #define MYSERIAL bluetoothSerial
47
+  #else
48
+    #define MYSERIAL Serial
49
+  #endif // BLUETOOTH
50
+#else
51
+  #include "MarlinSerial.h"
52
+  #define MYSERIAL customizedSerial
57 53
 #endif
58 54
 
59
-#include "MarlinSerial.h"
60
-
61 55
 #include "WString.h"
62 56
 
63 57
 #if ENABLED(PRINTCOUNTER)
@@ -66,16 +60,6 @@ typedef unsigned long millis_t;
66 60
   #include "stopwatch.h"
67 61
 #endif
68 62
 
69
-#ifdef USBCON
70
-  #if ENABLED(BLUETOOTH)
71
-    #define MYSERIAL bluetoothSerial
72
-  #else
73
-    #define MYSERIAL Serial
74
-  #endif // BLUETOOTH
75
-#else
76
-  #define MYSERIAL customizedSerial
77
-#endif
78
-
79 63
 #define SERIAL_CHAR(x) MYSERIAL.write(x)
80 64
 #define SERIAL_EOL SERIAL_CHAR('\n')
81 65
 
@@ -84,8 +68,9 @@ typedef unsigned long millis_t;
84 68
 #define SERIAL_PROTOCOL_F(x,y) MYSERIAL.print(x,y)
85 69
 #define SERIAL_PROTOCOLPGM(x) serialprintPGM(PSTR(x))
86 70
 #define SERIAL_PROTOCOLLN(x) do{ MYSERIAL.print(x); SERIAL_EOL; }while(0)
87
-#define SERIAL_PROTOCOLLNPGM(x) do{ serialprintPGM(PSTR(x)); SERIAL_EOL; }while(0)
71
+#define SERIAL_PROTOCOLLNPGM(x) do{ serialprintPGM(PSTR(x "\n")); }while(0)
88 72
 
73
+#define SERIAL_PROTOCOLPAIR(name, value) SERIAL_ECHOPAIR(name, value)
89 74
 
90 75
 extern const char errormagic[] PROGMEM;
91 76
 extern const char echomagic[] PROGMEM;
@@ -104,11 +89,14 @@ extern const char echomagic[] PROGMEM;
104 89
 
105 90
 #define SERIAL_ECHOPAIR(name,value) (serial_echopair_P(PSTR(name),(value)))
106 91
 
92
+void serial_echopair_P(const char* s_P, char v);
107 93
 void serial_echopair_P(const char* s_P, int v);
108 94
 void serial_echopair_P(const char* s_P, long v);
109 95
 void serial_echopair_P(const char* s_P, float v);
110 96
 void serial_echopair_P(const char* s_P, double v);
111 97
 void serial_echopair_P(const char* s_P, unsigned long v);
98
+FORCE_INLINE void serial_echopair_P(const char* s_P, uint8_t v) { serial_echopair_P(s_P, (int)v); }
99
+FORCE_INLINE void serial_echopair_P(const char* s_P, uint16_t v) { serial_echopair_P(s_P, (int)v); }
112 100
 FORCE_INLINE void serial_echopair_P(const char* s_P, bool v) { serial_echopair_P(s_P, (int)v); }
113 101
 FORCE_INLINE void serial_echopair_P(const char* s_P, void *v) { serial_echopair_P(s_P, (unsigned long)v); }
114 102
 
@@ -122,99 +110,111 @@ FORCE_INLINE void serialprintPGM(const char* str) {
122 110
 }
123 111
 
124 112
 void idle(
125
-  #if ENABLED(FILAMENTCHANGEENABLE)
126
-    bool no_stepper_sleep=false  // pass true to keep steppers from disabling on timeout
113
+  #if ENABLED(FILAMENT_CHANGE_FEATURE)
114
+    bool no_stepper_sleep = false  // pass true to keep steppers from disabling on timeout
127 115
   #endif
128 116
 );
129 117
 
130 118
 void manage_inactivity(bool ignore_stepper_queue = false);
131 119
 
132
-#if ENABLED(DUAL_X_CARRIAGE)
120
+#if ENABLED(DUAL_X_CARRIAGE) || ENABLED(DUAL_NOZZLE_DUPLICATION_MODE)
133 121
   extern bool extruder_duplication_enabled;
134 122
 #endif
135 123
 
136
-#if ENABLED(DUAL_X_CARRIAGE) && HAS_X_ENABLE && HAS_X2_ENABLE
137
-  #define  enable_x() do { X_ENABLE_WRITE( X_ENABLE_ON); X2_ENABLE_WRITE( X_ENABLE_ON); } while (0)
138
-  #define disable_x() do { X_ENABLE_WRITE(!X_ENABLE_ON); X2_ENABLE_WRITE(!X_ENABLE_ON); axis_known_position[X_AXIS] = false; } while (0)
124
+#if HAS_X2_ENABLE
125
+  #define  enable_x() do{ X_ENABLE_WRITE( X_ENABLE_ON); X2_ENABLE_WRITE( X_ENABLE_ON); }while(0)
126
+  #define disable_x() do{ X_ENABLE_WRITE(!X_ENABLE_ON); X2_ENABLE_WRITE(!X_ENABLE_ON); axis_known_position[X_AXIS] = false; }while(0)
139 127
 #elif HAS_X_ENABLE
140 128
   #define  enable_x() X_ENABLE_WRITE( X_ENABLE_ON)
141
-  #define disable_x() { X_ENABLE_WRITE(!X_ENABLE_ON); axis_known_position[X_AXIS] = false; }
129
+  #define disable_x() do{ X_ENABLE_WRITE(!X_ENABLE_ON); axis_known_position[X_AXIS] = false; }while(0)
142 130
 #else
143
-  #define enable_x() ;
144
-  #define disable_x() ;
131
+  #define  enable_x() NOOP
132
+  #define disable_x() NOOP
145 133
 #endif
146 134
 
147
-#if HAS_Y_ENABLE
148
-  #if ENABLED(Y_DUAL_STEPPER_DRIVERS)
149
-    #define  enable_y() { Y_ENABLE_WRITE( Y_ENABLE_ON); Y2_ENABLE_WRITE(Y_ENABLE_ON); }
150
-    #define disable_y() { Y_ENABLE_WRITE(!Y_ENABLE_ON); Y2_ENABLE_WRITE(!Y_ENABLE_ON); axis_known_position[Y_AXIS] = false; }
151
-  #else
152
-    #define  enable_y() Y_ENABLE_WRITE( Y_ENABLE_ON)
153
-    #define disable_y() { Y_ENABLE_WRITE(!Y_ENABLE_ON); axis_known_position[Y_AXIS] = false; }
154
-  #endif
135
+#if HAS_Y2_ENABLE
136
+  #define  enable_y() do{ Y_ENABLE_WRITE( Y_ENABLE_ON); Y2_ENABLE_WRITE(Y_ENABLE_ON); }while(0)
137
+  #define disable_y() do{ Y_ENABLE_WRITE(!Y_ENABLE_ON); Y2_ENABLE_WRITE(!Y_ENABLE_ON); axis_known_position[Y_AXIS] = false; }while(0)
138
+#elif HAS_Y_ENABLE
139
+  #define  enable_y() Y_ENABLE_WRITE( Y_ENABLE_ON)
140
+  #define disable_y() do{ Y_ENABLE_WRITE(!Y_ENABLE_ON); axis_known_position[Y_AXIS] = false; }while(0)
155 141
 #else
156
-  #define enable_y() ;
157
-  #define disable_y() ;
142
+  #define  enable_y() NOOP
143
+  #define disable_y() NOOP
158 144
 #endif
159 145
 
160
-#if HAS_Z_ENABLE
161
-  #if ENABLED(Z_DUAL_STEPPER_DRIVERS)
162
-    #define  enable_z() { Z_ENABLE_WRITE( Z_ENABLE_ON); Z2_ENABLE_WRITE(Z_ENABLE_ON); }
163
-    #define disable_z() { Z_ENABLE_WRITE(!Z_ENABLE_ON); Z2_ENABLE_WRITE(!Z_ENABLE_ON); axis_known_position[Z_AXIS] = false; }
164
-  #else
165
-    #define  enable_z() Z_ENABLE_WRITE( Z_ENABLE_ON)
166
-    #define disable_z() { Z_ENABLE_WRITE(!Z_ENABLE_ON); axis_known_position[Z_AXIS] = false; }
167
-  #endif
146
+#if HAS_Z2_ENABLE
147
+  #define  enable_z() do{ Z_ENABLE_WRITE( Z_ENABLE_ON); Z2_ENABLE_WRITE(Z_ENABLE_ON); }while(0)
148
+  #define disable_z() do{ Z_ENABLE_WRITE(!Z_ENABLE_ON); Z2_ENABLE_WRITE(!Z_ENABLE_ON); axis_known_position[Z_AXIS] = false; }while(0)
149
+#elif HAS_Z_ENABLE
150
+  #define  enable_z() Z_ENABLE_WRITE( Z_ENABLE_ON)
151
+  #define disable_z() do{ Z_ENABLE_WRITE(!Z_ENABLE_ON); axis_known_position[Z_AXIS] = false; }while(0)
168 152
 #else
169
-  #define enable_z() ;
170
-  #define disable_z() ;
153
+  #define  enable_z() NOOP
154
+  #define disable_z() NOOP
171 155
 #endif
172 156
 
173
-#if HAS_E0_ENABLE
174
-  #define enable_e0()  E0_ENABLE_WRITE( E_ENABLE_ON)
175
-  #define disable_e0() E0_ENABLE_WRITE(!E_ENABLE_ON)
176
-#else
177
-  #define enable_e0()  /* nothing */
178
-  #define disable_e0() /* nothing */
179
-#endif
157
+#if ENABLED(MIXING_EXTRUDER)
158
+
159
+  /**
160
+   * Mixing steppers synchronize their enable (and direction) together
161
+   */
162
+  #if MIXING_STEPPERS > 3
163
+    #define  enable_e0() { E0_ENABLE_WRITE( E_ENABLE_ON); E1_ENABLE_WRITE( E_ENABLE_ON); E2_ENABLE_WRITE( E_ENABLE_ON); E3_ENABLE_WRITE( E_ENABLE_ON); }
164
+    #define disable_e0() { E0_ENABLE_WRITE(!E_ENABLE_ON); E1_ENABLE_WRITE(!E_ENABLE_ON); E2_ENABLE_WRITE(!E_ENABLE_ON); E3_ENABLE_WRITE(!E_ENABLE_ON); }
165
+  #elif MIXING_STEPPERS > 2
166
+    #define  enable_e0() { E0_ENABLE_WRITE( E_ENABLE_ON); E1_ENABLE_WRITE( E_ENABLE_ON); E2_ENABLE_WRITE( E_ENABLE_ON); }
167
+    #define disable_e0() { E0_ENABLE_WRITE(!E_ENABLE_ON); E1_ENABLE_WRITE(!E_ENABLE_ON); E2_ENABLE_WRITE(!E_ENABLE_ON); }
168
+  #else
169
+    #define  enable_e0() { E0_ENABLE_WRITE( E_ENABLE_ON); E1_ENABLE_WRITE( E_ENABLE_ON); }
170
+    #define disable_e0() { E0_ENABLE_WRITE(!E_ENABLE_ON); E1_ENABLE_WRITE(!E_ENABLE_ON); }
171
+  #endif
172
+  #define  enable_e1() NOOP
173
+  #define disable_e1() NOOP
174
+  #define  enable_e2() NOOP
175
+  #define disable_e2() NOOP
176
+  #define  enable_e3() NOOP
177
+  #define disable_e3() NOOP
178
+
179
+#else // !MIXING_EXTRUDER
180
+
181
+  #if HAS_E0_ENABLE
182
+    #define  enable_e0() E0_ENABLE_WRITE( E_ENABLE_ON)
183
+    #define disable_e0() E0_ENABLE_WRITE(!E_ENABLE_ON)
184
+  #else
185
+    #define  enable_e0() NOOP
186
+    #define disable_e0() NOOP
187
+  #endif
180 188
 
181
-#if (EXTRUDERS > 1) && HAS_E1_ENABLE
182
-  #define enable_e1()  E1_ENABLE_WRITE( E_ENABLE_ON)
183
-  #define disable_e1() E1_ENABLE_WRITE(!E_ENABLE_ON)
184
-#else
185
-  #define enable_e1()  /* nothing */
186
-  #define disable_e1() /* nothing */
187
-#endif
189
+  #if E_STEPPERS > 1 && HAS_E1_ENABLE
190
+    #define  enable_e1() E1_ENABLE_WRITE( E_ENABLE_ON)
191
+    #define disable_e1() E1_ENABLE_WRITE(!E_ENABLE_ON)
192
+  #else
193
+    #define  enable_e1() NOOP
194
+    #define disable_e1() NOOP
195
+  #endif
188 196
 
189
-#if (EXTRUDERS > 2) && HAS_E2_ENABLE
190
-  #define enable_e2()  E2_ENABLE_WRITE( E_ENABLE_ON)
191
-  #define disable_e2() E2_ENABLE_WRITE(!E_ENABLE_ON)
192
-#else
193
-  #define enable_e2()  /* nothing */
194
-  #define disable_e2() /* nothing */
195
-#endif
197
+  #if E_STEPPERS > 2 && HAS_E2_ENABLE
198
+    #define  enable_e2() E2_ENABLE_WRITE( E_ENABLE_ON)
199
+    #define disable_e2() E2_ENABLE_WRITE(!E_ENABLE_ON)
200
+  #else
201
+    #define  enable_e2() NOOP
202
+    #define disable_e2() NOOP
203
+  #endif
196 204
 
197
-#if (EXTRUDERS > 3) && HAS_E3_ENABLE
198
-  #define enable_e3()  E3_ENABLE_WRITE( E_ENABLE_ON)
199
-  #define disable_e3() E3_ENABLE_WRITE(!E_ENABLE_ON)
200
-#else
201
-  #define enable_e3()  /* nothing */
202
-  #define disable_e3() /* nothing */
203
-#endif
205
+  #if E_STEPPERS > 3 && HAS_E3_ENABLE
206
+    #define  enable_e3() E3_ENABLE_WRITE( E_ENABLE_ON)
207
+    #define disable_e3() E3_ENABLE_WRITE(!E_ENABLE_ON)
208
+  #else
209
+    #define  enable_e3() NOOP
210
+    #define disable_e3() NOOP
211
+  #endif
204 212
 
205
-/**
206
- * The axis order in all axis related arrays is X, Y, Z, E
207
- */
208
-#define NUM_AXIS 4
213
+#endif // !MIXING_EXTRUDER
209 214
 
210 215
 /**
211
- * Axis indices as enumerated constants
212
- *
213
- * A_AXIS and B_AXIS are used by COREXY printers
214
- * X_HEAD and Y_HEAD is used for systems that don't have a 1:1 relationship between X_AXIS and X Head movement, like CoreXY bots.
216
+ * The axis order in all axis related arrays is X, Y, Z, E
215 217
  */
216
-enum AxisEnum {X_AXIS = 0, A_AXIS = 0, Y_AXIS = 1, B_AXIS = 1, Z_AXIS = 2, C_AXIS = 2, E_AXIS = 3, X_HEAD = 4, Y_HEAD = 5, Z_HEAD = 5};
217
-
218 218
 #define _AXIS(AXIS) AXIS ##_AXIS
219 219
 
220 220
 void enable_all_steppers();
@@ -224,25 +224,14 @@ void FlushSerialRequestResend();
224 224
 void ok_to_send();
225 225
 
226 226
 void reset_bed_level();
227
-void prepare_move();
228 227
 void kill(const char*);
229 228
 
229
+void quickstop_stepper();
230
+
230 231
 #if ENABLED(FILAMENT_RUNOUT_SENSOR)
231 232
   void handle_filament_runout();
232 233
 #endif
233 234
 
234
-/**
235
- * Debug flags - not yet widely applied
236
- */
237
-enum DebugFlags {
238
-  DEBUG_NONE          = 0,
239
-  DEBUG_ECHO          = _BV(0), ///< Echo commands in order as they are processed
240
-  DEBUG_INFO          = _BV(1), ///< Print messages for code that has debug output
241
-  DEBUG_ERRORS        = _BV(2), ///< Not implemented
242
-  DEBUG_DRYRUN        = _BV(3), ///< Ignore temperature setting and E movement commands
243
-  DEBUG_COMMUNICATION = _BV(4), ///< Not implemented
244
-  DEBUG_LEVELING      = _BV(5)  ///< Print detailed output for homing and leveling
245
-};
246 235
 extern uint8_t marlin_debug_flags;
247 236
 #define DEBUGGING(F) (marlin_debug_flags & (DEBUG_## F))
248 237
 
@@ -253,6 +242,7 @@ inline bool IsStopped() { return !Running; }
253 242
 bool enqueue_and_echo_command(const char* cmd, bool say_ok=false); //put a single ASCII command at the end of the current buffer or return false when it is full
254 243
 void enqueue_and_echo_command_now(const char* cmd); // enqueue now, only return when the command has been enqueued
255 244
 void enqueue_and_echo_commands_P(const char* cmd); //put one or many ASCII commands at the end of the current buffer, read from flash
245
+void clear_command_queue();
256 246
 
257 247
 void clamp_to_software_endstops(float target[3]);
258 248
 
@@ -263,29 +253,47 @@ inline void refresh_cmd_timeout() { previous_cmd_ms = millis(); }
263 253
   void setPwmFrequency(uint8_t pin, int val);
264 254
 #endif
265 255
 
266
-#ifndef CRITICAL_SECTION_START
267
-  #define CRITICAL_SECTION_START  unsigned char _sreg = SREG; cli();
268
-  #define CRITICAL_SECTION_END    SREG = _sreg;
269
-#endif
256
+/**
257
+ * Feedrate scaling and conversion
258
+ */
259
+extern int feedrate_percentage;
260
+
261
+#define MMM_TO_MMS(MM_M) ((MM_M)/60.0)
262
+#define MMS_TO_MMM(MM_S) ((MM_S)*60.0)
263
+#define MMM_SCALED(MM_M) ((MM_M)*feedrate_percentage*0.01)
264
+#define MMS_SCALED(MM_S) MMM_SCALED(MM_S)
265
+#define MMM_TO_MMS_SCALED(MM_M) (MMS_SCALED(MMM_TO_MMS(MM_M)))
270 266
 
271 267
 extern bool axis_relative_modes[];
272
-extern int feedrate_multiplier;
273 268
 extern bool volumetric_enabled;
274 269
 extern int extruder_multiplier[EXTRUDERS]; // sets extrude multiply factor (in percent) for each extruder individually
275 270
 extern float filament_size[EXTRUDERS]; // cross-sectional area of filament (in millimeters), typically around 1.75 or 2.85, 0 disables the volumetric calculations for the extruder.
276 271
 extern float volumetric_multiplier[EXTRUDERS]; // reciprocal of cross-sectional area of filament (in square millimeters), stored this way to reduce computational burden in planner
277
-extern float current_position[NUM_AXIS];
278
-extern float home_offset[3]; // axis[n].home_offset
279
-extern float sw_endstop_min[3]; // axis[n].sw_endstop_min
280
-extern float sw_endstop_max[3]; // axis[n].sw_endstop_max
281 272
 extern bool axis_known_position[3]; // axis[n].is_known
282 273
 extern bool axis_homed[3]; // axis[n].is_homed
274
+extern volatile bool wait_for_heatup;
275
+
276
+extern float current_position[NUM_AXIS];
277
+extern float position_shift[3];
278
+extern float home_offset[3];
279
+extern float sw_endstop_min[3];
280
+extern float sw_endstop_max[3];
281
+
282
+#define LOGICAL_POSITION(POS, AXIS) (POS + home_offset[AXIS] + position_shift[AXIS])
283
+#define RAW_POSITION(POS, AXIS)     (POS - home_offset[AXIS] - position_shift[AXIS])
284
+#define LOGICAL_X_POSITION(POS)     LOGICAL_POSITION(POS, X_AXIS)
285
+#define LOGICAL_Y_POSITION(POS)     LOGICAL_POSITION(POS, Y_AXIS)
286
+#define LOGICAL_Z_POSITION(POS)     LOGICAL_POSITION(POS, Z_AXIS)
287
+#define RAW_X_POSITION(POS)         RAW_POSITION(POS, X_AXIS)
288
+#define RAW_Y_POSITION(POS)         RAW_POSITION(POS, Y_AXIS)
289
+#define RAW_Z_POSITION(POS)         RAW_POSITION(POS, Z_AXIS)
290
+#define RAW_CURRENT_POSITION(AXIS)  RAW_POSITION(current_position[AXIS], AXIS)
283 291
 
284 292
 // GCode support for external objects
285 293
 bool code_seen(char);
286
-float code_value();
287
-long code_value_long();
288
-int16_t code_value_short();
294
+int code_value_int();
295
+float code_value_temp_abs();
296
+float code_value_temp_diff();
289 297
 
290 298
 #if ENABLED(DELTA)
291 299
   extern float delta[3];
@@ -296,23 +304,24 @@ int16_t code_value_short();
296 304
   extern float delta_diagonal_rod_trim_tower_1;
297 305
   extern float delta_diagonal_rod_trim_tower_2;
298 306
   extern float delta_diagonal_rod_trim_tower_3;
299
-  void calculate_delta(float cartesian[3]);
307
+  void inverse_kinematics(const float cartesian[3]);
300 308
   void recalc_delta_settings(float radius, float diagonal_rod);
301 309
   #if ENABLED(AUTO_BED_LEVELING_FEATURE)
302 310
     extern int delta_grid_spacing[2];
303 311
     void adjust_delta(float cartesian[3]);
304 312
   #endif
305 313
 #elif ENABLED(SCARA)
314
+  extern float delta[3];
306 315
   extern float axis_scaling[3];  // Build size scaling
307
-  void calculate_delta(float cartesian[3]);
308
-  void calculate_SCARA_forward_Transform(float f_scara[3]);
316
+  void inverse_kinematics(const float cartesian[3]);
317
+  void forward_kinematics_SCARA(float f_scara[3]);
309 318
 #endif
310 319
 
311 320
 #if ENABLED(Z_DUAL_ENDSTOPS)
312 321
   extern float z_endstop_adj;
313 322
 #endif
314 323
 
315
-#if ENABLED(AUTO_BED_LEVELING_FEATURE)
324
+#if HAS_BED_PROBE
316 325
   extern float zprobe_zoffset;
317 326
 #endif
318 327
 
@@ -338,15 +347,19 @@ int16_t code_value_short();
338 347
   extern int meas_delay_cm; //delay distance
339 348
 #endif
340 349
 
341
-#if ENABLED(PID_ADD_EXTRUSION_RATE)
350
+#if ENABLED(FILAMENT_CHANGE_FEATURE)
351
+  extern FilamentChangeMenuResponse filament_change_menu_response;
352
+#endif
353
+
354
+#if ENABLED(PID_EXTRUSION_SCALING)
342 355
   extern int lpq_len;
343 356
 #endif
344 357
 
345 358
 #if ENABLED(FWRETRACT)
346 359
   extern bool autoretract_enabled;
347 360
   extern bool retracted[EXTRUDERS]; // extruder[n].retracted
348
-  extern float retract_length, retract_length_swap, retract_feedrate, retract_zlift;
349
-  extern float retract_recover_length, retract_recover_length_swap, retract_recover_feedrate;
361
+  extern float retract_length, retract_length_swap, retract_feedrate_mm_s, retract_zlift;
362
+  extern float retract_recover_length, retract_recover_length_swap, retract_recover_feedrate_mm_s;
350 363
 #endif
351 364
 
352 365
 // Print job timer
@@ -363,6 +376,23 @@ extern uint8_t active_extruder;
363 376
   void print_heaterstates();
364 377
 #endif
365 378
 
379
+#if ENABLED(MIXING_EXTRUDER)
380
+  extern float mixing_factor[MIXING_STEPPERS];
381
+#endif
382
+
366 383
 void calculate_volumetric_multipliers();
367 384
 
385
+// Buzzer
386
+#if HAS_BUZZER && PIN_EXISTS(BEEPER)
387
+  #include "buzzer.h"
388
+#endif
389
+
390
+/**
391
+ * Blocking movement and shorthand functions
392
+ */
393
+inline void do_blocking_move_to(float x, float y, float z, float fr_mm_m=0.0);
394
+inline void do_blocking_move_to_x(float x, float fr_mm_m=0.0);
395
+inline void do_blocking_move_to_z(float z, float fr_mm_m=0.0);
396
+inline void do_blocking_move_to_xy(float x, float y, float fr_mm_m=0.0);
397
+
368 398
 #endif //MARLIN_H

+ 1
- 2
Marlin/Marlin.ino Parādīt failu

@@ -34,8 +34,7 @@
34 34
 /* All the implementation is done in *.cpp files to get better compatibility with avr-gcc without the Arduino IDE */
35 35
 /* Use this file to help the Arduino IDE find which Arduino libraries are needed and to keep documentation on GCode */
36 36
 
37
-#include "Configuration.h"
38
-#include "pins.h"
37
+#include "MarlinConfig.h"
39 38
 
40 39
 #if ENABLED(ULTRA_LCD)
41 40
   #if ENABLED(LCD_I2C_TYPE_PCF8575)

+ 41
- 0
Marlin/MarlinConfig.h Parādīt failu

@@ -0,0 +1,41 @@
1
+/**
2
+ * Marlin 3D Printer Firmware
3
+ * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
4
+ *
5
+ * Based on Sprinter and grbl.
6
+ * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
7
+ *
8
+ * This program is free software: you can redistribute it and/or modify
9
+ * it under the terms of the GNU General Public License as published by
10
+ * the Free Software Foundation, either version 3 of the License, or
11
+ * (at your option) any later version.
12
+ *
13
+ * This program is distributed in the hope that it will be useful,
14
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
+ * GNU General Public License for more details.
17
+ *
18
+ * You should have received a copy of the GNU General Public License
19
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
+ *
21
+ */
22
+
23
+#ifndef MARLIN_CONFIG_H
24
+#define MARLIN_CONFIG_H
25
+
26
+#include "fastio.h"
27
+#include "macros.h"
28
+#include "boards.h"
29
+#include "Version.h"
30
+#include "Configuration.h"
31
+#include "Conditionals_LCD.h"
32
+#include "Configuration_adv.h"
33
+#include "pins.h"
34
+#ifndef USBCON
35
+  #define HardwareSerial_h // trick to disable the standard HWserial
36
+#endif
37
+#include "Arduino.h"
38
+#include "Conditionals_post.h"
39
+#include "SanityCheck.h"
40
+
41
+#endif // MARLIN_CONFIG_H

+ 235
- 8
Marlin/MarlinSerial.cpp Parādīt failu

@@ -21,25 +21,34 @@
21 21
  */
22 22
 
23 23
 /**
24
-  HardwareSerial.cpp - Hardware serial library for Wiring
24
+  MarlinSerial.cpp - Hardware serial library for Wiring
25 25
   Copyright (c) 2006 Nicholas Zambetti.  All right reserved.
26 26
 
27 27
   Modified 23 November 2006 by David A. Mellis
28 28
   Modified 28 September 2010 by Mark Sproul
29
+  Modified 14 February 2016 by Andreas Hardtung (added tx buffer)
29 30
 */
30 31
 
31
-#include "Marlin.h"
32 32
 #include "MarlinSerial.h"
33 33
 
34
+#include "stepper.h"
35
+
36
+#include "Marlin.h"
37
+
34 38
 #ifndef USBCON
35 39
 // this next line disables the entire HardwareSerial.cpp,
36 40
 // this is so I can support Attiny series and any other chip without a UART
37 41
 #if defined(UBRRH) || defined(UBRR0H) || defined(UBRR1H) || defined(UBRR2H) || defined(UBRR3H)
38 42
 
39 43
 #if UART_PRESENT(SERIAL_PORT)
40
-  ring_buffer rx_buffer  =  { { 0 }, 0, 0 };
44
+  ring_buffer_r rx_buffer  =  { { 0 }, 0, 0 };
45
+  #if TX_BUFFER_SIZE > 0
46
+    ring_buffer_t tx_buffer  =  { { 0 }, 0, 0 };
47
+    static bool _written;
48
+  #endif
41 49
 #endif
42 50
 
51
+
43 52
 FORCE_INLINE void store_char(unsigned char c) {
44 53
   CRITICAL_SECTION_START;
45 54
     uint8_t h = rx_buffer.head;
@@ -54,14 +63,44 @@ FORCE_INLINE void store_char(unsigned char c) {
54 63
       rx_buffer.head = i;
55 64
     }
56 65
   CRITICAL_SECTION_END;
66
+
67
+  #if ENABLED(EMERGENCY_PARSER)
68
+    emergency_parser(c);
69
+  #endif
57 70
 }
58 71
 
72
+#if TX_BUFFER_SIZE > 0
73
+  FORCE_INLINE void _tx_udr_empty_irq(void)
74
+  {
75
+    // If interrupts are enabled, there must be more data in the output
76
+    // buffer. Send the next byte
77
+    uint8_t t = tx_buffer.tail;
78
+    uint8_t c = tx_buffer.buffer[t];
79
+    tx_buffer.tail = (t + 1) & (TX_BUFFER_SIZE - 1);
80
+
81
+    M_UDRx = c;
82
+
83
+    // clear the TXC bit -- "can be cleared by writing a one to its bit
84
+    // location". This makes sure flush() won't return until the bytes
85
+    // actually got written
86
+    SBI(M_UCSRxA, M_TXCx);
87
+
88
+    if (tx_buffer.head == tx_buffer.tail) {
89
+      // Buffer empty, so disable interrupts
90
+      CBI(M_UCSRxB, M_UDRIEx);
91
+    }
92
+  }
93
+
94
+  #if defined(M_USARTx_UDRE_vect)
95
+    ISR(M_USARTx_UDRE_vect) {
96
+      _tx_udr_empty_irq();
97
+    }
98
+  #endif
99
+
100
+#endif
59 101
 
60
-//#elif defined(SIG_USART_RECV)
61 102
 #if defined(M_USARTx_RX_vect)
62
-  // fixed by Mark Sproul this is on the 644/644p
63
-  //SIGNAL(SIG_USART_RECV)
64
-  SIGNAL(M_USARTx_RX_vect) {
103
+  ISR(M_USARTx_RX_vect) {
65 104
     unsigned char c  =  M_UDRx;
66 105
     store_char(c);
67 106
   }
@@ -102,14 +141,25 @@ void MarlinSerial::begin(long baud) {
102 141
   SBI(M_UCSRxB, M_RXENx);
103 142
   SBI(M_UCSRxB, M_TXENx);
104 143
   SBI(M_UCSRxB, M_RXCIEx);
144
+  #if TX_BUFFER_SIZE > 0
145
+    CBI(M_UCSRxB, M_UDRIEx);
146
+    _written = false;
147
+  #endif
105 148
 }
106 149
 
107 150
 void MarlinSerial::end() {
108 151
   CBI(M_UCSRxB, M_RXENx);
109 152
   CBI(M_UCSRxB, M_TXENx);
110 153
   CBI(M_UCSRxB, M_RXCIEx);
154
+  CBI(M_UCSRxB, M_UDRIEx);
111 155
 }
112 156
 
157
+void MarlinSerial::checkRx(void) {
158
+  if (TEST(M_UCSRxA, M_RXCx)) {
159
+    uint8_t c  =  M_UDRx;
160
+    store_char(c);
161
+  }
162
+}
113 163
 
114 164
 int MarlinSerial::peek(void) {
115 165
   int v;
@@ -140,7 +190,16 @@ int MarlinSerial::read(void) {
140 190
   return v;
141 191
 }
142 192
 
143
-void MarlinSerial::flush() {
193
+uint8_t MarlinSerial::available(void) {
194
+  CRITICAL_SECTION_START;
195
+    uint8_t h = rx_buffer.head;
196
+    uint8_t t = rx_buffer.tail;
197
+  CRITICAL_SECTION_END;
198
+  return (uint8_t)(RX_BUFFER_SIZE + h - t) & (RX_BUFFER_SIZE - 1);
199
+}
200
+
201
+void MarlinSerial::flush(void) {
202
+  // RX
144 203
   // don't reverse this or there may be problems if the RX interrupt
145 204
   // occurs after reading the value of rx_buffer_head but before writing
146 205
   // the value to rx_buffer_tail; the previous value of rx_buffer_head
@@ -151,6 +210,86 @@ void MarlinSerial::flush() {
151 210
   CRITICAL_SECTION_END;
152 211
 }
153 212
 
213
+#if TX_BUFFER_SIZE > 0
214
+  uint8_t MarlinSerial::availableForWrite(void) {
215
+    CRITICAL_SECTION_START;
216
+      uint8_t h = tx_buffer.head;
217
+      uint8_t t = tx_buffer.tail;
218
+    CRITICAL_SECTION_END;
219
+    return (uint8_t)(TX_BUFFER_SIZE + h - t) & (TX_BUFFER_SIZE - 1);
220
+  }
221
+
222
+  void MarlinSerial::write(uint8_t c) {
223
+    _written = true;
224
+    CRITICAL_SECTION_START;
225
+      bool emty = (tx_buffer.head == tx_buffer.tail);
226
+    CRITICAL_SECTION_END;
227
+    // If the buffer and the data register is empty, just write the byte
228
+    // to the data register and be done. This shortcut helps
229
+    // significantly improve the effective datarate at high (>
230
+    // 500kbit/s) bitrates, where interrupt overhead becomes a slowdown.
231
+    if (emty && TEST(M_UCSRxA, M_UDREx)) {
232
+      CRITICAL_SECTION_START;
233
+        M_UDRx = c;
234
+        SBI(M_UCSRxA, M_TXCx);
235
+      CRITICAL_SECTION_END;
236
+      return;
237
+    }
238
+    uint8_t i = (tx_buffer.head + 1) & (TX_BUFFER_SIZE - 1);
239
+
240
+    // If the output buffer is full, there's nothing for it other than to
241
+    // wait for the interrupt handler to empty it a bit
242
+    while (i == tx_buffer.tail) {
243
+      if (!TEST(SREG, SREG_I)) {
244
+        // Interrupts are disabled, so we'll have to poll the data
245
+        // register empty flag ourselves. If it is set, pretend an
246
+        // interrupt has happened and call the handler to free up
247
+        // space for us.
248
+        if (TEST(M_UCSRxA, M_UDREx))
249
+          _tx_udr_empty_irq();
250
+      } else {
251
+        // nop, the interrupt handler will free up space for us
252
+      }
253
+    }
254
+
255
+    tx_buffer.buffer[tx_buffer.head] = c;
256
+    { CRITICAL_SECTION_START;
257
+        tx_buffer.head = i;
258
+        SBI(M_UCSRxB, M_UDRIEx);
259
+      CRITICAL_SECTION_END;
260
+    }
261
+    return;
262
+  }
263
+
264
+  void MarlinSerial::flushTX(void) {
265
+    // TX
266
+    // If we have never written a byte, no need to flush. This special
267
+    // case is needed since there is no way to force the TXC (transmit
268
+    // complete) bit to 1 during initialization
269
+    if (!_written)
270
+      return;
271
+
272
+    while (TEST(M_UCSRxB, M_UDRIEx) || !TEST(M_UCSRxA, M_TXCx)) {
273
+      if (!TEST(SREG, SREG_I) && TEST(M_UCSRxB, M_UDRIEx))
274
+        // Interrupts are globally disabled, but the DR empty
275
+        // interrupt should be enabled, so poll the DR empty flag to
276
+        // prevent deadlock
277
+        if (TEST(M_UCSRxA, M_UDREx))
278
+          _tx_udr_empty_irq();
279
+    }
280
+    // If we get here, nothing is queued anymore (DRIE is disabled) and
281
+    // the hardware finished tranmission (TXC is set).
282
+}
283
+
284
+#else
285
+  void MarlinSerial::write(uint8_t c) {
286
+    while (!TEST(M_UCSRxA, M_UDREx))
287
+      ;
288
+    M_UDRx = c;
289
+  }
290
+#endif
291
+
292
+// end NEW
154 293
 
155 294
 /// imports from print.h
156 295
 
@@ -310,3 +449,91 @@ MarlinSerial customizedSerial;
310 449
 #if defined(USBCON) && ENABLED(BLUETOOTH)
311 450
   HardwareSerial bluetoothSerial;
312 451
 #endif
452
+
453
+#if ENABLED(EMERGENCY_PARSER)
454
+
455
+  // Currently looking for: M108, M112, M410
456
+  // If you alter the parser please don't forget to update the capabilities in Conditionals_post.h
457
+
458
+  FORCE_INLINE void emergency_parser(unsigned char c) {
459
+
460
+    static e_parser_state state = state_RESET;
461
+
462
+    switch (state) {
463
+      case state_RESET:
464
+        switch (c) {
465
+          case ' ': break;
466
+          case 'N': state = state_N;      break;
467
+          case 'M': state = state_M;      break;
468
+          default: state = state_IGNORE;
469
+        }
470
+        break;
471
+
472
+      case state_N:
473
+        switch (c) {
474
+          case '0': case '1': case '2':
475
+          case '3': case '4': case '5':
476
+          case '6': case '7': case '8':
477
+          case '9': case '-': case ' ':   break;
478
+          case 'M': state = state_M;      break;
479
+          default:  state = state_IGNORE;
480
+        }
481
+        break;
482
+
483
+      case state_M:
484
+        switch (c) {
485
+          case ' ': break;
486
+          case '1': state = state_M1;     break;
487
+          case '4': state = state_M4;     break;
488
+          default: state = state_IGNORE;
489
+        }
490
+        break;
491
+
492
+      case state_M1:
493
+        switch (c) {
494
+          case '0': state = state_M10;    break;
495
+          case '1': state = state_M11;    break;
496
+          default: state = state_IGNORE;
497
+        }
498
+        break;
499
+
500
+      case state_M10:
501
+        state = (c == '8') ? state_M108 : state_IGNORE;
502
+        break;
503
+
504
+      case state_M11:
505
+        state = (c == '2') ? state_M112 : state_IGNORE;
506
+        break;
507
+
508
+      case state_M4:
509
+        state = (c == '1') ? state_M41 : state_IGNORE;
510
+        break;
511
+
512
+      case state_M41:
513
+        state = (c == '0') ? state_M410 : state_IGNORE;
514
+        break;
515
+
516
+      case state_IGNORE:
517
+        if (c == '\n') state = state_RESET;
518
+        break;
519
+
520
+      default:
521
+        if (c == '\n') {
522
+          switch (state) {
523
+            case state_M108:
524
+              wait_for_heatup = false;
525
+              break;
526
+            case state_M112:
527
+              kill(PSTR(MSG_KILLED));
528
+              break;
529
+            case state_M410:
530
+              quickstop_stepper();
531
+              break;
532
+            default:
533
+              break;
534
+          }
535
+          state = state_RESET;
536
+        }
537
+    }
538
+  }
539
+#endif

+ 38
- 42
Marlin/MarlinSerial.h Parādīt failu

@@ -21,21 +21,18 @@
21 21
  */
22 22
 
23 23
 /**
24
-  HardwareSerial.h - Hardware serial library for Wiring
24
+  MarlinSerial.h - Hardware serial library for Wiring
25 25
   Copyright (c) 2006 Nicholas Zambetti.  All right reserved.
26 26
 
27 27
   Modified 28 September 2010 by Mark Sproul
28
+  Modified 14 February 2016 by Andreas Hardtung (added tx buffer)
29
+
28 30
 */
29 31
 
30 32
 #ifndef MarlinSerial_h
31 33
 #define MarlinSerial_h
32
-#include "Marlin.h"
33
-
34
-#ifndef CRITICAL_SECTION_START
35
-  #define CRITICAL_SECTION_START  unsigned char _sreg = SREG; cli();
36
-  #define CRITICAL_SECTION_END    SREG = _sreg;
37
-#endif
38 34
 
35
+#include "MarlinConfig.h"
39 36
 
40 37
 #ifndef SERIAL_PORT
41 38
   #define SERIAL_PORT 0
@@ -61,14 +58,17 @@
61 58
 #define M_UCSRxB SERIAL_REGNAME(UCSR,SERIAL_PORT,B)
62 59
 #define M_RXENx SERIAL_REGNAME(RXEN,SERIAL_PORT,)
63 60
 #define M_TXENx SERIAL_REGNAME(TXEN,SERIAL_PORT,)
61
+#define M_TXCx SERIAL_REGNAME(TXC,SERIAL_PORT,)
64 62
 #define M_RXCIEx SERIAL_REGNAME(RXCIE,SERIAL_PORT,)
65 63
 #define M_UDREx SERIAL_REGNAME(UDRE,SERIAL_PORT,)
64
+#define M_UDRIEx SERIAL_REGNAME(UDRIE,SERIAL_PORT,)
66 65
 #define M_UDRx SERIAL_REGNAME(UDR,SERIAL_PORT,)
67 66
 #define M_UBRRxH SERIAL_REGNAME(UBRR,SERIAL_PORT,H)
68 67
 #define M_UBRRxL SERIAL_REGNAME(UBRR,SERIAL_PORT,L)
69 68
 #define M_RXCx SERIAL_REGNAME(RXC,SERIAL_PORT,)
70 69
 #define M_USARTx_RX_vect SERIAL_REGNAME(USART,SERIAL_PORT,_RX_vect)
71 70
 #define M_U2Xx SERIAL_REGNAME(U2X,SERIAL_PORT,)
71
+#define M_USARTx_UDRE_vect SERIAL_REGNAME(USART,SERIAL_PORT,_UDRE_vect)
72 72
 
73 73
 
74 74
 #define DEC 10
@@ -87,18 +87,40 @@
87 87
 #ifndef RX_BUFFER_SIZE
88 88
   #define RX_BUFFER_SIZE 128
89 89
 #endif
90
+#ifndef TX_BUFFER_SIZE
91
+  #define TX_BUFFER_SIZE 32
92
+#endif
90 93
 #if !((RX_BUFFER_SIZE == 256) ||(RX_BUFFER_SIZE == 128) ||(RX_BUFFER_SIZE == 64) ||(RX_BUFFER_SIZE == 32) ||(RX_BUFFER_SIZE == 16) ||(RX_BUFFER_SIZE == 8) ||(RX_BUFFER_SIZE == 4) ||(RX_BUFFER_SIZE == 2))
91 94
   #error "RX_BUFFER_SIZE has to be a power of 2 and >= 2"
92 95
 #endif
96
+#if !((TX_BUFFER_SIZE == 256) ||(TX_BUFFER_SIZE == 128) ||(TX_BUFFER_SIZE == 64) ||(TX_BUFFER_SIZE == 32) ||(TX_BUFFER_SIZE == 16) ||(TX_BUFFER_SIZE == 8) ||(TX_BUFFER_SIZE == 4) ||(TX_BUFFER_SIZE == 2) ||(TX_BUFFER_SIZE == 0))
97
+  #error TX_BUFFER_SIZE has to be a power of 2 or 0
98
+#endif
93 99
 
94
-struct ring_buffer {
100
+struct ring_buffer_r {
95 101
   unsigned char buffer[RX_BUFFER_SIZE];
96 102
   volatile uint8_t head;
97 103
   volatile uint8_t tail;
98 104
 };
99 105
 
106
+#if TX_BUFFER_SIZE > 0
107
+  struct ring_buffer_t {
108
+    unsigned char buffer[TX_BUFFER_SIZE];
109
+    volatile uint8_t head;
110
+    volatile uint8_t tail;
111
+  };
112
+#endif
113
+
100 114
 #if UART_PRESENT(SERIAL_PORT)
101
-  extern ring_buffer rx_buffer;
115
+  extern ring_buffer_r rx_buffer;
116
+  #if TX_BUFFER_SIZE > 0
117
+    extern ring_buffer_t tx_buffer;
118
+  #endif
119
+#endif
120
+
121
+#if ENABLED(EMERGENCY_PARSER)
122
+  #include "language.h"
123
+  void emergency_parser(unsigned char c);
102 124
 #endif
103 125
 
104 126
 class MarlinSerial { //: public Stream
@@ -110,39 +132,13 @@ class MarlinSerial { //: public Stream
110 132
     int peek(void);
111 133
     int read(void);
112 134
     void flush(void);
113
-
114
-    FORCE_INLINE uint8_t available(void) {
115
-      CRITICAL_SECTION_START;
116
-        uint8_t h = rx_buffer.head;
117
-        uint8_t t = rx_buffer.tail;
118
-      CRITICAL_SECTION_END;
119
-      return (uint8_t)(RX_BUFFER_SIZE + h - t) & (RX_BUFFER_SIZE - 1);
120
-    }
121
-
122
-    FORCE_INLINE void write(uint8_t c) {
123
-      while (!TEST(M_UCSRxA, M_UDREx))
124
-        ;
125
-      M_UDRx = c;
126
-    }
127
-
128
-    FORCE_INLINE void checkRx(void) {
129
-      if (TEST(M_UCSRxA, M_RXCx)) {
130
-        unsigned char c  =  M_UDRx;
131
-        CRITICAL_SECTION_START;
132
-          uint8_t h = rx_buffer.head;
133
-          uint8_t i = (uint8_t)(h + 1) & (RX_BUFFER_SIZE - 1);
134
-
135
-          // if we should be storing the received character into the location
136
-          // just before the tail (meaning that the head would advance to the
137
-          // current location of the tail), we're about to overflow the buffer
138
-          // and so we don't write the character or advance the head.
139
-          if (i != rx_buffer.tail) {
140
-            rx_buffer.buffer[h] = c;
141
-            rx_buffer.head = i;
142
-          }
143
-        CRITICAL_SECTION_END;
144
-      }
145
-    }
135
+    uint8_t available(void);
136
+    void checkRx(void);
137
+    void write(uint8_t c);
138
+    #if TX_BUFFER_SIZE > 0
139
+      uint8_t availableForWrite(void);
140
+      void flushTX(void);
141
+    #endif
146 142
 
147 143
   private:
148 144
     void printNumber(unsigned long, uint8_t);

+ 2952
- 2340
Marlin/Marlin_main.cpp
Failā izmaiņas netiks attēlotas, jo tās ir par lielu
Parādīt failu


+ 309
- 145
Marlin/SanityCheck.h Parādīt failu

@@ -25,59 +25,61 @@
25 25
  *
26 26
  * Test configuration values for errors at compile-time.
27 27
  */
28
-#ifndef SANITYCHECK_H
29
-#define SANITYCHECK_H
30 28
 
31 29
 /**
32 30
  * Due to the high number of issues related with old versions of Arduino IDE
33
- * we are now warning our users to update their toolkits. In a future Marlin
34
- * release we will stop supporting old IDE versions and will require user
35
- * action to proceed with compilation in such environments.
31
+ * we now prevent Marlin from compiling with older toolkits.
36 32
  */
37 33
 #if !defined(ARDUINO) || ARDUINO < 10600
38 34
   #error "Versions of Arduino IDE prior to 1.6.0 are no longer supported, please update your toolkit."
39 35
 #endif
40 36
 
41 37
 /**
42
- * Marlin release, version and default string
38
+ * We try our best to include sanity checks for all the changes configuration
39
+ * directives because people have a tendency to use outdated config files with
40
+ * the bleding edge source code, but sometimes this is not enough. This check
41
+ * will force a minimum config file revision, otherwise Marlin will not build.
43 42
  */
44
-#ifndef SHORT_BUILD_VERSION
45
-  #error "SHORT_BUILD_VERSION Information must be specified"
46
-#endif
47
-
48
-#ifndef DETAILED_BUILD_VERSION
49
-  #error "BUILD_VERSION Information must be specified"
50
-#endif
51
-
52
-#ifndef STRING_DISTRIBUTION_DATE
53
-  #error "STRING_DISTRIBUTION_DATE Information must be specified"
54
-#endif
55
-
56
-#ifndef PROTOCOL_VERSION
57
-  #error "PROTOCOL_VERSION Information must be specified"
58
-#endif
59
-
60
-#ifndef MACHINE_NAME
61
-  #error "MACHINE_NAME Information must be specified"
62
-#endif
63
-
64
-#ifndef SOURCE_CODE_URL
65
-  #error "SOURCE_CODE_URL Information must be specified"
43
+#if ! defined(CONFIGURATION_H_VERSION) || CONFIGURATION_H_VERSION < REQUIRED_CONFIGURATION_H_VERSION
44
+  #error "You are using an old Configuration.h file, update it before building Marlin."
66 45
 #endif
67 46
 
68
-#ifndef DEFAULT_MACHINE_UUID
69
-  #error "DEFAULT_MACHINE_UUID Information must be specified"
47
+#if ! defined(CONFIGURATION_ADV_H_VERSION) || CONFIGURATION_ADV_H_VERSION < REQUIRED_CONFIGURATION_ADV_H_VERSION
48
+  #error "You are using an old Configuration_adv.h file, update it before building Marlin."
70 49
 #endif
71 50
 
72
-#ifndef WEBSITE_URL
73
-  #error "WEBSITE_URL Information must be specified"
51
+/**
52
+ * Marlin release, version and default string
53
+ */
54
+#ifndef SHORT_BUILD_VERSION
55
+  #error "SHORT_BUILD_VERSION must be specified."
56
+#elif !defined(DETAILED_BUILD_VERSION)
57
+  #error "BUILD_VERSION must be specified."
58
+#elif !defined(STRING_DISTRIBUTION_DATE)
59
+  #error "STRING_DISTRIBUTION_DATE must be specified."
60
+#elif !defined(PROTOCOL_VERSION)
61
+  #error "PROTOCOL_VERSION must be specified."
62
+#elif !defined(MACHINE_NAME)
63
+  #error "MACHINE_NAME must be specified."
64
+#elif !defined(SOURCE_CODE_URL)
65
+  #error "SOURCE_CODE_URL must be specified."
66
+#elif !defined(DEFAULT_MACHINE_UUID)
67
+  #error "DEFAULT_MACHINE_UUID must be specified."
68
+#elif !defined(WEBSITE_URL)
69
+  #error "WEBSITE_URL must be specified."
74 70
 #endif
75 71
 
76 72
 /**
77 73
  * Dual Stepper Drivers
78 74
  */
79
-#if ENABLED(Z_DUAL_STEPPER_DRIVERS) && ENABLED(Y_DUAL_STEPPER_DRIVERS)
80
-  #error "You cannot have dual stepper drivers for both Y and Z."
75
+#if ENABLED(X_DUAL_STEPPER_DRIVERS) && ENABLED(DUAL_X_CARRIAGE)
76
+  #error "DUAL_X_CARRIAGE is not compatible with X_DUAL_STEPPER_DRIVERS."
77
+#elif ENABLED(X_DUAL_STEPPER_DRIVERS) && (!HAS_X2_ENABLE || !HAS_X2_STEP || !HAS_X2_DIR)
78
+  #error "X_DUAL_STEPPER_DRIVERS requires X2 pins (and an extra E plug)."
79
+#elif ENABLED(Y_DUAL_STEPPER_DRIVERS) && (!HAS_Y2_ENABLE || !HAS_Y2_STEP || !HAS_Y2_DIR)
80
+  #error "Y_DUAL_STEPPER_DRIVERS requires Y2 pins (and an extra E plug)."
81
+#elif ENABLED(Z_DUAL_STEPPER_DRIVERS) && (!HAS_Z2_ENABLE || !HAS_Z2_STEP || !HAS_Z2_DIR)
82
+  #error "Z_DUAL_STEPPER_DRIVERS requires Z2 pins (and an extra E plug)."
81 83
 #endif
82 84
 
83 85
 /**
@@ -111,17 +113,28 @@
111 113
 #endif
112 114
 
113 115
 /**
116
+ * Filament Runout needs a pin and either SD Support or Auto print start detection
117
+ */
118
+#if ENABLED(FILAMENT_RUNOUT_SENSOR)
119
+  #if !HAS_FIL_RUNOUT
120
+    #error "FILAMENT_RUNOUT_SENSOR requires FIL_RUNOUT_PIN."
121
+  #elif DISABLED(SDSUPPORT) && DISABLED(PRINTJOB_TIMER_AUTOSTART)
122
+    #error "FILAMENT_RUNOUT_SENSOR requires SDSUPPORT or PRINTJOB_TIMER_AUTOSTART."
123
+  #endif
124
+#endif
125
+
126
+/**
114 127
  * Filament Change with Extruder Runout Prevention
115 128
  */
116
-#if ENABLED(FILAMENTCHANGEENABLE) && ENABLED(EXTRUDER_RUNOUT_PREVENT)
117
-  #error "EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE."
129
+#if ENABLED(FILAMENT_CHANGE_FEATURE) && ENABLED(EXTRUDER_RUNOUT_PREVENT)
130
+  #error "EXTRUDER_RUNOUT_PREVENT is incompatible with FILAMENT_CHANGE_FEATURE."
118 131
 #endif
119 132
 
120 133
 /**
121 134
  * Individual axis homing is useless for DELTAS
122 135
  */
123 136
 #if ENABLED(INDIVIDUAL_AXIS_HOMING_MENU) && ENABLED(DELTA)
124
-  #error INDIVIDUAL_AXIS_HOMING_MENU is incompatible with DELTA kinematics.
137
+  #error "INDIVIDUAL_AXIS_HOMING_MENU is incompatible with DELTA kinematics."
125 138
 #endif
126 139
 
127 140
 /**
@@ -141,41 +154,62 @@
141 154
     #error "EXTRUDERS must be 1 with HEATERS_PARALLEL."
142 155
   #endif
143 156
 
144
-  #if ENABLED(Y_DUAL_STEPPER_DRIVERS)
145
-    #error "EXTRUDERS must be 1 with Y_DUAL_STEPPER_DRIVERS."
146
-  #endif
157
+#elif ENABLED(SINGLENOZZLE)
158
+  #error "SINGLENOZZLE requires 2 or more EXTRUDERS."
159
+#endif
160
+
161
+/**
162
+ * Only one type of extruder allowed
163
+ */
164
+#if (ENABLED(SWITCHING_EXTRUDER) && (ENABLED(SINGLENOZZLE) || ENABLED(MIXING_EXTRUDER))) \
165
+  || (ENABLED(SINGLENOZZLE) && ENABLED(MIXING_EXTRUDER))
166
+    #error "Please define only one type of extruder: SINGLENOZZLE, SWITCHING_EXTRUDER, or MIXING_EXTRUDER."
167
+#endif
147 168
 
148
-  #if ENABLED(Z_DUAL_STEPPER_DRIVERS)
149
-    #error "EXTRUDERS must be 1 with Z_DUAL_STEPPER_DRIVERS."
169
+/**
170
+ * Single Stepper Dual Extruder with switching servo
171
+ */
172
+#if ENABLED(SWITCHING_EXTRUDER)
173
+  #if ENABLED(DUAL_X_CARRIAGE)
174
+    #error "SWITCHING_EXTRUDER and DUAL_X_CARRIAGE are incompatible."
175
+  #elif EXTRUDERS != 2
176
+    #error "SWITCHING_EXTRUDER requires exactly 2 EXTRUDERS."
177
+  #elif NUM_SERVOS < 1
178
+    #error "SWITCHING_EXTRUDER requires NUM_SERVOS >= 1."
150 179
   #endif
180
+#endif
151 181
 
152
-#elif ENABLED(SINGLENOZZLE)
153
-  #error "SINGLENOZZLE requires 2 or more EXTRUDERS."
182
+/**
183
+ * Mixing Extruder requirements
184
+ */
185
+#if ENABLED(MIXING_EXTRUDER)
186
+  #if EXTRUDERS > 1
187
+    #error "MIXING_EXTRUDER currently only supports one extruder."
188
+  #endif
189
+  #if MIXING_STEPPERS < 2
190
+    #error "You must set MIXING_STEPPERS >= 2 for a mixing extruder."
191
+  #endif
192
+  #if ENABLED(FILAMENT_SENSOR)
193
+    #error "MIXING_EXTRUDER is incompatible with FILAMENT_SENSOR. Comment out this line to use it anyway."
194
+  #endif
154 195
 #endif
155 196
 
156 197
 /**
157 198
  * Limited number of servos
158 199
  */
159
-#if NUM_SERVOS > 4
160
-  #error "The maximum number of SERVOS in Marlin is 4."
161
-#endif
162 200
 #if defined(NUM_SERVOS) && NUM_SERVOS > 0
163
-  #if X_ENDSTOP_SERVO_NR >= 0 || Y_ENDSTOP_SERVO_NR >= 0 || Z_ENDSTOP_SERVO_NR >= 0
164
-    #if X_ENDSTOP_SERVO_NR >= NUM_SERVOS
165
-      #error "X_ENDSTOP_SERVO_NR must be smaller than NUM_SERVOS."
166
-    #elif Y_ENDSTOP_SERVO_NR >= NUM_SERVOS
167
-      #error "Y_ENDSTOP_SERVO_NR must be smaller than NUM_SERVOS."
168
-    #elif Z_ENDSTOP_SERVO_NR >= NUM_SERVOS
169
-      #error "Z_ENDSTOP_SERVO_NR must be smaller than NUM_SERVOS."
170
-    #endif
201
+  #if NUM_SERVOS > 4
202
+    #error "The maximum number of SERVOS in Marlin is 4."
203
+  #elif HAS_Z_SERVO_ENDSTOP && Z_ENDSTOP_SERVO_NR >= NUM_SERVOS
204
+    #error "Z_ENDSTOP_SERVO_NR must be smaller than NUM_SERVOS."
171 205
   #endif
172 206
 #endif
173 207
 
174 208
 /**
175 209
  * Servo deactivation depends on servo endstops
176 210
  */
177
-#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE) && !HAS_SERVO_ENDSTOPS
178
-  #error "At least one of the ?_ENDSTOP_SERVO_NR is required for DEACTIVATE_SERVOS_AFTER_MOVE."
211
+#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE) && !HAS_Z_SERVO_ENDSTOP
212
+  #error "Z_ENDSTOP_SERVO_NR is required for DEACTIVATE_SERVOS_AFTER_MOVE."
179 213
 #endif
180 214
 
181 215
 /**
@@ -198,12 +232,10 @@
198 232
 #if ENABLED(MESH_BED_LEVELING)
199 233
   #if ENABLED(DELTA)
200 234
     #error "MESH_BED_LEVELING does not yet support DELTA printers."
201
-  #endif
202
-  #if ENABLED(AUTO_BED_LEVELING_FEATURE)
235
+  #elif ENABLED(AUTO_BED_LEVELING_FEATURE)
203 236
     #error "Select AUTO_BED_LEVELING_FEATURE or MESH_BED_LEVELING, not both."
204
-  #endif
205
-  #if MESH_NUM_X_POINTS > 7 || MESH_NUM_Y_POINTS > 7
206
-    #error "MESH_NUM_X_POINTS and MESH_NUM_Y_POINTS need to be less than 8."
237
+  #elif MESH_NUM_X_POINTS > 9 || MESH_NUM_Y_POINTS > 9
238
+    #error "MESH_NUM_X_POINTS and MESH_NUM_Y_POINTS must be less than 10."
207 239
   #endif
208 240
 #elif ENABLED(MANUAL_BED_LEVELING)
209 241
   #error "MESH_BED_LEVELING is required for MANUAL_BED_LEVELING."
@@ -215,6 +247,21 @@
215 247
 
216 248
 #if PROBE_SELECTED
217 249
 
250
+  #if ENABLED(Z_PROBE_SLED) && ENABLED(DELTA)
251
+    #error "You cannot use Z_PROBE_SLED with DELTA."
252
+  #endif
253
+
254
+  /**
255
+   * NUM_SERVOS is required for a Z servo probe
256
+   */
257
+  #if HAS_Z_SERVO_ENDSTOP
258
+    #ifndef NUM_SERVOS
259
+      #error "You must set NUM_SERVOS for a Z servo probe (Z_ENDSTOP_SERVO_NR)."
260
+    #elif Z_ENDSTOP_SERVO_NR >= NUM_SERVOS
261
+      #error "Z_ENDSTOP_SERVO_NR must be less than NUM_SERVOS."
262
+    #endif
263
+  #endif
264
+
218 265
   /**
219 266
    * A probe needs a pin
220 267
    */
@@ -223,10 +270,16 @@
223 270
   #endif
224 271
 
225 272
   /**
226
-   * Z_MIN_PIN and Z_MIN_PROBE_PIN can't co-exist when Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
273
+   * Require a Z min pin
227 274
    */
228
-  #if HAS_Z_MIN && HAS_Z_MIN_PROBE_PIN && ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN)
229
-    #error "A probe cannot have more than one pin! Use Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN or Z_MIN_PROBE_PIN."
275
+  #if HAS_Z_MIN
276
+     // Z_MIN_PIN and Z_MIN_PROBE_PIN can't co-exist when Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
277
+    #if HAS_Z_MIN_PROBE_PIN && ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN)
278
+      #error "A probe cannot have more than one pin! Use Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN or Z_MIN_PROBE_PIN."
279
+    #endif
280
+  #elif !HAS_Z_MIN_PROBE_PIN || (DISABLED(Z_MIN_PROBE_ENDSTOP) || ENABLED(DISABLE_Z_MIN_PROBE_ENDSTOP))
281
+    // A pin was set for the Z probe, but not enabled.
282
+    #error "A probe requires a Z_MIN or Z_PROBE pin. Z_MIN_PIN or Z_MIN_PROBE_PIN must point to a valid hardware pin."
230 283
   #endif
231 284
 
232 285
   /**
@@ -239,11 +292,10 @@
239 292
   /**
240 293
    * Only allow one probe option to be defined
241 294
    */
242
-  #if (ENABLED(FIX_MOUNTED_PROBE) && (ENABLED(MECHANICAL_PROBE) || ENABLED(Z_PROBE_ALLEN_KEY) || HAS_Z_ENDSTOP_SERVO || ENABLED(Z_PROBE_SLED))) \
243
-       || (ENABLED(MECHANICAL_PROBE) && (ENABLED(Z_PROBE_ALLEN_KEY) || HAS_Z_ENDSTOP_SERVO || ENABLED(Z_PROBE_SLED))) \
244
-       || (ENABLED(Z_PROBE_ALLEN_KEY) && (HAS_Z_ENDSTOP_SERVO || ENABLED(Z_PROBE_SLED))) \
245
-       || (HAS_Z_ENDSTOP_SERVO && ENABLED(Z_PROBE_SLED))
246
-    #error "Please define only one type of probe: Z Servo, MECHANICAL_PROBE, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or FIX_MOUNTED_PROBE."
295
+  #if (ENABLED(FIX_MOUNTED_PROBE) && (ENABLED(Z_PROBE_ALLEN_KEY) || HAS_Z_SERVO_ENDSTOP || ENABLED(Z_PROBE_SLED))) \
296
+       || (ENABLED(Z_PROBE_ALLEN_KEY) && (HAS_Z_SERVO_ENDSTOP || ENABLED(Z_PROBE_SLED))) \
297
+       || (HAS_Z_SERVO_ENDSTOP && ENABLED(Z_PROBE_SLED))
298
+    #error "Please define only one type of probe: Z Servo, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or FIX_MOUNTED_PROBE."
247 299
   #endif
248 300
 
249 301
   /**
@@ -274,38 +326,66 @@
274 326
     //#if Z_ENDSTOP_SERVO_NR < 0
275 327
     //  #error "You must have Z_ENDSTOP_SERVO_NR set to at least 0 or above to use Z_MIN_PROBE_ENDSTOP."
276 328
     //#endif
277
-    //#ifndef SERVO_ENDSTOP_ANGLES
278
-    //  #error "You must have SERVO_ENDSTOP_ANGLES defined for Z Extend and Retract to use Z_MIN_PROBE_ENDSTOP."
329
+    //#ifndef Z_SERVO_ANGLES
330
+    //  #error "You must have Z_SERVO_ANGLES defined for Z Extend and Retract to use Z_MIN_PROBE_ENDSTOP."
279 331
     //#endif
280 332
   #endif
281 333
 
334
+  /**
335
+   * Make sure Z raise values are set
336
+   */
337
+  #if !defined(Z_PROBE_DEPLOY_HEIGHT)
338
+    #error "You must set Z_PROBE_DEPLOY_HEIGHT in your configuration."
339
+  #elif !defined(Z_PROBE_TRAVEL_HEIGHT)
340
+    #error "You must set Z_PROBE_TRAVEL_HEIGHT in your configuration."
341
+  #elif Z_PROBE_DEPLOY_HEIGHT < 0
342
+    #error "Probes need Z_PROBE_DEPLOY_HEIGHT >= 0."
343
+  #elif Z_PROBE_TRAVEL_HEIGHT < 0
344
+    #error "Probes need Z_PROBE_TRAVEL_HEIGHT >= 0."
345
+  #endif
346
+
282 347
 #else
283 348
 
284 349
   /**
285
-   * Require some kind of probe for bed leveling
350
+   * Require some kind of probe for bed leveling and probe testing
286 351
    */
287 352
   #if ENABLED(AUTO_BED_LEVELING_FEATURE)
288
-    #error "AUTO_BED_LEVELING_FEATURE requires a probe! Define a Z Servo, MECHANICAL_PROBE, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or FIX_MOUNTED_PROBE."
353
+    #error "AUTO_BED_LEVELING_FEATURE requires a probe! Define a Z Servo, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or FIX_MOUNTED_PROBE."
354
+  #elif ENABLED(Z_MIN_PROBE_REPEATABILITY_TEST)
355
+    #error "Z_MIN_PROBE_REPEATABILITY_TEST requires a probe! Define a Z Servo, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or FIX_MOUNTED_PROBE."
289 356
   #endif
290 357
 
291 358
 #endif
292 359
 
293 360
 /**
361
+ * Make sure Z_SAFE_HOMING point is reachable
362
+ */
363
+#if ENABLED(Z_SAFE_HOMING)
364
+  #if Z_SAFE_HOMING_X_POINT < MIN_PROBE_X || Z_SAFE_HOMING_X_POINT > MAX_PROBE_X
365
+    #if HAS_BED_PROBE
366
+      #error "Z_SAFE_HOMING_X_POINT can't be reached by the Z probe."
367
+    #else
368
+      #error "Z_SAFE_HOMING_X_POINT can't be reached by the nozzle."
369
+    #endif
370
+  #elif Z_SAFE_HOMING_Y_POINT < MIN_PROBE_Y || Z_SAFE_HOMING_Y_POINT > MAX_PROBE_Y
371
+    #if HAS_BED_PROBE
372
+      #error "Z_SAFE_HOMING_Y_POINT can't be reached by the Z probe."
373
+    #else
374
+      #error "Z_SAFE_HOMING_Y_POINT can't be reached by the nozzle."
375
+    #endif
376
+  #endif
377
+#endif // Z_SAFE_HOMING
378
+
379
+/**
294 380
  * Auto Bed Leveling
295 381
  */
296 382
 #if ENABLED(AUTO_BED_LEVELING_FEATURE)
297 383
 
298 384
   /**
299
-   * Require a Z min pin
385
+   * Delta has limited bed leveling options
300 386
    */
301
-  #if !PIN_EXISTS(Z_MIN)
302
-    #if !PIN_EXISTS(Z_MIN_PROBE) || (DISABLED(Z_MIN_PROBE_ENDSTOP) || ENABLED(DISABLE_Z_MIN_PROBE_ENDSTOP)) // It's possible for someone to set a pin for the Z probe, but not enable it.
303
-      #if ENABLED(Z_MIN_PROBE_REPEATABILITY_TEST)
304
-        #error "You must have a Z_MIN or Z_PROBE endstop to enable Z_MIN_PROBE_REPEATABILITY_TEST."
305
-      #else
306
-        #error "AUTO_BED_LEVELING_FEATURE requires a Z_MIN or Z_PROBE endstop. Z_MIN_PIN or Z_MIN_PROBE_PIN must point to a valid hardware pin."
307
-      #endif
308
-    #endif
387
+  #if ENABLED(DELTA) && DISABLED(AUTO_BED_LEVELING_GRID)
388
+    #error "You must use AUTO_BED_LEVELING_GRID for DELTA bed leveling."
309 389
   #endif
310 390
 
311 391
   /**
@@ -352,13 +432,19 @@
352 432
 #endif // AUTO_BED_LEVELING_FEATURE
353 433
 
354 434
 /**
435
+ * Advance Extrusion
436
+ */
437
+#if ENABLED(ADVANCE) && ENABLED(LIN_ADVANCE)
438
+  #error "You can enable ADVANCE or LIN_ADVANCE, but not both."
439
+#endif
440
+
441
+/**
355 442
  * Filament Width Sensor
356 443
  */
357 444
 #if ENABLED(FILAMENT_WIDTH_SENSOR) && !HAS_FILAMENT_WIDTH_SENSOR
358 445
   #error "FILAMENT_WIDTH_SENSOR requires a FILWIDTH_PIN to be defined."
359 446
 #endif
360 447
 
361
-
362 448
 /**
363 449
  * ULTIPANEL encoder
364 450
  */
@@ -367,26 +453,14 @@
367 453
 #endif
368 454
 
369 455
 #if ENCODER_PULSES_PER_STEP < 0
370
-  #error "ENCODER_PULSES_PER_STEP should not be negative, use REVERSE_MENU_DIRECTION instead"
456
+  #error "ENCODER_PULSES_PER_STEP should not be negative, use REVERSE_MENU_DIRECTION instead."
371 457
 #endif
372 458
 
373 459
 /**
374
- * Delta has limited bed leveling options
460
+ * SAV_3DGLCD display options
375 461
  */
376
-#if ENABLED(DELTA)
377
-
378
-  #if ENABLED(AUTO_BED_LEVELING_FEATURE)
379
-
380
-    #if DISABLED(AUTO_BED_LEVELING_GRID)
381
-      #error "Only AUTO_BED_LEVELING_GRID is supported with DELTA."
382
-    #endif
383
-
384
-    #if ENABLED(Z_PROBE_SLED)
385
-      #error "You cannot use Z_PROBE_SLED with DELTA."
386
-    #endif
387
-
388
-  #endif
389
-
462
+#if ENABLED(U8GLIB_SSD1306) && ENABLED(U8GLIB_SH1106)
463
+  #error "Only enable one SAV_3DGLCD display type: U8GLIB_SSD1306 or U8GLIB_SH1106."
390 464
 #endif
391 465
 
392 466
 /**
@@ -400,10 +474,11 @@
400 474
 #endif
401 475
 
402 476
 /**
403
- * Allen Key Z probe requires Auto Bed Leveling grid and Delta
477
+ * Allen Key
478
+ * Deploying the Allen Key probe uses big moves in z direction. Too dangerous for an unhomed z-axis.
404 479
  */
405
-#if ENABLED(Z_PROBE_ALLEN_KEY) && !(ENABLED(AUTO_BED_LEVELING_GRID) && ENABLED(DELTA))
406
-  #error "Invalid use of Z_PROBE_ALLEN_KEY."
480
+#if ENABLED(Z_PROBE_ALLEN_KEY) && (Z_HOME_DIR < 0) && ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN)
481
+  #error "You can't home to a z min endstop with a Z_PROBE_ALLEN_KEY"
407 482
 #endif
408 483
 
409 484
 /**
@@ -461,54 +536,96 @@
461 536
 /**
462 537
  * Test Heater, Temp Sensor, and Extruder Pins; Sensor Type must also be set.
463 538
  */
464
-#if EXTRUDERS > 3
465
-  #if TEMP_SENSOR_3 == 0
466
-    #error "TEMP_SENSOR_3 is required with 4 EXTRUDERS."
467
-  #elif !HAS_HEATER_3
468
-    #error "HEATER_3_PIN not defined for this board."
469
-  #elif !PIN_EXISTS(TEMP_3)
470
-    #error "TEMP_3_PIN not defined for this board."
471
-  #elif !PIN_EXISTS(E3_STEP) || !PIN_EXISTS(E3_DIR) || !PIN_EXISTS(E3_ENABLE)
472
-    #error "E3_STEP_PIN, E3_DIR_PIN, or E3_ENABLE_PIN not defined for this board."
473
-  #endif
474
-#elif EXTRUDERS > 2
475
-  #if TEMP_SENSOR_2 == 0
476
-    #error "TEMP_SENSOR_2 is required with 3 or more EXTRUDERS."
477
-  #elif !HAS_HEATER_2
478
-    #error "HEATER_2_PIN not defined for this board."
479
-  #elif !PIN_EXISTS(TEMP_2)
480
-    #error "TEMP_2_PIN not defined for this board."
481
-  #elif !PIN_EXISTS(E2_STEP) || !PIN_EXISTS(E2_DIR) || !PIN_EXISTS(E2_ENABLE)
482
-    #error "E2_STEP_PIN, E2_DIR_PIN, or E2_ENABLE_PIN not defined for this board."
539
+#if !HAS_HEATER_0
540
+  #error "HEATER_0_PIN not defined for this board."
541
+#elif !PIN_EXISTS(TEMP_0)
542
+  #error "TEMP_0_PIN not defined for this board."
543
+#elif !PIN_EXISTS(E0_STEP) || !PIN_EXISTS(E0_DIR) || !PIN_EXISTS(E0_ENABLE)
544
+  #error "E0_STEP_PIN, E0_DIR_PIN, or E0_ENABLE_PIN not defined for this board."
545
+#elif TEMP_SENSOR_0 == 0
546
+  #error "TEMP_SENSOR_0 is required."
547
+#endif
548
+
549
+#if HOTENDS > 1 || ENABLED(HEATERS_PARALLEL)
550
+  #if !HAS_HEATER_1
551
+    #error "HEATER_1_PIN not defined for this board."
483 552
   #endif
484
-#elif EXTRUDERS > 1
553
+#endif
554
+
555
+#if HOTENDS > 1
485 556
   #if TEMP_SENSOR_1 == 0
486
-    #error "TEMP_SENSOR_1 is required with 2 or more EXTRUDERS."
557
+    #error "TEMP_SENSOR_1 is required with 2 or more HOTENDS."
487 558
   #elif !PIN_EXISTS(TEMP_1)
488 559
     #error "TEMP_1_PIN not defined for this board."
489
-  #elif !PIN_EXISTS(E1_STEP) || !PIN_EXISTS(E1_DIR) || !PIN_EXISTS(E1_ENABLE)
490
-    #error "E1_STEP_PIN, E1_DIR_PIN, or E1_ENABLE_PIN not defined for this board."
491 560
   #endif
492
-#endif
493
-
494
-#if EXTRUDERS > 1 || ENABLED(HEATERS_PARALLEL)
495
-  #if !HAS_HEATER_1
496
-    #error "HEATER_1_PIN not defined for this board."
561
+  #if HOTENDS > 2
562
+    #if TEMP_SENSOR_2 == 0
563
+      #error "TEMP_SENSOR_2 is required with 3 or more HOTENDS."
564
+    #elif !HAS_HEATER_2
565
+      #error "HEATER_2_PIN not defined for this board."
566
+    #elif !PIN_EXISTS(TEMP_2)
567
+      #error "TEMP_2_PIN not defined for this board."
568
+    #endif
569
+    #if HOTENDS > 3
570
+      #if TEMP_SENSOR_3 == 0
571
+        #error "TEMP_SENSOR_3 is required with 4 HOTENDS."
572
+      #elif !HAS_HEATER_3
573
+        #error "HEATER_3_PIN not defined for this board."
574
+      #elif !PIN_EXISTS(TEMP_3)
575
+        #error "TEMP_3_PIN not defined for this board."
576
+      #endif
577
+    #elif TEMP_SENSOR_3 != 0
578
+      #error "TEMP_SENSOR_3 shouldn't be set with only 3 extruders."
579
+    #endif
580
+  #elif TEMP_SENSOR_2 != 0
581
+    #error "TEMP_SENSOR_2 shouldn't be set with only 2 extruders."
582
+  #elif TEMP_SENSOR_3 != 0
583
+    #error "TEMP_SENSOR_3 shouldn't be set with only 2 extruders."
497 584
   #endif
585
+#elif TEMP_SENSOR_1 != 0 && DISABLED(TEMP_SENSOR_1_AS_REDUNDANT)
586
+  #error "TEMP_SENSOR_1 shouldn't be set with only 1 extruder."
587
+#elif TEMP_SENSOR_2 != 0
588
+  #error "TEMP_SENSOR_2 shouldn't be set with only 1 extruder."
589
+#elif TEMP_SENSOR_3 != 0
590
+  #error "TEMP_SENSOR_3 shouldn't be set with only 1 extruder."
498 591
 #endif
499 592
 
500 593
 #if ENABLED(TEMP_SENSOR_1_AS_REDUNDANT) && TEMP_SENSOR_1 == 0
501 594
   #error "TEMP_SENSOR_1 is required with TEMP_SENSOR_1_AS_REDUNDANT."
502 595
 #endif
503 596
 
504
-#if !HAS_HEATER_0
505
-  #error "HEATER_0_PIN not defined for this board."
506
-#elif !PIN_EXISTS(TEMP_0)
507
-  #error "TEMP_0_PIN not defined for this board."
508
-#elif !PIN_EXISTS(E0_STEP) || !PIN_EXISTS(E0_DIR) || !PIN_EXISTS(E0_ENABLE)
509
-  #error "E0_STEP_PIN, E0_DIR_PIN, or E0_ENABLE_PIN not defined for this board."
510
-#elif TEMP_SENSOR_0 == 0
511
-  #error "TEMP_SENSOR_0 is required."
597
+/**
598
+ * Basic 2-nozzle duplication mode
599
+ */
600
+#if ENABLED(DUAL_NOZZLE_DUPLICATION_MODE)
601
+  #if HOTENDS != 2
602
+    #error "DUAL_NOZZLE_DUPLICATION_MODE requires exactly 2 hotends."
603
+  #elif ENABLED(DUAL_X_CARRIAGE)
604
+    #error "DUAL_NOZZLE_DUPLICATION_MODE is incompatible with DUAL_X_CARRIAGE."
605
+  #elif ENABLED(SINGLENOZZLE)
606
+    #error "DUAL_NOZZLE_DUPLICATION_MODE is incompatible with SINGLENOZZLE."
607
+  #elif ENABLED(MIXING_EXTRUDER)
608
+    #error "DUAL_NOZZLE_DUPLICATION_MODE is incompatible with MIXING_EXTRUDER."
609
+  #elif ENABLED(SWITCHING_EXTRUDER)
610
+    #error "DUAL_NOZZLE_DUPLICATION_MODE is incompatible with SWITCHING_EXTRUDER."
611
+  #endif
612
+#endif
613
+
614
+/**
615
+ * Test Extruder Pins
616
+ */
617
+#if EXTRUDERS > 3
618
+  #if !PIN_EXISTS(E3_STEP) || !PIN_EXISTS(E3_DIR) || !PIN_EXISTS(E3_ENABLE)
619
+    #error "E3_STEP_PIN, E3_DIR_PIN, or E3_ENABLE_PIN not defined for this board."
620
+  #endif
621
+#elif EXTRUDERS > 2
622
+  #if !PIN_EXISTS(E2_STEP) || !PIN_EXISTS(E2_DIR) || !PIN_EXISTS(E2_ENABLE)
623
+    #error "E2_STEP_PIN, E2_DIR_PIN, or E2_ENABLE_PIN not defined for this board."
624
+  #endif
625
+#elif EXTRUDERS > 1
626
+  #if !PIN_EXISTS(E1_STEP) || !PIN_EXISTS(E1_DIR) || !PIN_EXISTS(E1_ENABLE)
627
+    #error "E1_STEP_PIN, E1_DIR_PIN, or E1_ENABLE_PIN not defined for this board."
628
+  #endif
512 629
 #endif
513 630
 
514 631
 /**
@@ -525,6 +642,13 @@
525 642
 #endif
526 643
 
527 644
 /**
645
+ * emergency-command parser
646
+ */
647
+#if ENABLED(EMERGENCY_PARSER) && ENABLED(USBCON)
648
+  #error "EMERGENCY_PARSER does not work on boards with AT90USB processors (USBCON)."
649
+#endif
650
+
651
+ /**
528 652
  * Warnings for old configurations
529 653
  */
530 654
 #if WATCH_TEMP_PERIOD > 500
@@ -537,8 +661,6 @@
537 661
   #error "Z_LATE_ENABLE can't be used with COREXZ."
538 662
 #elif defined(X_HOME_RETRACT_MM)
539 663
   #error "[XYZ]_HOME_RETRACT_MM settings have been renamed [XYZ]_HOME_BUMP_MM."
540
-#elif defined(PROBE_SERVO_DEACTIVATION_DELAY)
541
-  #error "PROBE_SERVO_DEACTIVATION_DELAY has been replaced with DEACTIVATE_SERVOS_AFTER_MOVE and SERVO_DEACTIVATION_DELAY."
542 664
 #elif defined(BEEPER)
543 665
   #error "BEEPER is now BEEPER_PIN. Please update your pins definitions."
544 666
 #elif defined(SDCARDDETECT)
@@ -557,8 +679,6 @@
557 679
   #error "SDSLOW deprecated. Set SPI_SPEED to SPI_HALF_SPEED instead."
558 680
 #elif defined(SDEXTRASLOW)
559 681
   #error "SDEXTRASLOW deprecated. Set SPI_SPEED to SPI_QUARTER_SPEED instead."
560
-#elif defined(Z_RAISE_BEFORE_HOMING)
561
-  #error "Z_RAISE_BEFORE_HOMING is deprecated. Use MIN_Z_HEIGHT_FOR_HOMING instead."
562 682
 #elif defined(FILAMENT_SENSOR)
563 683
   #error "FILAMENT_SENSOR is deprecated. Use FILAMENT_WIDTH_SENSOR instead."
564 684
 #elif defined(DISABLE_MAX_ENDSTOPS) || defined(DISABLE_MIN_ENDSTOPS)
@@ -567,6 +687,50 @@
567 687
   #error "Z_DUAL_ENDSTOPS settings are simplified. Just set Z2_USE_ENDSTOP to the endstop you want to repurpose for Z2"
568 688
 #elif defined(LANGUAGE_INCLUDE)
569 689
   #error "LANGUAGE_INCLUDE has been replaced by LCD_LANGUAGE. Please update your configuration."
690
+#elif defined(EXTRUDER_OFFSET_X) || defined(EXTRUDER_OFFSET_Y)
691
+  #error "EXTRUDER_OFFSET_[XY] is deprecated. Use HOTEND_OFFSET_[XY] instead."
692
+#elif defined(PID_PARAMS_PER_EXTRUDER)
693
+  #error "PID_PARAMS_PER_EXTRUDER is deprecated. Use PID_PARAMS_PER_HOTEND instead."
694
+#elif defined(EXTRUDER_WATTS) || defined(BED_WATTS)
695
+  #error "EXTRUDER_WATTS and BED_WATTS are deprecated. Remove them from your configuration."
696
+#elif defined(SERVO_ENDSTOP_ANGLES)
697
+  #error "SERVO_ENDSTOP_ANGLES is deprecated. Use Z_SERVO_ANGLES instead."
698
+#elif defined(X_ENDSTOP_SERVO_NR) || defined(Y_ENDSTOP_SERVO_NR)
699
+  #error "X_ENDSTOP_SERVO_NR and Y_ENDSTOP_SERVO_NR are deprecated and should be removed."
700
+#elif defined(XY_TRAVEL_SPEED)
701
+  #error "XY_TRAVEL_SPEED is deprecated. Use XY_PROBE_SPEED instead."
702
+#elif defined(PROBE_SERVO_DEACTIVATION_DELAY)
703
+  #error "PROBE_SERVO_DEACTIVATION_DELAY is deprecated. Use DEACTIVATE_SERVOS_AFTER_MOVE instead."
704
+#elif defined(SERVO_DEACTIVATION_DELAY)
705
+  #error "SERVO_DEACTIVATION_DELAY is deprecated. Use SERVO_DELAY instead."
706
+#elif ENABLED(FILAMENTCHANGEENABLE)
707
+  #error "FILAMENTCHANGEENABLE is now FILAMENT_CHANGE_FEATURE. Please update your configuration."
708
+#elif defined(PLA_PREHEAT_HOTEND_TEMP)
709
+  #error "PLA_PREHEAT_HOTEND_TEMP is now PREHEAT_1_TEMP_HOTEND. Please update your configuration."
710
+#elif defined(PLA_PREHEAT_HPB_TEMP)
711
+  #error "PLA_PREHEAT_HPB_TEMP is now PREHEAT_1_TEMP_BED. Please update your configuration."
712
+#elif defined(PLA_PREHEAT_FAN_SPEED)
713
+  #error "PLA_PREHEAT_FAN_SPEED is now PREHEAT_1_FAN_SPEED. Please update your configuration."
714
+#elif defined(ABS_PREHEAT_HOTEND_TEMP)
715
+  #error "ABS_PREHEAT_HOTEND_TEMP is now PREHEAT_2_TEMP_HOTEND. Please update your configuration."
716
+#elif defined(ABS_PREHEAT_HPB_TEMP)
717
+  #error "ABS_PREHEAT_HPB_TEMP is now PREHEAT_2_TEMP_BED. Please update your configuration."
718
+#elif defined(ABS_PREHEAT_FAN_SPEED)
719
+  #error "ABS_PREHEAT_FAN_SPEED is now PREHEAT_2_FAN_SPEED. Please update your configuration."
720
+#elif defined(ENDSTOPS_ONLY_FOR_HOMING)
721
+  #error "ENDSTOPS_ONLY_FOR_HOMING is deprecated. Use (disable) ENDSTOPS_ALWAYS_ON_DEFAULT instead."
722
+#elif defined(HOMING_FEEDRATE)
723
+  #error "HOMING_FEEDRATE is deprecated. Set individual rates with HOMING_FEEDRATE_(XY|Z|E) instead."
724
+#elif defined(MANUAL_HOME_POSITIONS)
725
+  #error "MANUAL_HOME_POSITIONS is deprecated. Set MANUAL_[XYZ]_HOME_POS as-needed instead."
726
+#elif defined(PID_ADD_EXTRUSION_RATE)
727
+  #error "PID_ADD_EXTRUSION_RATE is now PID_EXTRUSION_SCALING and is DISABLED by default. Are you sure you want to use this option? Please update your configuration."
728
+#elif defined(Z_RAISE_BEFORE_HOMING)
729
+  #error "Z_RAISE_BEFORE_HOMING is now Z_HOMING_HEIGHT. Please update your configuration."
730
+#elif defined(MIN_Z_HEIGHT_FOR_HOMING)
731
+  #error "MIN_Z_HEIGHT_FOR_HOMING is now Z_HOMING_HEIGHT. Please update your configuration."
732
+#elif defined(Z_RAISE_BEFORE_PROBING) || defined(Z_RAISE_AFTER_PROBING)
733
+  #error "Z_RAISE_(BEFORE|AFTER)_PROBING are deprecated. Use Z_PROBE_DEPLOY_HEIGHT instead."
734
+#elif defined(Z_RAISE_PROBE_DEPLOY_STOW) || defined(Z_RAISE_BETWEEN_PROBINGS)
735
+  #error "Z_RAISE_PROBE_DEPLOY_STOW and Z_RAISE_BETWEEN_PROBINGS are now Z_PROBE_DEPLOY_HEIGHT and Z_PROBE_TRAVEL_HEIGHT Please update your configuration."
570 736
 #endif
571
-
572
-#endif //SANITYCHECK_H

+ 9
- 8
Marlin/Sd2Card.cpp Parādīt failu

@@ -30,6 +30,7 @@
30 30
 
31 31
 #if ENABLED(SDSUPPORT)
32 32
 #include "Sd2Card.h"
33
+
33 34
 //------------------------------------------------------------------------------
34 35
 #if DISABLED(SOFTWARE_SPI)
35 36
   // functions for hardware SPI
@@ -99,10 +100,10 @@
99 100
     // no interrupts during byte receive - about 8 us
100 101
     cli();
101 102
     // output pin high - like sending 0XFF
102
-    fastDigitalWrite(SPI_MOSI_PIN, HIGH);
103
+    WRITE(SPI_MOSI_PIN, HIGH);
103 104
 
104 105
     for (uint8_t i = 0; i < 8; i++) {
105
-      fastDigitalWrite(SPI_SCK_PIN, HIGH);
106
+      WRITE(SPI_SCK_PIN, HIGH);
106 107
 
107 108
       // adjust so SCK is nice
108 109
       nop;
@@ -110,9 +111,9 @@
110 111
 
111 112
       data <<= 1;
112 113
 
113
-      if (fastDigitalRead(SPI_MISO_PIN)) data |= 1;
114
+      if (READ(SPI_MISO_PIN)) data |= 1;
114 115
 
115
-      fastDigitalWrite(SPI_SCK_PIN, LOW);
116
+      WRITE(SPI_SCK_PIN, LOW);
116 117
     }
117 118
     // enable interrupts
118 119
     sei();
@@ -130,13 +131,13 @@
130 131
     // no interrupts during byte send - about 8 us
131 132
     cli();
132 133
     for (uint8_t i = 0; i < 8; i++) {
133
-      fastDigitalWrite(SPI_SCK_PIN, LOW);
134
+      WRITE(SPI_SCK_PIN, LOW);
134 135
 
135
-      fastDigitalWrite(SPI_MOSI_PIN, data & 0X80);
136
+      WRITE(SPI_MOSI_PIN, data & 0X80);
136 137
 
137 138
       data <<= 1;
138 139
 
139
-      fastDigitalWrite(SPI_SCK_PIN, HIGH);
140
+      WRITE(SPI_SCK_PIN, HIGH);
140 141
     }
141 142
     // hold SCK high for a few ns
142 143
     nop;
@@ -144,7 +145,7 @@
144 145
     nop;
145 146
     nop;
146 147
 
147
-    fastDigitalWrite(SPI_SCK_PIN, LOW);
148
+    WRITE(SPI_SCK_PIN, LOW);
148 149
     // enable interrupts
149 150
     sei();
150 151
   }

+ 8
- 9
Marlin/Sd2Card.h Parādīt failu

@@ -37,7 +37,6 @@
37 37
  * \brief Sd2Card class for V2 SD/SDHC cards
38 38
  */
39 39
 #include "SdFatConfig.h"
40
-#include "Sd2PinMap.h"
41 40
 #include "SdInfo.h"
42 41
 //------------------------------------------------------------------------------
43 42
 // SPI speed is F_CPU/2^(1 + index), 0 <= index <= 6
@@ -137,25 +136,25 @@ uint8_t const SD_CARD_TYPE_SDHC = 3;
137 136
 #if DISABLED(SOFTWARE_SPI)
138 137
   // hardware pin defs
139 138
   /** The default chip select pin for the SD card is SS. */
140
-  uint8_t const  SD_CHIP_SELECT_PIN = SS_PIN;
139
+  #define SD_CHIP_SELECT_PIN SS_PIN
141 140
   // The following three pins must not be redefined for hardware SPI.
142 141
   /** SPI Master Out Slave In pin */
143
-  uint8_t const  SPI_MOSI_PIN = MOSI_PIN;
142
+  #define SPI_MOSI_PIN MOSI_PIN
144 143
   /** SPI Master In Slave Out pin */
145
-  uint8_t const  SPI_MISO_PIN = MISO_PIN;
144
+  #define SPI_MISO_PIN MISO_PIN
146 145
   /** SPI Clock pin */
147
-  uint8_t const  SPI_SCK_PIN = SCK_PIN;
146
+  #define SPI_SCK_PIN SCK_PIN
148 147
 
149 148
 #else  // SOFTWARE_SPI
150 149
 
151 150
   /** SPI chip select pin */
152
-  uint8_t const SD_CHIP_SELECT_PIN = SOFT_SPI_CS_PIN;
151
+  #define SD_CHIP_SELECT_PIN SOFT_SPI_CS_PIN
153 152
   /** SPI Master Out Slave In pin */
154
-  uint8_t const SPI_MOSI_PIN = SOFT_SPI_MOSI_PIN;
153
+  #define SPI_MOSI_PIN SOFT_SPI_MOSI_PIN
155 154
   /** SPI Master In Slave Out pin */
156
-  uint8_t const SPI_MISO_PIN = SOFT_SPI_MISO_PIN;
155
+  #define SPI_MISO_PIN SOFT_SPI_MISO_PIN
157 156
   /** SPI Clock pin */
158
-  uint8_t const SPI_SCK_PIN = SOFT_SPI_SCK_PIN;
157
+  #define SPI_SCK_PIN SOFT_SPI_SCK_PIN
159 158
 #endif  // SOFTWARE_SPI
160 159
 //------------------------------------------------------------------------------
161 160
 /**

+ 0
- 453
Marlin/Sd2PinMap.h Parādīt failu

@@ -1,453 +0,0 @@
1
-/**
2
- * Marlin 3D Printer Firmware
3
- * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
4
- *
5
- * Based on Sprinter and grbl.
6
- * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
7
- *
8
- * This program is free software: you can redistribute it and/or modify
9
- * it under the terms of the GNU General Public License as published by
10
- * the Free Software Foundation, either version 3 of the License, or
11
- * (at your option) any later version.
12
- *
13
- * This program is distributed in the hope that it will be useful,
14
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
- * GNU General Public License for more details.
17
- *
18
- * You should have received a copy of the GNU General Public License
19
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
- *
21
- */
22
-
23
-/**
24
- * Arduino SdFat Library
25
- * Copyright (C) 2010 by William Greiman
26
- *
27
- * This file is part of the Arduino Sd2Card Library
28
- */
29
-// Warning this file was generated by a program.
30
-#include "Marlin.h"
31
-#include "macros.h"
32
-
33
-#if ENABLED(SDSUPPORT)
34
-
35
-#ifndef Sd2PinMap_h
36
-#define Sd2PinMap_h
37
-#include <avr/io.h>
38
-//------------------------------------------------------------------------------
39
-/** struct for mapping digital pins */
40
-struct pin_map_t {
41
-  volatile uint8_t* ddr;
42
-  volatile uint8_t* pin;
43
-  volatile uint8_t* port;
44
-  uint8_t bit;
45
-};
46
-//------------------------------------------------------------------------------
47
-#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) // Mega
48
-
49
-// Two Wire (aka I2C) ports
50
-uint8_t const SDA_PIN = 20;  // D1
51
-uint8_t const SCL_PIN = 21;  // D0
52
-
53
-#undef MOSI_PIN
54
-#undef MISO_PIN
55
-#undef SCK_PIN
56
-// SPI port
57
-uint8_t const SS_PIN = 53;    // B0
58
-uint8_t const MOSI_PIN = 51;  // B2
59
-uint8_t const MISO_PIN = 50;  // B3
60
-uint8_t const SCK_PIN = 52;   // B1
61
-
62
-static const pin_map_t digitalPinMap[] = {
63
-  {&DDRE, &PINE, &PORTE, 0},  // E0  0
64
-  {&DDRE, &PINE, &PORTE, 1},  // E1  1
65
-  {&DDRE, &PINE, &PORTE, 4},  // E4  2
66
-  {&DDRE, &PINE, &PORTE, 5},  // E5  3
67
-  {&DDRG, &PING, &PORTG, 5},  // G5  4
68
-  {&DDRE, &PINE, &PORTE, 3},  // E3  5
69
-  {&DDRH, &PINH, &PORTH, 3},  // H3  6
70
-  {&DDRH, &PINH, &PORTH, 4},  // H4  7
71
-  {&DDRH, &PINH, &PORTH, 5},  // H5  8
72
-  {&DDRH, &PINH, &PORTH, 6},  // H6  9
73
-  {&DDRB, &PINB, &PORTB, 4},  // B4 10
74
-  {&DDRB, &PINB, &PORTB, 5},  // B5 11
75
-  {&DDRB, &PINB, &PORTB, 6},  // B6 12
76
-  {&DDRB, &PINB, &PORTB, 7},  // B7 13
77
-  {&DDRJ, &PINJ, &PORTJ, 1},  // J1 14
78
-  {&DDRJ, &PINJ, &PORTJ, 0},  // J0 15
79
-  {&DDRH, &PINH, &PORTH, 1},  // H1 16
80
-  {&DDRH, &PINH, &PORTH, 0},  // H0 17
81
-  {&DDRD, &PIND, &PORTD, 3},  // D3 18
82
-  {&DDRD, &PIND, &PORTD, 2},  // D2 19
83
-  {&DDRD, &PIND, &PORTD, 1},  // D1 20
84
-  {&DDRD, &PIND, &PORTD, 0},  // D0 21
85
-  {&DDRA, &PINA, &PORTA, 0},  // A0 22
86
-  {&DDRA, &PINA, &PORTA, 1},  // A1 23
87
-  {&DDRA, &PINA, &PORTA, 2},  // A2 24
88
-  {&DDRA, &PINA, &PORTA, 3},  // A3 25
89
-  {&DDRA, &PINA, &PORTA, 4},  // A4 26
90
-  {&DDRA, &PINA, &PORTA, 5},  // A5 27
91
-  {&DDRA, &PINA, &PORTA, 6},  // A6 28
92
-  {&DDRA, &PINA, &PORTA, 7},  // A7 29
93
-  {&DDRC, &PINC, &PORTC, 7},  // C7 30
94
-  {&DDRC, &PINC, &PORTC, 6},  // C6 31
95
-  {&DDRC, &PINC, &PORTC, 5},  // C5 32
96
-  {&DDRC, &PINC, &PORTC, 4},  // C4 33
97
-  {&DDRC, &PINC, &PORTC, 3},  // C3 34
98
-  {&DDRC, &PINC, &PORTC, 2},  // C2 35
99
-  {&DDRC, &PINC, &PORTC, 1},  // C1 36
100
-  {&DDRC, &PINC, &PORTC, 0},  // C0 37
101
-  {&DDRD, &PIND, &PORTD, 7},  // D7 38
102
-  {&DDRG, &PING, &PORTG, 2},  // G2 39
103
-  {&DDRG, &PING, &PORTG, 1},  // G1 40
104
-  {&DDRG, &PING, &PORTG, 0},  // G0 41
105
-  {&DDRL, &PINL, &PORTL, 7},  // L7 42
106
-  {&DDRL, &PINL, &PORTL, 6},  // L6 43
107
-  {&DDRL, &PINL, &PORTL, 5},  // L5 44
108
-  {&DDRL, &PINL, &PORTL, 4},  // L4 45
109
-  {&DDRL, &PINL, &PORTL, 3},  // L3 46
110
-  {&DDRL, &PINL, &PORTL, 2},  // L2 47
111
-  {&DDRL, &PINL, &PORTL, 1},  // L1 48
112
-  {&DDRL, &PINL, &PORTL, 0},  // L0 49
113
-  {&DDRB, &PINB, &PORTB, 3},  // B3 50
114
-  {&DDRB, &PINB, &PORTB, 2},  // B2 51
115
-  {&DDRB, &PINB, &PORTB, 1},  // B1 52
116
-  {&DDRB, &PINB, &PORTB, 0},  // B0 53
117
-  {&DDRF, &PINF, &PORTF, 0},  // F0 54
118
-  {&DDRF, &PINF, &PORTF, 1},  // F1 55
119
-  {&DDRF, &PINF, &PORTF, 2},  // F2 56
120
-  {&DDRF, &PINF, &PORTF, 3},  // F3 57
121
-  {&DDRF, &PINF, &PORTF, 4},  // F4 58
122
-  {&DDRF, &PINF, &PORTF, 5},  // F5 59
123
-  {&DDRF, &PINF, &PORTF, 6},  // F6 60
124
-  {&DDRF, &PINF, &PORTF, 7},  // F7 61
125
-  {&DDRK, &PINK, &PORTK, 0},  // K0 62
126
-  {&DDRK, &PINK, &PORTK, 1},  // K1 63
127
-  {&DDRK, &PINK, &PORTK, 2},  // K2 64
128
-  {&DDRK, &PINK, &PORTK, 3},  // K3 65
129
-  {&DDRK, &PINK, &PORTK, 4},  // K4 66
130
-  {&DDRK, &PINK, &PORTK, 5},  // K5 67
131
-  {&DDRK, &PINK, &PORTK, 6},  // K6 68
132
-  {&DDRK, &PINK, &PORTK, 7}   // K7 69
133
-};
134
-//------------------------------------------------------------------------------
135
-#elif defined(__AVR_ATmega644P__)\
136
-|| defined(__AVR_ATmega644__)\
137
-|| defined(__AVR_ATmega1284P__)
138
-// Sanguino
139
-
140
-// Two Wire (aka I2C) ports
141
-uint8_t const SDA_PIN = 17;  // C1
142
-uint8_t const SCL_PIN = 18;  // C2
143
-
144
-// SPI port
145
-uint8_t const SS_PIN = 4;    // B4
146
-uint8_t const MOSI_PIN = 5;  // B5
147
-uint8_t const MISO_PIN = 6;  // B6
148
-uint8_t const SCK_PIN = 7;   // B7
149
-
150
-static const pin_map_t digitalPinMap[] = {
151
-  {&DDRB, &PINB, &PORTB, 0},  // B0  0
152
-  {&DDRB, &PINB, &PORTB, 1},  // B1  1
153
-  {&DDRB, &PINB, &PORTB, 2},  // B2  2
154
-  {&DDRB, &PINB, &PORTB, 3},  // B3  3
155
-  {&DDRB, &PINB, &PORTB, 4},  // B4  4
156
-  {&DDRB, &PINB, &PORTB, 5},  // B5  5
157
-  {&DDRB, &PINB, &PORTB, 6},  // B6  6
158
-  {&DDRB, &PINB, &PORTB, 7},  // B7  7
159
-  {&DDRD, &PIND, &PORTD, 0},  // D0  8
160
-  {&DDRD, &PIND, &PORTD, 1},  // D1  9
161
-  {&DDRD, &PIND, &PORTD, 2},  // D2 10
162
-  {&DDRD, &PIND, &PORTD, 3},  // D3 11
163
-  {&DDRD, &PIND, &PORTD, 4},  // D4 12
164
-  {&DDRD, &PIND, &PORTD, 5},  // D5 13
165
-  {&DDRD, &PIND, &PORTD, 6},  // D6 14
166
-  {&DDRD, &PIND, &PORTD, 7},  // D7 15
167
-  {&DDRC, &PINC, &PORTC, 0},  // C0 16
168
-  {&DDRC, &PINC, &PORTC, 1},  // C1 17
169
-  {&DDRC, &PINC, &PORTC, 2},  // C2 18
170
-  {&DDRC, &PINC, &PORTC, 3},  // C3 19
171
-  {&DDRC, &PINC, &PORTC, 4},  // C4 20
172
-  {&DDRC, &PINC, &PORTC, 5},  // C5 21
173
-  {&DDRC, &PINC, &PORTC, 6},  // C6 22
174
-  {&DDRC, &PINC, &PORTC, 7},  // C7 23
175
-  {&DDRA, &PINA, &PORTA, 7},  // A7 24
176
-  {&DDRA, &PINA, &PORTA, 6},  // A6 25
177
-  {&DDRA, &PINA, &PORTA, 5},  // A5 26
178
-  {&DDRA, &PINA, &PORTA, 4},  // A4 27
179
-  {&DDRA, &PINA, &PORTA, 3},  // A3 28
180
-  {&DDRA, &PINA, &PORTA, 2},  // A2 29
181
-  {&DDRA, &PINA, &PORTA, 1},  // A1 30
182
-  {&DDRA, &PINA, &PORTA, 0}   // A0 31
183
-};
184
-//------------------------------------------------------------------------------
185
-#elif defined(__AVR_ATmega32U4__)
186
-// Teensy 2.0
187
-
188
-// Two Wire (aka I2C) ports
189
-uint8_t const SDA_PIN = 6;  // D1
190
-uint8_t const SCL_PIN = 5;  // D0
191
-
192
-// SPI port
193
-uint8_t const SS_PIN = 0;    // B0
194
-uint8_t const MOSI_PIN = 2;  // B2
195
-uint8_t const MISO_PIN = 3;  // B3
196
-uint8_t const SCK_PIN = 1;   // B1
197
-
198
-static const pin_map_t digitalPinMap[] = {
199
-  {&DDRB, &PINB, &PORTB, 0},  // B0  0
200
-  {&DDRB, &PINB, &PORTB, 1},  // B1  1
201
-  {&DDRB, &PINB, &PORTB, 2},  // B2  2
202
-  {&DDRB, &PINB, &PORTB, 3},  // B3  3
203
-  {&DDRB, &PINB, &PORTB, 7},  // B7  4
204
-  {&DDRD, &PIND, &PORTD, 0},  // D0  5
205
-  {&DDRD, &PIND, &PORTD, 1},  // D1  6
206
-  {&DDRD, &PIND, &PORTD, 2},  // D2  7
207
-  {&DDRD, &PIND, &PORTD, 3},  // D3  8
208
-  {&DDRC, &PINC, &PORTC, 6},  // C6  9
209
-  {&DDRC, &PINC, &PORTC, 7},  // C7 10
210
-  {&DDRD, &PIND, &PORTD, 6},  // D6 11
211
-  {&DDRD, &PIND, &PORTD, 7},  // D7 12
212
-  {&DDRB, &PINB, &PORTB, 4},  // B4 13
213
-  {&DDRB, &PINB, &PORTB, 5},  // B5 14
214
-  {&DDRB, &PINB, &PORTB, 6},  // B6 15
215
-  {&DDRF, &PINF, &PORTF, 7},  // F7 16
216
-  {&DDRF, &PINF, &PORTF, 6},  // F6 17
217
-  {&DDRF, &PINF, &PORTF, 5},  // F5 18
218
-  {&DDRF, &PINF, &PORTF, 4},  // F4 19
219
-  {&DDRF, &PINF, &PORTF, 1},  // F1 20
220
-  {&DDRF, &PINF, &PORTF, 0},  // F0 21
221
-  {&DDRD, &PIND, &PORTD, 4},  // D4 22
222
-  {&DDRD, &PIND, &PORTD, 5},  // D5 23
223
-  {&DDRE, &PINE, &PORTE, 6}   // E6 24
224
-};
225
-//------------------------------------------------------------------------------
226
-#elif defined(__AVR_AT90USB646__)\
227
-|| defined(__AVR_AT90USB1286__)
228
-// Teensy++ 1.0 & 2.0
229
-
230
-// Two Wire (aka I2C) ports
231
-uint8_t const SDA_PIN = 1;  // D1
232
-uint8_t const SCL_PIN = 0;  // D0
233
-
234
-// SPI port
235
-uint8_t const SS_PIN    = 20;    // B0
236
-uint8_t const MOSI_PIN  = 22;    // B2
237
-uint8_t const MISO_PIN  = 23;    // B3
238
-uint8_t const SCK_PIN   = 21;    // B1
239
-
240
-static const pin_map_t digitalPinMap[] = {
241
-  {&DDRD, &PIND, &PORTD, 0},  // D0  0
242
-  {&DDRD, &PIND, &PORTD, 1},  // D1  1
243
-  {&DDRD, &PIND, &PORTD, 2},  // D2  2
244
-  {&DDRD, &PIND, &PORTD, 3},  // D3  3
245
-  {&DDRD, &PIND, &PORTD, 4},  // D4  4
246
-  {&DDRD, &PIND, &PORTD, 5},  // D5  5
247
-  {&DDRD, &PIND, &PORTD, 6},  // D6  6
248
-  {&DDRD, &PIND, &PORTD, 7},  // D7  7
249
-  {&DDRE, &PINE, &PORTE, 0},  // E0  8
250
-  {&DDRE, &PINE, &PORTE, 1},  // E1  9
251
-  {&DDRC, &PINC, &PORTC, 0},  // C0 10
252
-  {&DDRC, &PINC, &PORTC, 1},  // C1 11
253
-  {&DDRC, &PINC, &PORTC, 2},  // C2 12
254
-  {&DDRC, &PINC, &PORTC, 3},  // C3 13
255
-  {&DDRC, &PINC, &PORTC, 4},  // C4 14
256
-  {&DDRC, &PINC, &PORTC, 5},  // C5 15
257
-  {&DDRC, &PINC, &PORTC, 6},  // C6 16
258
-  {&DDRC, &PINC, &PORTC, 7},  // C7 17
259
-  {&DDRE, &PINE, &PORTE, 6},  // E6 18
260
-  {&DDRE, &PINE, &PORTE, 7},  // E7 19
261
-  {&DDRB, &PINB, &PORTB, 0},  // B0 20
262
-  {&DDRB, &PINB, &PORTB, 1},  // B1 21
263
-  {&DDRB, &PINB, &PORTB, 2},  // B2 22
264
-  {&DDRB, &PINB, &PORTB, 3},  // B3 23
265
-  {&DDRB, &PINB, &PORTB, 4},  // B4 24
266
-  {&DDRB, &PINB, &PORTB, 5},  // B5 25
267
-  {&DDRB, &PINB, &PORTB, 6},  // B6 26
268
-  {&DDRB, &PINB, &PORTB, 7},  // B7 27
269
-  {&DDRA, &PINA, &PORTA, 0},  // A0 28
270
-  {&DDRA, &PINA, &PORTA, 1},  // A1 29
271
-  {&DDRA, &PINA, &PORTA, 2},  // A2 30
272
-  {&DDRA, &PINA, &PORTA, 3},  // A3 31
273
-  {&DDRA, &PINA, &PORTA, 4},  // A4 32
274
-  {&DDRA, &PINA, &PORTA, 5},  // A5 33
275
-  {&DDRA, &PINA, &PORTA, 6},  // A6 34
276
-  {&DDRA, &PINA, &PORTA, 7},  // A7 35
277
-  {&DDRE, &PINE, &PORTE, 4},  // E4 36
278
-  {&DDRE, &PINE, &PORTE, 5},  // E5 37
279
-  {&DDRF, &PINF, &PORTF, 0},  // F0 38
280
-  {&DDRF, &PINF, &PORTF, 1},  // F1 39
281
-  {&DDRF, &PINF, &PORTF, 2},  // F2 40
282
-  {&DDRF, &PINF, &PORTF, 3},  // F3 41
283
-  {&DDRF, &PINF, &PORTF, 4},  // F4 42
284
-  {&DDRF, &PINF, &PORTF, 5},  // F5 43
285
-  {&DDRF, &PINF, &PORTF, 6},  // F6 44
286
-  {&DDRF, &PINF, &PORTF, 7}   // F7 45
287
-};
288
-//------------------------------------------------------------------------------
289
-#elif defined(__AVR_ATmega168__)\
290
-||defined(__AVR_ATmega168P__)\
291
-||defined(__AVR_ATmega328P__)
292
-// 168 and 328 Arduinos
293
-
294
-// Two Wire (aka I2C) ports
295
-uint8_t const SDA_PIN = 18;  // C4
296
-uint8_t const SCL_PIN = 19;  // C5
297
-
298
-// SPI port
299
-uint8_t const SS_PIN = 10;    // B2
300
-uint8_t const MOSI_PIN = 11;  // B3
301
-uint8_t const MISO_PIN = 12;  // B4
302
-uint8_t const SCK_PIN = 13;   // B5
303
-
304
-static const pin_map_t digitalPinMap[] = {
305
-  {&DDRD, &PIND, &PORTD, 0},  // D0  0
306
-  {&DDRD, &PIND, &PORTD, 1},  // D1  1
307
-  {&DDRD, &PIND, &PORTD, 2},  // D2  2
308
-  {&DDRD, &PIND, &PORTD, 3},  // D3  3
309
-  {&DDRD, &PIND, &PORTD, 4},  // D4  4
310
-  {&DDRD, &PIND, &PORTD, 5},  // D5  5
311
-  {&DDRD, &PIND, &PORTD, 6},  // D6  6
312
-  {&DDRD, &PIND, &PORTD, 7},  // D7  7
313
-  {&DDRB, &PINB, &PORTB, 0},  // B0  8
314
-  {&DDRB, &PINB, &PORTB, 1},  // B1  9
315
-  {&DDRB, &PINB, &PORTB, 2},  // B2 10
316
-  {&DDRB, &PINB, &PORTB, 3},  // B3 11
317
-  {&DDRB, &PINB, &PORTB, 4},  // B4 12
318
-  {&DDRB, &PINB, &PORTB, 5},  // B5 13
319
-  {&DDRC, &PINC, &PORTC, 0},  // C0 14
320
-  {&DDRC, &PINC, &PORTC, 1},  // C1 15
321
-  {&DDRC, &PINC, &PORTC, 2},  // C2 16
322
-  {&DDRC, &PINC, &PORTC, 3},  // C3 17
323
-  {&DDRC, &PINC, &PORTC, 4},  // C4 18
324
-  {&DDRC, &PINC, &PORTC, 5}   // C5 19
325
-};
326
-#elif defined(__AVR_ATmega1281__)
327
-// Waspmote
328
-
329
-// Two Wire (aka I2C) ports
330
-uint8_t const SDA_PIN = 41;
331
-uint8_t const SCL_PIN = 40;
332
-
333
-
334
-#undef MOSI_PIN
335
-#undef MISO_PIN
336
-// SPI port
337
-uint8_t const SS_PIN = 16;    // B0
338
-uint8_t const MOSI_PIN = 11;  // B2
339
-uint8_t const MISO_PIN = 12;  // B3
340
-uint8_t const SCK_PIN = 10;   // B1
341
-
342
-static const pin_map_t digitalPinMap[] = {
343
-  {&DDRE, &PINE, &PORTE, 0}, // E0 0
344
-  {&DDRE, &PINE, &PORTE, 1}, // E1 1
345
-  {&DDRE, &PINE, &PORTE, 3}, // E3 2
346
-  {&DDRE, &PINE, &PORTE, 4}, // E4 3
347
-  {&DDRC, &PINC, &PORTC, 4}, // C4 4
348
-  {&DDRC, &PINC, &PORTC, 5}, // C5 5
349
-  {&DDRC, &PINC, &PORTC, 6}, // C6 6
350
-  {&DDRC, &PINC, &PORTC, 7}, // C7 7
351
-  {&DDRA, &PINA, &PORTA, 2}, // A2 8
352
-  {&DDRA, &PINA, &PORTA, 3}, // A3 9
353
-  {&DDRA, &PINA, &PORTA, 4}, // A4 10
354
-  {&DDRD, &PIND, &PORTD, 5}, // D5 11
355
-  {&DDRD, &PIND, &PORTD, 6}, // D6 12
356
-  {&DDRC, &PINC, &PORTC, 1}, // C1 13
357
-  {&DDRF, &PINF, &PORTF, 1}, // F1 14
358
-  {&DDRF, &PINF, &PORTF, 2}, // F2 15
359
-  {&DDRF, &PINF, &PORTF, 3}, // F3 16
360
-  {&DDRF, &PINF, &PORTF, 4}, // F4 17
361
-  {&DDRF, &PINF, &PORTF, 5}, // F5 18
362
-  {&DDRF, &PINF, &PORTF, 6}, // F6 19
363
-  {&DDRF, &PINF, &PORTF, 7}, // F7 20
364
-  {&DDRF, &PINF, &PORTF, 0}, // F0 21
365
-  {&DDRA, &PINA, &PORTA, 1}, // A1 22
366
-  {&DDRD, &PIND, &PORTD, 7}, // D7 23
367
-  {&DDRE, &PINE, &PORTE, 5}, // E5 24
368
-  {&DDRA, &PINA, &PORTA, 6}, // A6 25
369
-  {&DDRE, &PINE, &PORTE, 2}, // E2 26
370
-  {&DDRA, &PINA, &PORTA, 5}, // A5 27
371
-  {&DDRC, &PINC, &PORTC, 0}, // C0 28
372
-  {&DDRB, &PINB, &PORTB, 0}, // B0 29
373
-  {&DDRB, &PINB, &PORTB, 1}, // B1 30
374
-  {&DDRB, &PINB, &PORTB, 2}, // B2 31
375
-  {&DDRB, &PINB, &PORTB, 3}, // B3 32
376
-  {&DDRB, &PINB, &PORTB, 4}, // B4 33
377
-  {&DDRB, &PINB, &PORTB, 5}, // B5 34
378
-  {&DDRA, &PINA, &PORTA, 0}, // A0 35
379
-  {&DDRB, &PINB, &PORTB, 6}, // B6 36
380
-  {&DDRB, &PINB, &PORTB, 7}, // B7 37
381
-  {&DDRE, &PINE, &PORTE, 6}, // E6 38
382
-  {&DDRE, &PINE, &PORTE, 7}, // E7 39
383
-  {&DDRD, &PIND, &PORTD, 0}, // D0 40
384
-  {&DDRD, &PIND, &PORTD, 1}, // D1 41
385
-  {&DDRC, &PINC, &PORTC, 3}, // C3 42
386
-  {&DDRD, &PIND, &PORTD, 2}, // D2 43
387
-  {&DDRD, &PIND, &PORTD, 3}, // D3 44
388
-  {&DDRA, &PINA, &PORTA, 7}, // A7 45
389
-  {&DDRC, &PINC, &PORTC, 2}, // C2 46
390
-  {&DDRD, &PIND, &PORTD, 4}, // D4 47
391
-  {&DDRG, &PING, &PORTG, 2}, // G2 48
392
-  {&DDRG, &PING, &PORTG, 1}, // G1 49
393
-  {&DDRG, &PING, &PORTG, 0}, // G0 50
394
-};
395
-#else  // defined(__AVR_ATmega1280__)
396
-#error "unknown chip"
397
-#endif  // defined(__AVR_ATmega1280__)
398
-//------------------------------------------------------------------------------
399
-static const uint8_t digitalPinCount = COUNT(digitalPinMap);
400
-
401
-uint8_t badPinNumber(void)
402
-  __attribute__((error("Pin number is too large or not a constant")));
403
-
404
-static inline __attribute__((always_inline))
405
-  bool getPinMode(uint8_t pin) {
406
-  if (__builtin_constant_p(pin) && pin < digitalPinCount) {
407
-    return (*digitalPinMap[pin].ddr >> digitalPinMap[pin].bit) & 1;
408
-  }
409
-  else {
410
-    return badPinNumber();
411
-  }
412
-}
413
-static inline __attribute__((always_inline))
414
-  void setPinMode(uint8_t pin, uint8_t mode) {
415
-  if (__builtin_constant_p(pin) && pin < digitalPinCount) {
416
-    if (mode) {
417
-      SBI(*digitalPinMap[pin].ddr, digitalPinMap[pin].bit);
418
-    }
419
-    else {
420
-      CBI(*digitalPinMap[pin].ddr, digitalPinMap[pin].bit);
421
-    }
422
-  }
423
-  else {
424
-    badPinNumber();
425
-  }
426
-}
427
-static inline __attribute__((always_inline))
428
-  bool fastDigitalRead(uint8_t pin) {
429
-  if (__builtin_constant_p(pin) && pin < digitalPinCount) {
430
-    return (*digitalPinMap[pin].pin >> digitalPinMap[pin].bit) & 1;
431
-  }
432
-  else {
433
-    return badPinNumber();
434
-  }
435
-}
436
-static inline __attribute__((always_inline))
437
-  void fastDigitalWrite(uint8_t pin, uint8_t value) {
438
-  if (__builtin_constant_p(pin) && pin < digitalPinCount) {
439
-    if (value) {
440
-      SBI(*digitalPinMap[pin].port, digitalPinMap[pin].bit);
441
-    }
442
-    else {
443
-      CBI(*digitalPinMap[pin].port, digitalPinMap[pin].bit);
444
-    }
445
-  }
446
-  else {
447
-    badPinNumber();
448
-  }
449
-}
450
-#endif  // Sd2PinMap_h
451
-
452
-
453
-#endif

+ 4
- 4
Marlin/SdFatConfig.h Parādīt failu

@@ -104,13 +104,13 @@
104 104
   #define USE_SOFTWARE_SPI 0
105 105
   // define software SPI pins so Mega can use unmodified 168/328 shields
106 106
   /** Software SPI chip select pin for the SD */
107
-  uint8_t const SOFT_SPI_CS_PIN = 10;
107
+  #define SOFT_SPI_CS_PIN 10
108 108
   /** Software SPI Master Out Slave In pin */
109
-  uint8_t const SOFT_SPI_MOSI_PIN = 11;
109
+  #define SOFT_SPI_MOSI_PIN 11
110 110
   /** Software SPI Master In Slave Out pin */
111
-  uint8_t const SOFT_SPI_MISO_PIN = 12;
111
+  #define SOFT_SPI_MISO_PIN 12
112 112
   /** Software SPI Clock pin */
113
-  uint8_t const SOFT_SPI_SCK_PIN = 13;
113
+  #define SOFT_SPI_SCK_PIN 13
114 114
   //------------------------------------------------------------------------------
115 115
   /**
116 116
   * The __cxa_pure_virtual function is an error handler that is invoked when

+ 57
- 39
Marlin/Version.h Parādīt failu

@@ -26,49 +26,67 @@
26 26
  * directive USE_AUTOMATIC_VERSIONING.
27 27
  */
28 28
 
29
-/**
30
- * Marlin release version identifier
31
- */
32
-#define SHORT_BUILD_VERSION "1.1.0-RC6"
29
+#if ENABLED(USE_AUTOMATIC_VERSIONING)
33 30
 
34
-/**
35
- * Verbose version identifier which should contain a reference to the location
36
- * from where the binary was downloaded or the source code was compiled.
37
- */
38
-#define DETAILED_BUILD_VERSION SHORT_BUILD_VERSION " (Github)"
31
+  #include "_Version.h"
39 32
 
40
-/**
41
- * The STRING_DISTRIBUTION_DATE represents when the binary file was built,
42
- * here we define this default string as the date where the latest release
43
- * version was tagged.
44
- */
45
-#define STRING_DISTRIBUTION_DATE "2016-04-27 12:00"
33
+#else
46 34
 
47
-/**
48
- * @todo: Missing documentation block
49
- */
50
-#define PROTOCOL_VERSION "1.0"
35
+  /**
36
+   * Marlin release version identifier
37
+   */
38
+  #define SHORT_BUILD_VERSION "1.1.0-RC7"
51 39
 
52
-/**
53
- * Defines a generic printer name to be output to the LCD after booting Marlin.
54
- */
55
-#define MACHINE_NAME "3D Printer"
40
+  /**
41
+   * Verbose version identifier which should contain a reference to the location
42
+   * from where the binary was downloaded or the source code was compiled.
43
+   */
44
+  #define DETAILED_BUILD_VERSION SHORT_BUILD_VERSION " (Github)"
56 45
 
57
-/**
58
- * The SOURCE_CODE_URL is the location where users will find the Marlin Source
59
- * Code which is installed on the device. In most cases —unless the manufacturer
60
- * has a distinct Github fork— the Source Code URL should just be the main
61
- * Marlin repository.
62
- */
63
-#define SOURCE_CODE_URL "https://github.com/MarlinFirmware/Marlin"
46
+  /**
47
+   * The STRING_DISTRIBUTION_DATE represents when the binary file was built,
48
+   * here we define this default string as the date where the latest release
49
+   * version was tagged.
50
+   */
51
+  #define STRING_DISTRIBUTION_DATE "2016-07-31 12:00"
64 52
 
65
-/**
66
- * Default generic printer UUID.
67
- */
68
-#define DEFAULT_MACHINE_UUID "cede2a2f-41a2-4748-9b12-c55c62f367ff"
53
+  /**
54
+   * Required minimum Configuration.h and Configuration_adv.h file versions.
55
+   *
56
+   * You must increment this version number for every significant change such as,
57
+   * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option on
58
+   * the configuration files.
59
+   */
60
+  #define REQUIRED_CONFIGURATION_H_VERSION 010100
61
+  #define REQUIRED_CONFIGURATION_ADV_H_VERSION 010100
69 62
 
70
-/**
71
- * The WEBSITE_URL is the location where users can get more information such as
72
- * documentation about a specific Marlin release.
73
- */
74
-#define WEBSITE_URL "http://marlinfw.org"
63
+  /**
64
+   * @todo: Missing documentation block
65
+   */
66
+  #define PROTOCOL_VERSION "1.0"
67
+
68
+  /**
69
+   * Defines a generic printer name to be output to the LCD after booting Marlin.
70
+   */
71
+  #define MACHINE_NAME "3D Printer"
72
+
73
+  /**
74
+   * The SOURCE_CODE_URL is the location where users will find the Marlin Source
75
+   * Code which is installed on the device. In most cases —unless the manufacturer
76
+   * has a distinct Github fork— the Source Code URL should just be the main
77
+   * Marlin repository.
78
+   */
79
+  #define SOURCE_CODE_URL "https://github.com/MarlinFirmware/Marlin"
80
+
81
+  /**
82
+   * Default generic printer UUID.
83
+   */
84
+  #define DEFAULT_MACHINE_UUID "cede2a2f-41a2-4748-9b12-c55c62f367ff"
85
+
86
+  /**
87
+   * The WEBSITE_URL is the location where users can get more information such as
88
+   * documentation about a specific Marlin release.
89
+   */
90
+  #define WEBSITE_URL "http://marlinfw.org"
91
+
92
+#endif // USE_AUTOMATIC_VERSIONING

+ 13
- 9
Marlin/boards.h Parādīt failu

@@ -29,20 +29,23 @@
29 29
 #define BOARD_GEN7_12           11   // Gen7 v1.1, v1.2
30 30
 #define BOARD_GEN7_13           12   // Gen7 v1.3
31 31
 #define BOARD_GEN7_14           13   // Gen7 v1.4
32
+#define BOARD_CNCONTROLS_11     111  // Cartesio CN Controls V11
33
+#define BOARD_CNCONTROLS_12     112  // Cartesio CN Controls V12
32 34
 #define BOARD_CHEAPTRONIC       2    // Cheaptronic v1.0
33 35
 #define BOARD_SETHI             20   // Sethi 3D_1
34 36
 #define BOARD_RAMPS_OLD         3    // MEGA/RAMPS up to 1.2
35
-#define BOARD_RAMPS_13_EFB      33   // RAMPS 1.3 (Power outputs: Extruder, Fan, Bed)
36
-#define BOARD_RAMPS_13_EEB      34   // RAMPS 1.3 (Power outputs: Extruder0, Extruder1, Bed)
37
-#define BOARD_RAMPS_13_EFF      35   // RAMPS 1.3 (Power outputs: Extruder, Fan, Fan)
38
-#define BOARD_RAMPS_13_EEF      36   // RAMPS 1.3 (Power outputs: Extruder0, Extruder1, Fan)
37
+#define BOARD_RAMPS_13_EFB      33   // RAMPS 1.3 (Power outputs: Hotend, Fan, Bed)
38
+#define BOARD_RAMPS_13_EEB      34   // RAMPS 1.3 (Power outputs: Hotend0, Hotend1, Bed)
39
+#define BOARD_RAMPS_13_EFF      35   // RAMPS 1.3 (Power outputs: Hotend, Fan0, Fan1)
40
+#define BOARD_RAMPS_13_EEF      36   // RAMPS 1.3 (Power outputs: Hotend0, Hotend1, Fan)
39 41
 #define BOARD_RAMPS_13_SF       38   // RAMPS 1.3 (Power outputs: Spindle, Controller Fan)
40 42
 #define BOARD_FELIX2            37   // Felix 2.0+ Electronics Board (RAMPS like)
41 43
 #define BOARD_RIGIDBOARD        42   // Invent-A-Part RigidBoard
42
-#define BOARD_RAMPS_14_EFB      43   // RAMPS 1.4 (Power outputs: Extruder, Fan, Bed)
43
-#define BOARD_RAMPS_14_EEB      44   // RAMPS 1.4 (Power outputs: Extruder0, Extruder1, Bed)
44
-#define BOARD_RAMPS_14_EFF      45   // RAMPS 1.4 (Power outputs: Extruder, Fan, Fan)
45
-#define BOARD_RAMPS_14_EEF      46   // RAMPS 1.4 (Power outputs: Extruder0, Extruder1, Fan)
44
+#define BOARD_RIGIDBOARD_V2     52   // Invent-A-Part RigidBoard V2
45
+#define BOARD_RAMPS_14_EFB      43   // RAMPS 1.4 (Power outputs: Hotend, Fan, Bed)
46
+#define BOARD_RAMPS_14_EEB      44   // RAMPS 1.4 (Power outputs: Hotend0, Hotend1, Bed)
47
+#define BOARD_RAMPS_14_EFF      45   // RAMPS 1.4 (Power outputs: Hotend, Fan0, Fan1)
48
+#define BOARD_RAMPS_14_EEF      46   // RAMPS 1.4 (Power outputs: Hotend0, Hotend1, Fan)
46 49
 #define BOARD_RAMPS_14_SF       48   // RAMPS 1.4 (Power outputs: Spindle, Controller Fan)
47 50
 #define BOARD_GEN6              5    // Gen6
48 51
 #define BOARD_GEN6_DELUXE       51   // Gen6 deluxe
@@ -58,7 +61,8 @@
58 61
 #define BOARD_ULTIMAKER_OLD     71   // Ultimaker (Older electronics. Pre 1.5.4. This is rare)
59 62
 #define BOARD_ULTIMAIN_2        72   // Ultimainboard 2.x (Uses TEMP_SENSOR 20)
60 63
 #define BOARD_3DRAG             77   // 3Drag Controller
61
-#define BOARD_K8200             78   // Vellemann K8200 Controller (derived from 3Drag Controller)
64
+#define BOARD_K8200             78   // Velleman K8200 Controller (derived from 3Drag Controller)
65
+#define BOARD_K8400             79   // Velleman K8400 Controller (derived from 3Drag Controller)
62 66
 #define BOARD_TEENSYLU          8    // Teensylu
63 67
 #define BOARD_RUMBA             80   // Rumba
64 68
 #define BOARD_PRINTRBOARD       81   // Printrboard (AT90USB1286)

+ 0
- 57
Marlin/buzzer.cpp Parādīt failu

@@ -1,57 +0,0 @@
1
-/**
2
- * Marlin 3D Printer Firmware
3
- * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
4
- *
5
- * Based on Sprinter and grbl.
6
- * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
7
- *
8
- * This program is free software: you can redistribute it and/or modify
9
- * it under the terms of the GNU General Public License as published by
10
- * the Free Software Foundation, either version 3 of the License, or
11
- * (at your option) any later version.
12
- *
13
- * This program is distributed in the hope that it will be useful,
14
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
- * GNU General Public License for more details.
17
- *
18
- * You should have received a copy of the GNU General Public License
19
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
- *
21
- */
22
-
23
-#include "Marlin.h"
24
-#if HAS_BUZZER
25
-  #include "buzzer.h"
26
-  #include "ultralcd.h"
27
-
28
-  void buzz(long duration, uint16_t freq) {
29
-    if (freq > 0) {
30
-      #if ENABLED(LCD_USE_I2C_BUZZER)
31
-        lcd_buzz(duration, freq);
32
-      #elif PIN_EXISTS(BEEPER) // on-board buzzers have no further condition
33
-        SET_OUTPUT(BEEPER_PIN);
34
-        #if ENABLED(SPEAKER) // a speaker needs a AC ore a pulsed DC
35
-          //tone(BEEPER_PIN, freq, duration); // needs a PWMable pin
36
-          unsigned int delay = 1000000 / freq / 2;
37
-          int i = duration * freq / 1000;
38
-          while (i--) {
39
-            WRITE(BEEPER_PIN, HIGH);
40
-            delayMicroseconds(delay);
41
-            WRITE(BEEPER_PIN, LOW);
42
-            delayMicroseconds(delay);
43
-           }
44
-        #else // buzzer has its own resonator - needs a DC
45
-          WRITE(BEEPER_PIN, HIGH);
46
-          delay(duration);
47
-          WRITE(BEEPER_PIN, LOW);
48
-        #endif
49
-      #else
50
-        delay(duration);
51
-      #endif
52
-    }
53
-    else {
54
-      delay(duration);
55
-    }
56
-  }
57
-#endif

+ 121
- 6
Marlin/buzzer.h Parādīt failu

@@ -20,11 +20,126 @@
20 20
  *
21 21
  */
22 22
 
23
-#ifndef BUZZER_H
24
-  #define BUZZER_H
23
+#ifndef __BUZZER_H__
24
+#define __BUZZER_H__
25 25
 
26
-  #if HAS_BUZZER
27
-    void buzz(long duration, uint16_t freq);
28
-  #endif
26
+#include "types.h"
27
+#include "fastio.h"
28
+#include "circularqueue.h"
29
+#include "temperature.h"
29 30
 
30
-#endif //BUZZER_H
31
+#include "MarlinConfig.h"
32
+
33
+#define TONE_QUEUE_LENGTH 4
34
+
35
+/**
36
+ * @brief Tone structure
37
+ * @details Simple abstraction of a tone based on a duration and a frequency.
38
+ */
39
+struct tone_t {
40
+  uint16_t duration;
41
+  uint16_t frequency;
42
+};
43
+
44
+/**
45
+ * @brief Buzzer class
46
+ */
47
+class Buzzer {
48
+  private:
49
+    struct state_t {
50
+      tone_t   tone;
51
+      uint32_t endtime;
52
+    } state;
53
+
54
+  protected:
55
+    CircularQueue<tone_t, TONE_QUEUE_LENGTH> buffer;
56
+
57
+    /**
58
+     * @brief Inverts the sate of a digital PIN
59
+     * @details This will invert the current state of an digital IO pin.
60
+     */
61
+    void invert() {
62
+      TOGGLE(BEEPER_PIN);
63
+    }
64
+
65
+    /**
66
+     * @brief Turn off a digital PIN
67
+     * @details Alias of digitalWrite(PIN, LOW) using FastIO
68
+     */
69
+    void off() {
70
+      WRITE(BEEPER_PIN, LOW);
71
+    }
72
+
73
+    /**
74
+     * @brief Turn on a digital PIN
75
+     * @details Alias of digitalWrite(PIN, HIGH) using FastIO
76
+     */
77
+    void on() {
78
+      WRITE(BEEPER_PIN, HIGH);
79
+    }
80
+
81
+    /**
82
+     * @brief Resets the state of the class
83
+     * @details Brings the class state to a known one.
84
+     */
85
+    void reset() {
86
+      this->off();
87
+      this->state.endtime = 0;
88
+    }
89
+
90
+  public:
91
+    /**
92
+     * @brief Class constructor
93
+     */
94
+    Buzzer() {
95
+      SET_OUTPUT(BEEPER_PIN);
96
+      this->reset();
97
+    }
98
+
99
+    /**
100
+     * @brief Add a tone to the queue
101
+     * @details Adds a tone_t structure to the ring buffer, will block IO if the
102
+     *          queue is full waiting for one slot to get available.
103
+     *
104
+     * @param duration Duration of the tone in milliseconds
105
+     * @param frequency Frequency of the tone in hertz
106
+     */
107
+    void tone(uint16_t const &duration, uint16_t const &frequency = 0) {
108
+      while (buffer.isFull()) {
109
+        this->tick();
110
+        thermalManager.manage_heater();
111
+      }
112
+      this->buffer.enqueue((tone_t) { duration, frequency });
113
+    }
114
+
115
+    /**
116
+     * @brief Loop function
117
+     * @details This function should be called at loop, it will take care of
118
+     *          playing the tones in the queue.
119
+     */
120
+    virtual void tick() {
121
+      const millis_t now = millis();
122
+
123
+      if (!this->state.endtime) {
124
+        if (this->buffer.isEmpty()) return;
125
+
126
+        this->state.tone = this->buffer.dequeue();
127
+        this->state.endtime = now + this->state.tone.duration;
128
+
129
+        if (this->state.tone.frequency > 0) {
130
+          #if ENABLED(SPEAKER)
131
+            CRITICAL_SECTION_START;
132
+            ::tone(BEEPER_PIN, this->state.tone.frequency, this->state.tone.duration);
133
+            CRITICAL_SECTION_END;
134
+          #else
135
+            this->on();
136
+          #endif
137
+        }
138
+      }
139
+      else if (ELAPSED(now, this->state.endtime)) this->reset();
140
+    }
141
+};
142
+
143
+extern Buzzer buzzer;
144
+
145
+#endif

+ 35
- 27
Marlin/cardreader.cpp Parādīt failu

@@ -20,13 +20,15 @@
20 20
  *
21 21
  */
22 22
 
23
-#include "Marlin.h"
24 23
 #include "cardreader.h"
24
+
25 25
 #include "ultralcd.h"
26 26
 #include "stepper.h"
27 27
 #include "temperature.h"
28 28
 #include "language.h"
29 29
 
30
+#include "Marlin.h"
31
+
30 32
 #if ENABLED(SDSUPPORT)
31 33
 
32 34
 CardReader::CardReader() {
@@ -102,7 +104,7 @@ void CardReader::lsDive(const char *prepend, SdFile parent, const char * const m
102 104
       if (!dir.open(parent, lfilename, O_READ)) {
103 105
         if (lsAction == LS_SerialPrint) {
104 106
           SERIAL_ECHO_START;
105
-          SERIAL_ECHOLN(MSG_SD_CANT_OPEN_SUBDIR);
107
+          SERIAL_ECHOPGM(MSG_SD_CANT_OPEN_SUBDIR);
106 108
           SERIAL_ECHOLN(lfilename);
107 109
         }
108 110
       }
@@ -282,6 +284,13 @@ void CardReader::pauseSDPrint() {
282 284
   if (sdprinting) sdprinting = false;
283 285
 }
284 286
 
287
+void CardReader::stopSDPrint() {
288
+  if (sdprinting) {
289
+    sdprinting = false;
290
+    file.close();
291
+  }
292
+}
293
+
285 294
 void CardReader::openLogFile(char* name) {
286 295
   logging = true;
287 296
   openFile(name, false);
@@ -350,8 +359,8 @@ void CardReader::openFile(char* name, bool read, bool push_current/*=false*/) {
350 359
     dirname_start = &name[1];
351 360
     while (dirname_start != NULL) {
352 361
       dirname_end = strchr(dirname_start, '/');
353
-      //SERIAL_ECHO("start:");SERIAL_ECHOLN((int)(dirname_start - name));
354
-      //SERIAL_ECHO("end  :");SERIAL_ECHOLN((int)(dirname_end - name));
362
+      //SERIAL_ECHOPGM("start:");SERIAL_ECHOLN((int)(dirname_start - name));
363
+      //SERIAL_ECHOPGM("end  :");SERIAL_ECHOLN((int)(dirname_end - name));
355 364
       if (dirname_end != NULL && dirname_end > dirname_start) {
356 365
         char subdirname[FILENAME_LENGTH];
357 366
         strncpy(subdirname, dirname_start, dirname_end - dirname_start);
@@ -364,7 +373,7 @@ void CardReader::openFile(char* name, bool read, bool push_current/*=false*/) {
364 373
           return;
365 374
         }
366 375
         else {
367
-          //SERIAL_ECHOLN("dive ok");
376
+          //SERIAL_ECHOLNPGM("dive ok");
368 377
         }
369 378
 
370 379
         curDir = &myDir;
@@ -372,7 +381,7 @@ void CardReader::openFile(char* name, bool read, bool push_current/*=false*/) {
372 381
       }
373 382
       else { // the remainder after all /fsa/fdsa/ is the filename
374 383
         fname = dirname_start;
375
-        //SERIAL_ECHOLN("remainder");
384
+        //SERIAL_ECHOLNPGM("remainder");
376 385
         //SERIAL_ECHOLN(fname);
377 386
         break;
378 387
       }
@@ -385,10 +394,9 @@ void CardReader::openFile(char* name, bool read, bool push_current/*=false*/) {
385 394
   if (read) {
386 395
     if (file.open(curDir, fname, O_READ)) {
387 396
       filesize = file.fileSize();
388
-      SERIAL_PROTOCOLPGM(MSG_SD_FILE_OPENED);
389
-      SERIAL_PROTOCOL(fname);
390
-      SERIAL_PROTOCOLPGM(MSG_SD_SIZE);
391
-      SERIAL_PROTOCOLLN(filesize);
397
+      SERIAL_PROTOCOLPAIR(MSG_SD_FILE_OPENED, fname);
398
+      SERIAL_PROTOCOLPAIR(MSG_SD_SIZE, filesize);
399
+      SERIAL_EOL;
392 400
       sdpos = 0;
393 401
 
394 402
       SERIAL_PROTOCOLLNPGM(MSG_SD_FILE_SELECTED);
@@ -396,21 +404,21 @@ void CardReader::openFile(char* name, bool read, bool push_current/*=false*/) {
396 404
       lcd_setstatus(longFilename[0] ? longFilename : fname);
397 405
     }
398 406
     else {
399
-      SERIAL_PROTOCOLPGM(MSG_SD_OPEN_FILE_FAIL);
400
-      SERIAL_PROTOCOL(fname);
401
-      SERIAL_PROTOCOLPGM(".\n");
407
+      SERIAL_PROTOCOLPAIR(MSG_SD_OPEN_FILE_FAIL, fname);
408
+      SERIAL_PROTOCOLCHAR('.');
409
+      SERIAL_EOL;
402 410
     }
403 411
   }
404 412
   else { //write
405 413
     if (!file.open(curDir, fname, O_CREAT | O_APPEND | O_WRITE | O_TRUNC)) {
406
-      SERIAL_PROTOCOLPGM(MSG_SD_OPEN_FILE_FAIL);
407
-      SERIAL_PROTOCOL(fname);
408
-      SERIAL_PROTOCOLPGM(".\n");
414
+      SERIAL_PROTOCOLPAIR(MSG_SD_OPEN_FILE_FAIL, fname);
415
+      SERIAL_PROTOCOLCHAR('.');
416
+      SERIAL_EOL;
409 417
     }
410 418
     else {
411 419
       saving = true;
412
-      SERIAL_PROTOCOLPGM(MSG_SD_WRITE_TO_FILE);
413
-      SERIAL_PROTOCOLLN(name);
420
+      SERIAL_PROTOCOLPAIR(MSG_SD_WRITE_TO_FILE, name);
421
+      SERIAL_EOL;
414 422
       lcd_setstatus(fname);
415 423
     }
416 424
   }
@@ -431,21 +439,20 @@ void CardReader::removeFile(char* name) {
431 439
     dirname_start = strchr(name, '/') + 1;
432 440
     while (dirname_start != NULL) {
433 441
       dirname_end = strchr(dirname_start, '/');
434
-      //SERIAL_ECHO("start:");SERIAL_ECHOLN((int)(dirname_start - name));
435
-      //SERIAL_ECHO("end  :");SERIAL_ECHOLN((int)(dirname_end - name));
442
+      //SERIAL_ECHOPGM("start:");SERIAL_ECHOLN((int)(dirname_start - name));
443
+      //SERIAL_ECHOPGM("end  :");SERIAL_ECHOLN((int)(dirname_end - name));
436 444
       if (dirname_end != NULL && dirname_end > dirname_start) {
437 445
         char subdirname[FILENAME_LENGTH];
438 446
         strncpy(subdirname, dirname_start, dirname_end - dirname_start);
439 447
         subdirname[dirname_end - dirname_start] = 0;
440 448
         SERIAL_ECHOLN(subdirname);
441 449
         if (!myDir.open(curDir, subdirname, O_READ)) {
442
-          SERIAL_PROTOCOLPGM("open failed, File: ");
443
-          SERIAL_PROTOCOL(subdirname);
450
+          SERIAL_PROTOCOLPAIR("open failed, File: ", subdirname);
444 451
           SERIAL_PROTOCOLCHAR('.');
445 452
           return;
446 453
         }
447 454
         else {
448
-          //SERIAL_ECHOLN("dive ok");
455
+          //SERIAL_ECHOLNPGM("dive ok");
449 456
         }
450 457
 
451 458
         curDir = &myDir;
@@ -453,7 +460,7 @@ void CardReader::removeFile(char* name) {
453 460
       }
454 461
       else { // the remainder after all /fsa/fdsa/ is the filename
455 462
         fname = dirname_start;
456
-        //SERIAL_ECHOLN("remainder");
463
+        //SERIAL_ECHOLNPGM("remainder");
457 464
         //SERIAL_ECHOLN(fname);
458 465
         break;
459 466
       }
@@ -597,19 +604,20 @@ void CardReader::updir() {
597 604
 
598 605
 void CardReader::printingHasFinished() {
599 606
   stepper.synchronize();
607
+  file.close();
600 608
   if (file_subcall_ctr > 0) { // Heading up to a parent file that called current as a procedure.
601
-    file.close();
602 609
     file_subcall_ctr--;
603 610
     openFile(proc_filenames[file_subcall_ctr], true, true);
604 611
     setIndex(filespos[file_subcall_ctr]);
605 612
     startFileprint();
606 613
   }
607 614
   else {
608
-    file.close();
609 615
     sdprinting = false;
610 616
     if (SD_FINISHED_STEPPERRELEASE)
611 617
       enqueue_and_echo_commands_P(PSTR(SD_FINISHED_RELEASECOMMAND));
612
-    thermalManager.autotempShutdown();
618
+    print_job_timer.stop();
619
+    if (print_job_timer.duration() > 60)
620
+      enqueue_and_echo_commands_P(PSTR("M31"));
613 621
   }
614 622
 }
615 623
 

+ 6
- 1
Marlin/cardreader.h Parādīt failu

@@ -23,12 +23,16 @@
23 23
 #ifndef CARDREADER_H
24 24
 #define CARDREADER_H
25 25
 
26
+#include "MarlinConfig.h"
27
+
26 28
 #if ENABLED(SDSUPPORT)
27 29
 
28 30
 #define MAX_DIR_DEPTH 10          // Maximum folder depth
29 31
 
30 32
 #include "SdFile.h"
31
-enum LsAction { LS_SerialPrint, LS_Count, LS_GetFilename };
33
+
34
+#include "types.h"
35
+#include "enum.h"
32 36
 
33 37
 class CardReader {
34 38
 public:
@@ -48,6 +52,7 @@ public:
48 52
   void openAndPrintFile(const char *name);
49 53
   void startFileprint();
50 54
   void pauseSDPrint();
55
+  void stopSDPrint();
51 56
   void getStatus();
52 57
   void printingHasFinished();
53 58
 

+ 145
- 0
Marlin/circularqueue.h Parādīt failu

@@ -0,0 +1,145 @@
1
+/**
2
+ * Marlin 3D Printer Firmware
3
+ * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
4
+ *
5
+ * Based on Sprinter and grbl.
6
+ * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
7
+ *
8
+ * This program is free software: you can redistribute it and/or modify
9
+ * it under the terms of the GNU General Public License as published by
10
+ * the Free Software Foundation, either version 3 of the License, or
11
+ * (at your option) any later version.
12
+ *
13
+ * This program is distributed in the hope that it will be useful,
14
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
+ * GNU General Public License for more details.
17
+ *
18
+ * You should have received a copy of the GNU General Public License
19
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
+ *
21
+ */
22
+
23
+#ifndef __CIRCULARQUEUE_H__
24
+#define __CIRCULARQUEUE_H__
25
+
26
+#include <Arduino.h>
27
+
28
+/**
29
+ * @brief   Circular Queue class
30
+ * @details Implementation of the classic ring buffer data structure
31
+ */
32
+template<typename T, uint8_t N>
33
+class CircularQueue {
34
+  private:
35
+
36
+    /**
37
+     * @brief   Buffer structure
38
+     * @details This structure consolidates all the overhead required to handle
39
+     *          a circular queue such as the pointers and the buffer vector.
40
+     */
41
+    struct buffer_t {
42
+      uint8_t head;
43
+      uint8_t tail;
44
+      uint8_t count;
45
+      uint8_t size;
46
+      T queue[N];
47
+    } buffer;
48
+
49
+  public:
50
+    /**
51
+     * @brief   Class constructor
52
+     * @details This class requires two template parameters, T defines the type
53
+     *          of item this queue will handle and N defines the maximum number of
54
+     *          items that can be stored on the queue.
55
+     */
56
+    CircularQueue<T, N>() {
57
+      this->buffer.size = N;
58
+      this->buffer.count = this->buffer.head = this->buffer.tail = 0;
59
+    }
60
+
61
+    /**
62
+     * @brief   Removes and returns a item from the queue
63
+     * @details Removes the oldest item on the queue, pointed to by the
64
+     *          buffer_t head field. The item is returned to the caller.
65
+     * @return  type T item
66
+     */
67
+    T dequeue() {
68
+      if (this->isEmpty()) return T();
69
+
70
+      uint8_t index = this->buffer.head;
71
+
72
+      --this->buffer.count;
73
+      if (++this->buffer.head == this->buffer.size)
74
+        this->buffer.head = 0;
75
+
76
+      return this->buffer.queue[index];
77
+    }
78
+
79
+    /**
80
+     * @brief   Adds an item to the queue
81
+     * @details Adds an item to the queue on the location pointed by the buffer_t
82
+     *          tail variable. Returns false if no queue space is available.
83
+     * @param   item Item to be added to the queue
84
+     * @return  true if the operation was successful
85
+     */
86
+    bool enqueue(T const &item) {
87
+      if (this->isFull()) return false;
88
+
89
+      this->buffer.queue[this->buffer.tail] = item;
90
+
91
+      ++this->buffer.count;
92
+      if (++this->buffer.tail == this->buffer.size)
93
+        this->buffer.tail = 0;
94
+
95
+      return true;
96
+    }
97
+
98
+    /**
99
+     * @brief   Checks if the queue has no items
100
+     * @details Returns true if there are no items on the queue, false otherwise.
101
+     * @return  true if queue is empty
102
+     */
103
+    bool isEmpty() {
104
+      return this->buffer.count == 0;
105
+    }
106
+
107
+    /**
108
+     * @brief   Checks if the queue is full
109
+     * @details Returns true if the queue is full, false otherwise.
110
+     * @return  true if queue is full
111
+     */
112
+    bool isFull() {
113
+      return this->buffer.count == this->buffer.size;
114
+    }
115
+
116
+    /**
117
+     * @brief   Gets the queue size
118
+     * @details Returns the maximum number of items a queue can have.
119
+     * @return  the queue size
120
+     */
121
+    uint8_t size() {
122
+      return this->buffer.size;
123
+    }
124
+
125
+    /**
126
+     * @brief   Gets the next item from the queue without removing it
127
+     * @details Returns the next item in the queue without removing it
128
+     *          or updating the pointers.
129
+     * @return  first item in the queue
130
+     */
131
+    T peek() {
132
+      return this->buffer.queue[this->buffer.head];
133
+    }
134
+
135
+    /**
136
+     * @brief Gets the number of items on the queue
137
+     * @details Returns the current number of items stored on the queue.
138
+     * @return number of items in the queue
139
+     */
140
+    uint8_t count() {
141
+      return this->buffer.count;
142
+    }
143
+};
144
+
145
+#endif

+ 382
- 335
Marlin/configuration_store.cpp
Failā izmaiņas netiks attēlotas, jo tās ir par lielu
Parādīt failu


+ 1
- 1
Marlin/configuration_store.h Parādīt failu

@@ -23,7 +23,7 @@
23 23
 #ifndef CONFIGURATION_STORE_H
24 24
 #define CONFIGURATION_STORE_H
25 25
 
26
-#include "Configuration.h"
26
+#include "MarlinConfig.h"
27 27
 
28 28
 void Config_ResetDefault();
29 29
 

+ 11
- 11
Marlin/dac_mcp4728.cpp Parādīt failu

@@ -43,9 +43,9 @@ void mcp4728_init() {
43 43
   Wire.begin();
44 44
   Wire.requestFrom(int(DAC_DEV_ADDRESS), 24);
45 45
   while(Wire.available()) {
46
-    int deviceID = Wire.receive();
47
-    int hiByte = Wire.receive();
48
-    int loByte = Wire.receive();
46
+    int deviceID = Wire.read();
47
+    int hiByte = Wire.read();
48
+    int loByte = Wire.read();
49 49
 
50 50
     int isEEPROM = (deviceID & 0B00001000) >> 3;
51 51
     int channel = (deviceID & 0B00110000) >> 4;
@@ -70,10 +70,10 @@ uint8_t mcp4728_analogWrite(uint8_t channel, uint16_t value) {
70 70
  */
71 71
 uint8_t mcp4728_eepromWrite() {
72 72
   Wire.beginTransmission(DAC_DEV_ADDRESS);
73
-  Wire.send(SEQWRITE);
73
+  Wire.write(SEQWRITE);
74 74
   for (uint8_t channel=0; channel <= 3; channel++) {
75
-    Wire.send(DAC_STEPPER_VREF << 7 | 0 << 5 | DAC_STEPPER_GAIN << 4 | highByte(mcp4728_values[channel]));
76
-    Wire.send(lowByte(mcp4728_values[channel]));
75
+    Wire.write(DAC_STEPPER_VREF << 7 | 0 << 5 | DAC_STEPPER_GAIN << 4 | highByte(mcp4728_values[channel]));
76
+    Wire.write(lowByte(mcp4728_values[channel]));
77 77
   }
78 78
   return Wire.endTransmission();
79 79
 }
@@ -83,7 +83,7 @@ uint8_t mcp4728_eepromWrite() {
83 83
  */
84 84
 uint8_t mcp4728_setVref_all(uint8_t value) {
85 85
   Wire.beginTransmission(DAC_DEV_ADDRESS);
86
-  Wire.send(VREFWRITE | value << 3 | value << 2 | value << 1 | value);
86
+  Wire.write(VREFWRITE | value << 3 | value << 2 | value << 1 | value);
87 87
   return Wire.endTransmission();
88 88
 }
89 89
 /**
@@ -91,7 +91,7 @@ uint8_t mcp4728_setVref_all(uint8_t value) {
91 91
  */
92 92
 uint8_t mcp4728_setGain_all(uint8_t value) {
93 93
   Wire.beginTransmission(DAC_DEV_ADDRESS);
94
-  Wire.send(GAINWRITE | value << 3 | value << 2 | value << 1 | value);
94
+  Wire.write(GAINWRITE | value << 3 | value << 2 | value << 1 | value);
95 95
   return Wire.endTransmission();
96 96
 }
97 97
 
@@ -120,8 +120,8 @@ uint16_t mcp4728_getVout(uint8_t channel) {
120 120
 uint8_t mcp4728_fastWrite() {
121 121
   Wire.beginTransmission(DAC_DEV_ADDRESS);
122 122
   for (uint8_t channel=0; channel <= 3; channel++) {
123
-    Wire.send(highByte(mcp4728_values[channel]));
124
-    Wire.send(lowByte(mcp4728_values[channel]));
123
+    Wire.write(highByte(mcp4728_values[channel]));
124
+    Wire.write(lowByte(mcp4728_values[channel]));
125 125
   }
126 126
   return Wire.endTransmission();
127 127
 }
@@ -131,7 +131,7 @@ uint8_t mcp4728_fastWrite() {
131 131
  */
132 132
 uint8_t mcp4728_simpleCommand(byte simpleCommand) {
133 133
   Wire.beginTransmission(GENERALCALL);
134
-  Wire.send(simpleCommand);
134
+  Wire.write(simpleCommand);
135 135
   return Wire.endTransmission();
136 136
 }
137 137
 

+ 16
- 17
Marlin/dac_mcp4728.h Parādīt failu

@@ -27,30 +27,29 @@
27 27
 #ifndef mcp4728_h
28 28
 #define mcp4728_h
29 29
 
30
-#include "Configuration.h"
31
-#include "Configuration_adv.h"
30
+#include "MarlinConfig.h"
32 31
 
33 32
 #if ENABLED(DAC_STEPPER_CURRENT)
34
-#include "WProgram.h"
35 33
 #include "Wire.h"
36
-//#include <Wire.h>
37 34
 
38
-#define defaultVDD 5000
39
-#define BASE_ADDR 0x60
40
-#define RESET 0B00000110
41
-#define WAKE 0B00001001
42
-#define UPDATE 0B00001000
43
-#define MULTIWRITE 0B01000000
44
-#define SINGLEWRITE 0B01011000
45
-#define SEQWRITE 0B01010000
46
-#define VREFWRITE 0B10000000
47
-#define GAINWRITE 0B11000000
35
+#define defaultVDD     5000
36
+#define BASE_ADDR      0x60
37
+#define RESET          0B00000110
38
+#define WAKE           0B00001001
39
+#define UPDATE         0B00001000
40
+#define MULTIWRITE     0B01000000
41
+#define SINGLEWRITE    0B01011000
42
+#define SEQWRITE       0B01010000
43
+#define VREFWRITE      0B10000000
44
+#define GAINWRITE      0B11000000
48 45
 #define POWERDOWNWRITE 0B10100000
49
-#define GENERALCALL 0B0000000
50
-#define GAINWRITE 0B11000000
46
+#define GENERALCALL    0B00000000
47
+#define GAINWRITE      0B11000000
51 48
 
52 49
 // This is taken from the original lib, makes it easy to edit if needed
53
-#define DAC_DEV_ADDRESS (BASE_ADDR | 0x00)
50
+// DAC_OR_ADDRESS defined in pins_BOARD.h  file
51
+#define DAC_DEV_ADDRESS (BASE_ADDR | DAC_OR_ADDRESS)
52
+
54 53
 
55 54
 void mcp4728_init();
56 55
 uint8_t mcp4728_analogWrite(uint8_t channel, uint16_t value);

+ 1
- 1
Marlin/digipot_mcp4451.cpp Parādīt failu

@@ -20,7 +20,7 @@
20 20
  *
21 21
  */
22 22
 
23
-#include "Configuration.h"
23
+#include "MarlinConfig.h"
24 24
 
25 25
 #if ENABLED(DIGIPOT_I2C)
26 26
 

+ 12
- 6
Marlin/dogm_bitmaps.h Parādīt failu

@@ -21,8 +21,14 @@
21 21
  */
22 22
 
23 23
 /**
24
- * BitMap for splashscreen
25
- * Generated with: http://www.digole.com/tools/PicturetoC_Hex_converter.php
24
+ * Standard Marlin Bitmap for splashscreen
25
+ *
26
+ * You may use one of the following tools to generate the C++ bitmap array from
27
+ * a black and white image:
28
+ *
29
+ *  - http://www.marlinfw.org/tools/u8glib/converter.html
30
+ *  - http://www.digole.com/tools/PicturetoC_Hex_converter.php
31
+ *
26 32
  * Please note that using the high-res version takes 402Bytes of PROGMEM.
27 33
  */
28 34
 
@@ -110,7 +116,7 @@
110 116
 // be displayed.
111 117
 
112 118
 #if HAS_TEMP_BED
113
-  #if EXTRUDERS == 1
119
+  #if HOTENDS == 1
114 120
     #define STATUS_SCREENWIDTH     115 //Width in pixels
115 121
     #define STATUS_SCREENHEIGHT     19 //Height in pixels
116 122
     #define STATUS_SCREENBYTEWIDTH  15 //Width in bytes
@@ -160,7 +166,7 @@
160 166
       0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xE0,
161 167
       0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00
162 168
     };
163
-  #elif EXTRUDERS == 2
169
+  #elif HOTENDS == 2
164 170
     #define STATUS_SCREENWIDTH     115 //Width in pixels
165 171
     #define STATUS_SCREENHEIGHT     19 //Height in pixels
166 172
     #define STATUS_SCREENBYTEWIDTH  15 //Width in bytes
@@ -262,7 +268,7 @@
262 268
     };
263 269
   #endif // Extruders
264 270
 #else
265
-  #if EXTRUDERS == 1
271
+  #if HOTENDS == 1
266 272
     #define STATUS_SCREENWIDTH     115 //Width in pixels
267 273
     #define STATUS_SCREENHEIGHT     19 //Height in pixels
268 274
     #define STATUS_SCREENBYTEWIDTH  15 //Width in bytes
@@ -312,7 +318,7 @@
312 318
       0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0,
313 319
       0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
314 320
     };
315
-  #elif EXTRUDERS == 2
321
+  #elif HOTENDS == 2
316 322
     #define STATUS_SCREENWIDTH     115 //Width in pixels
317 323
     #define STATUS_SCREENHEIGHT     19 //Height in pixels
318 324
     #define STATUS_SCREENBYTEWIDTH  15 //Width in bytes

+ 206
- 0
Marlin/dogm_font_data_ISO10646_Greek.h Parādīt failu

@@ -0,0 +1,206 @@
1
+/**
2
+ * Marlin 3D Printer Firmware
3
+ * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
4
+ *
5
+ * Based on Sprinter and grbl.
6
+ * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
7
+ *
8
+ * This program is free software: you can redistribute it and/or modify
9
+ * it under the terms of the GNU General Public License as published by
10
+ * the Free Software Foundation, either version 3 of the License, or
11
+ * (at your option) any later version.
12
+ *
13
+ * This program is distributed in the hope that it will be useful,
14
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
+ * GNU General Public License for more details.
17
+ *
18
+ * You should have received a copy of the GNU General Public License
19
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
+ *
21
+ */
22
+
23
+/*
24
+  Fontname: ISO10646_4_Greek
25
+  Copyright: A. Hardtung, public domain
26
+  Capital A Height: 7, '1' Height: 7
27
+  Calculated Max Values w= 5 h=10 x= 2 y= 6 dx= 6 dy= 0 ascent= 8 len=10
28
+  Font Bounding box     w= 6 h= 9 x= 0 y=-2
29
+  Calculated Min Values           x= 0 y=-2 dx= 0 dy= 0
30
+  Pure Font   ascent = 7 descent=-1
31
+  X Font      ascent = 7 descent=-1
32
+  Max Font    ascent = 8 descent=-2
33
+*/
34
+#include <U8glib.h>
35
+const u8g_fntpgm_uint8_t ISO10646_Greek_5x7[2728] U8G_SECTION(".progmem.ISO10646_Greek_5x7") = {
36
+  0,6,9,0,254,7,1,145,3,32,32,255,255,8,254,7,
37
+  255,0,0,0,6,0,0,1,7,7,6,2,0,128,128,128,
38
+  128,128,0,128,3,2,2,6,1,5,160,160,5,7,7,6,
39
+  0,0,80,80,248,80,248,80,80,5,7,7,6,0,0,32,
40
+  120,160,112,40,240,32,5,7,7,6,0,0,192,200,16,32,
41
+  64,152,24,5,7,7,6,0,0,96,144,160,64,168,144,104,
42
+  2,3,3,6,1,4,192,64,128,3,7,7,6,1,0,32,
43
+  64,128,128,128,64,32,3,7,7,6,1,0,128,64,32,32,
44
+  32,64,128,5,5,5,6,0,1,32,168,112,168,32,5,5,
45
+  5,6,0,1,32,32,248,32,32,2,3,3,6,2,255,192,
46
+  64,128,5,1,1,6,0,3,248,2,2,2,6,2,0,192,
47
+  192,5,5,5,6,0,1,8,16,32,64,128,5,7,7,6,
48
+  0,0,112,136,152,168,200,136,112,3,7,7,6,1,0,64,
49
+  192,64,64,64,64,224,5,7,7,6,0,0,112,136,8,112,
50
+  128,128,248,5,7,7,6,0,0,248,16,32,16,8,8,240,
51
+  5,7,7,6,0,0,16,48,80,144,248,16,16,5,7,7,
52
+  6,0,0,248,128,240,8,8,136,112,5,7,7,6,0,0,
53
+  48,64,128,240,136,136,112,5,7,7,6,0,0,248,8,16,
54
+  32,32,32,32,5,7,7,6,0,0,112,136,136,112,136,136,
55
+  112,5,7,7,6,0,0,112,136,136,120,8,16,96,2,5,
56
+  5,6,2,0,192,192,0,192,192,2,6,6,6,2,255,192,
57
+  192,0,192,64,128,4,7,7,6,0,0,16,32,64,128,64,
58
+  32,16,5,3,3,6,0,2,248,0,248,4,7,7,6,1,
59
+  0,128,64,32,16,32,64,128,5,7,7,6,0,0,112,136,
60
+  8,16,32,0,32,5,6,6,6,0,0,112,136,8,104,168,
61
+  112,5,7,7,6,0,0,112,136,136,248,136,136,136,5,7,
62
+  7,6,0,0,240,136,136,240,136,136,240,5,7,7,6,0,
63
+  0,112,136,128,128,128,136,112,5,7,7,6,0,0,224,144,
64
+  136,136,136,144,224,5,7,7,6,0,0,248,128,128,240,128,
65
+  128,248,5,7,7,6,0,0,248,128,128,240,128,128,128,5,
66
+  7,7,6,0,0,112,136,128,184,136,136,112,5,7,7,6,
67
+  0,0,136,136,136,248,136,136,136,1,7,7,6,2,0,128,
68
+  128,128,128,128,128,128,5,7,7,6,0,0,56,16,16,16,
69
+  16,144,96,5,7,7,6,0,0,136,144,160,192,160,144,136,
70
+  5,7,7,6,0,0,128,128,128,128,128,128,248,5,7,7,
71
+  6,0,0,136,216,168,136,136,136,136,5,7,7,6,0,0,
72
+  136,136,200,168,152,136,136,5,7,7,6,0,0,112,136,136,
73
+  136,136,136,112,5,7,7,6,0,0,240,136,136,240,128,128,
74
+  128,5,7,7,6,0,0,112,136,136,136,168,144,104,5,7,
75
+  7,6,0,0,240,136,136,240,160,144,136,5,7,7,6,0,
76
+  0,120,128,128,112,8,8,240,5,7,7,6,0,0,248,32,
77
+  32,32,32,32,32,5,7,7,6,0,0,136,136,136,136,136,
78
+  136,112,5,7,7,6,0,0,136,136,136,136,136,80,32,5,
79
+  7,7,6,0,0,136,136,136,136,136,168,80,5,7,7,6,
80
+  0,0,136,136,80,32,80,136,136,5,7,7,6,0,0,136,
81
+  136,136,80,32,32,32,5,7,7,6,0,0,248,8,16,32,
82
+  64,128,248,3,7,7,6,1,0,224,128,128,128,128,128,224,
83
+  5,5,5,6,0,1,128,64,32,16,8,3,7,7,6,1,
84
+  0,224,32,32,32,32,32,224,5,3,3,6,0,4,32,80,
85
+  136,5,1,1,6,0,0,248,2,2,2,6,2,5,128,64,
86
+  5,5,5,6,0,0,112,8,120,136,120,5,7,7,6,0,
87
+  0,128,128,176,200,136,136,240,5,5,5,6,0,0,112,128,
88
+  128,136,112,5,7,7,6,0,0,8,8,104,152,136,136,120,
89
+  5,5,5,6,0,0,112,136,248,128,112,5,7,7,6,0,
90
+  0,48,72,224,64,64,64,64,5,6,6,6,0,255,112,136,
91
+  136,120,8,112,5,7,7,6,0,0,128,128,176,200,136,136,
92
+  136,1,7,7,6,2,0,128,0,128,128,128,128,128,3,8,
93
+  8,6,1,255,32,0,32,32,32,32,160,64,4,7,7,6,
94
+  0,0,128,128,144,160,192,160,144,3,7,7,6,1,0,192,
95
+  64,64,64,64,64,224,5,5,5,6,0,0,208,168,168,168,
96
+  168,5,5,5,6,0,0,176,200,136,136,136,5,5,5,6,
97
+  0,0,112,136,136,136,112,5,6,6,6,0,255,240,136,136,
98
+  240,128,128,5,6,6,6,0,255,120,136,136,120,8,8,5,
99
+  5,5,6,0,0,176,200,128,128,128,5,5,5,6,0,0,
100
+  112,128,112,8,240,5,7,7,6,0,0,64,64,224,64,64,
101
+  72,48,5,5,5,6,0,0,136,136,136,152,104,5,5,5,
102
+  6,0,0,136,136,136,80,32,5,5,5,6,0,0,136,136,
103
+  168,168,80,5,5,5,6,0,0,136,80,32,80,136,5,6,
104
+  6,6,0,255,136,136,136,120,8,112,5,5,5,6,0,0,
105
+  248,16,32,64,248,3,7,7,6,1,0,32,64,64,128,64,
106
+  64,32,1,7,7,6,2,0,128,128,128,128,128,128,128,3,
107
+  7,7,6,1,0,128,64,64,32,64,64,128,5,2,2,6,
108
+  0,3,104,144,0,0,0,6,0,0,0,0,0,6,0,0,
109
+  0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,6,
110
+  0,0,2,2,2,6,1,6,64,128,3,3,3,6,1,5,
111
+  32,64,160,5,8,8,6,0,0,64,160,80,80,136,248,136,
112
+  136,2,2,2,6,1,2,192,192,5,8,8,6,0,0,64,
113
+  128,248,128,240,128,128,248,5,8,8,6,0,0,64,128,136,
114
+  136,248,136,136,136,4,8,8,6,0,0,64,128,112,32,32,
115
+  32,32,112,0,0,0,6,0,0,5,8,8,6,0,0,64,
116
+  128,112,136,136,136,136,112,0,0,0,6,0,0,5,8,8,
117
+  6,0,0,64,128,8,136,112,32,32,32,5,8,8,6,0,
118
+  0,64,128,112,136,136,136,80,216,3,8,8,6,1,0,32,
119
+  64,160,0,64,64,64,32,5,7,7,6,0,0,32,80,136,
120
+  136,248,136,136,5,7,7,6,0,0,240,72,72,112,72,72,
121
+  240,5,7,7,6,0,0,248,128,128,128,128,128,128,5,6,
122
+  6,6,0,0,32,80,80,136,136,248,5,7,7,6,0,0,
123
+  248,128,128,240,128,128,248,5,7,7,6,0,0,248,8,16,
124
+  32,64,128,248,5,7,7,6,0,0,136,136,136,248,136,136,
125
+  136,5,7,7,6,0,0,112,136,136,168,136,136,112,3,7,
126
+  7,6,1,0,224,64,64,64,64,64,224,5,7,7,6,0,
127
+  0,136,144,160,192,160,144,136,5,7,7,6,0,0,32,80,
128
+  136,136,136,136,136,5,7,7,6,0,0,136,216,168,168,136,
129
+  136,136,5,7,7,6,0,0,136,200,200,168,152,152,136,5,
130
+  7,7,6,0,0,248,0,0,112,0,0,248,5,7,7,6,
131
+  0,0,112,136,136,136,136,136,112,5,7,7,6,0,0,248,
132
+  80,80,80,80,80,80,5,7,7,6,0,0,240,136,136,240,
133
+  128,128,128,0,0,0,6,0,0,5,7,7,6,0,0,248,
134
+  128,64,32,64,128,248,5,7,7,6,0,0,248,32,32,32,
135
+  32,32,32,5,7,7,6,0,0,136,136,80,32,32,32,32,
136
+  5,7,7,6,0,0,112,32,112,168,112,32,112,5,7,7,
137
+  6,0,0,136,136,80,32,80,136,136,5,7,7,6,0,0,
138
+  168,168,168,168,112,32,32,5,6,6,6,0,0,112,136,136,
139
+  80,80,216,3,8,8,6,1,0,160,0,224,64,64,64,64,
140
+  224,5,8,8,6,0,0,80,0,136,136,136,80,32,32,5,
141
+  8,8,6,0,0,32,64,8,104,152,144,144,104,5,8,8,
142
+  6,0,0,32,64,0,112,136,224,136,112,5,10,10,6,0,
143
+  254,32,64,0,112,136,136,136,136,8,8,2,8,8,6,1,
144
+  0,64,128,0,128,128,128,128,64,5,8,8,6,0,0,16,
145
+  32,80,0,136,136,136,112,5,6,6,6,0,0,8,104,152,
146
+  144,144,104,4,7,7,6,0,254,96,144,240,144,224,128,128,
147
+  5,6,6,6,0,255,136,72,80,32,32,64,5,6,6,6,
148
+  0,0,48,64,112,136,136,112,5,5,5,6,0,0,112,136,
149
+  224,136,112,5,9,9,6,0,254,128,112,64,128,128,128,112,
150
+  8,112,5,7,7,6,0,254,184,200,136,136,136,8,8,5,
151
+  5,5,6,0,0,112,136,248,136,112,3,5,5,6,1,0,
152
+  128,128,128,128,96,4,5,5,6,0,0,144,160,192,160,144,
153
+  5,6,6,6,0,0,64,32,32,80,80,136,5,7,7,6,
154
+  0,254,136,136,136,216,168,128,128,5,5,5,6,0,0,136,
155
+  136,80,96,32,5,10,10,6,0,254,128,224,128,112,32,64,
156
+  128,112,8,112,5,5,5,6,0,0,112,136,136,136,112,5,
157
+  5,5,6,0,0,248,80,80,80,80,5,7,7,6,0,254,
158
+  112,136,136,200,176,128,128,5,7,7,6,0,254,48,64,128,
159
+  64,48,8,112,5,5,5,6,0,0,104,144,144,144,96,4,
160
+  5,5,6,0,0,240,64,64,64,48,5,5,5,6,0,0,
161
+  136,136,144,144,224,5,8,8,6,0,254,48,168,168,168,168,
162
+  112,32,32,5,6,6,6,0,255,136,80,32,32,80,136,5,
163
+  7,7,6,0,254,168,168,168,168,112,32,32,5,5,5,6,
164
+  0,0,80,136,136,168,112,4,7,7,6,0,0,160,0,64,
165
+  64,64,64,48,5,7,7,6,0,0,80,0,136,136,144,144,
166
+  224,4,8,8,6,0,0,32,64,0,96,144,144,144,96,5,
167
+  8,8,6,0,0,32,64,0,136,136,144,144,96,5,8,8,
168
+  6,0,0,32,64,0,80,136,136,168,112,5,7,7,6,0,
169
+  255,144,160,192,160,144,136,16,5,8,8,6,0,0,96,144,
170
+  160,128,240,136,136,112,5,7,7,6,0,0,112,80,56,144,
171
+  144,144,96,5,6,6,6,0,0,152,80,32,32,32,32,5,
172
+  8,8,6,0,0,64,128,152,80,32,32,32,32,5,8,8,
173
+  6,0,0,80,0,152,80,32,32,32,32,5,7,7,6,0,
174
+  255,48,168,168,168,168,112,32,5,5,5,6,0,0,248,80,
175
+  80,80,88,5,6,6,6,0,255,136,80,112,80,136,16,5,
176
+  7,7,6,0,255,112,136,136,136,112,32,112,5,6,6,6,
177
+  0,255,112,136,136,112,32,112,5,6,6,6,0,0,112,136,
178
+  128,112,32,112,5,7,7,6,0,254,8,112,128,128,112,16,
179
+  96,5,6,6,6,0,0,248,128,128,240,128,128,4,5,5,
180
+  6,0,0,240,128,224,128,128,5,6,6,6,0,0,248,0,
181
+  0,112,0,248,4,5,5,6,0,0,64,128,240,16,32,5,
182
+  7,7,6,0,0,224,80,40,40,8,8,16,5,7,7,6,
183
+  0,0,192,32,80,40,8,8,8,5,8,8,6,0,254,168,
184
+  168,168,168,168,88,8,112,5,7,7,6,0,254,168,168,168,
185
+  168,88,8,112,5,6,6,6,0,0,104,136,136,120,8,8,
186
+  5,6,6,6,0,255,104,136,136,120,8,8,4,8,8,6,
187
+  0,254,128,224,144,144,144,144,32,192,5,5,5,6,0,0,
188
+  104,144,112,16,224,5,6,6,6,0,0,96,144,16,96,136,
189
+  112,4,6,6,6,0,0,96,144,16,96,128,112,5,6,6,
190
+  6,0,0,136,80,32,80,136,248,5,5,5,6,0,0,136,
191
+  80,32,80,112,5,6,6,6,0,0,120,128,240,136,136,112,
192
+  4,5,5,6,0,0,240,128,224,144,96,3,6,6,6,1,
193
+  0,64,224,64,64,64,64,3,6,6,6,1,255,64,224,64,
194
+  64,64,128,5,5,5,6,0,0,136,80,112,80,136,5,7,
195
+  7,6,0,254,112,136,136,136,240,128,112,4,5,5,6,0,
196
+  0,112,128,128,128,112,2,8,8,6,1,255,64,0,192,64,
197
+  64,64,64,128,5,7,7,6,0,0,112,136,136,248,136,136,
198
+  112,4,5,5,6,0,0,112,128,224,128,112,4,5,5,6,
199
+  0,0,224,16,112,16,224,5,7,7,6,0,0,128,240,136,
200
+  136,136,240,128,4,7,7,6,0,255,128,224,144,144,144,224,
201
+  128,5,6,6,6,0,0,112,136,128,128,136,112,5,6,6,
202
+  6,0,0,136,216,168,136,136,136,5,7,7,6,0,254,136,
203
+  216,168,136,136,128,128,5,8,8,6,0,254,112,136,136,136,
204
+  112,64,224,64,5,6,6,6,0,0,112,136,8,8,136,112,
205
+  5,6,6,6,0,0,112,136,160,128,136,112,5,6,6,6,
206
+  0,0,112,136,40,8,136,112};

+ 155
- 0
Marlin/duration_t.h Parādīt failu

@@ -0,0 +1,155 @@
1
+/**
2
+ * Marlin 3D Printer Firmware
3
+ * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
4
+ *
5
+ * Based on Sprinter and grbl.
6
+ * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
7
+ *
8
+ * This program is free software: you can redistribute it and/or modify
9
+ * it under the terms of the GNU General Public License as published by
10
+ * the Free Software Foundation, either version 3 of the License, or
11
+ * (at your option) any later version.
12
+ *
13
+ * This program is distributed in the hope that it will be useful,
14
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
+ * GNU General Public License for more details.
17
+ *
18
+ * You should have received a copy of the GNU General Public License
19
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
+ *
21
+ */
22
+
23
+#ifndef __DURATION_T__
24
+#define __DURATION_T__
25
+
26
+struct duration_t {
27
+  /**
28
+   * @brief Duration is stored in seconds
29
+   */
30
+  uint32_t value;
31
+
32
+  /**
33
+   * @brief Constructor
34
+   */
35
+  duration_t()
36
+    : duration_t(0) {};
37
+
38
+  /**
39
+   * @brief Constructor
40
+   *
41
+   * @param seconds The number of seconds
42
+   */
43
+  duration_t(uint32_t const &seconds) {
44
+    this->value = seconds;
45
+  }
46
+
47
+  /**
48
+   * @brief Equality comparison
49
+   * @details Overloads the equality comparison operator
50
+   *
51
+   * @param value The number of seconds to compare to
52
+   * @return True if both durations are equal
53
+   */
54
+  bool operator==(const uint32_t &value) const {
55
+    return (this->value == value);
56
+  }
57
+
58
+  /**
59
+   * @brief Inequality comparison
60
+   * @details Overloads the inequality comparison operator
61
+   *
62
+   * @param value The number of seconds to compare to
63
+   * @return False if both durations are equal
64
+   */
65
+  bool operator!=(const uint32_t &value) const {
66
+    return ! this->operator==(value);
67
+  }
68
+
69
+  /**
70
+   * @brief Formats the duration as years
71
+   * @return The number of years
72
+   */
73
+  inline uint8_t year() const {
74
+    return this->day() / 365;
75
+  }
76
+
77
+  /**
78
+   * @brief Formats the duration as days
79
+   * @return The number of days
80
+   */
81
+  inline uint16_t day() const {
82
+    return this->hour() / 24;
83
+  }
84
+
85
+  /**
86
+   * @brief Formats the duration as hours
87
+   * @return The number of hours
88
+   */
89
+  inline uint32_t hour() const {
90
+    return this->minute() / 60;
91
+  }
92
+
93
+  /**
94
+   * @brief Formats the duration as minutes
95
+   * @return The number of minutes
96
+   */
97
+  inline uint32_t minute() const {
98
+    return this->second() / 60;
99
+  }
100
+
101
+  /**
102
+   * @brief Formats the duration as seconds
103
+   * @return The number of seconds
104
+   */
105
+  inline uint32_t second() const {
106
+    return this->value;
107
+  }
108
+
109
+  /**
110
+   * @brief Formats the duration as a string
111
+   * @details String will be formated using a "full" representation of duration
112
+   *
113
+   * @param buffer The array pointed to must be able to accommodate 21 bytes
114
+   *
115
+   * Output examples:
116
+   *  123456789012345678901 (strlen)
117
+   *  135y 364d 23h 59m 59s
118
+   *  364d 23h 59m 59s
119
+   *  23h 59m 59s
120
+   *  59m 59s
121
+   *  59s
122
+   */
123
+  void toString(char *buffer) const {
124
+    int y = this->year(),
125
+        d = this->day() % 365,
126
+        h = this->hour() % 24,
127
+        m = this->minute() % 60,
128
+        s = this->second() % 60;
129
+
130
+    if (y) sprintf_P(buffer, PSTR("%iy %id %ih %im %is"), y, d, h, m, s);
131
+    else if (d) sprintf_P(buffer, PSTR("%id %ih %im %is"), d, h, m, s);
132
+    else if (h) sprintf_P(buffer, PSTR("%ih %im %is"), h, m, s);
133
+    else if (m) sprintf_P(buffer, PSTR("%im %is"), m, s);
134
+    else sprintf_P(buffer, PSTR("%is"), s);
135
+  }
136
+
137
+  /**
138
+   * @brief Formats the duration as a string
139
+   * @details String will be formated using a "digital" representation of duration
140
+   *
141
+   * @param buffer The array pointed to must be able to accommodate 10 bytes
142
+   *
143
+   * Output examples:
144
+   *  1234567890 (strlen)
145
+   *  1193046:59
146
+   */
147
+  void toDigital(char *buffer) const {
148
+    int h = this->hour() % 24,
149
+        m = this->minute() % 60;
150
+
151
+    sprintf_P(buffer, PSTR("%02i:%02i"), h, m);
152
+  }
153
+};
154
+
155
+#endif // __DURATION_T__

+ 29
- 15
Marlin/endstops.cpp Parādīt failu

@@ -36,19 +36,33 @@
36 36
 
37 37
 Endstops endstops;
38 38
 
39
-Endstops::Endstops() {
40
-  enable_globally(
41
-    #if ENABLED(ENDSTOPS_ONLY_FOR_HOMING)
42
-      false
43
-    #else
44
-      true
45
-    #endif
46
-  );
47
-  enable(true);
48
-  #if HAS_BED_PROBE
49
-    enable_z_probe(false);
50
-  #endif
51
-} // Endstops::Endstops
39
+// public:
40
+
41
+bool  Endstops::enabled = true,
42
+      Endstops::enabled_globally =
43
+        #if ENABLED(ENDSTOPS_ALWAYS_ON_DEFAULT)
44
+          (true)
45
+        #else
46
+          (false)
47
+        #endif
48
+      ;
49
+volatile char Endstops::endstop_hit_bits; // use X_MIN, Y_MIN, Z_MIN and Z_MIN_PROBE as BIT value
50
+
51
+#if ENABLED(Z_DUAL_ENDSTOPS)
52
+  uint16_t
53
+#else
54
+  byte
55
+#endif
56
+    Endstops::current_endstop_bits = 0,
57
+    Endstops::old_endstop_bits = 0;
58
+
59
+#if HAS_BED_PROBE
60
+  volatile bool Endstops::z_probe_enabled = false;
61
+#endif
62
+
63
+/**
64
+ * Class and Instance Methods
65
+ */
52 66
 
53 67
 void Endstops::init() {
54 68
 
@@ -158,7 +172,7 @@ void Endstops::report_state() {
158 172
       if (stepper.abort_on_endstop_hit) {
159 173
         card.sdprinting = false;
160 174
         card.closefile();
161
-        stepper.quick_stop();
175
+        quickstop_stepper();
162 176
         thermalManager.disable_all_heaters(); // switch off all heaters.
163 177
       }
164 178
     #endif
@@ -166,7 +180,7 @@ void Endstops::report_state() {
166 180
 } // Endstops::report_state
167 181
 
168 182
 void Endstops::M119() {
169
-  SERIAL_PROTOCOLLN(MSG_M119_REPORT);
183
+  SERIAL_PROTOCOLLNPGM(MSG_M119_REPORT);
170 184
   #if HAS_X_MIN
171 185
     SERIAL_PROTOCOLPGM(MSG_X_MIN);
172 186
     SERIAL_PROTOCOLLN(((READ(X_MIN_PIN)^X_MIN_ENDSTOP_INVERTING) ? MSG_ENDSTOP_HIT : MSG_ENDSTOP_OPEN));

+ 17
- 27
Marlin/endstops.h Parādīt failu

@@ -27,33 +27,23 @@
27 27
 #ifndef ENDSTOPS_H
28 28
 #define ENDSTOPS_H
29 29
 
30
-enum EndstopEnum {X_MIN = 0, Y_MIN = 1, Z_MIN = 2, Z_MIN_PROBE = 3, X_MAX = 4, Y_MAX = 5, Z_MAX = 6, Z2_MIN = 7, Z2_MAX = 8};
30
+#include "enum.h"
31 31
 
32 32
 class Endstops {
33 33
 
34 34
   public:
35 35
 
36
-    volatile char endstop_hit_bits; // use X_MIN, Y_MIN, Z_MIN and Z_MIN_PROBE as BIT value
36
+    static bool enabled, enabled_globally;
37
+    static volatile char endstop_hit_bits; // use X_MIN, Y_MIN, Z_MIN and Z_MIN_PROBE as BIT value
37 38
 
38 39
     #if ENABLED(Z_DUAL_ENDSTOPS)
39
-      uint16_t current_endstop_bits = 0,
40
-                   old_endstop_bits = 0;
40
+      static uint16_t
41 41
     #else
42
-      byte current_endstop_bits = 0,
43
-               old_endstop_bits = 0;
42
+      static byte
44 43
     #endif
45
-        
44
+        current_endstop_bits, old_endstop_bits;
46 45
 
47
-    bool enabled = true;
48
-    bool enabled_globally =
49
-      #if ENABLED(ENDSTOPS_ONLY_FOR_HOMING)
50
-        false
51
-      #else
52
-        true
53
-      #endif
54
-    ;
55
-
56
-    Endstops();
46
+    Endstops() {};
57 47
 
58 48
     /**
59 49
      * Initialize the endstop pins
@@ -63,40 +53,40 @@ class Endstops {
63 53
     /**
64 54
      * Update the endstops bits from the pins
65 55
      */
66
-    void update();
56
+    static void update();
67 57
 
68 58
     /**
69 59
      * Print an error message reporting the position when the endstops were last hit.
70 60
      */
71
-    void report_state(); //call from somewhere to create an serial error message with the locations the endstops where hit, in case they were triggered
61
+    static void report_state(); //call from somewhere to create an serial error message with the locations the endstops where hit, in case they were triggered
72 62
 
73 63
     /**
74 64
      * Report endstop positions in response to M119
75 65
      */
76
-    void M119();
66
+    static void M119();
77 67
 
78 68
     // Enable / disable endstop checking globally
79
-    FORCE_INLINE void enable_globally(bool onoff=true) { enabled_globally = enabled = onoff; }
69
+    static void enable_globally(bool onoff=true) { enabled_globally = enabled = onoff; }
80 70
 
81 71
     // Enable / disable endstop checking
82
-    FORCE_INLINE void enable(bool onoff=true) { enabled = onoff; }
72
+    static void enable(bool onoff=true) { enabled = onoff; }
83 73
 
84 74
     // Disable / Enable endstops based on ENSTOPS_ONLY_FOR_HOMING and global enable
85
-    FORCE_INLINE void not_homing() { enabled = enabled_globally; }
75
+    static void not_homing() { enabled = enabled_globally; }
86 76
 
87 77
     // Clear endstops (i.e., they were hit intentionally) to suppress the report
88
-    FORCE_INLINE void hit_on_purpose() { endstop_hit_bits = 0; }
78
+    static void hit_on_purpose() { endstop_hit_bits = 0; }
89 79
 
90 80
     // Enable / disable endstop z-probe checking
91 81
     #if HAS_BED_PROBE
92
-      volatile bool z_probe_enabled = false;
93
-      FORCE_INLINE void enable_z_probe(bool onoff=true) { z_probe_enabled = onoff; }
82
+      static volatile bool z_probe_enabled;
83
+      static void enable_z_probe(bool onoff=true) { z_probe_enabled = onoff; }
94 84
     #endif
95 85
 
96 86
   private:
97 87
 
98 88
     #if ENABLED(Z_DUAL_ENDSTOPS)
99
-      void test_dual_z_endstops(EndstopEnum es1, EndstopEnum es2);
89
+      static void test_dual_z_endstops(EndstopEnum es1, EndstopEnum es2);
100 90
     #endif
101 91
 };
102 92
 

+ 193
- 0
Marlin/enum.h Parādīt failu

@@ -0,0 +1,193 @@
1
+/**
2
+ * Marlin 3D Printer Firmware
3
+ * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
4
+ *
5
+ * Based on Sprinter and grbl.
6
+ * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
7
+ *
8
+ * This program is free software: you can redistribute it and/or modify
9
+ * it under the terms of the GNU General Public License as published by
10
+ * the Free Software Foundation, either version 3 of the License, or
11
+ * (at your option) any later version.
12
+ *
13
+ * This program is distributed in the hope that it will be useful,
14
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
+ * GNU General Public License for more details.
17
+ *
18
+ * You should have received a copy of the GNU General Public License
19
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
+ *
21
+ */
22
+
23
+#ifndef __ENUM_H__
24
+#define __ENUM_H__
25
+
26
+/**
27
+ * Axis indices as enumerated constants
28
+ *
29
+ * Special axis:
30
+ *  - A_AXIS and B_AXIS are used by COREXY printers
31
+ *  - X_HEAD and Y_HEAD is used for systems that don't have a 1:1 relationship
32
+ *    between X_AXIS and X Head movement, like CoreXY bots
33
+ */
34
+enum AxisEnum {
35
+  NO_AXIS = -1,
36
+  X_AXIS  = 0,
37
+  A_AXIS  = 0,
38
+  Y_AXIS  = 1,
39
+  B_AXIS  = 1,
40
+  Z_AXIS  = 2,
41
+  C_AXIS  = 2,
42
+  E_AXIS  = 3,
43
+  X_HEAD  = 4,
44
+  Y_HEAD  = 5,
45
+  Z_HEAD  = 6
46
+};
47
+
48
+#define LOOP_XYZ(VAR)  for (uint8_t VAR=X_AXIS; VAR<=Z_AXIS; VAR++)
49
+#define LOOP_XYZE(VAR) for (uint8_t VAR=X_AXIS; VAR<=E_AXIS; VAR++)
50
+
51
+typedef enum {
52
+  LINEARUNIT_MM,
53
+  LINEARUNIT_INCH
54
+} LinearUnit;
55
+
56
+typedef enum {
57
+  TEMPUNIT_C,
58
+  TEMPUNIT_K,
59
+  TEMPUNIT_F
60
+} TempUnit;
61
+
62
+/**
63
+ * Debug flags
64
+ * Not yet widely applied
65
+ */
66
+enum DebugFlags {
67
+  DEBUG_NONE          = 0,
68
+  DEBUG_ECHO          = _BV(0), ///< Echo commands in order as they are processed
69
+  DEBUG_INFO          = _BV(1), ///< Print messages for code that has debug output
70
+  DEBUG_ERRORS        = _BV(2), ///< Not implemented
71
+  DEBUG_DRYRUN        = _BV(3), ///< Ignore temperature setting and E movement commands
72
+  DEBUG_COMMUNICATION = _BV(4), ///< Not implemented
73
+  DEBUG_LEVELING      = _BV(5)  ///< Print detailed output for homing and leveling
74
+};
75
+
76
+enum EndstopEnum {
77
+  X_MIN,
78
+  Y_MIN,
79
+  Z_MIN,
80
+  Z_MIN_PROBE,
81
+  X_MAX,
82
+  Y_MAX,
83
+  Z_MAX,
84
+  Z2_MIN,
85
+  Z2_MAX
86
+};
87
+
88
+/**
89
+ * Temperature
90
+ * Stages in the ISR loop
91
+ */
92
+enum TempState {
93
+  PrepareTemp_0,
94
+  MeasureTemp_0,
95
+  PrepareTemp_BED,
96
+  MeasureTemp_BED,
97
+  PrepareTemp_1,
98
+  MeasureTemp_1,
99
+  PrepareTemp_2,
100
+  MeasureTemp_2,
101
+  PrepareTemp_3,
102
+  MeasureTemp_3,
103
+  Prepare_FILWIDTH,
104
+  Measure_FILWIDTH,
105
+  StartupDelay // Startup, delay initial temp reading a tiny bit so the hardware can settle
106
+};
107
+
108
+#if ENABLED(EMERGENCY_PARSER)
109
+  enum e_parser_state {
110
+    state_RESET,
111
+    state_N,
112
+    state_M,
113
+    state_M1,
114
+    state_M10,
115
+    state_M108,
116
+    state_M11,
117
+    state_M112,
118
+    state_M4,
119
+    state_M41,
120
+    state_M410,
121
+    state_IGNORE // to '\n'
122
+  };
123
+#endif
124
+
125
+#if ENABLED(FILAMENT_CHANGE_FEATURE)
126
+  enum FilamentChangeMenuResponse {
127
+    FILAMENT_CHANGE_RESPONSE_WAIT_FOR,
128
+    FILAMENT_CHANGE_RESPONSE_EXTRUDE_MORE,
129
+    FILAMENT_CHANGE_RESPONSE_RESUME_PRINT
130
+  };
131
+
132
+  #if ENABLED(ULTIPANEL)
133
+    enum FilamentChangeMessage {
134
+      FILAMENT_CHANGE_MESSAGE_INIT,
135
+      FILAMENT_CHANGE_MESSAGE_UNLOAD,
136
+      FILAMENT_CHANGE_MESSAGE_INSERT,
137
+      FILAMENT_CHANGE_MESSAGE_LOAD,
138
+      FILAMENT_CHANGE_MESSAGE_EXTRUDE,
139
+      FILAMENT_CHANGE_MESSAGE_OPTION,
140
+      FILAMENT_CHANGE_MESSAGE_RESUME,
141
+      FILAMENT_CHANGE_MESSAGE_STATUS
142
+    };
143
+  #endif
144
+#endif
145
+
146
+/**
147
+ * States for managing Marlin and host communication
148
+ * Marlin sends messages if blocked or busy
149
+ */
150
+#if ENABLED(HOST_KEEPALIVE_FEATURE)
151
+  enum MarlinBusyState {
152
+    NOT_BUSY,           // Not in a handler
153
+    IN_HANDLER,         // Processing a GCode
154
+    IN_PROCESS,         // Known to be blocking command input (as in G29)
155
+    PAUSED_FOR_USER,    // Blocking pending any input
156
+    PAUSED_FOR_INPUT    // Blocking pending text input (concept)
157
+  };
158
+#endif
159
+
160
+#if ENABLED(MESH_BED_LEVELING)
161
+  enum MeshLevelingState {
162
+    MeshReport,
163
+    MeshStart,
164
+    MeshNext,
165
+    MeshSet,
166
+    MeshSetZOffset,
167
+    MeshReset
168
+  };
169
+
170
+  enum MBLStatus {
171
+    MBL_STATUS_NONE = 0,
172
+    MBL_STATUS_HAS_MESH_BIT = 0,
173
+    MBL_STATUS_ACTIVE_BIT = 1
174
+  };
175
+#endif
176
+
177
+/**
178
+ * SD Card
179
+ */
180
+enum LsAction { LS_SerialPrint, LS_Count, LS_GetFilename };
181
+
182
+/**
183
+ * Ultra LCD
184
+ */
185
+enum LCDViewAction {
186
+  LCDVIEW_NONE,
187
+  LCDVIEW_REDRAW_NOW,
188
+  LCDVIEW_CALL_REDRAW_NEXT,
189
+  LCDVIEW_CLEAR_CALL_REDRAW,
190
+  LCDVIEW_CALL_NO_REDRAW
191
+};
192
+
193
+#endif // __ENUM_H__

+ 1327
- 0
Marlin/example_configurations/Cartesio/Configuration.h
Failā izmaiņas netiks attēlotas, jo tās ir par lielu
Parādīt failu


+ 799
- 0
Marlin/example_configurations/Cartesio/Configuration_adv.h Parādīt failu

@@ -0,0 +1,799 @@
1
+/**
2
+ * Marlin 3D Printer Firmware
3
+ * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
4
+ *
5
+ * Based on Sprinter and grbl.
6
+ * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
7
+ *
8
+ * This program is free software: you can redistribute it and/or modify
9
+ * it under the terms of the GNU General Public License as published by
10
+ * the Free Software Foundation, either version 3 of the License, or
11
+ * (at your option) any later version.
12
+ *
13
+ * This program is distributed in the hope that it will be useful,
14
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
+ * GNU General Public License for more details.
17
+ *
18
+ * You should have received a copy of the GNU General Public License
19
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
+ *
21
+ */
22
+
23
+/**
24
+ * Configuration_adv.h
25
+ *
26
+ * Advanced settings.
27
+ * Only change these if you know exactly what you're doing.
28
+ * Some of these settings can damage your printer if improperly set!
29
+ *
30
+ * Basic settings can be found in Configuration.h
31
+ *
32
+ */
33
+#ifndef CONFIGURATION_ADV_H
34
+#define CONFIGURATION_ADV_H
35
+
36
+/**
37
+ *
38
+ *  ***********************************
39
+ *  **  ATTENTION TO ALL DEVELOPERS  **
40
+ *  ***********************************
41
+ *
42
+ * You must increment this version number for every significant change such as,
43
+ * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option.
44
+ *
45
+ * Note: Update also Version.h !
46
+ */
47
+#define CONFIGURATION_ADV_H_VERSION 010100
48
+
49
+// @section temperature
50
+
51
+//===========================================================================
52
+//=============================Thermal Settings  ============================
53
+//===========================================================================
54
+
55
+#if DISABLED(PIDTEMPBED)
56
+  #define BED_CHECK_INTERVAL 5000 // ms between checks in bang-bang control
57
+  #if ENABLED(BED_LIMIT_SWITCHING)
58
+    #define BED_HYSTERESIS 2 // Only disable heating if T>target+BED_HYSTERESIS and enable heating if T>target-BED_HYSTERESIS
59
+  #endif
60
+#endif
61
+
62
+/**
63
+ * Thermal Protection protects your printer from damage and fire if a
64
+ * thermistor falls out or temperature sensors fail in any way.
65
+ *
66
+ * The issue: If a thermistor falls out or a temperature sensor fails,
67
+ * Marlin can no longer sense the actual temperature. Since a disconnected
68
+ * thermistor reads as a low temperature, the firmware will keep the heater on.
69
+ *
70
+ * The solution: Once the temperature reaches the target, start observing.
71
+ * If the temperature stays too far below the target (hysteresis) for too long (period),
72
+ * the firmware will halt the machine as a safety precaution.
73
+ *
74
+ * If you get false positives for "Thermal Runaway" increase THERMAL_PROTECTION_HYSTERESIS and/or THERMAL_PROTECTION_PERIOD
75
+ */
76
+#if ENABLED(THERMAL_PROTECTION_HOTENDS)
77
+  #define THERMAL_PROTECTION_PERIOD 40        // Seconds
78
+  #define THERMAL_PROTECTION_HYSTERESIS 4     // Degrees Celsius
79
+
80
+  /**
81
+   * Whenever an M104 or M109 increases the target temperature the firmware will wait for the
82
+   * WATCH_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_TEMP_INCREASE
83
+   * degrees, the machine is halted, requiring a hard reset. This test restarts with any M104/M109,
84
+   * but only if the current temperature is far enough below the target for a reliable test.
85
+   *
86
+   * If you get false positives for "Heating failed" increase WATCH_TEMP_PERIOD and/or decrease WATCH_TEMP_INCREASE
87
+   * WATCH_TEMP_INCREASE should not be below 2.
88
+   */
89
+  #define WATCH_TEMP_PERIOD 20                // Seconds
90
+  #define WATCH_TEMP_INCREASE 2               // Degrees Celsius
91
+#endif
92
+
93
+/**
94
+ * Thermal Protection parameters for the bed are just as above for hotends.
95
+ */
96
+#if ENABLED(THERMAL_PROTECTION_BED)
97
+  #define THERMAL_PROTECTION_BED_PERIOD 20    // Seconds
98
+  #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius
99
+
100
+  /**
101
+   * Whenever an M140 or M190 increases the target temperature the firmware will wait for the
102
+   * WATCH_BED_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_BED_TEMP_INCREASE
103
+   * degrees, the machine is halted, requiring a hard reset. This test restarts with any M140/M190,
104
+   * but only if the current temperature is far enough below the target for a reliable test.
105
+   *
106
+   * If you get too many "Heating failed" errors, increase WATCH_BED_TEMP_PERIOD and/or decrease
107
+   * WATCH_BED_TEMP_INCREASE. (WATCH_BED_TEMP_INCREASE should not be below 2.)
108
+   */
109
+  #define WATCH_BED_TEMP_PERIOD 60                // Seconds
110
+  #define WATCH_BED_TEMP_INCREASE 2               // Degrees Celsius
111
+#endif
112
+
113
+#if ENABLED(PIDTEMP)
114
+  // this adds an experimental additional term to the heating power, proportional to the extrusion speed.
115
+  // if Kc is chosen well, the additional required power due to increased melting should be compensated.
116
+  //#define PID_EXTRUSION_SCALING
117
+  #if ENABLED(PID_EXTRUSION_SCALING)
118
+    #define DEFAULT_Kc (100) //heating power=Kc*(e_speed)
119
+    #define LPQ_MAX_LEN 50
120
+  #endif
121
+#endif
122
+
123
+/**
124
+ * Automatic Temperature:
125
+ * The hotend target temperature is calculated by all the buffered lines of gcode.
126
+ * The maximum buffered steps/sec of the extruder motor is called "se".
127
+ * Start autotemp mode with M109 S<mintemp> B<maxtemp> F<factor>
128
+ * The target temperature is set to mintemp+factor*se[steps/sec] and is limited by
129
+ * mintemp and maxtemp. Turn this off by executing M109 without F*
130
+ * Also, if the temperature is set to a value below mintemp, it will not be changed by autotemp.
131
+ * On an Ultimaker, some initial testing worked with M109 S215 B260 F1 in the start.gcode
132
+ */
133
+#define AUTOTEMP
134
+#if ENABLED(AUTOTEMP)
135
+  #define AUTOTEMP_OLDWEIGHT 0.98
136
+#endif
137
+
138
+//Show Temperature ADC value
139
+//The M105 command return, besides traditional information, the ADC value read from temperature sensors.
140
+//#define SHOW_TEMP_ADC_VALUES
141
+
142
+/**
143
+ * High Temperature Thermistor Support
144
+ *
145
+ * Thermistors able to support high temperature tend to have a hard time getting
146
+ * good readings at room and lower temperatures. This means HEATER_X_RAW_LO_TEMP
147
+ * will probably be caught when the heating element first turns on during the
148
+ * preheating process, which will trigger a min_temp_error as a safety measure
149
+ * and force stop everything.
150
+ * To circumvent this limitation, we allow for a preheat time (during which,
151
+ * min_temp_error won't be triggered) and add a min_temp buffer to handle
152
+ * aberrant readings.
153
+ *
154
+ * If you want to enable this feature for your hotend thermistor(s)
155
+ * uncomment and set values > 0 in the constants below
156
+ */
157
+
158
+// The number of consecutive low temperature errors that can occur
159
+// before a min_temp_error is triggered. (Shouldn't be more than 10.)
160
+//#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 0
161
+
162
+// The number of milliseconds a hotend will preheat before starting to check
163
+// the temperature. This value should NOT be set to the time it takes the
164
+// hot end to reach the target temperature, but the time it takes to reach
165
+// the minimum temperature your thermistor can read. The lower the better/safer.
166
+// This shouldn't need to be more than 30 seconds (30000)
167
+//#define MILLISECONDS_PREHEAT_TIME 0
168
+
169
+// @section extruder
170
+
171
+//  extruder run-out prevention.
172
+//if the machine is idle, and the temperature over MINTEMP, every couple of SECONDS some filament is extruded
173
+//#define EXTRUDER_RUNOUT_PREVENT
174
+#define EXTRUDER_RUNOUT_MINTEMP 190
175
+#define EXTRUDER_RUNOUT_SECONDS 30
176
+#define EXTRUDER_RUNOUT_ESTEPS 14   // mm filament
177
+#define EXTRUDER_RUNOUT_SPEED 1500  // extrusion speed
178
+#define EXTRUDER_RUNOUT_EXTRUDE 100
179
+
180
+// @section temperature
181
+
182
+//These defines help to calibrate the AD595 sensor in case you get wrong temperature measurements.
183
+//The measured temperature is defined as "actualTemp = (measuredTemp * TEMP_SENSOR_AD595_GAIN) + TEMP_SENSOR_AD595_OFFSET"
184
+#define TEMP_SENSOR_AD595_OFFSET 3.0
185
+#define TEMP_SENSOR_AD595_GAIN   2.0
186
+
187
+//This is for controlling a fan to cool down the stepper drivers
188
+//it will turn on when any driver is enabled
189
+//and turn off after the set amount of seconds from last driver being disabled again
190
+#define CONTROLLERFAN_PIN -1 //Pin used for the fan to cool controller (-1 to disable)
191
+#define CONTROLLERFAN_SECS 60 //How many seconds, after all motors were disabled, the fan should run
192
+#define CONTROLLERFAN_SPEED 255  // == full speed
193
+
194
+// When first starting the main fan, run it at full speed for the
195
+// given number of milliseconds.  This gets the fan spinning reliably
196
+// before setting a PWM value. (Does not work with software PWM for fan on Sanguinololu)
197
+//#define FAN_KICKSTART_TIME 100
198
+
199
+// This defines the minimal speed for the main fan, run in PWM mode
200
+// to enable uncomment and set minimal PWM speed for reliable running (1-255)
201
+// if fan speed is [1 - (FAN_MIN_PWM-1)] it is set to FAN_MIN_PWM
202
+//#define FAN_MIN_PWM 50
203
+
204
+// @section extruder
205
+
206
+// Extruder cooling fans
207
+// Configure fan pin outputs to automatically turn on/off when the associated
208
+// extruder temperature is above/below EXTRUDER_AUTO_FAN_TEMPERATURE.
209
+// Multiple extruders can be assigned to the same pin in which case
210
+// the fan will turn on when any selected extruder is above the threshold.
211
+#define EXTRUDER_0_AUTO_FAN_PIN 7
212
+#define EXTRUDER_1_AUTO_FAN_PIN 7
213
+#define EXTRUDER_2_AUTO_FAN_PIN -1
214
+#define EXTRUDER_3_AUTO_FAN_PIN -1
215
+#define EXTRUDER_AUTO_FAN_TEMPERATURE 35
216
+#define EXTRUDER_AUTO_FAN_SPEED   255  // == full speed
217
+
218
+//===========================================================================
219
+//============================ Mechanical Settings ==========================
220
+//===========================================================================
221
+
222
+// @section homing
223
+
224
+// If you want endstops to stay on (by default) even when not homing
225
+// enable this option. Override at any time with M120, M121.
226
+//#define ENDSTOPS_ALWAYS_ON_DEFAULT
227
+
228
+// @section extras
229
+
230
+//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
231
+
232
+// Dual X Steppers
233
+// Uncomment this option to drive two X axis motors.
234
+// The next unused E driver will be assigned to the second X stepper.
235
+//#define X_DUAL_STEPPER_DRIVERS
236
+#if ENABLED(X_DUAL_STEPPER_DRIVERS)
237
+  // Set true if the two X motors need to rotate in opposite directions
238
+  #define INVERT_X2_VS_X_DIR true
239
+#endif
240
+
241
+
242
+// Dual Y Steppers
243
+// Uncomment this option to drive two Y axis motors.
244
+// The next unused E driver will be assigned to the second Y stepper.
245
+//#define Y_DUAL_STEPPER_DRIVERS
246
+#if ENABLED(Y_DUAL_STEPPER_DRIVERS)
247
+  // Set true if the two Y motors need to rotate in opposite directions
248
+  #define INVERT_Y2_VS_Y_DIR true
249
+#endif
250
+
251
+// A single Z stepper driver is usually used to drive 2 stepper motors.
252
+// Uncomment this option to use a separate stepper driver for each Z axis motor.
253
+// The next unused E driver will be assigned to the second Z stepper.
254
+//#define Z_DUAL_STEPPER_DRIVERS
255
+
256
+#if ENABLED(Z_DUAL_STEPPER_DRIVERS)
257
+
258
+  // Z_DUAL_ENDSTOPS is a feature to enable the use of 2 endstops for both Z steppers - Let's call them Z stepper and Z2 stepper.
259
+  // That way the machine is capable to align the bed during home, since both Z steppers are homed.
260
+  // There is also an implementation of M666 (software endstops adjustment) to this feature.
261
+  // After Z homing, this adjustment is applied to just one of the steppers in order to align the bed.
262
+  // One just need to home the Z axis and measure the distance difference between both Z axis and apply the math: Z adjust = Z - Z2.
263
+  // If the Z stepper axis is closer to the bed, the measure Z > Z2 (yes, it is.. think about it) and the Z adjust would be positive.
264
+  // Play a little bit with small adjustments (0.5mm) and check the behaviour.
265
+  // The M119 (endstops report) will start reporting the Z2 Endstop as well.
266
+
267
+  //#define Z_DUAL_ENDSTOPS
268
+
269
+  #if ENABLED(Z_DUAL_ENDSTOPS)
270
+    #define Z2_USE_ENDSTOP _XMAX_
271
+  #endif
272
+
273
+#endif // Z_DUAL_STEPPER_DRIVERS
274
+
275
+// Enable this for dual x-carriage printers.
276
+// A dual x-carriage design has the advantage that the inactive extruder can be parked which
277
+// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
278
+// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug.
279
+//#define DUAL_X_CARRIAGE
280
+#if ENABLED(DUAL_X_CARRIAGE)
281
+  // Configuration for second X-carriage
282
+  // Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop;
283
+  // the second x-carriage always homes to the maximum endstop.
284
+  #define X2_MIN_POS 80     // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage
285
+  #define X2_MAX_POS 353    // set maximum to the distance between toolheads when both heads are homed
286
+  #define X2_HOME_DIR 1     // the second X-carriage always homes to the maximum endstop position
287
+  #define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position
288
+      // However: In this mode the HOTEND_OFFSET_X value for the second extruder provides a software
289
+      // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops
290
+      // without modifying the firmware (through the "M218 T1 X???" command).
291
+      // Remember: you should set the second extruder x-offset to 0 in your slicer.
292
+
293
+  // There are a few selectable movement modes for dual x-carriages using M605 S<mode>
294
+  //    Mode 0: Full control. The slicer has full control over both x-carriages and can achieve optimal travel results
295
+  //                           as long as it supports dual x-carriages. (M605 S0)
296
+  //    Mode 1: Auto-park mode. The firmware will automatically park and unpark the x-carriages on tool changes so
297
+  //                           that additional slicer support is not required. (M605 S1)
298
+  //    Mode 2: Duplication mode. The firmware will transparently make the second x-carriage and extruder copy all
299
+  //                           actions of the first x-carriage. This allows the printer to print 2 arbitrary items at
300
+  //                           once. (2nd extruder x offset and temp offset are set using: M605 S2 [Xnnn] [Rmmm])
301
+
302
+  // This is the default power-up mode which can be later using M605.
303
+  #define DEFAULT_DUAL_X_CARRIAGE_MODE 0
304
+
305
+  // Default settings in "Auto-park Mode"
306
+  #define TOOLCHANGE_PARK_ZLIFT   0.2      // the distance to raise Z axis when parking an extruder
307
+  #define TOOLCHANGE_UNPARK_ZLIFT 1        // the distance to raise Z axis when unparking an extruder
308
+
309
+  // Default x offset in duplication mode (typically set to half print bed width)
310
+  #define DEFAULT_DUPLICATION_X_OFFSET 100
311
+
312
+#endif //DUAL_X_CARRIAGE
313
+
314
+// @section homing
315
+
316
+//homing hits the endstop, then retracts by this distance, before it tries to slowly bump again:
317
+#define X_HOME_BUMP_MM 5
318
+#define Y_HOME_BUMP_MM 5
319
+#define Z_HOME_BUMP_MM 2
320
+#define HOMING_BUMP_DIVISOR {2, 2, 4}  // Re-Bump Speed Divisor (Divides the Homing Feedrate)
321
+//#define QUICK_HOME  //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially.
322
+
323
+// When G28 is called, this option will make Y home before X
324
+#define HOME_Y_BEFORE_X
325
+
326
+// @section machine
327
+
328
+#define AXIS_RELATIVE_MODES {false, false, false, false}
329
+
330
+// Allow duplication mode with a basic dual-nozzle extruder
331
+//#define DUAL_NOZZLE_DUPLICATION_MODE
332
+
333
+// By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
334
+#define INVERT_X_STEP_PIN false
335
+#define INVERT_Y_STEP_PIN false
336
+#define INVERT_Z_STEP_PIN false
337
+#define INVERT_E_STEP_PIN false
338
+
339
+// Default stepper release if idle. Set to 0 to deactivate.
340
+// Steppers will shut down DEFAULT_STEPPER_DEACTIVE_TIME seconds after the last move when DISABLE_INACTIVE_? is true.
341
+// Time can be set by M18 and M84.
342
+#define DEFAULT_STEPPER_DEACTIVE_TIME 120
343
+#define DISABLE_INACTIVE_X true
344
+#define DISABLE_INACTIVE_Y true
345
+#define DISABLE_INACTIVE_Z true  // set to false if the nozzle will fall down on your printed part when print has finished.
346
+#define DISABLE_INACTIVE_E true
347
+
348
+#define DEFAULT_MINIMUMFEEDRATE       0.0     // minimum feedrate
349
+#define DEFAULT_MINTRAVELFEEDRATE     0.0
350
+
351
+// @section lcd
352
+
353
+#if ENABLED(ULTIPANEL)
354
+  #define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel
355
+  #define ULTIPANEL_FEEDMULTIPLY  // Comment to disable setting feedrate multiplier via encoder
356
+#endif
357
+
358
+// @section extras
359
+
360
+// minimum time in microseconds that a movement needs to take if the buffer is emptied.
361
+#define DEFAULT_MINSEGMENTTIME        20000
362
+
363
+// If defined the movements slow down when the look ahead buffer is only half full
364
+#define SLOWDOWN
365
+
366
+// Frequency limit
367
+// See nophead's blog for more info
368
+// Not working O
369
+//#define XY_FREQUENCY_LIMIT  15
370
+
371
+// Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end
372
+// of the buffer and all stops. This should not be much greater than zero and should only be changed
373
+// if unwanted behavior is observed on a user's machine when running at very slow speeds.
374
+#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec)
375
+
376
+// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU.
377
+#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16]
378
+
379
+// Motor Current setting (Only functional when motor driver current ref pins are connected to a digital trimpot on supported boards)
380
+#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
381
+
382
+// Motor Current controlled via PWM (Overridable on supported boards with PWM-driven motor driver current)
383
+//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps
384
+
385
+// uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro
386
+//#define DIGIPOT_I2C
387
+// Number of channels available for I2C digipot, For Azteeg X3 Pro we have 8
388
+#define DIGIPOT_I2C_NUM_CHANNELS 8
389
+// actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS
390
+#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0}
391
+
392
+//===========================================================================
393
+//=============================Additional Features===========================
394
+//===========================================================================
395
+
396
+#define ENCODER_RATE_MULTIPLIER         // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
397
+#define ENCODER_10X_STEPS_PER_SEC 75    // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value
398
+#define ENCODER_100X_STEPS_PER_SEC 160  // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value
399
+
400
+//#define CHDK 4        //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/
401
+#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
402
+
403
+// @section lcd
404
+
405
+// Include a page of printer information in the LCD Main Menu
406
+//#define LCD_INFO_MENU
407
+
408
+#if ENABLED(SDSUPPORT)
409
+
410
+  // Some RAMPS and other boards don't detect when an SD card is inserted. You can work
411
+  // around this by connecting a push button or single throw switch to the pin defined
412
+  // as SD_DETECT_PIN in your board's pins definitions.
413
+  // This setting should be disabled unless you are using a push button, pulling the pin to ground.
414
+  // Note: This is always disabled for ULTIPANEL (except ELB_FULL_GRAPHIC_CONTROLLER).
415
+  #define SD_DETECT_INVERTED
416
+
417
+  #define SD_FINISHED_STEPPERRELEASE true  //if sd support and the file is finished: disable steppers?
418
+  #define SD_FINISHED_RELEASECOMMAND "M84 X Y Z E" // You might want to keep the z enabled so your bed stays in place.
419
+
420
+  #define SDCARD_RATHERRECENTFIRST  //reverse file order of sd card menu display. Its sorted practically after the file system block order.
421
+  // if a file is deleted, it frees a block. hence, the order is not purely chronological. To still have auto0.g accessible, there is again the option to do that.
422
+  // using:
423
+  //#define MENU_ADDAUTOSTART
424
+
425
+  // Show a progress bar on HD44780 LCDs for SD printing
426
+  //#define LCD_PROGRESS_BAR
427
+
428
+  #if ENABLED(LCD_PROGRESS_BAR)
429
+    // Amount of time (ms) to show the bar
430
+    #define PROGRESS_BAR_BAR_TIME 2000
431
+    // Amount of time (ms) to show the status message
432
+    #define PROGRESS_BAR_MSG_TIME 3000
433
+    // Amount of time (ms) to retain the status message (0=forever)
434
+    #define PROGRESS_MSG_EXPIRE   0
435
+    // Enable this to show messages for MSG_TIME then hide them
436
+    //#define PROGRESS_MSG_ONCE
437
+  #endif
438
+
439
+  // This allows hosts to request long names for files and folders with M33
440
+  //#define LONG_FILENAME_HOST_SUPPORT
441
+
442
+  // This option allows you to abort SD printing when any endstop is triggered.
443
+  // This feature must be enabled with "M540 S1" or from the LCD menu.
444
+  // To have any effect, endstops must be enabled during SD printing.
445
+  //#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED
446
+
447
+#endif // SDSUPPORT
448
+
449
+// for dogm lcd displays you can choose some additional fonts:
450
+#if ENABLED(DOGLCD)
451
+  // save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT
452
+  // we don't have a big font for Cyrillic, Kana
453
+  //#define USE_BIG_EDIT_FONT
454
+
455
+  // If you have spare 2300Byte of progmem and want to use a
456
+  // smaller font on the Info-screen uncomment the next line.
457
+  //#define USE_SMALL_INFOFONT
458
+#endif // DOGLCD
459
+
460
+// @section safety
461
+
462
+// The hardware watchdog should reset the microcontroller disabling all outputs,
463
+// in case the firmware gets stuck and doesn't do temperature regulation.
464
+#define USE_WATCHDOG
465
+
466
+#if ENABLED(USE_WATCHDOG)
467
+  // If you have a watchdog reboot in an ArduinoMega2560 then the device will hang forever, as a watchdog reset will leave the watchdog on.
468
+  // The "WATCHDOG_RESET_MANUAL" goes around this by not using the hardware reset.
469
+  //  However, THIS FEATURE IS UNSAFE!, as it will only work if interrupts are disabled. And the code could hang in an interrupt routine with interrupts disabled.
470
+  //#define WATCHDOG_RESET_MANUAL
471
+#endif
472
+
473
+// @section lcd
474
+
475
+// Babystepping enables the user to control the axis in tiny amounts, independently from the normal printing process
476
+// it can e.g. be used to change z-positions in the print startup phase in real-time
477
+// does not respect endstops!
478
+//#define BABYSTEPPING
479
+#if ENABLED(BABYSTEPPING)
480
+  #define BABYSTEP_XY  //not only z, but also XY in the menu. more clutter, more functions
481
+                       //not implemented for deltabots!
482
+  #define BABYSTEP_INVERT_Z false  //true for inverse movements in Z
483
+  #define BABYSTEP_MULTIPLICATOR 1 //faster movements
484
+#endif
485
+
486
+// @section extruder
487
+
488
+// extruder advance constant (s2/mm3)
489
+//
490
+// advance (steps) = STEPS_PER_CUBIC_MM_E * EXTRUDER_ADVANCE_K * cubic mm per second ^ 2
491
+//
492
+// Hooke's law says:    force = k * distance
493
+// Bernoulli's principle says:  v ^ 2 / 2 + g . h + pressure / density = constant
494
+// so: v ^ 2 is proportional to number of steps we advance the extruder
495
+//#define ADVANCE
496
+
497
+#if ENABLED(ADVANCE)
498
+  #define EXTRUDER_ADVANCE_K .0
499
+  #define D_FILAMENT 2.85
500
+#endif
501
+
502
+// Implementation of a linear pressure control
503
+// Assumption: advance = k * (delta velocity)
504
+// K=0 means advance disabled. A good value for a gregs wade extruder will be around K=75
505
+//#define LIN_ADVANCE
506
+
507
+#if ENABLED(LIN_ADVANCE)
508
+  #define LIN_ADVANCE_K 75
509
+#endif
510
+
511
+// @section leveling
512
+
513
+// Default mesh area is an area with an inset margin on the print area.
514
+// Below are the macros that are used to define the borders for the mesh area,
515
+// made available here for specialized needs, ie dual extruder setup.
516
+#if ENABLED(MESH_BED_LEVELING)
517
+  #define MESH_MIN_X (X_MIN_POS + MESH_INSET)
518
+  #define MESH_MAX_X (X_MAX_POS - (MESH_INSET))
519
+  #define MESH_MIN_Y (Y_MIN_POS + MESH_INSET)
520
+  #define MESH_MAX_Y (Y_MAX_POS - (MESH_INSET))
521
+#endif
522
+
523
+// @section extras
524
+
525
+// Arc interpretation settings:
526
+#define ARC_SUPPORT  // Disabling this saves ~2738 bytes
527
+#define MM_PER_ARC_SEGMENT 1
528
+#define N_ARC_CORRECTION 25
529
+
530
+// Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
531
+//#define BEZIER_CURVE_SUPPORT
532
+
533
+const unsigned int dropsegments = 5; //everything with less than this number of steps will be ignored as move and joined with the next movement
534
+
535
+// @section temperature
536
+
537
+// Control heater 0 and heater 1 in parallel.
538
+//#define HEATERS_PARALLEL
539
+
540
+//===========================================================================
541
+//================================= Buffers =================================
542
+//===========================================================================
543
+
544
+// @section hidden
545
+
546
+// The number of linear motions that can be in the plan at any give time.
547
+// THE BLOCK_BUFFER_SIZE NEEDS TO BE A POWER OF 2, i.g. 8,16,32 because shifts and ors are used to do the ring-buffering.
548
+#if ENABLED(SDSUPPORT)
549
+  #define BLOCK_BUFFER_SIZE 16   // SD,LCD,Buttons take more memory, block buffer needs to be smaller
550
+#else
551
+  #define BLOCK_BUFFER_SIZE 16 // maximize block buffer
552
+#endif
553
+
554
+// @section serial
555
+
556
+// The ASCII buffer for serial input
557
+#define MAX_CMD_SIZE 96
558
+#define BUFSIZE 4
559
+
560
+// Transfer Buffer Size
561
+// To save 386 bytes of PROGMEM (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0.
562
+// To buffer a simple "ok" you need 4 bytes.
563
+// For ADVANCED_OK (M105) you need 32 bytes.
564
+// For debug-echo: 128 bytes for the optimal speed.
565
+// Other output doesn't need to be that speedy.
566
+// :[0,2,4,8,16,32,64,128,256]
567
+#define TX_BUFFER_SIZE 0
568
+
569
+// Enable an emergency-command parser to intercept certain commands as they
570
+// enter the serial receive buffer, so they cannot be blocked.
571
+// Currently handles M108, M112, M410
572
+// Does not work on boards using AT90USB (USBCON) processors!
573
+//#define EMERGENCY_PARSER
574
+
575
+// Bad Serial-connections can miss a received command by sending an 'ok'
576
+// Therefore some clients abort after 30 seconds in a timeout.
577
+// Some other clients start sending commands while receiving a 'wait'.
578
+// This "wait" is only sent when the buffer is empty. 1 second is a good value here.
579
+//#define NO_TIMEOUTS 1000 // Milliseconds
580
+
581
+// Some clients will have this feature soon. This could make the NO_TIMEOUTS unnecessary.
582
+//#define ADVANCED_OK
583
+
584
+// @section fwretract
585
+
586
+// Firmware based and LCD controlled retract
587
+// M207 and M208 can be used to define parameters for the retraction.
588
+// The retraction can be called by the slicer using G10 and G11
589
+// until then, intended retractions can be detected by moves that only extrude and the direction.
590
+// the moves are than replaced by the firmware controlled ones.
591
+
592
+//#define FWRETRACT  //ONLY PARTIALLY TESTED
593
+#if ENABLED(FWRETRACT)
594
+  #define MIN_RETRACT 0.1                //minimum extruded mm to accept a automatic gcode retraction attempt
595
+  #define RETRACT_LENGTH 3               //default retract length (positive mm)
596
+  #define RETRACT_LENGTH_SWAP 13         //default swap retract length (positive mm), for extruder change
597
+  #define RETRACT_FEEDRATE 45            //default feedrate for retracting (mm/s)
598
+  #define RETRACT_ZLIFT 0                //default retract Z-lift
599
+  #define RETRACT_RECOVER_LENGTH 0       //default additional recover length (mm, added to retract length when recovering)
600
+  #define RETRACT_RECOVER_LENGTH_SWAP 0  //default additional swap recover length (mm, added to retract length when recovering from extruder change)
601
+  #define RETRACT_RECOVER_FEEDRATE 8     //default feedrate for recovering from retraction (mm/s)
602
+#endif
603
+
604
+// Add support for experimental filament exchange support M600; requires display
605
+#if ENABLED(ULTIPANEL)
606
+  // #define FILAMENT_CHANGE_FEATURE             // Enable filament exchange menu and M600 g-code (used for runout sensor too)
607
+  #if ENABLED(FILAMENT_CHANGE_FEATURE)
608
+    #define FILAMENT_CHANGE_X_POS 30            // X position of hotend
609
+    #define FILAMENT_CHANGE_Y_POS 10            // Y position of hotend
610
+    #define FILAMENT_CHANGE_Z_ADD 10            // Z addition of hotend (lift)
611
+    #define FILAMENT_CHANGE_XY_FEEDRATE 100     // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
612
+    #define FILAMENT_CHANGE_Z_FEEDRATE 5        // Z axis feedrate in mm/s (not used for delta printers)
613
+    #define FILAMENT_CHANGE_RETRACT_LENGTH 1    // Initial retract in mm
614
+                                                // It is a short retract used immediately after print interrupt before move to filament exchange position
615
+    #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
616
+    //#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm
617
+                                                // Longer length for bowden printers to unload filament from whole bowden tube,
618
+                                                // shorter lenght for printers without bowden to unload filament from extruder only,
619
+                                                // 0 to disable unloading for manual unloading
620
+    #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10  // Unload filament feedrate in mm/s - filament unloading can be fast
621
+    #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
622
+                                                // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
623
+                                                // Short or zero length for printers without bowden where loading is not used
624
+    #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
625
+    #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
626
+                                                // 0 to disable for manual extrusion
627
+                                                // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
628
+                                                // or until outcoming filament color is not clear for filament color change
629
+    #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
630
+  #endif
631
+#endif
632
+
633
+/******************************************************************************\
634
+ * enable this section if you have TMC26X motor drivers.
635
+ * you need to import the TMC26XStepper library into the Arduino IDE for this
636
+ ******************************************************************************/
637
+
638
+// @section tmc
639
+
640
+//#define HAVE_TMCDRIVER
641
+#if ENABLED(HAVE_TMCDRIVER)
642
+
643
+  //#define X_IS_TMC
644
+  #define X_MAX_CURRENT 1000  //in mA
645
+  #define X_SENSE_RESISTOR 91 //in mOhms
646
+  #define X_MICROSTEPS 16     //number of microsteps
647
+
648
+  //#define X2_IS_TMC
649
+  #define X2_MAX_CURRENT 1000  //in mA
650
+  #define X2_SENSE_RESISTOR 91 //in mOhms
651
+  #define X2_MICROSTEPS 16     //number of microsteps
652
+
653
+  //#define Y_IS_TMC
654
+  #define Y_MAX_CURRENT 1000  //in mA
655
+  #define Y_SENSE_RESISTOR 91 //in mOhms
656
+  #define Y_MICROSTEPS 16     //number of microsteps
657
+
658
+  //#define Y2_IS_TMC
659
+  #define Y2_MAX_CURRENT 1000  //in mA
660
+  #define Y2_SENSE_RESISTOR 91 //in mOhms
661
+  #define Y2_MICROSTEPS 16     //number of microsteps
662
+
663
+  //#define Z_IS_TMC
664
+  #define Z_MAX_CURRENT 1000  //in mA
665
+  #define Z_SENSE_RESISTOR 91 //in mOhms
666
+  #define Z_MICROSTEPS 16     //number of microsteps
667
+
668
+  //#define Z2_IS_TMC
669
+  #define Z2_MAX_CURRENT 1000  //in mA
670
+  #define Z2_SENSE_RESISTOR 91 //in mOhms
671
+  #define Z2_MICROSTEPS 16     //number of microsteps
672
+
673
+  //#define E0_IS_TMC
674
+  #define E0_MAX_CURRENT 1000  //in mA
675
+  #define E0_SENSE_RESISTOR 91 //in mOhms
676
+  #define E0_MICROSTEPS 16     //number of microsteps
677
+
678
+  //#define E1_IS_TMC
679
+  #define E1_MAX_CURRENT 1000  //in mA
680
+  #define E1_SENSE_RESISTOR 91 //in mOhms
681
+  #define E1_MICROSTEPS 16     //number of microsteps
682
+
683
+  //#define E2_IS_TMC
684
+  #define E2_MAX_CURRENT 1000  //in mA
685
+  #define E2_SENSE_RESISTOR 91 //in mOhms
686
+  #define E2_MICROSTEPS 16     //number of microsteps
687
+
688
+  //#define E3_IS_TMC
689
+  #define E3_MAX_CURRENT 1000  //in mA
690
+  #define E3_SENSE_RESISTOR 91 //in mOhms
691
+  #define E3_MICROSTEPS 16     //number of microsteps
692
+
693
+#endif
694
+
695
+/******************************************************************************\
696
+ * enable this section if you have L6470  motor drivers.
697
+ * you need to import the L6470 library into the Arduino IDE for this
698
+ ******************************************************************************/
699
+
700
+// @section l6470
701
+
702
+//#define HAVE_L6470DRIVER
703
+#if ENABLED(HAVE_L6470DRIVER)
704
+
705
+  //#define X_IS_L6470
706
+  #define X_MICROSTEPS 16     //number of microsteps
707
+  #define X_K_VAL 50          // 0 - 255, Higher values, are higher power. Be careful not to go too high
708
+  #define X_OVERCURRENT 2000  //maxc current in mA. If the current goes over this value, the driver will switch off
709
+  #define X_STALLCURRENT 1500 //current in mA where the driver will detect a stall
710
+
711
+  //#define X2_IS_L6470
712
+  #define X2_MICROSTEPS 16     //number of microsteps
713
+  #define X2_K_VAL 50          // 0 - 255, Higher values, are higher power. Be careful not to go too high
714
+  #define X2_OVERCURRENT 2000  //maxc current in mA. If the current goes over this value, the driver will switch off
715
+  #define X2_STALLCURRENT 1500 //current in mA where the driver will detect a stall
716
+
717
+  //#define Y_IS_L6470
718
+  #define Y_MICROSTEPS 16     //number of microsteps
719
+  #define Y_K_VAL 50          // 0 - 255, Higher values, are higher power. Be careful not to go too high
720
+  #define Y_OVERCURRENT 2000  //maxc current in mA. If the current goes over this value, the driver will switch off
721
+  #define Y_STALLCURRENT 1500 //current in mA where the driver will detect a stall
722
+
723
+  //#define Y2_IS_L6470
724
+  #define Y2_MICROSTEPS 16     //number of microsteps
725
+  #define Y2_K_VAL 50          // 0 - 255, Higher values, are higher power. Be careful not to go too high
726
+  #define Y2_OVERCURRENT 2000  //maxc current in mA. If the current goes over this value, the driver will switch off
727
+  #define Y2_STALLCURRENT 1500 //current in mA where the driver will detect a stall
728
+
729
+  //#define Z_IS_L6470
730
+  #define Z_MICROSTEPS 16     //number of microsteps
731
+  #define Z_K_VAL 50          // 0 - 255, Higher values, are higher power. Be careful not to go too high
732
+  #define Z_OVERCURRENT 2000  //maxc current in mA. If the current goes over this value, the driver will switch off
733
+  #define Z_STALLCURRENT 1500 //current in mA where the driver will detect a stall
734
+
735
+  //#define Z2_IS_L6470
736
+  #define Z2_MICROSTEPS 16     //number of microsteps
737
+  #define Z2_K_VAL 50          // 0 - 255, Higher values, are higher power. Be careful not to go too high
738
+  #define Z2_OVERCURRENT 2000  //maxc current in mA. If the current goes over this value, the driver will switch off
739
+  #define Z2_STALLCURRENT 1500 //current in mA where the driver will detect a stall
740
+
741
+  //#define E0_IS_L6470
742
+  #define E0_MICROSTEPS 16     //number of microsteps
743
+  #define E0_K_VAL 50          // 0 - 255, Higher values, are higher power. Be careful not to go too high
744
+  #define E0_OVERCURRENT 2000  //maxc current in mA. If the current goes over this value, the driver will switch off
745
+  #define E0_STALLCURRENT 1500 //current in mA where the driver will detect a stall
746
+
747
+  //#define E1_IS_L6470
748
+  #define E1_MICROSTEPS 16     //number of microsteps
749
+  #define E1_K_VAL 50          // 0 - 255, Higher values, are higher power. Be careful not to go too high
750
+  #define E1_OVERCURRENT 2000  //maxc current in mA. If the current goes over this value, the driver will switch off
751
+  #define E1_STALLCURRENT 1500 //current in mA where the driver will detect a stall
752
+
753
+  //#define E2_IS_L6470
754
+  #define E2_MICROSTEPS 16     //number of microsteps
755
+  #define E2_K_VAL 50          // 0 - 255, Higher values, are higher power. Be careful not to go too high
756
+  #define E2_OVERCURRENT 2000  //maxc current in mA. If the current goes over this value, the driver will switch off
757
+  #define E2_STALLCURRENT 1500 //current in mA where the driver will detect a stall
758
+
759
+  //#define E3_IS_L6470
760
+  #define E3_MICROSTEPS 16     //number of microsteps
761
+  #define E3_K_VAL 50          // 0 - 255, Higher values, are higher power. Be careful not to go too high
762
+  #define E3_OVERCURRENT 2000  //maxc current in mA. If the current goes over this value, the driver will switch off
763
+  #define E3_STALLCURRENT 1500 //current in mA where the driver will detect a stall
764
+
765
+#endif
766
+
767
+/**
768
+ * TWI/I2C BUS
769
+ *
770
+ * This feature is an EXPERIMENTAL feature so it shall not be used on production
771
+ * machines. Enabling this will allow you to send and receive I2C data from slave
772
+ * devices on the bus.
773
+ *
774
+ * ; Example #1
775
+ * ; This macro send the string "Marlin" to the slave device with address 0x63 (99)
776
+ * ; It uses multiple M155 commands with one B<base 10> arg
777
+ * M155 A99  ; Target slave address
778
+ * M155 B77  ; M
779
+ * M155 B97  ; a
780
+ * M155 B114 ; r
781
+ * M155 B108 ; l
782
+ * M155 B105 ; i
783
+ * M155 B110 ; n
784
+ * M155 S1   ; Send the current buffer
785
+ *
786
+ * ; Example #2
787
+ * ; Request 6 bytes from slave device with address 0x63 (99)
788
+ * M156 A99 B5
789
+ *
790
+ * ; Example #3
791
+ * ; Example serial output of a M156 request
792
+ * echo:i2c-reply: from:99 bytes:5 data:hello
793
+ */
794
+
795
+// @section i2cbus
796
+
797
+//#define EXPERIMENTAL_I2CBUS
798
+
799
+#endif // CONFIGURATION_ADV_H

+ 103
- 0
Marlin/example_configurations/Cartesio/_Bootscreen.h Parādīt failu

@@ -0,0 +1,103 @@
1
+/**
2
+ * Marlin 3D Printer Firmware
3
+ * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
4
+ *
5
+ * Based on Sprinter and grbl.
6
+ * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
7
+ *
8
+ * This program is free software: you can redistribute it and/or modify
9
+ * it under the terms of the GNU General Public License as published by
10
+ * the Free Software Foundation, either version 3 of the License, or
11
+ * (at your option) any later version.
12
+ *
13
+ * This program is distributed in the hope that it will be useful,
14
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
+ * GNU General Public License for more details.
17
+ *
18
+ * You should have received a copy of the GNU General Public License
19
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
+ *
21
+ */
22
+
23
+/**
24
+ * Custom Bitmap for splashscreen
25
+ *
26
+ * You may use one of the following tools to generate the C++ bitmap array from
27
+ * a black and white image:
28
+ *
29
+ *  - http://www.marlinfw.org/tools/u8glib/converter.html
30
+ *  - http://www.digole.com/tools/PicturetoC_Hex_converter.php
31
+ */
32
+#include <avr/pgmspace.h>
33
+
34
+#define CUSTOM_BOOTSCREEN_TIMEOUT   2500
35
+#define CUSTOM_BOOTSCREEN_BMPWIDTH  63
36
+#define CUSTOM_BOOTSCREEN_BMPHEIGHT 64
37
+
38
+const unsigned char custom_start_bmp[512] PROGMEM = {
39
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
40
+  0x00, 0x00, 0x00, 0x07, 0xc0, 0x00, 0x00, 0x00,
41
+  0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00,
42
+  0x00, 0x00, 0x03, 0xff, 0xff, 0xc0, 0x00, 0x00,
43
+  0x00, 0x00, 0x1f, 0xff, 0xff, 0xf0, 0x00, 0x00,
44
+  0x00, 0x00, 0x7f, 0xff, 0xff, 0xfc, 0x00, 0x00,
45
+  0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
46
+  0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00,
47
+  0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00,
48
+  0x00, 0x00, 0x00, 0x07, 0xc0, 0x00, 0x00, 0x00,
49
+  0x00, 0x00, 0x00, 0x07, 0xc0, 0x00, 0x00, 0x00,
50
+  0x00, 0x00, 0x00, 0x07, 0xc0, 0x00, 0x00, 0x00,
51
+  0x00, 0x0f, 0x07, 0x87, 0xff, 0xff, 0xe0, 0x00,
52
+  0x00, 0x1f, 0x8f, 0xc7, 0xff, 0xff, 0xf1, 0x00,
53
+  0x01, 0x1f, 0x8f, 0xc7, 0xff, 0xff, 0xf1, 0x80,
54
+  0x03, 0x1f, 0x8f, 0xc7, 0xff, 0xff, 0xf1, 0x80,
55
+  0x07, 0x1f, 0x8f, 0xc7, 0xff, 0xff, 0xe1, 0xc0,
56
+  0x07, 0x1f, 0x8f, 0xc7, 0xc0, 0x00, 0x01, 0xe0,
57
+  0x0f, 0x1f, 0x8f, 0xc7, 0xc0, 0x00, 0x01, 0xe0,
58
+  0x0f, 0x1f, 0x8f, 0xc7, 0xc0, 0x00, 0x01, 0xf0,
59
+  0x1f, 0x1f, 0x8f, 0xc7, 0xc0, 0x00, 0x01, 0xf0,
60
+  0x1f, 0x1f, 0x8f, 0xc7, 0xff, 0xff, 0xe1, 0xf0,
61
+  0x3f, 0x1f, 0x8f, 0xc7, 0xff, 0xff, 0xf1, 0xf8,
62
+  0x3f, 0x1f, 0x8f, 0xc7, 0xff, 0xff, 0xf1, 0xf8,
63
+  0x3f, 0x1f, 0x8f, 0xc7, 0xff, 0xff, 0xf1, 0xf8,
64
+  0x3f, 0x1f, 0x8f, 0xc7, 0xff, 0xff, 0xe1, 0xf8,
65
+  0x7f, 0x1f, 0x8f, 0xc7, 0xc0, 0x00, 0x01, 0xfc,
66
+  0x7f, 0x1f, 0x8f, 0xc7, 0xc0, 0x00, 0x01, 0xfc,
67
+  0x7f, 0x1f, 0x8f, 0xc7, 0xc0, 0x00, 0x01, 0xfc,
68
+  0x7f, 0x1f, 0x8f, 0xc7, 0xc0, 0x00, 0x01, 0xfc,
69
+  0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc,
70
+  0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc,
71
+  0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc,
72
+  0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc,
73
+  0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc,
74
+  0x7f, 0x00, 0x00, 0x07, 0xc7, 0xe3, 0xf1, 0xfc,
75
+  0x7f, 0x00, 0x00, 0x07, 0xc7, 0xe3, 0xf1, 0xfc,
76
+  0x7f, 0x00, 0x00, 0x07, 0xc7, 0xe3, 0xf1, 0xfc,
77
+  0x3f, 0x0f, 0xff, 0xff, 0xc7, 0xe3, 0xf1, 0xf8,
78
+  0x3f, 0x1f, 0xff, 0xff, 0xc7, 0xe3, 0xf1, 0xf8,
79
+  0x3f, 0x1f, 0xff, 0xff, 0xc7, 0xe3, 0xf1, 0xf8,
80
+  0x3f, 0x1f, 0xff, 0xff, 0xc7, 0xe3, 0xf1, 0xf8,
81
+  0x1f, 0x1f, 0xff, 0xff, 0xc7, 0xe3, 0xf1, 0xf0,
82
+  0x1f, 0x0f, 0xff, 0xff, 0xc7, 0xe3, 0xf1, 0xf0,
83
+  0x1f, 0x00, 0x00, 0x07, 0xc7, 0xe3, 0xf1, 0xe0,
84
+  0x0f, 0x00, 0x00, 0x07, 0xc7, 0xe3, 0xf1, 0xe0,
85
+  0x0f, 0x00, 0x00, 0x07, 0xc7, 0xe3, 0xf1, 0xc0,
86
+  0x07, 0x0f, 0xff, 0xff, 0xc7, 0xe3, 0xf1, 0xc0,
87
+  0x03, 0x1f, 0xff, 0xff, 0xc7, 0xe3, 0xf1, 0x80,
88
+  0x03, 0x1f, 0xff, 0xff, 0xc7, 0xe3, 0xf1, 0x00,
89
+  0x01, 0x1f, 0xff, 0xff, 0xc7, 0xe3, 0xf0, 0x00,
90
+  0x00, 0x1f, 0xff, 0xff, 0xc7, 0xe3, 0xf0, 0x00,
91
+  0x00, 0x0f, 0xff, 0xff, 0xc3, 0xc1, 0xe0, 0x00,
92
+  0x00, 0x00, 0x00, 0x07, 0xc0, 0x00, 0x00, 0x00,
93
+  0x00, 0x00, 0x00, 0x07, 0xc0, 0x00, 0x00, 0x00,
94
+  0x00, 0x00, 0x00, 0x07, 0xc0, 0x00, 0x00, 0x00,
95
+  0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00,
96
+  0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00,
97
+  0x00, 0x01, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00,
98
+  0x00, 0x00, 0x7f, 0xff, 0xff, 0xfc, 0x00, 0x00,
99
+  0x00, 0x00, 0x1f, 0xff, 0xff, 0xf0, 0x00, 0x00,
100
+  0x00, 0x00, 0x07, 0xff, 0xff, 0x80, 0x00, 0x00,
101
+  0x00, 0x00, 0x00, 0x7f, 0xf8, 0x00, 0x00, 0x00,
102
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
103
+};

+ 290
- 147
Marlin/example_configurations/Felix/Configuration.h Parādīt failu

@@ -38,8 +38,18 @@
38 38
 #ifndef CONFIGURATION_H
39 39
 #define CONFIGURATION_H
40 40
 
41
-#include "boards.h"
42
-#include "macros.h"
41
+/**
42
+ *
43
+ *  ***********************************
44
+ *  **  ATTENTION TO ALL DEVELOPERS  **
45
+ *  ***********************************
46
+ *
47
+ * You must increment this version number for every significant change such as,
48
+ * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option.
49
+ *
50
+ * Note: Update also Version.h !
51
+ */
52
+#define CONFIGURATION_H_VERSION 010100
43 53
 
44 54
 //===========================================================================
45 55
 //============================= Getting Started =============================
@@ -73,20 +83,26 @@
73 83
 
74 84
 // @section info
75 85
 
76
-#if ENABLED(USE_AUTOMATIC_VERSIONING)
77
-  #include "_Version.h"
78
-#else
79
-  #include "Version.h"
80
-#endif
81
-
82 86
 // User-specified version info of this build to display in [Pronterface, etc] terminal window during
83 87
 // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
84 88
 // build by the user have been successfully uploaded into firmware.
85 89
 #define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes.
86 90
 #define SHOW_BOOTSCREEN
87
-#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during bootup in line 1
88
-//#define STRING_SPLASH_LINE2 STRING_DISTRIBUTION_DATE // will be shown during bootup in line 2
91
+#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during boot in line 1
92
+#define STRING_SPLASH_LINE2 WEBSITE_URL         // will be shown during boot in line 2
89 93
 
94
+//
95
+// *** VENDORS PLEASE READ *****************************************************
96
+//
97
+// Marlin now allow you to have a vendor boot image to be displayed on machine
98
+// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your
99
+// custom boot image and them the default Marlin boot image is shown.
100
+//
101
+// We suggest for you to take advantage of this new feature and keep the Marlin
102
+// boot image unmodified. For an example have a look at the bq Hephestos 2
103
+// example configuration folder.
104
+//
105
+//#define SHOW_CUSTOM_BOOTSCREEN
90 106
 // @section machine
91 107
 
92 108
 // SERIAL_PORT selects which serial port should be used for communication with the host.
@@ -123,17 +139,40 @@
123 139
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
124 140
 //#define SINGLENOZZLE
125 141
 
142
+// A dual extruder that uses a single stepper motor
143
+// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z
144
+//#define SWITCHING_EXTRUDER
145
+#if ENABLED(SWITCHING_EXTRUDER)
146
+  #define SWITCHING_EXTRUDER_SERVO_NR 0
147
+  #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1
148
+  //#define HOTEND_OFFSET_Z {0.0, 0.0}
149
+#endif
150
+
151
+/**
152
+ * "Mixing Extruder"
153
+ *   - Adds a new code, M165, to set the current mix factors.
154
+ *   - Extends the stepping routines to move multiple steppers in proportion to the mix.
155
+ *   - Optional support for Repetier Host M163, M164, and virtual extruder.
156
+ *   - This implementation supports only a single extruder.
157
+ *   - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
158
+ */
159
+//#define MIXING_EXTRUDER
160
+#if ENABLED(MIXING_EXTRUDER)
161
+  #define MIXING_STEPPERS 2        // Number of steppers in your mixing extruder
162
+  #define MIXING_VIRTUAL_TOOLS 16  // Use the Virtual Tool method with M163 and M164
163
+  //#define DIRECT_MIXING_IN_G1    // Allow ABCDHI mix factors in G1 movement commands
164
+#endif
165
+
126 166
 // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
127 167
 // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
128 168
 // For the other hotends it is their distance from the extruder 0 hotend.
129
-//#define EXTRUDER_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
130
-//#define EXTRUDER_OFFSET_Y {0.0, 5.00}  // (in mm) for each extruder, offset of the hotend on the Y axis
169
+//#define HOTEND_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
170
+//#define HOTEND_OFFSET_Y {0.0, 5.00}  // (in mm) for each extruder, offset of the hotend on the Y axis
131 171
 
132 172
 //// The following define selects which power supply you have. Please choose the one that matches your setup
133 173
 // 1 = ATX
134 174
 // 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC)
135 175
 // :{1:'ATX',2:'X-Box 360'}
136
-
137 176
 #define POWER_SUPPLY 1
138 177
 
139 178
 // Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it.
@@ -168,6 +207,7 @@
168 207
 // 13 is 100k Hisens 3950  1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE"
169 208
 // 20 is the PT100 circuit found in the Ultimainboard V2.x
170 209
 // 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950
210
+// 66 is 4.7M High Temperature thermistor from Dyze Design
171 211
 // 70 is the 100K thermistor found in the bq Hephestos 2
172 212
 //
173 213
 //    1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k
@@ -184,7 +224,7 @@
184 224
 //     Use it for Testing or Development purposes. NEVER for production machine.
185 225
 //#define DUMMY_THERMISTOR_998_VALUE 25
186 226
 //#define DUMMY_THERMISTOR_999_VALUE 100
187
-// :{ '0': "Not used", '4': "10k !! do not use for a hotend. Bad resolution at high temp. !!", '1': "100k / 4.7k - EPCOS", '51': "100k / 1k - EPCOS", '6': "100k / 4.7k EPCOS - Not as accurate as Table 1", '5': "100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '7': "100k / 4.7k Honeywell 135-104LAG-J01", '71': "100k / 4.7k Honeywell 135-104LAF-J01", '8': "100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT", '9': "100k / 4.7k GE Sensing AL03006-58.2K-97-G1", '10': "100k / 4.7k RS 198-961", '11': "100k / 4.7k beta 3950 1%", '12': "100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)", '13': "100k Hisens 3950  1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'", '60': "100k Maker's Tool Works Kapton Bed Thermistor beta=3950", '55': "100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '2': "200k / 4.7k - ATC Semitec 204GT-2", '52': "200k / 1k - ATC Semitec 204GT-2", '-3': "Thermocouple + MAX31855 (only for sensor 0)", '-2': "Thermocouple + MAX6675 (only for sensor 0)", '-1': "Thermocouple + AD595", '3': "Mendel-parts / 4.7k", '1047': "Pt1000 / 4.7k", '1010': "Pt1000 / 1k (non standard)", '20': "PT100 (Ultimainboard V2.x)", '147': "Pt100 / 4.7k", '110': "Pt100 / 1k (non-standard)", '998': "Dummy 1", '999': "Dummy 2" }
227
+// :{ '0': "Not used",'1':"100k / 4.7k - EPCOS",'2':"200k / 4.7k - ATC Semitec 204GT-2",'3':"Mendel-parts / 4.7k",'4':"10k !! do not use for a hotend. Bad resolution at high temp. !!",'5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'6':"100k / 4.7k EPCOS - Not as accurate as Table 1",'7':"100k / 4.7k Honeywell 135-104LAG-J01",'8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT",'9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1",'10':"100k / 4.7k RS 198-961",'11':"100k / 4.7k beta 3950 1%",'12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)",'13':"100k Hisens 3950  1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'",'20':"PT100 (Ultimainboard V2.x)",'51':"100k / 1k - EPCOS",'52':"200k / 1k - ATC Semitec 204GT-2",'55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950",'66':"Dyze Design 4.7M High Temperature thermistor",'70':"the 100K thermistor found in the bq Hephestos 2",'71':"100k / 4.7k Honeywell 135-104LAF-J01",'147':"Pt100 / 4.7k",'1047':"Pt1000 / 4.7k",'110':"Pt100 / 1k (non-standard)",'1010':"Pt1000 / 1k (non standard)",'-3':"Thermocouple + MAX31855 (only for sensor 0)",'-2':"Thermocouple + MAX6675 (only for sensor 0)",'-1':"Thermocouple + AD595",'998':"Dummy 1",'999':"Dummy 2" }
188 228
 #define TEMP_SENSOR_0 1
189 229
 #define TEMP_SENSOR_1 0
190 230
 #define TEMP_SENSOR_2 0
@@ -223,10 +263,6 @@
223 263
 #define HEATER_3_MAXTEMP 275
224 264
 #define BED_MAXTEMP 150
225 265
 
226
-// If you want the M105 heater power reported in watts, define the BED_WATTS, and (shared for all extruders) EXTRUDER_WATTS
227
-//#define EXTRUDER_WATTS (12.0*12.0/6.7) // P=U^2/R
228
-//#define BED_WATTS (12.0*12.0/1.1)      // P=U^2/R
229
-
230 266
 //===========================================================================
231 267
 //============================= PID Settings ================================
232 268
 //===========================================================================
@@ -241,8 +277,8 @@
241 277
   //#define PID_DEBUG // Sends debug data to the serial port.
242 278
   //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX
243 279
   //#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
244
-  //#define PID_PARAMS_PER_EXTRUDER // Uses separate PID parameters for each extruder (useful for mismatched extruders)
245
-                                    // Set/get with gcode: M301 E[extruder number, 0-2]
280
+  //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders)
281
+                                  // Set/get with gcode: M301 E[extruder number, 0-2]
246 282
   #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature
247 283
                                   // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max.
248 284
   #define PID_INTEGRAL_DRIVE_MAX PID_MAX  //limit for the integral term
@@ -366,18 +402,79 @@
366 402
 #endif
367 403
 
368 404
 // Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup).
369
-const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
370
-const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
371
-const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
372
-const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
373
-const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
374
-const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
375
-const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
405
+#define X_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
406
+#define Y_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
407
+#define Z_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
408
+#define X_MAX_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
409
+#define Y_MAX_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
410
+#define Z_MAX_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
411
+#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
376 412
 
377 413
 //===========================================================================
378 414
 //============================= Z Probe Options =============================
379 415
 //===========================================================================
380 416
 
417
+//
418
+// Probe Type
419
+// Probes are sensors/switches that are activated / deactivated before/after use.
420
+//
421
+// Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc.
422
+// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below.
423
+//
424
+// Use M851 to set the Z probe vertical offset from the nozzle. Store with M500.
425
+//
426
+
427
+// A Fix-Mounted Probe either doesn't deploy or needs manual deployment.
428
+// For example an inductive probe, or a setup that uses the nozzle to probe.
429
+// An inductive probe must be deactivated to go below
430
+// its trigger-point if hardware endstops are active.
431
+//#define FIX_MOUNTED_PROBE
432
+
433
+// The BLTouch probe emulates a servo probe.
434
+//#define BLTOUCH
435
+
436
+// Z Servo Probe, such as an endstop switch on a rotating arm.
437
+//#define Z_ENDSTOP_SERVO_NR 0
438
+//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles
439
+
440
+// Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
441
+//#define Z_PROBE_SLED
442
+//#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.
443
+
444
+// Z Probe to nozzle (X,Y) offset, relative to (0, 0).
445
+// X and Y offsets must be integers.
446
+//
447
+// In the following example the X and Y offsets are both positive:
448
+// #define X_PROBE_OFFSET_FROM_EXTRUDER 10
449
+// #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
450
+//
451
+//    +-- BACK ---+
452
+//    |           |
453
+//  L |    (+) P  | R <-- probe (20,20)
454
+//  E |           | I
455
+//  F | (-) N (+) | G <-- nozzle (10,10)
456
+//  T |           | H
457
+//    |    (-)    | T
458
+//    |           |
459
+//    O-- FRONT --+
460
+//  (0,0)
461
+#define X_PROBE_OFFSET_FROM_EXTRUDER -25     // X offset: -left  +right  [of the nozzle]
462
+#define Y_PROBE_OFFSET_FROM_EXTRUDER -29     // Y offset: -front +behind [the nozzle]
463
+#define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35  // Z offset: -below +above  [the nozzle]
464
+
465
+// X and Y axis travel speed (mm/m) between probes
466
+#define XY_PROBE_SPEED 8000
467
+// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
468
+#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
469
+// Speed for the "accurate" probe of each point
470
+#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
471
+// Use double touch for probing
472
+//#define PROBE_DOUBLE_TOUCH
473
+
474
+//
475
+// Allen Key Probe is defined in the Delta example configurations.
476
+//
477
+
381 478
 // Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z Probe and a Z-min-endstop on the same machine.
382 479
 // With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing.
383 480
 //
@@ -389,7 +486,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
389 486
 // To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN.
390 487
 //
391 488
 // For a servo-based Z probe, you must set up servo support below, including
392
-// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES.
489
+// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and Z_SERVO_ANGLES.
393 490
 //
394 491
 // - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin.
395 492
 // - Use 5V for powered (usu. inductive) sensors.
@@ -422,6 +519,21 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
422 519
 // If you're using the Z MIN endstop connector for your Z probe, this has no effect.
423 520
 //#define DISABLE_Z_MIN_PROBE_ENDSTOP
424 521
 
522
+// Enable Z Probe Repeatability test to see how accurate your probe is
523
+//#define Z_MIN_PROBE_REPEATABILITY_TEST
524
+
525
+//
526
+// Probe Raise options provide clearance for the probe to deploy, stow, and travel.
527
+//
528
+#define Z_PROBE_DEPLOY_HEIGHT 15 // Raise to make room for the probe to deploy / stow
529
+#define Z_PROBE_TRAVEL_HEIGHT 5  // Raise between probing points.
530
+
531
+//
532
+// For M851 give a range for adjusting the Z probe offset
533
+//
534
+#define Z_PROBE_OFFSET_RANGE_MIN -20
535
+#define Z_PROBE_OFFSET_RANGE_MAX 20
536
+
425 537
 // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
426 538
 // :{0:'Low',1:'High'}
427 539
 #define X_ENABLE_ON 0
@@ -458,8 +570,9 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
458 570
 #define INVERT_E3_DIR false
459 571
 
460 572
 // @section homing
461
-//#define MIN_Z_HEIGHT_FOR_HOMING 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
462
-                                    // Be sure you have this distance over your Z_MAX_POS in case.
573
+
574
+//#define Z_HOMING_HEIGHT 4  // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
575
+                             // Be sure you have this distance over your Z_MAX_POS in case.
463 576
 
464 577
 // ENDSTOP SETTINGS:
465 578
 // Sets direction of endstops when homing; 1=MAX, -1=MIN
@@ -489,7 +602,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
489 602
                                  // It is assumed that when logic high = filament available
490 603
                                  //                    when logic  low = filament ran out
491 604
 #if ENABLED(FILAMENT_RUNOUT_SENSOR)
492
-  const bool FIL_RUNOUT_INVERTING = true;  // Should be uncommented and true or false should assigned
605
+  const bool FIL_RUNOUT_INVERTING = false; // set to true to invert the logic of the sensor.
493 606
   #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined.
494 607
   #define FILAMENT_RUNOUT_SCRIPT "M600"
495 608
 #endif
@@ -501,10 +614,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
501 614
 //#define MESH_BED_LEVELING    // Enable mesh bed leveling.
502 615
 
503 616
 #if ENABLED(MESH_BED_LEVELING)
504
-  #define MESH_MIN_X 10
505
-  #define MESH_MAX_X (X_MAX_POS - (MESH_MIN_X))
506
-  #define MESH_MIN_Y 10
507
-  #define MESH_MAX_Y (Y_MAX_POS - (MESH_MIN_Y))
617
+  #define MESH_INSET 10        // Mesh inset margin on print area
508 618
   #define MESH_NUM_X_POINTS 3  // Don't use more than 7 points per axis, implementation limited.
509 619
   #define MESH_NUM_Y_POINTS 3
510 620
   #define MESH_HOME_SEARCH_Z 4  // Z after Home, bed somewhere below but above 0.0.
@@ -526,8 +636,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
526 636
 // @section bedlevel
527 637
 
528 638
 //#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line)
639
+
640
+// Enable this feature to get detailed logging of G28, G29, M48, etc.
641
+// Logging is off by default. Enable this logging feature with 'M111 S32'.
642
+// NOTE: Requires a huge amount of PROGMEM.
529 643
 //#define DEBUG_LEVELING_FEATURE
530
-//#define Z_MIN_PROBE_REPEATABILITY_TEST  // If not commented out, Z Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
531 644
 
532 645
 #if ENABLED(AUTO_BED_LEVELING_FEATURE)
533 646
 
@@ -570,58 +683,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
570 683
     #define ABL_PROBE_PT_3_X 170
571 684
     #define ABL_PROBE_PT_3_Y 20
572 685
 
573
-  #endif // AUTO_BED_LEVELING_GRID
574
-
575
-  // Z Probe to nozzle (X,Y) offset, relative to (0, 0).
576
-  // X and Y offsets must be integers.
577
-  //
578
-  // In the following example the X and Y offsets are both positive:
579
-  // #define X_PROBE_OFFSET_FROM_EXTRUDER 10
580
-  // #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
581
-  //
582
-  //    +-- BACK ---+
583
-  //    |           |
584
-  //  L |    (+) P  | R <-- probe (20,20)
585
-  //  E |           | I
586
-  //  F | (-) N (+) | G <-- nozzle (10,10)
587
-  //  T |           | H
588
-  //    |    (-)    | T
589
-  //    |           |
590
-  //    O-- FRONT --+
591
-  //  (0,0)
592
-  #define X_PROBE_OFFSET_FROM_EXTRUDER -25     // X offset: -left  +right  [of the nozzle]
593
-  #define Y_PROBE_OFFSET_FROM_EXTRUDER -29     // Y offset: -front +behind [the nozzle]
594
-  #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35  // Z offset: -below +above  [the nozzle]
595
-
596
-  #define XY_TRAVEL_SPEED 8000         // X and Y axis travel speed between probes, in mm/min.
597
-
598
-  #define Z_RAISE_BEFORE_PROBING 15   // How much the Z axis will be raised before traveling to the first probing point.
599
-  #define Z_RAISE_BETWEEN_PROBINGS 5  // How much the Z axis will be raised when traveling from between next probing points.
600
-  #define Z_RAISE_AFTER_PROBING 15    // How much the Z axis will be raised after the last probing point.
686
+  #endif // !AUTO_BED_LEVELING_GRID
601 687
 
602 688
   //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine.
603 689
                                                                              // Useful to retract a deployable Z probe.
604 690
 
605
-  // Probes are sensors/switches that need to be activated before they can be used
606
-  // and deactivated after their use.
607
-  // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE
608
-
609
-  // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER
610
-  // when the hardware endstops are active.
611
-  //#define FIX_MOUNTED_PROBE
612
-
613
-  // A Servo Probe can be defined in the servo section below.
614
-
615
-  // An Allen Key Probe is currently predefined only in the delta example configurations.
616
-
617
-  // Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
618
-  //#define Z_PROBE_SLED
619
-  //#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.
620
-
621
-  // A Mechanical Probe is any probe that either doesn't deploy or needs manual deployment
622
-  // For example any setup that uses the nozzle itself as a probe.
623
-  //#define MECHANICAL_PROBE
624
-
625 691
   // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing,
626 692
   // it is highly recommended you also enable Z_SAFE_HOMING below!
627 693
 
@@ -630,18 +696,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
630 696
 
631 697
 // @section homing
632 698
 
633
-// The position of the homing switches
634
-//#define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used
635
-//#define BED_CENTER_AT_0_0  // If defined, the center of the bed is at (X=0, Y=0)
636
-
637
-// Manual homing switch locations:
638
-// For deltabots this means top and center of the Cartesian print volume.
639
-#if ENABLED(MANUAL_HOME_POSITIONS)
640
-  #define MANUAL_X_HOME_POS 0
641
-  #define MANUAL_Y_HOME_POS 0
642
-  #define MANUAL_Z_HOME_POS 0
643
-  //#define MANUAL_Z_HOME_POS 402 // For delta: Distance between nozzle and print surface after homing.
644
-#endif
699
+// The center of the bed is at (X=0, Y=0)
700
+//#define BED_CENTER_AT_0_0
701
+
702
+// Manually set the home position. Leave these undefined for automatic settings.
703
+// For DELTA this is the top-center of the Cartesian print volume.
704
+//#define MANUAL_X_HOME_POS 0
705
+//#define MANUAL_Y_HOME_POS 0
706
+//#define MANUAL_Z_HOME_POS 0 // Distance between the nozzle to printbed after homing
645 707
 
646 708
 // Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
647 709
 //
@@ -649,7 +711,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
649 711
 //
650 712
 // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
651 713
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
652
-// - Position the Z probe in a defined XY point before Z Homing when homing all axes (G28).
714
+// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
653 715
 // - Prevent Z homing when the Z probe is outside bed area.
654 716
 //#define Z_SAFE_HOMING
655 717
 
@@ -658,14 +720,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
658 720
   #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2)    // Y point for Z homing when homing all axis (G28).
659 721
 #endif
660 722
 
723
+// Homing speeds (mm/m)
724
+#define HOMING_FEEDRATE_XY (50*60)
725
+#define HOMING_FEEDRATE_Z  (4*60)
661 726
 
662
-// @section movement
663
-
664
-/**
665
- * MOVEMENT SETTINGS
666
- */
667
-
668
-#define HOMING_FEEDRATE {50*60, 50*60, 4*60, 0}  // set the homing speeds (mm/min)
727
+//
728
+// MOVEMENT SETTINGS
729
+// @section motion
730
+//
669 731
 
670 732
 // default settings
671 733
 
@@ -688,18 +750,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
688 750
 //============================= Additional Features ===========================
689 751
 //=============================================================================
690 752
 
691
-// @section more
692
-
693
-// Custom M code points
694
-#define CUSTOM_M_CODES
695
-#if ENABLED(CUSTOM_M_CODES)
696
-  #if ENABLED(AUTO_BED_LEVELING_FEATURE)
697
-    #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851
698
-    #define Z_PROBE_OFFSET_RANGE_MIN -20
699
-    #define Z_PROBE_OFFSET_RANGE_MAX 20
700
-  #endif
701
-#endif
702
-
703 753
 // @section extras
704 754
 
705 755
 //
@@ -731,22 +781,107 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
731 781
 //
732 782
 //#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose
733 783
 
784
+//
785
+// G20/G21 Inch mode support
786
+//
787
+//#define INCH_MODE_SUPPORT
788
+
789
+//
790
+// M149 Set temperature units support
791
+//
792
+//#define TEMPERATURE_UNITS_SUPPORT
793
+
734 794
 // @section temperature
735 795
 
736 796
 // Preheat Constants
737
-#define PLA_PREHEAT_HOTEND_TEMP 180
738
-#define PLA_PREHEAT_HPB_TEMP 70
739
-#define PLA_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
797
+#define PREHEAT_1_TEMP_HOTEND 180
798
+#define PREHEAT_1_TEMP_BED     70
799
+#define PREHEAT_1_FAN_SPEED   255 // Value from 0 to 255
800
+
801
+#define PREHEAT_2_TEMP_HOTEND 240
802
+#define PREHEAT_2_TEMP_BED    100
803
+#define PREHEAT_2_FAN_SPEED   255 // Value from 0 to 255
740 804
 
741
-#define ABS_PREHEAT_HOTEND_TEMP 240
742
-#define ABS_PREHEAT_HPB_TEMP 100
743
-#define ABS_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
805
+//
806
+// Nozzle Park -- EXPERIMENTAL
807
+//
808
+// When enabled allows the user to define a special XYZ position, inside the
809
+// machine's topology, to park the nozzle when idle or when receiving the G27
810
+// command.
811
+//
812
+// The "P" paramenter controls what is the action applied to the Z axis:
813
+//    P0: (Default) If current Z-pos is lower than Z-park then the nozzle will
814
+//        be raised to reach Z-park height.
815
+//
816
+//    P1: No matter the current Z-pos, the nozzle will be raised/lowered to
817
+//        reach Z-park height.
818
+//
819
+//    P2: The nozzle height will be raised by Z-park amount but never going over
820
+//        the machine's limit of Z_MAX_POS.
821
+//
822
+//#define NOZZLE_PARK_FEATURE
823
+
824
+#if ENABLED(NOZZLE_PARK_FEATURE)
825
+  // Specify a park position as { X, Y, Z }
826
+  #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 }
827
+#endif
828
+
829
+//
830
+// Clean Nozzle Feature -- EXPERIMENTAL
831
+//
832
+// When enabled allows the user to send G12 to start the nozzle cleaning
833
+// process, the G-Code accepts two parameters:
834
+//   "P" for pattern selection
835
+//   "S" for defining the number of strokes/repetitions
836
+//
837
+// Available list of patterns:
838
+//   P0: This is the default pattern, this process requires a sponge type
839
+//       material at a fixed bed location, the cleaning process is based on
840
+//       "strokes" i.e. back-and-forth movements between the starting and end
841
+//       points.
842
+//
843
+//   P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T"
844
+//       defines the number of zig-zag triangles to be done. "S" defines the
845
+//       number of strokes aka one back-and-forth movement. As an example
846
+//       sending "G12 P1 S1 T3" will execute:
847
+//
848
+//          --
849
+//         |  (X0, Y1) |     /\        /\        /\     | (X1, Y1)
850
+//         |           |    /  \      /  \      /  \    |
851
+//       A |           |   /    \    /    \    /    \   |
852
+//         |           |  /      \  /      \  /      \  |
853
+//         |  (X0, Y0) | /        \/        \/        \ | (X1, Y0)
854
+//          --         +--------------------------------+
855
+//                       |________|_________|_________|
856
+//                           T1        T2        T3
857
+//
858
+// Caveats: End point Z should use the same value as Start point Z.
859
+//
860
+// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments
861
+// may change to add new functionality like different wipe patterns.
862
+//
863
+//#define NOZZLE_CLEAN_FEATURE
864
+
865
+#if ENABLED(NOZZLE_CLEAN_FEATURE)
866
+  // Number of pattern repetitions
867
+  #define NOZZLE_CLEAN_STROKES  12
868
+
869
+  // Specify positions as { X, Y, Z }
870
+  #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)}
871
+  #define NOZZLE_CLEAN_END_POINT   {100, 60, (Z_MIN_POS + 1)}
872
+
873
+  // Moves the nozzle to the initial position
874
+  #define NOZZLE_CLEAN_GOBACK
875
+#endif
744 876
 
745 877
 //
746 878
 // Print job timer
747 879
 //
748 880
 // Enable this option to automatically start and stop the
749
-// print job timer when M104 and M109 commands are received.
881
+// print job timer when M104/M109/M190 commands are received.
882
+// M104 (extruder without wait) - high temp = none, low temp = stop timer
883
+// M109 (extruder with wait) - high temp = start timer, low temp = stop timer
884
+// M190 (bed with wait) - high temp = start timer, low temp = none
750 885
 //
751 886
 // In all cases the timer can be started and stopped using
752 887
 // the following commands:
@@ -779,8 +914,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
779 914
 //
780 915
 // Here you may choose the language used by Marlin on the LCD menus, the following
781 916
 // list of languages are available:
782
-//    en, pl, fr, de, es, ru, bg, it, pt, pt_utf8, pt-br, pt-br_utf8,
783
-//    fi, an, nl, ca, eu, kana, kana_utf8, cn, cz, test
917
+//    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
918
+//    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
919
+//
920
+// :{'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','test':'TEST'}
784 921
 //
785 922
 //#define LCD_LANGUAGE en
786 923
 
@@ -928,6 +1065,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
928 1065
 //#define ULTIPANEL
929 1066
 
930 1067
 //
1068
+// Cartesio UI
1069
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1070
+//
1071
+//#define CARTESIO_UI
1072
+
1073
+//
931 1074
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
932 1075
 // http://reprap.org/wiki/PanelOne
933 1076
 //
@@ -940,6 +1083,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
940 1083
 //#define MAKRPANEL
941 1084
 
942 1085
 //
1086
+// ReprapWorld Graphical LCD
1087
+// https://reprapworld.com/?products_details&products_id/1218
1088
+//
1089
+//#define REPRAPWORLD_GRAPHICAL_LCD
1090
+
1091
+//
943 1092
 // Activate one of these if you have a Panucatt Devices
944 1093
 // Viki 2.0 or mini Viki with Graphic LCD
945 1094
 // http://panucatt.com
@@ -989,7 +1138,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
989 1138
 // is pressed, a value of 10.0 means 10mm per click.
990 1139
 //
991 1140
 //#define REPRAPWORLD_KEYPAD
992
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1141
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
993 1142
 
994 1143
 //
995 1144
 // RigidBot Panel V1.0
@@ -1050,6 +1199,15 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1050 1199
 //#define U8GLIB_SSD1306
1051 1200
 
1052 1201
 //
1202
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1203
+//
1204
+//#define SAV_3DGLCD
1205
+#if ENABLED(SAV_3DGLCD)
1206
+  //#define U8GLIB_SSD1306
1207
+  #define U8GLIB_SH1106
1208
+#endif
1209
+
1210
+//
1053 1211
 // CONTROLLER TYPE: Shift register panels
1054 1212
 //
1055 1213
 // 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH
@@ -1077,7 +1235,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1077 1235
 // at zero value, there are 128 effective control positions.
1078 1236
 #define SOFT_PWM_SCALE 0
1079 1237
 
1080
-// Temperature status LEDs that display the hotend and bet temperature.
1238
+// Temperature status LEDs that display the hotend and bed temperature.
1081 1239
 // If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
1082 1240
 // Otherwise the RED led is on. There is 1C hysteresis.
1083 1241
 //#define TEMP_STAT_LEDS
@@ -1109,28 +1267,16 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1109 1267
 //
1110 1268
 //#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
1111 1269
 
1112
-// Servo Endstops
1113
-//
1114
-// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes.
1115
-// Use M851 to set the Z probe vertical offset from the nozzle. Store that setting with M500.
1116
-//
1117
-//#define X_ENDSTOP_SERVO_NR 1
1118
-//#define Y_ENDSTOP_SERVO_NR 2
1119
-//#define Z_ENDSTOP_SERVO_NR 0
1120
-//#define SERVO_ENDSTOP_ANGLES {{0,0}, {0,0}, {70,0}} // X,Y,Z Axis Extend and Retract angles
1270
+// Delay (in microseconds) before the next move will start, to give the servo time to reach its target angle.
1271
+// 300ms is a good value but you can try less delay.
1272
+// If the servo can't reach the requested position, increase it.
1273
+#define SERVO_DELAY 300
1121 1274
 
1122 1275
 // Servo deactivation
1123 1276
 //
1124 1277
 // With this option servos are powered only during movement, then turned off to prevent jitter.
1125 1278
 //#define DEACTIVATE_SERVOS_AFTER_MOVE
1126 1279
 
1127
-#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE)
1128
-  // Delay (in microseconds) before turning the servo off. This depends on the servo speed.
1129
-  // 300ms is a good value but you can try less delay.
1130
-  // If the servo can't reach the requested position, increase it.
1131
-  #define SERVO_DEACTIVATION_DELAY 300
1132
-#endif
1133
-
1134 1280
 /**********************************************************************\
1135 1281
  * Support for a filament diameter sensor
1136 1282
  * Also allows adjustment of diameter at print time (vs  at slicing)
@@ -1161,7 +1307,4 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1161 1307
   //#define FILAMENT_LCD_DISPLAY
1162 1308
 #endif
1163 1309
 
1164
-#include "Configuration_adv.h"
1165
-#include "thermistortables.h"
1166
-
1167
-#endif //CONFIGURATION_H
1310
+#endif // CONFIGURATION_H

+ 148
- 47
Marlin/example_configurations/Felix/Configuration_adv.h Parādīt failu

@@ -33,7 +33,18 @@
33 33
 #ifndef CONFIGURATION_ADV_H
34 34
 #define CONFIGURATION_ADV_H
35 35
 
36
-#include "Conditionals.h"
36
+/**
37
+ *
38
+ *  ***********************************
39
+ *  **  ATTENTION TO ALL DEVELOPERS  **
40
+ *  ***********************************
41
+ *
42
+ * You must increment this version number for every significant change such as,
43
+ * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option.
44
+ *
45
+ * Note: Update also Version.h !
46
+ */
47
+#define CONFIGURATION_ADV_H_VERSION 010100
37 48
 
38 49
 // @section temperature
39 50
 
@@ -102,8 +113,8 @@
102 113
 #if ENABLED(PIDTEMP)
103 114
   // this adds an experimental additional term to the heating power, proportional to the extrusion speed.
104 115
   // if Kc is chosen well, the additional required power due to increased melting should be compensated.
105
-  #define PID_ADD_EXTRUSION_RATE
106
-  #if ENABLED(PID_ADD_EXTRUSION_RATE)
116
+  //#define PID_EXTRUSION_SCALING
117
+  #if ENABLED(PID_EXTRUSION_SCALING)
107 118
     #define DEFAULT_Kc (100) //heating power=Kc*(e_speed)
108 119
     #define LPQ_MAX_LEN 50
109 120
   #endif
@@ -128,15 +139,42 @@
128 139
 //The M105 command return, besides traditional information, the ADC value read from temperature sensors.
129 140
 //#define SHOW_TEMP_ADC_VALUES
130 141
 
142
+/**
143
+ * High Temperature Thermistor Support
144
+ *
145
+ * Thermistors able to support high temperature tend to have a hard time getting
146
+ * good readings at room and lower temperatures. This means HEATER_X_RAW_LO_TEMP
147
+ * will probably be caught when the heating element first turns on during the
148
+ * preheating process, which will trigger a min_temp_error as a safety measure
149
+ * and force stop everything.
150
+ * To circumvent this limitation, we allow for a preheat time (during which,
151
+ * min_temp_error won't be triggered) and add a min_temp buffer to handle
152
+ * aberrant readings.
153
+ *
154
+ * If you want to enable this feature for your hotend thermistor(s)
155
+ * uncomment and set values > 0 in the constants below
156
+ */
157
+
158
+// The number of consecutive low temperature errors that can occur
159
+// before a min_temp_error is triggered. (Shouldn't be more than 10.)
160
+//#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 0
161
+
162
+// The number of milliseconds a hotend will preheat before starting to check
163
+// the temperature. This value should NOT be set to the time it takes the
164
+// hot end to reach the target temperature, but the time it takes to reach
165
+// the minimum temperature your thermistor can read. The lower the better/safer.
166
+// This shouldn't need to be more than 30 seconds (30000)
167
+//#define MILLISECONDS_PREHEAT_TIME 0
168
+
131 169
 // @section extruder
132 170
 
133 171
 //  extruder run-out prevention.
134 172
 //if the machine is idle, and the temperature over MINTEMP, every couple of SECONDS some filament is extruded
135 173
 //#define EXTRUDER_RUNOUT_PREVENT
136 174
 #define EXTRUDER_RUNOUT_MINTEMP 190
137
-#define EXTRUDER_RUNOUT_SECONDS 30.
138
-#define EXTRUDER_RUNOUT_ESTEPS 14. //mm filament
139
-#define EXTRUDER_RUNOUT_SPEED 1500.  //extrusion speed
175
+#define EXTRUDER_RUNOUT_SECONDS 30
176
+#define EXTRUDER_RUNOUT_ESTEPS 14   // mm filament
177
+#define EXTRUDER_RUNOUT_SPEED 1500  // extrusion speed
140 178
 #define EXTRUDER_RUNOUT_EXTRUDE 100
141 179
 
142 180
 // @section temperature
@@ -177,24 +215,42 @@
177 215
 #define EXTRUDER_AUTO_FAN_TEMPERATURE 50
178 216
 #define EXTRUDER_AUTO_FAN_SPEED   255  // == full speed
179 217
 
180
-
181 218
 //===========================================================================
182
-//=============================Mechanical Settings===========================
219
+//============================ Mechanical Settings ==========================
183 220
 //===========================================================================
184 221
 
185 222
 // @section homing
186 223
 
187
-#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing
224
+// If you want endstops to stay on (by default) even when not homing
225
+// enable this option. Override at any time with M120, M121.
226
+//#define ENDSTOPS_ALWAYS_ON_DEFAULT
188 227
 
189 228
 // @section extras
190 229
 
191 230
 //#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
192 231
 
232
+// Dual X Steppers
233
+// Uncomment this option to drive two X axis motors.
234
+// The next unused E driver will be assigned to the second X stepper.
235
+//#define X_DUAL_STEPPER_DRIVERS
236
+#if ENABLED(X_DUAL_STEPPER_DRIVERS)
237
+  // Set true if the two X motors need to rotate in opposite directions
238
+  #define INVERT_X2_VS_X_DIR true
239
+#endif
240
+
241
+
242
+// Dual Y Steppers
243
+// Uncomment this option to drive two Y axis motors.
244
+// The next unused E driver will be assigned to the second Y stepper.
245
+//#define Y_DUAL_STEPPER_DRIVERS
246
+#if ENABLED(Y_DUAL_STEPPER_DRIVERS)
247
+  // Set true if the two Y motors need to rotate in opposite directions
248
+  #define INVERT_Y2_VS_Y_DIR true
249
+#endif
250
+
193 251
 // A single Z stepper driver is usually used to drive 2 stepper motors.
194
-// Uncomment this define to utilize a separate stepper driver for each Z axis motor.
195
-// Only a few motherboards support this, like RAMPS, which have dual extruder support (the 2nd, often unused, extruder driver is used
196
-// to control the 2nd Z axis stepper motor). The pins are currently only defined for a RAMPS motherboards.
197
-// On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder.
252
+// Uncomment this option to use a separate stepper driver for each Z axis motor.
253
+// The next unused E driver will be assigned to the second Z stepper.
198 254
 //#define Z_DUAL_STEPPER_DRIVERS
199 255
 
200 256
 #if ENABLED(Z_DUAL_STEPPER_DRIVERS)
@@ -216,14 +272,6 @@
216 272
 
217 273
 #endif // Z_DUAL_STEPPER_DRIVERS
218 274
 
219
-// Same again but for Y Axis.
220
-//#define Y_DUAL_STEPPER_DRIVERS
221
-
222
-#if ENABLED(Y_DUAL_STEPPER_DRIVERS)
223
-  // Define if the two Y drives need to rotate in opposite directions
224
-  #define INVERT_Y2_VS_Y_DIR true
225
-#endif
226
-
227 275
 // Enable this for dual x-carriage printers.
228 276
 // A dual x-carriage design has the advantage that the inactive extruder can be parked which
229 277
 // prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
@@ -237,7 +285,7 @@
237 285
   #define X2_MAX_POS 353    // set maximum to the distance between toolheads when both heads are homed
238 286
   #define X2_HOME_DIR 1     // the second X-carriage always homes to the maximum endstop position
239 287
   #define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position
240
-      // However: In this mode the EXTRUDER_OFFSET_X value for the second extruder provides a software
288
+      // However: In this mode the HOTEND_OFFSET_X value for the second extruder provides a software
241 289
       // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops
242 290
       // without modifying the firmware (through the "M218 T1 X???" command).
243 291
       // Remember: you should set the second extruder x-offset to 0 in your slicer.
@@ -279,7 +327,10 @@
279 327
 
280 328
 #define AXIS_RELATIVE_MODES {false, false, false, false}
281 329
 
282
-//By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
330
+// Allow duplication mode with a basic dual-nozzle extruder
331
+//#define DUAL_NOZZLE_DUPLICATION_MODE
332
+
333
+// By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
283 334
 #define INVERT_X_STEP_PIN false
284 335
 #define INVERT_Y_STEP_PIN false
285 336
 #define INVERT_Z_STEP_PIN false
@@ -351,6 +402,9 @@
351 402
 
352 403
 // @section lcd
353 404
 
405
+// Include a page of printer information in the LCD Main Menu
406
+//#define LCD_INFO_MENU
407
+
354 408
 #if ENABLED(SDSUPPORT)
355 409
 
356 410
   // Some RAMPS and other boards don't detect when an SD card is inserted. You can work
@@ -388,7 +442,6 @@
388 442
   // This option allows you to abort SD printing when any endstop is triggered.
389 443
   // This feature must be enabled with "M540 S1" or from the LCD menu.
390 444
   // To have any effect, endstops must be enabled during SD printing.
391
-  // With ENDSTOPS_ONLY_FOR_HOMING you must send "M120" to enable endstops.
392 445
   //#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED
393 446
 
394 447
 #endif // SDSUPPORT
@@ -404,9 +457,10 @@
404 457
   //#define USE_SMALL_INFOFONT
405 458
 #endif // DOGLCD
406 459
 
407
-// @section more
460
+// @section safety
408 461
 
409
-// The hardware watchdog should reset the microcontroller disabling all outputs, in case the firmware gets stuck and doesn't do temperature regulation.
462
+// The hardware watchdog should reset the microcontroller disabling all outputs,
463
+// in case the firmware gets stuck and doesn't do temperature regulation.
410 464
 #define USE_WATCHDOG
411 465
 
412 466
 #if ENABLED(USE_WATCHDOG)
@@ -445,6 +499,27 @@
445 499
   #define D_FILAMENT 2.85
446 500
 #endif
447 501
 
502
+// Implementation of a linear pressure control
503
+// Assumption: advance = k * (delta velocity)
504
+// K=0 means advance disabled. A good value for a gregs wade extruder will be around K=75
505
+//#define LIN_ADVANCE
506
+
507
+#if ENABLED(LIN_ADVANCE)
508
+  #define LIN_ADVANCE_K 75
509
+#endif
510
+
511
+// @section leveling
512
+
513
+// Default mesh area is an area with an inset margin on the print area.
514
+// Below are the macros that are used to define the borders for the mesh area,
515
+// made available here for specialized needs, ie dual extruder setup.
516
+#if ENABLED(MESH_BED_LEVELING)
517
+  #define MESH_MIN_X (X_MIN_POS + MESH_INSET)
518
+  #define MESH_MAX_X (X_MAX_POS - (MESH_INSET))
519
+  #define MESH_MIN_Y (Y_MIN_POS + MESH_INSET)
520
+  #define MESH_MAX_Y (Y_MAX_POS - (MESH_INSET))
521
+#endif
522
+
448 523
 // @section extras
449 524
 
450 525
 // Arc interpretation settings:
@@ -476,12 +551,27 @@ const unsigned int dropsegments = 5; //everything with less than this number of
476 551
   #define BLOCK_BUFFER_SIZE 16 // maximize block buffer
477 552
 #endif
478 553
 
479
-// @section more
554
+// @section serial
480 555
 
481
-//The ASCII buffer for receiving from the serial:
556
+// The ASCII buffer for serial input
482 557
 #define MAX_CMD_SIZE 96
483 558
 #define BUFSIZE 4
484 559
 
560
+// Transfer Buffer Size
561
+// To save 386 bytes of PROGMEM (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0.
562
+// To buffer a simple "ok" you need 4 bytes.
563
+// For ADVANCED_OK (M105) you need 32 bytes.
564
+// For debug-echo: 128 bytes for the optimal speed.
565
+// Other output doesn't need to be that speedy.
566
+// :[0,2,4,8,16,32,64,128,256]
567
+#define TX_BUFFER_SIZE 0
568
+
569
+// Enable an emergency-command parser to intercept certain commands as they
570
+// enter the serial receive buffer, so they cannot be blocked.
571
+// Currently handles M108, M112, M410
572
+// Does not work on boards using AT90USB (USBCON) processors!
573
+//#define EMERGENCY_PARSER
574
+
485 575
 // Bad Serial-connections can miss a received command by sending an 'ok'
486 576
 // Therefore some clients abort after 30 seconds in a timeout.
487 577
 // Some other clients start sending commands while receiving a 'wait'.
@@ -513,16 +603,30 @@ const unsigned int dropsegments = 5; //everything with less than this number of
513 603
 
514 604
 // Add support for experimental filament exchange support M600; requires display
515 605
 #if ENABLED(ULTIPANEL)
516
-  //#define FILAMENTCHANGEENABLE
517
-  #if ENABLED(FILAMENTCHANGEENABLE)
518
-    #define FILAMENTCHANGE_XPOS 3
519
-    #define FILAMENTCHANGE_YPOS 3
520
-    #define FILAMENTCHANGE_ZADD 10
521
-    #define FILAMENTCHANGE_FIRSTRETRACT -2
522
-    #define FILAMENTCHANGE_FINALRETRACT -100
523
-    #define AUTO_FILAMENT_CHANGE                //This extrude filament until you press the button on LCD
524
-    #define AUTO_FILAMENT_CHANGE_LENGTH 0.04    //Extrusion length on automatic extrusion loop
525
-    #define AUTO_FILAMENT_CHANGE_FEEDRATE 300   //Extrusion feedrate (mm/min) on automatic extrusion loop
606
+  // #define FILAMENT_CHANGE_FEATURE             // Enable filament exchange menu and M600 g-code (used for runout sensor too)
607
+  #if ENABLED(FILAMENT_CHANGE_FEATURE)
608
+    #define FILAMENT_CHANGE_X_POS 3             // X position of hotend
609
+    #define FILAMENT_CHANGE_Y_POS 3             // Y position of hotend
610
+    #define FILAMENT_CHANGE_Z_ADD 10            // Z addition of hotend (lift)
611
+    #define FILAMENT_CHANGE_XY_FEEDRATE 100     // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
612
+    #define FILAMENT_CHANGE_Z_FEEDRATE 5        // Z axis feedrate in mm/s (not used for delta printers)
613
+    #define FILAMENT_CHANGE_RETRACT_LENGTH 2    // Initial retract in mm
614
+                                                // It is a short retract used immediately after print interrupt before move to filament exchange position
615
+    #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
616
+    #define FILAMENT_CHANGE_UNLOAD_LENGTH 100   // Unload filament length from hotend in mm
617
+                                                // Longer length for bowden printers to unload filament from whole bowden tube,
618
+                                                // shorter lenght for printers without bowden to unload filament from extruder only,
619
+                                                // 0 to disable unloading for manual unloading
620
+    #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10  // Unload filament feedrate in mm/s - filament unloading can be fast
621
+    #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
622
+                                                // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
623
+                                                // Short or zero length for printers without bowden where loading is not used
624
+    #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
625
+    #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
626
+                                                // 0 to disable for manual extrusion
627
+                                                // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
628
+                                                // or until outcoming filament color is not clear for filament color change
629
+    #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
526 630
   #endif
527 631
 #endif
528 632
 
@@ -668,9 +772,9 @@ const unsigned int dropsegments = 5; //everything with less than this number of
668 772
  * devices on the bus.
669 773
  *
670 774
  * ; Example #1
671
- * ; This macro send the string "Marlin" to the slave device with address 0x63
775
+ * ; This macro send the string "Marlin" to the slave device with address 0x63 (99)
672 776
  * ; It uses multiple M155 commands with one B<base 10> arg
673
- * M155 A63  ; Target slave address
777
+ * M155 A99  ; Target slave address
674 778
  * M155 B77  ; M
675 779
  * M155 B97  ; a
676 780
  * M155 B114 ; r
@@ -680,19 +784,16 @@ const unsigned int dropsegments = 5; //everything with less than this number of
680 784
  * M155 S1   ; Send the current buffer
681 785
  *
682 786
  * ; Example #2
683
- * ; Request 6 bytes from slave device with address 0x63
684
- * M156 A63 B5
787
+ * ; Request 6 bytes from slave device with address 0x63 (99)
788
+ * M156 A99 B5
685 789
  *
686 790
  * ; Example #3
687 791
  * ; Example serial output of a M156 request
688
- * echo:i2c-reply: from:63 bytes:5 data:hello
792
+ * echo:i2c-reply: from:99 bytes:5 data:hello
689 793
  */
690 794
 
691 795
 // @section i2cbus
692 796
 
693 797
 //#define EXPERIMENTAL_I2CBUS
694 798
 
695
-#include "Conditionals.h"
696
-#include "SanityCheck.h"
697
-
698
-#endif //CONFIGURATION_ADV_H
799
+#endif // CONFIGURATION_ADV_H

+ 290
- 147
Marlin/example_configurations/Felix/DUAL/Configuration.h Parādīt failu

@@ -38,8 +38,18 @@
38 38
 #ifndef CONFIGURATION_H
39 39
 #define CONFIGURATION_H
40 40
 
41
-#include "boards.h"
42
-#include "macros.h"
41
+/**
42
+ *
43
+ *  ***********************************
44
+ *  **  ATTENTION TO ALL DEVELOPERS  **
45
+ *  ***********************************
46
+ *
47
+ * You must increment this version number for every significant change such as,
48
+ * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option.
49
+ *
50
+ * Note: Update also Version.h !
51
+ */
52
+#define CONFIGURATION_H_VERSION 010100
43 53
 
44 54
 //===========================================================================
45 55
 //============================= Getting Started =============================
@@ -73,20 +83,26 @@
73 83
 
74 84
 // @section info
75 85
 
76
-#if ENABLED(USE_AUTOMATIC_VERSIONING)
77
-  #include "_Version.h"
78
-#else
79
-  #include "Version.h"
80
-#endif
81
-
82 86
 // User-specified version info of this build to display in [Pronterface, etc] terminal window during
83 87
 // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
84 88
 // build by the user have been successfully uploaded into firmware.
85 89
 #define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes.
86 90
 #define SHOW_BOOTSCREEN
87
-#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during bootup in line 1
88
-//#define STRING_SPLASH_LINE2 STRING_DISTRIBUTION_DATE // will be shown during bootup in line 2
91
+#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during boot in line 1
92
+#define STRING_SPLASH_LINE2 WEBSITE_URL         // will be shown during boot in line 2
89 93
 
94
+//
95
+// *** VENDORS PLEASE READ *****************************************************
96
+//
97
+// Marlin now allow you to have a vendor boot image to be displayed on machine
98
+// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your
99
+// custom boot image and them the default Marlin boot image is shown.
100
+//
101
+// We suggest for you to take advantage of this new feature and keep the Marlin
102
+// boot image unmodified. For an example have a look at the bq Hephestos 2
103
+// example configuration folder.
104
+//
105
+//#define SHOW_CUSTOM_BOOTSCREEN
90 106
 // @section machine
91 107
 
92 108
 // SERIAL_PORT selects which serial port should be used for communication with the host.
@@ -123,17 +139,40 @@
123 139
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
124 140
 //#define SINGLENOZZLE
125 141
 
142
+// A dual extruder that uses a single stepper motor
143
+// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z
144
+//#define SWITCHING_EXTRUDER
145
+#if ENABLED(SWITCHING_EXTRUDER)
146
+  #define SWITCHING_EXTRUDER_SERVO_NR 0
147
+  #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1
148
+  //#define HOTEND_OFFSET_Z {0.0, 0.0}
149
+#endif
150
+
151
+/**
152
+ * "Mixing Extruder"
153
+ *   - Adds a new code, M165, to set the current mix factors.
154
+ *   - Extends the stepping routines to move multiple steppers in proportion to the mix.
155
+ *   - Optional support for Repetier Host M163, M164, and virtual extruder.
156
+ *   - This implementation supports only a single extruder.
157
+ *   - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
158
+ */
159
+//#define MIXING_EXTRUDER
160
+#if ENABLED(MIXING_EXTRUDER)
161
+  #define MIXING_STEPPERS 2        // Number of steppers in your mixing extruder
162
+  #define MIXING_VIRTUAL_TOOLS 16  // Use the Virtual Tool method with M163 and M164
163
+  //#define DIRECT_MIXING_IN_G1    // Allow ABCDHI mix factors in G1 movement commands
164
+#endif
165
+
126 166
 // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
127 167
 // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
128 168
 // For the other hotends it is their distance from the extruder 0 hotend.
129
-//#define EXTRUDER_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
130
-//#define EXTRUDER_OFFSET_Y {0.0, 5.00}  // (in mm) for each extruder, offset of the hotend on the Y axis
169
+//#define HOTEND_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
170
+//#define HOTEND_OFFSET_Y {0.0, 5.00}  // (in mm) for each extruder, offset of the hotend on the Y axis
131 171
 
132 172
 //// The following define selects which power supply you have. Please choose the one that matches your setup
133 173
 // 1 = ATX
134 174
 // 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC)
135 175
 // :{1:'ATX',2:'X-Box 360'}
136
-
137 176
 #define POWER_SUPPLY 1
138 177
 
139 178
 // Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it.
@@ -168,6 +207,7 @@
168 207
 // 13 is 100k Hisens 3950  1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE"
169 208
 // 20 is the PT100 circuit found in the Ultimainboard V2.x
170 209
 // 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950
210
+// 66 is 4.7M High Temperature thermistor from Dyze Design
171 211
 // 70 is the 100K thermistor found in the bq Hephestos 2
172 212
 //
173 213
 //    1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k
@@ -184,7 +224,7 @@
184 224
 //     Use it for Testing or Development purposes. NEVER for production machine.
185 225
 //#define DUMMY_THERMISTOR_998_VALUE 25
186 226
 //#define DUMMY_THERMISTOR_999_VALUE 100
187
-// :{ '0': "Not used", '4': "10k !! do not use for a hotend. Bad resolution at high temp. !!", '1': "100k / 4.7k - EPCOS", '51': "100k / 1k - EPCOS", '6': "100k / 4.7k EPCOS - Not as accurate as Table 1", '5': "100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '7': "100k / 4.7k Honeywell 135-104LAG-J01", '71': "100k / 4.7k Honeywell 135-104LAF-J01", '8': "100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT", '9': "100k / 4.7k GE Sensing AL03006-58.2K-97-G1", '10': "100k / 4.7k RS 198-961", '11': "100k / 4.7k beta 3950 1%", '12': "100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)", '13': "100k Hisens 3950  1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'", '60': "100k Maker's Tool Works Kapton Bed Thermistor beta=3950", '55': "100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '2': "200k / 4.7k - ATC Semitec 204GT-2", '52': "200k / 1k - ATC Semitec 204GT-2", '-3': "Thermocouple + MAX31855 (only for sensor 0)", '-2': "Thermocouple + MAX6675 (only for sensor 0)", '-1': "Thermocouple + AD595", '3': "Mendel-parts / 4.7k", '1047': "Pt1000 / 4.7k", '1010': "Pt1000 / 1k (non standard)", '20': "PT100 (Ultimainboard V2.x)", '147': "Pt100 / 4.7k", '110': "Pt100 / 1k (non-standard)", '998': "Dummy 1", '999': "Dummy 2" }
227
+// :{ '0': "Not used",'1':"100k / 4.7k - EPCOS",'2':"200k / 4.7k - ATC Semitec 204GT-2",'3':"Mendel-parts / 4.7k",'4':"10k !! do not use for a hotend. Bad resolution at high temp. !!",'5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'6':"100k / 4.7k EPCOS - Not as accurate as Table 1",'7':"100k / 4.7k Honeywell 135-104LAG-J01",'8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT",'9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1",'10':"100k / 4.7k RS 198-961",'11':"100k / 4.7k beta 3950 1%",'12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)",'13':"100k Hisens 3950  1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'",'20':"PT100 (Ultimainboard V2.x)",'51':"100k / 1k - EPCOS",'52':"200k / 1k - ATC Semitec 204GT-2",'55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950",'66':"Dyze Design 4.7M High Temperature thermistor",'70':"the 100K thermistor found in the bq Hephestos 2",'71':"100k / 4.7k Honeywell 135-104LAF-J01",'147':"Pt100 / 4.7k",'1047':"Pt1000 / 4.7k",'110':"Pt100 / 1k (non-standard)",'1010':"Pt1000 / 1k (non standard)",'-3':"Thermocouple + MAX31855 (only for sensor 0)",'-2':"Thermocouple + MAX6675 (only for sensor 0)",'-1':"Thermocouple + AD595",'998':"Dummy 1",'999':"Dummy 2" }
188 228
 #define TEMP_SENSOR_0 1
189 229
 #define TEMP_SENSOR_1 1
190 230
 #define TEMP_SENSOR_2 0
@@ -223,10 +263,6 @@
223 263
 #define HEATER_3_MAXTEMP 275
224 264
 #define BED_MAXTEMP 150
225 265
 
226
-// If you want the M105 heater power reported in watts, define the BED_WATTS, and (shared for all extruders) EXTRUDER_WATTS
227
-//#define EXTRUDER_WATTS (12.0*12.0/6.7) // P=U^2/R
228
-//#define BED_WATTS (12.0*12.0/1.1)      // P=U^2/R
229
-
230 266
 //===========================================================================
231 267
 //============================= PID Settings ================================
232 268
 //===========================================================================
@@ -241,8 +277,8 @@
241 277
   //#define PID_DEBUG // Sends debug data to the serial port.
242 278
   //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX
243 279
   //#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
244
-  //#define PID_PARAMS_PER_EXTRUDER // Uses separate PID parameters for each extruder (useful for mismatched extruders)
245
-                                    // Set/get with gcode: M301 E[extruder number, 0-2]
280
+  //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders)
281
+                                  // Set/get with gcode: M301 E[extruder number, 0-2]
246 282
   #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature
247 283
                                   // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max.
248 284
   #define PID_INTEGRAL_DRIVE_MAX PID_MAX  //limit for the integral term
@@ -364,18 +400,79 @@
364 400
 #endif
365 401
 
366 402
 // Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup).
367
-const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
368
-const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
369
-const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
370
-const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
371
-const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
372
-const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
373
-const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
403
+#define X_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
404
+#define Y_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
405
+#define Z_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
406
+#define X_MAX_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
407
+#define Y_MAX_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
408
+#define Z_MAX_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
409
+#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
374 410
 
375 411
 //===========================================================================
376 412
 //============================= Z Probe Options =============================
377 413
 //===========================================================================
378 414
 
415
+//
416
+// Probe Type
417
+// Probes are sensors/switches that are activated / deactivated before/after use.
418
+//
419
+// Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc.
420
+// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below.
421
+//
422
+// Use M851 to set the Z probe vertical offset from the nozzle. Store with M500.
423
+//
424
+
425
+// A Fix-Mounted Probe either doesn't deploy or needs manual deployment.
426
+// For example an inductive probe, or a setup that uses the nozzle to probe.
427
+// An inductive probe must be deactivated to go below
428
+// its trigger-point if hardware endstops are active.
429
+//#define FIX_MOUNTED_PROBE
430
+
431
+// The BLTouch probe emulates a servo probe.
432
+//#define BLTOUCH
433
+
434
+// Z Servo Probe, such as an endstop switch on a rotating arm.
435
+//#define Z_ENDSTOP_SERVO_NR 0
436
+//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles
437
+
438
+// Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
439
+//#define Z_PROBE_SLED
440
+//#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.
441
+
442
+// Z Probe to nozzle (X,Y) offset, relative to (0, 0).
443
+// X and Y offsets must be integers.
444
+//
445
+// In the following example the X and Y offsets are both positive:
446
+// #define X_PROBE_OFFSET_FROM_EXTRUDER 10
447
+// #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
448
+//
449
+//    +-- BACK ---+
450
+//    |           |
451
+//  L |    (+) P  | R <-- probe (20,20)
452
+//  E |           | I
453
+//  F | (-) N (+) | G <-- nozzle (10,10)
454
+//  T |           | H
455
+//    |    (-)    | T
456
+//    |           |
457
+//    O-- FRONT --+
458
+//  (0,0)
459
+#define X_PROBE_OFFSET_FROM_EXTRUDER -25     // X offset: -left  +right  [of the nozzle]
460
+#define Y_PROBE_OFFSET_FROM_EXTRUDER -29     // Y offset: -front +behind [the nozzle]
461
+#define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35  // Z offset: -below +above  [the nozzle]
462
+
463
+// X and Y axis travel speed (mm/m) between probes
464
+#define XY_PROBE_SPEED 8000
465
+// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
466
+#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
467
+// Speed for the "accurate" probe of each point
468
+#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
469
+// Use double touch for probing
470
+//#define PROBE_DOUBLE_TOUCH
471
+
472
+//
473
+// Allen Key Probe is defined in the Delta example configurations.
474
+//
475
+
379 476
 // Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z Probe and a Z-min-endstop on the same machine.
380 477
 // With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing.
381 478
 //
@@ -387,7 +484,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
387 484
 // To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN.
388 485
 //
389 486
 // For a servo-based Z probe, you must set up servo support below, including
390
-// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES.
487
+// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and Z_SERVO_ANGLES.
391 488
 //
392 489
 // - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin.
393 490
 // - Use 5V for powered (usu. inductive) sensors.
@@ -420,6 +517,21 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
420 517
 // If you're using the Z MIN endstop connector for your Z probe, this has no effect.
421 518
 //#define DISABLE_Z_MIN_PROBE_ENDSTOP
422 519
 
520
+// Enable Z Probe Repeatability test to see how accurate your probe is
521
+//#define Z_MIN_PROBE_REPEATABILITY_TEST
522
+
523
+//
524
+// Probe Raise options provide clearance for the probe to deploy, stow, and travel.
525
+//
526
+#define Z_PROBE_DEPLOY_HEIGHT 15 // Raise to make room for the probe to deploy / stow
527
+#define Z_PROBE_TRAVEL_HEIGHT 5  // Raise between probing points.
528
+
529
+//
530
+// For M851 give a range for adjusting the Z probe offset
531
+//
532
+#define Z_PROBE_OFFSET_RANGE_MIN -20
533
+#define Z_PROBE_OFFSET_RANGE_MAX 20
534
+
423 535
 // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
424 536
 // :{0:'Low',1:'High'}
425 537
 #define X_ENABLE_ON 0
@@ -456,8 +568,9 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
456 568
 #define INVERT_E3_DIR false
457 569
 
458 570
 // @section homing
459
-//#define MIN_Z_HEIGHT_FOR_HOMING 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
460
-                                    // Be sure you have this distance over your Z_MAX_POS in case.
571
+
572
+//#define Z_HOMING_HEIGHT 4  // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
573
+                             // Be sure you have this distance over your Z_MAX_POS in case.
461 574
 
462 575
 // ENDSTOP SETTINGS:
463 576
 // Sets direction of endstops when homing; 1=MAX, -1=MIN
@@ -487,7 +600,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
487 600
                                  // It is assumed that when logic high = filament available
488 601
                                  //                    when logic  low = filament ran out
489 602
 #if ENABLED(FILAMENT_RUNOUT_SENSOR)
490
-  const bool FIL_RUNOUT_INVERTING = true;  // Should be uncommented and true or false should assigned
603
+  const bool FIL_RUNOUT_INVERTING = false; // set to true to invert the logic of the sensor.
491 604
   #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined.
492 605
   #define FILAMENT_RUNOUT_SCRIPT "M600"
493 606
 #endif
@@ -499,10 +612,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
499 612
 //#define MESH_BED_LEVELING    // Enable mesh bed leveling.
500 613
 
501 614
 #if ENABLED(MESH_BED_LEVELING)
502
-  #define MESH_MIN_X 10
503
-  #define MESH_MAX_X (X_MAX_POS - (MESH_MIN_X))
504
-  #define MESH_MIN_Y 10
505
-  #define MESH_MAX_Y (Y_MAX_POS - (MESH_MIN_Y))
615
+  #define MESH_INSET 10        // Mesh inset margin on print area
506 616
   #define MESH_NUM_X_POINTS 3  // Don't use more than 7 points per axis, implementation limited.
507 617
   #define MESH_NUM_Y_POINTS 3
508 618
   #define MESH_HOME_SEARCH_Z 4  // Z after Home, bed somewhere below but above 0.0.
@@ -524,8 +634,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
524 634
 // @section bedlevel
525 635
 
526 636
 //#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line)
637
+
638
+// Enable this feature to get detailed logging of G28, G29, M48, etc.
639
+// Logging is off by default. Enable this logging feature with 'M111 S32'.
640
+// NOTE: Requires a huge amount of PROGMEM.
527 641
 //#define DEBUG_LEVELING_FEATURE
528
-//#define Z_MIN_PROBE_REPEATABILITY_TEST  // If not commented out, Z Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
529 642
 
530 643
 #if ENABLED(AUTO_BED_LEVELING_FEATURE)
531 644
 
@@ -568,58 +681,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
568 681
     #define ABL_PROBE_PT_3_X 170
569 682
     #define ABL_PROBE_PT_3_Y 20
570 683
 
571
-  #endif // AUTO_BED_LEVELING_GRID
572
-
573
-  // Z Probe to nozzle (X,Y) offset, relative to (0, 0).
574
-  // X and Y offsets must be integers.
575
-  //
576
-  // In the following example the X and Y offsets are both positive:
577
-  // #define X_PROBE_OFFSET_FROM_EXTRUDER 10
578
-  // #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
579
-  //
580
-  //    +-- BACK ---+
581
-  //    |           |
582
-  //  L |    (+) P  | R <-- probe (20,20)
583
-  //  E |           | I
584
-  //  F | (-) N (+) | G <-- nozzle (10,10)
585
-  //  T |           | H
586
-  //    |    (-)    | T
587
-  //    |           |
588
-  //    O-- FRONT --+
589
-  //  (0,0)
590
-  #define X_PROBE_OFFSET_FROM_EXTRUDER -25     // X offset: -left  +right  [of the nozzle]
591
-  #define Y_PROBE_OFFSET_FROM_EXTRUDER -29     // Y offset: -front +behind [the nozzle]
592
-  #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35  // Z offset: -below +above  [the nozzle]
593
-
594
-  #define XY_TRAVEL_SPEED 8000         // X and Y axis travel speed between probes, in mm/min.
595
-
596
-  #define Z_RAISE_BEFORE_PROBING 15   // How much the Z axis will be raised before traveling to the first probing point.
597
-  #define Z_RAISE_BETWEEN_PROBINGS 5  // How much the Z axis will be raised when traveling from between next probing points.
598
-  #define Z_RAISE_AFTER_PROBING 15    // How much the Z axis will be raised after the last probing point.
684
+  #endif // !AUTO_BED_LEVELING_GRID
599 685
 
600 686
   //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine.
601 687
                                                                              // Useful to retract a deployable Z probe.
602 688
 
603
-  // Probes are sensors/switches that need to be activated before they can be used
604
-  // and deactivated after their use.
605
-  // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE
606
-
607
-  // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER
608
-  // when the hardware endstops are active.
609
-  //#define FIX_MOUNTED_PROBE
610
-
611
-  // A Servo Probe can be defined in the servo section below.
612
-
613
-  // An Allen Key Probe is currently predefined only in the delta example configurations.
614
-
615
-  // Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
616
-  //#define Z_PROBE_SLED
617
-  //#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.
618
-
619
-  // A Mechanical Probe is any probe that either doesn't deploy or needs manual deployment
620
-  // For example any setup that uses the nozzle itself as a probe.
621
-  //#define MECHANICAL_PROBE
622
-
623 689
   // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing,
624 690
   // it is highly recommended you also enable Z_SAFE_HOMING below!
625 691
 
@@ -628,18 +694,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
628 694
 
629 695
 // @section homing
630 696
 
631
-// The position of the homing switches
632
-//#define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used
633
-//#define BED_CENTER_AT_0_0  // If defined, the center of the bed is at (X=0, Y=0)
634
-
635
-// Manual homing switch locations:
636
-// For deltabots this means top and center of the Cartesian print volume.
637
-#if ENABLED(MANUAL_HOME_POSITIONS)
638
-  #define MANUAL_X_HOME_POS 0
639
-  #define MANUAL_Y_HOME_POS 0
640
-  #define MANUAL_Z_HOME_POS 0
641
-  //#define MANUAL_Z_HOME_POS 402 // For delta: Distance between nozzle and print surface after homing.
642
-#endif
697
+// The center of the bed is at (X=0, Y=0)
698
+//#define BED_CENTER_AT_0_0
699
+
700
+// Manually set the home position. Leave these undefined for automatic settings.
701
+// For DELTA this is the top-center of the Cartesian print volume.
702
+//#define MANUAL_X_HOME_POS 0
703
+//#define MANUAL_Y_HOME_POS 0
704
+//#define MANUAL_Z_HOME_POS 0 // Distance between the nozzle to printbed after homing
643 705
 
644 706
 // Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
645 707
 //
@@ -647,7 +709,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
647 709
 //
648 710
 // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
649 711
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
650
-// - Position the Z probe in a defined XY point before Z Homing when homing all axes (G28).
712
+// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
651 713
 // - Prevent Z homing when the Z probe is outside bed area.
652 714
 //#define Z_SAFE_HOMING
653 715
 
@@ -656,14 +718,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
656 718
   #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2)    // Y point for Z homing when homing all axis (G28).
657 719
 #endif
658 720
 
721
+// Homing speeds (mm/m)
722
+#define HOMING_FEEDRATE_XY (50*60)
723
+#define HOMING_FEEDRATE_Z  (4*60)
659 724
 
660
-// @section movement
661
-
662
-/**
663
- * MOVEMENT SETTINGS
664
- */
665
-
666
-#define HOMING_FEEDRATE {50*60, 50*60, 4*60, 0}  // set the homing speeds (mm/min)
725
+//
726
+// MOVEMENT SETTINGS
727
+// @section motion
728
+//
667 729
 
668 730
 // default settings
669 731
 
@@ -686,18 +748,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
686 748
 //============================= Additional Features ===========================
687 749
 //=============================================================================
688 750
 
689
-// @section more
690
-
691
-// Custom M code points
692
-#define CUSTOM_M_CODES
693
-#if ENABLED(CUSTOM_M_CODES)
694
-  #if ENABLED(AUTO_BED_LEVELING_FEATURE)
695
-    #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851
696
-    #define Z_PROBE_OFFSET_RANGE_MIN -20
697
-    #define Z_PROBE_OFFSET_RANGE_MAX 20
698
-  #endif
699
-#endif
700
-
701 751
 // @section extras
702 752
 
703 753
 //
@@ -729,22 +779,107 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
729 779
 //
730 780
 //#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose
731 781
 
782
+//
783
+// G20/G21 Inch mode support
784
+//
785
+//#define INCH_MODE_SUPPORT
786
+
787
+//
788
+// M149 Set temperature units support
789
+//
790
+//#define TEMPERATURE_UNITS_SUPPORT
791
+
732 792
 // @section temperature
733 793
 
734 794
 // Preheat Constants
735
-#define PLA_PREHEAT_HOTEND_TEMP 180
736
-#define PLA_PREHEAT_HPB_TEMP 70
737
-#define PLA_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
795
+#define PREHEAT_1_TEMP_HOTEND 180
796
+#define PREHEAT_1_TEMP_BED     70
797
+#define PREHEAT_1_FAN_SPEED   255 // Value from 0 to 255
798
+
799
+#define PREHEAT_2_TEMP_HOTEND 240
800
+#define PREHEAT_2_TEMP_BED    100
801
+#define PREHEAT_2_FAN_SPEED   255 // Value from 0 to 255
738 802
 
739
-#define ABS_PREHEAT_HOTEND_TEMP 240
740
-#define ABS_PREHEAT_HPB_TEMP 100
741
-#define ABS_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
803
+//
804
+// Nozzle Park -- EXPERIMENTAL
805
+//
806
+// When enabled allows the user to define a special XYZ position, inside the
807
+// machine's topology, to park the nozzle when idle or when receiving the G27
808
+// command.
809
+//
810
+// The "P" paramenter controls what is the action applied to the Z axis:
811
+//    P0: (Default) If current Z-pos is lower than Z-park then the nozzle will
812
+//        be raised to reach Z-park height.
813
+//
814
+//    P1: No matter the current Z-pos, the nozzle will be raised/lowered to
815
+//        reach Z-park height.
816
+//
817
+//    P2: The nozzle height will be raised by Z-park amount but never going over
818
+//        the machine's limit of Z_MAX_POS.
819
+//
820
+//#define NOZZLE_PARK_FEATURE
821
+
822
+#if ENABLED(NOZZLE_PARK_FEATURE)
823
+  // Specify a park position as { X, Y, Z }
824
+  #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 }
825
+#endif
826
+
827
+//
828
+// Clean Nozzle Feature -- EXPERIMENTAL
829
+//
830
+// When enabled allows the user to send G12 to start the nozzle cleaning
831
+// process, the G-Code accepts two parameters:
832
+//   "P" for pattern selection
833
+//   "S" for defining the number of strokes/repetitions
834
+//
835
+// Available list of patterns:
836
+//   P0: This is the default pattern, this process requires a sponge type
837
+//       material at a fixed bed location, the cleaning process is based on
838
+//       "strokes" i.e. back-and-forth movements between the starting and end
839
+//       points.
840
+//
841
+//   P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T"
842
+//       defines the number of zig-zag triangles to be done. "S" defines the
843
+//       number of strokes aka one back-and-forth movement. As an example
844
+//       sending "G12 P1 S1 T3" will execute:
845
+//
846
+//          --
847
+//         |  (X0, Y1) |     /\        /\        /\     | (X1, Y1)
848
+//         |           |    /  \      /  \      /  \    |
849
+//       A |           |   /    \    /    \    /    \   |
850
+//         |           |  /      \  /      \  /      \  |
851
+//         |  (X0, Y0) | /        \/        \/        \ | (X1, Y0)
852
+//          --         +--------------------------------+
853
+//                       |________|_________|_________|
854
+//                           T1        T2        T3
855
+//
856
+// Caveats: End point Z should use the same value as Start point Z.
857
+//
858
+// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments
859
+// may change to add new functionality like different wipe patterns.
860
+//
861
+//#define NOZZLE_CLEAN_FEATURE
862
+
863
+#if ENABLED(NOZZLE_CLEAN_FEATURE)
864
+  // Number of pattern repetitions
865
+  #define NOZZLE_CLEAN_STROKES  12
866
+
867
+  // Specify positions as { X, Y, Z }
868
+  #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)}
869
+  #define NOZZLE_CLEAN_END_POINT   {100, 60, (Z_MIN_POS + 1)}
870
+
871
+  // Moves the nozzle to the initial position
872
+  #define NOZZLE_CLEAN_GOBACK
873
+#endif
742 874
 
743 875
 //
744 876
 // Print job timer
745 877
 //
746 878
 // Enable this option to automatically start and stop the
747
-// print job timer when M104 and M109 commands are received.
879
+// print job timer when M104/M109/M190 commands are received.
880
+// M104 (extruder without wait) - high temp = none, low temp = stop timer
881
+// M109 (extruder with wait) - high temp = start timer, low temp = stop timer
882
+// M190 (bed with wait) - high temp = start timer, low temp = none
748 883
 //
749 884
 // In all cases the timer can be started and stopped using
750 885
 // the following commands:
@@ -777,8 +912,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
777 912
 //
778 913
 // Here you may choose the language used by Marlin on the LCD menus, the following
779 914
 // list of languages are available:
780
-//    en, pl, fr, de, es, ru, bg, it, pt, pt_utf8, pt-br, pt-br_utf8,
781
-//    fi, an, nl, ca, eu, kana, kana_utf8, cn, cz, test
915
+//    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
916
+//    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
917
+//
918
+// :{'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','test':'TEST'}
782 919
 //
783 920
 //#define LCD_LANGUAGE en
784 921
 
@@ -926,6 +1063,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
926 1063
 //#define ULTIPANEL
927 1064
 
928 1065
 //
1066
+// Cartesio UI
1067
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1068
+//
1069
+//#define CARTESIO_UI
1070
+
1071
+//
929 1072
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
930 1073
 // http://reprap.org/wiki/PanelOne
931 1074
 //
@@ -938,6 +1081,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
938 1081
 //#define MAKRPANEL
939 1082
 
940 1083
 //
1084
+// ReprapWorld Graphical LCD
1085
+// https://reprapworld.com/?products_details&products_id/1218
1086
+//
1087
+//#define REPRAPWORLD_GRAPHICAL_LCD
1088
+
1089
+//
941 1090
 // Activate one of these if you have a Panucatt Devices
942 1091
 // Viki 2.0 or mini Viki with Graphic LCD
943 1092
 // http://panucatt.com
@@ -987,7 +1136,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
987 1136
 // is pressed, a value of 10.0 means 10mm per click.
988 1137
 //
989 1138
 //#define REPRAPWORLD_KEYPAD
990
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1139
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
991 1140
 
992 1141
 //
993 1142
 // RigidBot Panel V1.0
@@ -1048,6 +1197,15 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1048 1197
 //#define U8GLIB_SSD1306
1049 1198
 
1050 1199
 //
1200
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1201
+//
1202
+//#define SAV_3DGLCD
1203
+#if ENABLED(SAV_3DGLCD)
1204
+  //#define U8GLIB_SSD1306
1205
+  #define U8GLIB_SH1106
1206
+#endif
1207
+
1208
+//
1051 1209
 // CONTROLLER TYPE: Shift register panels
1052 1210
 //
1053 1211
 // 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH
@@ -1075,7 +1233,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1075 1233
 // at zero value, there are 128 effective control positions.
1076 1234
 #define SOFT_PWM_SCALE 0
1077 1235
 
1078
-// Temperature status LEDs that display the hotend and bet temperature.
1236
+// Temperature status LEDs that display the hotend and bed temperature.
1079 1237
 // If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
1080 1238
 // Otherwise the RED led is on. There is 1C hysteresis.
1081 1239
 //#define TEMP_STAT_LEDS
@@ -1107,28 +1265,16 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1107 1265
 //
1108 1266
 //#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
1109 1267
 
1110
-// Servo Endstops
1111
-//
1112
-// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes.
1113
-// Use M851 to set the Z probe vertical offset from the nozzle. Store that setting with M500.
1114
-//
1115
-//#define X_ENDSTOP_SERVO_NR 1
1116
-//#define Y_ENDSTOP_SERVO_NR 2
1117
-//#define Z_ENDSTOP_SERVO_NR 0
1118
-//#define SERVO_ENDSTOP_ANGLES {{0,0}, {0,0}, {70,0}} // X,Y,Z Axis Extend and Retract angles
1268
+// Delay (in microseconds) before the next move will start, to give the servo time to reach its target angle.
1269
+// 300ms is a good value but you can try less delay.
1270
+// If the servo can't reach the requested position, increase it.
1271
+#define SERVO_DELAY 300
1119 1272
 
1120 1273
 // Servo deactivation
1121 1274
 //
1122 1275
 // With this option servos are powered only during movement, then turned off to prevent jitter.
1123 1276
 //#define DEACTIVATE_SERVOS_AFTER_MOVE
1124 1277
 
1125
-#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE)
1126
-  // Delay (in microseconds) before turning the servo off. This depends on the servo speed.
1127
-  // 300ms is a good value but you can try less delay.
1128
-  // If the servo can't reach the requested position, increase it.
1129
-  #define SERVO_DEACTIVATION_DELAY 300
1130
-#endif
1131
-
1132 1278
 /**********************************************************************\
1133 1279
  * Support for a filament diameter sensor
1134 1280
  * Also allows adjustment of diameter at print time (vs  at slicing)
@@ -1159,7 +1305,4 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1159 1305
   //#define FILAMENT_LCD_DISPLAY
1160 1306
 #endif
1161 1307
 
1162
-#include "Configuration_adv.h"
1163
-#include "thermistortables.h"
1164
-
1165
-#endif //CONFIGURATION_H
1308
+#endif // CONFIGURATION_H

+ 290
- 147
Marlin/example_configurations/Hephestos/Configuration.h Parādīt failu

@@ -38,8 +38,18 @@
38 38
 #ifndef CONFIGURATION_H
39 39
 #define CONFIGURATION_H
40 40
 
41
-#include "boards.h"
42
-#include "macros.h"
41
+/**
42
+ *
43
+ *  ***********************************
44
+ *  **  ATTENTION TO ALL DEVELOPERS  **
45
+ *  ***********************************
46
+ *
47
+ * You must increment this version number for every significant change such as,
48
+ * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option.
49
+ *
50
+ * Note: Update also Version.h !
51
+ */
52
+#define CONFIGURATION_H_VERSION 010100
43 53
 
44 54
 //===========================================================================
45 55
 //============================= Getting Started =============================
@@ -73,20 +83,26 @@
73 83
 
74 84
 // @section info
75 85
 
76
-#if ENABLED(USE_AUTOMATIC_VERSIONING)
77
-  #include "_Version.h"
78
-#else
79
-  #include "Version.h"
80
-#endif
81
-
82 86
 // User-specified version info of this build to display in [Pronterface, etc] terminal window during
83 87
 // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
84 88
 // build by the user have been successfully uploaded into firmware.
85 89
 #define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes.
86 90
 #define SHOW_BOOTSCREEN
87
-#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during bootup in line 1
88
-//#define STRING_SPLASH_LINE2 STRING_DISTRIBUTION_DATE // will be shown during bootup in line 2
91
+#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during boot in line 1
92
+#define STRING_SPLASH_LINE2 WEBSITE_URL         // will be shown during boot in line 2
89 93
 
94
+//
95
+// *** VENDORS PLEASE READ *****************************************************
96
+//
97
+// Marlin now allow you to have a vendor boot image to be displayed on machine
98
+// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your
99
+// custom boot image and them the default Marlin boot image is shown.
100
+//
101
+// We suggest for you to take advantage of this new feature and keep the Marlin
102
+// boot image unmodified. For an example have a look at the bq Hephestos 2
103
+// example configuration folder.
104
+//
105
+//#define SHOW_CUSTOM_BOOTSCREEN
90 106
 // @section machine
91 107
 
92 108
 // SERIAL_PORT selects which serial port should be used for communication with the host.
@@ -126,17 +142,40 @@
126 142
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
127 143
 //#define SINGLENOZZLE
128 144
 
145
+// A dual extruder that uses a single stepper motor
146
+// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z
147
+//#define SWITCHING_EXTRUDER
148
+#if ENABLED(SWITCHING_EXTRUDER)
149
+  #define SWITCHING_EXTRUDER_SERVO_NR 0
150
+  #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1
151
+  //#define HOTEND_OFFSET_Z {0.0, 0.0}
152
+#endif
153
+
154
+/**
155
+ * "Mixing Extruder"
156
+ *   - Adds a new code, M165, to set the current mix factors.
157
+ *   - Extends the stepping routines to move multiple steppers in proportion to the mix.
158
+ *   - Optional support for Repetier Host M163, M164, and virtual extruder.
159
+ *   - This implementation supports only a single extruder.
160
+ *   - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
161
+ */
162
+//#define MIXING_EXTRUDER
163
+#if ENABLED(MIXING_EXTRUDER)
164
+  #define MIXING_STEPPERS 2        // Number of steppers in your mixing extruder
165
+  #define MIXING_VIRTUAL_TOOLS 16  // Use the Virtual Tool method with M163 and M164
166
+  //#define DIRECT_MIXING_IN_G1    // Allow ABCDHI mix factors in G1 movement commands
167
+#endif
168
+
129 169
 // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
130 170
 // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
131 171
 // For the other hotends it is their distance from the extruder 0 hotend.
132
-//#define EXTRUDER_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
133
-//#define EXTRUDER_OFFSET_Y {0.0, 5.00}  // (in mm) for each extruder, offset of the hotend on the Y axis
172
+//#define HOTEND_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
173
+//#define HOTEND_OFFSET_Y {0.0, 5.00}  // (in mm) for each extruder, offset of the hotend on the Y axis
134 174
 
135 175
 //// The following define selects which power supply you have. Please choose the one that matches your setup
136 176
 // 1 = ATX
137 177
 // 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC)
138 178
 // :{1:'ATX',2:'X-Box 360'}
139
-
140 179
 #define POWER_SUPPLY 1
141 180
 
142 181
 // Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it.
@@ -171,6 +210,7 @@
171 210
 // 13 is 100k Hisens 3950  1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE"
172 211
 // 20 is the PT100 circuit found in the Ultimainboard V2.x
173 212
 // 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950
213
+// 66 is 4.7M High Temperature thermistor from Dyze Design
174 214
 // 70 is the 100K thermistor found in the bq Hephestos 2
175 215
 //
176 216
 //    1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k
@@ -187,7 +227,7 @@
187 227
 //     Use it for Testing or Development purposes. NEVER for production machine.
188 228
 //#define DUMMY_THERMISTOR_998_VALUE 25
189 229
 //#define DUMMY_THERMISTOR_999_VALUE 100
190
-// :{ '0': "Not used", '4': "10k !! do not use for a hotend. Bad resolution at high temp. !!", '1': "100k / 4.7k - EPCOS", '51': "100k / 1k - EPCOS", '6': "100k / 4.7k EPCOS - Not as accurate as Table 1", '5': "100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '7': "100k / 4.7k Honeywell 135-104LAG-J01", '71': "100k / 4.7k Honeywell 135-104LAF-J01", '8': "100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT", '9': "100k / 4.7k GE Sensing AL03006-58.2K-97-G1", '10': "100k / 4.7k RS 198-961", '11': "100k / 4.7k beta 3950 1%", '12': "100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)", '13': "100k Hisens 3950  1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'", '60': "100k Maker's Tool Works Kapton Bed Thermistor beta=3950", '55': "100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '2': "200k / 4.7k - ATC Semitec 204GT-2", '52': "200k / 1k - ATC Semitec 204GT-2", '-3': "Thermocouple + MAX31855 (only for sensor 0)", '-2': "Thermocouple + MAX6675 (only for sensor 0)", '-1': "Thermocouple + AD595", '3': "Mendel-parts / 4.7k", '1047': "Pt1000 / 4.7k", '1010': "Pt1000 / 1k (non standard)", '20': "PT100 (Ultimainboard V2.x)", '147': "Pt100 / 4.7k", '110': "Pt100 / 1k (non-standard)", '998': "Dummy 1", '999': "Dummy 2" }
230
+// :{ '0': "Not used",'1':"100k / 4.7k - EPCOS",'2':"200k / 4.7k - ATC Semitec 204GT-2",'3':"Mendel-parts / 4.7k",'4':"10k !! do not use for a hotend. Bad resolution at high temp. !!",'5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'6':"100k / 4.7k EPCOS - Not as accurate as Table 1",'7':"100k / 4.7k Honeywell 135-104LAG-J01",'8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT",'9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1",'10':"100k / 4.7k RS 198-961",'11':"100k / 4.7k beta 3950 1%",'12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)",'13':"100k Hisens 3950  1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'",'20':"PT100 (Ultimainboard V2.x)",'51':"100k / 1k - EPCOS",'52':"200k / 1k - ATC Semitec 204GT-2",'55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950",'66':"Dyze Design 4.7M High Temperature thermistor",'70':"the 100K thermistor found in the bq Hephestos 2",'71':"100k / 4.7k Honeywell 135-104LAF-J01",'147':"Pt100 / 4.7k",'1047':"Pt1000 / 4.7k",'110':"Pt100 / 1k (non-standard)",'1010':"Pt1000 / 1k (non standard)",'-3':"Thermocouple + MAX31855 (only for sensor 0)",'-2':"Thermocouple + MAX6675 (only for sensor 0)",'-1':"Thermocouple + AD595",'998':"Dummy 1",'999':"Dummy 2" }
191 231
 #define TEMP_SENSOR_0 1
192 232
 #define TEMP_SENSOR_1 0
193 233
 #define TEMP_SENSOR_2 0
@@ -226,10 +266,6 @@
226 266
 #define HEATER_3_MAXTEMP 260
227 267
 #define BED_MAXTEMP 150
228 268
 
229
-// If you want the M105 heater power reported in watts, define the BED_WATTS, and (shared for all extruders) EXTRUDER_WATTS
230
-//#define EXTRUDER_WATTS (12.0*12.0/6.7) // P=U^2/R
231
-//#define BED_WATTS (12.0*12.0/1.1)      // P=U^2/R
232
-
233 269
 //===========================================================================
234 270
 //============================= PID Settings ================================
235 271
 //===========================================================================
@@ -244,8 +280,8 @@
244 280
   //#define PID_DEBUG // Sends debug data to the serial port.
245 281
   //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX
246 282
   //#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
247
-  //#define PID_PARAMS_PER_EXTRUDER // Uses separate PID parameters for each extruder (useful for mismatched extruders)
248
-                                    // Set/get with gcode: M301 E[extruder number, 0-2]
283
+  //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders)
284
+                                  // Set/get with gcode: M301 E[extruder number, 0-2]
249 285
   #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature
250 286
                                   // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max.
251 287
   #define PID_INTEGRAL_DRIVE_MAX PID_MAX  //limit for the integral term
@@ -376,18 +412,79 @@
376 412
 #endif
377 413
 
378 414
 // Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup).
379
-const bool X_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
380
-const bool Y_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
381
-const bool Z_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
382
-const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
383
-const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
384
-const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
385
-const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
415
+#define X_MIN_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
416
+#define Y_MIN_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
417
+#define Z_MIN_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
418
+#define X_MAX_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
419
+#define Y_MAX_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
420
+#define Z_MAX_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
421
+#define Z_MIN_PROBE_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
386 422
 
387 423
 //===========================================================================
388 424
 //============================= Z Probe Options =============================
389 425
 //===========================================================================
390 426
 
427
+//
428
+// Probe Type
429
+// Probes are sensors/switches that are activated / deactivated before/after use.
430
+//
431
+// Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc.
432
+// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below.
433
+//
434
+// Use M851 to set the Z probe vertical offset from the nozzle. Store with M500.
435
+//
436
+
437
+// A Fix-Mounted Probe either doesn't deploy or needs manual deployment.
438
+// For example an inductive probe, or a setup that uses the nozzle to probe.
439
+// An inductive probe must be deactivated to go below
440
+// its trigger-point if hardware endstops are active.
441
+//#define FIX_MOUNTED_PROBE
442
+
443
+// The BLTouch probe emulates a servo probe.
444
+//#define BLTOUCH
445
+
446
+// Z Servo Probe, such as an endstop switch on a rotating arm.
447
+//#define Z_ENDSTOP_SERVO_NR 0
448
+//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles
449
+
450
+// Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
451
+//#define Z_PROBE_SLED
452
+//#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.
453
+
454
+// Z Probe to nozzle (X,Y) offset, relative to (0, 0).
455
+// X and Y offsets must be integers.
456
+//
457
+// In the following example the X and Y offsets are both positive:
458
+// #define X_PROBE_OFFSET_FROM_EXTRUDER 10
459
+// #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
460
+//
461
+//    +-- BACK ---+
462
+//    |           |
463
+//  L |    (+) P  | R <-- probe (20,20)
464
+//  E |           | I
465
+//  F | (-) N (+) | G <-- nozzle (10,10)
466
+//  T |           | H
467
+//    |    (-)    | T
468
+//    |           |
469
+//    O-- FRONT --+
470
+//  (0,0)
471
+#define X_PROBE_OFFSET_FROM_EXTRUDER -25     // X offset: -left  +right  [of the nozzle]
472
+#define Y_PROBE_OFFSET_FROM_EXTRUDER -29     // Y offset: -front +behind [the nozzle]
473
+#define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35  // Z offset: -below +above  [the nozzle]
474
+
475
+// X and Y axis travel speed (mm/m) between probes
476
+#define XY_PROBE_SPEED 8000
477
+// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
478
+#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
479
+// Speed for the "accurate" probe of each point
480
+#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
481
+// Use double touch for probing
482
+//#define PROBE_DOUBLE_TOUCH
483
+
484
+//
485
+// Allen Key Probe is defined in the Delta example configurations.
486
+//
487
+
391 488
 // Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z Probe and a Z-min-endstop on the same machine.
392 489
 // With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing.
393 490
 //
@@ -399,7 +496,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
399 496
 // To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN.
400 497
 //
401 498
 // For a servo-based Z probe, you must set up servo support below, including
402
-// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES.
499
+// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and Z_SERVO_ANGLES.
403 500
 //
404 501
 // - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin.
405 502
 // - Use 5V for powered (usu. inductive) sensors.
@@ -432,6 +529,21 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
432 529
 // If you're using the Z MIN endstop connector for your Z probe, this has no effect.
433 530
 //#define DISABLE_Z_MIN_PROBE_ENDSTOP
434 531
 
532
+// Enable Z Probe Repeatability test to see how accurate your probe is
533
+//#define Z_MIN_PROBE_REPEATABILITY_TEST
534
+
535
+//
536
+// Probe Raise options provide clearance for the probe to deploy, stow, and travel.
537
+//
538
+#define Z_PROBE_DEPLOY_HEIGHT 15 // Raise to make room for the probe to deploy / stow
539
+#define Z_PROBE_TRAVEL_HEIGHT 5  // Raise between probing points.
540
+
541
+//
542
+// For M851 give a range for adjusting the Z probe offset
543
+//
544
+#define Z_PROBE_OFFSET_RANGE_MIN -20
545
+#define Z_PROBE_OFFSET_RANGE_MAX 20
546
+
435 547
 // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
436 548
 // :{0:'Low',1:'High'}
437 549
 #define X_ENABLE_ON 0
@@ -468,8 +580,9 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
468 580
 #define INVERT_E3_DIR false
469 581
 
470 582
 // @section homing
471
-//#define MIN_Z_HEIGHT_FOR_HOMING 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
472
-                                    // Be sure you have this distance over your Z_MAX_POS in case.
583
+
584
+//#define Z_HOMING_HEIGHT 4  // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
585
+                             // Be sure you have this distance over your Z_MAX_POS in case.
473 586
 
474 587
 // ENDSTOP SETTINGS:
475 588
 // Sets direction of endstops when homing; 1=MAX, -1=MIN
@@ -499,7 +612,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
499 612
                                  // It is assumed that when logic high = filament available
500 613
                                  //                    when logic  low = filament ran out
501 614
 #if ENABLED(FILAMENT_RUNOUT_SENSOR)
502
-  const bool FIL_RUNOUT_INVERTING = true;  // Should be uncommented and true or false should assigned
615
+  const bool FIL_RUNOUT_INVERTING = false; // set to true to invert the logic of the sensor.
503 616
   #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined.
504 617
   #define FILAMENT_RUNOUT_SCRIPT "M600"
505 618
 #endif
@@ -511,10 +624,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
511 624
 //#define MESH_BED_LEVELING    // Enable mesh bed leveling.
512 625
 
513 626
 #if ENABLED(MESH_BED_LEVELING)
514
-  #define MESH_MIN_X 10
515
-  #define MESH_MAX_X (X_MAX_POS - (MESH_MIN_X))
516
-  #define MESH_MIN_Y 10
517
-  #define MESH_MAX_Y (Y_MAX_POS - (MESH_MIN_Y))
627
+  #define MESH_INSET 10        // Mesh inset margin on print area
518 628
   #define MESH_NUM_X_POINTS 3  // Don't use more than 7 points per axis, implementation limited.
519 629
   #define MESH_NUM_Y_POINTS 3
520 630
   #define MESH_HOME_SEARCH_Z 4  // Z after Home, bed somewhere below but above 0.0.
@@ -536,8 +646,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
536 646
 // @section bedlevel
537 647
 
538 648
 //#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line)
649
+
650
+// Enable this feature to get detailed logging of G28, G29, M48, etc.
651
+// Logging is off by default. Enable this logging feature with 'M111 S32'.
652
+// NOTE: Requires a huge amount of PROGMEM.
539 653
 //#define DEBUG_LEVELING_FEATURE
540
-#define Z_MIN_PROBE_REPEATABILITY_TEST  // If not commented out, Z Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
541 654
 
542 655
 #if ENABLED(AUTO_BED_LEVELING_FEATURE)
543 656
 
@@ -580,58 +693,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
580 693
     #define ABL_PROBE_PT_3_X 170
581 694
     #define ABL_PROBE_PT_3_Y 20
582 695
 
583
-  #endif // AUTO_BED_LEVELING_GRID
584
-
585
-  // Z Probe to nozzle (X,Y) offset, relative to (0, 0).
586
-  // X and Y offsets must be integers.
587
-  //
588
-  // In the following example the X and Y offsets are both positive:
589
-  // #define X_PROBE_OFFSET_FROM_EXTRUDER 10
590
-  // #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
591
-  //
592
-  //    +-- BACK ---+
593
-  //    |           |
594
-  //  L |    (+) P  | R <-- probe (20,20)
595
-  //  E |           | I
596
-  //  F | (-) N (+) | G <-- nozzle (10,10)
597
-  //  T |           | H
598
-  //    |    (-)    | T
599
-  //    |           |
600
-  //    O-- FRONT --+
601
-  //  (0,0)
602
-  #define X_PROBE_OFFSET_FROM_EXTRUDER -25     // X offset: -left  +right  [of the nozzle]
603
-  #define Y_PROBE_OFFSET_FROM_EXTRUDER -29     // Y offset: -front +behind [the nozzle]
604
-  #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35  // Z offset: -below +above  [the nozzle]
605
-
606
-  #define XY_TRAVEL_SPEED 8000         // X and Y axis travel speed between probes, in mm/min.
607
-
608
-  #define Z_RAISE_BEFORE_PROBING 15   // How much the Z axis will be raised before traveling to the first probing point.
609
-  #define Z_RAISE_BETWEEN_PROBINGS 5  // How much the Z axis will be raised when traveling from between next probing points.
610
-  #define Z_RAISE_AFTER_PROBING 15    // How much the Z axis will be raised after the last probing point.
696
+  #endif // !AUTO_BED_LEVELING_GRID
611 697
 
612 698
   //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine.
613 699
                                                                              // Useful to retract a deployable Z probe.
614 700
 
615
-  // Probes are sensors/switches that need to be activated before they can be used
616
-  // and deactivated after their use.
617
-  // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE
618
-
619
-  // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER
620
-  // when the hardware endstops are active.
621
-  //#define FIX_MOUNTED_PROBE
622
-
623
-  // A Servo Probe can be defined in the servo section below.
624
-
625
-  // An Allen Key Probe is currently predefined only in the delta example configurations.
626
-
627
-  // Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
628
-  //#define Z_PROBE_SLED
629
-  //#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.
630
-
631
-  // A Mechanical Probe is any probe that either doesn't deploy or needs manual deployment
632
-  // For example any setup that uses the nozzle itself as a probe.
633
-  //#define MECHANICAL_PROBE
634
-
635 701
   // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing,
636 702
   // it is highly recommended you also enable Z_SAFE_HOMING below!
637 703
 
@@ -640,18 +706,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
640 706
 
641 707
 // @section homing
642 708
 
643
-// The position of the homing switches
644
-//#define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used
645
-//#define BED_CENTER_AT_0_0  // If defined, the center of the bed is at (X=0, Y=0)
646
-
647
-// Manual homing switch locations:
648
-// For deltabots this means top and center of the Cartesian print volume.
649
-#if ENABLED(MANUAL_HOME_POSITIONS)
650
-  #define MANUAL_X_HOME_POS 0
651
-  #define MANUAL_Y_HOME_POS 0
652
-  #define MANUAL_Z_HOME_POS 0
653
-  //#define MANUAL_Z_HOME_POS 402 // For delta: Distance between nozzle and print surface after homing.
654
-#endif
709
+// The center of the bed is at (X=0, Y=0)
710
+//#define BED_CENTER_AT_0_0
711
+
712
+// Manually set the home position. Leave these undefined for automatic settings.
713
+// For DELTA this is the top-center of the Cartesian print volume.
714
+//#define MANUAL_X_HOME_POS 0
715
+//#define MANUAL_Y_HOME_POS 0
716
+//#define MANUAL_Z_HOME_POS 0 // Distance between the nozzle to printbed after homing
655 717
 
656 718
 // Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
657 719
 //
@@ -659,7 +721,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
659 721
 //
660 722
 // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
661 723
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
662
-// - Position the Z probe in a defined XY point before Z Homing when homing all axes (G28).
724
+// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
663 725
 // - Prevent Z homing when the Z probe is outside bed area.
664 726
 //#define Z_SAFE_HOMING
665 727
 
@@ -668,14 +730,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
668 730
   #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2)    // Y point for Z homing when homing all axis (G28).
669 731
 #endif
670 732
 
733
+// Homing speeds (mm/m)
734
+#define HOMING_FEEDRATE_XY 2000
735
+#define HOMING_FEEDRATE_Z  150
671 736
 
672
-// @section movement
673
-
674
-/**
675
- * MOVEMENT SETTINGS
676
- */
677
-
678
-#define HOMING_FEEDRATE {2000, 2000, 150, 0}  // set the homing speeds (mm/min)
737
+//
738
+// MOVEMENT SETTINGS
739
+// @section motion
740
+//
679 741
 
680 742
 // default settings
681 743
 
@@ -697,18 +759,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
697 759
 //============================= Additional Features ===========================
698 760
 //=============================================================================
699 761
 
700
-// @section more
701
-
702
-// Custom M code points
703
-#define CUSTOM_M_CODES
704
-#if ENABLED(CUSTOM_M_CODES)
705
-  #if ENABLED(AUTO_BED_LEVELING_FEATURE)
706
-    #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851
707
-    #define Z_PROBE_OFFSET_RANGE_MIN -20
708
-    #define Z_PROBE_OFFSET_RANGE_MAX 20
709
-  #endif
710
-#endif
711
-
712 762
 // @section extras
713 763
 
714 764
 //
@@ -740,22 +790,107 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
740 790
 //
741 791
 //#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose
742 792
 
793
+//
794
+// G20/G21 Inch mode support
795
+//
796
+//#define INCH_MODE_SUPPORT
797
+
798
+//
799
+// M149 Set temperature units support
800
+//
801
+//#define TEMPERATURE_UNITS_SUPPORT
802
+
743 803
 // @section temperature
744 804
 
745 805
 // Preheat Constants
746
-#define PLA_PREHEAT_HOTEND_TEMP 200
747
-#define PLA_PREHEAT_HPB_TEMP 0
748
-#define PLA_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
806
+#define PREHEAT_1_TEMP_HOTEND 200
807
+#define PREHEAT_1_TEMP_BED      0
808
+#define PREHEAT_1_FAN_SPEED   255 // Value from 0 to 255
809
+
810
+#define PREHEAT_2_TEMP_HOTEND 220
811
+#define PREHEAT_2_TEMP_BED    100
812
+#define PREHEAT_2_FAN_SPEED   255 // Value from 0 to 255
749 813
 
750
-#define ABS_PREHEAT_HOTEND_TEMP 220
751
-#define ABS_PREHEAT_HPB_TEMP 100
752
-#define ABS_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
814
+//
815
+// Nozzle Park -- EXPERIMENTAL
816
+//
817
+// When enabled allows the user to define a special XYZ position, inside the
818
+// machine's topology, to park the nozzle when idle or when receiving the G27
819
+// command.
820
+//
821
+// The "P" paramenter controls what is the action applied to the Z axis:
822
+//    P0: (Default) If current Z-pos is lower than Z-park then the nozzle will
823
+//        be raised to reach Z-park height.
824
+//
825
+//    P1: No matter the current Z-pos, the nozzle will be raised/lowered to
826
+//        reach Z-park height.
827
+//
828
+//    P2: The nozzle height will be raised by Z-park amount but never going over
829
+//        the machine's limit of Z_MAX_POS.
830
+//
831
+//#define NOZZLE_PARK_FEATURE
832
+
833
+#if ENABLED(NOZZLE_PARK_FEATURE)
834
+  // Specify a park position as { X, Y, Z }
835
+  #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 }
836
+#endif
837
+
838
+//
839
+// Clean Nozzle Feature -- EXPERIMENTAL
840
+//
841
+// When enabled allows the user to send G12 to start the nozzle cleaning
842
+// process, the G-Code accepts two parameters:
843
+//   "P" for pattern selection
844
+//   "S" for defining the number of strokes/repetitions
845
+//
846
+// Available list of patterns:
847
+//   P0: This is the default pattern, this process requires a sponge type
848
+//       material at a fixed bed location, the cleaning process is based on
849
+//       "strokes" i.e. back-and-forth movements between the starting and end
850
+//       points.
851
+//
852
+//   P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T"
853
+//       defines the number of zig-zag triangles to be done. "S" defines the
854
+//       number of strokes aka one back-and-forth movement. As an example
855
+//       sending "G12 P1 S1 T3" will execute:
856
+//
857
+//          --
858
+//         |  (X0, Y1) |     /\        /\        /\     | (X1, Y1)
859
+//         |           |    /  \      /  \      /  \    |
860
+//       A |           |   /    \    /    \    /    \   |
861
+//         |           |  /      \  /      \  /      \  |
862
+//         |  (X0, Y0) | /        \/        \/        \ | (X1, Y0)
863
+//          --         +--------------------------------+
864
+//                       |________|_________|_________|
865
+//                           T1        T2        T3
866
+//
867
+// Caveats: End point Z should use the same value as Start point Z.
868
+//
869
+// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments
870
+// may change to add new functionality like different wipe patterns.
871
+//
872
+//#define NOZZLE_CLEAN_FEATURE
873
+
874
+#if ENABLED(NOZZLE_CLEAN_FEATURE)
875
+  // Number of pattern repetitions
876
+  #define NOZZLE_CLEAN_STROKES  12
877
+
878
+  // Specify positions as { X, Y, Z }
879
+  #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)}
880
+  #define NOZZLE_CLEAN_END_POINT   {100, 60, (Z_MIN_POS + 1)}
881
+
882
+  // Moves the nozzle to the initial position
883
+  #define NOZZLE_CLEAN_GOBACK
884
+#endif
753 885
 
754 886
 //
755 887
 // Print job timer
756 888
 //
757 889
 // Enable this option to automatically start and stop the
758
-// print job timer when M104 and M109 commands are received.
890
+// print job timer when M104/M109/M190 commands are received.
891
+// M104 (extruder without wait) - high temp = none, low temp = stop timer
892
+// M109 (extruder with wait) - high temp = start timer, low temp = stop timer
893
+// M190 (bed with wait) - high temp = start timer, low temp = none
759 894
 //
760 895
 // In all cases the timer can be started and stopped using
761 896
 // the following commands:
@@ -788,8 +923,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
788 923
 //
789 924
 // Here you may choose the language used by Marlin on the LCD menus, the following
790 925
 // list of languages are available:
791
-//    en, pl, fr, de, es, ru, bg, it, pt, pt_utf8, pt-br, pt-br_utf8,
792
-//    fi, an, nl, ca, eu, kana, kana_utf8, cn, cz, test
926
+//    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
927
+//    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
928
+//
929
+// :{'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','test':'TEST'}
793 930
 //
794 931
 //#define LCD_LANGUAGE en
795 932
 
@@ -937,6 +1074,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
937 1074
 //#define ULTIPANEL
938 1075
 
939 1076
 //
1077
+// Cartesio UI
1078
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1079
+//
1080
+//#define CARTESIO_UI
1081
+
1082
+//
940 1083
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
941 1084
 // http://reprap.org/wiki/PanelOne
942 1085
 //
@@ -949,6 +1092,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
949 1092
 //#define MAKRPANEL
950 1093
 
951 1094
 //
1095
+// ReprapWorld Graphical LCD
1096
+// https://reprapworld.com/?products_details&products_id/1218
1097
+//
1098
+//#define REPRAPWORLD_GRAPHICAL_LCD
1099
+
1100
+//
952 1101
 // Activate one of these if you have a Panucatt Devices
953 1102
 // Viki 2.0 or mini Viki with Graphic LCD
954 1103
 // http://panucatt.com
@@ -998,7 +1147,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
998 1147
 // is pressed, a value of 10.0 means 10mm per click.
999 1148
 //
1000 1149
 //#define REPRAPWORLD_KEYPAD
1001
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1150
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1002 1151
 
1003 1152
 //
1004 1153
 // RigidBot Panel V1.0
@@ -1059,6 +1208,15 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1059 1208
 //#define U8GLIB_SSD1306
1060 1209
 
1061 1210
 //
1211
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1212
+//
1213
+//#define SAV_3DGLCD
1214
+#if ENABLED(SAV_3DGLCD)
1215
+  //#define U8GLIB_SSD1306
1216
+  #define U8GLIB_SH1106
1217
+#endif
1218
+
1219
+//
1062 1220
 // CONTROLLER TYPE: Shift register panels
1063 1221
 //
1064 1222
 // 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH
@@ -1086,7 +1244,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1086 1244
 // at zero value, there are 128 effective control positions.
1087 1245
 #define SOFT_PWM_SCALE 0
1088 1246
 
1089
-// Temperature status LEDs that display the hotend and bet temperature.
1247
+// Temperature status LEDs that display the hotend and bed temperature.
1090 1248
 // If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
1091 1249
 // Otherwise the RED led is on. There is 1C hysteresis.
1092 1250
 //#define TEMP_STAT_LEDS
@@ -1118,28 +1276,16 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1118 1276
 //
1119 1277
 //#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
1120 1278
 
1121
-// Servo Endstops
1122
-//
1123
-// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes.
1124
-// Use M851 to set the Z probe vertical offset from the nozzle. Store that setting with M500.
1125
-//
1126
-//#define X_ENDSTOP_SERVO_NR 1
1127
-//#define Y_ENDSTOP_SERVO_NR 2
1128
-//#define Z_ENDSTOP_SERVO_NR 0
1129
-//#define SERVO_ENDSTOP_ANGLES {{0,0}, {0,0}, {70,0}} // X,Y,Z Axis Extend and Retract angles
1279
+// Delay (in microseconds) before the next move will start, to give the servo time to reach its target angle.
1280
+// 300ms is a good value but you can try less delay.
1281
+// If the servo can't reach the requested position, increase it.
1282
+#define SERVO_DELAY 300
1130 1283
 
1131 1284
 // Servo deactivation
1132 1285
 //
1133 1286
 // With this option servos are powered only during movement, then turned off to prevent jitter.
1134 1287
 //#define DEACTIVATE_SERVOS_AFTER_MOVE
1135 1288
 
1136
-#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE)
1137
-  // Delay (in microseconds) before turning the servo off. This depends on the servo speed.
1138
-  // 300ms is a good value but you can try less delay.
1139
-  // If the servo can't reach the requested position, increase it.
1140
-  #define SERVO_DEACTIVATION_DELAY 300
1141
-#endif
1142
-
1143 1289
 /**********************************************************************\
1144 1290
  * Support for a filament diameter sensor
1145 1291
  * Also allows adjustment of diameter at print time (vs  at slicing)
@@ -1170,7 +1316,4 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1170 1316
   //#define FILAMENT_LCD_DISPLAY
1171 1317
 #endif
1172 1318
 
1173
-#include "Configuration_adv.h"
1174
-#include "thermistortables.h"
1175
-
1176
-#endif //CONFIGURATION_H
1319
+#endif // CONFIGURATION_H

+ 148
- 47
Marlin/example_configurations/Hephestos/Configuration_adv.h Parādīt failu

@@ -33,7 +33,18 @@
33 33
 #ifndef CONFIGURATION_ADV_H
34 34
 #define CONFIGURATION_ADV_H
35 35
 
36
-#include "Conditionals.h"
36
+/**
37
+ *
38
+ *  ***********************************
39
+ *  **  ATTENTION TO ALL DEVELOPERS  **
40
+ *  ***********************************
41
+ *
42
+ * You must increment this version number for every significant change such as,
43
+ * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option.
44
+ *
45
+ * Note: Update also Version.h !
46
+ */
47
+#define CONFIGURATION_ADV_H_VERSION 010100
37 48
 
38 49
 // @section temperature
39 50
 
@@ -102,8 +113,8 @@
102 113
 #if ENABLED(PIDTEMP)
103 114
   // this adds an experimental additional term to the heating power, proportional to the extrusion speed.
104 115
   // if Kc is chosen well, the additional required power due to increased melting should be compensated.
105
-  #define PID_ADD_EXTRUSION_RATE
106
-  #if ENABLED(PID_ADD_EXTRUSION_RATE)
116
+  //#define PID_EXTRUSION_SCALING
117
+  #if ENABLED(PID_EXTRUSION_SCALING)
107 118
     #define DEFAULT_Kc (100) //heating power=Kc*(e_speed)
108 119
     #define LPQ_MAX_LEN 50
109 120
   #endif
@@ -128,15 +139,42 @@
128 139
 //The M105 command return, besides traditional information, the ADC value read from temperature sensors.
129 140
 //#define SHOW_TEMP_ADC_VALUES
130 141
 
142
+/**
143
+ * High Temperature Thermistor Support
144
+ *
145
+ * Thermistors able to support high temperature tend to have a hard time getting
146
+ * good readings at room and lower temperatures. This means HEATER_X_RAW_LO_TEMP
147
+ * will probably be caught when the heating element first turns on during the
148
+ * preheating process, which will trigger a min_temp_error as a safety measure
149
+ * and force stop everything.
150
+ * To circumvent this limitation, we allow for a preheat time (during which,
151
+ * min_temp_error won't be triggered) and add a min_temp buffer to handle
152
+ * aberrant readings.
153
+ *
154
+ * If you want to enable this feature for your hotend thermistor(s)
155
+ * uncomment and set values > 0 in the constants below
156
+ */
157
+
158
+// The number of consecutive low temperature errors that can occur
159
+// before a min_temp_error is triggered. (Shouldn't be more than 10.)
160
+//#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 0
161
+
162
+// The number of milliseconds a hotend will preheat before starting to check
163
+// the temperature. This value should NOT be set to the time it takes the
164
+// hot end to reach the target temperature, but the time it takes to reach
165
+// the minimum temperature your thermistor can read. The lower the better/safer.
166
+// This shouldn't need to be more than 30 seconds (30000)
167
+//#define MILLISECONDS_PREHEAT_TIME 0
168
+
131 169
 // @section extruder
132 170
 
133 171
 //  extruder run-out prevention.
134 172
 //if the machine is idle, and the temperature over MINTEMP, every couple of SECONDS some filament is extruded
135 173
 //#define EXTRUDER_RUNOUT_PREVENT
136 174
 #define EXTRUDER_RUNOUT_MINTEMP 190
137
-#define EXTRUDER_RUNOUT_SECONDS 30.
138
-#define EXTRUDER_RUNOUT_ESTEPS 14. //mm filament
139
-#define EXTRUDER_RUNOUT_SPEED 1500.  //extrusion speed
175
+#define EXTRUDER_RUNOUT_SECONDS 30
176
+#define EXTRUDER_RUNOUT_ESTEPS 14   // mm filament
177
+#define EXTRUDER_RUNOUT_SPEED 1500  // extrusion speed
140 178
 #define EXTRUDER_RUNOUT_EXTRUDE 100
141 179
 
142 180
 // @section temperature
@@ -177,24 +215,42 @@
177 215
 #define EXTRUDER_AUTO_FAN_TEMPERATURE 50
178 216
 #define EXTRUDER_AUTO_FAN_SPEED   255  // == full speed
179 217
 
180
-
181 218
 //===========================================================================
182
-//=============================Mechanical Settings===========================
219
+//============================ Mechanical Settings ==========================
183 220
 //===========================================================================
184 221
 
185 222
 // @section homing
186 223
 
187
-//#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing
224
+// If you want endstops to stay on (by default) even when not homing
225
+// enable this option. Override at any time with M120, M121.
226
+#define ENDSTOPS_ALWAYS_ON_DEFAULT
188 227
 
189 228
 // @section extras
190 229
 
191 230
 //#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
192 231
 
232
+// Dual X Steppers
233
+// Uncomment this option to drive two X axis motors.
234
+// The next unused E driver will be assigned to the second X stepper.
235
+//#define X_DUAL_STEPPER_DRIVERS
236
+#if ENABLED(X_DUAL_STEPPER_DRIVERS)
237
+  // Set true if the two X motors need to rotate in opposite directions
238
+  #define INVERT_X2_VS_X_DIR true
239
+#endif
240
+
241
+
242
+// Dual Y Steppers
243
+// Uncomment this option to drive two Y axis motors.
244
+// The next unused E driver will be assigned to the second Y stepper.
245
+//#define Y_DUAL_STEPPER_DRIVERS
246
+#if ENABLED(Y_DUAL_STEPPER_DRIVERS)
247
+  // Set true if the two Y motors need to rotate in opposite directions
248
+  #define INVERT_Y2_VS_Y_DIR true
249
+#endif
250
+
193 251
 // A single Z stepper driver is usually used to drive 2 stepper motors.
194
-// Uncomment this define to utilize a separate stepper driver for each Z axis motor.
195
-// Only a few motherboards support this, like RAMPS, which have dual extruder support (the 2nd, often unused, extruder driver is used
196
-// to control the 2nd Z axis stepper motor). The pins are currently only defined for a RAMPS motherboards.
197
-// On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder.
252
+// Uncomment this option to use a separate stepper driver for each Z axis motor.
253
+// The next unused E driver will be assigned to the second Z stepper.
198 254
 //#define Z_DUAL_STEPPER_DRIVERS
199 255
 
200 256
 #if ENABLED(Z_DUAL_STEPPER_DRIVERS)
@@ -216,14 +272,6 @@
216 272
 
217 273
 #endif // Z_DUAL_STEPPER_DRIVERS
218 274
 
219
-// Same again but for Y Axis.
220
-//#define Y_DUAL_STEPPER_DRIVERS
221
-
222
-#if ENABLED(Y_DUAL_STEPPER_DRIVERS)
223
-  // Define if the two Y drives need to rotate in opposite directions
224
-  #define INVERT_Y2_VS_Y_DIR true
225
-#endif
226
-
227 275
 // Enable this for dual x-carriage printers.
228 276
 // A dual x-carriage design has the advantage that the inactive extruder can be parked which
229 277
 // prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
@@ -237,7 +285,7 @@
237 285
   #define X2_MAX_POS 353    // set maximum to the distance between toolheads when both heads are homed
238 286
   #define X2_HOME_DIR 1     // the second X-carriage always homes to the maximum endstop position
239 287
   #define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position
240
-      // However: In this mode the EXTRUDER_OFFSET_X value for the second extruder provides a software
288
+      // However: In this mode the HOTEND_OFFSET_X value for the second extruder provides a software
241 289
       // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops
242 290
       // without modifying the firmware (through the "M218 T1 X???" command).
243 291
       // Remember: you should set the second extruder x-offset to 0 in your slicer.
@@ -279,7 +327,10 @@
279 327
 
280 328
 #define AXIS_RELATIVE_MODES {false, false, false, false}
281 329
 
282
-//By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
330
+// Allow duplication mode with a basic dual-nozzle extruder
331
+//#define DUAL_NOZZLE_DUPLICATION_MODE
332
+
333
+// By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
283 334
 #define INVERT_X_STEP_PIN false
284 335
 #define INVERT_Y_STEP_PIN false
285 336
 #define INVERT_Z_STEP_PIN false
@@ -351,6 +402,9 @@
351 402
 
352 403
 // @section lcd
353 404
 
405
+// Include a page of printer information in the LCD Main Menu
406
+//#define LCD_INFO_MENU
407
+
354 408
 #if ENABLED(SDSUPPORT)
355 409
 
356 410
   // Some RAMPS and other boards don't detect when an SD card is inserted. You can work
@@ -388,7 +442,6 @@
388 442
   // This option allows you to abort SD printing when any endstop is triggered.
389 443
   // This feature must be enabled with "M540 S1" or from the LCD menu.
390 444
   // To have any effect, endstops must be enabled during SD printing.
391
-  // With ENDSTOPS_ONLY_FOR_HOMING you must send "M120" to enable endstops.
392 445
   //#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED
393 446
 
394 447
 #endif // SDSUPPORT
@@ -404,9 +457,10 @@
404 457
   //#define USE_SMALL_INFOFONT
405 458
 #endif // DOGLCD
406 459
 
407
-// @section more
460
+// @section safety
408 461
 
409
-// The hardware watchdog should reset the microcontroller disabling all outputs, in case the firmware gets stuck and doesn't do temperature regulation.
462
+// The hardware watchdog should reset the microcontroller disabling all outputs,
463
+// in case the firmware gets stuck and doesn't do temperature regulation.
410 464
 #define USE_WATCHDOG
411 465
 
412 466
 #if ENABLED(USE_WATCHDOG)
@@ -445,6 +499,27 @@
445 499
   #define D_FILAMENT 1.75
446 500
 #endif
447 501
 
502
+// Implementation of a linear pressure control
503
+// Assumption: advance = k * (delta velocity)
504
+// K=0 means advance disabled. A good value for a gregs wade extruder will be around K=75
505
+//#define LIN_ADVANCE
506
+
507
+#if ENABLED(LIN_ADVANCE)
508
+  #define LIN_ADVANCE_K 75
509
+#endif
510
+
511
+// @section leveling
512
+
513
+// Default mesh area is an area with an inset margin on the print area.
514
+// Below are the macros that are used to define the borders for the mesh area,
515
+// made available here for specialized needs, ie dual extruder setup.
516
+#if ENABLED(MESH_BED_LEVELING)
517
+  #define MESH_MIN_X (X_MIN_POS + MESH_INSET)
518
+  #define MESH_MAX_X (X_MAX_POS - (MESH_INSET))
519
+  #define MESH_MIN_Y (Y_MIN_POS + MESH_INSET)
520
+  #define MESH_MAX_Y (Y_MAX_POS - (MESH_INSET))
521
+#endif
522
+
448 523
 // @section extras
449 524
 
450 525
 // Arc interpretation settings:
@@ -476,12 +551,27 @@ const unsigned int dropsegments = 5; //everything with less than this number of
476 551
   #define BLOCK_BUFFER_SIZE 16 // maximize block buffer
477 552
 #endif
478 553
 
479
-// @section more
554
+// @section serial
480 555
 
481
-//The ASCII buffer for receiving from the serial:
556
+// The ASCII buffer for serial input
482 557
 #define MAX_CMD_SIZE 96
483 558
 #define BUFSIZE 4
484 559
 
560
+// Transfer Buffer Size
561
+// To save 386 bytes of PROGMEM (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0.
562
+// To buffer a simple "ok" you need 4 bytes.
563
+// For ADVANCED_OK (M105) you need 32 bytes.
564
+// For debug-echo: 128 bytes for the optimal speed.
565
+// Other output doesn't need to be that speedy.
566
+// :[0,2,4,8,16,32,64,128,256]
567
+#define TX_BUFFER_SIZE 0
568
+
569
+// Enable an emergency-command parser to intercept certain commands as they
570
+// enter the serial receive buffer, so they cannot be blocked.
571
+// Currently handles M108, M112, M410
572
+// Does not work on boards using AT90USB (USBCON) processors!
573
+//#define EMERGENCY_PARSER
574
+
485 575
 // Bad Serial-connections can miss a received command by sending an 'ok'
486 576
 // Therefore some clients abort after 30 seconds in a timeout.
487 577
 // Some other clients start sending commands while receiving a 'wait'.
@@ -513,16 +603,30 @@ const unsigned int dropsegments = 5; //everything with less than this number of
513 603
 
514 604
 // Add support for experimental filament exchange support M600; requires display
515 605
 #if ENABLED(ULTIPANEL)
516
-  //#define FILAMENTCHANGEENABLE
517
-  #if ENABLED(FILAMENTCHANGEENABLE)
518
-    #define FILAMENTCHANGE_XPOS 3
519
-    #define FILAMENTCHANGE_YPOS 3
520
-    #define FILAMENTCHANGE_ZADD 10
521
-    #define FILAMENTCHANGE_FIRSTRETRACT -2
522
-    #define FILAMENTCHANGE_FINALRETRACT -100
523
-    #define AUTO_FILAMENT_CHANGE                //This extrude filament until you press the button on LCD
524
-    #define AUTO_FILAMENT_CHANGE_LENGTH 0.04    //Extrusion length on automatic extrusion loop
525
-    #define AUTO_FILAMENT_CHANGE_FEEDRATE 300   //Extrusion feedrate (mm/min) on automatic extrusion loop
606
+  // #define FILAMENT_CHANGE_FEATURE             // Enable filament exchange menu and M600 g-code (used for runout sensor too)
607
+  #if ENABLED(FILAMENT_CHANGE_FEATURE)
608
+    #define FILAMENT_CHANGE_X_POS 3             // X position of hotend
609
+    #define FILAMENT_CHANGE_Y_POS 3             // Y position of hotend
610
+    #define FILAMENT_CHANGE_Z_ADD 10            // Z addition of hotend (lift)
611
+    #define FILAMENT_CHANGE_XY_FEEDRATE 100     // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
612
+    #define FILAMENT_CHANGE_Z_FEEDRATE 5        // Z axis feedrate in mm/s (not used for delta printers)
613
+    #define FILAMENT_CHANGE_RETRACT_LENGTH 2    // Initial retract in mm
614
+                                                // It is a short retract used immediately after print interrupt before move to filament exchange position
615
+    #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
616
+    #define FILAMENT_CHANGE_UNLOAD_LENGTH 100   // Unload filament length from hotend in mm
617
+                                                // Longer length for bowden printers to unload filament from whole bowden tube,
618
+                                                // shorter lenght for printers without bowden to unload filament from extruder only,
619
+                                                // 0 to disable unloading for manual unloading
620
+    #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10  // Unload filament feedrate in mm/s - filament unloading can be fast
621
+    #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
622
+                                                // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
623
+                                                // Short or zero length for printers without bowden where loading is not used
624
+    #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
625
+    #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
626
+                                                // 0 to disable for manual extrusion
627
+                                                // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
628
+                                                // or until outcoming filament color is not clear for filament color change
629
+    #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
526 630
   #endif
527 631
 #endif
528 632
 
@@ -668,9 +772,9 @@ const unsigned int dropsegments = 5; //everything with less than this number of
668 772
  * devices on the bus.
669 773
  *
670 774
  * ; Example #1
671
- * ; This macro send the string "Marlin" to the slave device with address 0x63
775
+ * ; This macro send the string "Marlin" to the slave device with address 0x63 (99)
672 776
  * ; It uses multiple M155 commands with one B<base 10> arg
673
- * M155 A63  ; Target slave address
777
+ * M155 A99  ; Target slave address
674 778
  * M155 B77  ; M
675 779
  * M155 B97  ; a
676 780
  * M155 B114 ; r
@@ -680,19 +784,16 @@ const unsigned int dropsegments = 5; //everything with less than this number of
680 784
  * M155 S1   ; Send the current buffer
681 785
  *
682 786
  * ; Example #2
683
- * ; Request 6 bytes from slave device with address 0x63
684
- * M156 A63 B5
787
+ * ; Request 6 bytes from slave device with address 0x63 (99)
788
+ * M156 A99 B5
685 789
  *
686 790
  * ; Example #3
687 791
  * ; Example serial output of a M156 request
688
- * echo:i2c-reply: from:63 bytes:5 data:hello
792
+ * echo:i2c-reply: from:99 bytes:5 data:hello
689 793
  */
690 794
 
691 795
 // @section i2cbus
692 796
 
693 797
 //#define EXPERIMENTAL_I2CBUS
694 798
 
695
-#include "Conditionals.h"
696
-#include "SanityCheck.h"
697
-
698
-#endif //CONFIGURATION_ADV_H
799
+#endif // CONFIGURATION_ADV_H

+ 311
- 168
Marlin/example_configurations/Hephestos_2/Configuration.h Parādīt failu

@@ -38,8 +38,18 @@
38 38
 #ifndef CONFIGURATION_H
39 39
 #define CONFIGURATION_H
40 40
 
41
-#include "boards.h"
42
-#include "macros.h"
41
+/**
42
+ *
43
+ *  ***********************************
44
+ *  **  ATTENTION TO ALL DEVELOPERS  **
45
+ *  ***********************************
46
+ *
47
+ * You must increment this version number for every significant change such as,
48
+ * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option.
49
+ *
50
+ * Note: Update also Version.h !
51
+ */
52
+#define CONFIGURATION_H_VERSION 010100
43 53
 
44 54
 //===========================================================================
45 55
 //============================= Getting Started =============================
@@ -73,20 +83,26 @@
73 83
 
74 84
 // @section info
75 85
 
76
-#if ENABLED(USE_AUTOMATIC_VERSIONING)
77
-  #include "_Version.h"
78
-#else
79
-  #include "Version.h"
80
-#endif
81
-
82 86
 // User-specified version info of this build to display in [Pronterface, etc] terminal window during
83 87
 // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
84 88
 // build by the user have been successfully uploaded into firmware.
85 89
 #define STRING_CONFIG_H_AUTHOR "@jbrazio" // Who made the changes.
86 90
 #define SHOW_BOOTSCREEN
87
-#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during bootup in line 1
88
-//#define STRING_SPLASH_LINE2 STRING_DISTRIBUTION_DATE // will be shown during bootup in line 2
91
+#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during boot in line 1
92
+#define STRING_SPLASH_LINE2 WEBSITE_URL         // will be shown during boot in line 2
89 93
 
94
+//
95
+// *** VENDORS PLEASE READ *****************************************************
96
+//
97
+// Marlin now allow you to have a vendor boot image to be displayed on machine
98
+// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your
99
+// custom boot image and them the default Marlin boot image is shown.
100
+//
101
+// We suggest for you to take advantage of this new feature and keep the Marlin
102
+// boot image unmodified. For an example have a look at the bq Hephestos 2
103
+// example configuration folder.
104
+//
105
+#define SHOW_CUSTOM_BOOTSCREEN
90 106
 // @section machine
91 107
 
92 108
 // SERIAL_PORT selects which serial port should be used for communication with the host.
@@ -123,17 +139,40 @@
123 139
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
124 140
 //#define SINGLENOZZLE
125 141
 
142
+// A dual extruder that uses a single stepper motor
143
+// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z
144
+//#define SWITCHING_EXTRUDER
145
+#if ENABLED(SWITCHING_EXTRUDER)
146
+  #define SWITCHING_EXTRUDER_SERVO_NR 0
147
+  #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1
148
+  //#define HOTEND_OFFSET_Z {0.0, 0.0}
149
+#endif
150
+
151
+/**
152
+ * "Mixing Extruder"
153
+ *   - Adds a new code, M165, to set the current mix factors.
154
+ *   - Extends the stepping routines to move multiple steppers in proportion to the mix.
155
+ *   - Optional support for Repetier Host M163, M164, and virtual extruder.
156
+ *   - This implementation supports only a single extruder.
157
+ *   - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
158
+ */
159
+//#define MIXING_EXTRUDER
160
+#if ENABLED(MIXING_EXTRUDER)
161
+  #define MIXING_STEPPERS 2        // Number of steppers in your mixing extruder
162
+  #define MIXING_VIRTUAL_TOOLS 16  // Use the Virtual Tool method with M163 and M164
163
+  //#define DIRECT_MIXING_IN_G1    // Allow ABCDHI mix factors in G1 movement commands
164
+#endif
165
+
126 166
 // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
127 167
 // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
128 168
 // For the other hotends it is their distance from the extruder 0 hotend.
129
-//#define EXTRUDER_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
130
-//#define EXTRUDER_OFFSET_Y {0.0, 5.00}  // (in mm) for each extruder, offset of the hotend on the Y axis
169
+//#define HOTEND_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
170
+//#define HOTEND_OFFSET_Y {0.0, 5.00}  // (in mm) for each extruder, offset of the hotend on the Y axis
131 171
 
132 172
 //// The following define selects which power supply you have. Please choose the one that matches your setup
133 173
 // 1 = ATX
134 174
 // 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC)
135 175
 // :{1:'ATX',2:'X-Box 360'}
136
-
137 176
 #define POWER_SUPPLY 1
138 177
 
139 178
 // Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it.
@@ -168,6 +207,7 @@
168 207
 // 13 is 100k Hisens 3950  1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE"
169 208
 // 20 is the PT100 circuit found in the Ultimainboard V2.x
170 209
 // 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950
210
+// 66 is 4.7M High Temperature thermistor from Dyze Design
171 211
 // 70 is the 100K thermistor found in the bq Hephestos 2
172 212
 //
173 213
 //    1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k
@@ -184,7 +224,7 @@
184 224
 //     Use it for Testing or Development purposes. NEVER for production machine.
185 225
 //#define DUMMY_THERMISTOR_998_VALUE 25
186 226
 //#define DUMMY_THERMISTOR_999_VALUE 100
187
-// :{ '0': "Not used", '4': "10k !! do not use for a hotend. Bad resolution at high temp. !!", '1': "100k / 4.7k - EPCOS", '51': "100k / 1k - EPCOS", '6': "100k / 4.7k EPCOS - Not as accurate as Table 1", '5': "100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '7': "100k / 4.7k Honeywell 135-104LAG-J01", '71': "100k / 4.7k Honeywell 135-104LAF-J01", '8': "100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT", '9': "100k / 4.7k GE Sensing AL03006-58.2K-97-G1", '10': "100k / 4.7k RS 198-961", '11': "100k / 4.7k beta 3950 1%", '12': "100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)", '13': "100k Hisens 3950  1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'", '60': "100k Maker's Tool Works Kapton Bed Thermistor beta=3950", '55': "100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '2': "200k / 4.7k - ATC Semitec 204GT-2", '52': "200k / 1k - ATC Semitec 204GT-2", '-3': "Thermocouple + MAX31855 (only for sensor 0)", '-2': "Thermocouple + MAX6675 (only for sensor 0)", '-1': "Thermocouple + AD595", '3': "Mendel-parts / 4.7k", '1047': "Pt1000 / 4.7k", '1010': "Pt1000 / 1k (non standard)", '20': "PT100 (Ultimainboard V2.x)", '147': "Pt100 / 4.7k", '110': "Pt100 / 1k (non-standard)", '998': "Dummy 1", '999': "Dummy 2" }
227
+// :{ '0': "Not used",'1':"100k / 4.7k - EPCOS",'2':"200k / 4.7k - ATC Semitec 204GT-2",'3':"Mendel-parts / 4.7k",'4':"10k !! do not use for a hotend. Bad resolution at high temp. !!",'5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'6':"100k / 4.7k EPCOS - Not as accurate as Table 1",'7':"100k / 4.7k Honeywell 135-104LAG-J01",'8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT",'9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1",'10':"100k / 4.7k RS 198-961",'11':"100k / 4.7k beta 3950 1%",'12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)",'13':"100k Hisens 3950  1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'",'20':"PT100 (Ultimainboard V2.x)",'51':"100k / 1k - EPCOS",'52':"200k / 1k - ATC Semitec 204GT-2",'55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950",'66':"Dyze Design 4.7M High Temperature thermistor",'70':"the 100K thermistor found in the bq Hephestos 2",'71':"100k / 4.7k Honeywell 135-104LAF-J01",'147':"Pt100 / 4.7k",'1047':"Pt1000 / 4.7k",'110':"Pt100 / 1k (non-standard)",'1010':"Pt1000 / 1k (non standard)",'-3':"Thermocouple + MAX31855 (only for sensor 0)",'-2':"Thermocouple + MAX6675 (only for sensor 0)",'-1':"Thermocouple + AD595",'998':"Dummy 1",'999':"Dummy 2" }
188 228
 #define TEMP_SENSOR_0 70
189 229
 #define TEMP_SENSOR_1 0
190 230
 #define TEMP_SENSOR_2 0
@@ -208,24 +248,20 @@
208 248
 // The minimal temperature defines the temperature below which the heater will not be enabled It is used
209 249
 // to check that the wiring to the thermistor is not broken.
210 250
 // Otherwise this would lead to the heater being powered on all the time.
211
-#define HEATER_0_MINTEMP 5
212
-#define HEATER_1_MINTEMP 5
213
-#define HEATER_2_MINTEMP 5
214
-#define HEATER_3_MINTEMP 5
215
-#define BED_MINTEMP 5
251
+#define HEATER_0_MINTEMP 15
252
+//#define HEATER_1_MINTEMP 5
253
+//#define HEATER_2_MINTEMP 5
254
+//#define HEATER_3_MINTEMP 5
255
+//#define BED_MINTEMP 5
216 256
 
217 257
 // When temperature exceeds max temp, your heater will be switched off.
218 258
 // This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure!
219 259
 // You should use MINTEMP for thermistor short/failure protection.
220 260
 #define HEATER_0_MAXTEMP 250
221
-#define HEATER_1_MAXTEMP 275
222
-#define HEATER_2_MAXTEMP 275
223
-#define HEATER_3_MAXTEMP 275
224
-#define BED_MAXTEMP 150
225
-
226
-// If you want the M105 heater power reported in watts, define the BED_WATTS, and (shared for all extruders) EXTRUDER_WATTS
227
-//#define EXTRUDER_WATTS (12.0*12.0/6.7) // P=U^2/R
228
-//#define BED_WATTS (12.0*12.0/1.1)      // P=U^2/R
261
+//#define HEATER_1_MAXTEMP 275
262
+//#define HEATER_2_MAXTEMP 275
263
+//#define HEATER_3_MAXTEMP 275
264
+//#define BED_MAXTEMP 150
229 265
 
230 266
 //===========================================================================
231 267
 //============================= PID Settings ================================
@@ -241,8 +277,8 @@
241 277
   //#define PID_DEBUG // Sends debug data to the serial port.
242 278
   //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX
243 279
   //#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
244
-  //#define PID_PARAMS_PER_EXTRUDER // Uses separate PID parameters for each extruder (useful for mismatched extruders)
245
-                                    // Set/get with gcode: M301 E[extruder number, 0-2]
280
+  //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders)
281
+                                  // Set/get with gcode: M301 E[extruder number, 0-2]
246 282
   #define PID_FUNCTIONAL_RANGE 250  // If the temperature difference between the target temperature and the actual temperature
247 283
                                     // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max.
248 284
   #define PID_INTEGRAL_DRIVE_MAX PID_MAX  //limit for the integral term
@@ -280,7 +316,7 @@
280 316
 // all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis)
281 317
 // setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did,
282 318
 // so you shouldn't use it unless you are OK with PWM on your bed.  (see the comment on enabling PIDTEMPBED)
283
-#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current
319
+//#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current
284 320
 
285 321
 #if ENABLED(PIDTEMPBED)
286 322
 
@@ -331,7 +367,7 @@
331 367
  */
332 368
 
333 369
 #define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders
334
-#define THERMAL_PROTECTION_BED     // Enable thermal protection for the heated bed
370
+//#define THERMAL_PROTECTION_BED     // Enable thermal protection for the heated bed
335 371
 
336 372
 //===========================================================================
337 373
 //============================= Mechanical Settings =========================
@@ -378,18 +414,79 @@
378 414
 #endif
379 415
 
380 416
 // Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup).
381
-const bool X_MIN_ENDSTOP_INVERTING = true;  // set to true to invert the logic of the endstop.
382
-const bool Y_MIN_ENDSTOP_INVERTING = true;  // set to true to invert the logic of the endstop.
383
-const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
384
-const bool X_MAX_ENDSTOP_INVERTING = true;  // set to true to invert the logic of the endstop.
385
-const bool Y_MAX_ENDSTOP_INVERTING = true;  // set to true to invert the logic of the endstop.
386
-const bool Z_MAX_ENDSTOP_INVERTING = true;  // set to true to invert the logic of the endstop.
387
-const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
417
+#define X_MIN_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
418
+#define Y_MIN_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
419
+#define Z_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
420
+#define X_MAX_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
421
+#define Y_MAX_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
422
+#define Z_MAX_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
423
+#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
388 424
 
389 425
 //===========================================================================
390 426
 //============================= Z Probe Options =============================
391 427
 //===========================================================================
392 428
 
429
+//
430
+// Probe Type
431
+// Probes are sensors/switches that are activated / deactivated before/after use.
432
+//
433
+// Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc.
434
+// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below.
435
+//
436
+// Use M851 to set the Z probe vertical offset from the nozzle. Store with M500.
437
+//
438
+
439
+// A Fix-Mounted Probe either doesn't deploy or needs manual deployment.
440
+// For example an inductive probe, or a setup that uses the nozzle to probe.
441
+// An inductive probe must be deactivated to go below
442
+// its trigger-point if hardware endstops are active.
443
+#define FIX_MOUNTED_PROBE
444
+
445
+// The BLTouch probe emulates a servo probe.
446
+//#define BLTOUCH
447
+
448
+// Z Servo Probe, such as an endstop switch on a rotating arm.
449
+//#define Z_ENDSTOP_SERVO_NR 0
450
+//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles
451
+
452
+// Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
453
+//#define Z_PROBE_SLED
454
+//#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.
455
+
456
+// Z Probe to nozzle (X,Y) offset, relative to (0, 0).
457
+// X and Y offsets must be integers.
458
+//
459
+// In the following example the X and Y offsets are both positive:
460
+// #define X_PROBE_OFFSET_FROM_EXTRUDER 10
461
+// #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
462
+//
463
+//    +-- BACK ---+
464
+//    |           |
465
+//  L |    (+) P  | R <-- probe (20,20)
466
+//  E |           | I
467
+//  F | (-) N (+) | G <-- nozzle (10,10)
468
+//  T |           | H
469
+//    |    (-)    | T
470
+//    |           |
471
+//    O-- FRONT --+
472
+//  (0,0)
473
+#define X_PROBE_OFFSET_FROM_EXTRUDER 34  // X offset: -left  +right  [of the nozzle]
474
+#define Y_PROBE_OFFSET_FROM_EXTRUDER 15  // Y offset: -front +behind [the nozzle]
475
+#define Z_PROBE_OFFSET_FROM_EXTRUDER 0   // Z offset: -below +above  [the nozzle]
476
+
477
+// X and Y axis travel speed (mm/m) between probes
478
+#define XY_PROBE_SPEED 8000
479
+// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
480
+#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
481
+// Speed for the "accurate" probe of each point
482
+#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
483
+// Use double touch for probing
484
+//#define PROBE_DOUBLE_TOUCH
485
+
486
+//
487
+// Allen Key Probe is defined in the Delta example configurations.
488
+//
489
+
393 490
 // Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z Probe and a Z-min-endstop on the same machine.
394 491
 // With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing.
395 492
 //
@@ -401,7 +498,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
401 498
 // To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN.
402 499
 //
403 500
 // For a servo-based Z probe, you must set up servo support below, including
404
-// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES.
501
+// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and Z_SERVO_ANGLES.
405 502
 //
406 503
 // - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin.
407 504
 // - Use 5V for powered (usu. inductive) sensors.
@@ -434,6 +531,21 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
434 531
 // If you're using the Z MIN endstop connector for your Z probe, this has no effect.
435 532
 //#define DISABLE_Z_MIN_PROBE_ENDSTOP
436 533
 
534
+// Enable Z Probe Repeatability test to see how accurate your probe is
535
+//#define Z_MIN_PROBE_REPEATABILITY_TEST
536
+
537
+//
538
+// Probe Raise options provide clearance for the probe to deploy, stow, and travel.
539
+//
540
+#define Z_PROBE_DEPLOY_HEIGHT  5 // Raise to make room for the probe to deploy / stow
541
+#define Z_PROBE_TRAVEL_HEIGHT 2  // Raise between probing points.
542
+
543
+//
544
+// For M851 give a range for adjusting the Z probe offset
545
+//
546
+#define Z_PROBE_OFFSET_RANGE_MIN -2
547
+#define Z_PROBE_OFFSET_RANGE_MAX  0
548
+
437 549
 // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
438 550
 // :{0:'Low',1:'High'}
439 551
 #define X_ENABLE_ON 0
@@ -470,8 +582,9 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
470 582
 #define INVERT_E3_DIR false
471 583
 
472 584
 // @section homing
473
-#define MIN_Z_HEIGHT_FOR_HOMING 5   // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
474
-                                    // Be sure you have this distance over your Z_MAX_POS in case.
585
+
586
+#define Z_HOMING_HEIGHT 5    // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
587
+                             // Be sure you have this distance over your Z_MAX_POS in case.
475 588
 
476 589
 // ENDSTOP SETTINGS:
477 590
 // Sets direction of endstops when homing; 1=MAX, -1=MIN
@@ -480,8 +593,8 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
480 593
 #define Y_HOME_DIR -1
481 594
 #define Z_HOME_DIR -1
482 595
 
483
-#define min_software_endstops false // If true, axis won't move to coordinates less than HOME_POS.
484
-#define max_software_endstops false // If true, axis won't move to coordinates greater than the defined lengths below.
596
+#define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS.
597
+#define max_software_endstops true // If true, axis won't move to coordinates greater than the defined lengths below.
485 598
 
486 599
 // @section machine
487 600
 
@@ -501,7 +614,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
501 614
                                  // It is assumed that when logic high = filament available
502 615
                                  //                    when logic  low = filament ran out
503 616
 #if ENABLED(FILAMENT_RUNOUT_SENSOR)
504
-  const bool FIL_RUNOUT_INVERTING = true;  // Should be uncommented and true or false should assigned
617
+  const bool FIL_RUNOUT_INVERTING = false; // set to true to invert the logic of the sensor.
505 618
   #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined.
506 619
   #define FILAMENT_RUNOUT_SCRIPT "M600"
507 620
 #endif
@@ -513,10 +626,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
513 626
 //#define MESH_BED_LEVELING    // Enable mesh bed leveling.
514 627
 
515 628
 #if ENABLED(MESH_BED_LEVELING)
516
-  #define MESH_MIN_X 10
517
-  #define MESH_MAX_X (X_MAX_POS - (MESH_MIN_X))
518
-  #define MESH_MIN_Y 10
519
-  #define MESH_MAX_Y (Y_MAX_POS - (MESH_MIN_Y))
629
+  #define MESH_INSET 10        // Mesh inset margin on print area
520 630
   #define MESH_NUM_X_POINTS 3  // Don't use more than 7 points per axis, implementation limited.
521 631
   #define MESH_NUM_Y_POINTS 3
522 632
   #define MESH_HOME_SEARCH_Z 4  // Z after Home, bed somewhere below but above 0.0.
@@ -538,8 +648,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
538 648
 // @section bedlevel
539 649
 
540 650
 #define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line)
651
+
652
+// Enable this feature to get detailed logging of G28, G29, M48, etc.
653
+// Logging is off by default. Enable this logging feature with 'M111 S32'.
654
+// NOTE: Requires a huge amount of PROGMEM.
541 655
 //#define DEBUG_LEVELING_FEATURE
542
-#define Z_MIN_PROBE_REPEATABILITY_TEST  // If not commented out, Z Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
543 656
 
544 657
 #if ENABLED(AUTO_BED_LEVELING_FEATURE)
545 658
 
@@ -582,58 +695,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
582 695
     #define ABL_PROBE_PT_3_X ((X_MIN_POS + X_MAX_POS) / 2)
583 696
     #define ABL_PROBE_PT_3_Y Y_MAX_POS - (Y_PROBE_OFFSET_FROM_EXTRUDER)
584 697
 
585
-  #endif // AUTO_BED_LEVELING_GRID
586
-
587
-  // Z Probe to nozzle (X,Y) offset, relative to (0, 0).
588
-  // X and Y offsets must be integers.
589
-  //
590
-  // In the following example the X and Y offsets are both positive:
591
-  // #define X_PROBE_OFFSET_FROM_EXTRUDER 10
592
-  // #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
593
-  //
594
-  //    +-- BACK ---+
595
-  //    |           |
596
-  //  L |    (+) P  | R <-- probe (20,20)
597
-  //  E |           | I
598
-  //  F | (-) N (+) | G <-- nozzle (10,10)
599
-  //  T |           | H
600
-  //    |    (-)    | T
601
-  //    |           |
602
-  //    O-- FRONT --+
603
-  //  (0,0)
604
-  #define X_PROBE_OFFSET_FROM_EXTRUDER 34  // X offset: -left  +right  [of the nozzle]
605
-  #define Y_PROBE_OFFSET_FROM_EXTRUDER 15  // Y offset: -front +behind [the nozzle]
606
-  #define Z_PROBE_OFFSET_FROM_EXTRUDER 0   // Z offset: -below +above  [the nozzle]
607
-
608
-  #define XY_TRAVEL_SPEED 8000         // X and Y axis travel speed between probes, in mm/min.
609
-
610
-  #define Z_RAISE_BEFORE_PROBING   5  // How much the Z axis will be raised before traveling to the first probing point.
611
-  #define Z_RAISE_BETWEEN_PROBINGS 2  // How much the Z axis will be raised when traveling from between next probing points.
612
-  #define Z_RAISE_AFTER_PROBING    5  // How much the Z axis will be raised after the last probing point.
698
+  #endif // !AUTO_BED_LEVELING_GRID
613 699
 
614 700
   //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine.
615 701
                                                                              // Useful to retract a deployable Z probe.
616 702
 
617
-  // Probes are sensors/switches that need to be activated before they can be used
618
-  // and deactivated after their use.
619
-  // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE
620
-
621
-  // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER
622
-  // when the hardware endstops are active.
623
-  #define FIX_MOUNTED_PROBE
624
-
625
-  // A Servo Probe can be defined in the servo section below.
626
-
627
-  // An Allen Key Probe is currently predefined only in the delta example configurations.
628
-
629
-  // Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
630
-  //#define Z_PROBE_SLED
631
-  //#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.
632
-
633
-  // A Mechanical Probe is any probe that either doesn't deploy or needs manual deployment
634
-  // For example any setup that uses the nozzle itself as a probe.
635
-  //#define MECHANICAL_PROBE
636
-
637 703
   // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing,
638 704
   // it is highly recommended you also enable Z_SAFE_HOMING below!
639 705
 
@@ -642,18 +708,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
642 708
 
643 709
 // @section homing
644 710
 
645
-// The position of the homing switches
646
-//#define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used
647
-//#define BED_CENTER_AT_0_0  // If defined, the center of the bed is at (X=0, Y=0)
648
-
649
-// Manual homing switch locations:
650
-// For deltabots this means top and center of the Cartesian print volume.
651
-#if ENABLED(MANUAL_HOME_POSITIONS)
652
-  #define MANUAL_X_HOME_POS 0
653
-  #define MANUAL_Y_HOME_POS 0
654
-  #define MANUAL_Z_HOME_POS 0
655
-  //#define MANUAL_Z_HOME_POS 402 // For delta: Distance between nozzle and print surface after homing.
656
-#endif
711
+// The center of the bed is at (X=0, Y=0)
712
+//#define BED_CENTER_AT_0_0
713
+
714
+// Manually set the home position. Leave these undefined for automatic settings.
715
+// For DELTA this is the top-center of the Cartesian print volume.
716
+//#define MANUAL_X_HOME_POS 0
717
+//#define MANUAL_Y_HOME_POS 0
718
+//#define MANUAL_Z_HOME_POS 0 // Distance between the nozzle to printbed after homing
657 719
 
658 720
 // Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
659 721
 //
@@ -661,7 +723,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
661 723
 //
662 724
 // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
663 725
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
664
-// - Position the Z probe in a defined XY point before Z Homing when homing all axes (G28).
726
+// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
665 727
 // - Prevent Z homing when the Z probe is outside bed area.
666 728
 #define Z_SAFE_HOMING
667 729
 
@@ -670,47 +732,35 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
670 732
   #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2)    // Y point for Z homing when homing all axis (G28).
671 733
 #endif
672 734
 
735
+// Homing speeds (mm/m)
736
+#define HOMING_FEEDRATE_XY (150*60)
737
+#define HOMING_FEEDRATE_Z  200
673 738
 
674
-// @section movement
675
-
676
-/**
677
- * MOVEMENT SETTINGS
678
- */
679
-
680
-#define HOMING_FEEDRATE {150*60, 150*60, 3.3*60, 0}  // set the homing speeds (mm/min)
739
+//
740
+// MOVEMENT SETTINGS
741
+// @section motion
742
+//
681 743
 
682 744
 // default settings
683 745
 
684
-#define DEFAULT_AXIS_STEPS_PER_UNIT   {160, 160, 8000, 204.146} // default steps per unit for Ultimaker
685
-#define DEFAULT_MAX_FEEDRATE          {200, 200, 3.3, 200}      // (mm/sec)
686
-#define DEFAULT_MAX_ACCELERATION      {1000, 1000, 100, 3000}   // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot.
746
+#define DEFAULT_AXIS_STEPS_PER_UNIT   {160, 160, 8000, 210.02}  // Steps per unit
747
+#define DEFAULT_MAX_FEEDRATE          {250, 250, 2, 200}        // mm/sec
748
+#define DEFAULT_MAX_ACCELERATION      {1000, 1000, 20, 1000}    // X, Y, Z, E max start speed for accelerated moves
687 749
 
688 750
 #define DEFAULT_ACCELERATION          1000    // X, Y, Z and E acceleration in mm/s^2 for printing moves
689 751
 #define DEFAULT_RETRACT_ACCELERATION  3000    // E acceleration in mm/s^2 for retracts
690 752
 #define DEFAULT_TRAVEL_ACCELERATION   1000    // X, Y, Z acceleration in mm/s^2 for travel (non printing) moves
691 753
 
692 754
 // The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously)
693
-#define DEFAULT_XYJERK                15.0    // (mm/sec)
694
-#define DEFAULT_ZJERK                 0.4     // (mm/sec)
695
-#define DEFAULT_EJERK                 2.0     // (mm/sec)
755
+#define DEFAULT_XYJERK                20.0    // (mm/sec)
756
+#define DEFAULT_ZJERK                  0.4    // (mm/sec)
757
+#define DEFAULT_EJERK                  2.0    // (mm/sec)
696 758
 
697 759
 
698 760
 //=============================================================================
699 761
 //============================= Additional Features ===========================
700 762
 //=============================================================================
701 763
 
702
-// @section more
703
-
704
-// Custom M code points
705
-#define CUSTOM_M_CODES
706
-#if ENABLED(CUSTOM_M_CODES)
707
-  #if ENABLED(AUTO_BED_LEVELING_FEATURE)
708
-    #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851
709
-    #define Z_PROBE_OFFSET_RANGE_MIN -5
710
-    #define Z_PROBE_OFFSET_RANGE_MAX  0
711
-  #endif
712
-#endif
713
-
714 764
 // @section extras
715 765
 
716 766
 //
@@ -742,22 +792,107 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
742 792
 //
743 793
 //#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose
744 794
 
795
+//
796
+// G20/G21 Inch mode support
797
+//
798
+//#define INCH_MODE_SUPPORT
799
+
800
+//
801
+// M149 Set temperature units support
802
+//
803
+//#define TEMPERATURE_UNITS_SUPPORT
804
+
745 805
 // @section temperature
746 806
 
747 807
 // Preheat Constants
748
-#define PLA_PREHEAT_HOTEND_TEMP 210
749
-#define PLA_PREHEAT_HPB_TEMP    70
750
-#define PLA_PREHEAT_FAN_SPEED   0   // Insert Value between 0 and 255
808
+#define PREHEAT_1_TEMP_HOTEND 210
809
+#define PREHEAT_1_TEMP_BED     70
810
+#define PREHEAT_1_FAN_SPEED     0 // Value from 0 to 255
811
+
812
+#define PREHEAT_2_TEMP_HOTEND 240
813
+#define PREHEAT_2_TEMP_BED    110
814
+#define PREHEAT_2_FAN_SPEED     0 // Value from 0 to 255
751 815
 
752
-#define ABS_PREHEAT_HOTEND_TEMP 240
753
-#define ABS_PREHEAT_HPB_TEMP    110
754
-#define ABS_PREHEAT_FAN_SPEED   0   // Insert Value between 0 and 255
816
+//
817
+// Nozzle Park -- EXPERIMENTAL
818
+//
819
+// When enabled allows the user to define a special XYZ position, inside the
820
+// machine's topology, to park the nozzle when idle or when receiving the G27
821
+// command.
822
+//
823
+// The "P" paramenter controls what is the action applied to the Z axis:
824
+//    P0: (Default) If current Z-pos is lower than Z-park then the nozzle will
825
+//        be raised to reach Z-park height.
826
+//
827
+//    P1: No matter the current Z-pos, the nozzle will be raised/lowered to
828
+//        reach Z-park height.
829
+//
830
+//    P2: The nozzle height will be raised by Z-park amount but never going over
831
+//        the machine's limit of Z_MAX_POS.
832
+//
833
+//#define NOZZLE_PARK_FEATURE
834
+
835
+#if ENABLED(NOZZLE_PARK_FEATURE)
836
+  // Specify a park position as { X, Y, Z }
837
+  #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 }
838
+#endif
839
+
840
+//
841
+// Clean Nozzle Feature -- EXPERIMENTAL
842
+//
843
+// When enabled allows the user to send G12 to start the nozzle cleaning
844
+// process, the G-Code accepts two parameters:
845
+//   "P" for pattern selection
846
+//   "S" for defining the number of strokes/repetitions
847
+//
848
+// Available list of patterns:
849
+//   P0: This is the default pattern, this process requires a sponge type
850
+//       material at a fixed bed location, the cleaning process is based on
851
+//       "strokes" i.e. back-and-forth movements between the starting and end
852
+//       points.
853
+//
854
+//   P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T"
855
+//       defines the number of zig-zag triangles to be done. "S" defines the
856
+//       number of strokes aka one back-and-forth movement. As an example
857
+//       sending "G12 P1 S1 T3" will execute:
858
+//
859
+//          --
860
+//         |  (X0, Y1) |     /\        /\        /\     | (X1, Y1)
861
+//         |           |    /  \      /  \      /  \    |
862
+//       A |           |   /    \    /    \    /    \   |
863
+//         |           |  /      \  /      \  /      \  |
864
+//         |  (X0, Y0) | /        \/        \/        \ | (X1, Y0)
865
+//          --         +--------------------------------+
866
+//                       |________|_________|_________|
867
+//                           T1        T2        T3
868
+//
869
+// Caveats: End point Z should use the same value as Start point Z.
870
+//
871
+// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments
872
+// may change to add new functionality like different wipe patterns.
873
+//
874
+//#define NOZZLE_CLEAN_FEATURE
875
+
876
+#if ENABLED(NOZZLE_CLEAN_FEATURE)
877
+  // Number of pattern repetitions
878
+  #define NOZZLE_CLEAN_STROKES  12
879
+
880
+  // Specify positions as { X, Y, Z }
881
+  #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)}
882
+  #define NOZZLE_CLEAN_END_POINT   {100, 60, (Z_MIN_POS + 1)}
883
+
884
+  // Moves the nozzle to the initial position
885
+  #define NOZZLE_CLEAN_GOBACK
886
+#endif
755 887
 
756 888
 //
757 889
 // Print job timer
758 890
 //
759 891
 // Enable this option to automatically start and stop the
760
-// print job timer when M104 and M109 commands are received.
892
+// print job timer when M104/M109/M190 commands are received.
893
+// M104 (extruder without wait) - high temp = none, low temp = stop timer
894
+// M109 (extruder with wait) - high temp = start timer, low temp = stop timer
895
+// M190 (bed with wait) - high temp = start timer, low temp = none
761 896
 //
762 897
 // In all cases the timer can be started and stopped using
763 898
 // the following commands:
@@ -777,7 +912,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
777 912
 //  - Total time printing
778 913
 //
779 914
 // This information can be viewed by the M78 command.
780
-//#define PRINTCOUNTER
915
+#define PRINTCOUNTER
781 916
 
782 917
 //=============================================================================
783 918
 //============================= LCD and SD support ============================
@@ -790,8 +925,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
790 925
 //
791 926
 // Here you may choose the language used by Marlin on the LCD menus, the following
792 927
 // list of languages are available:
793
-//    en, pl, fr, de, es, ru, bg, it, pt, pt_utf8, pt-br, pt-br_utf8,
794
-//    fi, an, nl, ca, eu, kana, kana_utf8, cn, cz, test
928
+//    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
929
+//    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
930
+//
931
+// :{'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','test':'TEST'}
795 932
 //
796 933
 #define LCD_LANGUAGE en
797 934
 
@@ -855,7 +992,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
855 992
 //
856 993
 // Use CRC checks and retries on the SD communication.
857 994
 //
858
-//#define SD_CHECK_AND_RETRY
995
+#define SD_CHECK_AND_RETRY
859 996
 
860 997
 //
861 998
 // ENCODER SETTINGS
@@ -939,6 +1076,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
939 1076
 //#define ULTIPANEL
940 1077
 
941 1078
 //
1079
+// Cartesio UI
1080
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1081
+//
1082
+//#define CARTESIO_UI
1083
+
1084
+//
942 1085
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
943 1086
 // http://reprap.org/wiki/PanelOne
944 1087
 //
@@ -951,6 +1094,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
951 1094
 //#define MAKRPANEL
952 1095
 
953 1096
 //
1097
+// ReprapWorld Graphical LCD
1098
+// https://reprapworld.com/?products_details&products_id/1218
1099
+//
1100
+//#define REPRAPWORLD_GRAPHICAL_LCD
1101
+
1102
+//
954 1103
 // Activate one of these if you have a Panucatt Devices
955 1104
 // Viki 2.0 or mini Viki with Graphic LCD
956 1105
 // http://panucatt.com
@@ -1000,7 +1149,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1000 1149
 // is pressed, a value of 10.0 means 10mm per click.
1001 1150
 //
1002 1151
 //#define REPRAPWORLD_KEYPAD
1003
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1152
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1004 1153
 
1005 1154
 //
1006 1155
 // RigidBot Panel V1.0
@@ -1061,6 +1210,15 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1061 1210
 //#define U8GLIB_SSD1306
1062 1211
 
1063 1212
 //
1213
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1214
+//
1215
+//#define SAV_3DGLCD
1216
+#if ENABLED(SAV_3DGLCD)
1217
+  //#define U8GLIB_SSD1306
1218
+  #define U8GLIB_SH1106
1219
+#endif
1220
+
1221
+//
1064 1222
 // CONTROLLER TYPE: Shift register panels
1065 1223
 //
1066 1224
 // 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH
@@ -1088,7 +1246,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1088 1246
 // at zero value, there are 128 effective control positions.
1089 1247
 #define SOFT_PWM_SCALE 0
1090 1248
 
1091
-// Temperature status LEDs that display the hotend and bet temperature.
1249
+// Temperature status LEDs that display the hotend and bed temperature.
1092 1250
 // If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
1093 1251
 // Otherwise the RED led is on. There is 1C hysteresis.
1094 1252
 //#define TEMP_STAT_LEDS
@@ -1120,28 +1278,16 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1120 1278
 //
1121 1279
 //#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
1122 1280
 
1123
-// Servo Endstops
1124
-//
1125
-// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes.
1126
-// Use M851 to set the Z probe vertical offset from the nozzle. Store that setting with M500.
1127
-//
1128
-//#define X_ENDSTOP_SERVO_NR 1
1129
-//#define Y_ENDSTOP_SERVO_NR 2
1130
-//#define Z_ENDSTOP_SERVO_NR 0
1131
-//#define SERVO_ENDSTOP_ANGLES {{0,0}, {0,0}, {70,0}} // X,Y,Z Axis Extend and Retract angles
1281
+// Delay (in microseconds) before the next move will start, to give the servo time to reach its target angle.
1282
+// 300ms is a good value but you can try less delay.
1283
+// If the servo can't reach the requested position, increase it.
1284
+#define SERVO_DELAY 300
1132 1285
 
1133 1286
 // Servo deactivation
1134 1287
 //
1135 1288
 // With this option servos are powered only during movement, then turned off to prevent jitter.
1136 1289
 //#define DEACTIVATE_SERVOS_AFTER_MOVE
1137 1290
 
1138
-#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE)
1139
-  // Delay (in microseconds) before turning the servo off. This depends on the servo speed.
1140
-  // 300ms is a good value but you can try less delay.
1141
-  // If the servo can't reach the requested position, increase it.
1142
-  #define SERVO_DEACTIVATION_DELAY 300
1143
-#endif
1144
-
1145 1291
 /**********************************************************************\
1146 1292
  * Support for a filament diameter sensor
1147 1293
  * Also allows adjustment of diameter at print time (vs  at slicing)
@@ -1172,7 +1318,4 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1172 1318
   //#define FILAMENT_LCD_DISPLAY
1173 1319
 #endif
1174 1320
 
1175
-#include "Configuration_adv.h"
1176
-#include "thermistortables.h"
1177
-
1178
-#endif //CONFIGURATION_H
1321
+#endif // CONFIGURATION_H

+ 156
- 55
Marlin/example_configurations/Hephestos_2/Configuration_adv.h Parādīt failu

@@ -33,7 +33,18 @@
33 33
 #ifndef CONFIGURATION_ADV_H
34 34
 #define CONFIGURATION_ADV_H
35 35
 
36
-#include "Conditionals.h"
36
+/**
37
+ *
38
+ *  ***********************************
39
+ *  **  ATTENTION TO ALL DEVELOPERS  **
40
+ *  ***********************************
41
+ *
42
+ * You must increment this version number for every significant change such as,
43
+ * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option.
44
+ *
45
+ * Note: Update also Version.h !
46
+ */
47
+#define CONFIGURATION_ADV_H_VERSION 010100
37 48
 
38 49
 // @section temperature
39 50
 
@@ -102,8 +113,8 @@
102 113
 #if ENABLED(PIDTEMP)
103 114
   // this adds an experimental additional term to the heating power, proportional to the extrusion speed.
104 115
   // if Kc is chosen well, the additional required power due to increased melting should be compensated.
105
-  #define PID_ADD_EXTRUSION_RATE
106
-  #if ENABLED(PID_ADD_EXTRUSION_RATE)
116
+  //#define PID_EXTRUSION_SCALING
117
+  #if ENABLED(PID_EXTRUSION_SCALING)
107 118
     #define DEFAULT_Kc (100) //heating power=Kc*(e_speed)
108 119
     #define LPQ_MAX_LEN 50
109 120
   #endif
@@ -128,15 +139,42 @@
128 139
 //The M105 command return, besides traditional information, the ADC value read from temperature sensors.
129 140
 //#define SHOW_TEMP_ADC_VALUES
130 141
 
142
+/**
143
+ * High Temperature Thermistor Support
144
+ *
145
+ * Thermistors able to support high temperature tend to have a hard time getting
146
+ * good readings at room and lower temperatures. This means HEATER_X_RAW_LO_TEMP
147
+ * will probably be caught when the heating element first turns on during the
148
+ * preheating process, which will trigger a min_temp_error as a safety measure
149
+ * and force stop everything.
150
+ * To circumvent this limitation, we allow for a preheat time (during which,
151
+ * min_temp_error won't be triggered) and add a min_temp buffer to handle
152
+ * aberrant readings.
153
+ *
154
+ * If you want to enable this feature for your hotend thermistor(s)
155
+ * uncomment and set values > 0 in the constants below
156
+ */
157
+
158
+// The number of consecutive low temperature errors that can occur
159
+// before a min_temp_error is triggered. (Shouldn't be more than 10.)
160
+//#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 0
161
+
162
+// The number of milliseconds a hotend will preheat before starting to check
163
+// the temperature. This value should NOT be set to the time it takes the
164
+// hot end to reach the target temperature, but the time it takes to reach
165
+// the minimum temperature your thermistor can read. The lower the better/safer.
166
+// This shouldn't need to be more than 30 seconds (30000)
167
+//#define MILLISECONDS_PREHEAT_TIME 0
168
+
131 169
 // @section extruder
132 170
 
133 171
 //  extruder run-out prevention.
134 172
 //if the machine is idle, and the temperature over MINTEMP, every couple of SECONDS some filament is extruded
135 173
 //#define EXTRUDER_RUNOUT_PREVENT
136 174
 #define EXTRUDER_RUNOUT_MINTEMP 190
137
-#define EXTRUDER_RUNOUT_SECONDS 30.
138
-#define EXTRUDER_RUNOUT_ESTEPS 14. //mm filament
139
-#define EXTRUDER_RUNOUT_SPEED 1500.  //extrusion speed
175
+#define EXTRUDER_RUNOUT_SECONDS 30
176
+#define EXTRUDER_RUNOUT_ESTEPS 14   // mm filament
177
+#define EXTRUDER_RUNOUT_SPEED 1500  // extrusion speed
140 178
 #define EXTRUDER_RUNOUT_EXTRUDE 100
141 179
 
142 180
 // @section temperature
@@ -177,24 +215,42 @@
177 215
 #define EXTRUDER_AUTO_FAN_TEMPERATURE 50
178 216
 #define EXTRUDER_AUTO_FAN_SPEED   255  // == full speed
179 217
 
180
-
181 218
 //===========================================================================
182
-//=============================Mechanical Settings===========================
219
+//============================ Mechanical Settings ==========================
183 220
 //===========================================================================
184 221
 
185 222
 // @section homing
186 223
 
187
-#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing
224
+// If you want endstops to stay on (by default) even when not homing
225
+// enable this option. Override at any time with M120, M121.
226
+//#define ENDSTOPS_ALWAYS_ON_DEFAULT
188 227
 
189 228
 // @section extras
190 229
 
191 230
 //#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
192 231
 
232
+// Dual X Steppers
233
+// Uncomment this option to drive two X axis motors.
234
+// The next unused E driver will be assigned to the second X stepper.
235
+//#define X_DUAL_STEPPER_DRIVERS
236
+#if ENABLED(X_DUAL_STEPPER_DRIVERS)
237
+  // Set true if the two X motors need to rotate in opposite directions
238
+  #define INVERT_X2_VS_X_DIR true
239
+#endif
240
+
241
+
242
+// Dual Y Steppers
243
+// Uncomment this option to drive two Y axis motors.
244
+// The next unused E driver will be assigned to the second Y stepper.
245
+//#define Y_DUAL_STEPPER_DRIVERS
246
+#if ENABLED(Y_DUAL_STEPPER_DRIVERS)
247
+  // Set true if the two Y motors need to rotate in opposite directions
248
+  #define INVERT_Y2_VS_Y_DIR true
249
+#endif
250
+
193 251
 // A single Z stepper driver is usually used to drive 2 stepper motors.
194
-// Uncomment this define to utilize a separate stepper driver for each Z axis motor.
195
-// Only a few motherboards support this, like RAMPS, which have dual extruder support (the 2nd, often unused, extruder driver is used
196
-// to control the 2nd Z axis stepper motor). The pins are currently only defined for a RAMPS motherboards.
197
-// On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder.
252
+// Uncomment this option to use a separate stepper driver for each Z axis motor.
253
+// The next unused E driver will be assigned to the second Z stepper.
198 254
 //#define Z_DUAL_STEPPER_DRIVERS
199 255
 
200 256
 #if ENABLED(Z_DUAL_STEPPER_DRIVERS)
@@ -216,14 +272,6 @@
216 272
 
217 273
 #endif // Z_DUAL_STEPPER_DRIVERS
218 274
 
219
-// Same again but for Y Axis.
220
-//#define Y_DUAL_STEPPER_DRIVERS
221
-
222
-#if ENABLED(Y_DUAL_STEPPER_DRIVERS)
223
-  // Define if the two Y drives need to rotate in opposite directions
224
-  #define INVERT_Y2_VS_Y_DIR true
225
-#endif
226
-
227 275
 // Enable this for dual x-carriage printers.
228 276
 // A dual x-carriage design has the advantage that the inactive extruder can be parked which
229 277
 // prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
@@ -237,7 +285,7 @@
237 285
   #define X2_MAX_POS 353    // set maximum to the distance between toolheads when both heads are homed
238 286
   #define X2_HOME_DIR 1     // the second X-carriage always homes to the maximum endstop position
239 287
   #define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position
240
-      // However: In this mode the EXTRUDER_OFFSET_X value for the second extruder provides a software
288
+      // However: In this mode the HOTEND_OFFSET_X value for the second extruder provides a software
241 289
       // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops
242 290
       // without modifying the firmware (through the "M218 T1 X???" command).
243 291
       // Remember: you should set the second extruder x-offset to 0 in your slicer.
@@ -273,13 +321,16 @@
273 321
 //#define QUICK_HOME  //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially.
274 322
 
275 323
 // When G28 is called, this option will make Y home before X
276
-//#define HOME_Y_BEFORE_X
324
+#define HOME_Y_BEFORE_X
277 325
 
278 326
 // @section machine
279 327
 
280 328
 #define AXIS_RELATIVE_MODES {false, false, false, false}
281 329
 
282
-//By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
330
+// Allow duplication mode with a basic dual-nozzle extruder
331
+//#define DUAL_NOZZLE_DUPLICATION_MODE
332
+
333
+// By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
283 334
 #define INVERT_X_STEP_PIN false
284 335
 #define INVERT_Y_STEP_PIN false
285 336
 #define INVERT_Z_STEP_PIN false
@@ -288,7 +339,7 @@
288 339
 // Default stepper release if idle. Set to 0 to deactivate.
289 340
 // Steppers will shut down DEFAULT_STEPPER_DEACTIVE_TIME seconds after the last move when DISABLE_INACTIVE_? is true.
290 341
 // Time can be set by M18 and M84.
291
-#define DEFAULT_STEPPER_DEACTIVE_TIME 60
342
+#define DEFAULT_STEPPER_DEACTIVE_TIME 120
292 343
 #define DISABLE_INACTIVE_X true
293 344
 #define DISABLE_INACTIVE_Y true
294 345
 #define DISABLE_INACTIVE_Z true  // set to false if the nozzle will fall down on your printed part when print has finished.
@@ -320,7 +371,7 @@
320 371
 // Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end
321 372
 // of the buffer and all stops. This should not be much greater than zero and should only be changed
322 373
 // if unwanted behavior is observed on a user's machine when running at very slow speeds.
323
-#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec)
374
+#define MINIMUM_PLANNER_SPEED 0.05 // (mm/sec)
324 375
 
325 376
 // Microstep setting (Only functional when stepper driver microstep pins are connected to MCU.
326 377
 #define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16]
@@ -342,15 +393,18 @@
342 393
 //=============================Additional Features===========================
343 394
 //===========================================================================
344 395
 
345
-#define ENCODER_RATE_MULTIPLIER         // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
346
-#define ENCODER_10X_STEPS_PER_SEC 75    // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value
347
-#define ENCODER_100X_STEPS_PER_SEC 160  // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value
396
+//#define ENCODER_RATE_MULTIPLIER         // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
397
+//#define ENCODER_10X_STEPS_PER_SEC 75    // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value
398
+//#define ENCODER_100X_STEPS_PER_SEC 160  // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value
348 399
 
349 400
 //#define CHDK 4        //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/
350
-#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
401
+//#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
351 402
 
352 403
 // @section lcd
353 404
 
405
+// Include a page of printer information in the LCD Main Menu
406
+//#define LCD_INFO_MENU
407
+
354 408
 #if ENABLED(SDSUPPORT)
355 409
 
356 410
   // Some RAMPS and other boards don't detect when an SD card is inserted. You can work
@@ -361,7 +415,7 @@
361 415
   #define SD_DETECT_INVERTED
362 416
 
363 417
   #define SD_FINISHED_STEPPERRELEASE true  //if sd support and the file is finished: disable steppers?
364
-  #define SD_FINISHED_RELEASECOMMAND "M84 X Y Z E" // You might want to keep the z enabled so your bed stays in place.
418
+  #define SD_FINISHED_RELEASECOMMAND "M104 S0\nM84 X Y Z E" // You might want to keep the z enabled so your bed stays in place.
365 419
 
366 420
   #define SDCARD_RATHERRECENTFIRST  //reverse file order of sd card menu display. Its sorted practically after the file system block order.
367 421
   // if a file is deleted, it frees a block. hence, the order is not purely chronological. To still have auto0.g accessible, there is again the option to do that.
@@ -388,7 +442,6 @@
388 442
   // This option allows you to abort SD printing when any endstop is triggered.
389 443
   // This feature must be enabled with "M540 S1" or from the LCD menu.
390 444
   // To have any effect, endstops must be enabled during SD printing.
391
-  // With ENDSTOPS_ONLY_FOR_HOMING you must send "M120" to enable endstops.
392 445
   //#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED
393 446
 
394 447
 #endif // SDSUPPORT
@@ -404,9 +457,10 @@
404 457
   #define USE_SMALL_INFOFONT
405 458
 #endif // DOGLCD
406 459
 
407
-// @section more
460
+// @section safety
408 461
 
409
-// The hardware watchdog should reset the microcontroller disabling all outputs, in case the firmware gets stuck and doesn't do temperature regulation.
462
+// The hardware watchdog should reset the microcontroller disabling all outputs,
463
+// in case the firmware gets stuck and doesn't do temperature regulation.
410 464
 #define USE_WATCHDOG
411 465
 
412 466
 #if ENABLED(USE_WATCHDOG)
@@ -445,6 +499,27 @@
445 499
   #define D_FILAMENT 2.85
446 500
 #endif
447 501
 
502
+// Implementation of a linear pressure control
503
+// Assumption: advance = k * (delta velocity)
504
+// K=0 means advance disabled. A good value for a gregs wade extruder will be around K=75
505
+//#define LIN_ADVANCE
506
+
507
+#if ENABLED(LIN_ADVANCE)
508
+  #define LIN_ADVANCE_K 75
509
+#endif
510
+
511
+// @section leveling
512
+
513
+// Default mesh area is an area with an inset margin on the print area.
514
+// Below are the macros that are used to define the borders for the mesh area,
515
+// made available here for specialized needs, ie dual extruder setup.
516
+#if ENABLED(MESH_BED_LEVELING)
517
+  #define MESH_MIN_X (X_MIN_POS + MESH_INSET)
518
+  #define MESH_MAX_X (X_MAX_POS - (MESH_INSET))
519
+  #define MESH_MIN_Y (Y_MIN_POS + MESH_INSET)
520
+  #define MESH_MAX_Y (Y_MAX_POS - (MESH_INSET))
521
+#endif
522
+
448 523
 // @section extras
449 524
 
450 525
 // Arc interpretation settings:
@@ -476,12 +551,27 @@ const unsigned int dropsegments = 5; //everything with less than this number of
476 551
   #define BLOCK_BUFFER_SIZE 16 // maximize block buffer
477 552
 #endif
478 553
 
479
-// @section more
554
+// @section serial
480 555
 
481
-//The ASCII buffer for receiving from the serial:
556
+// The ASCII buffer for serial input
482 557
 #define MAX_CMD_SIZE 96
483 558
 #define BUFSIZE 4
484 559
 
560
+// Transfer Buffer Size
561
+// To save 386 bytes of PROGMEM (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0.
562
+// To buffer a simple "ok" you need 4 bytes.
563
+// For ADVANCED_OK (M105) you need 32 bytes.
564
+// For debug-echo: 128 bytes for the optimal speed.
565
+// Other output doesn't need to be that speedy.
566
+// :[0,2,4,8,16,32,64,128,256]
567
+#define TX_BUFFER_SIZE 0
568
+
569
+// Enable an emergency-command parser to intercept certain commands as they
570
+// enter the serial receive buffer, so they cannot be blocked.
571
+// Currently handles M108, M112, M410
572
+// Does not work on boards using AT90USB (USBCON) processors!
573
+//#define EMERGENCY_PARSER
574
+
485 575
 // Bad Serial-connections can miss a received command by sending an 'ok'
486 576
 // Therefore some clients abort after 30 seconds in a timeout.
487 577
 // Some other clients start sending commands while receiving a 'wait'.
@@ -513,16 +603,30 @@ const unsigned int dropsegments = 5; //everything with less than this number of
513 603
 
514 604
 // Add support for experimental filament exchange support M600; requires display
515 605
 #if ENABLED(ULTIPANEL)
516
-  //#define FILAMENTCHANGEENABLE
517
-  #if ENABLED(FILAMENTCHANGEENABLE)
518
-    #define FILAMENTCHANGE_XPOS 3
519
-    #define FILAMENTCHANGE_YPOS 3
520
-    #define FILAMENTCHANGE_ZADD 10
521
-    #define FILAMENTCHANGE_FIRSTRETRACT -2
522
-    #define FILAMENTCHANGE_FINALRETRACT -100
523
-    #define AUTO_FILAMENT_CHANGE                //This extrude filament until you press the button on LCD
524
-    #define AUTO_FILAMENT_CHANGE_LENGTH 0.04    //Extrusion length on automatic extrusion loop
525
-    #define AUTO_FILAMENT_CHANGE_FEEDRATE 300   //Extrusion feedrate (mm/min) on automatic extrusion loop
606
+  // #define FILAMENT_CHANGE_FEATURE             // Enable filament exchange menu and M600 g-code (used for runout sensor too)
607
+  #if ENABLED(FILAMENT_CHANGE_FEATURE)
608
+    #define FILAMENT_CHANGE_X_POS 3             // X position of hotend
609
+    #define FILAMENT_CHANGE_Y_POS 3             // Y position of hotend
610
+    #define FILAMENT_CHANGE_Z_ADD 10            // Z addition of hotend (lift)
611
+    #define FILAMENT_CHANGE_XY_FEEDRATE 100     // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
612
+    #define FILAMENT_CHANGE_Z_FEEDRATE 5        // Z axis feedrate in mm/s (not used for delta printers)
613
+    #define FILAMENT_CHANGE_RETRACT_LENGTH 2    // Initial retract in mm
614
+                                                // It is a short retract used immediately after print interrupt before move to filament exchange position
615
+    #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
616
+    #define FILAMENT_CHANGE_UNLOAD_LENGTH 100   // Unload filament length from hotend in mm
617
+                                                // Longer length for bowden printers to unload filament from whole bowden tube,
618
+                                                // shorter lenght for printers without bowden to unload filament from extruder only,
619
+                                                // 0 to disable unloading for manual unloading
620
+    #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10  // Unload filament feedrate in mm/s - filament unloading can be fast
621
+    #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
622
+                                                // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
623
+                                                // Short or zero length for printers without bowden where loading is not used
624
+    #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
625
+    #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
626
+                                                // 0 to disable for manual extrusion
627
+                                                // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
628
+                                                // or until outcoming filament color is not clear for filament color change
629
+    #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
526 630
   #endif
527 631
 #endif
528 632
 
@@ -668,9 +772,9 @@ const unsigned int dropsegments = 5; //everything with less than this number of
668 772
  * devices on the bus.
669 773
  *
670 774
  * ; Example #1
671
- * ; This macro send the string "Marlin" to the slave device with address 0x63
775
+ * ; This macro send the string "Marlin" to the slave device with address 0x63 (99)
672 776
  * ; It uses multiple M155 commands with one B<base 10> arg
673
- * M155 A63  ; Target slave address
777
+ * M155 A99  ; Target slave address
674 778
  * M155 B77  ; M
675 779
  * M155 B97  ; a
676 780
  * M155 B114 ; r
@@ -680,19 +784,16 @@ const unsigned int dropsegments = 5; //everything with less than this number of
680 784
  * M155 S1   ; Send the current buffer
681 785
  *
682 786
  * ; Example #2
683
- * ; Request 6 bytes from slave device with address 0x63
684
- * M156 A63 B5
787
+ * ; Request 6 bytes from slave device with address 0x63 (99)
788
+ * M156 A99 B5
685 789
  *
686 790
  * ; Example #3
687 791
  * ; Example serial output of a M156 request
688
- * echo:i2c-reply: from:63 bytes:5 data:hello
792
+ * echo:i2c-reply: from:99 bytes:5 data:hello
689 793
  */
690 794
 
691 795
 // @section i2cbus
692 796
 
693 797
 //#define EXPERIMENTAL_I2CBUS
694 798
 
695
-#include "Conditionals.h"
696
-#include "SanityCheck.h"
697
-
698
-#endif //CONFIGURATION_ADV_H
799
+#endif // CONFIGURATION_ADV_H

Marlin/example_configurations/Hephestos_2/readme.md → Marlin/example_configurations/Hephestos_2/README.md Parādīt failu

@@ -5,4 +5,10 @@ NOTE: The look and feel of the Hephestos 2 while navigating the LCD menu will ch
5 5
 
6 6
 ## Changelog
7 7
  * 2016/03/01 - Initial release
8
- * 2016/03/21 - Activated four point auto leveling by default; updated miscellaneous z-probe values
8
+ * 2016/03/21 - Activated 4-point auto leveling by default
9
+                Updated miscellaneous z-probe values
10
+ * 2016/06/21 - Disabled hot bed related options
11
+                Activated software endstops
12
+                SD printing now disables the heater when finished
13
+ * 2016/07/13 - Update the `DEFAULT_AXIS_STEPS_PER_UNIT` for the Z axis
14
+                Increased the `DEFAULT_XYJERK`

+ 103
- 0
Marlin/example_configurations/Hephestos_2/_Bootscreen.h Parādīt failu

@@ -0,0 +1,103 @@
1
+/**
2
+ * Marlin 3D Printer Firmware
3
+ * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
4
+ *
5
+ * Based on Sprinter and grbl.
6
+ * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
7
+ *
8
+ * This program is free software: you can redistribute it and/or modify
9
+ * it under the terms of the GNU General Public License as published by
10
+ * the Free Software Foundation, either version 3 of the License, or
11
+ * (at your option) any later version.
12
+ *
13
+ * This program is distributed in the hope that it will be useful,
14
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
+ * GNU General Public License for more details.
17
+ *
18
+ * You should have received a copy of the GNU General Public License
19
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
+ *
21
+ */
22
+
23
+/**
24
+ * Custom Bitmap for splashscreen
25
+ *
26
+ * You may use one of the following tools to generate the C++ bitmap array from
27
+ * a black and white image:
28
+ *
29
+ *  - http://www.marlinfw.org/tools/u8glib/converter.html
30
+ *  - http://www.digole.com/tools/PicturetoC_Hex_converter.php
31
+ */
32
+#include <avr/pgmspace.h>
33
+
34
+#define CUSTOM_BOOTSCREEN_TIMEOUT   2500
35
+#define CUSTOM_BOOTSCREEN_BMPWIDTH  62
36
+#define CUSTOM_BOOTSCREEN_BMPHEIGHT 64
37
+
38
+const unsigned char custom_start_bmp[512] PROGMEM = {
39
+  0x00, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x00,
40
+  0x00, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, 0x00,
41
+  0x00, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, 0x00,
42
+  0x00, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, 0x00,
43
+  0x00, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, 0x00,
44
+  0x00, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, 0x00,
45
+  0x00, 0x03, 0xc0, 0x0f, 0xf0, 0x07, 0x80, 0x00,
46
+  0x00, 0x07, 0xe0, 0x07, 0xe0, 0x0f, 0xc0, 0x00,
47
+  0x00, 0x0f, 0xf0, 0x03, 0xc0, 0x1f, 0xe0, 0x00,
48
+  0x00, 0x1f, 0xf8, 0x00, 0x00, 0x3f, 0xf0, 0x00,
49
+  0x00, 0x1f, 0xf8, 0x00, 0x00, 0x3f, 0xf0, 0x00,
50
+  0x00, 0x1f, 0xf8, 0x00, 0x00, 0x3f, 0xf0, 0x00,
51
+  0x00, 0x1f, 0xf8, 0x00, 0x00, 0x3f, 0xf0, 0x00,
52
+  0x00, 0x1f, 0xf8, 0x00, 0x00, 0x3f, 0xf0, 0x00,
53
+  0x00, 0x0f, 0xf0, 0x00, 0x00, 0x1f, 0xe0, 0x00,
54
+  0x00, 0x07, 0xe0, 0x00, 0x00, 0x0f, 0xc0, 0x00,
55
+  0x00, 0x03, 0xc0, 0x00, 0x00, 0x07, 0x80, 0x00,
56
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
57
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
58
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf8,
59
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfc,
60
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfc,
61
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfc,
62
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfc,
63
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfc,
64
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfc,
65
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfc,
66
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf8,
67
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
68
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
69
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
70
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
71
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
72
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
73
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
74
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
75
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
76
+  0x1e, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
77
+  0x3f, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
78
+  0x7f, 0x80, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
79
+  0xff, 0xc0, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
80
+  0xff, 0xc0, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
81
+  0xff, 0xc0, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
82
+  0xff, 0xc0, 0x00, 0x00, 0xf7, 0xc0, 0x1f, 0x80,
83
+  0xff, 0xc0, 0x00, 0x00, 0xff, 0xf0, 0x7f, 0xc0,
84
+  0x7f, 0x80, 0x00, 0x00, 0xff, 0xf8, 0xff, 0xe0,
85
+  0x3f, 0x00, 0x00, 0x00, 0xfc, 0xf8, 0xf0, 0xf8,
86
+  0x1e, 0x00, 0x00, 0x00, 0xf8, 0x7d, 0xe0, 0x78,
87
+  0x00, 0x00, 0x00, 0x00, 0xf0, 0x3d, 0xe0, 0x78,
88
+  0x00, 0x00, 0x00, 0x00, 0xf0, 0x3d, 0xe0, 0x78,
89
+  0x00, 0x00, 0x00, 0x00, 0xf0, 0x3d, 0xe0, 0x78,
90
+  0x00, 0x00, 0x00, 0x00, 0xf0, 0x3d, 0xe0, 0x78,
91
+  0x00, 0x00, 0x00, 0x00, 0xf0, 0x3d, 0xe0, 0x78,
92
+  0x00, 0x00, 0x00, 0x00, 0xf0, 0x3d, 0xe0, 0x78,
93
+  0x00, 0x00, 0x00, 0x00, 0xf8, 0x79, 0xf0, 0xf8,
94
+  0x00, 0x00, 0x00, 0x00, 0xff, 0xf8, 0xff, 0xf8,
95
+  0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0, 0x7f, 0xf8,
96
+  0x00, 0x00, 0x00, 0x00, 0x0f, 0xe0, 0x3f, 0xf8,
97
+  0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x0e, 0x78,
98
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78,
99
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78,
100
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78,
101
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78,
102
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78,
103
+};

+ 290
- 147
Marlin/example_configurations/K8200/Configuration.h Parādīt failu

@@ -45,8 +45,18 @@
45 45
 #ifndef CONFIGURATION_H
46 46
 #define CONFIGURATION_H
47 47
 
48
-#include "boards.h"
49
-#include "macros.h"
48
+/**
49
+ *
50
+ *  ***********************************
51
+ *  **  ATTENTION TO ALL DEVELOPERS  **
52
+ *  ***********************************
53
+ *
54
+ * You must increment this version number for every significant change such as,
55
+ * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option.
56
+ *
57
+ * Note: Update also Version.h !
58
+ */
59
+#define CONFIGURATION_H_VERSION 010100
50 60
 
51 61
 //===========================================================================
52 62
 //============================= Getting Started =============================
@@ -80,20 +90,26 @@
80 90
 
81 91
 // @section info
82 92
 
83
-#if ENABLED(USE_AUTOMATIC_VERSIONING)
84
-  #include "_Version.h"
85
-#else
86
-  #include "Version.h"
87
-#endif
88
-
89 93
 // User-specified version info of this build to display in [Pronterface, etc] terminal window during
90 94
 // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
91 95
 // build by the user have been successfully uploaded into firmware.
92 96
 #define STRING_CONFIG_H_AUTHOR "(K8200, @CONSULitAS)" // Who made the changes.
93 97
 #define SHOW_BOOTSCREEN
94
-#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during bootup in line 1
95
-//#define STRING_SPLASH_LINE2 STRING_DISTRIBUTION_DATE // will be shown during bootup in line 2
98
+#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during boot in line 1
99
+#define STRING_SPLASH_LINE2 WEBSITE_URL         // will be shown during boot in line 2
96 100
 
101
+//
102
+// *** VENDORS PLEASE READ *****************************************************
103
+//
104
+// Marlin now allow you to have a vendor boot image to be displayed on machine
105
+// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your
106
+// custom boot image and them the default Marlin boot image is shown.
107
+//
108
+// We suggest for you to take advantage of this new feature and keep the Marlin
109
+// boot image unmodified. For an example have a look at the bq Hephestos 2
110
+// example configuration folder.
111
+//
112
+//#define SHOW_CUSTOM_BOOTSCREEN
97 113
 // @section machine
98 114
 
99 115
 // SERIAL_PORT selects which serial port should be used for communication with the host.
@@ -130,17 +146,40 @@
130 146
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
131 147
 //#define SINGLENOZZLE
132 148
 
149
+// A dual extruder that uses a single stepper motor
150
+// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z
151
+//#define SWITCHING_EXTRUDER
152
+#if ENABLED(SWITCHING_EXTRUDER)
153
+  #define SWITCHING_EXTRUDER_SERVO_NR 0
154
+  #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1
155
+  //#define HOTEND_OFFSET_Z {0.0, 0.0}
156
+#endif
157
+
158
+/**
159
+ * "Mixing Extruder"
160
+ *   - Adds a new code, M165, to set the current mix factors.
161
+ *   - Extends the stepping routines to move multiple steppers in proportion to the mix.
162
+ *   - Optional support for Repetier Host M163, M164, and virtual extruder.
163
+ *   - This implementation supports only a single extruder.
164
+ *   - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
165
+ */
166
+//#define MIXING_EXTRUDER
167
+#if ENABLED(MIXING_EXTRUDER)
168
+  #define MIXING_STEPPERS 2        // Number of steppers in your mixing extruder
169
+  #define MIXING_VIRTUAL_TOOLS 16  // Use the Virtual Tool method with M163 and M164
170
+  //#define DIRECT_MIXING_IN_G1    // Allow ABCDHI mix factors in G1 movement commands
171
+#endif
172
+
133 173
 // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
134 174
 // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
135 175
 // For the other hotends it is their distance from the extruder 0 hotend.
136
-//#define EXTRUDER_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
137
-//#define EXTRUDER_OFFSET_Y {0.0, 5.00}  // (in mm) for each extruder, offset of the hotend on the Y axis
176
+//#define HOTEND_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
177
+//#define HOTEND_OFFSET_Y {0.0, 5.00}  // (in mm) for each extruder, offset of the hotend on the Y axis
138 178
 
139 179
 //// The following define selects which power supply you have. Please choose the one that matches your setup
140 180
 // 1 = ATX
141 181
 // 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC)
142 182
 // :{1:'ATX',2:'X-Box 360'}
143
-
144 183
 #define POWER_SUPPLY 1
145 184
 
146 185
 // Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it.
@@ -175,6 +214,7 @@
175 214
 // 13 is 100k Hisens 3950  1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE"
176 215
 // 20 is the PT100 circuit found in the Ultimainboard V2.x
177 216
 // 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950
217
+// 66 is 4.7M High Temperature thermistor from Dyze Design
178 218
 // 70 is the 100K thermistor found in the bq Hephestos 2
179 219
 //
180 220
 //    1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k
@@ -191,7 +231,7 @@
191 231
 //     Use it for Testing or Development purposes. NEVER for production machine.
192 232
 //#define DUMMY_THERMISTOR_998_VALUE 25
193 233
 //#define DUMMY_THERMISTOR_999_VALUE 100
194
-// :{ '0': "Not used", '4': "10k !! do not use for a hotend. Bad resolution at high temp. !!", '1': "100k / 4.7k - EPCOS", '51': "100k / 1k - EPCOS", '6': "100k / 4.7k EPCOS - Not as accurate as Table 1", '5': "100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '7': "100k / 4.7k Honeywell 135-104LAG-J01", '71': "100k / 4.7k Honeywell 135-104LAF-J01", '8': "100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT", '9': "100k / 4.7k GE Sensing AL03006-58.2K-97-G1", '10': "100k / 4.7k RS 198-961", '11': "100k / 4.7k beta 3950 1%", '12': "100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)", '13': "100k Hisens 3950  1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'", '60': "100k Maker's Tool Works Kapton Bed Thermistor beta=3950", '55': "100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '2': "200k / 4.7k - ATC Semitec 204GT-2", '52': "200k / 1k - ATC Semitec 204GT-2", '-3': "Thermocouple + MAX31855 (only for sensor 0)", '-2': "Thermocouple + MAX6675 (only for sensor 0)", '-1': "Thermocouple + AD595", '3': "Mendel-parts / 4.7k", '1047': "Pt1000 / 4.7k", '1010': "Pt1000 / 1k (non standard)", '20': "PT100 (Ultimainboard V2.x)", '147': "Pt100 / 4.7k", '110': "Pt100 / 1k (non-standard)", '998': "Dummy 1", '999': "Dummy 2" }
234
+// :{ '0': "Not used",'1':"100k / 4.7k - EPCOS",'2':"200k / 4.7k - ATC Semitec 204GT-2",'3':"Mendel-parts / 4.7k",'4':"10k !! do not use for a hotend. Bad resolution at high temp. !!",'5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'6':"100k / 4.7k EPCOS - Not as accurate as Table 1",'7':"100k / 4.7k Honeywell 135-104LAG-J01",'8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT",'9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1",'10':"100k / 4.7k RS 198-961",'11':"100k / 4.7k beta 3950 1%",'12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)",'13':"100k Hisens 3950  1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'",'20':"PT100 (Ultimainboard V2.x)",'51':"100k / 1k - EPCOS",'52':"200k / 1k - ATC Semitec 204GT-2",'55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950",'66':"Dyze Design 4.7M High Temperature thermistor",'70':"the 100K thermistor found in the bq Hephestos 2",'71':"100k / 4.7k Honeywell 135-104LAF-J01",'147':"Pt100 / 4.7k",'1047':"Pt1000 / 4.7k",'110':"Pt100 / 1k (non-standard)",'1010':"Pt1000 / 1k (non standard)",'-3':"Thermocouple + MAX31855 (only for sensor 0)",'-2':"Thermocouple + MAX6675 (only for sensor 0)",'-1':"Thermocouple + AD595",'998':"Dummy 1",'999':"Dummy 2" }
195 235
 #define TEMP_SENSOR_0 5
196 236
 #define TEMP_SENSOR_1 0
197 237
 #define TEMP_SENSOR_2 0
@@ -230,10 +270,6 @@
230 270
 #define HEATER_3_MAXTEMP 275
231 271
 #define BED_MAXTEMP 150
232 272
 
233
-// If you want the M105 heater power reported in watts, define the BED_WATTS, and (shared for all extruders) EXTRUDER_WATTS
234
-//#define EXTRUDER_WATTS (12.0*12.0/6.7) // P=U^2/R
235
-//#define BED_WATTS (12.0*12.0/1.1)      // P=U^2/R
236
-
237 273
 //===========================================================================
238 274
 //============================= PID Settings ================================
239 275
 //===========================================================================
@@ -248,8 +284,8 @@
248 284
   //#define PID_DEBUG // Sends debug data to the serial port.
249 285
   //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX
250 286
   //#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
251
-  //#define PID_PARAMS_PER_EXTRUDER // Uses separate PID parameters for each extruder (useful for mismatched extruders)
252
-                                    // Set/get with gcode: M301 E[extruder number, 0-2]
287
+  //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders)
288
+                                  // Set/get with gcode: M301 E[extruder number, 0-2]
253 289
   #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature
254 290
                                   // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max.
255 291
   #define PID_INTEGRAL_DRIVE_MAX PID_MAX  //limit for the integral term
@@ -401,18 +437,79 @@
401 437
 #endif
402 438
 
403 439
 // Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup).
404
-const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
405
-const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
406
-const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
407
-const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
408
-const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
409
-const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
410
-const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
440
+#define X_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
441
+#define Y_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
442
+#define Z_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
443
+#define X_MAX_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
444
+#define Y_MAX_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
445
+#define Z_MAX_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
446
+#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
411 447
 
412 448
 //===========================================================================
413 449
 //============================= Z Probe Options =============================
414 450
 //===========================================================================
415 451
 
452
+//
453
+// Probe Type
454
+// Probes are sensors/switches that are activated / deactivated before/after use.
455
+//
456
+// Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc.
457
+// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below.
458
+//
459
+// Use M851 to set the Z probe vertical offset from the nozzle. Store with M500.
460
+//
461
+
462
+// A Fix-Mounted Probe either doesn't deploy or needs manual deployment.
463
+// For example an inductive probe, or a setup that uses the nozzle to probe.
464
+// An inductive probe must be deactivated to go below
465
+// its trigger-point if hardware endstops are active.
466
+//#define FIX_MOUNTED_PROBE
467
+
468
+// The BLTouch probe emulates a servo probe.
469
+//#define BLTOUCH
470
+
471
+// Z Servo Probe, such as an endstop switch on a rotating arm.
472
+//#define Z_ENDSTOP_SERVO_NR 0
473
+//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles
474
+
475
+// Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
476
+//#define Z_PROBE_SLED
477
+//#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.
478
+
479
+// Z Probe to nozzle (X,Y) offset, relative to (0, 0).
480
+// X and Y offsets must be integers.
481
+//
482
+// In the following example the X and Y offsets are both positive:
483
+// #define X_PROBE_OFFSET_FROM_EXTRUDER 10
484
+// #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
485
+//
486
+//    +-- BACK ---+
487
+//    |           |
488
+//  L |    (+) P  | R <-- probe (20,20)
489
+//  E |           | I
490
+//  F | (-) N (+) | G <-- nozzle (10,10)
491
+//  T |           | H
492
+//    |    (-)    | T
493
+//    |           |
494
+//    O-- FRONT --+
495
+//  (0,0)
496
+#define X_PROBE_OFFSET_FROM_EXTRUDER -25     // X offset: -left  +right  [of the nozzle]
497
+#define Y_PROBE_OFFSET_FROM_EXTRUDER -29     // Y offset: -front +behind [the nozzle]
498
+#define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35  // Z offset: -below +above  [the nozzle]
499
+
500
+// X and Y axis travel speed (mm/m) between probes
501
+#define XY_PROBE_SPEED 8000
502
+// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
503
+#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
504
+// Speed for the "accurate" probe of each point
505
+#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
506
+// Use double touch for probing
507
+//#define PROBE_DOUBLE_TOUCH
508
+
509
+//
510
+// Allen Key Probe is defined in the Delta example configurations.
511
+//
512
+
416 513
 // Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z Probe and a Z-min-endstop on the same machine.
417 514
 // With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing.
418 515
 //
@@ -424,7 +521,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
424 521
 // To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN.
425 522
 //
426 523
 // For a servo-based Z probe, you must set up servo support below, including
427
-// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES.
524
+// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and Z_SERVO_ANGLES.
428 525
 //
429 526
 // - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin.
430 527
 // - Use 5V for powered (usu. inductive) sensors.
@@ -457,6 +554,21 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
457 554
 // If you're using the Z MIN endstop connector for your Z probe, this has no effect.
458 555
 //#define DISABLE_Z_MIN_PROBE_ENDSTOP
459 556
 
557
+// Enable Z Probe Repeatability test to see how accurate your probe is
558
+//#define Z_MIN_PROBE_REPEATABILITY_TEST
559
+
560
+//
561
+// Probe Raise options provide clearance for the probe to deploy, stow, and travel.
562
+//
563
+#define Z_PROBE_DEPLOY_HEIGHT 15 // Raise to make room for the probe to deploy / stow
564
+#define Z_PROBE_TRAVEL_HEIGHT 5  // Raise between probing points.
565
+
566
+//
567
+// For M851 give a range for adjusting the Z probe offset
568
+//
569
+#define Z_PROBE_OFFSET_RANGE_MIN -20
570
+#define Z_PROBE_OFFSET_RANGE_MAX 20
571
+
460 572
 // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
461 573
 // :{0:'Low',1:'High'}
462 574
 #define X_ENABLE_ON 0
@@ -493,8 +605,9 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
493 605
 #define INVERT_E3_DIR true
494 606
 
495 607
 // @section homing
496
-//#define MIN_Z_HEIGHT_FOR_HOMING 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
497
-                                    // Be sure you have this distance over your Z_MAX_POS in case.
608
+
609
+//#define Z_HOMING_HEIGHT 4  // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
610
+                             // Be sure you have this distance over your Z_MAX_POS in case.
498 611
 
499 612
 // ENDSTOP SETTINGS:
500 613
 // Sets direction of endstops when homing; 1=MAX, -1=MIN
@@ -524,7 +637,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
524 637
                                  // It is assumed that when logic high = filament available
525 638
                                  //                    when logic  low = filament ran out
526 639
 #if ENABLED(FILAMENT_RUNOUT_SENSOR)
527
-  const bool FIL_RUNOUT_INVERTING = true;  // Should be uncommented and true or false should assigned
640
+  const bool FIL_RUNOUT_INVERTING = false; // set to true to invert the logic of the sensor.
528 641
   #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined.
529 642
   #define FILAMENT_RUNOUT_SCRIPT "M600"
530 643
 #endif
@@ -536,10 +649,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
536 649
 //#define MESH_BED_LEVELING    // Enable mesh bed leveling.
537 650
 
538 651
 #if ENABLED(MESH_BED_LEVELING)
539
-  #define MESH_MIN_X 10
540
-  #define MESH_MAX_X (X_MAX_POS - (MESH_MIN_X))
541
-  #define MESH_MIN_Y 10
542
-  #define MESH_MAX_Y (Y_MAX_POS - (MESH_MIN_Y))
652
+  #define MESH_INSET 10        // Mesh inset margin on print area
543 653
   #define MESH_NUM_X_POINTS 3  // Don't use more than 7 points per axis, implementation limited.
544 654
   #define MESH_NUM_Y_POINTS 3
545 655
   #define MESH_HOME_SEARCH_Z 4  // Z after Home, bed somewhere below but above 0.0.
@@ -561,8 +671,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
561 671
 // @section bedlevel
562 672
 
563 673
 //#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line)
674
+
675
+// Enable this feature to get detailed logging of G28, G29, M48, etc.
676
+// Logging is off by default. Enable this logging feature with 'M111 S32'.
677
+// NOTE: Requires a huge amount of PROGMEM.
564 678
 //#define DEBUG_LEVELING_FEATURE
565
-#define Z_MIN_PROBE_REPEATABILITY_TEST  // If not commented out, Z Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
566 679
 
567 680
 #if ENABLED(AUTO_BED_LEVELING_FEATURE)
568 681
 
@@ -605,58 +718,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
605 718
     #define ABL_PROBE_PT_3_X 170
606 719
     #define ABL_PROBE_PT_3_Y 20
607 720
 
608
-  #endif // AUTO_BED_LEVELING_GRID
609
-
610
-  // Z Probe to nozzle (X,Y) offset, relative to (0, 0).
611
-  // X and Y offsets must be integers.
612
-  //
613
-  // In the following example the X and Y offsets are both positive:
614
-  // #define X_PROBE_OFFSET_FROM_EXTRUDER 10
615
-  // #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
616
-  //
617
-  //    +-- BACK ---+
618
-  //    |           |
619
-  //  L |    (+) P  | R <-- probe (20,20)
620
-  //  E |           | I
621
-  //  F | (-) N (+) | G <-- nozzle (10,10)
622
-  //  T |           | H
623
-  //    |    (-)    | T
624
-  //    |           |
625
-  //    O-- FRONT --+
626
-  //  (0,0)
627
-  #define X_PROBE_OFFSET_FROM_EXTRUDER -25     // X offset: -left  +right  [of the nozzle]
628
-  #define Y_PROBE_OFFSET_FROM_EXTRUDER -29     // Y offset: -front +behind [the nozzle]
629
-  #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35  // Z offset: -below +above  [the nozzle]
630
-
631
-  #define XY_TRAVEL_SPEED 8000         // X and Y axis travel speed between probes, in mm/min.
632
-
633
-  #define Z_RAISE_BEFORE_PROBING 15   // How much the Z axis will be raised before traveling to the first probing point.
634
-  #define Z_RAISE_BETWEEN_PROBINGS 5  // How much the Z axis will be raised when traveling from between next probing points.
635
-  #define Z_RAISE_AFTER_PROBING 15    // How much the Z axis will be raised after the last probing point.
721
+  #endif // !AUTO_BED_LEVELING_GRID
636 722
 
637 723
   //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine.
638 724
                                                                              // Useful to retract a deployable Z probe.
639 725
 
640
-  // Probes are sensors/switches that need to be activated before they can be used
641
-  // and deactivated after their use.
642
-  // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE
643
-
644
-  // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER
645
-  // when the hardware endstops are active.
646
-  //#define FIX_MOUNTED_PROBE
647
-
648
-  // A Servo Probe can be defined in the servo section below.
649
-
650
-  // An Allen Key Probe is currently predefined only in the delta example configurations.
651
-
652
-  // Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
653
-  //#define Z_PROBE_SLED
654
-  //#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.
655
-
656
-  // A Mechanical Probe is any probe that either doesn't deploy or needs manual deployment
657
-  // For example any setup that uses the nozzle itself as a probe.
658
-  //#define MECHANICAL_PROBE
659
-
660 726
   // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing,
661 727
   // it is highly recommended you also enable Z_SAFE_HOMING below!
662 728
 
@@ -665,18 +731,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
665 731
 
666 732
 // @section homing
667 733
 
668
-// The position of the homing switches
669
-//#define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used
670
-//#define BED_CENTER_AT_0_0  // If defined, the center of the bed is at (X=0, Y=0)
671
-
672
-// Manual homing switch locations:
673
-// For deltabots this means top and center of the Cartesian print volume.
674
-#if ENABLED(MANUAL_HOME_POSITIONS)
675
-  #define MANUAL_X_HOME_POS 0
676
-  #define MANUAL_Y_HOME_POS 0
677
-  #define MANUAL_Z_HOME_POS 0
678
-  //#define MANUAL_Z_HOME_POS 402 // For delta: Distance between nozzle and print surface after homing.
679
-#endif
734
+// The center of the bed is at (X=0, Y=0)
735
+//#define BED_CENTER_AT_0_0
736
+
737
+// Manually set the home position. Leave these undefined for automatic settings.
738
+// For DELTA this is the top-center of the Cartesian print volume.
739
+//#define MANUAL_X_HOME_POS 0
740
+//#define MANUAL_Y_HOME_POS 0
741
+//#define MANUAL_Z_HOME_POS 0 // Distance between the nozzle to printbed after homing
680 742
 
681 743
 // Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
682 744
 //
@@ -684,7 +746,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
684 746
 //
685 747
 // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
686 748
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
687
-// - Position the Z probe in a defined XY point before Z Homing when homing all axes (G28).
749
+// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
688 750
 // - Prevent Z homing when the Z probe is outside bed area.
689 751
 //#define Z_SAFE_HOMING
690 752
 
@@ -693,14 +755,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
693 755
   #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2)    // Y point for Z homing when homing all axis (G28).
694 756
 #endif
695 757
 
758
+// Homing speeds (mm/m)
759
+#define HOMING_FEEDRATE_XY (50*60)
760
+#define HOMING_FEEDRATE_Z  (4*60)
696 761
 
697
-// @section movement
698
-
699
-/**
700
- * MOVEMENT SETTINGS
701
- */
702
-
703
-#define HOMING_FEEDRATE {50*60, 50*60, 4*60, 0}  // set the homing speeds (mm/min)
762
+//
763
+// MOVEMENT SETTINGS
764
+// @section motion
765
+//
704 766
 
705 767
 // default settings
706 768
 
@@ -722,18 +784,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
722 784
 //============================= Additional Features ===========================
723 785
 //=============================================================================
724 786
 
725
-// @section more
726
-
727
-// Custom M code points
728
-#define CUSTOM_M_CODES
729
-#if ENABLED(CUSTOM_M_CODES)
730
-  #if ENABLED(AUTO_BED_LEVELING_FEATURE)
731
-    #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851
732
-    #define Z_PROBE_OFFSET_RANGE_MIN -20
733
-    #define Z_PROBE_OFFSET_RANGE_MAX 20
734
-  #endif
735
-#endif
736
-
737 787
 // @section extras
738 788
 
739 789
 //
@@ -765,22 +815,107 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
765 815
 //
766 816
 //#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose
767 817
 
818
+//
819
+// G20/G21 Inch mode support
820
+//
821
+//#define INCH_MODE_SUPPORT
822
+
823
+//
824
+// M149 Set temperature units support
825
+//
826
+//#define TEMPERATURE_UNITS_SUPPORT
827
+
768 828
 // @section temperature
769 829
 
770 830
 // Preheat Constants
771
-#define PLA_PREHEAT_HOTEND_TEMP 190
772
-#define PLA_PREHEAT_HPB_TEMP 50 // K8200: set back to 70 if you have an upgraded heatbed power supply
773
-#define PLA_PREHEAT_FAN_SPEED 0   // Insert Value between 0 and 255
831
+#define PREHEAT_1_TEMP_HOTEND 190
832
+#define PREHEAT_1_TEMP_BED     50 // K8200: set back to 70 if you have an upgraded heatbed power supply
833
+#define PREHEAT_1_FAN_SPEED     0 // Value from 0 to 255
834
+
835
+#define PREHEAT_2_TEMP_HOTEND 240
836
+#define PREHEAT_2_TEMP_BED     60 // K8200: set back to 110 if you have an upgraded heatbed power supply
837
+#define PREHEAT_2_FAN_SPEED     0 // Value from 0 to 255
774 838
 
775
-#define ABS_PREHEAT_HOTEND_TEMP 240
776
-#define ABS_PREHEAT_HPB_TEMP 60 // K8200: set back to 110 if you have an upgraded heatbed power supply
777
-#define ABS_PREHEAT_FAN_SPEED 0   // Insert Value between 0 and 255
839
+//
840
+// Nozzle Park -- EXPERIMENTAL
841
+//
842
+// When enabled allows the user to define a special XYZ position, inside the
843
+// machine's topology, to park the nozzle when idle or when receiving the G27
844
+// command.
845
+//
846
+// The "P" paramenter controls what is the action applied to the Z axis:
847
+//    P0: (Default) If current Z-pos is lower than Z-park then the nozzle will
848
+//        be raised to reach Z-park height.
849
+//
850
+//    P1: No matter the current Z-pos, the nozzle will be raised/lowered to
851
+//        reach Z-park height.
852
+//
853
+//    P2: The nozzle height will be raised by Z-park amount but never going over
854
+//        the machine's limit of Z_MAX_POS.
855
+//
856
+//#define NOZZLE_PARK_FEATURE
857
+
858
+#if ENABLED(NOZZLE_PARK_FEATURE)
859
+  // Specify a park position as { X, Y, Z }
860
+  #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 }
861
+#endif
862
+
863
+//
864
+// Clean Nozzle Feature -- EXPERIMENTAL
865
+//
866
+// When enabled allows the user to send G12 to start the nozzle cleaning
867
+// process, the G-Code accepts two parameters:
868
+//   "P" for pattern selection
869
+//   "S" for defining the number of strokes/repetitions
870
+//
871
+// Available list of patterns:
872
+//   P0: This is the default pattern, this process requires a sponge type
873
+//       material at a fixed bed location, the cleaning process is based on
874
+//       "strokes" i.e. back-and-forth movements between the starting and end
875
+//       points.
876
+//
877
+//   P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T"
878
+//       defines the number of zig-zag triangles to be done. "S" defines the
879
+//       number of strokes aka one back-and-forth movement. As an example
880
+//       sending "G12 P1 S1 T3" will execute:
881
+//
882
+//          --
883
+//         |  (X0, Y1) |     /\        /\        /\     | (X1, Y1)
884
+//         |           |    /  \      /  \      /  \    |
885
+//       A |           |   /    \    /    \    /    \   |
886
+//         |           |  /      \  /      \  /      \  |
887
+//         |  (X0, Y0) | /        \/        \/        \ | (X1, Y0)
888
+//          --         +--------------------------------+
889
+//                       |________|_________|_________|
890
+//                           T1        T2        T3
891
+//
892
+// Caveats: End point Z should use the same value as Start point Z.
893
+//
894
+// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments
895
+// may change to add new functionality like different wipe patterns.
896
+//
897
+//#define NOZZLE_CLEAN_FEATURE
898
+
899
+#if ENABLED(NOZZLE_CLEAN_FEATURE)
900
+  // Number of pattern repetitions
901
+  #define NOZZLE_CLEAN_STROKES  12
902
+
903
+  // Specify positions as { X, Y, Z }
904
+  #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)}
905
+  #define NOZZLE_CLEAN_END_POINT   {100, 60, (Z_MIN_POS + 1)}
906
+
907
+  // Moves the nozzle to the initial position
908
+  #define NOZZLE_CLEAN_GOBACK
909
+#endif
778 910
 
779 911
 //
780 912
 // Print job timer
781 913
 //
782 914
 // Enable this option to automatically start and stop the
783
-// print job timer when M104 and M109 commands are received.
915
+// print job timer when M104/M109/M190 commands are received.
916
+// M104 (extruder without wait) - high temp = none, low temp = stop timer
917
+// M109 (extruder with wait) - high temp = start timer, low temp = stop timer
918
+// M190 (bed with wait) - high temp = start timer, low temp = none
784 919
 //
785 920
 // In all cases the timer can be started and stopped using
786 921
 // the following commands:
@@ -813,8 +948,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
813 948
 //
814 949
 // Here you may choose the language used by Marlin on the LCD menus, the following
815 950
 // list of languages are available:
816
-//    en, pl, fr, de, es, ru, bg, it, pt, pt_utf8, pt-br, pt-br_utf8,
817
-//    fi, an, nl, ca, eu, kana, kana_utf8, cn, cz, test
951
+//    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
952
+//    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
953
+//
954
+// :{'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','test':'TEST'}
818 955
 //
819 956
 #define LCD_LANGUAGE en
820 957
 
@@ -962,6 +1099,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
962 1099
 //#define ULTIPANEL
963 1100
 
964 1101
 //
1102
+// Cartesio UI
1103
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1104
+//
1105
+//#define CARTESIO_UI
1106
+
1107
+//
965 1108
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
966 1109
 // http://reprap.org/wiki/PanelOne
967 1110
 //
@@ -974,6 +1117,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
974 1117
 //#define MAKRPANEL
975 1118
 
976 1119
 //
1120
+// ReprapWorld Graphical LCD
1121
+// https://reprapworld.com/?products_details&products_id/1218
1122
+//
1123
+//#define REPRAPWORLD_GRAPHICAL_LCD
1124
+
1125
+//
977 1126
 // Activate one of these if you have a Panucatt Devices
978 1127
 // Viki 2.0 or mini Viki with Graphic LCD
979 1128
 // http://panucatt.com
@@ -1023,7 +1172,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1023 1172
 // is pressed, a value of 10.0 means 10mm per click.
1024 1173
 //
1025 1174
 //#define REPRAPWORLD_KEYPAD
1026
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1175
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1027 1176
 
1028 1177
 //
1029 1178
 // RigidBot Panel V1.0
@@ -1084,6 +1233,15 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1084 1233
 //#define U8GLIB_SSD1306
1085 1234
 
1086 1235
 //
1236
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1237
+//
1238
+//#define SAV_3DGLCD
1239
+#if ENABLED(SAV_3DGLCD)
1240
+  //#define U8GLIB_SSD1306
1241
+  #define U8GLIB_SH1106
1242
+#endif
1243
+
1244
+//
1087 1245
 // CONTROLLER TYPE: Shift register panels
1088 1246
 //
1089 1247
 // 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH
@@ -1111,7 +1269,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1111 1269
 // at zero value, there are 128 effective control positions.
1112 1270
 #define SOFT_PWM_SCALE 0
1113 1271
 
1114
-// Temperature status LEDs that display the hotend and bet temperature.
1272
+// Temperature status LEDs that display the hotend and bed temperature.
1115 1273
 // If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
1116 1274
 // Otherwise the RED led is on. There is 1C hysteresis.
1117 1275
 //#define TEMP_STAT_LEDS
@@ -1143,28 +1301,16 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1143 1301
 //
1144 1302
 //#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
1145 1303
 
1146
-// Servo Endstops
1147
-//
1148
-// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes.
1149
-// Use M851 to set the Z probe vertical offset from the nozzle. Store that setting with M500.
1150
-//
1151
-//#define X_ENDSTOP_SERVO_NR 1
1152
-//#define Y_ENDSTOP_SERVO_NR 2
1153
-//#define Z_ENDSTOP_SERVO_NR 0
1154
-//#define SERVO_ENDSTOP_ANGLES {{0,0}, {0,0}, {70,0}} // X,Y,Z Axis Extend and Retract angles
1304
+// Delay (in microseconds) before the next move will start, to give the servo time to reach its target angle.
1305
+// 300ms is a good value but you can try less delay.
1306
+// If the servo can't reach the requested position, increase it.
1307
+#define SERVO_DELAY 300
1155 1308
 
1156 1309
 // Servo deactivation
1157 1310
 //
1158 1311
 // With this option servos are powered only during movement, then turned off to prevent jitter.
1159 1312
 //#define DEACTIVATE_SERVOS_AFTER_MOVE
1160 1313
 
1161
-#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE)
1162
-  // Delay (in microseconds) before turning the servo off. This depends on the servo speed.
1163
-  // 300ms is a good value but you can try less delay.
1164
-  // If the servo can't reach the requested position, increase it.
1165
-  #define SERVO_DEACTIVATION_DELAY 300
1166
-#endif
1167
-
1168 1314
 /**********************************************************************\
1169 1315
  * Support for a filament diameter sensor
1170 1316
  * Also allows adjustment of diameter at print time (vs  at slicing)
@@ -1195,7 +1341,4 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1195 1341
   //#define FILAMENT_LCD_DISPLAY
1196 1342
 #endif
1197 1343
 
1198
-#include "Configuration_adv.h"
1199
-#include "thermistortables.h"
1200
-
1201
-#endif //CONFIGURATION_H
1344
+#endif // CONFIGURATION_H

+ 148
- 47
Marlin/example_configurations/K8200/Configuration_adv.h Parādīt failu

@@ -39,7 +39,18 @@
39 39
 #ifndef CONFIGURATION_ADV_H
40 40
 #define CONFIGURATION_ADV_H
41 41
 
42
-#include "Conditionals.h"
42
+/**
43
+ *
44
+ *  ***********************************
45
+ *  **  ATTENTION TO ALL DEVELOPERS  **
46
+ *  ***********************************
47
+ *
48
+ * You must increment this version number for every significant change such as,
49
+ * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option.
50
+ *
51
+ * Note: Update also Version.h !
52
+ */
53
+#define CONFIGURATION_ADV_H_VERSION 010100
43 54
 
44 55
 // @section temperature
45 56
 
@@ -108,8 +119,8 @@
108 119
 #if ENABLED(PIDTEMP)
109 120
   // this adds an experimental additional term to the heating power, proportional to the extrusion speed.
110 121
   // if Kc is chosen well, the additional required power due to increased melting should be compensated.
111
-  #define PID_ADD_EXTRUSION_RATE
112
-  #if ENABLED(PID_ADD_EXTRUSION_RATE)
122
+  //#define PID_EXTRUSION_SCALING
123
+  #if ENABLED(PID_EXTRUSION_SCALING)
113 124
     #define DEFAULT_Kc (100) //heating power=Kc*(e_speed)
114 125
     #define LPQ_MAX_LEN 50
115 126
   #endif
@@ -134,15 +145,42 @@
134 145
 //The M105 command return, besides traditional information, the ADC value read from temperature sensors.
135 146
 //#define SHOW_TEMP_ADC_VALUES
136 147
 
148
+/**
149
+ * High Temperature Thermistor Support
150
+ *
151
+ * Thermistors able to support high temperature tend to have a hard time getting
152
+ * good readings at room and lower temperatures. This means HEATER_X_RAW_LO_TEMP
153
+ * will probably be caught when the heating element first turns on during the
154
+ * preheating process, which will trigger a min_temp_error as a safety measure
155
+ * and force stop everything.
156
+ * To circumvent this limitation, we allow for a preheat time (during which,
157
+ * min_temp_error won't be triggered) and add a min_temp buffer to handle
158
+ * aberrant readings.
159
+ *
160
+ * If you want to enable this feature for your hotend thermistor(s)
161
+ * uncomment and set values > 0 in the constants below
162
+ */
163
+
164
+// The number of consecutive low temperature errors that can occur
165
+// before a min_temp_error is triggered. (Shouldn't be more than 10.)
166
+//#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 0
167
+
168
+// The number of milliseconds a hotend will preheat before starting to check
169
+// the temperature. This value should NOT be set to the time it takes the
170
+// hot end to reach the target temperature, but the time it takes to reach
171
+// the minimum temperature your thermistor can read. The lower the better/safer.
172
+// This shouldn't need to be more than 30 seconds (30000)
173
+//#define MILLISECONDS_PREHEAT_TIME 0
174
+
137 175
 // @section extruder
138 176
 
139 177
 //  extruder run-out prevention.
140 178
 //if the machine is idle, and the temperature over MINTEMP, every couple of SECONDS some filament is extruded
141 179
 //#define EXTRUDER_RUNOUT_PREVENT
142 180
 #define EXTRUDER_RUNOUT_MINTEMP 190
143
-#define EXTRUDER_RUNOUT_SECONDS 30.
144
-#define EXTRUDER_RUNOUT_ESTEPS 14. //mm filament
145
-#define EXTRUDER_RUNOUT_SPEED 1500.  //extrusion speed
181
+#define EXTRUDER_RUNOUT_SECONDS 30
182
+#define EXTRUDER_RUNOUT_ESTEPS 14   // mm filament
183
+#define EXTRUDER_RUNOUT_SPEED 1500  // extrusion speed
146 184
 #define EXTRUDER_RUNOUT_EXTRUDE 100
147 185
 
148 186
 // @section temperature
@@ -183,24 +221,42 @@
183 221
 #define EXTRUDER_AUTO_FAN_TEMPERATURE 50
184 222
 #define EXTRUDER_AUTO_FAN_SPEED   255  // == full speed
185 223
 
186
-
187 224
 //===========================================================================
188
-//=============================Mechanical Settings===========================
225
+//============================ Mechanical Settings ==========================
189 226
 //===========================================================================
190 227
 
191 228
 // @section homing
192 229
 
193
-#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing
230
+// If you want endstops to stay on (by default) even when not homing
231
+// enable this option. Override at any time with M120, M121.
232
+//#define ENDSTOPS_ALWAYS_ON_DEFAULT
194 233
 
195 234
 // @section extras
196 235
 
197 236
 //#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
198 237
 
238
+// Dual X Steppers
239
+// Uncomment this option to drive two X axis motors.
240
+// The next unused E driver will be assigned to the second X stepper.
241
+//#define X_DUAL_STEPPER_DRIVERS
242
+#if ENABLED(X_DUAL_STEPPER_DRIVERS)
243
+  // Set true if the two X motors need to rotate in opposite directions
244
+  #define INVERT_X2_VS_X_DIR true
245
+#endif
246
+
247
+
248
+// Dual Y Steppers
249
+// Uncomment this option to drive two Y axis motors.
250
+// The next unused E driver will be assigned to the second Y stepper.
251
+//#define Y_DUAL_STEPPER_DRIVERS
252
+#if ENABLED(Y_DUAL_STEPPER_DRIVERS)
253
+  // Set true if the two Y motors need to rotate in opposite directions
254
+  #define INVERT_Y2_VS_Y_DIR true
255
+#endif
256
+
199 257
 // A single Z stepper driver is usually used to drive 2 stepper motors.
200
-// Uncomment this define to utilize a separate stepper driver for each Z axis motor.
201
-// Only a few motherboards support this, like RAMPS, which have dual extruder support (the 2nd, often unused, extruder driver is used
202
-// to control the 2nd Z axis stepper motor). The pins are currently only defined for a RAMPS motherboards.
203
-// On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder.
258
+// Uncomment this option to use a separate stepper driver for each Z axis motor.
259
+// The next unused E driver will be assigned to the second Z stepper.
204 260
 //#define Z_DUAL_STEPPER_DRIVERS
205 261
 
206 262
 #if ENABLED(Z_DUAL_STEPPER_DRIVERS)
@@ -222,14 +278,6 @@
222 278
 
223 279
 #endif // Z_DUAL_STEPPER_DRIVERS
224 280
 
225
-// Same again but for Y Axis.
226
-//#define Y_DUAL_STEPPER_DRIVERS
227
-
228
-#if ENABLED(Y_DUAL_STEPPER_DRIVERS)
229
-  // Define if the two Y drives need to rotate in opposite directions
230
-  #define INVERT_Y2_VS_Y_DIR true
231
-#endif
232
-
233 281
 // Enable this for dual x-carriage printers.
234 282
 // A dual x-carriage design has the advantage that the inactive extruder can be parked which
235 283
 // prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
@@ -243,7 +291,7 @@
243 291
   #define X2_MAX_POS 353    // set maximum to the distance between toolheads when both heads are homed
244 292
   #define X2_HOME_DIR 1     // the second X-carriage always homes to the maximum endstop position
245 293
   #define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position
246
-      // However: In this mode the EXTRUDER_OFFSET_X value for the second extruder provides a software
294
+      // However: In this mode the HOTEND_OFFSET_X value for the second extruder provides a software
247 295
       // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops
248 296
       // without modifying the firmware (through the "M218 T1 X???" command).
249 297
       // Remember: you should set the second extruder x-offset to 0 in your slicer.
@@ -285,7 +333,10 @@
285 333
 
286 334
 #define AXIS_RELATIVE_MODES {false, false, false, false}
287 335
 
288
-//By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
336
+// Allow duplication mode with a basic dual-nozzle extruder
337
+//#define DUAL_NOZZLE_DUPLICATION_MODE
338
+
339
+// By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
289 340
 #define INVERT_X_STEP_PIN false
290 341
 #define INVERT_Y_STEP_PIN false
291 342
 #define INVERT_Z_STEP_PIN false
@@ -357,6 +408,9 @@
357 408
 
358 409
 // @section lcd
359 410
 
411
+// Include a page of printer information in the LCD Main Menu
412
+//#define LCD_INFO_MENU
413
+
360 414
 #if ENABLED(SDSUPPORT)
361 415
 
362 416
   // Some RAMPS and other boards don't detect when an SD card is inserted. You can work
@@ -394,7 +448,6 @@
394 448
   // This option allows you to abort SD printing when any endstop is triggered.
395 449
   // This feature must be enabled with "M540 S1" or from the LCD menu.
396 450
   // To have any effect, endstops must be enabled during SD printing.
397
-  // With ENDSTOPS_ONLY_FOR_HOMING you must send "M120" to enable endstops.
398 451
   //#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED
399 452
 
400 453
 #endif // SDSUPPORT
@@ -410,9 +463,10 @@
410 463
   //#define USE_SMALL_INFOFONT
411 464
 #endif // DOGLCD
412 465
 
413
-// @section more
466
+// @section safety
414 467
 
415
-// The hardware watchdog should reset the microcontroller disabling all outputs, in case the firmware gets stuck and doesn't do temperature regulation.
468
+// The hardware watchdog should reset the microcontroller disabling all outputs,
469
+// in case the firmware gets stuck and doesn't do temperature regulation.
416 470
 #define USE_WATCHDOG
417 471
 
418 472
 #if ENABLED(USE_WATCHDOG)
@@ -451,6 +505,27 @@
451 505
   #define D_FILAMENT 2.85
452 506
 #endif
453 507
 
508
+// Implementation of a linear pressure control
509
+// Assumption: advance = k * (delta velocity)
510
+// K=0 means advance disabled. A good value for a gregs wade extruder will be around K=75
511
+//#define LIN_ADVANCE
512
+
513
+#if ENABLED(LIN_ADVANCE)
514
+  #define LIN_ADVANCE_K 75
515
+#endif
516
+
517
+// @section leveling
518
+
519
+// Default mesh area is an area with an inset margin on the print area.
520
+// Below are the macros that are used to define the borders for the mesh area,
521
+// made available here for specialized needs, ie dual extruder setup.
522
+#if ENABLED(MESH_BED_LEVELING)
523
+  #define MESH_MIN_X (X_MIN_POS + MESH_INSET)
524
+  #define MESH_MAX_X (X_MAX_POS - (MESH_INSET))
525
+  #define MESH_MIN_Y (Y_MIN_POS + MESH_INSET)
526
+  #define MESH_MAX_Y (Y_MAX_POS - (MESH_INSET))
527
+#endif
528
+
454 529
 // @section extras
455 530
 
456 531
 // Arc interpretation settings:
@@ -482,12 +557,27 @@ const unsigned int dropsegments = 2; //everything with less than this number of
482 557
   #define BLOCK_BUFFER_SIZE 32 // maximize block buffer
483 558
 #endif
484 559
 
485
-// @section more
560
+// @section serial
486 561
 
487
-//The ASCII buffer for receiving from the serial:
562
+// The ASCII buffer for serial input
488 563
 #define MAX_CMD_SIZE 96
489 564
 #define BUFSIZE 4
490 565
 
566
+// Transfer Buffer Size
567
+// To save 386 bytes of PROGMEM (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0.
568
+// To buffer a simple "ok" you need 4 bytes.
569
+// For ADVANCED_OK (M105) you need 32 bytes.
570
+// For debug-echo: 128 bytes for the optimal speed.
571
+// Other output doesn't need to be that speedy.
572
+// :[0,2,4,8,16,32,64,128,256]
573
+#define TX_BUFFER_SIZE 0
574
+
575
+// Enable an emergency-command parser to intercept certain commands as they
576
+// enter the serial receive buffer, so they cannot be blocked.
577
+// Currently handles M108, M112, M410
578
+// Does not work on boards using AT90USB (USBCON) processors!
579
+//#define EMERGENCY_PARSER
580
+
491 581
 // Bad Serial-connections can miss a received command by sending an 'ok'
492 582
 // Therefore some clients abort after 30 seconds in a timeout.
493 583
 // Some other clients start sending commands while receiving a 'wait'.
@@ -519,16 +609,30 @@ const unsigned int dropsegments = 2; //everything with less than this number of
519 609
 
520 610
 // Add support for experimental filament exchange support M600; requires display
521 611
 #if ENABLED(ULTIPANEL)
522
-  //#define FILAMENTCHANGEENABLE
523
-  #if ENABLED(FILAMENTCHANGEENABLE)
524
-    #define FILAMENTCHANGE_XPOS 3
525
-    #define FILAMENTCHANGE_YPOS 3
526
-    #define FILAMENTCHANGE_ZADD 10
527
-    #define FILAMENTCHANGE_FIRSTRETRACT -2
528
-    #define FILAMENTCHANGE_FINALRETRACT -100
529
-    #define AUTO_FILAMENT_CHANGE                //This extrude filament until you press the button on LCD
530
-    #define AUTO_FILAMENT_CHANGE_LENGTH 0.04    //Extrusion length on automatic extrusion loop
531
-    #define AUTO_FILAMENT_CHANGE_FEEDRATE 300   //Extrusion feedrate (mm/min) on automatic extrusion loop
612
+  // #define FILAMENT_CHANGE_FEATURE             // Enable filament exchange menu and M600 g-code (used for runout sensor too)
613
+  #if ENABLED(FILAMENT_CHANGE_FEATURE)
614
+    #define FILAMENT_CHANGE_X_POS 3             // X position of hotend
615
+    #define FILAMENT_CHANGE_Y_POS 3             // Y position of hotend
616
+    #define FILAMENT_CHANGE_Z_ADD 10            // Z addition of hotend (lift)
617
+    #define FILAMENT_CHANGE_XY_FEEDRATE 100     // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
618
+    #define FILAMENT_CHANGE_Z_FEEDRATE 5        // Z axis feedrate in mm/s (not used for delta printers)
619
+    #define FILAMENT_CHANGE_RETRACT_LENGTH 2    // Initial retract in mm
620
+                                                // It is a short retract used immediately after print interrupt before move to filament exchange position
621
+    #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
622
+    #define FILAMENT_CHANGE_UNLOAD_LENGTH 100   // Unload filament length from hotend in mm
623
+                                                // Longer length for bowden printers to unload filament from whole bowden tube,
624
+                                                // shorter lenght for printers without bowden to unload filament from extruder only,
625
+                                                // 0 to disable unloading for manual unloading
626
+    #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10  // Unload filament feedrate in mm/s - filament unloading can be fast
627
+    #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
628
+                                                // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
629
+                                                // Short or zero length for printers without bowden where loading is not used
630
+    #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
631
+    #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
632
+                                                // 0 to disable for manual extrusion
633
+                                                // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
634
+                                                // or until outcoming filament color is not clear for filament color change
635
+    #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
532 636
   #endif
533 637
 #endif
534 638
 
@@ -674,9 +778,9 @@ const unsigned int dropsegments = 2; //everything with less than this number of
674 778
  * devices on the bus.
675 779
  *
676 780
  * ; Example #1
677
- * ; This macro send the string "Marlin" to the slave device with address 0x63
781
+ * ; This macro send the string "Marlin" to the slave device with address 0x63 (99)
678 782
  * ; It uses multiple M155 commands with one B<base 10> arg
679
- * M155 A63  ; Target slave address
783
+ * M155 A99  ; Target slave address
680 784
  * M155 B77  ; M
681 785
  * M155 B97  ; a
682 786
  * M155 B114 ; r
@@ -686,19 +790,16 @@ const unsigned int dropsegments = 2; //everything with less than this number of
686 790
  * M155 S1   ; Send the current buffer
687 791
  *
688 792
  * ; Example #2
689
- * ; Request 6 bytes from slave device with address 0x63
690
- * M156 A63 B5
793
+ * ; Request 6 bytes from slave device with address 0x63 (99)
794
+ * M156 A99 B5
691 795
  *
692 796
  * ; Example #3
693 797
  * ; Example serial output of a M156 request
694
- * echo:i2c-reply: from:63 bytes:5 data:hello
798
+ * echo:i2c-reply: from:99 bytes:5 data:hello
695 799
  */
696 800
 
697 801
 // @section i2cbus
698 802
 
699 803
 //#define EXPERIMENTAL_I2CBUS
700 804
 
701
-#include "Conditionals.h"
702
-#include "SanityCheck.h"
703
-
704
-#endif //CONFIGURATION_ADV_H
805
+#endif // CONFIGURATION_ADV_H

Marlin/example_configurations/K8200/readme.md → Marlin/example_configurations/K8200/README.md Parādīt failu


+ 1327
- 0
Marlin/example_configurations/K8400/Configuration.h
Failā izmaiņas netiks attēlotas, jo tās ir par lielu
Parādīt failu


+ 799
- 0
Marlin/example_configurations/K8400/Configuration_adv.h Parādīt failu

@@ -0,0 +1,799 @@
1
+/**
2
+ * Marlin 3D Printer Firmware
3
+ * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
4
+ *
5
+ * Based on Sprinter and grbl.
6
+ * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
7
+ *
8
+ * This program is free software: you can redistribute it and/or modify
9
+ * it under the terms of the GNU General Public License as published by
10
+ * the Free Software Foundation, either version 3 of the License, or
11
+ * (at your option) any later version.
12
+ *
13
+ * This program is distributed in the hope that it will be useful,
14
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
+ * GNU General Public License for more details.
17
+ *
18
+ * You should have received a copy of the GNU General Public License
19
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
+ *
21
+ */
22
+
23
+/**
24
+ * Configuration_adv.h
25
+ *
26
+ * Advanced settings.
27
+ * Only change these if you know exactly what you're doing.
28
+ * Some of these settings can damage your printer if improperly set!
29
+ *
30
+ * Basic settings can be found in Configuration.h
31
+ *
32
+ */
33
+#ifndef CONFIGURATION_ADV_H
34
+#define CONFIGURATION_ADV_H
35
+
36
+/**
37
+ *
38
+ *  ***********************************
39
+ *  **  ATTENTION TO ALL DEVELOPERS  **
40
+ *  ***********************************
41
+ *
42
+ * You must increment this version number for every significant change such as,
43
+ * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option.
44
+ *
45
+ * Note: Update also Version.h !
46
+ */
47
+#define CONFIGURATION_ADV_H_VERSION 010100
48
+
49
+// @section temperature
50
+
51
+//===========================================================================
52
+//=============================Thermal Settings  ============================
53
+//===========================================================================
54
+
55
+#if DISABLED(PIDTEMPBED)
56
+  #define BED_CHECK_INTERVAL 1000 // ms between checks in bang-bang control
57
+  #if ENABLED(BED_LIMIT_SWITCHING)
58
+    #define BED_HYSTERESIS 1 // Only disable heating if T>target+BED_HYSTERESIS and enable heating if T>target-BED_HYSTERESIS
59
+  #endif
60
+#endif
61
+
62
+/**
63
+ * Thermal Protection protects your printer from damage and fire if a
64
+ * thermistor falls out or temperature sensors fail in any way.
65
+ *
66
+ * The issue: If a thermistor falls out or a temperature sensor fails,
67
+ * Marlin can no longer sense the actual temperature. Since a disconnected
68
+ * thermistor reads as a low temperature, the firmware will keep the heater on.
69
+ *
70
+ * The solution: Once the temperature reaches the target, start observing.
71
+ * If the temperature stays too far below the target (hysteresis) for too long (period),
72
+ * the firmware will halt the machine as a safety precaution.
73
+ *
74
+ * If you get false positives for "Thermal Runaway" increase THERMAL_PROTECTION_HYSTERESIS and/or THERMAL_PROTECTION_PERIOD
75
+ */
76
+#if ENABLED(THERMAL_PROTECTION_HOTENDS)
77
+  #define THERMAL_PROTECTION_PERIOD 40        // Seconds
78
+  #define THERMAL_PROTECTION_HYSTERESIS 4     // Degrees Celsius
79
+
80
+  /**
81
+   * Whenever an M104 or M109 increases the target temperature the firmware will wait for the
82
+   * WATCH_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_TEMP_INCREASE
83
+   * degrees, the machine is halted, requiring a hard reset. This test restarts with any M104/M109,
84
+   * but only if the current temperature is far enough below the target for a reliable test.
85
+   *
86
+   * If you get false positives for "Heating failed" increase WATCH_TEMP_PERIOD and/or decrease WATCH_TEMP_INCREASE
87
+   * WATCH_TEMP_INCREASE should not be below 2.
88
+   */
89
+  #define WATCH_TEMP_PERIOD 20                // Seconds
90
+  #define WATCH_TEMP_INCREASE 2               // Degrees Celsius
91
+#endif
92
+
93
+/**
94
+ * Thermal Protection parameters for the bed are just as above for hotends.
95
+ */
96
+#if ENABLED(THERMAL_PROTECTION_BED)
97
+  #define THERMAL_PROTECTION_BED_PERIOD 20    // Seconds
98
+  #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius
99
+
100
+  /**
101
+   * Whenever an M140 or M190 increases the target temperature the firmware will wait for the
102
+   * WATCH_BED_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_BED_TEMP_INCREASE
103
+   * degrees, the machine is halted, requiring a hard reset. This test restarts with any M140/M190,
104
+   * but only if the current temperature is far enough below the target for a reliable test.
105
+   *
106
+   * If you get too many "Heating failed" errors, increase WATCH_BED_TEMP_PERIOD and/or decrease
107
+   * WATCH_BED_TEMP_INCREASE. (WATCH_BED_TEMP_INCREASE should not be below 2.)
108
+   */
109
+  #define WATCH_BED_TEMP_PERIOD 60                // Seconds
110
+  #define WATCH_BED_TEMP_INCREASE 2               // Degrees Celsius
111
+#endif
112
+
113
+#if ENABLED(PIDTEMP)
114
+  // this adds an experimental additional term to the heating power, proportional to the extrusion speed.
115
+  // if Kc is chosen well, the additional required power due to increased melting should be compensated.
116
+  //#define PID_EXTRUSION_SCALING
117
+  #if ENABLED(PID_EXTRUSION_SCALING)
118
+    #define DEFAULT_Kc (100) //heating power=Kc*(e_speed)
119
+    #define LPQ_MAX_LEN 50
120
+  #endif
121
+#endif
122
+
123
+/**
124
+ * Automatic Temperature:
125
+ * The hotend target temperature is calculated by all the buffered lines of gcode.
126
+ * The maximum buffered steps/sec of the extruder motor is called "se".
127
+ * Start autotemp mode with M109 S<mintemp> B<maxtemp> F<factor>
128
+ * The target temperature is set to mintemp+factor*se[steps/sec] and is limited by
129
+ * mintemp and maxtemp. Turn this off by executing M109 without F*
130
+ * Also, if the temperature is set to a value below mintemp, it will not be changed by autotemp.
131
+ * On an Ultimaker, some initial testing worked with M109 S215 B260 F1 in the start.gcode
132
+ */
133
+#define AUTOTEMP
134
+#if ENABLED(AUTOTEMP)
135
+  #define AUTOTEMP_OLDWEIGHT 0.98
136
+#endif
137
+
138
+//Show Temperature ADC value
139
+//The M105 command return, besides traditional information, the ADC value read from temperature sensors.
140
+//#define SHOW_TEMP_ADC_VALUES
141
+
142
+/**
143
+ * High Temperature Thermistor Support
144
+ *
145
+ * Thermistors able to support high temperature tend to have a hard time getting
146
+ * good readings at room and lower temperatures. This means HEATER_X_RAW_LO_TEMP
147
+ * will probably be caught when the heating element first turns on during the
148
+ * preheating process, which will trigger a min_temp_error as a safety measure
149
+ * and force stop everything.
150
+ * To circumvent this limitation, we allow for a preheat time (during which,
151
+ * min_temp_error won't be triggered) and add a min_temp buffer to handle
152
+ * aberrant readings.
153
+ *
154
+ * If you want to enable this feature for your hotend thermistor(s)
155
+ * uncomment and set values > 0 in the constants below
156
+ */
157
+
158
+// The number of consecutive low temperature errors that can occur
159
+// before a min_temp_error is triggered. (Shouldn't be more than 10.)
160
+//#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 0
161
+
162
+// The number of milliseconds a hotend will preheat before starting to check
163
+// the temperature. This value should NOT be set to the time it takes the
164
+// hot end to reach the target temperature, but the time it takes to reach
165
+// the minimum temperature your thermistor can read. The lower the better/safer.
166
+// This shouldn't need to be more than 30 seconds (30000)
167
+//#define MILLISECONDS_PREHEAT_TIME 0
168
+
169
+// @section extruder
170
+
171
+//  extruder run-out prevention.
172
+//if the machine is idle, and the temperature over MINTEMP, every couple of SECONDS some filament is extruded
173
+//#define EXTRUDER_RUNOUT_PREVENT
174
+#define EXTRUDER_RUNOUT_MINTEMP 190
175
+#define EXTRUDER_RUNOUT_SECONDS 30
176
+#define EXTRUDER_RUNOUT_ESTEPS 14   // mm filament
177
+#define EXTRUDER_RUNOUT_SPEED 1500  // extrusion speed
178
+#define EXTRUDER_RUNOUT_EXTRUDE 100
179
+
180
+// @section temperature
181
+
182
+//These defines help to calibrate the AD595 sensor in case you get wrong temperature measurements.
183
+//The measured temperature is defined as "actualTemp = (measuredTemp * TEMP_SENSOR_AD595_GAIN) + TEMP_SENSOR_AD595_OFFSET"
184
+#define TEMP_SENSOR_AD595_OFFSET 0.0
185
+#define TEMP_SENSOR_AD595_GAIN   1.0
186
+
187
+//This is for controlling a fan to cool down the stepper drivers
188
+//it will turn on when any driver is enabled
189
+//and turn off after the set amount of seconds from last driver being disabled again
190
+#define CONTROLLERFAN_PIN 2 //Pin used for the fan to cool controller (-1 to disable)
191
+#define CONTROLLERFAN_SECS 60 //How many seconds, after all motors were disabled, the fan should run
192
+#define CONTROLLERFAN_SPEED 255  // == full speed
193
+
194
+// When first starting the main fan, run it at full speed for the
195
+// given number of milliseconds.  This gets the fan spinning reliably
196
+// before setting a PWM value. (Does not work with software PWM for fan on Sanguinololu)
197
+//#define FAN_KICKSTART_TIME 100
198
+
199
+// This defines the minimal speed for the main fan, run in PWM mode
200
+// to enable uncomment and set minimal PWM speed for reliable running (1-255)
201
+// if fan speed is [1 - (FAN_MIN_PWM-1)] it is set to FAN_MIN_PWM
202
+//#define FAN_MIN_PWM 50
203
+
204
+// @section extruder
205
+
206
+// Extruder cooling fans
207
+// Configure fan pin outputs to automatically turn on/off when the associated
208
+// extruder temperature is above/below EXTRUDER_AUTO_FAN_TEMPERATURE.
209
+// Multiple extruders can be assigned to the same pin in which case
210
+// the fan will turn on when any selected extruder is above the threshold.
211
+#define EXTRUDER_0_AUTO_FAN_PIN -1
212
+#define EXTRUDER_1_AUTO_FAN_PIN -1
213
+#define EXTRUDER_2_AUTO_FAN_PIN -1
214
+#define EXTRUDER_3_AUTO_FAN_PIN -1
215
+#define EXTRUDER_AUTO_FAN_TEMPERATURE 50
216
+#define EXTRUDER_AUTO_FAN_SPEED   255  // == full speed
217
+
218
+//===========================================================================
219
+//============================ Mechanical Settings ==========================
220
+//===========================================================================
221
+
222
+// @section homing
223
+
224
+// If you want endstops to stay on (by default) even when not homing
225
+// enable this option. Override at any time with M120, M121.
226
+//#define ENDSTOPS_ALWAYS_ON_DEFAULT
227
+
228
+// @section extras
229
+
230
+//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
231
+
232
+// Dual X Steppers
233
+// Uncomment this option to drive two X axis motors.
234
+// The next unused E driver will be assigned to the second X stepper.
235
+//#define X_DUAL_STEPPER_DRIVERS
236
+#if ENABLED(X_DUAL_STEPPER_DRIVERS)
237
+  // Set true if the two X motors need to rotate in opposite directions
238
+  #define INVERT_X2_VS_X_DIR true
239
+#endif
240
+
241
+
242
+// Dual Y Steppers
243
+// Uncomment this option to drive two Y axis motors.
244
+// The next unused E driver will be assigned to the second Y stepper.
245
+//#define Y_DUAL_STEPPER_DRIVERS
246
+#if ENABLED(Y_DUAL_STEPPER_DRIVERS)
247
+  // Set true if the two Y motors need to rotate in opposite directions
248
+  #define INVERT_Y2_VS_Y_DIR true
249
+#endif
250
+
251
+// A single Z stepper driver is usually used to drive 2 stepper motors.
252
+// Uncomment this option to use a separate stepper driver for each Z axis motor.
253
+// The next unused E driver will be assigned to the second Z stepper.
254
+//#define Z_DUAL_STEPPER_DRIVERS
255
+
256
+#if ENABLED(Z_DUAL_STEPPER_DRIVERS)
257
+
258
+  // Z_DUAL_ENDSTOPS is a feature to enable the use of 2 endstops for both Z steppers - Let's call them Z stepper and Z2 stepper.
259
+  // That way the machine is capable to align the bed during home, since both Z steppers are homed.
260
+  // There is also an implementation of M666 (software endstops adjustment) to this feature.
261
+  // After Z homing, this adjustment is applied to just one of the steppers in order to align the bed.
262
+  // One just need to home the Z axis and measure the distance difference between both Z axis and apply the math: Z adjust = Z - Z2.
263
+  // If the Z stepper axis is closer to the bed, the measure Z > Z2 (yes, it is.. think about it) and the Z adjust would be positive.
264
+  // Play a little bit with small adjustments (0.5mm) and check the behaviour.
265
+  // The M119 (endstops report) will start reporting the Z2 Endstop as well.
266
+
267
+  //#define Z_DUAL_ENDSTOPS
268
+
269
+  #if ENABLED(Z_DUAL_ENDSTOPS)
270
+    #define Z2_USE_ENDSTOP _XMAX_
271
+  #endif
272
+
273
+#endif // Z_DUAL_STEPPER_DRIVERS
274
+
275
+// Enable this for dual x-carriage printers.
276
+// A dual x-carriage design has the advantage that the inactive extruder can be parked which
277
+// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
278
+// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug.
279
+//#define DUAL_X_CARRIAGE
280
+#if ENABLED(DUAL_X_CARRIAGE)
281
+  // Configuration for second X-carriage
282
+  // Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop;
283
+  // the second x-carriage always homes to the maximum endstop.
284
+  #define X2_MIN_POS 80     // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage
285
+  #define X2_MAX_POS 353    // set maximum to the distance between toolheads when both heads are homed
286
+  #define X2_HOME_DIR 1     // the second X-carriage always homes to the maximum endstop position
287
+  #define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position
288
+      // However: In this mode the HOTEND_OFFSET_X value for the second extruder provides a software
289
+      // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops
290
+      // without modifying the firmware (through the "M218 T1 X???" command).
291
+      // Remember: you should set the second extruder x-offset to 0 in your slicer.
292
+
293
+  // There are a few selectable movement modes for dual x-carriages using M605 S<mode>
294
+  //    Mode 0: Full control. The slicer has full control over both x-carriages and can achieve optimal travel results
295
+  //                           as long as it supports dual x-carriages. (M605 S0)
296
+  //    Mode 1: Auto-park mode. The firmware will automatically park and unpark the x-carriages on tool changes so
297
+  //                           that additional slicer support is not required. (M605 S1)
298
+  //    Mode 2: Duplication mode. The firmware will transparently make the second x-carriage and extruder copy all
299
+  //                           actions of the first x-carriage. This allows the printer to print 2 arbitrary items at
300
+  //                           once. (2nd extruder x offset and temp offset are set using: M605 S2 [Xnnn] [Rmmm])
301
+
302
+  // This is the default power-up mode which can be later using M605.
303
+  #define DEFAULT_DUAL_X_CARRIAGE_MODE 0
304
+
305
+  // Default settings in "Auto-park Mode"
306
+  #define TOOLCHANGE_PARK_ZLIFT   0.2      // the distance to raise Z axis when parking an extruder
307
+  #define TOOLCHANGE_UNPARK_ZLIFT 1        // the distance to raise Z axis when unparking an extruder
308
+
309
+  // Default x offset in duplication mode (typically set to half print bed width)
310
+  #define DEFAULT_DUPLICATION_X_OFFSET 100
311
+
312
+#endif //DUAL_X_CARRIAGE
313
+
314
+// @section homing
315
+
316
+//homing hits the endstop, then retracts by this distance, before it tries to slowly bump again:
317
+#define X_HOME_BUMP_MM 10
318
+#define Y_HOME_BUMP_MM 10
319
+#define Z_HOME_BUMP_MM 3
320
+#define HOMING_BUMP_DIVISOR {2, 2, 4}  // Re-Bump Speed Divisor (Divides the Homing Feedrate)
321
+#define QUICK_HOME  //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially.
322
+
323
+// When G28 is called, this option will make Y home before X
324
+//#define HOME_Y_BEFORE_X
325
+
326
+// @section machine
327
+
328
+#define AXIS_RELATIVE_MODES {false, false, false, false}
329
+
330
+// Allow duplication mode with a basic dual-nozzle extruder
331
+//#define DUAL_NOZZLE_DUPLICATION_MODE
332
+
333
+// By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
334
+#define INVERT_X_STEP_PIN false
335
+#define INVERT_Y_STEP_PIN false
336
+#define INVERT_Z_STEP_PIN false
337
+#define INVERT_E_STEP_PIN false
338
+
339
+// Default stepper release if idle. Set to 0 to deactivate.
340
+// Steppers will shut down DEFAULT_STEPPER_DEACTIVE_TIME seconds after the last move when DISABLE_INACTIVE_? is true.
341
+// Time can be set by M18 and M84.
342
+#define DEFAULT_STEPPER_DEACTIVE_TIME 120
343
+#define DISABLE_INACTIVE_X true
344
+#define DISABLE_INACTIVE_Y true
345
+#define DISABLE_INACTIVE_Z true  // set to false if the nozzle will fall down on your printed part when print has finished.
346
+#define DISABLE_INACTIVE_E true
347
+
348
+#define DEFAULT_MINIMUMFEEDRATE       0.0     // minimum feedrate
349
+#define DEFAULT_MINTRAVELFEEDRATE     0.0
350
+
351
+// @section lcd
352
+
353
+#if ENABLED(ULTIPANEL)
354
+  #define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel
355
+  #define ULTIPANEL_FEEDMULTIPLY  // Comment to disable setting feedrate multiplier via encoder
356
+#endif
357
+
358
+// @section extras
359
+
360
+// minimum time in microseconds that a movement needs to take if the buffer is emptied.
361
+#define DEFAULT_MINSEGMENTTIME        20000
362
+
363
+// If defined the movements slow down when the look ahead buffer is only half full
364
+#define SLOWDOWN
365
+
366
+// Frequency limit
367
+// See nophead's blog for more info
368
+// Not working O
369
+//#define XY_FREQUENCY_LIMIT  15
370
+
371
+// Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end
372
+// of the buffer and all stops. This should not be much greater than zero and should only be changed
373
+// if unwanted behavior is observed on a user's machine when running at very slow speeds.
374
+#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec)
375
+
376
+// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU.
377
+#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16]
378
+
379
+// Motor Current setting (Only functional when motor driver current ref pins are connected to a digital trimpot on supported boards)
380
+#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
381
+
382
+// Motor Current controlled via PWM (Overridable on supported boards with PWM-driven motor driver current)
383
+//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps
384
+
385
+// uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro
386
+//#define DIGIPOT_I2C
387
+// Number of channels available for I2C digipot, For Azteeg X3 Pro we have 8
388
+#define DIGIPOT_I2C_NUM_CHANNELS 8
389
+// actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS
390
+#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0}
391
+
392
+//===========================================================================
393
+//=============================Additional Features===========================
394
+//===========================================================================
395
+
396
+#define ENCODER_RATE_MULTIPLIER         // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
397
+#define ENCODER_10X_STEPS_PER_SEC 75    // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value
398
+#define ENCODER_100X_STEPS_PER_SEC 160  // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value
399
+
400
+//#define CHDK 4        //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/
401
+#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
402
+
403
+// @section lcd
404
+
405
+// Include a page of printer information in the LCD Main Menu
406
+//#define LCD_INFO_MENU
407
+
408
+#if ENABLED(SDSUPPORT)
409
+
410
+  // Some RAMPS and other boards don't detect when an SD card is inserted. You can work
411
+  // around this by connecting a push button or single throw switch to the pin defined
412
+  // as SD_DETECT_PIN in your board's pins definitions.
413
+  // This setting should be disabled unless you are using a push button, pulling the pin to ground.
414
+  // Note: This is always disabled for ULTIPANEL (except ELB_FULL_GRAPHIC_CONTROLLER).
415
+  #define SD_DETECT_INVERTED
416
+
417
+  #define SD_FINISHED_STEPPERRELEASE true  //if sd support and the file is finished: disable steppers?
418
+  #define SD_FINISHED_RELEASECOMMAND "M84 X Y Z E" // You might want to keep the z enabled so your bed stays in place.
419
+
420
+  #define SDCARD_RATHERRECENTFIRST  //reverse file order of sd card menu display. Its sorted practically after the file system block order.
421
+  // if a file is deleted, it frees a block. hence, the order is not purely chronological. To still have auto0.g accessible, there is again the option to do that.
422
+  // using:
423
+  //#define MENU_ADDAUTOSTART
424
+
425
+  // Show a progress bar on HD44780 LCDs for SD printing
426
+  //#define LCD_PROGRESS_BAR
427
+
428
+  #if ENABLED(LCD_PROGRESS_BAR)
429
+    // Amount of time (ms) to show the bar
430
+    #define PROGRESS_BAR_BAR_TIME 2000
431
+    // Amount of time (ms) to show the status message
432
+    #define PROGRESS_BAR_MSG_TIME 3000
433
+    // Amount of time (ms) to retain the status message (0=forever)
434
+    #define PROGRESS_MSG_EXPIRE   0
435
+    // Enable this to show messages for MSG_TIME then hide them
436
+    //#define PROGRESS_MSG_ONCE
437
+  #endif
438
+
439
+  // This allows hosts to request long names for files and folders with M33
440
+  //#define LONG_FILENAME_HOST_SUPPORT
441
+
442
+  // This option allows you to abort SD printing when any endstop is triggered.
443
+  // This feature must be enabled with "M540 S1" or from the LCD menu.
444
+  // To have any effect, endstops must be enabled during SD printing.
445
+  //#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED
446
+
447
+#endif // SDSUPPORT
448
+
449
+// for dogm lcd displays you can choose some additional fonts:
450
+#if ENABLED(DOGLCD)
451
+  // save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT
452
+  // we don't have a big font for Cyrillic, Kana
453
+  //#define USE_BIG_EDIT_FONT
454
+
455
+  // If you have spare 2300Byte of progmem and want to use a
456
+  // smaller font on the Info-screen uncomment the next line.
457
+  //#define USE_SMALL_INFOFONT
458
+#endif // DOGLCD
459
+
460
+// @section safety
461
+
462
+// The hardware watchdog should reset the microcontroller disabling all outputs,
463
+// in case the firmware gets stuck and doesn't do temperature regulation.
464
+#define USE_WATCHDOG
465
+
466
+#if ENABLED(USE_WATCHDOG)
467
+  // If you have a watchdog reboot in an ArduinoMega2560 then the device will hang forever, as a watchdog reset will leave the watchdog on.
468
+  // The "WATCHDOG_RESET_MANUAL" goes around this by not using the hardware reset.
469
+  //  However, THIS FEATURE IS UNSAFE!, as it will only work if interrupts are disabled. And the code could hang in an interrupt routine with interrupts disabled.
470
+  //#define WATCHDOG_RESET_MANUAL
471
+#endif
472
+
473
+// @section lcd
474
+
475
+// Babystepping enables the user to control the axis in tiny amounts, independently from the normal printing process
476
+// it can e.g. be used to change z-positions in the print startup phase in real-time
477
+// does not respect endstops!
478
+//#define BABYSTEPPING
479
+#if ENABLED(BABYSTEPPING)
480
+  #define BABYSTEP_XY  //not only z, but also XY in the menu. more clutter, more functions
481
+                       //not implemented for deltabots!
482
+  #define BABYSTEP_INVERT_Z false  //true for inverse movements in Z
483
+  #define BABYSTEP_MULTIPLICATOR 1 //faster movements
484
+#endif
485
+
486
+// @section extruder
487
+
488
+// extruder advance constant (s2/mm3)
489
+//
490
+// advance (steps) = STEPS_PER_CUBIC_MM_E * EXTRUDER_ADVANCE_K * cubic mm per second ^ 2
491
+//
492
+// Hooke's law says:    force = k * distance
493
+// Bernoulli's principle says:  v ^ 2 / 2 + g . h + pressure / density = constant
494
+// so: v ^ 2 is proportional to number of steps we advance the extruder
495
+//#define ADVANCE
496
+
497
+#if ENABLED(ADVANCE)
498
+  #define EXTRUDER_ADVANCE_K .0
499
+  #define D_FILAMENT 2.85
500
+#endif
501
+
502
+// Implementation of a linear pressure control
503
+// Assumption: advance = k * (delta velocity)
504
+// K=0 means advance disabled. A good value for a gregs wade extruder will be around K=75
505
+//#define LIN_ADVANCE
506
+
507
+#if ENABLED(LIN_ADVANCE)
508
+  #define LIN_ADVANCE_K 75
509
+#endif
510
+
511
+// @section leveling
512
+
513
+// Default mesh area is an area with an inset margin on the print area.
514
+// Below are the macros that are used to define the borders for the mesh area,
515
+// made available here for specialized needs, ie dual extruder setup.
516
+#if ENABLED(MESH_BED_LEVELING)
517
+  #define MESH_MIN_X (X_MIN_POS + MESH_INSET)
518
+  #define MESH_MAX_X (X_MAX_POS - (MESH_INSET))
519
+  #define MESH_MIN_Y (Y_MIN_POS + MESH_INSET)
520
+  #define MESH_MAX_Y (Y_MAX_POS - (MESH_INSET))
521
+#endif
522
+
523
+// @section extras
524
+
525
+// Arc interpretation settings:
526
+#define ARC_SUPPORT  // Disabling this saves ~2738 bytes
527
+#define MM_PER_ARC_SEGMENT 1
528
+#define N_ARC_CORRECTION 25
529
+
530
+// Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
531
+//#define BEZIER_CURVE_SUPPORT
532
+
533
+const unsigned int dropsegments = 5; //everything with less than this number of steps will be ignored as move and joined with the next movement
534
+
535
+// @section temperature
536
+
537
+// Control heater 0 and heater 1 in parallel.
538
+//#define HEATERS_PARALLEL
539
+
540
+//===========================================================================
541
+//================================= Buffers =================================
542
+//===========================================================================
543
+
544
+// @section hidden
545
+
546
+// The number of linear motions that can be in the plan at any give time.
547
+// THE BLOCK_BUFFER_SIZE NEEDS TO BE A POWER OF 2, i.g. 8,16,32 because shifts and ors are used to do the ring-buffering.
548
+#if ENABLED(SDSUPPORT)
549
+  #define BLOCK_BUFFER_SIZE 16   // SD,LCD,Buttons take more memory, block buffer needs to be smaller
550
+#else
551
+  #define BLOCK_BUFFER_SIZE 16 // maximize block buffer
552
+#endif
553
+
554
+// @section serial
555
+
556
+// The ASCII buffer for serial input
557
+#define MAX_CMD_SIZE 96
558
+#define BUFSIZE 26
559
+
560
+// Transfer Buffer Size
561
+// To save 386 bytes of PROGMEM (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0.
562
+// To buffer a simple "ok" you need 4 bytes.
563
+// For ADVANCED_OK (M105) you need 32 bytes.
564
+// For debug-echo: 128 bytes for the optimal speed.
565
+// Other output doesn't need to be that speedy.
566
+// :[0,2,4,8,16,32,64,128,256]
567
+#define TX_BUFFER_SIZE 0
568
+
569
+// Enable an emergency-command parser to intercept certain commands as they
570
+// enter the serial receive buffer, so they cannot be blocked.
571
+// Currently handles M108, M112, M410
572
+// Does not work on boards using AT90USB (USBCON) processors!
573
+//#define EMERGENCY_PARSER
574
+
575
+// Bad Serial-connections can miss a received command by sending an 'ok'
576
+// Therefore some clients abort after 30 seconds in a timeout.
577
+// Some other clients start sending commands while receiving a 'wait'.
578
+// This "wait" is only sent when the buffer is empty. 1 second is a good value here.
579
+//#define NO_TIMEOUTS 1000 // Milliseconds
580
+
581
+// Some clients will have this feature soon. This could make the NO_TIMEOUTS unnecessary.
582
+//#define ADVANCED_OK
583
+
584
+// @section fwretract
585
+
586
+// Firmware based and LCD controlled retract
587
+// M207 and M208 can be used to define parameters for the retraction.
588
+// The retraction can be called by the slicer using G10 and G11
589
+// until then, intended retractions can be detected by moves that only extrude and the direction.
590
+// the moves are than replaced by the firmware controlled ones.
591
+
592
+//#define FWRETRACT  //ONLY PARTIALLY TESTED
593
+#if ENABLED(FWRETRACT)
594
+  #define MIN_RETRACT 0.1                //minimum extruded mm to accept a automatic gcode retraction attempt
595
+  #define RETRACT_LENGTH 3               //default retract length (positive mm)
596
+  #define RETRACT_LENGTH_SWAP 13         //default swap retract length (positive mm), for extruder change
597
+  #define RETRACT_FEEDRATE 45            //default feedrate for retracting (mm/s)
598
+  #define RETRACT_ZLIFT 0                //default retract Z-lift
599
+  #define RETRACT_RECOVER_LENGTH 0       //default additional recover length (mm, added to retract length when recovering)
600
+  #define RETRACT_RECOVER_LENGTH_SWAP 0  //default additional swap recover length (mm, added to retract length when recovering from extruder change)
601
+  #define RETRACT_RECOVER_FEEDRATE 8     //default feedrate for recovering from retraction (mm/s)
602
+#endif
603
+
604
+// Add support for experimental filament exchange support M600; requires display
605
+#if ENABLED(ULTIPANEL)
606
+  #define FILAMENT_CHANGE_FEATURE               // Enable filament exchange menu and M600 g-code (used for runout sensor too)
607
+  #if ENABLED(FILAMENT_CHANGE_FEATURE)
608
+    #define FILAMENT_CHANGE_X_POS 100           // X position of hotend
609
+    #define FILAMENT_CHANGE_Y_POS 100           // Y position of hotend
610
+    #define FILAMENT_CHANGE_Z_ADD 20            // Z addition of hotend (lift)
611
+    #define FILAMENT_CHANGE_XY_FEEDRATE 100     // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
612
+    #define FILAMENT_CHANGE_Z_FEEDRATE 5        // Z axis feedrate in mm/s (not used for delta printers)
613
+    #define FILAMENT_CHANGE_RETRACT_LENGTH 5    // Initial retract in mm
614
+                                                // It is a short retract used immediately after print interrupt before move to filament exchange position
615
+    #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
616
+    #define FILAMENT_CHANGE_UNLOAD_LENGTH 600   // Unload filament length from hotend in mm
617
+                                                // Longer length for bowden printers to unload filament from whole bowden tube,
618
+                                                // shorter lenght for printers without bowden to unload filament from extruder only,
619
+                                                // 0 to disable unloading for manual unloading
620
+    #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10  // Unload filament feedrate in mm/s - filament unloading can be fast
621
+    #define FILAMENT_CHANGE_LOAD_LENGTH 600     // Load filament length over hotend in mm
622
+                                                // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
623
+                                                // Short or zero length for printers without bowden where loading is not used
624
+    #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
625
+    #define FILAMENT_CHANGE_EXTRUDE_LENGTH 100  // Extrude filament length in mm after filament is load over the hotend,
626
+                                                // 0 to disable for manual extrusion
627
+                                                // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
628
+                                                // or until outcoming filament color is not clear for filament color change
629
+    #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
630
+  #endif
631
+#endif
632
+
633
+/******************************************************************************\
634
+ * enable this section if you have TMC26X motor drivers.
635
+ * you need to import the TMC26XStepper library into the Arduino IDE for this
636
+ ******************************************************************************/
637
+
638
+// @section tmc
639
+
640
+//#define HAVE_TMCDRIVER
641
+#if ENABLED(HAVE_TMCDRIVER)
642
+
643
+  //#define X_IS_TMC
644
+  #define X_MAX_CURRENT 1000  //in mA
645
+  #define X_SENSE_RESISTOR 91 //in mOhms
646
+  #define X_MICROSTEPS 16     //number of microsteps
647
+
648
+  //#define X2_IS_TMC
649
+  #define X2_MAX_CURRENT 1000  //in mA
650
+  #define X2_SENSE_RESISTOR 91 //in mOhms
651
+  #define X2_MICROSTEPS 16     //number of microsteps
652
+
653
+  //#define Y_IS_TMC
654
+  #define Y_MAX_CURRENT 1000  //in mA
655
+  #define Y_SENSE_RESISTOR 91 //in mOhms
656
+  #define Y_MICROSTEPS 16     //number of microsteps
657
+
658
+  //#define Y2_IS_TMC
659
+  #define Y2_MAX_CURRENT 1000  //in mA
660
+  #define Y2_SENSE_RESISTOR 91 //in mOhms
661
+  #define Y2_MICROSTEPS 16     //number of microsteps
662
+
663
+  //#define Z_IS_TMC
664
+  #define Z_MAX_CURRENT 1000  //in mA
665
+  #define Z_SENSE_RESISTOR 91 //in mOhms
666
+  #define Z_MICROSTEPS 16     //number of microsteps
667
+
668
+  //#define Z2_IS_TMC
669
+  #define Z2_MAX_CURRENT 1000  //in mA
670
+  #define Z2_SENSE_RESISTOR 91 //in mOhms
671
+  #define Z2_MICROSTEPS 16     //number of microsteps
672
+
673
+  //#define E0_IS_TMC
674
+  #define E0_MAX_CURRENT 1000  //in mA
675
+  #define E0_SENSE_RESISTOR 91 //in mOhms
676
+  #define E0_MICROSTEPS 16     //number of microsteps
677
+
678
+  //#define E1_IS_TMC
679
+  #define E1_MAX_CURRENT 1000  //in mA
680
+  #define E1_SENSE_RESISTOR 91 //in mOhms
681
+  #define E1_MICROSTEPS 16     //number of microsteps
682
+
683
+  //#define E2_IS_TMC
684
+  #define E2_MAX_CURRENT 1000  //in mA
685
+  #define E2_SENSE_RESISTOR 91 //in mOhms
686
+  #define E2_MICROSTEPS 16     //number of microsteps
687
+
688
+  //#define E3_IS_TMC
689
+  #define E3_MAX_CURRENT 1000  //in mA
690
+  #define E3_SENSE_RESISTOR 91 //in mOhms
691
+  #define E3_MICROSTEPS 16     //number of microsteps
692
+
693
+#endif
694
+
695
+/******************************************************************************\
696
+ * enable this section if you have L6470  motor drivers.
697
+ * you need to import the L6470 library into the Arduino IDE for this
698
+ ******************************************************************************/
699
+
700
+// @section l6470
701
+
702
+//#define HAVE_L6470DRIVER
703
+#if ENABLED(HAVE_L6470DRIVER)
704
+
705
+  //#define X_IS_L6470
706
+  #define X_MICROSTEPS 16     //number of microsteps
707
+  #define X_K_VAL 50          // 0 - 255, Higher values, are higher power. Be careful not to go too high
708
+  #define X_OVERCURRENT 2000  //maxc current in mA. If the current goes over this value, the driver will switch off
709
+  #define X_STALLCURRENT 1500 //current in mA where the driver will detect a stall
710
+
711
+  //#define X2_IS_L6470
712
+  #define X2_MICROSTEPS 16     //number of microsteps
713
+  #define X2_K_VAL 50          // 0 - 255, Higher values, are higher power. Be careful not to go too high
714
+  #define X2_OVERCURRENT 2000  //maxc current in mA. If the current goes over this value, the driver will switch off
715
+  #define X2_STALLCURRENT 1500 //current in mA where the driver will detect a stall
716
+
717
+  //#define Y_IS_L6470
718
+  #define Y_MICROSTEPS 16     //number of microsteps
719
+  #define Y_K_VAL 50          // 0 - 255, Higher values, are higher power. Be careful not to go too high
720
+  #define Y_OVERCURRENT 2000  //maxc current in mA. If the current goes over this value, the driver will switch off
721
+  #define Y_STALLCURRENT 1500 //current in mA where the driver will detect a stall
722
+
723
+  //#define Y2_IS_L6470
724
+  #define Y2_MICROSTEPS 16     //number of microsteps
725
+  #define Y2_K_VAL 50          // 0 - 255, Higher values, are higher power. Be careful not to go too high
726
+  #define Y2_OVERCURRENT 2000  //maxc current in mA. If the current goes over this value, the driver will switch off
727
+  #define Y2_STALLCURRENT 1500 //current in mA where the driver will detect a stall
728
+
729
+  //#define Z_IS_L6470
730
+  #define Z_MICROSTEPS 16     //number of microsteps
731
+  #define Z_K_VAL 50          // 0 - 255, Higher values, are higher power. Be careful not to go too high
732
+  #define Z_OVERCURRENT 2000  //maxc current in mA. If the current goes over this value, the driver will switch off
733
+  #define Z_STALLCURRENT 1500 //current in mA where the driver will detect a stall
734
+
735
+  //#define Z2_IS_L6470
736
+  #define Z2_MICROSTEPS 16     //number of microsteps
737
+  #define Z2_K_VAL 50          // 0 - 255, Higher values, are higher power. Be careful not to go too high
738
+  #define Z2_OVERCURRENT 2000  //maxc current in mA. If the current goes over this value, the driver will switch off
739
+  #define Z2_STALLCURRENT 1500 //current in mA where the driver will detect a stall
740
+
741
+  //#define E0_IS_L6470
742
+  #define E0_MICROSTEPS 16     //number of microsteps
743
+  #define E0_K_VAL 50          // 0 - 255, Higher values, are higher power. Be careful not to go too high
744
+  #define E0_OVERCURRENT 2000  //maxc current in mA. If the current goes over this value, the driver will switch off
745
+  #define E0_STALLCURRENT 1500 //current in mA where the driver will detect a stall
746
+
747
+  //#define E1_IS_L6470
748
+  #define E1_MICROSTEPS 16     //number of microsteps
749
+  #define E1_K_VAL 50          // 0 - 255, Higher values, are higher power. Be careful not to go too high
750
+  #define E1_OVERCURRENT 2000  //maxc current in mA. If the current goes over this value, the driver will switch off
751
+  #define E1_STALLCURRENT 1500 //current in mA where the driver will detect a stall
752
+
753
+  //#define E2_IS_L6470
754
+  #define E2_MICROSTEPS 16     //number of microsteps
755
+  #define E2_K_VAL 50          // 0 - 255, Higher values, are higher power. Be careful not to go too high
756
+  #define E2_OVERCURRENT 2000  //maxc current in mA. If the current goes over this value, the driver will switch off
757
+  #define E2_STALLCURRENT 1500 //current in mA where the driver will detect a stall
758
+
759
+  //#define E3_IS_L6470
760
+  #define E3_MICROSTEPS 16     //number of microsteps
761
+  #define E3_K_VAL 50          // 0 - 255, Higher values, are higher power. Be careful not to go too high
762
+  #define E3_OVERCURRENT 2000  //maxc current in mA. If the current goes over this value, the driver will switch off
763
+  #define E3_STALLCURRENT 1500 //current in mA where the driver will detect a stall
764
+
765
+#endif
766
+
767
+/**
768
+ * TWI/I2C BUS
769
+ *
770
+ * This feature is an EXPERIMENTAL feature so it shall not be used on production
771
+ * machines. Enabling this will allow you to send and receive I2C data from slave
772
+ * devices on the bus.
773
+ *
774
+ * ; Example #1
775
+ * ; This macro send the string "Marlin" to the slave device with address 0x63 (99)
776
+ * ; It uses multiple M155 commands with one B<base 10> arg
777
+ * M155 A99  ; Target slave address
778
+ * M155 B77  ; M
779
+ * M155 B97  ; a
780
+ * M155 B114 ; r
781
+ * M155 B108 ; l
782
+ * M155 B105 ; i
783
+ * M155 B110 ; n
784
+ * M155 S1   ; Send the current buffer
785
+ *
786
+ * ; Example #2
787
+ * ; Request 6 bytes from slave device with address 0x63 (99)
788
+ * M156 A99 B5
789
+ *
790
+ * ; Example #3
791
+ * ; Example serial output of a M156 request
792
+ * echo:i2c-reply: from:99 bytes:5 data:hello
793
+ */
794
+
795
+// @section i2cbus
796
+
797
+//#define EXPERIMENTAL_I2CBUS
798
+
799
+#endif // CONFIGURATION_ADV_H

+ 1327
- 0
Marlin/example_configurations/K8400/Dual-head/Configuration.h
Failā izmaiņas netiks attēlotas, jo tās ir par lielu
Parādīt failu


+ 15
- 0
Marlin/example_configurations/K8400/README.md Parādīt failu

@@ -0,0 +1,15 @@
1
+# Configuration for Velleman K8400 Vertex
2
+http://www.k8400.eu/
3
+
4
+Configuration files for the K8400, ported upstream from the official Velleman firmware.
5
+Like it's predecessor, (K8200), the K8400 is a 3Drag clone. There are some minor differences, documented in pins_K8400.h.
6
+
7
+Single and dual head configurations provided. Copy the correct Configuration.h and Configuration_adv.h to the /Marlin/ directory.
8
+
9
+**NOTE: This configuration includes the community sourced feed rate fix. Use 100% feed rate in Repetier!**
10
+
11
+For implementation and updated K8400 firmware, see https://github.com/birkett/Velleman-K8400-Firmware
12
+
13
+### Original Sources
14
+Credit to Velleman for the original 1.0.x based code:<br />
15
+http://www.vertex3dprinter.eu/downloads/files/vertex/firmware/vertex-m1-v1.4-h2.zip

+ 290
- 147
Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h Parādīt failu

@@ -38,8 +38,18 @@
38 38
 #ifndef CONFIGURATION_H
39 39
 #define CONFIGURATION_H
40 40
 
41
-#include "boards.h"
42
-#include "macros.h"
41
+/**
42
+ *
43
+ *  ***********************************
44
+ *  **  ATTENTION TO ALL DEVELOPERS  **
45
+ *  ***********************************
46
+ *
47
+ * You must increment this version number for every significant change such as,
48
+ * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option.
49
+ *
50
+ * Note: Update also Version.h !
51
+ */
52
+#define CONFIGURATION_H_VERSION 010100
43 53
 
44 54
 //===========================================================================
45 55
 //============================= Getting Started =============================
@@ -73,20 +83,26 @@
73 83
 
74 84
 // @section info
75 85
 
76
-#if ENABLED(USE_AUTOMATIC_VERSIONING)
77
-  #include "_Version.h"
78
-#else
79
-  #include "Version.h"
80
-#endif
81
-
82 86
 // User-specified version info of this build to display in [Pronterface, etc] terminal window during
83 87
 // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
84 88
 // build by the user have been successfully uploaded into firmware.
85 89
 #define STRING_CONFIG_H_AUTHOR "RepRapWorld.com" // Who made the changes.
86 90
 #define SHOW_BOOTSCREEN
87
-#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during bootup in line 1
88
-//#define STRING_SPLASH_LINE2 STRING_DISTRIBUTION_DATE // will be shown during bootup in line 2
91
+#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during boot in line 1
92
+#define STRING_SPLASH_LINE2 WEBSITE_URL         // will be shown during boot in line 2
89 93
 
94
+//
95
+// *** VENDORS PLEASE READ *****************************************************
96
+//
97
+// Marlin now allow you to have a vendor boot image to be displayed on machine
98
+// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your
99
+// custom boot image and them the default Marlin boot image is shown.
100
+//
101
+// We suggest for you to take advantage of this new feature and keep the Marlin
102
+// boot image unmodified. For an example have a look at the bq Hephestos 2
103
+// example configuration folder.
104
+//
105
+//#define SHOW_CUSTOM_BOOTSCREEN
90 106
 // @section machine
91 107
 
92 108
 // SERIAL_PORT selects which serial port should be used for communication with the host.
@@ -123,17 +139,40 @@
123 139
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
124 140
 //#define SINGLENOZZLE
125 141
 
142
+// A dual extruder that uses a single stepper motor
143
+// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z
144
+//#define SWITCHING_EXTRUDER
145
+#if ENABLED(SWITCHING_EXTRUDER)
146
+  #define SWITCHING_EXTRUDER_SERVO_NR 0
147
+  #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1
148
+  //#define HOTEND_OFFSET_Z {0.0, 0.0}
149
+#endif
150
+
151
+/**
152
+ * "Mixing Extruder"
153
+ *   - Adds a new code, M165, to set the current mix factors.
154
+ *   - Extends the stepping routines to move multiple steppers in proportion to the mix.
155
+ *   - Optional support for Repetier Host M163, M164, and virtual extruder.
156
+ *   - This implementation supports only a single extruder.
157
+ *   - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
158
+ */
159
+//#define MIXING_EXTRUDER
160
+#if ENABLED(MIXING_EXTRUDER)
161
+  #define MIXING_STEPPERS 2        // Number of steppers in your mixing extruder
162
+  #define MIXING_VIRTUAL_TOOLS 16  // Use the Virtual Tool method with M163 and M164
163
+  //#define DIRECT_MIXING_IN_G1    // Allow ABCDHI mix factors in G1 movement commands
164
+#endif
165
+
126 166
 // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
127 167
 // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
128 168
 // For the other hotends it is their distance from the extruder 0 hotend.
129
-//#define EXTRUDER_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
130
-//#define EXTRUDER_OFFSET_Y {0.0, 5.00}  // (in mm) for each extruder, offset of the hotend on the Y axis
169
+//#define HOTEND_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
170
+//#define HOTEND_OFFSET_Y {0.0, 5.00}  // (in mm) for each extruder, offset of the hotend on the Y axis
131 171
 
132 172
 //// The following define selects which power supply you have. Please choose the one that matches your setup
133 173
 // 1 = ATX
134 174
 // 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC)
135 175
 // :{1:'ATX',2:'X-Box 360'}
136
-
137 176
 #define POWER_SUPPLY 1
138 177
 
139 178
 // Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it.
@@ -168,6 +207,7 @@
168 207
 // 13 is 100k Hisens 3950  1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE"
169 208
 // 20 is the PT100 circuit found in the Ultimainboard V2.x
170 209
 // 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950
210
+// 66 is 4.7M High Temperature thermistor from Dyze Design
171 211
 // 70 is the 100K thermistor found in the bq Hephestos 2
172 212
 //
173 213
 //    1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k
@@ -184,7 +224,7 @@
184 224
 //     Use it for Testing or Development purposes. NEVER for production machine.
185 225
 //#define DUMMY_THERMISTOR_998_VALUE 25
186 226
 //#define DUMMY_THERMISTOR_999_VALUE 100
187
-// :{ '0': "Not used", '4': "10k !! do not use for a hotend. Bad resolution at high temp. !!", '1': "100k / 4.7k - EPCOS", '51': "100k / 1k - EPCOS", '6': "100k / 4.7k EPCOS - Not as accurate as Table 1", '5': "100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '7': "100k / 4.7k Honeywell 135-104LAG-J01", '71': "100k / 4.7k Honeywell 135-104LAF-J01", '8': "100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT", '9': "100k / 4.7k GE Sensing AL03006-58.2K-97-G1", '10': "100k / 4.7k RS 198-961", '11': "100k / 4.7k beta 3950 1%", '12': "100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)", '13': "100k Hisens 3950  1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'", '60': "100k Maker's Tool Works Kapton Bed Thermistor beta=3950", '55': "100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '2': "200k / 4.7k - ATC Semitec 204GT-2", '52': "200k / 1k - ATC Semitec 204GT-2", '-3': "Thermocouple + MAX31855 (only for sensor 0)", '-2': "Thermocouple + MAX6675 (only for sensor 0)", '-1': "Thermocouple + AD595", '3': "Mendel-parts / 4.7k", '1047': "Pt1000 / 4.7k", '1010': "Pt1000 / 1k (non standard)", '20': "PT100 (Ultimainboard V2.x)", '147': "Pt100 / 4.7k", '110': "Pt100 / 1k (non-standard)", '998': "Dummy 1", '999': "Dummy 2" }
227
+// :{ '0': "Not used",'1':"100k / 4.7k - EPCOS",'2':"200k / 4.7k - ATC Semitec 204GT-2",'3':"Mendel-parts / 4.7k",'4':"10k !! do not use for a hotend. Bad resolution at high temp. !!",'5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'6':"100k / 4.7k EPCOS - Not as accurate as Table 1",'7':"100k / 4.7k Honeywell 135-104LAG-J01",'8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT",'9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1",'10':"100k / 4.7k RS 198-961",'11':"100k / 4.7k beta 3950 1%",'12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)",'13':"100k Hisens 3950  1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'",'20':"PT100 (Ultimainboard V2.x)",'51':"100k / 1k - EPCOS",'52':"200k / 1k - ATC Semitec 204GT-2",'55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950",'66':"Dyze Design 4.7M High Temperature thermistor",'70':"the 100K thermistor found in the bq Hephestos 2",'71':"100k / 4.7k Honeywell 135-104LAF-J01",'147':"Pt100 / 4.7k",'1047':"Pt1000 / 4.7k",'110':"Pt100 / 1k (non-standard)",'1010':"Pt1000 / 1k (non standard)",'-3':"Thermocouple + MAX31855 (only for sensor 0)",'-2':"Thermocouple + MAX6675 (only for sensor 0)",'-1':"Thermocouple + AD595",'998':"Dummy 1",'999':"Dummy 2" }
188 228
 #define TEMP_SENSOR_0 1
189 229
 #define TEMP_SENSOR_1 0
190 230
 #define TEMP_SENSOR_2 0
@@ -223,10 +263,6 @@
223 263
 #define HEATER_3_MAXTEMP 275
224 264
 #define BED_MAXTEMP 150
225 265
 
226
-// If you want the M105 heater power reported in watts, define the BED_WATTS, and (shared for all extruders) EXTRUDER_WATTS
227
-//#define EXTRUDER_WATTS (12.0*12.0/6.7) // P=U^2/R
228
-//#define BED_WATTS (12.0*12.0/1.1)      // P=U^2/R
229
-
230 266
 //===========================================================================
231 267
 //============================= PID Settings ================================
232 268
 //===========================================================================
@@ -241,8 +277,8 @@
241 277
   //#define PID_DEBUG // Sends debug data to the serial port.
242 278
   //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX
243 279
   //#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
244
-  //#define PID_PARAMS_PER_EXTRUDER // Uses separate PID parameters for each extruder (useful for mismatched extruders)
245
-                                    // Set/get with gcode: M301 E[extruder number, 0-2]
280
+  //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders)
281
+                                  // Set/get with gcode: M301 E[extruder number, 0-2]
246 282
   #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature
247 283
                                   // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max.
248 284
   #define PID_INTEGRAL_DRIVE_MAX PID_MAX  //limit for the integral term
@@ -384,18 +420,79 @@
384 420
 #endif
385 421
 
386 422
 // Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup).
387
-const bool X_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
388
-const bool Y_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
389
-const bool Z_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
390
-const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
391
-const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
392
-const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
393
-const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
423
+#define X_MIN_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
424
+#define Y_MIN_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
425
+#define Z_MIN_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
426
+#define X_MAX_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
427
+#define Y_MAX_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
428
+#define Z_MAX_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
429
+#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
394 430
 
395 431
 //===========================================================================
396 432
 //============================= Z Probe Options =============================
397 433
 //===========================================================================
398 434
 
435
+//
436
+// Probe Type
437
+// Probes are sensors/switches that are activated / deactivated before/after use.
438
+//
439
+// Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc.
440
+// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below.
441
+//
442
+// Use M851 to set the Z probe vertical offset from the nozzle. Store with M500.
443
+//
444
+
445
+// A Fix-Mounted Probe either doesn't deploy or needs manual deployment.
446
+// For example an inductive probe, or a setup that uses the nozzle to probe.
447
+// An inductive probe must be deactivated to go below
448
+// its trigger-point if hardware endstops are active.
449
+//#define FIX_MOUNTED_PROBE
450
+
451
+// The BLTouch probe emulates a servo probe.
452
+//#define BLTOUCH
453
+
454
+// Z Servo Probe, such as an endstop switch on a rotating arm.
455
+//#define Z_ENDSTOP_SERVO_NR 0
456
+//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles
457
+
458
+// Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
459
+//#define Z_PROBE_SLED
460
+//#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.
461
+
462
+// Z Probe to nozzle (X,Y) offset, relative to (0, 0).
463
+// X and Y offsets must be integers.
464
+//
465
+// In the following example the X and Y offsets are both positive:
466
+// #define X_PROBE_OFFSET_FROM_EXTRUDER 10
467
+// #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
468
+//
469
+//    +-- BACK ---+
470
+//    |           |
471
+//  L |    (+) P  | R <-- probe (20,20)
472
+//  E |           | I
473
+//  F | (-) N (+) | G <-- nozzle (10,10)
474
+//  T |           | H
475
+//    |    (-)    | T
476
+//    |           |
477
+//    O-- FRONT --+
478
+//  (0,0)
479
+#define X_PROBE_OFFSET_FROM_EXTRUDER -25     // X offset: -left  +right  [of the nozzle]
480
+#define Y_PROBE_OFFSET_FROM_EXTRUDER -29     // Y offset: -front +behind [the nozzle]
481
+#define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35  // Z offset: -below +above  [the nozzle]
482
+
483
+// X and Y axis travel speed (mm/m) between probes
484
+#define XY_PROBE_SPEED 8000
485
+// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
486
+#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
487
+// Speed for the "accurate" probe of each point
488
+#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
489
+// Use double touch for probing
490
+//#define PROBE_DOUBLE_TOUCH
491
+
492
+//
493
+// Allen Key Probe is defined in the Delta example configurations.
494
+//
495
+
399 496
 // Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z Probe and a Z-min-endstop on the same machine.
400 497
 // With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing.
401 498
 //
@@ -407,7 +504,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
407 504
 // To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN.
408 505
 //
409 506
 // For a servo-based Z probe, you must set up servo support below, including
410
-// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES.
507
+// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and Z_SERVO_ANGLES.
411 508
 //
412 509
 // - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin.
413 510
 // - Use 5V for powered (usu. inductive) sensors.
@@ -440,6 +537,21 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
440 537
 // If you're using the Z MIN endstop connector for your Z probe, this has no effect.
441 538
 //#define DISABLE_Z_MIN_PROBE_ENDSTOP
442 539
 
540
+// Enable Z Probe Repeatability test to see how accurate your probe is
541
+//#define Z_MIN_PROBE_REPEATABILITY_TEST
542
+
543
+//
544
+// Probe Raise options provide clearance for the probe to deploy, stow, and travel.
545
+//
546
+#define Z_PROBE_DEPLOY_HEIGHT 15 // Raise to make room for the probe to deploy / stow
547
+#define Z_PROBE_TRAVEL_HEIGHT 5  // Raise between probing points.
548
+
549
+//
550
+// For M851 give a range for adjusting the Z probe offset
551
+//
552
+#define Z_PROBE_OFFSET_RANGE_MIN -20
553
+#define Z_PROBE_OFFSET_RANGE_MAX 20
554
+
443 555
 // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
444 556
 // :{0:'Low',1:'High'}
445 557
 #define X_ENABLE_ON 0
@@ -476,8 +588,9 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
476 588
 #define INVERT_E3_DIR false
477 589
 
478 590
 // @section homing
479
-//#define MIN_Z_HEIGHT_FOR_HOMING 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
480
-                                    // Be sure you have this distance over your Z_MAX_POS in case.
591
+
592
+//#define Z_HOMING_HEIGHT 4  // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
593
+                             // Be sure you have this distance over your Z_MAX_POS in case.
481 594
 
482 595
 // ENDSTOP SETTINGS:
483 596
 // Sets direction of endstops when homing; 1=MAX, -1=MIN
@@ -507,7 +620,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
507 620
                                  // It is assumed that when logic high = filament available
508 621
                                  //                    when logic  low = filament ran out
509 622
 #if ENABLED(FILAMENT_RUNOUT_SENSOR)
510
-  const bool FIL_RUNOUT_INVERTING = true;  // Should be uncommented and true or false should assigned
623
+  const bool FIL_RUNOUT_INVERTING = false; // set to true to invert the logic of the sensor.
511 624
   #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined.
512 625
   #define FILAMENT_RUNOUT_SCRIPT "M600"
513 626
 #endif
@@ -519,10 +632,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
519 632
 //#define MESH_BED_LEVELING    // Enable mesh bed leveling.
520 633
 
521 634
 #if ENABLED(MESH_BED_LEVELING)
522
-  #define MESH_MIN_X 10
523
-  #define MESH_MAX_X (X_MAX_POS - (MESH_MIN_X))
524
-  #define MESH_MIN_Y 10
525
-  #define MESH_MAX_Y (Y_MAX_POS - (MESH_MIN_Y))
635
+  #define MESH_INSET 10        // Mesh inset margin on print area
526 636
   #define MESH_NUM_X_POINTS 3  // Don't use more than 7 points per axis, implementation limited.
527 637
   #define MESH_NUM_Y_POINTS 3
528 638
   #define MESH_HOME_SEARCH_Z 4  // Z after Home, bed somewhere below but above 0.0.
@@ -544,8 +654,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
544 654
 // @section bedlevel
545 655
 
546 656
 //#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line)
657
+
658
+// Enable this feature to get detailed logging of G28, G29, M48, etc.
659
+// Logging is off by default. Enable this logging feature with 'M111 S32'.
660
+// NOTE: Requires a huge amount of PROGMEM.
547 661
 //#define DEBUG_LEVELING_FEATURE
548
-#define Z_MIN_PROBE_REPEATABILITY_TEST  // If not commented out, Z Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
549 662
 
550 663
 #if ENABLED(AUTO_BED_LEVELING_FEATURE)
551 664
 
@@ -588,58 +701,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
588 701
     #define ABL_PROBE_PT_3_X 170
589 702
     #define ABL_PROBE_PT_3_Y 20
590 703
 
591
-  #endif // AUTO_BED_LEVELING_GRID
592
-
593
-  // Z Probe to nozzle (X,Y) offset, relative to (0, 0).
594
-  // X and Y offsets must be integers.
595
-  //
596
-  // In the following example the X and Y offsets are both positive:
597
-  // #define X_PROBE_OFFSET_FROM_EXTRUDER 10
598
-  // #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
599
-  //
600
-  //    +-- BACK ---+
601
-  //    |           |
602
-  //  L |    (+) P  | R <-- probe (20,20)
603
-  //  E |           | I
604
-  //  F | (-) N (+) | G <-- nozzle (10,10)
605
-  //  T |           | H
606
-  //    |    (-)    | T
607
-  //    |           |
608
-  //    O-- FRONT --+
609
-  //  (0,0)
610
-  #define X_PROBE_OFFSET_FROM_EXTRUDER -25     // X offset: -left  +right  [of the nozzle]
611
-  #define Y_PROBE_OFFSET_FROM_EXTRUDER -29     // Y offset: -front +behind [the nozzle]
612
-  #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35  // Z offset: -below +above  [the nozzle]
613
-
614
-  #define XY_TRAVEL_SPEED 8000         // X and Y axis travel speed between probes, in mm/min.
615
-
616
-  #define Z_RAISE_BEFORE_PROBING 15   // How much the Z axis will be raised before traveling to the first probing point.
617
-  #define Z_RAISE_BETWEEN_PROBINGS 5  // How much the Z axis will be raised when traveling from between next probing points.
618
-  #define Z_RAISE_AFTER_PROBING 15    // How much the Z axis will be raised after the last probing point.
704
+  #endif // !AUTO_BED_LEVELING_GRID
619 705
 
620 706
   //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine.
621 707
                                                                              // Useful to retract a deployable Z probe.
622 708
 
623
-  // Probes are sensors/switches that need to be activated before they can be used
624
-  // and deactivated after their use.
625
-  // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE
626
-
627
-  // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER
628
-  // when the hardware endstops are active.
629
-  //#define FIX_MOUNTED_PROBE
630
-
631
-  // A Servo Probe can be defined in the servo section below.
632
-
633
-  // An Allen Key Probe is currently predefined only in the delta example configurations.
634
-
635
-  // Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
636
-  //#define Z_PROBE_SLED
637
-  //#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.
638
-
639
-  // A Mechanical Probe is any probe that either doesn't deploy or needs manual deployment
640
-  // For example any setup that uses the nozzle itself as a probe.
641
-  //#define MECHANICAL_PROBE
642
-
643 709
   // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing,
644 710
   // it is highly recommended you also enable Z_SAFE_HOMING below!
645 711
 
@@ -648,18 +714,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
648 714
 
649 715
 // @section homing
650 716
 
651
-// The position of the homing switches
652
-//#define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used
653
-//#define BED_CENTER_AT_0_0  // If defined, the center of the bed is at (X=0, Y=0)
654
-
655
-// Manual homing switch locations:
656
-// For deltabots this means top and center of the Cartesian print volume.
657
-#if ENABLED(MANUAL_HOME_POSITIONS)
658
-  #define MANUAL_X_HOME_POS 0
659
-  #define MANUAL_Y_HOME_POS 0
660
-  #define MANUAL_Z_HOME_POS 0
661
-  //#define MANUAL_Z_HOME_POS 402 // For delta: Distance between nozzle and print surface after homing.
662
-#endif
717
+// The center of the bed is at (X=0, Y=0)
718
+//#define BED_CENTER_AT_0_0
719
+
720
+// Manually set the home position. Leave these undefined for automatic settings.
721
+// For DELTA this is the top-center of the Cartesian print volume.
722
+//#define MANUAL_X_HOME_POS 0
723
+//#define MANUAL_Y_HOME_POS 0
724
+//#define MANUAL_Z_HOME_POS 0 // Distance between the nozzle to printbed after homing
663 725
 
664 726
 // Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
665 727
 //
@@ -667,7 +729,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
667 729
 //
668 730
 // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
669 731
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
670
-// - Position the Z probe in a defined XY point before Z Homing when homing all axes (G28).
732
+// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
671 733
 // - Prevent Z homing when the Z probe is outside bed area.
672 734
 //#define Z_SAFE_HOMING
673 735
 
@@ -676,14 +738,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
676 738
   #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2)    // Y point for Z homing when homing all axis (G28).
677 739
 #endif
678 740
 
741
+// Homing speeds (mm/m)
742
+#define HOMING_FEEDRATE_XY (50*60)
743
+#define HOMING_FEEDRATE_Z  (4*60)
679 744
 
680
-// @section movement
681
-
682
-/**
683
- * MOVEMENT SETTINGS
684
- */
685
-
686
-#define HOMING_FEEDRATE {50*60, 50*60, 4*60, 0}  // set the homing speeds (mm/min)
745
+//
746
+// MOVEMENT SETTINGS
747
+// @section motion
748
+//
687 749
 
688 750
 // default settings
689 751
 
@@ -705,18 +767,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
705 767
 //============================= Additional Features ===========================
706 768
 //=============================================================================
707 769
 
708
-// @section more
709
-
710
-// Custom M code points
711
-#define CUSTOM_M_CODES
712
-#if ENABLED(CUSTOM_M_CODES)
713
-  #if ENABLED(AUTO_BED_LEVELING_FEATURE)
714
-    #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851
715
-    #define Z_PROBE_OFFSET_RANGE_MIN -20
716
-    #define Z_PROBE_OFFSET_RANGE_MAX 20
717
-  #endif
718
-#endif
719
-
720 770
 // @section extras
721 771
 
722 772
 //
@@ -748,22 +798,107 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
748 798
 //
749 799
 //#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose
750 800
 
801
+//
802
+// G20/G21 Inch mode support
803
+//
804
+//#define INCH_MODE_SUPPORT
805
+
806
+//
807
+// M149 Set temperature units support
808
+//
809
+//#define TEMPERATURE_UNITS_SUPPORT
810
+
751 811
 // @section temperature
752 812
 
753 813
 // Preheat Constants
754
-#define PLA_PREHEAT_HOTEND_TEMP 180
755
-#define PLA_PREHEAT_HPB_TEMP 70
756
-#define PLA_PREHEAT_FAN_SPEED 0   // Insert Value between 0 and 255
814
+#define PREHEAT_1_TEMP_HOTEND 180
815
+#define PREHEAT_1_TEMP_BED     70
816
+#define PREHEAT_1_FAN_SPEED     0 // Value from 0 to 255
817
+
818
+#define PREHEAT_2_TEMP_HOTEND 240
819
+#define PREHEAT_2_TEMP_BED    110
820
+#define PREHEAT_2_FAN_SPEED     0 // Value from 0 to 255
757 821
 
758
-#define ABS_PREHEAT_HOTEND_TEMP 240
759
-#define ABS_PREHEAT_HPB_TEMP 110
760
-#define ABS_PREHEAT_FAN_SPEED 0   // Insert Value between 0 and 255
822
+//
823
+// Nozzle Park -- EXPERIMENTAL
824
+//
825
+// When enabled allows the user to define a special XYZ position, inside the
826
+// machine's topology, to park the nozzle when idle or when receiving the G27
827
+// command.
828
+//
829
+// The "P" paramenter controls what is the action applied to the Z axis:
830
+//    P0: (Default) If current Z-pos is lower than Z-park then the nozzle will
831
+//        be raised to reach Z-park height.
832
+//
833
+//    P1: No matter the current Z-pos, the nozzle will be raised/lowered to
834
+//        reach Z-park height.
835
+//
836
+//    P2: The nozzle height will be raised by Z-park amount but never going over
837
+//        the machine's limit of Z_MAX_POS.
838
+//
839
+//#define NOZZLE_PARK_FEATURE
840
+
841
+#if ENABLED(NOZZLE_PARK_FEATURE)
842
+  // Specify a park position as { X, Y, Z }
843
+  #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 }
844
+#endif
845
+
846
+//
847
+// Clean Nozzle Feature -- EXPERIMENTAL
848
+//
849
+// When enabled allows the user to send G12 to start the nozzle cleaning
850
+// process, the G-Code accepts two parameters:
851
+//   "P" for pattern selection
852
+//   "S" for defining the number of strokes/repetitions
853
+//
854
+// Available list of patterns:
855
+//   P0: This is the default pattern, this process requires a sponge type
856
+//       material at a fixed bed location, the cleaning process is based on
857
+//       "strokes" i.e. back-and-forth movements between the starting and end
858
+//       points.
859
+//
860
+//   P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T"
861
+//       defines the number of zig-zag triangles to be done. "S" defines the
862
+//       number of strokes aka one back-and-forth movement. As an example
863
+//       sending "G12 P1 S1 T3" will execute:
864
+//
865
+//          --
866
+//         |  (X0, Y1) |     /\        /\        /\     | (X1, Y1)
867
+//         |           |    /  \      /  \      /  \    |
868
+//       A |           |   /    \    /    \    /    \   |
869
+//         |           |  /      \  /      \  /      \  |
870
+//         |  (X0, Y0) | /        \/        \/        \ | (X1, Y0)
871
+//          --         +--------------------------------+
872
+//                       |________|_________|_________|
873
+//                           T1        T2        T3
874
+//
875
+// Caveats: End point Z should use the same value as Start point Z.
876
+//
877
+// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments
878
+// may change to add new functionality like different wipe patterns.
879
+//
880
+//#define NOZZLE_CLEAN_FEATURE
881
+
882
+#if ENABLED(NOZZLE_CLEAN_FEATURE)
883
+  // Number of pattern repetitions
884
+  #define NOZZLE_CLEAN_STROKES  12
885
+
886
+  // Specify positions as { X, Y, Z }
887
+  #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)}
888
+  #define NOZZLE_CLEAN_END_POINT   {100, 60, (Z_MIN_POS + 1)}
889
+
890
+  // Moves the nozzle to the initial position
891
+  #define NOZZLE_CLEAN_GOBACK
892
+#endif
761 893
 
762 894
 //
763 895
 // Print job timer
764 896
 //
765 897
 // Enable this option to automatically start and stop the
766
-// print job timer when M104 and M109 commands are received.
898
+// print job timer when M104/M109/M190 commands are received.
899
+// M104 (extruder without wait) - high temp = none, low temp = stop timer
900
+// M109 (extruder with wait) - high temp = start timer, low temp = stop timer
901
+// M190 (bed with wait) - high temp = start timer, low temp = none
767 902
 //
768 903
 // In all cases the timer can be started and stopped using
769 904
 // the following commands:
@@ -796,8 +931,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
796 931
 //
797 932
 // Here you may choose the language used by Marlin on the LCD menus, the following
798 933
 // list of languages are available:
799
-//    en, pl, fr, de, es, ru, bg, it, pt, pt_utf8, pt-br, pt-br_utf8,
800
-//    fi, an, nl, ca, eu, kana, kana_utf8, cn, cz, test
934
+//    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
935
+//    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
936
+//
937
+// :{'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','test':'TEST'}
801 938
 //
802 939
 #define LCD_LANGUAGE en
803 940
 
@@ -945,6 +1082,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
945 1082
 //#define ULTIPANEL
946 1083
 
947 1084
 //
1085
+// Cartesio UI
1086
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1087
+//
1088
+//#define CARTESIO_UI
1089
+
1090
+//
948 1091
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
949 1092
 // http://reprap.org/wiki/PanelOne
950 1093
 //
@@ -957,6 +1100,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
957 1100
 //#define MAKRPANEL
958 1101
 
959 1102
 //
1103
+// ReprapWorld Graphical LCD
1104
+// https://reprapworld.com/?products_details&products_id/1218
1105
+//
1106
+//#define REPRAPWORLD_GRAPHICAL_LCD
1107
+
1108
+//
960 1109
 // Activate one of these if you have a Panucatt Devices
961 1110
 // Viki 2.0 or mini Viki with Graphic LCD
962 1111
 // http://panucatt.com
@@ -1006,7 +1155,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1006 1155
 // is pressed, a value of 10.0 means 10mm per click.
1007 1156
 //
1008 1157
 #define REPRAPWORLD_KEYPAD
1009
-#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1158
+#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1010 1159
 
1011 1160
 //
1012 1161
 // RigidBot Panel V1.0
@@ -1067,6 +1216,15 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1067 1216
 //#define U8GLIB_SSD1306
1068 1217
 
1069 1218
 //
1219
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1220
+//
1221
+//#define SAV_3DGLCD
1222
+#if ENABLED(SAV_3DGLCD)
1223
+  //#define U8GLIB_SSD1306
1224
+  #define U8GLIB_SH1106
1225
+#endif
1226
+
1227
+//
1070 1228
 // CONTROLLER TYPE: Shift register panels
1071 1229
 //
1072 1230
 // 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH
@@ -1094,7 +1252,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1094 1252
 // at zero value, there are 128 effective control positions.
1095 1253
 #define SOFT_PWM_SCALE 0
1096 1254
 
1097
-// Temperature status LEDs that display the hotend and bet temperature.
1255
+// Temperature status LEDs that display the hotend and bed temperature.
1098 1256
 // If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
1099 1257
 // Otherwise the RED led is on. There is 1C hysteresis.
1100 1258
 //#define TEMP_STAT_LEDS
@@ -1126,28 +1284,16 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1126 1284
 //
1127 1285
 //#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
1128 1286
 
1129
-// Servo Endstops
1130
-//
1131
-// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes.
1132
-// Use M851 to set the Z probe vertical offset from the nozzle. Store that setting with M500.
1133
-//
1134
-//#define X_ENDSTOP_SERVO_NR 1
1135
-//#define Y_ENDSTOP_SERVO_NR 2
1136
-//#define Z_ENDSTOP_SERVO_NR 0
1137
-//#define SERVO_ENDSTOP_ANGLES {{0,0}, {0,0}, {70,0}} // X,Y,Z Axis Extend and Retract angles
1287
+// Delay (in microseconds) before the next move will start, to give the servo time to reach its target angle.
1288
+// 300ms is a good value but you can try less delay.
1289
+// If the servo can't reach the requested position, increase it.
1290
+#define SERVO_DELAY 300
1138 1291
 
1139 1292
 // Servo deactivation
1140 1293
 //
1141 1294
 // With this option servos are powered only during movement, then turned off to prevent jitter.
1142 1295
 //#define DEACTIVATE_SERVOS_AFTER_MOVE
1143 1296
 
1144
-#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE)
1145
-  // Delay (in microseconds) before turning the servo off. This depends on the servo speed.
1146
-  // 300ms is a good value but you can try less delay.
1147
-  // If the servo can't reach the requested position, increase it.
1148
-  #define SERVO_DEACTIVATION_DELAY 300
1149
-#endif
1150
-
1151 1297
 /**********************************************************************\
1152 1298
  * Support for a filament diameter sensor
1153 1299
  * Also allows adjustment of diameter at print time (vs  at slicing)
@@ -1178,7 +1324,4 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1178 1324
   //#define FILAMENT_LCD_DISPLAY
1179 1325
 #endif
1180 1326
 
1181
-#include "Configuration_adv.h"
1182
-#include "thermistortables.h"
1183
-
1184
-#endif //CONFIGURATION_H
1327
+#endif // CONFIGURATION_H

+ 294
- 148
Marlin/example_configurations/RigidBot/Configuration.h Parādīt failu

@@ -38,8 +38,18 @@
38 38
 #ifndef CONFIGURATION_H
39 39
 #define CONFIGURATION_H
40 40
 
41
-#include "boards.h"
42
-#include "macros.h"
41
+/**
42
+ *
43
+ *  ***********************************
44
+ *  **  ATTENTION TO ALL DEVELOPERS  **
45
+ *  ***********************************
46
+ *
47
+ * You must increment this version number for every significant change such as,
48
+ * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option.
49
+ *
50
+ * Note: Update also Version.h !
51
+ */
52
+#define CONFIGURATION_H_VERSION 010100
43 53
 
44 54
 //===========================================================================
45 55
 //============================= Getting Started =============================
@@ -73,20 +83,26 @@
73 83
 
74 84
 // @section info
75 85
 
76
-#if ENABLED(USE_AUTOMATIC_VERSIONING)
77
-  #include "_Version.h"
78
-#else
79
-  #include "Version.h"
80
-#endif
81
-
82 86
 // User-specified version info of this build to display in [Pronterface, etc] terminal window during
83 87
 // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
84 88
 // build by the user have been successfully uploaded into firmware.
85 89
 #define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes.
86 90
 #define SHOW_BOOTSCREEN
87
-#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during bootup in line 1
88
-//#define STRING_SPLASH_LINE2 STRING_DISTRIBUTION_DATE // will be shown during bootup in line 2
91
+#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during boot in line 1
92
+#define STRING_SPLASH_LINE2 WEBSITE_URL         // will be shown during boot in line 2
89 93
 
94
+//
95
+// *** VENDORS PLEASE READ *****************************************************
96
+//
97
+// Marlin now allow you to have a vendor boot image to be displayed on machine
98
+// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your
99
+// custom boot image and them the default Marlin boot image is shown.
100
+//
101
+// We suggest for you to take advantage of this new feature and keep the Marlin
102
+// boot image unmodified. For an example have a look at the bq Hephestos 2
103
+// example configuration folder.
104
+//
105
+//#define SHOW_CUSTOM_BOOTSCREEN
90 106
 // @section machine
91 107
 
92 108
 // SERIAL_PORT selects which serial port should be used for communication with the host.
@@ -104,8 +120,11 @@
104 120
 
105 121
 // The following define selects which electronics board you have.
106 122
 // Please choose the name from boards.h that matches your setup
123
+// for Rigidbot version 1 : #define MOTHERBOARD BOARD_RIGIDBOARD
124
+// for Rigidbot Version 2 : #define MOTHERBOARD BOARD_RIGIDBOARD_V2
125
+
107 126
 #ifndef MOTHERBOARD
108
-  #define MOTHERBOARD BOARD_RIGIDBOARD
127
+  #define MOTHERBOARD BOARD_RIGIDBOARD_V2
109 128
 #endif
110 129
 
111 130
 // Optional custom name for your RepStrap or other custom machine
@@ -123,17 +142,40 @@
123 142
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
124 143
 //#define SINGLENOZZLE
125 144
 
145
+// A dual extruder that uses a single stepper motor
146
+// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z
147
+//#define SWITCHING_EXTRUDER
148
+#if ENABLED(SWITCHING_EXTRUDER)
149
+  #define SWITCHING_EXTRUDER_SERVO_NR 0
150
+  #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1
151
+  //#define HOTEND_OFFSET_Z {0.0, 0.0}
152
+#endif
153
+
154
+/**
155
+ * "Mixing Extruder"
156
+ *   - Adds a new code, M165, to set the current mix factors.
157
+ *   - Extends the stepping routines to move multiple steppers in proportion to the mix.
158
+ *   - Optional support for Repetier Host M163, M164, and virtual extruder.
159
+ *   - This implementation supports only a single extruder.
160
+ *   - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
161
+ */
162
+//#define MIXING_EXTRUDER
163
+#if ENABLED(MIXING_EXTRUDER)
164
+  #define MIXING_STEPPERS 2        // Number of steppers in your mixing extruder
165
+  #define MIXING_VIRTUAL_TOOLS 16  // Use the Virtual Tool method with M163 and M164
166
+  //#define DIRECT_MIXING_IN_G1    // Allow ABCDHI mix factors in G1 movement commands
167
+#endif
168
+
126 169
 // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
127 170
 // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
128 171
 // For the other hotends it is their distance from the extruder 0 hotend.
129
-#define EXTRUDER_OFFSET_X {0.0, 36.00} // (in mm) for each extruder, offset of the hotend on the X axis
130
-#define EXTRUDER_OFFSET_Y {0.0, 0.00}  // (in mm) for each extruder, offset of the hotend on the Y axis
172
+#define HOTEND_OFFSET_X {0.0, 36.00} // (in mm) for each extruder, offset of the hotend on the X axis
173
+#define HOTEND_OFFSET_Y {0.0, 0.00}  // (in mm) for each extruder, offset of the hotend on the Y axis
131 174
 
132 175
 //// The following define selects which power supply you have. Please choose the one that matches your setup
133 176
 // 1 = ATX
134 177
 // 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC)
135 178
 // :{1:'ATX',2:'X-Box 360'}
136
-
137 179
 #define POWER_SUPPLY 1
138 180
 
139 181
 // Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it.
@@ -168,6 +210,7 @@
168 210
 // 13 is 100k Hisens 3950  1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE"
169 211
 // 20 is the PT100 circuit found in the Ultimainboard V2.x
170 212
 // 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950
213
+// 66 is 4.7M High Temperature thermistor from Dyze Design
171 214
 // 70 is the 100K thermistor found in the bq Hephestos 2
172 215
 //
173 216
 //    1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k
@@ -184,7 +227,7 @@
184 227
 //     Use it for Testing or Development purposes. NEVER for production machine.
185 228
 //#define DUMMY_THERMISTOR_998_VALUE 25
186 229
 //#define DUMMY_THERMISTOR_999_VALUE 100
187
-// :{ '0': "Not used", '4': "10k !! do not use for a hotend. Bad resolution at high temp. !!", '1': "100k / 4.7k - EPCOS", '51': "100k / 1k - EPCOS", '6': "100k / 4.7k EPCOS - Not as accurate as Table 1", '5': "100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '7': "100k / 4.7k Honeywell 135-104LAG-J01", '71': "100k / 4.7k Honeywell 135-104LAF-J01", '8': "100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT", '9': "100k / 4.7k GE Sensing AL03006-58.2K-97-G1", '10': "100k / 4.7k RS 198-961", '11': "100k / 4.7k beta 3950 1%", '12': "100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)", '13': "100k Hisens 3950  1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'", '60': "100k Maker's Tool Works Kapton Bed Thermistor beta=3950", '55': "100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '2': "200k / 4.7k - ATC Semitec 204GT-2", '52': "200k / 1k - ATC Semitec 204GT-2", '-3': "Thermocouple + MAX31855 (only for sensor 0)", '-2': "Thermocouple + MAX6675 (only for sensor 0)", '-1': "Thermocouple + AD595", '3': "Mendel-parts / 4.7k", '1047': "Pt1000 / 4.7k", '1010': "Pt1000 / 1k (non standard)", '20': "PT100 (Ultimainboard V2.x)", '147': "Pt100 / 4.7k", '110': "Pt100 / 1k (non-standard)", '998': "Dummy 1", '999': "Dummy 2" }
230
+// :{ '0': "Not used",'1':"100k / 4.7k - EPCOS",'2':"200k / 4.7k - ATC Semitec 204GT-2",'3':"Mendel-parts / 4.7k",'4':"10k !! do not use for a hotend. Bad resolution at high temp. !!",'5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'6':"100k / 4.7k EPCOS - Not as accurate as Table 1",'7':"100k / 4.7k Honeywell 135-104LAG-J01",'8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT",'9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1",'10':"100k / 4.7k RS 198-961",'11':"100k / 4.7k beta 3950 1%",'12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)",'13':"100k Hisens 3950  1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'",'20':"PT100 (Ultimainboard V2.x)",'51':"100k / 1k - EPCOS",'52':"200k / 1k - ATC Semitec 204GT-2",'55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950",'66':"Dyze Design 4.7M High Temperature thermistor",'70':"the 100K thermistor found in the bq Hephestos 2",'71':"100k / 4.7k Honeywell 135-104LAF-J01",'147':"Pt100 / 4.7k",'1047':"Pt1000 / 4.7k",'110':"Pt100 / 1k (non-standard)",'1010':"Pt1000 / 1k (non standard)",'-3':"Thermocouple + MAX31855 (only for sensor 0)",'-2':"Thermocouple + MAX6675 (only for sensor 0)",'-1':"Thermocouple + AD595",'998':"Dummy 1",'999':"Dummy 2" }
188 231
 #define TEMP_SENSOR_0 1 // DGlass3D = 5; RigidBot = 1; 3DSv6 = 5
189 232
 #define TEMP_SENSOR_1 0
190 233
 #define TEMP_SENSOR_2 0
@@ -223,10 +266,6 @@
223 266
 #define HEATER_3_MAXTEMP 275
224 267
 #define BED_MAXTEMP 150
225 268
 
226
-// If you want the M105 heater power reported in watts, define the BED_WATTS, and (shared for all extruders) EXTRUDER_WATTS
227
-//#define EXTRUDER_WATTS (12.0*12.0/6.7) // P=U^2/R
228
-//#define BED_WATTS (12.0*12.0/1.1)      // P=U^2/R
229
-
230 269
 //===========================================================================
231 270
 //============================= PID Settings ================================
232 271
 //===========================================================================
@@ -241,8 +280,8 @@
241 280
   //#define PID_DEBUG // Sends debug data to the serial port.
242 281
   //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX
243 282
   //#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
244
-  //#define PID_PARAMS_PER_EXTRUDER // Uses separate PID parameters for each extruder (useful for mismatched extruders)
245
-                                    // Set/get with gcode: M301 E[extruder number, 0-2]
283
+  //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders)
284
+                                  // Set/get with gcode: M301 E[extruder number, 0-2]
246 285
   #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature
247 286
                                   // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max.
248 287
   #define PID_INTEGRAL_DRIVE_MAX PID_MAX  //limit for the integral term
@@ -378,18 +417,79 @@
378 417
 #endif
379 418
 
380 419
 // Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup).
381
-const bool X_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
382
-const bool Y_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
383
-const bool Z_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
384
-const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
385
-const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
386
-const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
387
-const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
420
+#define X_MIN_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
421
+#define Y_MIN_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
422
+#define Z_MIN_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
423
+#define X_MAX_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
424
+#define Y_MAX_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
425
+#define Z_MAX_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
426
+#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
388 427
 
389 428
 //===========================================================================
390 429
 //============================= Z Probe Options =============================
391 430
 //===========================================================================
392 431
 
432
+//
433
+// Probe Type
434
+// Probes are sensors/switches that are activated / deactivated before/after use.
435
+//
436
+// Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc.
437
+// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below.
438
+//
439
+// Use M851 to set the Z probe vertical offset from the nozzle. Store with M500.
440
+//
441
+
442
+// A Fix-Mounted Probe either doesn't deploy or needs manual deployment.
443
+// For example an inductive probe, or a setup that uses the nozzle to probe.
444
+// An inductive probe must be deactivated to go below
445
+// its trigger-point if hardware endstops are active.
446
+//#define FIX_MOUNTED_PROBE
447
+
448
+// The BLTouch probe emulates a servo probe.
449
+//#define BLTOUCH
450
+
451
+// Z Servo Probe, such as an endstop switch on a rotating arm.
452
+//#define Z_ENDSTOP_SERVO_NR 0
453
+//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles
454
+
455
+// Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
456
+//#define Z_PROBE_SLED
457
+//#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.
458
+
459
+// Z Probe to nozzle (X,Y) offset, relative to (0, 0).
460
+// X and Y offsets must be integers.
461
+//
462
+// In the following example the X and Y offsets are both positive:
463
+// #define X_PROBE_OFFSET_FROM_EXTRUDER 10
464
+// #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
465
+//
466
+//    +-- BACK ---+
467
+//    |           |
468
+//  L |    (+) P  | R <-- probe (20,20)
469
+//  E |           | I
470
+//  F | (-) N (+) | G <-- nozzle (10,10)
471
+//  T |           | H
472
+//    |    (-)    | T
473
+//    |           |
474
+//    O-- FRONT --+
475
+//  (0,0)
476
+#define X_PROBE_OFFSET_FROM_EXTRUDER -25     // X offset: -left  +right  [of the nozzle]
477
+#define Y_PROBE_OFFSET_FROM_EXTRUDER -29     // Y offset: -front +behind [the nozzle]
478
+#define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35  // Z offset: -below +above  [the nozzle]
479
+
480
+// X and Y axis travel speed (mm/m) between probes
481
+#define XY_PROBE_SPEED 8000
482
+// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
483
+#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
484
+// Speed for the "accurate" probe of each point
485
+#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
486
+// Use double touch for probing
487
+//#define PROBE_DOUBLE_TOUCH
488
+
489
+//
490
+// Allen Key Probe is defined in the Delta example configurations.
491
+//
492
+
393 493
 // Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z Probe and a Z-min-endstop on the same machine.
394 494
 // With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing.
395 495
 //
@@ -401,7 +501,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
401 501
 // To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN.
402 502
 //
403 503
 // For a servo-based Z probe, you must set up servo support below, including
404
-// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES.
504
+// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and Z_SERVO_ANGLES.
405 505
 //
406 506
 // - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin.
407 507
 // - Use 5V for powered (usu. inductive) sensors.
@@ -434,6 +534,21 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
434 534
 // If you're using the Z MIN endstop connector for your Z probe, this has no effect.
435 535
 //#define DISABLE_Z_MIN_PROBE_ENDSTOP
436 536
 
537
+// Enable Z Probe Repeatability test to see how accurate your probe is
538
+//#define Z_MIN_PROBE_REPEATABILITY_TEST
539
+
540
+//
541
+// Probe Raise options provide clearance for the probe to deploy, stow, and travel.
542
+//
543
+#define Z_PROBE_DEPLOY_HEIGHT 15 // Raise to make room for the probe to deploy / stow
544
+#define Z_PROBE_TRAVEL_HEIGHT 5  // Raise between probing points.
545
+
546
+//
547
+// For M851 give a range for adjusting the Z probe offset
548
+//
549
+#define Z_PROBE_OFFSET_RANGE_MIN -20
550
+#define Z_PROBE_OFFSET_RANGE_MAX 20
551
+
437 552
 // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
438 553
 // :{0:'Low',1:'High'}
439 554
 #define X_ENABLE_ON 0
@@ -470,8 +585,9 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
470 585
 #define INVERT_E3_DIR false
471 586
 
472 587
 // @section homing
473
-//#define MIN_Z_HEIGHT_FOR_HOMING 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
474
-                                    // Be sure you have this distance over your Z_MAX_POS in case.
588
+
589
+//#define Z_HOMING_HEIGHT 4  // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
590
+                             // Be sure you have this distance over your Z_MAX_POS in case.
475 591
 
476 592
 // ENDSTOP SETTINGS:
477 593
 // Sets direction of endstops when homing; 1=MAX, -1=MIN
@@ -501,7 +617,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
501 617
                                  // It is assumed that when logic high = filament available
502 618
                                  //                    when logic  low = filament ran out
503 619
 #if ENABLED(FILAMENT_RUNOUT_SENSOR)
504
-  const bool FIL_RUNOUT_INVERTING = true;  // Should be uncommented and true or false should assigned
620
+  const bool FIL_RUNOUT_INVERTING = false; // set to true to invert the logic of the sensor.
505 621
   #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined.
506 622
   #define FILAMENT_RUNOUT_SCRIPT "M600"
507 623
 #endif
@@ -513,10 +629,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
513 629
 //#define MESH_BED_LEVELING    // Enable mesh bed leveling.
514 630
 
515 631
 #if ENABLED(MESH_BED_LEVELING)
516
-  #define MESH_MIN_X 10
517
-  #define MESH_MAX_X (X_MAX_POS - (MESH_MIN_X))
518
-  #define MESH_MIN_Y 10
519
-  #define MESH_MAX_Y (Y_MAX_POS - (MESH_MIN_Y))
632
+  #define MESH_INSET 10        // Mesh inset margin on print area
520 633
   #define MESH_NUM_X_POINTS 3  // Don't use more than 7 points per axis, implementation limited.
521 634
   #define MESH_NUM_Y_POINTS 3
522 635
   #define MESH_HOME_SEARCH_Z 4  // Z after Home, bed somewhere below but above 0.0.
@@ -538,8 +651,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
538 651
 // @section bedlevel
539 652
 
540 653
 //#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line)
654
+
655
+// Enable this feature to get detailed logging of G28, G29, M48, etc.
656
+// Logging is off by default. Enable this logging feature with 'M111 S32'.
657
+// NOTE: Requires a huge amount of PROGMEM.
541 658
 //#define DEBUG_LEVELING_FEATURE
542
-//#define Z_MIN_PROBE_REPEATABILITY_TEST  // If not commented out, Z Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
543 659
 
544 660
 #if ENABLED(AUTO_BED_LEVELING_FEATURE)
545 661
 
@@ -582,58 +698,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
582 698
     #define ABL_PROBE_PT_3_X 170
583 699
     #define ABL_PROBE_PT_3_Y 20
584 700
 
585
-  #endif // AUTO_BED_LEVELING_GRID
586
-
587
-  // Z Probe to nozzle (X,Y) offset, relative to (0, 0).
588
-  // X and Y offsets must be integers.
589
-  //
590
-  // In the following example the X and Y offsets are both positive:
591
-  // #define X_PROBE_OFFSET_FROM_EXTRUDER 10
592
-  // #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
593
-  //
594
-  //    +-- BACK ---+
595
-  //    |           |
596
-  //  L |    (+) P  | R <-- probe (20,20)
597
-  //  E |           | I
598
-  //  F | (-) N (+) | G <-- nozzle (10,10)
599
-  //  T |           | H
600
-  //    |    (-)    | T
601
-  //    |           |
602
-  //    O-- FRONT --+
603
-  //  (0,0)
604
-  #define X_PROBE_OFFSET_FROM_EXTRUDER -25     // X offset: -left  +right  [of the nozzle]
605
-  #define Y_PROBE_OFFSET_FROM_EXTRUDER -29     // Y offset: -front +behind [the nozzle]
606
-  #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35  // Z offset: -below +above  [the nozzle]
607
-
608
-  #define XY_TRAVEL_SPEED 8000         // X and Y axis travel speed between probes, in mm/min.
609
-
610
-  #define Z_RAISE_BEFORE_PROBING 15   // How much the Z axis will be raised before traveling to the first probing point.
611
-  #define Z_RAISE_BETWEEN_PROBINGS 5  // How much the Z axis will be raised when traveling from between next probing points.
612
-  #define Z_RAISE_AFTER_PROBING 15    // How much the Z axis will be raised after the last probing point.
701
+  #endif // !AUTO_BED_LEVELING_GRID
613 702
 
614 703
   //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine.
615 704
                                                                              // Useful to retract a deployable Z probe.
616 705
 
617
-  // Probes are sensors/switches that need to be activated before they can be used
618
-  // and deactivated after their use.
619
-  // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE
620
-
621
-  // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER
622
-  // when the hardware endstops are active.
623
-  //#define FIX_MOUNTED_PROBE
624
-
625
-  // A Servo Probe can be defined in the servo section below.
626
-
627
-  // An Allen Key Probe is currently predefined only in the delta example configurations.
628
-
629
-  // Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
630
-  //#define Z_PROBE_SLED
631
-  //#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.
632
-
633
-  // A Mechanical Probe is any probe that either doesn't deploy or needs manual deployment
634
-  // For example any setup that uses the nozzle itself as a probe.
635
-  //#define MECHANICAL_PROBE
636
-
637 706
   // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing,
638 707
   // it is highly recommended you also enable Z_SAFE_HOMING below!
639 708
 
@@ -642,18 +711,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
642 711
 
643 712
 // @section homing
644 713
 
645
-// The position of the homing switches
646
-//#define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used
647
-//#define BED_CENTER_AT_0_0  // If defined, the center of the bed is at (X=0, Y=0)
648
-
649
-// Manual homing switch locations:
650
-// For deltabots this means top and center of the Cartesian print volume.
651
-#if ENABLED(MANUAL_HOME_POSITIONS)
652
-  #define MANUAL_X_HOME_POS 0
653
-  #define MANUAL_Y_HOME_POS 0
654
-  #define MANUAL_Z_HOME_POS 0
655
-  //#define MANUAL_Z_HOME_POS 402 // For delta: Distance between nozzle and print surface after homing.
656
-#endif
714
+// The center of the bed is at (X=0, Y=0)
715
+//#define BED_CENTER_AT_0_0
716
+
717
+// Manually set the home position. Leave these undefined for automatic settings.
718
+// For DELTA this is the top-center of the Cartesian print volume.
719
+//#define MANUAL_X_HOME_POS 0
720
+//#define MANUAL_Y_HOME_POS 0
721
+//#define MANUAL_Z_HOME_POS 0 // Distance between the nozzle to printbed after homing
657 722
 
658 723
 // Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
659 724
 //
@@ -661,7 +726,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
661 726
 //
662 727
 // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
663 728
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
664
-// - Position the Z probe in a defined XY point before Z Homing when homing all axes (G28).
729
+// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
665 730
 // - Prevent Z homing when the Z probe is outside bed area.
666 731
 //#define Z_SAFE_HOMING
667 732
 
@@ -670,14 +735,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
670 735
   #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2)    // Y point for Z homing when homing all axis (G28).
671 736
 #endif
672 737
 
738
+// Homing speeds (mm/m)
739
+#define HOMING_FEEDRATE_XY (50*60)
740
+#define HOMING_FEEDRATE_Z  (15*60)
673 741
 
674
-// @section movement
675
-
676
-/**
677
- * MOVEMENT SETTINGS
678
- */
679
-
680
-#define HOMING_FEEDRATE {50*60, 50*60, 15*60, 0}  // set the homing speeds (mm/min)
742
+//
743
+// MOVEMENT SETTINGS
744
+// @section motion
745
+//
681 746
 
682 747
 // default settings
683 748
 
@@ -700,18 +765,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
700 765
 //============================= Additional Features ===========================
701 766
 //=============================================================================
702 767
 
703
-// @section more
704
-
705
-// Custom M code points
706
-#define CUSTOM_M_CODES
707
-#if ENABLED(CUSTOM_M_CODES)
708
-  #if ENABLED(AUTO_BED_LEVELING_FEATURE)
709
-    #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851
710
-    #define Z_PROBE_OFFSET_RANGE_MIN -20
711
-    #define Z_PROBE_OFFSET_RANGE_MAX 20
712
-  #endif
713
-#endif
714
-
715 768
 // @section extras
716 769
 
717 770
 //
@@ -743,22 +796,107 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
743 796
 //
744 797
 //#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose
745 798
 
799
+//
800
+// G20/G21 Inch mode support
801
+//
802
+//#define INCH_MODE_SUPPORT
803
+
804
+//
805
+// M149 Set temperature units support
806
+//
807
+//#define TEMPERATURE_UNITS_SUPPORT
808
+
746 809
 // @section temperature
747 810
 
748 811
 // Preheat Constants
749
-#define PLA_PREHEAT_HOTEND_TEMP 180
750
-#define PLA_PREHEAT_HPB_TEMP 70
751
-#define PLA_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
812
+#define PREHEAT_1_TEMP_HOTEND 180
813
+#define PREHEAT_1_TEMP_BED     70
814
+#define PREHEAT_1_FAN_SPEED   255 // Value from 0 to 255
815
+
816
+#define PREHEAT_2_TEMP_HOTEND 240
817
+#define PREHEAT_2_TEMP_BED    110
818
+#define PREHEAT_2_FAN_SPEED   255 // Value from 0 to 255
819
+
820
+//
821
+// Nozzle Park -- EXPERIMENTAL
822
+//
823
+// When enabled allows the user to define a special XYZ position, inside the
824
+// machine's topology, to park the nozzle when idle or when receiving the G27
825
+// command.
826
+//
827
+// The "P" paramenter controls what is the action applied to the Z axis:
828
+//    P0: (Default) If current Z-pos is lower than Z-park then the nozzle will
829
+//        be raised to reach Z-park height.
830
+//
831
+//    P1: No matter the current Z-pos, the nozzle will be raised/lowered to
832
+//        reach Z-park height.
833
+//
834
+//    P2: The nozzle height will be raised by Z-park amount but never going over
835
+//        the machine's limit of Z_MAX_POS.
836
+//
837
+//#define NOZZLE_PARK_FEATURE
838
+
839
+#if ENABLED(NOZZLE_PARK_FEATURE)
840
+  // Specify a park position as { X, Y, Z }
841
+  #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 }
842
+#endif
843
+
844
+//
845
+// Clean Nozzle Feature -- EXPERIMENTAL
846
+//
847
+// When enabled allows the user to send G12 to start the nozzle cleaning
848
+// process, the G-Code accepts two parameters:
849
+//   "P" for pattern selection
850
+//   "S" for defining the number of strokes/repetitions
851
+//
852
+// Available list of patterns:
853
+//   P0: This is the default pattern, this process requires a sponge type
854
+//       material at a fixed bed location, the cleaning process is based on
855
+//       "strokes" i.e. back-and-forth movements between the starting and end
856
+//       points.
857
+//
858
+//   P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T"
859
+//       defines the number of zig-zag triangles to be done. "S" defines the
860
+//       number of strokes aka one back-and-forth movement. As an example
861
+//       sending "G12 P1 S1 T3" will execute:
862
+//
863
+//          --
864
+//         |  (X0, Y1) |     /\        /\        /\     | (X1, Y1)
865
+//         |           |    /  \      /  \      /  \    |
866
+//       A |           |   /    \    /    \    /    \   |
867
+//         |           |  /      \  /      \  /      \  |
868
+//         |  (X0, Y0) | /        \/        \/        \ | (X1, Y0)
869
+//          --         +--------------------------------+
870
+//                       |________|_________|_________|
871
+//                           T1        T2        T3
872
+//
873
+// Caveats: End point Z should use the same value as Start point Z.
874
+//
875
+// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments
876
+// may change to add new functionality like different wipe patterns.
877
+//
878
+//#define NOZZLE_CLEAN_FEATURE
879
+
880
+#if ENABLED(NOZZLE_CLEAN_FEATURE)
881
+  // Number of pattern repetitions
882
+  #define NOZZLE_CLEAN_STROKES  12
752 883
 
753
-#define ABS_PREHEAT_HOTEND_TEMP 240
754
-#define ABS_PREHEAT_HPB_TEMP 110
755
-#define ABS_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
884
+  // Specify positions as { X, Y, Z }
885
+  #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)}
886
+  #define NOZZLE_CLEAN_END_POINT   {100, 60, (Z_MIN_POS + 1)}
887
+
888
+  // Moves the nozzle to the initial position
889
+  #define NOZZLE_CLEAN_GOBACK
890
+#endif
756 891
 
757 892
 //
758 893
 // Print job timer
759 894
 //
760 895
 // Enable this option to automatically start and stop the
761
-// print job timer when M104 and M109 commands are received.
896
+// print job timer when M104/M109/M190 commands are received.
897
+// M104 (extruder without wait) - high temp = none, low temp = stop timer
898
+// M109 (extruder with wait) - high temp = start timer, low temp = stop timer
899
+// M190 (bed with wait) - high temp = start timer, low temp = none
762 900
 //
763 901
 // In all cases the timer can be started and stopped using
764 902
 // the following commands:
@@ -791,8 +929,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
791 929
 //
792 930
 // Here you may choose the language used by Marlin on the LCD menus, the following
793 931
 // list of languages are available:
794
-//    en, pl, fr, de, es, ru, bg, it, pt, pt_utf8, pt-br, pt-br_utf8,
795
-//    fi, an, nl, ca, eu, kana, kana_utf8, cn, cz, test
932
+//    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
933
+//    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
934
+//
935
+// :{'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','test':'TEST'}
796 936
 //
797 937
 #define LCD_LANGUAGE en
798 938
 
@@ -940,6 +1080,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
940 1080
 //#define ULTIPANEL
941 1081
 
942 1082
 //
1083
+// Cartesio UI
1084
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1085
+//
1086
+//#define CARTESIO_UI
1087
+
1088
+//
943 1089
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
944 1090
 // http://reprap.org/wiki/PanelOne
945 1091
 //
@@ -952,6 +1098,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
952 1098
 //#define MAKRPANEL
953 1099
 
954 1100
 //
1101
+// ReprapWorld Graphical LCD
1102
+// https://reprapworld.com/?products_details&products_id/1218
1103
+//
1104
+//#define REPRAPWORLD_GRAPHICAL_LCD
1105
+
1106
+//
955 1107
 // Activate one of these if you have a Panucatt Devices
956 1108
 // Viki 2.0 or mini Viki with Graphic LCD
957 1109
 // http://panucatt.com
@@ -1003,7 +1155,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1003 1155
 // is pressed, a value of 10.0 means 10mm per click.
1004 1156
 //
1005 1157
 //#define REPRAPWORLD_KEYPAD
1006
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1158
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1007 1159
 
1008 1160
 //
1009 1161
 // RigidBot Panel V1.0
@@ -1064,6 +1216,15 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1064 1216
 //#define U8GLIB_SSD1306
1065 1217
 
1066 1218
 //
1219
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1220
+//
1221
+//#define SAV_3DGLCD
1222
+#if ENABLED(SAV_3DGLCD)
1223
+  //#define U8GLIB_SSD1306
1224
+  #define U8GLIB_SH1106
1225
+#endif
1226
+
1227
+//
1067 1228
 // CONTROLLER TYPE: Shift register panels
1068 1229
 //
1069 1230
 // 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH
@@ -1091,7 +1252,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1091 1252
 // at zero value, there are 128 effective control positions.
1092 1253
 #define SOFT_PWM_SCALE 0
1093 1254
 
1094
-// Temperature status LEDs that display the hotend and bet temperature.
1255
+// Temperature status LEDs that display the hotend and bed temperature.
1095 1256
 // If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
1096 1257
 // Otherwise the RED led is on. There is 1C hysteresis.
1097 1258
 //#define TEMP_STAT_LEDS
@@ -1123,28 +1284,16 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1123 1284
 //
1124 1285
 #define NUM_SERVOS 0 // DGlass3D - Servo index starts with 0 for M280 command
1125 1286
 
1126
-// Servo Endstops
1127
-//
1128
-// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes.
1129
-// Use M851 to set the Z probe vertical offset from the nozzle. Store that setting with M500.
1130
-//
1131
-//#define X_ENDSTOP_SERVO_NR 1
1132
-//#define Y_ENDSTOP_SERVO_NR 2
1133
-//#define Z_ENDSTOP_SERVO_NR 0
1134
-//#define SERVO_ENDSTOP_ANGLES {{0,0}, {0,0}, {70,0}} // X,Y,Z Axis Extend and Retract angles
1287
+// Delay (in microseconds) before the next move will start, to give the servo time to reach its target angle.
1288
+// 300ms is a good value but you can try less delay.
1289
+// If the servo can't reach the requested position, increase it.
1290
+#define SERVO_DELAY 300
1135 1291
 
1136 1292
 // Servo deactivation
1137 1293
 //
1138 1294
 // With this option servos are powered only during movement, then turned off to prevent jitter.
1139 1295
 //#define DEACTIVATE_SERVOS_AFTER_MOVE
1140 1296
 
1141
-#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE)
1142
-  // Delay (in microseconds) before turning the servo off. This depends on the servo speed.
1143
-  // 300ms is a good value but you can try less delay.
1144
-  // If the servo can't reach the requested position, increase it.
1145
-  #define SERVO_DEACTIVATION_DELAY 300
1146
-#endif
1147
-
1148 1297
 /**********************************************************************\
1149 1298
  * Support for a filament diameter sensor
1150 1299
  * Also allows adjustment of diameter at print time (vs  at slicing)
@@ -1175,7 +1324,4 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1175 1324
   //#define FILAMENT_LCD_DISPLAY
1176 1325
 #endif
1177 1326
 
1178
-#include "Configuration_adv.h"
1179
-#include "thermistortables.h"
1180
-
1181
-#endif //CONFIGURATION_H
1327
+#endif // CONFIGURATION_H

+ 148
- 47
Marlin/example_configurations/RigidBot/Configuration_adv.h Parādīt failu

@@ -33,7 +33,18 @@
33 33
 #ifndef CONFIGURATION_ADV_H
34 34
 #define CONFIGURATION_ADV_H
35 35
 
36
-#include "Conditionals.h"
36
+/**
37
+ *
38
+ *  ***********************************
39
+ *  **  ATTENTION TO ALL DEVELOPERS  **
40
+ *  ***********************************
41
+ *
42
+ * You must increment this version number for every significant change such as,
43
+ * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option.
44
+ *
45
+ * Note: Update also Version.h !
46
+ */
47
+#define CONFIGURATION_ADV_H_VERSION 010100
37 48
 
38 49
 // @section temperature
39 50
 
@@ -102,8 +113,8 @@
102 113
 #if ENABLED(PIDTEMP)
103 114
   // this adds an experimental additional term to the heating power, proportional to the extrusion speed.
104 115
   // if Kc is chosen well, the additional required power due to increased melting should be compensated.
105
-  #define PID_ADD_EXTRUSION_RATE
106
-  #if ENABLED(PID_ADD_EXTRUSION_RATE)
116
+  //#define PID_EXTRUSION_SCALING
117
+  #if ENABLED(PID_EXTRUSION_SCALING)
107 118
     #define DEFAULT_Kc (100) //heating power=Kc*(e_speed)
108 119
     #define LPQ_MAX_LEN 50
109 120
   #endif
@@ -128,15 +139,42 @@
128 139
 //The M105 command return, besides traditional information, the ADC value read from temperature sensors.
129 140
 //#define SHOW_TEMP_ADC_VALUES
130 141
 
142
+/**
143
+ * High Temperature Thermistor Support
144
+ *
145
+ * Thermistors able to support high temperature tend to have a hard time getting
146
+ * good readings at room and lower temperatures. This means HEATER_X_RAW_LO_TEMP
147
+ * will probably be caught when the heating element first turns on during the
148
+ * preheating process, which will trigger a min_temp_error as a safety measure
149
+ * and force stop everything.
150
+ * To circumvent this limitation, we allow for a preheat time (during which,
151
+ * min_temp_error won't be triggered) and add a min_temp buffer to handle
152
+ * aberrant readings.
153
+ *
154
+ * If you want to enable this feature for your hotend thermistor(s)
155
+ * uncomment and set values > 0 in the constants below
156
+ */
157
+
158
+// The number of consecutive low temperature errors that can occur
159
+// before a min_temp_error is triggered. (Shouldn't be more than 10.)
160
+//#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 0
161
+
162
+// The number of milliseconds a hotend will preheat before starting to check
163
+// the temperature. This value should NOT be set to the time it takes the
164
+// hot end to reach the target temperature, but the time it takes to reach
165
+// the minimum temperature your thermistor can read. The lower the better/safer.
166
+// This shouldn't need to be more than 30 seconds (30000)
167
+//#define MILLISECONDS_PREHEAT_TIME 0
168
+
131 169
 // @section extruder
132 170
 
133 171
 //  extruder run-out prevention.
134 172
 //if the machine is idle, and the temperature over MINTEMP, every couple of SECONDS some filament is extruded
135 173
 //#define EXTRUDER_RUNOUT_PREVENT
136 174
 #define EXTRUDER_RUNOUT_MINTEMP 190
137
-#define EXTRUDER_RUNOUT_SECONDS 30.
138
-#define EXTRUDER_RUNOUT_ESTEPS 14. //mm filament
139
-#define EXTRUDER_RUNOUT_SPEED 1500.  //extrusion speed
175
+#define EXTRUDER_RUNOUT_SECONDS 30
176
+#define EXTRUDER_RUNOUT_ESTEPS 14   // mm filament
177
+#define EXTRUDER_RUNOUT_SPEED 1500  // extrusion speed
140 178
 #define EXTRUDER_RUNOUT_EXTRUDE 100
141 179
 
142 180
 // @section temperature
@@ -177,24 +215,42 @@
177 215
 #define EXTRUDER_AUTO_FAN_TEMPERATURE 50
178 216
 #define EXTRUDER_AUTO_FAN_SPEED   255  // == full speed
179 217
 
180
-
181 218
 //===========================================================================
182
-//=============================Mechanical Settings===========================
219
+//============================ Mechanical Settings ==========================
183 220
 //===========================================================================
184 221
 
185 222
 // @section homing
186 223
 
187
-#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing
224
+// If you want endstops to stay on (by default) even when not homing
225
+// enable this option. Override at any time with M120, M121.
226
+//#define ENDSTOPS_ALWAYS_ON_DEFAULT
188 227
 
189 228
 // @section extras
190 229
 
191 230
 //#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
192 231
 
232
+// Dual X Steppers
233
+// Uncomment this option to drive two X axis motors.
234
+// The next unused E driver will be assigned to the second X stepper.
235
+//#define X_DUAL_STEPPER_DRIVERS
236
+#if ENABLED(X_DUAL_STEPPER_DRIVERS)
237
+  // Set true if the two X motors need to rotate in opposite directions
238
+  #define INVERT_X2_VS_X_DIR true
239
+#endif
240
+
241
+
242
+// Dual Y Steppers
243
+// Uncomment this option to drive two Y axis motors.
244
+// The next unused E driver will be assigned to the second Y stepper.
245
+//#define Y_DUAL_STEPPER_DRIVERS
246
+#if ENABLED(Y_DUAL_STEPPER_DRIVERS)
247
+  // Set true if the two Y motors need to rotate in opposite directions
248
+  #define INVERT_Y2_VS_Y_DIR true
249
+#endif
250
+
193 251
 // A single Z stepper driver is usually used to drive 2 stepper motors.
194
-// Uncomment this define to utilize a separate stepper driver for each Z axis motor.
195
-// Only a few motherboards support this, like RAMPS, which have dual extruder support (the 2nd, often unused, extruder driver is used
196
-// to control the 2nd Z axis stepper motor). The pins are currently only defined for a RAMPS motherboards.
197
-// On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder.
252
+// Uncomment this option to use a separate stepper driver for each Z axis motor.
253
+// The next unused E driver will be assigned to the second Z stepper.
198 254
 //#define Z_DUAL_STEPPER_DRIVERS
199 255
 
200 256
 #if ENABLED(Z_DUAL_STEPPER_DRIVERS)
@@ -216,14 +272,6 @@
216 272
 
217 273
 #endif // Z_DUAL_STEPPER_DRIVERS
218 274
 
219
-// Same again but for Y Axis.
220
-//#define Y_DUAL_STEPPER_DRIVERS
221
-
222
-#if ENABLED(Y_DUAL_STEPPER_DRIVERS)
223
-  // Define if the two Y drives need to rotate in opposite directions
224
-  #define INVERT_Y2_VS_Y_DIR true
225
-#endif
226
-
227 275
 // Enable this for dual x-carriage printers.
228 276
 // A dual x-carriage design has the advantage that the inactive extruder can be parked which
229 277
 // prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
@@ -237,7 +285,7 @@
237 285
   #define X2_MAX_POS 353    // set maximum to the distance between toolheads when both heads are homed
238 286
   #define X2_HOME_DIR 1     // the second X-carriage always homes to the maximum endstop position
239 287
   #define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position
240
-      // However: In this mode the EXTRUDER_OFFSET_X value for the second extruder provides a software
288
+      // However: In this mode the HOTEND_OFFSET_X value for the second extruder provides a software
241 289
       // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops
242 290
       // without modifying the firmware (through the "M218 T1 X???" command).
243 291
       // Remember: you should set the second extruder x-offset to 0 in your slicer.
@@ -279,7 +327,10 @@
279 327
 
280 328
 #define AXIS_RELATIVE_MODES {false, false, false, false}
281 329
 
282
-//By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
330
+// Allow duplication mode with a basic dual-nozzle extruder
331
+//#define DUAL_NOZZLE_DUPLICATION_MODE
332
+
333
+// By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
283 334
 #define INVERT_X_STEP_PIN false
284 335
 #define INVERT_Y_STEP_PIN false
285 336
 #define INVERT_Z_STEP_PIN false
@@ -351,6 +402,9 @@
351 402
 
352 403
 // @section lcd
353 404
 
405
+// Include a page of printer information in the LCD Main Menu
406
+//#define LCD_INFO_MENU
407
+
354 408
 #if ENABLED(SDSUPPORT)
355 409
 
356 410
   // Some RAMPS and other boards don't detect when an SD card is inserted. You can work
@@ -388,7 +442,6 @@
388 442
   // This option allows you to abort SD printing when any endstop is triggered.
389 443
   // This feature must be enabled with "M540 S1" or from the LCD menu.
390 444
   // To have any effect, endstops must be enabled during SD printing.
391
-  // With ENDSTOPS_ONLY_FOR_HOMING you must send "M120" to enable endstops.
392 445
   //#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED
393 446
 
394 447
 #endif // SDSUPPORT
@@ -404,9 +457,10 @@
404 457
   //#define USE_SMALL_INFOFONT
405 458
 #endif // DOGLCD
406 459
 
407
-// @section more
460
+// @section safety
408 461
 
409
-// The hardware watchdog should reset the microcontroller disabling all outputs, in case the firmware gets stuck and doesn't do temperature regulation.
462
+// The hardware watchdog should reset the microcontroller disabling all outputs,
463
+// in case the firmware gets stuck and doesn't do temperature regulation.
410 464
 #define USE_WATCHDOG
411 465
 
412 466
 #if ENABLED(USE_WATCHDOG)
@@ -445,6 +499,27 @@
445 499
   #define D_FILAMENT 1.75
446 500
 #endif
447 501
 
502
+// Implementation of a linear pressure control
503
+// Assumption: advance = k * (delta velocity)
504
+// K=0 means advance disabled. A good value for a gregs wade extruder will be around K=75
505
+//#define LIN_ADVANCE
506
+
507
+#if ENABLED(LIN_ADVANCE)
508
+  #define LIN_ADVANCE_K 75
509
+#endif
510
+
511
+// @section leveling
512
+
513
+// Default mesh area is an area with an inset margin on the print area.
514
+// Below are the macros that are used to define the borders for the mesh area,
515
+// made available here for specialized needs, ie dual extruder setup.
516
+#if ENABLED(MESH_BED_LEVELING)
517
+  #define MESH_MIN_X (X_MIN_POS + MESH_INSET)
518
+  #define MESH_MAX_X (X_MAX_POS - (MESH_INSET))
519
+  #define MESH_MIN_Y (Y_MIN_POS + MESH_INSET)
520
+  #define MESH_MAX_Y (Y_MAX_POS - (MESH_INSET))
521
+#endif
522
+
448 523
 // @section extras
449 524
 
450 525
 // Arc interpretation settings:
@@ -476,12 +551,27 @@ const unsigned int dropsegments = 5; //everything with less than this number of
476 551
   #define BLOCK_BUFFER_SIZE 16 // maximize block buffer
477 552
 #endif
478 553
 
479
-// @section more
554
+// @section serial
480 555
 
481
-//The ASCII buffer for receiving from the serial:
556
+// The ASCII buffer for serial input
482 557
 #define MAX_CMD_SIZE 96
483 558
 #define BUFSIZE 8
484 559
 
560
+// Transfer Buffer Size
561
+// To save 386 bytes of PROGMEM (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0.
562
+// To buffer a simple "ok" you need 4 bytes.
563
+// For ADVANCED_OK (M105) you need 32 bytes.
564
+// For debug-echo: 128 bytes for the optimal speed.
565
+// Other output doesn't need to be that speedy.
566
+// :[0,2,4,8,16,32,64,128,256]
567
+#define TX_BUFFER_SIZE 0
568
+
569
+// Enable an emergency-command parser to intercept certain commands as they
570
+// enter the serial receive buffer, so they cannot be blocked.
571
+// Currently handles M108, M112, M410
572
+// Does not work on boards using AT90USB (USBCON) processors!
573
+//#define EMERGENCY_PARSER
574
+
485 575
 // Bad Serial-connections can miss a received command by sending an 'ok'
486 576
 // Therefore some clients abort after 30 seconds in a timeout.
487 577
 // Some other clients start sending commands while receiving a 'wait'.
@@ -513,16 +603,30 @@ const unsigned int dropsegments = 5; //everything with less than this number of
513 603
 
514 604
 // Add support for experimental filament exchange support M600; requires display
515 605
 #if ENABLED(ULTIPANEL)
516
-  //#define FILAMENTCHANGEENABLE
517
-  #if ENABLED(FILAMENTCHANGEENABLE)
518
-    #define FILAMENTCHANGE_XPOS 3
519
-    #define FILAMENTCHANGE_YPOS 3
520
-    #define FILAMENTCHANGE_ZADD 10
521
-    #define FILAMENTCHANGE_FIRSTRETRACT -2
522
-    #define FILAMENTCHANGE_FINALRETRACT -100
523
-    #define AUTO_FILAMENT_CHANGE                //This extrude filament until you press the button on LCD
524
-    #define AUTO_FILAMENT_CHANGE_LENGTH 0.04    //Extrusion length on automatic extrusion loop
525
-    #define AUTO_FILAMENT_CHANGE_FEEDRATE 300   //Extrusion feedrate (mm/min) on automatic extrusion loop
606
+  // #define FILAMENT_CHANGE_FEATURE             // Enable filament exchange menu and M600 g-code (used for runout sensor too)
607
+  #if ENABLED(FILAMENT_CHANGE_FEATURE)
608
+    #define FILAMENT_CHANGE_X_POS 3             // X position of hotend
609
+    #define FILAMENT_CHANGE_Y_POS 3             // Y position of hotend
610
+    #define FILAMENT_CHANGE_Z_ADD 10            // Z addition of hotend (lift)
611
+    #define FILAMENT_CHANGE_XY_FEEDRATE 100     // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
612
+    #define FILAMENT_CHANGE_Z_FEEDRATE 5        // Z axis feedrate in mm/s (not used for delta printers)
613
+    #define FILAMENT_CHANGE_RETRACT_LENGTH 2    // Initial retract in mm
614
+                                                // It is a short retract used immediately after print interrupt before move to filament exchange position
615
+    #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
616
+    #define FILAMENT_CHANGE_UNLOAD_LENGTH 100   // Unload filament length from hotend in mm
617
+                                                // Longer length for bowden printers to unload filament from whole bowden tube,
618
+                                                // shorter lenght for printers without bowden to unload filament from extruder only,
619
+                                                // 0 to disable unloading for manual unloading
620
+    #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10  // Unload filament feedrate in mm/s - filament unloading can be fast
621
+    #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
622
+                                                // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
623
+                                                // Short or zero length for printers without bowden where loading is not used
624
+    #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
625
+    #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
626
+                                                // 0 to disable for manual extrusion
627
+                                                // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
628
+                                                // or until outcoming filament color is not clear for filament color change
629
+    #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
526 630
   #endif
527 631
 #endif
528 632
 
@@ -668,9 +772,9 @@ const unsigned int dropsegments = 5; //everything with less than this number of
668 772
  * devices on the bus.
669 773
  *
670 774
  * ; Example #1
671
- * ; This macro send the string "Marlin" to the slave device with address 0x63
775
+ * ; This macro send the string "Marlin" to the slave device with address 0x63 (99)
672 776
  * ; It uses multiple M155 commands with one B<base 10> arg
673
- * M155 A63  ; Target slave address
777
+ * M155 A99  ; Target slave address
674 778
  * M155 B77  ; M
675 779
  * M155 B97  ; a
676 780
  * M155 B114 ; r
@@ -680,19 +784,16 @@ const unsigned int dropsegments = 5; //everything with less than this number of
680 784
  * M155 S1   ; Send the current buffer
681 785
  *
682 786
  * ; Example #2
683
- * ; Request 6 bytes from slave device with address 0x63
684
- * M156 A63 B5
787
+ * ; Request 6 bytes from slave device with address 0x63 (99)
788
+ * M156 A99 B5
685 789
  *
686 790
  * ; Example #3
687 791
  * ; Example serial output of a M156 request
688
- * echo:i2c-reply: from:63 bytes:5 data:hello
792
+ * echo:i2c-reply: from:99 bytes:5 data:hello
689 793
  */
690 794
 
691 795
 // @section i2cbus
692 796
 
693 797
 //#define EXPERIMENTAL_I2CBUS
694 798
 
695
-#include "Conditionals.h"
696
-#include "SanityCheck.h"
697
-
698
-#endif //CONFIGURATION_ADV_H
799
+#endif // CONFIGURATION_ADV_H

+ 290
- 147
Marlin/example_configurations/SCARA/Configuration.h Parādīt failu

@@ -38,8 +38,18 @@
38 38
 #ifndef CONFIGURATION_H
39 39
 #define CONFIGURATION_H
40 40
 
41
-#include "boards.h"
42
-#include "macros.h"
41
+/**
42
+ *
43
+ *  ***********************************
44
+ *  **  ATTENTION TO ALL DEVELOPERS  **
45
+ *  ***********************************
46
+ *
47
+ * You must increment this version number for every significant change such as,
48
+ * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option.
49
+ *
50
+ * Note: Update also Version.h !
51
+ */
52
+#define CONFIGURATION_H_VERSION 010100
43 53
 
44 54
 //===========================================================================
45 55
 //============================= Getting Started =============================
@@ -98,20 +108,26 @@
98 108
 
99 109
 // @section info
100 110
 
101
-#if ENABLED(USE_AUTOMATIC_VERSIONING)
102
-  #include "_Version.h"
103
-#else
104
-  #include "Version.h"
105
-#endif
106
-
107 111
 // User-specified version info of this build to display in [Pronterface, etc] terminal window during
108 112
 // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
109 113
 // build by the user have been successfully uploaded into firmware.
110 114
 #define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes.
111 115
 #define SHOW_BOOTSCREEN
112
-#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during bootup in line 1
113
-//#define STRING_SPLASH_LINE2 STRING_DISTRIBUTION_DATE // will be shown during bootup in line 2
116
+#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during boot in line 1
117
+#define STRING_SPLASH_LINE2 WEBSITE_URL         // will be shown during boot in line 2
114 118
 
119
+//
120
+// *** VENDORS PLEASE READ *****************************************************
121
+//
122
+// Marlin now allow you to have a vendor boot image to be displayed on machine
123
+// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your
124
+// custom boot image and them the default Marlin boot image is shown.
125
+//
126
+// We suggest for you to take advantage of this new feature and keep the Marlin
127
+// boot image unmodified. For an example have a look at the bq Hephestos 2
128
+// example configuration folder.
129
+//
130
+//#define SHOW_CUSTOM_BOOTSCREEN
115 131
 // @section machine
116 132
 
117 133
 // SERIAL_PORT selects which serial port should be used for communication with the host.
@@ -148,17 +164,40 @@
148 164
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
149 165
 //#define SINGLENOZZLE
150 166
 
167
+// A dual extruder that uses a single stepper motor
168
+// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z
169
+//#define SWITCHING_EXTRUDER
170
+#if ENABLED(SWITCHING_EXTRUDER)
171
+  #define SWITCHING_EXTRUDER_SERVO_NR 0
172
+  #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1
173
+  //#define HOTEND_OFFSET_Z {0.0, 0.0}
174
+#endif
175
+
176
+/**
177
+ * "Mixing Extruder"
178
+ *   - Adds a new code, M165, to set the current mix factors.
179
+ *   - Extends the stepping routines to move multiple steppers in proportion to the mix.
180
+ *   - Optional support for Repetier Host M163, M164, and virtual extruder.
181
+ *   - This implementation supports only a single extruder.
182
+ *   - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
183
+ */
184
+//#define MIXING_EXTRUDER
185
+#if ENABLED(MIXING_EXTRUDER)
186
+  #define MIXING_STEPPERS 2        // Number of steppers in your mixing extruder
187
+  #define MIXING_VIRTUAL_TOOLS 16  // Use the Virtual Tool method with M163 and M164
188
+  //#define DIRECT_MIXING_IN_G1    // Allow ABCDHI mix factors in G1 movement commands
189
+#endif
190
+
151 191
 // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
152 192
 // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
153 193
 // For the other hotends it is their distance from the extruder 0 hotend.
154
-//#define EXTRUDER_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
155
-//#define EXTRUDER_OFFSET_Y {0.0, 5.00}  // (in mm) for each extruder, offset of the hotend on the Y axis
194
+//#define HOTEND_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
195
+//#define HOTEND_OFFSET_Y {0.0, 5.00}  // (in mm) for each extruder, offset of the hotend on the Y axis
156 196
 
157 197
 //// The following define selects which power supply you have. Please choose the one that matches your setup
158 198
 // 1 = ATX
159 199
 // 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC)
160 200
 // :{1:'ATX',2:'X-Box 360'}
161
-
162 201
 #define POWER_SUPPLY 1
163 202
 
164 203
 // Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it.
@@ -193,6 +232,7 @@
193 232
 // 13 is 100k Hisens 3950  1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE"
194 233
 // 20 is the PT100 circuit found in the Ultimainboard V2.x
195 234
 // 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950
235
+// 66 is 4.7M High Temperature thermistor from Dyze Design
196 236
 // 70 is the 100K thermistor found in the bq Hephestos 2
197 237
 //
198 238
 //    1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k
@@ -209,7 +249,7 @@
209 249
 //     Use it for Testing or Development purposes. NEVER for production machine.
210 250
 //#define DUMMY_THERMISTOR_998_VALUE 25
211 251
 //#define DUMMY_THERMISTOR_999_VALUE 100
212
-// :{ '0': "Not used", '4': "10k !! do not use for a hotend. Bad resolution at high temp. !!", '1': "100k / 4.7k - EPCOS", '51': "100k / 1k - EPCOS", '6': "100k / 4.7k EPCOS - Not as accurate as Table 1", '5': "100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '7': "100k / 4.7k Honeywell 135-104LAG-J01", '71': "100k / 4.7k Honeywell 135-104LAF-J01", '8': "100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT", '9': "100k / 4.7k GE Sensing AL03006-58.2K-97-G1", '10': "100k / 4.7k RS 198-961", '11': "100k / 4.7k beta 3950 1%", '12': "100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)", '13': "100k Hisens 3950  1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'", '60': "100k Maker's Tool Works Kapton Bed Thermistor beta=3950", '55': "100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '2': "200k / 4.7k - ATC Semitec 204GT-2", '52': "200k / 1k - ATC Semitec 204GT-2", '-3': "Thermocouple + MAX31855 (only for sensor 0)", '-2': "Thermocouple + MAX6675 (only for sensor 0)", '-1': "Thermocouple + AD595", '3': "Mendel-parts / 4.7k", '1047': "Pt1000 / 4.7k", '1010': "Pt1000 / 1k (non standard)", '20': "PT100 (Ultimainboard V2.x)", '147': "Pt100 / 4.7k", '110': "Pt100 / 1k (non-standard)", '998': "Dummy 1", '999': "Dummy 2" }
252
+// :{ '0': "Not used",'1':"100k / 4.7k - EPCOS",'2':"200k / 4.7k - ATC Semitec 204GT-2",'3':"Mendel-parts / 4.7k",'4':"10k !! do not use for a hotend. Bad resolution at high temp. !!",'5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'6':"100k / 4.7k EPCOS - Not as accurate as Table 1",'7':"100k / 4.7k Honeywell 135-104LAG-J01",'8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT",'9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1",'10':"100k / 4.7k RS 198-961",'11':"100k / 4.7k beta 3950 1%",'12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)",'13':"100k Hisens 3950  1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'",'20':"PT100 (Ultimainboard V2.x)",'51':"100k / 1k - EPCOS",'52':"200k / 1k - ATC Semitec 204GT-2",'55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950",'66':"Dyze Design 4.7M High Temperature thermistor",'70':"the 100K thermistor found in the bq Hephestos 2",'71':"100k / 4.7k Honeywell 135-104LAF-J01",'147':"Pt100 / 4.7k",'1047':"Pt1000 / 4.7k",'110':"Pt100 / 1k (non-standard)",'1010':"Pt1000 / 1k (non standard)",'-3':"Thermocouple + MAX31855 (only for sensor 0)",'-2':"Thermocouple + MAX6675 (only for sensor 0)",'-1':"Thermocouple + AD595",'998':"Dummy 1",'999':"Dummy 2" }
213 253
 #define TEMP_SENSOR_0 1
214 254
 #define TEMP_SENSOR_1 0
215 255
 #define TEMP_SENSOR_2 0
@@ -248,10 +288,6 @@
248 288
 #define HEATER_3_MAXTEMP 275
249 289
 #define BED_MAXTEMP 150
250 290
 
251
-// If you want the M105 heater power reported in watts, define the BED_WATTS, and (shared for all extruders) EXTRUDER_WATTS
252
-#define EXTRUDER_WATTS (2*2/5.9)       // P=U^2/R
253
-#define BED_WATTS (5.45*5.45/2.2)      // P=U^2/R
254
-
255 291
 //===========================================================================
256 292
 //============================= PID Settings ================================
257 293
 //===========================================================================
@@ -266,8 +302,8 @@
266 302
   //#define PID_DEBUG // Sends debug data to the serial port.
267 303
   //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX
268 304
   //#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
269
-  //#define PID_PARAMS_PER_EXTRUDER // Uses separate PID parameters for each extruder (useful for mismatched extruders)
270
-                                    // Set/get with gcode: M301 E[extruder number, 0-2]
305
+  //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders)
306
+                                  // Set/get with gcode: M301 E[extruder number, 0-2]
271 307
   #define PID_FUNCTIONAL_RANGE 20 // If the temperature difference between the target temperature and the actual temperature
272 308
                                   // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max.
273 309
   #define PID_INTEGRAL_DRIVE_MAX PID_MAX  //limit for the integral term
@@ -392,18 +428,79 @@
392 428
 #endif
393 429
 
394 430
 // Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup).
395
-const bool X_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
396
-const bool Y_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
397
-const bool Z_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
398
-const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
399
-const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
400
-const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
401
-const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
431
+#define X_MIN_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
432
+#define Y_MIN_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
433
+#define Z_MIN_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
434
+#define X_MAX_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
435
+#define Y_MAX_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
436
+#define Z_MAX_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
437
+#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
402 438
 
403 439
 //===========================================================================
404 440
 //============================= Z Probe Options =============================
405 441
 //===========================================================================
406 442
 
443
+//
444
+// Probe Type
445
+// Probes are sensors/switches that are activated / deactivated before/after use.
446
+//
447
+// Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc.
448
+// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below.
449
+//
450
+// Use M851 to set the Z probe vertical offset from the nozzle. Store with M500.
451
+//
452
+
453
+// A Fix-Mounted Probe either doesn't deploy or needs manual deployment.
454
+// For example an inductive probe, or a setup that uses the nozzle to probe.
455
+// An inductive probe must be deactivated to go below
456
+// its trigger-point if hardware endstops are active.
457
+//#define FIX_MOUNTED_PROBE
458
+
459
+// The BLTouch probe emulates a servo probe.
460
+//#define BLTOUCH
461
+
462
+// Z Servo Probe, such as an endstop switch on a rotating arm.
463
+//#define Z_ENDSTOP_SERVO_NR 0
464
+//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles
465
+
466
+// Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
467
+//#define Z_PROBE_SLED
468
+//#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.
469
+
470
+// Z Probe to nozzle (X,Y) offset, relative to (0, 0).
471
+// X and Y offsets must be integers.
472
+//
473
+// In the following example the X and Y offsets are both positive:
474
+// #define X_PROBE_OFFSET_FROM_EXTRUDER 10
475
+// #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
476
+//
477
+//    +-- BACK ---+
478
+//    |           |
479
+//  L |    (+) P  | R <-- probe (20,20)
480
+//  E |           | I
481
+//  F | (-) N (+) | G <-- nozzle (10,10)
482
+//  T |           | H
483
+//    |    (-)    | T
484
+//    |           |
485
+//    O-- FRONT --+
486
+//  (0,0)
487
+#define X_PROBE_OFFSET_FROM_EXTRUDER -25     // X offset: -left  +right  [of the nozzle]
488
+#define Y_PROBE_OFFSET_FROM_EXTRUDER -29     // Y offset: -front +behind [the nozzle]
489
+#define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35  // Z offset: -below +above  [the nozzle]
490
+
491
+// X and Y axis travel speed (mm/m) between probes
492
+#define XY_PROBE_SPEED 8000
493
+// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
494
+#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
495
+// Speed for the "accurate" probe of each point
496
+#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
497
+// Use double touch for probing
498
+//#define PROBE_DOUBLE_TOUCH
499
+
500
+//
501
+// Allen Key Probe is defined in the Delta example configurations.
502
+//
503
+
407 504
 // Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z Probe and a Z-min-endstop on the same machine.
408 505
 // With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing.
409 506
 //
@@ -415,7 +512,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
415 512
 // To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN.
416 513
 //
417 514
 // For a servo-based Z probe, you must set up servo support below, including
418
-// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES.
515
+// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and Z_SERVO_ANGLES.
419 516
 //
420 517
 // - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin.
421 518
 // - Use 5V for powered (usu. inductive) sensors.
@@ -448,6 +545,21 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
448 545
 // If you're using the Z MIN endstop connector for your Z probe, this has no effect.
449 546
 //#define DISABLE_Z_MIN_PROBE_ENDSTOP
450 547
 
548
+// Enable Z Probe Repeatability test to see how accurate your probe is
549
+//#define Z_MIN_PROBE_REPEATABILITY_TEST
550
+
551
+//
552
+// Probe Raise options provide clearance for the probe to deploy, stow, and travel.
553
+//
554
+#define Z_PROBE_DEPLOY_HEIGHT 15 // Raise to make room for the probe to deploy / stow
555
+#define Z_PROBE_TRAVEL_HEIGHT 5  // Raise between probing points.
556
+
557
+//
558
+// For M851 give a range for adjusting the Z probe offset
559
+//
560
+#define Z_PROBE_OFFSET_RANGE_MIN -20
561
+#define Z_PROBE_OFFSET_RANGE_MAX 20
562
+
451 563
 // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
452 564
 // :{0:'Low',1:'High'}
453 565
 #define X_ENABLE_ON 0
@@ -484,8 +596,9 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
484 596
 #define INVERT_E3_DIR false
485 597
 
486 598
 // @section homing
487
-//#define MIN_Z_HEIGHT_FOR_HOMING 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
488
-                                    // Be sure you have this distance over your Z_MAX_POS in case.
599
+
600
+//#define Z_HOMING_HEIGHT 4  // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
601
+                             // Be sure you have this distance over your Z_MAX_POS in case.
489 602
 
490 603
 // ENDSTOP SETTINGS:
491 604
 // Sets direction of endstops when homing; 1=MAX, -1=MIN
@@ -515,7 +628,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
515 628
                                  // It is assumed that when logic high = filament available
516 629
                                  //                    when logic  low = filament ran out
517 630
 #if ENABLED(FILAMENT_RUNOUT_SENSOR)
518
-  const bool FIL_RUNOUT_INVERTING = true;  // Should be uncommented and true or false should assigned
631
+  const bool FIL_RUNOUT_INVERTING = false; // set to true to invert the logic of the sensor.
519 632
   #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined.
520 633
   #define FILAMENT_RUNOUT_SCRIPT "M600"
521 634
 #endif
@@ -527,10 +640,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
527 640
 //#define MESH_BED_LEVELING    // Enable mesh bed leveling.
528 641
 
529 642
 #if ENABLED(MESH_BED_LEVELING)
530
-  #define MESH_MIN_X 10
531
-  #define MESH_MAX_X (X_MAX_POS - (MESH_MIN_X))
532
-  #define MESH_MIN_Y 10
533
-  #define MESH_MAX_Y (Y_MAX_POS - (MESH_MIN_Y))
643
+  #define MESH_INSET 10        // Mesh inset margin on print area
534 644
   #define MESH_NUM_X_POINTS 3  // Don't use more than 7 points per axis, implementation limited.
535 645
   #define MESH_NUM_Y_POINTS 3
536 646
   #define MESH_HOME_SEARCH_Z 4  // Z after Home, bed somewhere below but above 0.0.
@@ -552,8 +662,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
552 662
 // @section bedlevel
553 663
 
554 664
 //#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line)
665
+
666
+// Enable this feature to get detailed logging of G28, G29, M48, etc.
667
+// Logging is off by default. Enable this logging feature with 'M111 S32'.
668
+// NOTE: Requires a huge amount of PROGMEM.
555 669
 //#define DEBUG_LEVELING_FEATURE
556
-//#define Z_MIN_PROBE_REPEATABILITY_TEST  // If not commented out, Z Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
557 670
 
558 671
 #if ENABLED(AUTO_BED_LEVELING_FEATURE)
559 672
 
@@ -596,58 +709,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
596 709
     #define ABL_PROBE_PT_3_X 170
597 710
     #define ABL_PROBE_PT_3_Y 20
598 711
 
599
-  #endif // AUTO_BED_LEVELING_GRID
600
-
601
-  // Z Probe to nozzle (X,Y) offset, relative to (0, 0).
602
-  // X and Y offsets must be integers.
603
-  //
604
-  // In the following example the X and Y offsets are both positive:
605
-  // #define X_PROBE_OFFSET_FROM_EXTRUDER 10
606
-  // #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
607
-  //
608
-  //    +-- BACK ---+
609
-  //    |           |
610
-  //  L |    (+) P  | R <-- probe (20,20)
611
-  //  E |           | I
612
-  //  F | (-) N (+) | G <-- nozzle (10,10)
613
-  //  T |           | H
614
-  //    |    (-)    | T
615
-  //    |           |
616
-  //    O-- FRONT --+
617
-  //  (0,0)
618
-  #define X_PROBE_OFFSET_FROM_EXTRUDER -25     // X offset: -left  +right  [of the nozzle]
619
-  #define Y_PROBE_OFFSET_FROM_EXTRUDER -29     // Y offset: -front +behind [the nozzle]
620
-  #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35  // Z offset: -below +above  [the nozzle]
621
-
622
-  #define XY_TRAVEL_SPEED 8000         // X and Y axis travel speed between probes, in mm/min.
623
-
624
-  #define Z_RAISE_BEFORE_PROBING 15   // How much the Z axis will be raised before traveling to the first probing point.
625
-  #define Z_RAISE_BETWEEN_PROBINGS 5  // How much the Z axis will be raised when traveling from between next probing points.
626
-  #define Z_RAISE_AFTER_PROBING 15    // How much the Z axis will be raised after the last probing point.
712
+  #endif // !AUTO_BED_LEVELING_GRID
627 713
 
628 714
   //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine.
629 715
                                                                              // Useful to retract a deployable Z probe.
630 716
 
631
-  // Probes are sensors/switches that need to be activated before they can be used
632
-  // and deactivated after their use.
633
-  // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE
634
-
635
-  // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER
636
-  // when the hardware endstops are active.
637
-  //#define FIX_MOUNTED_PROBE
638
-
639
-  // A Servo Probe can be defined in the servo section below.
640
-
641
-  // An Allen Key Probe is currently predefined only in the delta example configurations.
642
-
643
-  // Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
644
-  //#define Z_PROBE_SLED
645
-  //#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.
646
-
647
-  // A Mechanical Probe is any probe that either doesn't deploy or needs manual deployment
648
-  // For example any setup that uses the nozzle itself as a probe.
649
-  //#define MECHANICAL_PROBE
650
-
651 717
   // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing,
652 718
   // it is highly recommended you also enable Z_SAFE_HOMING below!
653 719
 
@@ -656,18 +722,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
656 722
 
657 723
 // @section homing
658 724
 
659
-// The position of the homing switches
660
-#define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used
661
-//#define BED_CENTER_AT_0_0  // If defined, the center of the bed is at (X=0, Y=0)
662
-
663
-// Manual homing switch locations:
664
-// For deltabots this means top and center of the Cartesian print volume.
665
-#if ENABLED(MANUAL_HOME_POSITIONS)
666
-  // For SCARA: Offset between HomingPosition and Bed X=0 / Y=0
667
-  #define MANUAL_X_HOME_POS -22.
668
-  #define MANUAL_Y_HOME_POS -52.
669
-  #define MANUAL_Z_HOME_POS 0.1  // Distance between nozzle and print surface after homing.
670
-#endif
725
+// The center of the bed is at (X=0, Y=0)
726
+//#define BED_CENTER_AT_0_0
727
+
728
+// Manually set the home position. Leave these undefined for automatic settings.
729
+// For DELTA this is the top-center of the Cartesian print volume.
730
+#define MANUAL_X_HOME_POS -22
731
+#define MANUAL_Y_HOME_POS -52
732
+#define MANUAL_Z_HOME_POS 0.1 // Distance between the nozzle to printbed after homing
671 733
 
672 734
 // Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
673 735
 //
@@ -675,7 +737,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
675 737
 //
676 738
 // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
677 739
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
678
-// - Position the Z probe in a defined XY point before Z Homing when homing all axes (G28).
740
+// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
679 741
 // - Prevent Z homing when the Z probe is outside bed area.
680 742
 //#define Z_SAFE_HOMING
681 743
 
@@ -684,14 +746,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
684 746
   #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2)    // Y point for Z homing when homing all axis (G28).
685 747
 #endif
686 748
 
749
+// Homing speeds (mm/m)
750
+#define HOMING_FEEDRATE_XY (40*60)
751
+#define HOMING_FEEDRATE_Z  (10*60)
687 752
 
688
-// @section movement
689
-
690
-/**
691
- * MOVEMENT SETTINGS
692
- */
693
-
694
-#define HOMING_FEEDRATE {40*60, 40*60, 10*60, 0}  // set the homing speeds (mm/min)
753
+//
754
+// MOVEMENT SETTINGS
755
+// @section motion
756
+//
695 757
 
696 758
 // default settings
697 759
 
@@ -713,18 +775,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
713 775
 //============================= Additional Features ===========================
714 776
 //=============================================================================
715 777
 
716
-// @section more
717
-
718
-// Custom M code points
719
-//#define CUSTOM_M_CODES
720
-#if ENABLED(CUSTOM_M_CODES)
721
-  #if ENABLED(AUTO_BED_LEVELING_FEATURE)
722
-    #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851
723
-    #define Z_PROBE_OFFSET_RANGE_MIN -20
724
-    #define Z_PROBE_OFFSET_RANGE_MAX 20
725
-  #endif
726
-#endif
727
-
728 778
 // @section extras
729 779
 
730 780
 //
@@ -756,22 +806,107 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
756 806
 //
757 807
 //#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose
758 808
 
809
+//
810
+// G20/G21 Inch mode support
811
+//
812
+//#define INCH_MODE_SUPPORT
813
+
814
+//
815
+// M149 Set temperature units support
816
+//
817
+//#define TEMPERATURE_UNITS_SUPPORT
818
+
759 819
 // @section temperature
760 820
 
761 821
 // Preheat Constants
762
-#define PLA_PREHEAT_HOTEND_TEMP 180
763
-#define PLA_PREHEAT_HPB_TEMP 70
764
-#define PLA_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
822
+#define PREHEAT_1_TEMP_HOTEND 180
823
+#define PREHEAT_1_TEMP_BED     70
824
+#define PREHEAT_1_FAN_SPEED   255 // Value from 0 to 255
825
+
826
+#define PREHEAT_2_TEMP_HOTEND 240
827
+#define PREHEAT_2_TEMP_BED    100
828
+#define PREHEAT_2_FAN_SPEED   255 // Value from 0 to 255
765 829
 
766
-#define ABS_PREHEAT_HOTEND_TEMP 240
767
-#define ABS_PREHEAT_HPB_TEMP 100
768
-#define ABS_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
830
+//
831
+// Nozzle Park -- EXPERIMENTAL
832
+//
833
+// When enabled allows the user to define a special XYZ position, inside the
834
+// machine's topology, to park the nozzle when idle or when receiving the G27
835
+// command.
836
+//
837
+// The "P" paramenter controls what is the action applied to the Z axis:
838
+//    P0: (Default) If current Z-pos is lower than Z-park then the nozzle will
839
+//        be raised to reach Z-park height.
840
+//
841
+//    P1: No matter the current Z-pos, the nozzle will be raised/lowered to
842
+//        reach Z-park height.
843
+//
844
+//    P2: The nozzle height will be raised by Z-park amount but never going over
845
+//        the machine's limit of Z_MAX_POS.
846
+//
847
+//#define NOZZLE_PARK_FEATURE
848
+
849
+#if ENABLED(NOZZLE_PARK_FEATURE)
850
+  // Specify a park position as { X, Y, Z }
851
+  #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 }
852
+#endif
853
+
854
+//
855
+// Clean Nozzle Feature -- EXPERIMENTAL
856
+//
857
+// When enabled allows the user to send G12 to start the nozzle cleaning
858
+// process, the G-Code accepts two parameters:
859
+//   "P" for pattern selection
860
+//   "S" for defining the number of strokes/repetitions
861
+//
862
+// Available list of patterns:
863
+//   P0: This is the default pattern, this process requires a sponge type
864
+//       material at a fixed bed location, the cleaning process is based on
865
+//       "strokes" i.e. back-and-forth movements between the starting and end
866
+//       points.
867
+//
868
+//   P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T"
869
+//       defines the number of zig-zag triangles to be done. "S" defines the
870
+//       number of strokes aka one back-and-forth movement. As an example
871
+//       sending "G12 P1 S1 T3" will execute:
872
+//
873
+//          --
874
+//         |  (X0, Y1) |     /\        /\        /\     | (X1, Y1)
875
+//         |           |    /  \      /  \      /  \    |
876
+//       A |           |   /    \    /    \    /    \   |
877
+//         |           |  /      \  /      \  /      \  |
878
+//         |  (X0, Y0) | /        \/        \/        \ | (X1, Y0)
879
+//          --         +--------------------------------+
880
+//                       |________|_________|_________|
881
+//                           T1        T2        T3
882
+//
883
+// Caveats: End point Z should use the same value as Start point Z.
884
+//
885
+// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments
886
+// may change to add new functionality like different wipe patterns.
887
+//
888
+//#define NOZZLE_CLEAN_FEATURE
889
+
890
+#if ENABLED(NOZZLE_CLEAN_FEATURE)
891
+  // Number of pattern repetitions
892
+  #define NOZZLE_CLEAN_STROKES  12
893
+
894
+  // Specify positions as { X, Y, Z }
895
+  #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)}
896
+  #define NOZZLE_CLEAN_END_POINT   {100, 60, (Z_MIN_POS + 1)}
897
+
898
+  // Moves the nozzle to the initial position
899
+  #define NOZZLE_CLEAN_GOBACK
900
+#endif
769 901
 
770 902
 //
771 903
 // Print job timer
772 904
 //
773 905
 // Enable this option to automatically start and stop the
774
-// print job timer when M104 and M109 commands are received.
906
+// print job timer when M104/M109/M190 commands are received.
907
+// M104 (extruder without wait) - high temp = none, low temp = stop timer
908
+// M109 (extruder with wait) - high temp = start timer, low temp = stop timer
909
+// M190 (bed with wait) - high temp = start timer, low temp = none
775 910
 //
776 911
 // In all cases the timer can be started and stopped using
777 912
 // the following commands:
@@ -804,8 +939,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
804 939
 //
805 940
 // Here you may choose the language used by Marlin on the LCD menus, the following
806 941
 // list of languages are available:
807
-//    en, pl, fr, de, es, ru, bg, it, pt, pt_utf8, pt-br, pt-br_utf8,
808
-//    fi, an, nl, ca, eu, kana, kana_utf8, cn, cz, test
942
+//    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
943
+//    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
944
+//
945
+// :{'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','test':'TEST'}
809 946
 //
810 947
 //#define LCD_LANGUAGE en
811 948
 
@@ -953,6 +1090,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
953 1090
 //#define ULTIPANEL
954 1091
 
955 1092
 //
1093
+// Cartesio UI
1094
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1095
+//
1096
+//#define CARTESIO_UI
1097
+
1098
+//
956 1099
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
957 1100
 // http://reprap.org/wiki/PanelOne
958 1101
 //
@@ -965,6 +1108,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
965 1108
 //#define MAKRPANEL
966 1109
 
967 1110
 //
1111
+// ReprapWorld Graphical LCD
1112
+// https://reprapworld.com/?products_details&products_id/1218
1113
+//
1114
+//#define REPRAPWORLD_GRAPHICAL_LCD
1115
+
1116
+//
968 1117
 // Activate one of these if you have a Panucatt Devices
969 1118
 // Viki 2.0 or mini Viki with Graphic LCD
970 1119
 // http://panucatt.com
@@ -1014,7 +1163,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1014 1163
 // is pressed, a value of 10.0 means 10mm per click.
1015 1164
 //
1016 1165
 //#define REPRAPWORLD_KEYPAD
1017
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1166
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1018 1167
 
1019 1168
 //
1020 1169
 // RigidBot Panel V1.0
@@ -1075,6 +1224,15 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1075 1224
 //#define U8GLIB_SSD1306
1076 1225
 
1077 1226
 //
1227
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1228
+//
1229
+//#define SAV_3DGLCD
1230
+#if ENABLED(SAV_3DGLCD)
1231
+  //#define U8GLIB_SSD1306
1232
+  #define U8GLIB_SH1106
1233
+#endif
1234
+
1235
+//
1078 1236
 // CONTROLLER TYPE: Shift register panels
1079 1237
 //
1080 1238
 // 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH
@@ -1102,7 +1260,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1102 1260
 // at zero value, there are 128 effective control positions.
1103 1261
 #define SOFT_PWM_SCALE 0
1104 1262
 
1105
-// Temperature status LEDs that display the hotend and bet temperature.
1263
+// Temperature status LEDs that display the hotend and bed temperature.
1106 1264
 // If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
1107 1265
 // Otherwise the RED led is on. There is 1C hysteresis.
1108 1266
 //#define TEMP_STAT_LEDS
@@ -1134,28 +1292,16 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1134 1292
 //
1135 1293
 //#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
1136 1294
 
1137
-// Servo Endstops
1138
-//
1139
-// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes.
1140
-// Use M851 to set the Z probe vertical offset from the nozzle. Store that setting with M500.
1141
-//
1142
-//#define X_ENDSTOP_SERVO_NR 1
1143
-//#define Y_ENDSTOP_SERVO_NR 2
1144
-//#define Z_ENDSTOP_SERVO_NR 0
1145
-//#define SERVO_ENDSTOP_ANGLES {{0,0}, {0,0}, {70,0}} // X,Y,Z Axis Extend and Retract angles
1295
+// Delay (in microseconds) before the next move will start, to give the servo time to reach its target angle.
1296
+// 300ms is a good value but you can try less delay.
1297
+// If the servo can't reach the requested position, increase it.
1298
+#define SERVO_DELAY 300
1146 1299
 
1147 1300
 // Servo deactivation
1148 1301
 //
1149 1302
 // With this option servos are powered only during movement, then turned off to prevent jitter.
1150 1303
 //#define DEACTIVATE_SERVOS_AFTER_MOVE
1151 1304
 
1152
-#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE)
1153
-  // Delay (in microseconds) before turning the servo off. This depends on the servo speed.
1154
-  // 300ms is a good value but you can try less delay.
1155
-  // If the servo can't reach the requested position, increase it.
1156
-  #define SERVO_DEACTIVATION_DELAY 300
1157
-#endif
1158
-
1159 1305
 /**********************************************************************\
1160 1306
  * Support for a filament diameter sensor
1161 1307
  * Also allows adjustment of diameter at print time (vs  at slicing)
@@ -1186,7 +1332,4 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1186 1332
   //#define FILAMENT_LCD_DISPLAY
1187 1333
 #endif
1188 1334
 
1189
-#include "Configuration_adv.h"
1190
-#include "thermistortables.h"
1191
-
1192
-#endif //CONFIGURATION_H
1335
+#endif // CONFIGURATION_H

+ 148
- 47
Marlin/example_configurations/SCARA/Configuration_adv.h Parādīt failu

@@ -33,7 +33,18 @@
33 33
 #ifndef CONFIGURATION_ADV_H
34 34
 #define CONFIGURATION_ADV_H
35 35
 
36
-#include "Conditionals.h"
36
+/**
37
+ *
38
+ *  ***********************************
39
+ *  **  ATTENTION TO ALL DEVELOPERS  **
40
+ *  ***********************************
41
+ *
42
+ * You must increment this version number for every significant change such as,
43
+ * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option.
44
+ *
45
+ * Note: Update also Version.h !
46
+ */
47
+#define CONFIGURATION_ADV_H_VERSION 010100
37 48
 
38 49
 // @section temperature
39 50
 
@@ -102,8 +113,8 @@
102 113
 #if ENABLED(PIDTEMP)
103 114
   // this adds an experimental additional term to the heating power, proportional to the extrusion speed.
104 115
   // if Kc is chosen well, the additional required power due to increased melting should be compensated.
105
-  #define PID_ADD_EXTRUSION_RATE
106
-  #if ENABLED(PID_ADD_EXTRUSION_RATE)
116
+  //#define PID_EXTRUSION_SCALING
117
+  #if ENABLED(PID_EXTRUSION_SCALING)
107 118
     #define DEFAULT_Kc (100) //heating power=Kc*(e_speed)
108 119
     #define LPQ_MAX_LEN 50
109 120
   #endif
@@ -128,15 +139,42 @@
128 139
 //The M105 command return, besides traditional information, the ADC value read from temperature sensors.
129 140
 //#define SHOW_TEMP_ADC_VALUES
130 141
 
142
+/**
143
+ * High Temperature Thermistor Support
144
+ *
145
+ * Thermistors able to support high temperature tend to have a hard time getting
146
+ * good readings at room and lower temperatures. This means HEATER_X_RAW_LO_TEMP
147
+ * will probably be caught when the heating element first turns on during the
148
+ * preheating process, which will trigger a min_temp_error as a safety measure
149
+ * and force stop everything.
150
+ * To circumvent this limitation, we allow for a preheat time (during which,
151
+ * min_temp_error won't be triggered) and add a min_temp buffer to handle
152
+ * aberrant readings.
153
+ *
154
+ * If you want to enable this feature for your hotend thermistor(s)
155
+ * uncomment and set values > 0 in the constants below
156
+ */
157
+
158
+// The number of consecutive low temperature errors that can occur
159
+// before a min_temp_error is triggered. (Shouldn't be more than 10.)
160
+//#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 0
161
+
162
+// The number of milliseconds a hotend will preheat before starting to check
163
+// the temperature. This value should NOT be set to the time it takes the
164
+// hot end to reach the target temperature, but the time it takes to reach
165
+// the minimum temperature your thermistor can read. The lower the better/safer.
166
+// This shouldn't need to be more than 30 seconds (30000)
167
+//#define MILLISECONDS_PREHEAT_TIME 0
168
+
131 169
 // @section extruder
132 170
 
133 171
 //  extruder run-out prevention.
134 172
 //if the machine is idle, and the temperature over MINTEMP, every couple of SECONDS some filament is extruded
135 173
 //#define EXTRUDER_RUNOUT_PREVENT
136 174
 #define EXTRUDER_RUNOUT_MINTEMP 180
137
-#define EXTRUDER_RUNOUT_SECONDS 30.
138
-#define EXTRUDER_RUNOUT_ESTEPS 14. //mm filament
139
-#define EXTRUDER_RUNOUT_SPEED 180.  //extrusion speed
175
+#define EXTRUDER_RUNOUT_SECONDS 30
176
+#define EXTRUDER_RUNOUT_ESTEPS 14   // mm filament
177
+#define EXTRUDER_RUNOUT_SPEED 180   // extrusion speed
140 178
 #define EXTRUDER_RUNOUT_EXTRUDE 100
141 179
 
142 180
 // @section temperature
@@ -177,24 +215,42 @@
177 215
 #define EXTRUDER_AUTO_FAN_TEMPERATURE 50
178 216
 #define EXTRUDER_AUTO_FAN_SPEED   255  // == full speed
179 217
 
180
-
181 218
 //===========================================================================
182
-//=============================Mechanical Settings===========================
219
+//============================ Mechanical Settings ==========================
183 220
 //===========================================================================
184 221
 
185 222
 // @section homing
186 223
 
187
-#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing
224
+// If you want endstops to stay on (by default) even when not homing
225
+// enable this option. Override at any time with M120, M121.
226
+//#define ENDSTOPS_ALWAYS_ON_DEFAULT
188 227
 
189 228
 // @section extras
190 229
 
191 230
 //#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
192 231
 
232
+// Dual X Steppers
233
+// Uncomment this option to drive two X axis motors.
234
+// The next unused E driver will be assigned to the second X stepper.
235
+//#define X_DUAL_STEPPER_DRIVERS
236
+#if ENABLED(X_DUAL_STEPPER_DRIVERS)
237
+  // Set true if the two X motors need to rotate in opposite directions
238
+  #define INVERT_X2_VS_X_DIR true
239
+#endif
240
+
241
+
242
+// Dual Y Steppers
243
+// Uncomment this option to drive two Y axis motors.
244
+// The next unused E driver will be assigned to the second Y stepper.
245
+//#define Y_DUAL_STEPPER_DRIVERS
246
+#if ENABLED(Y_DUAL_STEPPER_DRIVERS)
247
+  // Set true if the two Y motors need to rotate in opposite directions
248
+  #define INVERT_Y2_VS_Y_DIR true
249
+#endif
250
+
193 251
 // A single Z stepper driver is usually used to drive 2 stepper motors.
194
-// Uncomment this define to utilize a separate stepper driver for each Z axis motor.
195
-// Only a few motherboards support this, like RAMPS, which have dual extruder support (the 2nd, often unused, extruder driver is used
196
-// to control the 2nd Z axis stepper motor). The pins are currently only defined for a RAMPS motherboards.
197
-// On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder.
252
+// Uncomment this option to use a separate stepper driver for each Z axis motor.
253
+// The next unused E driver will be assigned to the second Z stepper.
198 254
 //#define Z_DUAL_STEPPER_DRIVERS
199 255
 
200 256
 #if ENABLED(Z_DUAL_STEPPER_DRIVERS)
@@ -216,14 +272,6 @@
216 272
 
217 273
 #endif // Z_DUAL_STEPPER_DRIVERS
218 274
 
219
-// Same again but for Y Axis.
220
-//#define Y_DUAL_STEPPER_DRIVERS
221
-
222
-#if ENABLED(Y_DUAL_STEPPER_DRIVERS)
223
-  // Define if the two Y drives need to rotate in opposite directions
224
-  #define INVERT_Y2_VS_Y_DIR true
225
-#endif
226
-
227 275
 // Enable this for dual x-carriage printers.
228 276
 // A dual x-carriage design has the advantage that the inactive extruder can be parked which
229 277
 // prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
@@ -237,7 +285,7 @@
237 285
   #define X2_MAX_POS 353    // set maximum to the distance between toolheads when both heads are homed
238 286
   #define X2_HOME_DIR 1     // the second X-carriage always homes to the maximum endstop position
239 287
   #define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position
240
-      // However: In this mode the EXTRUDER_OFFSET_X value for the second extruder provides a software
288
+      // However: In this mode the HOTEND_OFFSET_X value for the second extruder provides a software
241 289
       // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops
242 290
       // without modifying the firmware (through the "M218 T1 X???" command).
243 291
       // Remember: you should set the second extruder x-offset to 0 in your slicer.
@@ -279,7 +327,10 @@
279 327
 
280 328
 #define AXIS_RELATIVE_MODES {false, false, false, false}
281 329
 
282
-//By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
330
+// Allow duplication mode with a basic dual-nozzle extruder
331
+//#define DUAL_NOZZLE_DUPLICATION_MODE
332
+
333
+// By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
283 334
 #define INVERT_X_STEP_PIN false
284 335
 #define INVERT_Y_STEP_PIN false
285 336
 #define INVERT_Z_STEP_PIN false
@@ -351,6 +402,9 @@
351 402
 
352 403
 // @section lcd
353 404
 
405
+// Include a page of printer information in the LCD Main Menu
406
+//#define LCD_INFO_MENU
407
+
354 408
 #if ENABLED(SDSUPPORT)
355 409
 
356 410
   // Some RAMPS and other boards don't detect when an SD card is inserted. You can work
@@ -388,7 +442,6 @@
388 442
   // This option allows you to abort SD printing when any endstop is triggered.
389 443
   // This feature must be enabled with "M540 S1" or from the LCD menu.
390 444
   // To have any effect, endstops must be enabled during SD printing.
391
-  // With ENDSTOPS_ONLY_FOR_HOMING you must send "M120" to enable endstops.
392 445
   //#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED
393 446
 
394 447
 #endif // SDSUPPORT
@@ -404,9 +457,10 @@
404 457
   //#define USE_SMALL_INFOFONT
405 458
 #endif // DOGLCD
406 459
 
407
-// @section more
460
+// @section safety
408 461
 
409
-// The hardware watchdog should reset the microcontroller disabling all outputs, in case the firmware gets stuck and doesn't do temperature regulation.
462
+// The hardware watchdog should reset the microcontroller disabling all outputs,
463
+// in case the firmware gets stuck and doesn't do temperature regulation.
410 464
 #define USE_WATCHDOG
411 465
 
412 466
 #if ENABLED(USE_WATCHDOG)
@@ -445,6 +499,27 @@
445 499
   #define D_FILAMENT 1.75
446 500
 #endif
447 501
 
502
+// Implementation of a linear pressure control
503
+// Assumption: advance = k * (delta velocity)
504
+// K=0 means advance disabled. A good value for a gregs wade extruder will be around K=75
505
+//#define LIN_ADVANCE
506
+
507
+#if ENABLED(LIN_ADVANCE)
508
+  #define LIN_ADVANCE_K 75
509
+#endif
510
+
511
+// @section leveling
512
+
513
+// Default mesh area is an area with an inset margin on the print area.
514
+// Below are the macros that are used to define the borders for the mesh area,
515
+// made available here for specialized needs, ie dual extruder setup.
516
+#if ENABLED(MESH_BED_LEVELING)
517
+  #define MESH_MIN_X (X_MIN_POS + MESH_INSET)
518
+  #define MESH_MAX_X (X_MAX_POS - (MESH_INSET))
519
+  #define MESH_MIN_Y (Y_MIN_POS + MESH_INSET)
520
+  #define MESH_MAX_Y (Y_MAX_POS - (MESH_INSET))
521
+#endif
522
+
448 523
 // @section extras
449 524
 
450 525
 // Arc interpretation settings:
@@ -476,12 +551,27 @@ const unsigned int dropsegments = 5; //everything with less than this number of
476 551
   #define BLOCK_BUFFER_SIZE 16 // maximize block buffer
477 552
 #endif
478 553
 
479
-// @section more
554
+// @section serial
480 555
 
481
-//The ASCII buffer for receiving from the serial:
556
+// The ASCII buffer for serial input
482 557
 #define MAX_CMD_SIZE 96
483 558
 #define BUFSIZE 4
484 559
 
560
+// Transfer Buffer Size
561
+// To save 386 bytes of PROGMEM (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0.
562
+// To buffer a simple "ok" you need 4 bytes.
563
+// For ADVANCED_OK (M105) you need 32 bytes.
564
+// For debug-echo: 128 bytes for the optimal speed.
565
+// Other output doesn't need to be that speedy.
566
+// :[0,2,4,8,16,32,64,128,256]
567
+#define TX_BUFFER_SIZE 0
568
+
569
+// Enable an emergency-command parser to intercept certain commands as they
570
+// enter the serial receive buffer, so they cannot be blocked.
571
+// Currently handles M108, M112, M410
572
+// Does not work on boards using AT90USB (USBCON) processors!
573
+//#define EMERGENCY_PARSER
574
+
485 575
 // Bad Serial-connections can miss a received command by sending an 'ok'
486 576
 // Therefore some clients abort after 30 seconds in a timeout.
487 577
 // Some other clients start sending commands while receiving a 'wait'.
@@ -513,16 +603,30 @@ const unsigned int dropsegments = 5; //everything with less than this number of
513 603
 
514 604
 // Add support for experimental filament exchange support M600; requires display
515 605
 #if ENABLED(ULTIPANEL)
516
-  //#define FILAMENTCHANGEENABLE
517
-  #if ENABLED(FILAMENTCHANGEENABLE)
518
-    #define FILAMENTCHANGE_XPOS 3
519
-    #define FILAMENTCHANGE_YPOS 3
520
-    #define FILAMENTCHANGE_ZADD 10
521
-    #define FILAMENTCHANGE_FIRSTRETRACT -2
522
-    #define FILAMENTCHANGE_FINALRETRACT -100
523
-    #define AUTO_FILAMENT_CHANGE                //This extrude filament until you press the button on LCD
524
-    #define AUTO_FILAMENT_CHANGE_LENGTH 0.04    //Extrusion length on automatic extrusion loop
525
-    #define AUTO_FILAMENT_CHANGE_FEEDRATE 300   //Extrusion feedrate (mm/min) on automatic extrusion loop
606
+  // #define FILAMENT_CHANGE_FEATURE             // Enable filament exchange menu and M600 g-code (used for runout sensor too)
607
+  #if ENABLED(FILAMENT_CHANGE_FEATURE)
608
+    #define FILAMENT_CHANGE_X_POS 3             // X position of hotend
609
+    #define FILAMENT_CHANGE_Y_POS 3             // Y position of hotend
610
+    #define FILAMENT_CHANGE_Z_ADD 10            // Z addition of hotend (lift)
611
+    #define FILAMENT_CHANGE_XY_FEEDRATE 100     // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
612
+    #define FILAMENT_CHANGE_Z_FEEDRATE 5        // Z axis feedrate in mm/s (not used for delta printers)
613
+    #define FILAMENT_CHANGE_RETRACT_LENGTH 2    // Initial retract in mm
614
+                                                // It is a short retract used immediately after print interrupt before move to filament exchange position
615
+    #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
616
+    #define FILAMENT_CHANGE_UNLOAD_LENGTH 100   // Unload filament length from hotend in mm
617
+                                                // Longer length for bowden printers to unload filament from whole bowden tube,
618
+                                                // shorter lenght for printers without bowden to unload filament from extruder only,
619
+                                                // 0 to disable unloading for manual unloading
620
+    #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10  // Unload filament feedrate in mm/s - filament unloading can be fast
621
+    #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
622
+                                                // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
623
+                                                // Short or zero length for printers without bowden where loading is not used
624
+    #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
625
+    #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
626
+                                                // 0 to disable for manual extrusion
627
+                                                // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
628
+                                                // or until outcoming filament color is not clear for filament color change
629
+    #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
526 630
   #endif
527 631
 #endif
528 632
 
@@ -668,9 +772,9 @@ const unsigned int dropsegments = 5; //everything with less than this number of
668 772
  * devices on the bus.
669 773
  *
670 774
  * ; Example #1
671
- * ; This macro send the string "Marlin" to the slave device with address 0x63
775
+ * ; This macro send the string "Marlin" to the slave device with address 0x63 (99)
672 776
  * ; It uses multiple M155 commands with one B<base 10> arg
673
- * M155 A63  ; Target slave address
777
+ * M155 A99  ; Target slave address
674 778
  * M155 B77  ; M
675 779
  * M155 B97  ; a
676 780
  * M155 B114 ; r
@@ -680,19 +784,16 @@ const unsigned int dropsegments = 5; //everything with less than this number of
680 784
  * M155 S1   ; Send the current buffer
681 785
  *
682 786
  * ; Example #2
683
- * ; Request 6 bytes from slave device with address 0x63
684
- * M156 A63 B5
787
+ * ; Request 6 bytes from slave device with address 0x63 (99)
788
+ * M156 A99 B5
685 789
  *
686 790
  * ; Example #3
687 791
  * ; Example serial output of a M156 request
688
- * echo:i2c-reply: from:63 bytes:5 data:hello
792
+ * echo:i2c-reply: from:99 bytes:5 data:hello
689 793
  */
690 794
 
691 795
 // @section i2cbus
692 796
 
693 797
 //#define EXPERIMENTAL_I2CBUS
694 798
 
695
-#include "Conditionals.h"
696
-#include "SanityCheck.h"
697
-
698
-#endif //CONFIGURATION_ADV_H
799
+#endif // CONFIGURATION_ADV_H

+ 290
- 147
Marlin/example_configurations/TAZ4/Configuration.h Parādīt failu

@@ -38,8 +38,18 @@
38 38
 #ifndef CONFIGURATION_H
39 39
 #define CONFIGURATION_H
40 40
 
41
-#include "boards.h"
42
-#include "macros.h"
41
+/**
42
+ *
43
+ *  ***********************************
44
+ *  **  ATTENTION TO ALL DEVELOPERS  **
45
+ *  ***********************************
46
+ *
47
+ * You must increment this version number for every significant change such as,
48
+ * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option.
49
+ *
50
+ * Note: Update also Version.h !
51
+ */
52
+#define CONFIGURATION_H_VERSION 010100
43 53
 
44 54
 //===========================================================================
45 55
 //============================= Getting Started =============================
@@ -73,20 +83,26 @@
73 83
 
74 84
 // @section info
75 85
 
76
-#if ENABLED(USE_AUTOMATIC_VERSIONING)
77
-  #include "_Version.h"
78
-#else
79
-  #include "Version.h"
80
-#endif
81
-
82 86
 // User-specified version info of this build to display in [Pronterface, etc] terminal window during
83 87
 // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
84 88
 // build by the user have been successfully uploaded into firmware.
85 89
 #define STRING_CONFIG_H_AUTHOR "(Aleph Objects, Inc, TAZ  config)" // Who made the changes.
86 90
 #define SHOW_BOOTSCREEN
87
-#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during bootup in line 1
88
-//#define STRING_SPLASH_LINE2 STRING_DISTRIBUTION_DATE // will be shown during bootup in line 2
91
+#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during boot in line 1
92
+#define STRING_SPLASH_LINE2 WEBSITE_URL         // will be shown during boot in line 2
89 93
 
94
+//
95
+// *** VENDORS PLEASE READ *****************************************************
96
+//
97
+// Marlin now allow you to have a vendor boot image to be displayed on machine
98
+// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your
99
+// custom boot image and them the default Marlin boot image is shown.
100
+//
101
+// We suggest for you to take advantage of this new feature and keep the Marlin
102
+// boot image unmodified. For an example have a look at the bq Hephestos 2
103
+// example configuration folder.
104
+//
105
+//#define SHOW_CUSTOM_BOOTSCREEN
90 106
 // @section machine
91 107
 
92 108
 // SERIAL_PORT selects which serial port should be used for communication with the host.
@@ -123,17 +139,40 @@
123 139
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
124 140
 //#define SINGLENOZZLE
125 141
 
142
+// A dual extruder that uses a single stepper motor
143
+// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z
144
+//#define SWITCHING_EXTRUDER
145
+#if ENABLED(SWITCHING_EXTRUDER)
146
+  #define SWITCHING_EXTRUDER_SERVO_NR 0
147
+  #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1
148
+  //#define HOTEND_OFFSET_Z {0.0, 0.0}
149
+#endif
150
+
151
+/**
152
+ * "Mixing Extruder"
153
+ *   - Adds a new code, M165, to set the current mix factors.
154
+ *   - Extends the stepping routines to move multiple steppers in proportion to the mix.
155
+ *   - Optional support for Repetier Host M163, M164, and virtual extruder.
156
+ *   - This implementation supports only a single extruder.
157
+ *   - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
158
+ */
159
+//#define MIXING_EXTRUDER
160
+#if ENABLED(MIXING_EXTRUDER)
161
+  #define MIXING_STEPPERS 2        // Number of steppers in your mixing extruder
162
+  #define MIXING_VIRTUAL_TOOLS 16  // Use the Virtual Tool method with M163 and M164
163
+  //#define DIRECT_MIXING_IN_G1    // Allow ABCDHI mix factors in G1 movement commands
164
+#endif
165
+
126 166
 // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
127 167
 // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
128 168
 // For the other hotends it is their distance from the extruder 0 hotend.
129
-//#define EXTRUDER_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
130
-//#define EXTRUDER_OFFSET_Y {0.0, 5.00}  // (in mm) for each extruder, offset of the hotend on the Y axis
169
+//#define HOTEND_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
170
+//#define HOTEND_OFFSET_Y {0.0, 5.00}  // (in mm) for each extruder, offset of the hotend on the Y axis
131 171
 
132 172
 //// The following define selects which power supply you have. Please choose the one that matches your setup
133 173
 // 1 = ATX
134 174
 // 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC)
135 175
 // :{1:'ATX',2:'X-Box 360'}
136
-
137 176
 #define POWER_SUPPLY 1
138 177
 
139 178
 // Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it.
@@ -168,6 +207,7 @@
168 207
 // 13 is 100k Hisens 3950  1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE"
169 208
 // 20 is the PT100 circuit found in the Ultimainboard V2.x
170 209
 // 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950
210
+// 66 is 4.7M High Temperature thermistor from Dyze Design
171 211
 // 70 is the 100K thermistor found in the bq Hephestos 2
172 212
 //
173 213
 //    1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k
@@ -184,7 +224,7 @@
184 224
 //     Use it for Testing or Development purposes. NEVER for production machine.
185 225
 //#define DUMMY_THERMISTOR_998_VALUE 25
186 226
 //#define DUMMY_THERMISTOR_999_VALUE 100
187
-// :{ '0': "Not used", '4': "10k !! do not use for a hotend. Bad resolution at high temp. !!", '1': "100k / 4.7k - EPCOS", '51': "100k / 1k - EPCOS", '6': "100k / 4.7k EPCOS - Not as accurate as Table 1", '5': "100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '7': "100k / 4.7k Honeywell 135-104LAG-J01", '71': "100k / 4.7k Honeywell 135-104LAF-J01", '8': "100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT", '9': "100k / 4.7k GE Sensing AL03006-58.2K-97-G1", '10': "100k / 4.7k RS 198-961", '11': "100k / 4.7k beta 3950 1%", '12': "100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)", '13': "100k Hisens 3950  1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'", '60': "100k Maker's Tool Works Kapton Bed Thermistor beta=3950", '55': "100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '2': "200k / 4.7k - ATC Semitec 204GT-2", '52': "200k / 1k - ATC Semitec 204GT-2", '-3': "Thermocouple + MAX31855 (only for sensor 0)", '-2': "Thermocouple + MAX6675 (only for sensor 0)", '-1': "Thermocouple + AD595", '3': "Mendel-parts / 4.7k", '1047': "Pt1000 / 4.7k", '1010': "Pt1000 / 1k (non standard)", '20': "PT100 (Ultimainboard V2.x)", '147': "Pt100 / 4.7k", '110': "Pt100 / 1k (non-standard)", '998': "Dummy 1", '999': "Dummy 2" }
227
+// :{ '0': "Not used",'1':"100k / 4.7k - EPCOS",'2':"200k / 4.7k - ATC Semitec 204GT-2",'3':"Mendel-parts / 4.7k",'4':"10k !! do not use for a hotend. Bad resolution at high temp. !!",'5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'6':"100k / 4.7k EPCOS - Not as accurate as Table 1",'7':"100k / 4.7k Honeywell 135-104LAG-J01",'8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT",'9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1",'10':"100k / 4.7k RS 198-961",'11':"100k / 4.7k beta 3950 1%",'12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)",'13':"100k Hisens 3950  1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'",'20':"PT100 (Ultimainboard V2.x)",'51':"100k / 1k - EPCOS",'52':"200k / 1k - ATC Semitec 204GT-2",'55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950",'66':"Dyze Design 4.7M High Temperature thermistor",'70':"the 100K thermistor found in the bq Hephestos 2",'71':"100k / 4.7k Honeywell 135-104LAF-J01",'147':"Pt100 / 4.7k",'1047':"Pt1000 / 4.7k",'110':"Pt100 / 1k (non-standard)",'1010':"Pt1000 / 1k (non standard)",'-3':"Thermocouple + MAX31855 (only for sensor 0)",'-2':"Thermocouple + MAX6675 (only for sensor 0)",'-1':"Thermocouple + AD595",'998':"Dummy 1",'999':"Dummy 2" }
188 228
 #define TEMP_SENSOR_0 7
189 229
 #define TEMP_SENSOR_1 7
190 230
 #define TEMP_SENSOR_2 0
@@ -223,10 +263,6 @@
223 263
 #define HEATER_3_MAXTEMP 250
224 264
 #define BED_MAXTEMP 150
225 265
 
226
-// If you want the M105 heater power reported in watts, define the BED_WATTS, and (shared for all extruders) EXTRUDER_WATTS
227
-//#define EXTRUDER_WATTS (12.0*12.0/6.7) // P=U^2/R
228
-//#define BED_WATTS (12.0*12.0/1.1)      // P=U^2/R
229
-
230 266
 //===========================================================================
231 267
 //============================= PID Settings ================================
232 268
 //===========================================================================
@@ -241,8 +277,8 @@
241 277
   //#define PID_DEBUG // Sends debug data to the serial port.
242 278
   //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX
243 279
   //#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
244
-  //#define PID_PARAMS_PER_EXTRUDER // Uses separate PID parameters for each extruder (useful for mismatched extruders)
245
-                                    // Set/get with gcode: M301 E[extruder number, 0-2]
280
+  //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders)
281
+                                  // Set/get with gcode: M301 E[extruder number, 0-2]
246 282
   #define PID_FUNCTIONAL_RANGE 16 // If the temperature difference between the target temperature and the actual temperature
247 283
                                   // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max.
248 284
   #define PID_INTEGRAL_DRIVE_MAX PID_MAX  //limit for the integral term
@@ -405,18 +441,79 @@
405 441
 #endif
406 442
 
407 443
 // Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup).
408
-const bool X_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
409
-const bool Y_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
410
-const bool Z_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
411
-const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
412
-const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
413
-const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
414
-const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
444
+#define X_MIN_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
445
+#define Y_MIN_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
446
+#define Z_MIN_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
447
+#define X_MAX_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
448
+#define Y_MAX_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
449
+#define Z_MAX_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
450
+#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
415 451
 
416 452
 //===========================================================================
417 453
 //============================= Z Probe Options =============================
418 454
 //===========================================================================
419 455
 
456
+//
457
+// Probe Type
458
+// Probes are sensors/switches that are activated / deactivated before/after use.
459
+//
460
+// Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc.
461
+// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below.
462
+//
463
+// Use M851 to set the Z probe vertical offset from the nozzle. Store with M500.
464
+//
465
+
466
+// A Fix-Mounted Probe either doesn't deploy or needs manual deployment.
467
+// For example an inductive probe, or a setup that uses the nozzle to probe.
468
+// An inductive probe must be deactivated to go below
469
+// its trigger-point if hardware endstops are active.
470
+//#define FIX_MOUNTED_PROBE
471
+
472
+// The BLTouch probe emulates a servo probe.
473
+//#define BLTOUCH
474
+
475
+// Z Servo Probe, such as an endstop switch on a rotating arm.
476
+//#define Z_ENDSTOP_SERVO_NR 0
477
+//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles
478
+
479
+// Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
480
+//#define Z_PROBE_SLED
481
+//#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.
482
+
483
+// Z Probe to nozzle (X,Y) offset, relative to (0, 0).
484
+// X and Y offsets must be integers.
485
+//
486
+// In the following example the X and Y offsets are both positive:
487
+// #define X_PROBE_OFFSET_FROM_EXTRUDER 10
488
+// #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
489
+//
490
+//    +-- BACK ---+
491
+//    |           |
492
+//  L |    (+) P  | R <-- probe (20,20)
493
+//  E |           | I
494
+//  F | (-) N (+) | G <-- nozzle (10,10)
495
+//  T |           | H
496
+//    |    (-)    | T
497
+//    |           |
498
+//    O-- FRONT --+
499
+//  (0,0)
500
+#define X_PROBE_OFFSET_FROM_EXTRUDER -25     // X offset: -left  +right  [of the nozzle]
501
+#define Y_PROBE_OFFSET_FROM_EXTRUDER -29     // Y offset: -front +behind [the nozzle]
502
+#define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35  // Z offset: -below +above  [the nozzle]
503
+
504
+// X and Y axis travel speed (mm/m) between probes
505
+#define XY_PROBE_SPEED 8000
506
+// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
507
+#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
508
+// Speed for the "accurate" probe of each point
509
+#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
510
+// Use double touch for probing
511
+//#define PROBE_DOUBLE_TOUCH
512
+
513
+//
514
+// Allen Key Probe is defined in the Delta example configurations.
515
+//
516
+
420 517
 // Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z Probe and a Z-min-endstop on the same machine.
421 518
 // With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing.
422 519
 //
@@ -428,7 +525,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
428 525
 // To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN.
429 526
 //
430 527
 // For a servo-based Z probe, you must set up servo support below, including
431
-// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES.
528
+// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and Z_SERVO_ANGLES.
432 529
 //
433 530
 // - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin.
434 531
 // - Use 5V for powered (usu. inductive) sensors.
@@ -461,6 +558,21 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
461 558
 // If you're using the Z MIN endstop connector for your Z probe, this has no effect.
462 559
 //#define DISABLE_Z_MIN_PROBE_ENDSTOP
463 560
 
561
+// Enable Z Probe Repeatability test to see how accurate your probe is
562
+//#define Z_MIN_PROBE_REPEATABILITY_TEST
563
+
564
+//
565
+// Probe Raise options provide clearance for the probe to deploy, stow, and travel.
566
+//
567
+#define Z_PROBE_DEPLOY_HEIGHT 15 // Raise to make room for the probe to deploy / stow
568
+#define Z_PROBE_TRAVEL_HEIGHT 5  // Raise between probing points.
569
+
570
+//
571
+// For M851 give a range for adjusting the Z probe offset
572
+//
573
+#define Z_PROBE_OFFSET_RANGE_MIN -20
574
+#define Z_PROBE_OFFSET_RANGE_MAX 20
575
+
464 576
 // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
465 577
 // :{0:'Low',1:'High'}
466 578
 #define X_ENABLE_ON 0
@@ -497,8 +609,9 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
497 609
 #define INVERT_E3_DIR true
498 610
 
499 611
 // @section homing
500
-//#define MIN_Z_HEIGHT_FOR_HOMING 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
501
-                                    // Be sure you have this distance over your Z_MAX_POS in case.
612
+
613
+//#define Z_HOMING_HEIGHT 4  // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
614
+                             // Be sure you have this distance over your Z_MAX_POS in case.
502 615
 
503 616
 // ENDSTOP SETTINGS:
504 617
 // Sets direction of endstops when homing; 1=MAX, -1=MIN
@@ -528,7 +641,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
528 641
                                  // It is assumed that when logic high = filament available
529 642
                                  //                    when logic  low = filament ran out
530 643
 #if ENABLED(FILAMENT_RUNOUT_SENSOR)
531
-  const bool FIL_RUNOUT_INVERTING = true;  // Should be uncommented and true or false should assigned
644
+  const bool FIL_RUNOUT_INVERTING = false; // set to true to invert the logic of the sensor.
532 645
   #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined.
533 646
   #define FILAMENT_RUNOUT_SCRIPT "M600"
534 647
 #endif
@@ -540,10 +653,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
540 653
 //#define MESH_BED_LEVELING    // Enable mesh bed leveling.
541 654
 
542 655
 #if ENABLED(MESH_BED_LEVELING)
543
-  #define MESH_MIN_X 10
544
-  #define MESH_MAX_X (X_MAX_POS - (MESH_MIN_X))
545
-  #define MESH_MIN_Y 10
546
-  #define MESH_MAX_Y (Y_MAX_POS - (MESH_MIN_Y))
656
+  #define MESH_INSET 10        // Mesh inset margin on print area
547 657
   #define MESH_NUM_X_POINTS 3  // Don't use more than 7 points per axis, implementation limited.
548 658
   #define MESH_NUM_Y_POINTS 3
549 659
   #define MESH_HOME_SEARCH_Z 4  // Z after Home, bed somewhere below but above 0.0.
@@ -565,8 +675,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
565 675
 // @section bedlevel
566 676
 
567 677
 //#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line)
678
+
679
+// Enable this feature to get detailed logging of G28, G29, M48, etc.
680
+// Logging is off by default. Enable this logging feature with 'M111 S32'.
681
+// NOTE: Requires a huge amount of PROGMEM.
568 682
 //#define DEBUG_LEVELING_FEATURE
569
-#define Z_MIN_PROBE_REPEATABILITY_TEST  // If not commented out, Z Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
570 683
 
571 684
 #if ENABLED(AUTO_BED_LEVELING_FEATURE)
572 685
 
@@ -609,58 +722,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
609 722
     #define ABL_PROBE_PT_3_X 170
610 723
     #define ABL_PROBE_PT_3_Y 20
611 724
 
612
-  #endif // AUTO_BED_LEVELING_GRID
613
-
614
-  // Z Probe to nozzle (X,Y) offset, relative to (0, 0).
615
-  // X and Y offsets must be integers.
616
-  //
617
-  // In the following example the X and Y offsets are both positive:
618
-  // #define X_PROBE_OFFSET_FROM_EXTRUDER 10
619
-  // #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
620
-  //
621
-  //    +-- BACK ---+
622
-  //    |           |
623
-  //  L |    (+) P  | R <-- probe (20,20)
624
-  //  E |           | I
625
-  //  F | (-) N (+) | G <-- nozzle (10,10)
626
-  //  T |           | H
627
-  //    |    (-)    | T
628
-  //    |           |
629
-  //    O-- FRONT --+
630
-  //  (0,0)
631
-  #define X_PROBE_OFFSET_FROM_EXTRUDER -25     // X offset: -left  +right  [of the nozzle]
632
-  #define Y_PROBE_OFFSET_FROM_EXTRUDER -29     // Y offset: -front +behind [the nozzle]
633
-  #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35  // Z offset: -below +above  [the nozzle]
634
-
635
-  #define XY_TRAVEL_SPEED 8000         // X and Y axis travel speed between probes, in mm/min.
636
-
637
-  #define Z_RAISE_BEFORE_PROBING 15   // How much the Z axis will be raised before traveling to the first probing point.
638
-  #define Z_RAISE_BETWEEN_PROBINGS 5  // How much the Z axis will be raised when traveling from between next probing points.
639
-  #define Z_RAISE_AFTER_PROBING 15    // How much the Z axis will be raised after the last probing point.
725
+  #endif // !AUTO_BED_LEVELING_GRID
640 726
 
641 727
   //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine.
642 728
                                                                              // Useful to retract a deployable Z probe.
643 729
 
644
-  // Probes are sensors/switches that need to be activated before they can be used
645
-  // and deactivated after their use.
646
-  // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE
647
-
648
-  // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER
649
-  // when the hardware endstops are active.
650
-  //#define FIX_MOUNTED_PROBE
651
-
652
-  // A Servo Probe can be defined in the servo section below.
653
-
654
-  // An Allen Key Probe is currently predefined only in the delta example configurations.
655
-
656
-  // Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
657
-  //#define Z_PROBE_SLED
658
-  //#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.
659
-
660
-  // A Mechanical Probe is any probe that either doesn't deploy or needs manual deployment
661
-  // For example any setup that uses the nozzle itself as a probe.
662
-  //#define MECHANICAL_PROBE
663
-
664 730
   // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing,
665 731
   // it is highly recommended you also enable Z_SAFE_HOMING below!
666 732
 
@@ -669,18 +735,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
669 735
 
670 736
 // @section homing
671 737
 
672
-// The position of the homing switches
673
-//#define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used
674
-//#define BED_CENTER_AT_0_0  // If defined, the center of the bed is at (X=0, Y=0)
675
-
676
-// Manual homing switch locations:
677
-// For deltabots this means top and center of the Cartesian print volume.
678
-#if ENABLED(MANUAL_HOME_POSITIONS)
679
-  #define MANUAL_X_HOME_POS 0
680
-  #define MANUAL_Y_HOME_POS 0
681
-  #define MANUAL_Z_HOME_POS 0
682
-  //#define MANUAL_Z_HOME_POS 402 // For delta: Distance between nozzle and print surface after homing.
683
-#endif
738
+// The center of the bed is at (X=0, Y=0)
739
+//#define BED_CENTER_AT_0_0
740
+
741
+// Manually set the home position. Leave these undefined for automatic settings.
742
+// For DELTA this is the top-center of the Cartesian print volume.
743
+//#define MANUAL_X_HOME_POS 0
744
+//#define MANUAL_Y_HOME_POS 0
745
+//#define MANUAL_Z_HOME_POS 0 // Distance between the nozzle to printbed after homing
684 746
 
685 747
 // Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
686 748
 //
@@ -688,7 +750,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
688 750
 //
689 751
 // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
690 752
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
691
-// - Position the Z probe in a defined XY point before Z Homing when homing all axes (G28).
753
+// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
692 754
 // - Prevent Z homing when the Z probe is outside bed area.
693 755
 //#define Z_SAFE_HOMING
694 756
 
@@ -697,14 +759,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
697 759
   #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2)    // Y point for Z homing when homing all axis (G28).
698 760
 #endif
699 761
 
762
+// Homing speeds (mm/m)
763
+#define HOMING_FEEDRATE_XY (50*60)
764
+#define HOMING_FEEDRATE_Z  (8*60)
700 765
 
701
-// @section movement
702
-
703
-/**
704
- * MOVEMENT SETTINGS
705
- */
706
-
707
-#define HOMING_FEEDRATE {50*60, 50*60, 8*60, 0}  // set the homing speeds (mm/min)
766
+//
767
+// MOVEMENT SETTINGS
768
+// @section motion
769
+//
708 770
 
709 771
 // default settings
710 772
 
@@ -726,18 +788,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
726 788
 //============================= Additional Features ===========================
727 789
 //=============================================================================
728 790
 
729
-// @section more
730
-
731
-// Custom M code points
732
-#define CUSTOM_M_CODES
733
-#if ENABLED(CUSTOM_M_CODES)
734
-  #if ENABLED(AUTO_BED_LEVELING_FEATURE)
735
-    #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851
736
-    #define Z_PROBE_OFFSET_RANGE_MIN -20
737
-    #define Z_PROBE_OFFSET_RANGE_MAX 20
738
-  #endif
739
-#endif
740
-
741 791
 // @section extras
742 792
 
743 793
 //
@@ -769,22 +819,107 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
769 819
 //
770 820
 //#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose
771 821
 
822
+//
823
+// G20/G21 Inch mode support
824
+//
825
+//#define INCH_MODE_SUPPORT
826
+
827
+//
828
+// M149 Set temperature units support
829
+//
830
+//#define TEMPERATURE_UNITS_SUPPORT
831
+
772 832
 // @section temperature
773 833
 
774 834
 // Preheat Constants
775
-#define PLA_PREHEAT_HOTEND_TEMP 180
776
-#define PLA_PREHEAT_HPB_TEMP 70
777
-#define PLA_PREHEAT_FAN_SPEED 0   // Insert Value between 0 and 255
835
+#define PREHEAT_1_TEMP_HOTEND 180
836
+#define PREHEAT_1_TEMP_BED     70
837
+#define PREHEAT_1_FAN_SPEED     0 // Value from 0 to 255
838
+
839
+#define PREHEAT_2_TEMP_HOTEND 230
840
+#define PREHEAT_2_TEMP_BED    110
841
+#define PREHEAT_2_FAN_SPEED     0 // Value from 0 to 255
778 842
 
779
-#define ABS_PREHEAT_HOTEND_TEMP 230
780
-#define ABS_PREHEAT_HPB_TEMP 110
781
-#define ABS_PREHEAT_FAN_SPEED 0   // Insert Value between 0 and 255
843
+//
844
+// Nozzle Park -- EXPERIMENTAL
845
+//
846
+// When enabled allows the user to define a special XYZ position, inside the
847
+// machine's topology, to park the nozzle when idle or when receiving the G27
848
+// command.
849
+//
850
+// The "P" paramenter controls what is the action applied to the Z axis:
851
+//    P0: (Default) If current Z-pos is lower than Z-park then the nozzle will
852
+//        be raised to reach Z-park height.
853
+//
854
+//    P1: No matter the current Z-pos, the nozzle will be raised/lowered to
855
+//        reach Z-park height.
856
+//
857
+//    P2: The nozzle height will be raised by Z-park amount but never going over
858
+//        the machine's limit of Z_MAX_POS.
859
+//
860
+//#define NOZZLE_PARK_FEATURE
861
+
862
+#if ENABLED(NOZZLE_PARK_FEATURE)
863
+  // Specify a park position as { X, Y, Z }
864
+  #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 }
865
+#endif
866
+
867
+//
868
+// Clean Nozzle Feature -- EXPERIMENTAL
869
+//
870
+// When enabled allows the user to send G12 to start the nozzle cleaning
871
+// process, the G-Code accepts two parameters:
872
+//   "P" for pattern selection
873
+//   "S" for defining the number of strokes/repetitions
874
+//
875
+// Available list of patterns:
876
+//   P0: This is the default pattern, this process requires a sponge type
877
+//       material at a fixed bed location, the cleaning process is based on
878
+//       "strokes" i.e. back-and-forth movements between the starting and end
879
+//       points.
880
+//
881
+//   P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T"
882
+//       defines the number of zig-zag triangles to be done. "S" defines the
883
+//       number of strokes aka one back-and-forth movement. As an example
884
+//       sending "G12 P1 S1 T3" will execute:
885
+//
886
+//          --
887
+//         |  (X0, Y1) |     /\        /\        /\     | (X1, Y1)
888
+//         |           |    /  \      /  \      /  \    |
889
+//       A |           |   /    \    /    \    /    \   |
890
+//         |           |  /      \  /      \  /      \  |
891
+//         |  (X0, Y0) | /        \/        \/        \ | (X1, Y0)
892
+//          --         +--------------------------------+
893
+//                       |________|_________|_________|
894
+//                           T1        T2        T3
895
+//
896
+// Caveats: End point Z should use the same value as Start point Z.
897
+//
898
+// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments
899
+// may change to add new functionality like different wipe patterns.
900
+//
901
+//#define NOZZLE_CLEAN_FEATURE
902
+
903
+#if ENABLED(NOZZLE_CLEAN_FEATURE)
904
+  // Number of pattern repetitions
905
+  #define NOZZLE_CLEAN_STROKES  12
906
+
907
+  // Specify positions as { X, Y, Z }
908
+  #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)}
909
+  #define NOZZLE_CLEAN_END_POINT   {100, 60, (Z_MIN_POS + 1)}
910
+
911
+  // Moves the nozzle to the initial position
912
+  #define NOZZLE_CLEAN_GOBACK
913
+#endif
782 914
 
783 915
 //
784 916
 // Print job timer
785 917
 //
786 918
 // Enable this option to automatically start and stop the
787
-// print job timer when M104 and M109 commands are received.
919
+// print job timer when M104/M109/M190 commands are received.
920
+// M104 (extruder without wait) - high temp = none, low temp = stop timer
921
+// M109 (extruder with wait) - high temp = start timer, low temp = stop timer
922
+// M190 (bed with wait) - high temp = start timer, low temp = none
788 923
 //
789 924
 // In all cases the timer can be started and stopped using
790 925
 // the following commands:
@@ -817,8 +952,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
817 952
 //
818 953
 // Here you may choose the language used by Marlin on the LCD menus, the following
819 954
 // list of languages are available:
820
-//    en, pl, fr, de, es, ru, bg, it, pt, pt_utf8, pt-br, pt-br_utf8,
821
-//    fi, an, nl, ca, eu, kana, kana_utf8, cn, cz, test
955
+//    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
956
+//    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
957
+//
958
+// :{'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','test':'TEST'}
822 959
 //
823 960
 #define LCD_LANGUAGE en
824 961
 
@@ -966,6 +1103,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
966 1103
 //#define ULTIPANEL
967 1104
 
968 1105
 //
1106
+// Cartesio UI
1107
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1108
+//
1109
+//#define CARTESIO_UI
1110
+
1111
+//
969 1112
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
970 1113
 // http://reprap.org/wiki/PanelOne
971 1114
 //
@@ -978,6 +1121,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
978 1121
 //#define MAKRPANEL
979 1122
 
980 1123
 //
1124
+// ReprapWorld Graphical LCD
1125
+// https://reprapworld.com/?products_details&products_id/1218
1126
+//
1127
+//#define REPRAPWORLD_GRAPHICAL_LCD
1128
+
1129
+//
981 1130
 // Activate one of these if you have a Panucatt Devices
982 1131
 // Viki 2.0 or mini Viki with Graphic LCD
983 1132
 // http://panucatt.com
@@ -1027,7 +1176,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1027 1176
 // is pressed, a value of 10.0 means 10mm per click.
1028 1177
 //
1029 1178
 //#define REPRAPWORLD_KEYPAD
1030
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1179
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1031 1180
 
1032 1181
 //
1033 1182
 // RigidBot Panel V1.0
@@ -1088,6 +1237,15 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1088 1237
 //#define U8GLIB_SSD1306
1089 1238
 
1090 1239
 //
1240
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1241
+//
1242
+//#define SAV_3DGLCD
1243
+#if ENABLED(SAV_3DGLCD)
1244
+  //#define U8GLIB_SSD1306
1245
+  #define U8GLIB_SH1106
1246
+#endif
1247
+
1248
+//
1091 1249
 // CONTROLLER TYPE: Shift register panels
1092 1250
 //
1093 1251
 // 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH
@@ -1115,7 +1273,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1115 1273
 // at zero value, there are 128 effective control positions.
1116 1274
 #define SOFT_PWM_SCALE 0
1117 1275
 
1118
-// Temperature status LEDs that display the hotend and bet temperature.
1276
+// Temperature status LEDs that display the hotend and bed temperature.
1119 1277
 // If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
1120 1278
 // Otherwise the RED led is on. There is 1C hysteresis.
1121 1279
 //#define TEMP_STAT_LEDS
@@ -1147,28 +1305,16 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1147 1305
 //
1148 1306
 //#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
1149 1307
 
1150
-// Servo Endstops
1151
-//
1152
-// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes.
1153
-// Use M851 to set the Z probe vertical offset from the nozzle. Store that setting with M500.
1154
-//
1155
-//#define X_ENDSTOP_SERVO_NR 1
1156
-//#define Y_ENDSTOP_SERVO_NR 2
1157
-//#define Z_ENDSTOP_SERVO_NR 0
1158
-//#define SERVO_ENDSTOP_ANGLES {{0,0}, {0,0}, {70,0}} // X,Y,Z Axis Extend and Retract angles
1308
+// Delay (in microseconds) before the next move will start, to give the servo time to reach its target angle.
1309
+// 300ms is a good value but you can try less delay.
1310
+// If the servo can't reach the requested position, increase it.
1311
+#define SERVO_DELAY 300
1159 1312
 
1160 1313
 // Servo deactivation
1161 1314
 //
1162 1315
 // With this option servos are powered only during movement, then turned off to prevent jitter.
1163 1316
 //#define DEACTIVATE_SERVOS_AFTER_MOVE
1164 1317
 
1165
-#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE)
1166
-  // Delay (in microseconds) before turning the servo off. This depends on the servo speed.
1167
-  // 300ms is a good value but you can try less delay.
1168
-  // If the servo can't reach the requested position, increase it.
1169
-  #define SERVO_DEACTIVATION_DELAY 300
1170
-#endif
1171
-
1172 1318
 /**********************************************************************\
1173 1319
  * Support for a filament diameter sensor
1174 1320
  * Also allows adjustment of diameter at print time (vs  at slicing)
@@ -1199,7 +1345,4 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1199 1345
   //#define FILAMENT_LCD_DISPLAY
1200 1346
 #endif
1201 1347
 
1202
-#include "Configuration_adv.h"
1203
-#include "thermistortables.h"
1204
-
1205
-#endif //CONFIGURATION_H
1348
+#endif // CONFIGURATION_H

+ 148
- 47
Marlin/example_configurations/TAZ4/Configuration_adv.h Parādīt failu

@@ -33,7 +33,18 @@
33 33
 #ifndef CONFIGURATION_ADV_H
34 34
 #define CONFIGURATION_ADV_H
35 35
 
36
-#include "Conditionals.h"
36
+/**
37
+ *
38
+ *  ***********************************
39
+ *  **  ATTENTION TO ALL DEVELOPERS  **
40
+ *  ***********************************
41
+ *
42
+ * You must increment this version number for every significant change such as,
43
+ * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option.
44
+ *
45
+ * Note: Update also Version.h !
46
+ */
47
+#define CONFIGURATION_ADV_H_VERSION 010100
37 48
 
38 49
 // @section temperature
39 50
 
@@ -102,8 +113,8 @@
102 113
 #if ENABLED(PIDTEMP)
103 114
   // this adds an experimental additional term to the heating power, proportional to the extrusion speed.
104 115
   // if Kc is chosen well, the additional required power due to increased melting should be compensated.
105
-  #define PID_ADD_EXTRUSION_RATE
106
-  #if ENABLED(PID_ADD_EXTRUSION_RATE)
116
+  //#define PID_EXTRUSION_SCALING
117
+  #if ENABLED(PID_EXTRUSION_SCALING)
107 118
     #define DEFAULT_Kc (100) //heating power=Kc*(e_speed)
108 119
     #define LPQ_MAX_LEN 50
109 120
   #endif
@@ -128,15 +139,42 @@
128 139
 //The M105 command return, besides traditional information, the ADC value read from temperature sensors.
129 140
 //#define SHOW_TEMP_ADC_VALUES
130 141
 
142
+/**
143
+ * High Temperature Thermistor Support
144
+ *
145
+ * Thermistors able to support high temperature tend to have a hard time getting
146
+ * good readings at room and lower temperatures. This means HEATER_X_RAW_LO_TEMP
147
+ * will probably be caught when the heating element first turns on during the
148
+ * preheating process, which will trigger a min_temp_error as a safety measure
149
+ * and force stop everything.
150
+ * To circumvent this limitation, we allow for a preheat time (during which,
151
+ * min_temp_error won't be triggered) and add a min_temp buffer to handle
152
+ * aberrant readings.
153
+ *
154
+ * If you want to enable this feature for your hotend thermistor(s)
155
+ * uncomment and set values > 0 in the constants below
156
+ */
157
+
158
+// The number of consecutive low temperature errors that can occur
159
+// before a min_temp_error is triggered. (Shouldn't be more than 10.)
160
+//#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 0
161
+
162
+// The number of milliseconds a hotend will preheat before starting to check
163
+// the temperature. This value should NOT be set to the time it takes the
164
+// hot end to reach the target temperature, but the time it takes to reach
165
+// the minimum temperature your thermistor can read. The lower the better/safer.
166
+// This shouldn't need to be more than 30 seconds (30000)
167
+//#define MILLISECONDS_PREHEAT_TIME 0
168
+
131 169
 // @section extruder
132 170
 
133 171
 //  extruder run-out prevention.
134 172
 //if the machine is idle, and the temperature over MINTEMP, every couple of SECONDS some filament is extruded
135 173
 //#define EXTRUDER_RUNOUT_PREVENT
136 174
 #define EXTRUDER_RUNOUT_MINTEMP 190
137
-#define EXTRUDER_RUNOUT_SECONDS 30.
138
-#define EXTRUDER_RUNOUT_ESTEPS 14. //mm filament
139
-#define EXTRUDER_RUNOUT_SPEED 1500.  //extrusion speed
175
+#define EXTRUDER_RUNOUT_SECONDS 30
176
+#define EXTRUDER_RUNOUT_ESTEPS 14   // mm filament
177
+#define EXTRUDER_RUNOUT_SPEED 1500  // extrusion speed
140 178
 #define EXTRUDER_RUNOUT_EXTRUDE 100
141 179
 
142 180
 // @section temperature
@@ -185,24 +223,42 @@
185 223
 #define EXTRUDER_AUTO_FAN_TEMPERATURE 50
186 224
 #define EXTRUDER_AUTO_FAN_SPEED   255  // == full speed
187 225
 
188
-
189 226
 //===========================================================================
190
-//=============================Mechanical Settings===========================
227
+//============================ Mechanical Settings ==========================
191 228
 //===========================================================================
192 229
 
193 230
 // @section homing
194 231
 
195
-#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing
232
+// If you want endstops to stay on (by default) even when not homing
233
+// enable this option. Override at any time with M120, M121.
234
+//#define ENDSTOPS_ALWAYS_ON_DEFAULT
196 235
 
197 236
 // @section extras
198 237
 
199 238
 //#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
200 239
 
240
+// Dual X Steppers
241
+// Uncomment this option to drive two X axis motors.
242
+// The next unused E driver will be assigned to the second X stepper.
243
+//#define X_DUAL_STEPPER_DRIVERS
244
+#if ENABLED(X_DUAL_STEPPER_DRIVERS)
245
+  // Set true if the two X motors need to rotate in opposite directions
246
+  #define INVERT_X2_VS_X_DIR true
247
+#endif
248
+
249
+
250
+// Dual Y Steppers
251
+// Uncomment this option to drive two Y axis motors.
252
+// The next unused E driver will be assigned to the second Y stepper.
253
+//#define Y_DUAL_STEPPER_DRIVERS
254
+#if ENABLED(Y_DUAL_STEPPER_DRIVERS)
255
+  // Set true if the two Y motors need to rotate in opposite directions
256
+  #define INVERT_Y2_VS_Y_DIR true
257
+#endif
258
+
201 259
 // A single Z stepper driver is usually used to drive 2 stepper motors.
202
-// Uncomment this define to utilize a separate stepper driver for each Z axis motor.
203
-// Only a few motherboards support this, like RAMPS, which have dual extruder support (the 2nd, often unused, extruder driver is used
204
-// to control the 2nd Z axis stepper motor). The pins are currently only defined for a RAMPS motherboards.
205
-// On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder.
260
+// Uncomment this option to use a separate stepper driver for each Z axis motor.
261
+// The next unused E driver will be assigned to the second Z stepper.
206 262
 //#define Z_DUAL_STEPPER_DRIVERS
207 263
 
208 264
 #if ENABLED(Z_DUAL_STEPPER_DRIVERS)
@@ -224,14 +280,6 @@
224 280
 
225 281
 #endif // Z_DUAL_STEPPER_DRIVERS
226 282
 
227
-// Same again but for Y Axis.
228
-//#define Y_DUAL_STEPPER_DRIVERS
229
-
230
-#if ENABLED(Y_DUAL_STEPPER_DRIVERS)
231
-  // Define if the two Y drives need to rotate in opposite directions
232
-  #define INVERT_Y2_VS_Y_DIR true
233
-#endif
234
-
235 283
 // Enable this for dual x-carriage printers.
236 284
 // A dual x-carriage design has the advantage that the inactive extruder can be parked which
237 285
 // prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
@@ -245,7 +293,7 @@
245 293
   #define X2_MAX_POS 353    // set maximum to the distance between toolheads when both heads are homed
246 294
   #define X2_HOME_DIR 1     // the second X-carriage always homes to the maximum endstop position
247 295
   #define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position
248
-      // However: In this mode the EXTRUDER_OFFSET_X value for the second extruder provides a software
296
+      // However: In this mode the HOTEND_OFFSET_X value for the second extruder provides a software
249 297
       // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops
250 298
       // without modifying the firmware (through the "M218 T1 X???" command).
251 299
       // Remember: you should set the second extruder x-offset to 0 in your slicer.
@@ -287,7 +335,10 @@
287 335
 
288 336
 #define AXIS_RELATIVE_MODES {false, false, false, false}
289 337
 
290
-//By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
338
+// Allow duplication mode with a basic dual-nozzle extruder
339
+//#define DUAL_NOZZLE_DUPLICATION_MODE
340
+
341
+// By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
291 342
 #define INVERT_X_STEP_PIN false
292 343
 #define INVERT_Y_STEP_PIN false
293 344
 #define INVERT_Z_STEP_PIN false
@@ -359,6 +410,9 @@
359 410
 
360 411
 // @section lcd
361 412
 
413
+// Include a page of printer information in the LCD Main Menu
414
+//#define LCD_INFO_MENU
415
+
362 416
 #if ENABLED(SDSUPPORT)
363 417
 
364 418
   // Some RAMPS and other boards don't detect when an SD card is inserted. You can work
@@ -396,7 +450,6 @@
396 450
   // This option allows you to abort SD printing when any endstop is triggered.
397 451
   // This feature must be enabled with "M540 S1" or from the LCD menu.
398 452
   // To have any effect, endstops must be enabled during SD printing.
399
-  // With ENDSTOPS_ONLY_FOR_HOMING you must send "M120" to enable endstops.
400 453
   //#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED
401 454
 
402 455
 #endif // SDSUPPORT
@@ -412,9 +465,10 @@
412 465
   //#define USE_SMALL_INFOFONT
413 466
 #endif // DOGLCD
414 467
 
415
-// @section more
468
+// @section safety
416 469
 
417
-// The hardware watchdog should reset the microcontroller disabling all outputs, in case the firmware gets stuck and doesn't do temperature regulation.
470
+// The hardware watchdog should reset the microcontroller disabling all outputs,
471
+// in case the firmware gets stuck and doesn't do temperature regulation.
418 472
 #define USE_WATCHDOG
419 473
 
420 474
 #if ENABLED(USE_WATCHDOG)
@@ -453,6 +507,27 @@
453 507
   #define D_FILAMENT 2.85
454 508
 #endif
455 509
 
510
+// Implementation of a linear pressure control
511
+// Assumption: advance = k * (delta velocity)
512
+// K=0 means advance disabled. A good value for a gregs wade extruder will be around K=75
513
+//#define LIN_ADVANCE
514
+
515
+#if ENABLED(LIN_ADVANCE)
516
+  #define LIN_ADVANCE_K 75
517
+#endif
518
+
519
+// @section leveling
520
+
521
+// Default mesh area is an area with an inset margin on the print area.
522
+// Below are the macros that are used to define the borders for the mesh area,
523
+// made available here for specialized needs, ie dual extruder setup.
524
+#if ENABLED(MESH_BED_LEVELING)
525
+  #define MESH_MIN_X (X_MIN_POS + MESH_INSET)
526
+  #define MESH_MAX_X (X_MAX_POS - (MESH_INSET))
527
+  #define MESH_MIN_Y (Y_MIN_POS + MESH_INSET)
528
+  #define MESH_MAX_Y (Y_MAX_POS - (MESH_INSET))
529
+#endif
530
+
456 531
 // @section extras
457 532
 
458 533
 // Arc interpretation settings:
@@ -484,12 +559,27 @@ const unsigned int dropsegments = 5; //everything with less than this number of
484 559
   #define BLOCK_BUFFER_SIZE 16 // maximize block buffer
485 560
 #endif
486 561
 
487
-// @section more
562
+// @section serial
488 563
 
489
-//The ASCII buffer for receiving from the serial:
564
+// The ASCII buffer for serial input
490 565
 #define MAX_CMD_SIZE 96
491 566
 #define BUFSIZE 4
492 567
 
568
+// Transfer Buffer Size
569
+// To save 386 bytes of PROGMEM (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0.
570
+// To buffer a simple "ok" you need 4 bytes.
571
+// For ADVANCED_OK (M105) you need 32 bytes.
572
+// For debug-echo: 128 bytes for the optimal speed.
573
+// Other output doesn't need to be that speedy.
574
+// :[0,2,4,8,16,32,64,128,256]
575
+#define TX_BUFFER_SIZE 0
576
+
577
+// Enable an emergency-command parser to intercept certain commands as they
578
+// enter the serial receive buffer, so they cannot be blocked.
579
+// Currently handles M108, M112, M410
580
+// Does not work on boards using AT90USB (USBCON) processors!
581
+//#define EMERGENCY_PARSER
582
+
493 583
 // Bad Serial-connections can miss a received command by sending an 'ok'
494 584
 // Therefore some clients abort after 30 seconds in a timeout.
495 585
 // Some other clients start sending commands while receiving a 'wait'.
@@ -521,16 +611,30 @@ const unsigned int dropsegments = 5; //everything with less than this number of
521 611
 
522 612
 // Add support for experimental filament exchange support M600; requires display
523 613
 #if ENABLED(ULTIPANEL)
524
-  #define FILAMENTCHANGEENABLE
525
-  #if ENABLED(FILAMENTCHANGEENABLE)
526
-    #define FILAMENTCHANGE_XPOS 3
527
-    #define FILAMENTCHANGE_YPOS 3
528
-    #define FILAMENTCHANGE_ZADD 10
529
-    #define FILAMENTCHANGE_FIRSTRETRACT -2
530
-    #define FILAMENTCHANGE_FINALRETRACT -100
531
-    //#define AUTO_FILAMENT_CHANGE                //This extrude filament until you press the button on LCD
532
-    //#define AUTO_FILAMENT_CHANGE_LENGTH 0.04    //Extrusion length on automatic extrusion loop
533
-    //#define AUTO_FILAMENT_CHANGE_FEEDRATE 300   //Extrusion feedrate (mm/min) on automatic extrusion loop
614
+  #define FILAMENT_CHANGE_FEATURE               // Enable filament exchange menu and M600 g-code (used for runout sensor too)
615
+  #if ENABLED(FILAMENT_CHANGE_FEATURE)
616
+    #define FILAMENT_CHANGE_X_POS 3             // X position of hotend
617
+    #define FILAMENT_CHANGE_Y_POS 3             // Y position of hotend
618
+    #define FILAMENT_CHANGE_Z_ADD 10            // Z addition of hotend (lift)
619
+    #define FILAMENT_CHANGE_XY_FEEDRATE 100     // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
620
+    #define FILAMENT_CHANGE_Z_FEEDRATE 5        // Z axis feedrate in mm/s (not used for delta printers)
621
+    #define FILAMENT_CHANGE_RETRACT_LENGTH 2    // Initial retract in mm
622
+                                                // It is a short retract used immediately after print interrupt before move to filament exchange position
623
+    #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
624
+    #define FILAMENT_CHANGE_UNLOAD_LENGTH 100   // Unload filament length from hotend in mm
625
+                                                // Longer length for bowden printers to unload filament from whole bowden tube,
626
+                                                // shorter lenght for printers without bowden to unload filament from extruder only,
627
+                                                // 0 to disable unloading for manual unloading
628
+    #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10  // Unload filament feedrate in mm/s - filament unloading can be fast
629
+    #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
630
+                                                // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
631
+                                                // Short or zero length for printers without bowden where loading is not used
632
+    #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
633
+    #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
634
+                                                // 0 to disable for manual extrusion
635
+                                                // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
636
+                                                // or until outcoming filament color is not clear for filament color change
637
+    #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
534 638
   #endif
535 639
 #endif
536 640
 
@@ -676,9 +780,9 @@ const unsigned int dropsegments = 5; //everything with less than this number of
676 780
  * devices on the bus.
677 781
  *
678 782
  * ; Example #1
679
- * ; This macro send the string "Marlin" to the slave device with address 0x63
783
+ * ; This macro send the string "Marlin" to the slave device with address 0x63 (99)
680 784
  * ; It uses multiple M155 commands with one B<base 10> arg
681
- * M155 A63  ; Target slave address
785
+ * M155 A99  ; Target slave address
682 786
  * M155 B77  ; M
683 787
  * M155 B97  ; a
684 788
  * M155 B114 ; r
@@ -688,19 +792,16 @@ const unsigned int dropsegments = 5; //everything with less than this number of
688 792
  * M155 S1   ; Send the current buffer
689 793
  *
690 794
  * ; Example #2
691
- * ; Request 6 bytes from slave device with address 0x63
692
- * M156 A63 B5
795
+ * ; Request 6 bytes from slave device with address 0x63 (99)
796
+ * M156 A99 B5
693 797
  *
694 798
  * ; Example #3
695 799
  * ; Example serial output of a M156 request
696
- * echo:i2c-reply: from:63 bytes:5 data:hello
800
+ * echo:i2c-reply: from:99 bytes:5 data:hello
697 801
  */
698 802
 
699 803
 // @section i2cbus
700 804
 
701 805
 //#define EXPERIMENTAL_I2CBUS
702 806
 
703
-#include "Conditionals.h"
704
-#include "SanityCheck.h"
705
-
706
-#endif //CONFIGURATION_ADV_H
807
+#endif // CONFIGURATION_ADV_H

+ 290
- 147
Marlin/example_configurations/WITBOX/Configuration.h Parādīt failu

@@ -38,8 +38,18 @@
38 38
 #ifndef CONFIGURATION_H
39 39
 #define CONFIGURATION_H
40 40
 
41
-#include "boards.h"
42
-#include "macros.h"
41
+/**
42
+ *
43
+ *  ***********************************
44
+ *  **  ATTENTION TO ALL DEVELOPERS  **
45
+ *  ***********************************
46
+ *
47
+ * You must increment this version number for every significant change such as,
48
+ * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option.
49
+ *
50
+ * Note: Update also Version.h !
51
+ */
52
+#define CONFIGURATION_H_VERSION 010100
43 53
 
44 54
 //===========================================================================
45 55
 //============================= Getting Started =============================
@@ -73,20 +83,26 @@
73 83
 
74 84
 // @section info
75 85
 
76
-#if ENABLED(USE_AUTOMATIC_VERSIONING)
77
-  #include "_Version.h"
78
-#else
79
-  #include "Version.h"
80
-#endif
81
-
82 86
 // User-specified version info of this build to display in [Pronterface, etc] terminal window during
83 87
 // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
84 88
 // build by the user have been successfully uploaded into firmware.
85 89
 #define STRING_CONFIG_H_AUTHOR "(bq Witbox)" // Who made the changes.
86 90
 #define SHOW_BOOTSCREEN
87
-#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during bootup in line 1
88
-//#define STRING_SPLASH_LINE2 STRING_DISTRIBUTION_DATE // will be shown during bootup in line 2
91
+#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during boot in line 1
92
+#define STRING_SPLASH_LINE2 WEBSITE_URL         // will be shown during boot in line 2
89 93
 
94
+//
95
+// *** VENDORS PLEASE READ *****************************************************
96
+//
97
+// Marlin now allow you to have a vendor boot image to be displayed on machine
98
+// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your
99
+// custom boot image and them the default Marlin boot image is shown.
100
+//
101
+// We suggest for you to take advantage of this new feature and keep the Marlin
102
+// boot image unmodified. For an example have a look at the bq Hephestos 2
103
+// example configuration folder.
104
+//
105
+//#define SHOW_CUSTOM_BOOTSCREEN
90 106
 // @section machine
91 107
 
92 108
 // SERIAL_PORT selects which serial port should be used for communication with the host.
@@ -126,17 +142,40 @@
126 142
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
127 143
 //#define SINGLENOZZLE
128 144
 
145
+// A dual extruder that uses a single stepper motor
146
+// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z
147
+//#define SWITCHING_EXTRUDER
148
+#if ENABLED(SWITCHING_EXTRUDER)
149
+  #define SWITCHING_EXTRUDER_SERVO_NR 0
150
+  #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1
151
+  //#define HOTEND_OFFSET_Z {0.0, 0.0}
152
+#endif
153
+
154
+/**
155
+ * "Mixing Extruder"
156
+ *   - Adds a new code, M165, to set the current mix factors.
157
+ *   - Extends the stepping routines to move multiple steppers in proportion to the mix.
158
+ *   - Optional support for Repetier Host M163, M164, and virtual extruder.
159
+ *   - This implementation supports only a single extruder.
160
+ *   - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
161
+ */
162
+//#define MIXING_EXTRUDER
163
+#if ENABLED(MIXING_EXTRUDER)
164
+  #define MIXING_STEPPERS 2        // Number of steppers in your mixing extruder
165
+  #define MIXING_VIRTUAL_TOOLS 16  // Use the Virtual Tool method with M163 and M164
166
+  //#define DIRECT_MIXING_IN_G1    // Allow ABCDHI mix factors in G1 movement commands
167
+#endif
168
+
129 169
 // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
130 170
 // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
131 171
 // For the other hotends it is their distance from the extruder 0 hotend.
132
-//#define EXTRUDER_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
133
-//#define EXTRUDER_OFFSET_Y {0.0, 5.00}  // (in mm) for each extruder, offset of the hotend on the Y axis
172
+//#define HOTEND_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
173
+//#define HOTEND_OFFSET_Y {0.0, 5.00}  // (in mm) for each extruder, offset of the hotend on the Y axis
134 174
 
135 175
 //// The following define selects which power supply you have. Please choose the one that matches your setup
136 176
 // 1 = ATX
137 177
 // 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC)
138 178
 // :{1:'ATX',2:'X-Box 360'}
139
-
140 179
 #define POWER_SUPPLY 1
141 180
 
142 181
 // Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it.
@@ -171,6 +210,7 @@
171 210
 // 13 is 100k Hisens 3950  1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE"
172 211
 // 20 is the PT100 circuit found in the Ultimainboard V2.x
173 212
 // 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950
213
+// 66 is 4.7M High Temperature thermistor from Dyze Design
174 214
 // 70 is the 100K thermistor found in the bq Hephestos 2
175 215
 //
176 216
 //    1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k
@@ -187,7 +227,7 @@
187 227
 //     Use it for Testing or Development purposes. NEVER for production machine.
188 228
 //#define DUMMY_THERMISTOR_998_VALUE 25
189 229
 //#define DUMMY_THERMISTOR_999_VALUE 100
190
-// :{ '0': "Not used", '4': "10k !! do not use for a hotend. Bad resolution at high temp. !!", '1': "100k / 4.7k - EPCOS", '51': "100k / 1k - EPCOS", '6': "100k / 4.7k EPCOS - Not as accurate as Table 1", '5': "100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '7': "100k / 4.7k Honeywell 135-104LAG-J01", '71': "100k / 4.7k Honeywell 135-104LAF-J01", '8': "100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT", '9': "100k / 4.7k GE Sensing AL03006-58.2K-97-G1", '10': "100k / 4.7k RS 198-961", '11': "100k / 4.7k beta 3950 1%", '12': "100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)", '13': "100k Hisens 3950  1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'", '60': "100k Maker's Tool Works Kapton Bed Thermistor beta=3950", '55': "100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '2': "200k / 4.7k - ATC Semitec 204GT-2", '52': "200k / 1k - ATC Semitec 204GT-2", '-3': "Thermocouple + MAX31855 (only for sensor 0)", '-2': "Thermocouple + MAX6675 (only for sensor 0)", '-1': "Thermocouple + AD595", '3': "Mendel-parts / 4.7k", '1047': "Pt1000 / 4.7k", '1010': "Pt1000 / 1k (non standard)", '20': "PT100 (Ultimainboard V2.x)", '147': "Pt100 / 4.7k", '110': "Pt100 / 1k (non-standard)", '998': "Dummy 1", '999': "Dummy 2" }
230
+// :{ '0': "Not used",'1':"100k / 4.7k - EPCOS",'2':"200k / 4.7k - ATC Semitec 204GT-2",'3':"Mendel-parts / 4.7k",'4':"10k !! do not use for a hotend. Bad resolution at high temp. !!",'5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'6':"100k / 4.7k EPCOS - Not as accurate as Table 1",'7':"100k / 4.7k Honeywell 135-104LAG-J01",'8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT",'9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1",'10':"100k / 4.7k RS 198-961",'11':"100k / 4.7k beta 3950 1%",'12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)",'13':"100k Hisens 3950  1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'",'20':"PT100 (Ultimainboard V2.x)",'51':"100k / 1k - EPCOS",'52':"200k / 1k - ATC Semitec 204GT-2",'55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950",'66':"Dyze Design 4.7M High Temperature thermistor",'70':"the 100K thermistor found in the bq Hephestos 2",'71':"100k / 4.7k Honeywell 135-104LAF-J01",'147':"Pt100 / 4.7k",'1047':"Pt1000 / 4.7k",'110':"Pt100 / 1k (non-standard)",'1010':"Pt1000 / 1k (non standard)",'-3':"Thermocouple + MAX31855 (only for sensor 0)",'-2':"Thermocouple + MAX6675 (only for sensor 0)",'-1':"Thermocouple + AD595",'998':"Dummy 1",'999':"Dummy 2" }
191 231
 #define TEMP_SENSOR_0 1
192 232
 #define TEMP_SENSOR_1 0
193 233
 #define TEMP_SENSOR_2 0
@@ -226,10 +266,6 @@
226 266
 #define HEATER_3_MAXTEMP 260
227 267
 #define BED_MAXTEMP 150
228 268
 
229
-// If you want the M105 heater power reported in watts, define the BED_WATTS, and (shared for all extruders) EXTRUDER_WATTS
230
-//#define EXTRUDER_WATTS (12.0*12.0/6.7) // P=U^2/R
231
-//#define BED_WATTS (12.0*12.0/1.1)      // P=U^2/R
232
-
233 269
 //===========================================================================
234 270
 //============================= PID Settings ================================
235 271
 //===========================================================================
@@ -244,8 +280,8 @@
244 280
   //#define PID_DEBUG // Sends debug data to the serial port.
245 281
   //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX
246 282
   //#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
247
-  //#define PID_PARAMS_PER_EXTRUDER // Uses separate PID parameters for each extruder (useful for mismatched extruders)
248
-                                    // Set/get with gcode: M301 E[extruder number, 0-2]
283
+  //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders)
284
+                                  // Set/get with gcode: M301 E[extruder number, 0-2]
249 285
   #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature
250 286
                                   // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max.
251 287
   #define PID_INTEGRAL_DRIVE_MAX PID_MAX  //limit for the integral term
@@ -376,18 +412,79 @@
376 412
 #endif
377 413
 
378 414
 // Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup).
379
-const bool X_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
380
-const bool Y_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
381
-const bool Z_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
382
-const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
383
-const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
384
-const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
385
-const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
415
+#define X_MIN_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
416
+#define Y_MIN_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
417
+#define Z_MIN_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
418
+#define X_MAX_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
419
+#define Y_MAX_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
420
+#define Z_MAX_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
421
+#define Z_MIN_PROBE_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
386 422
 
387 423
 //===========================================================================
388 424
 //============================= Z Probe Options =============================
389 425
 //===========================================================================
390 426
 
427
+//
428
+// Probe Type
429
+// Probes are sensors/switches that are activated / deactivated before/after use.
430
+//
431
+// Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc.
432
+// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below.
433
+//
434
+// Use M851 to set the Z probe vertical offset from the nozzle. Store with M500.
435
+//
436
+
437
+// A Fix-Mounted Probe either doesn't deploy or needs manual deployment.
438
+// For example an inductive probe, or a setup that uses the nozzle to probe.
439
+// An inductive probe must be deactivated to go below
440
+// its trigger-point if hardware endstops are active.
441
+//#define FIX_MOUNTED_PROBE
442
+
443
+// The BLTouch probe emulates a servo probe.
444
+//#define BLTOUCH
445
+
446
+// Z Servo Probe, such as an endstop switch on a rotating arm.
447
+//#define Z_ENDSTOP_SERVO_NR 0
448
+//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles
449
+
450
+// Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
451
+//#define Z_PROBE_SLED
452
+//#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.
453
+
454
+// Z Probe to nozzle (X,Y) offset, relative to (0, 0).
455
+// X and Y offsets must be integers.
456
+//
457
+// In the following example the X and Y offsets are both positive:
458
+// #define X_PROBE_OFFSET_FROM_EXTRUDER 10
459
+// #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
460
+//
461
+//    +-- BACK ---+
462
+//    |           |
463
+//  L |    (+) P  | R <-- probe (20,20)
464
+//  E |           | I
465
+//  F | (-) N (+) | G <-- nozzle (10,10)
466
+//  T |           | H
467
+//    |    (-)    | T
468
+//    |           |
469
+//    O-- FRONT --+
470
+//  (0,0)
471
+#define X_PROBE_OFFSET_FROM_EXTRUDER -25     // X offset: -left  +right  [of the nozzle]
472
+#define Y_PROBE_OFFSET_FROM_EXTRUDER -29     // Y offset: -front +behind [the nozzle]
473
+#define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35  // Z offset: -below +above  [the nozzle]
474
+
475
+// X and Y axis travel speed (mm/m) between probes
476
+#define XY_PROBE_SPEED 8000
477
+// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
478
+#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
479
+// Speed for the "accurate" probe of each point
480
+#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
481
+// Use double touch for probing
482
+//#define PROBE_DOUBLE_TOUCH
483
+
484
+//
485
+// Allen Key Probe is defined in the Delta example configurations.
486
+//
487
+
391 488
 // Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z Probe and a Z-min-endstop on the same machine.
392 489
 // With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing.
393 490
 //
@@ -399,7 +496,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
399 496
 // To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN.
400 497
 //
401 498
 // For a servo-based Z probe, you must set up servo support below, including
402
-// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES.
499
+// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and Z_SERVO_ANGLES.
403 500
 //
404 501
 // - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin.
405 502
 // - Use 5V for powered (usu. inductive) sensors.
@@ -432,6 +529,21 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
432 529
 // If you're using the Z MIN endstop connector for your Z probe, this has no effect.
433 530
 //#define DISABLE_Z_MIN_PROBE_ENDSTOP
434 531
 
532
+// Enable Z Probe Repeatability test to see how accurate your probe is
533
+//#define Z_MIN_PROBE_REPEATABILITY_TEST
534
+
535
+//
536
+// Probe Raise options provide clearance for the probe to deploy, stow, and travel.
537
+//
538
+#define Z_PROBE_DEPLOY_HEIGHT 15 // Raise to make room for the probe to deploy / stow
539
+#define Z_PROBE_TRAVEL_HEIGHT 5  // Raise between probing points.
540
+
541
+//
542
+// For M851 give a range for adjusting the Z probe offset
543
+//
544
+#define Z_PROBE_OFFSET_RANGE_MIN -20
545
+#define Z_PROBE_OFFSET_RANGE_MAX 20
546
+
435 547
 // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
436 548
 // :{0:'Low',1:'High'}
437 549
 #define X_ENABLE_ON 0
@@ -468,8 +580,9 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
468 580
 #define INVERT_E3_DIR false
469 581
 
470 582
 // @section homing
471
-//#define MIN_Z_HEIGHT_FOR_HOMING 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
472
-                                    // Be sure you have this distance over your Z_MAX_POS in case.
583
+
584
+//#define Z_HOMING_HEIGHT 4  // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
585
+                             // Be sure you have this distance over your Z_MAX_POS in case.
473 586
 
474 587
 // ENDSTOP SETTINGS:
475 588
 // Sets direction of endstops when homing; 1=MAX, -1=MIN
@@ -499,7 +612,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
499 612
                                  // It is assumed that when logic high = filament available
500 613
                                  //                    when logic  low = filament ran out
501 614
 #if ENABLED(FILAMENT_RUNOUT_SENSOR)
502
-  const bool FIL_RUNOUT_INVERTING = true;  // Should be uncommented and true or false should assigned
615
+  const bool FIL_RUNOUT_INVERTING = false; // set to true to invert the logic of the sensor.
503 616
   #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined.
504 617
   #define FILAMENT_RUNOUT_SCRIPT "M600"
505 618
 #endif
@@ -511,10 +624,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
511 624
 //#define MESH_BED_LEVELING    // Enable mesh bed leveling.
512 625
 
513 626
 #if ENABLED(MESH_BED_LEVELING)
514
-  #define MESH_MIN_X 10
515
-  #define MESH_MAX_X (X_MAX_POS - (MESH_MIN_X))
516
-  #define MESH_MIN_Y 10
517
-  #define MESH_MAX_Y (Y_MAX_POS - (MESH_MIN_Y))
627
+  #define MESH_INSET 10        // Mesh inset margin on print area
518 628
   #define MESH_NUM_X_POINTS 3  // Don't use more than 7 points per axis, implementation limited.
519 629
   #define MESH_NUM_Y_POINTS 3
520 630
   #define MESH_HOME_SEARCH_Z 4  // Z after Home, bed somewhere below but above 0.0.
@@ -536,8 +646,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
536 646
 // @section bedlevel
537 647
 
538 648
 //#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line)
649
+
650
+// Enable this feature to get detailed logging of G28, G29, M48, etc.
651
+// Logging is off by default. Enable this logging feature with 'M111 S32'.
652
+// NOTE: Requires a huge amount of PROGMEM.
539 653
 //#define DEBUG_LEVELING_FEATURE
540
-#define Z_MIN_PROBE_REPEATABILITY_TEST  // If not commented out, Z Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
541 654
 
542 655
 #if ENABLED(AUTO_BED_LEVELING_FEATURE)
543 656
 
@@ -580,58 +693,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
580 693
     #define ABL_PROBE_PT_3_X 170
581 694
     #define ABL_PROBE_PT_3_Y 20
582 695
 
583
-  #endif // AUTO_BED_LEVELING_GRID
584
-
585
-  // Z Probe to nozzle (X,Y) offset, relative to (0, 0).
586
-  // X and Y offsets must be integers.
587
-  //
588
-  // In the following example the X and Y offsets are both positive:
589
-  // #define X_PROBE_OFFSET_FROM_EXTRUDER 10
590
-  // #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
591
-  //
592
-  //    +-- BACK ---+
593
-  //    |           |
594
-  //  L |    (+) P  | R <-- probe (20,20)
595
-  //  E |           | I
596
-  //  F | (-) N (+) | G <-- nozzle (10,10)
597
-  //  T |           | H
598
-  //    |    (-)    | T
599
-  //    |           |
600
-  //    O-- FRONT --+
601
-  //  (0,0)
602
-  #define X_PROBE_OFFSET_FROM_EXTRUDER -25     // X offset: -left  +right  [of the nozzle]
603
-  #define Y_PROBE_OFFSET_FROM_EXTRUDER -29     // Y offset: -front +behind [the nozzle]
604
-  #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35  // Z offset: -below +above  [the nozzle]
605
-
606
-  #define XY_TRAVEL_SPEED 8000         // X and Y axis travel speed between probes, in mm/min.
607
-
608
-  #define Z_RAISE_BEFORE_PROBING 15   // How much the Z axis will be raised before traveling to the first probing point.
609
-  #define Z_RAISE_BETWEEN_PROBINGS 5  // How much the Z axis will be raised when traveling from between next probing points.
610
-  #define Z_RAISE_AFTER_PROBING 15    // How much the Z axis will be raised after the last probing point.
696
+  #endif // !AUTO_BED_LEVELING_GRID
611 697
 
612 698
   //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine.
613 699
                                                                              // Useful to retract a deployable Z probe.
614 700
 
615
-  // Probes are sensors/switches that need to be activated before they can be used
616
-  // and deactivated after their use.
617
-  // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE
618
-
619
-  // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER
620
-  // when the hardware endstops are active.
621
-  //#define FIX_MOUNTED_PROBE
622
-
623
-  // A Servo Probe can be defined in the servo section below.
624
-
625
-  // An Allen Key Probe is currently predefined only in the delta example configurations.
626
-
627
-  // Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
628
-  //#define Z_PROBE_SLED
629
-  //#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.
630
-
631
-  // A Mechanical Probe is any probe that either doesn't deploy or needs manual deployment
632
-  // For example any setup that uses the nozzle itself as a probe.
633
-  //#define MECHANICAL_PROBE
634
-
635 701
   // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing,
636 702
   // it is highly recommended you also enable Z_SAFE_HOMING below!
637 703
 
@@ -640,18 +706,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
640 706
 
641 707
 // @section homing
642 708
 
643
-// The position of the homing switches
644
-//#define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used
645
-//#define BED_CENTER_AT_0_0  // If defined, the center of the bed is at (X=0, Y=0)
646
-
647
-// Manual homing switch locations:
648
-// For deltabots this means top and center of the Cartesian print volume.
649
-#if ENABLED(MANUAL_HOME_POSITIONS)
650
-  #define MANUAL_X_HOME_POS 0
651
-  #define MANUAL_Y_HOME_POS 0
652
-  #define MANUAL_Z_HOME_POS 0
653
-  //#define MANUAL_Z_HOME_POS 402 // For delta: Distance between nozzle and print surface after homing.
654
-#endif
709
+// The center of the bed is at (X=0, Y=0)
710
+//#define BED_CENTER_AT_0_0
711
+
712
+// Manually set the home position. Leave these undefined for automatic settings.
713
+// For DELTA this is the top-center of the Cartesian print volume.
714
+//#define MANUAL_X_HOME_POS 0
715
+//#define MANUAL_Y_HOME_POS 0
716
+//#define MANUAL_Z_HOME_POS 0 // Distance between the nozzle to printbed after homing
655 717
 
656 718
 // Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
657 719
 //
@@ -659,7 +721,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
659 721
 //
660 722
 // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
661 723
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
662
-// - Position the Z probe in a defined XY point before Z Homing when homing all axes (G28).
724
+// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
663 725
 // - Prevent Z homing when the Z probe is outside bed area.
664 726
 //#define Z_SAFE_HOMING
665 727
 
@@ -668,14 +730,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
668 730
   #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2)    // Y point for Z homing when homing all axis (G28).
669 731
 #endif
670 732
 
733
+// Homing speeds (mm/m)
734
+#define HOMING_FEEDRATE_XY (120*60)
735
+#define HOMING_FEEDRATE_Z  432
671 736
 
672
-// @section movement
673
-
674
-/**
675
- * MOVEMENT SETTINGS
676
- */
677
-
678
-#define HOMING_FEEDRATE {120*60, 120*60, 7.2*60, 0}  // set the homing speeds (mm/min)
737
+//
738
+// MOVEMENT SETTINGS
739
+// @section motion
740
+//
679 741
 
680 742
 // default settings
681 743
 
@@ -697,18 +759,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
697 759
 //============================= Additional Features ===========================
698 760
 //=============================================================================
699 761
 
700
-// @section more
701
-
702
-// Custom M code points
703
-#define CUSTOM_M_CODES
704
-#if ENABLED(CUSTOM_M_CODES)
705
-  #if ENABLED(AUTO_BED_LEVELING_FEATURE)
706
-    #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851
707
-    #define Z_PROBE_OFFSET_RANGE_MIN -20
708
-    #define Z_PROBE_OFFSET_RANGE_MAX 20
709
-  #endif
710
-#endif
711
-
712 762
 // @section extras
713 763
 
714 764
 //
@@ -740,22 +790,107 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
740 790
 //
741 791
 //#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose
742 792
 
793
+//
794
+// G20/G21 Inch mode support
795
+//
796
+//#define INCH_MODE_SUPPORT
797
+
798
+//
799
+// M149 Set temperature units support
800
+//
801
+//#define TEMPERATURE_UNITS_SUPPORT
802
+
743 803
 // @section temperature
744 804
 
745 805
 // Preheat Constants
746
-#define PLA_PREHEAT_HOTEND_TEMP 200
747
-#define PLA_PREHEAT_HPB_TEMP 0
748
-#define PLA_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
806
+#define PREHEAT_1_TEMP_HOTEND 200
807
+#define PREHEAT_1_TEMP_BED      0
808
+#define PREHEAT_1_FAN_SPEED   255 // Value from 0 to 255
809
+
810
+#define PREHEAT_2_TEMP_HOTEND 220
811
+#define PREHEAT_2_TEMP_BED    100
812
+#define PREHEAT_2_FAN_SPEED   255 // Value from 0 to 255
749 813
 
750
-#define ABS_PREHEAT_HOTEND_TEMP 220
751
-#define ABS_PREHEAT_HPB_TEMP 100
752
-#define ABS_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
814
+//
815
+// Nozzle Park -- EXPERIMENTAL
816
+//
817
+// When enabled allows the user to define a special XYZ position, inside the
818
+// machine's topology, to park the nozzle when idle or when receiving the G27
819
+// command.
820
+//
821
+// The "P" paramenter controls what is the action applied to the Z axis:
822
+//    P0: (Default) If current Z-pos is lower than Z-park then the nozzle will
823
+//        be raised to reach Z-park height.
824
+//
825
+//    P1: No matter the current Z-pos, the nozzle will be raised/lowered to
826
+//        reach Z-park height.
827
+//
828
+//    P2: The nozzle height will be raised by Z-park amount but never going over
829
+//        the machine's limit of Z_MAX_POS.
830
+//
831
+//#define NOZZLE_PARK_FEATURE
832
+
833
+#if ENABLED(NOZZLE_PARK_FEATURE)
834
+  // Specify a park position as { X, Y, Z }
835
+  #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 }
836
+#endif
837
+
838
+//
839
+// Clean Nozzle Feature -- EXPERIMENTAL
840
+//
841
+// When enabled allows the user to send G12 to start the nozzle cleaning
842
+// process, the G-Code accepts two parameters:
843
+//   "P" for pattern selection
844
+//   "S" for defining the number of strokes/repetitions
845
+//
846
+// Available list of patterns:
847
+//   P0: This is the default pattern, this process requires a sponge type
848
+//       material at a fixed bed location, the cleaning process is based on
849
+//       "strokes" i.e. back-and-forth movements between the starting and end
850
+//       points.
851
+//
852
+//   P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T"
853
+//       defines the number of zig-zag triangles to be done. "S" defines the
854
+//       number of strokes aka one back-and-forth movement. As an example
855
+//       sending "G12 P1 S1 T3" will execute:
856
+//
857
+//          --
858
+//         |  (X0, Y1) |     /\        /\        /\     | (X1, Y1)
859
+//         |           |    /  \      /  \      /  \    |
860
+//       A |           |   /    \    /    \    /    \   |
861
+//         |           |  /      \  /      \  /      \  |
862
+//         |  (X0, Y0) | /        \/        \/        \ | (X1, Y0)
863
+//          --         +--------------------------------+
864
+//                       |________|_________|_________|
865
+//                           T1        T2        T3
866
+//
867
+// Caveats: End point Z should use the same value as Start point Z.
868
+//
869
+// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments
870
+// may change to add new functionality like different wipe patterns.
871
+//
872
+//#define NOZZLE_CLEAN_FEATURE
873
+
874
+#if ENABLED(NOZZLE_CLEAN_FEATURE)
875
+  // Number of pattern repetitions
876
+  #define NOZZLE_CLEAN_STROKES  12
877
+
878
+  // Specify positions as { X, Y, Z }
879
+  #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)}
880
+  #define NOZZLE_CLEAN_END_POINT   {100, 60, (Z_MIN_POS + 1)}
881
+
882
+  // Moves the nozzle to the initial position
883
+  #define NOZZLE_CLEAN_GOBACK
884
+#endif
753 885
 
754 886
 //
755 887
 // Print job timer
756 888
 //
757 889
 // Enable this option to automatically start and stop the
758
-// print job timer when M104 and M109 commands are received.
890
+// print job timer when M104/M109/M190 commands are received.
891
+// M104 (extruder without wait) - high temp = none, low temp = stop timer
892
+// M109 (extruder with wait) - high temp = start timer, low temp = stop timer
893
+// M190 (bed with wait) - high temp = start timer, low temp = none
759 894
 //
760 895
 // In all cases the timer can be started and stopped using
761 896
 // the following commands:
@@ -788,8 +923,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
788 923
 //
789 924
 // Here you may choose the language used by Marlin on the LCD menus, the following
790 925
 // list of languages are available:
791
-//    en, pl, fr, de, es, ru, bg, it, pt, pt_utf8, pt-br, pt-br_utf8,
792
-//    fi, an, nl, ca, eu, kana, kana_utf8, cn, cz, test
926
+//    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
927
+//    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
928
+//
929
+// :{'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','test':'TEST'}
793 930
 //
794 931
 //#define LCD_LANGUAGE en
795 932
 
@@ -937,6 +1074,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
937 1074
 //#define ULTIPANEL
938 1075
 
939 1076
 //
1077
+// Cartesio UI
1078
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1079
+//
1080
+//#define CARTESIO_UI
1081
+
1082
+//
940 1083
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
941 1084
 // http://reprap.org/wiki/PanelOne
942 1085
 //
@@ -949,6 +1092,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
949 1092
 //#define MAKRPANEL
950 1093
 
951 1094
 //
1095
+// ReprapWorld Graphical LCD
1096
+// https://reprapworld.com/?products_details&products_id/1218
1097
+//
1098
+//#define REPRAPWORLD_GRAPHICAL_LCD
1099
+
1100
+//
952 1101
 // Activate one of these if you have a Panucatt Devices
953 1102
 // Viki 2.0 or mini Viki with Graphic LCD
954 1103
 // http://panucatt.com
@@ -998,7 +1147,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
998 1147
 // is pressed, a value of 10.0 means 10mm per click.
999 1148
 //
1000 1149
 //#define REPRAPWORLD_KEYPAD
1001
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1150
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1002 1151
 
1003 1152
 //
1004 1153
 // RigidBot Panel V1.0
@@ -1059,6 +1208,15 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1059 1208
 //#define U8GLIB_SSD1306
1060 1209
 
1061 1210
 //
1211
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1212
+//
1213
+//#define SAV_3DGLCD
1214
+#if ENABLED(SAV_3DGLCD)
1215
+  //#define U8GLIB_SSD1306
1216
+  #define U8GLIB_SH1106
1217
+#endif
1218
+
1219
+//
1062 1220
 // CONTROLLER TYPE: Shift register panels
1063 1221
 //
1064 1222
 // 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH
@@ -1086,7 +1244,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1086 1244
 // at zero value, there are 128 effective control positions.
1087 1245
 #define SOFT_PWM_SCALE 0
1088 1246
 
1089
-// Temperature status LEDs that display the hotend and bet temperature.
1247
+// Temperature status LEDs that display the hotend and bed temperature.
1090 1248
 // If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
1091 1249
 // Otherwise the RED led is on. There is 1C hysteresis.
1092 1250
 //#define TEMP_STAT_LEDS
@@ -1118,28 +1276,16 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1118 1276
 //
1119 1277
 //#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
1120 1278
 
1121
-// Servo Endstops
1122
-//
1123
-// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes.
1124
-// Use M851 to set the Z probe vertical offset from the nozzle. Store that setting with M500.
1125
-//
1126
-//#define X_ENDSTOP_SERVO_NR 1
1127
-//#define Y_ENDSTOP_SERVO_NR 2
1128
-//#define Z_ENDSTOP_SERVO_NR 0
1129
-//#define SERVO_ENDSTOP_ANGLES {{0,0}, {0,0}, {70,0}} // X,Y,Z Axis Extend and Retract angles
1279
+// Delay (in microseconds) before the next move will start, to give the servo time to reach its target angle.
1280
+// 300ms is a good value but you can try less delay.
1281
+// If the servo can't reach the requested position, increase it.
1282
+#define SERVO_DELAY 300
1130 1283
 
1131 1284
 // Servo deactivation
1132 1285
 //
1133 1286
 // With this option servos are powered only during movement, then turned off to prevent jitter.
1134 1287
 //#define DEACTIVATE_SERVOS_AFTER_MOVE
1135 1288
 
1136
-#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE)
1137
-  // Delay (in microseconds) before turning the servo off. This depends on the servo speed.
1138
-  // 300ms is a good value but you can try less delay.
1139
-  // If the servo can't reach the requested position, increase it.
1140
-  #define SERVO_DEACTIVATION_DELAY 300
1141
-#endif
1142
-
1143 1289
 /**********************************************************************\
1144 1290
  * Support for a filament diameter sensor
1145 1291
  * Also allows adjustment of diameter at print time (vs  at slicing)
@@ -1170,7 +1316,4 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1170 1316
   //#define FILAMENT_LCD_DISPLAY
1171 1317
 #endif
1172 1318
 
1173
-#include "Configuration_adv.h"
1174
-#include "thermistortables.h"
1175
-
1176
-#endif //CONFIGURATION_H
1319
+#endif // CONFIGURATION_H

+ 148
- 47
Marlin/example_configurations/WITBOX/Configuration_adv.h Parādīt failu

@@ -33,7 +33,18 @@
33 33
 #ifndef CONFIGURATION_ADV_H
34 34
 #define CONFIGURATION_ADV_H
35 35
 
36
-#include "Conditionals.h"
36
+/**
37
+ *
38
+ *  ***********************************
39
+ *  **  ATTENTION TO ALL DEVELOPERS  **
40
+ *  ***********************************
41
+ *
42
+ * You must increment this version number for every significant change such as,
43
+ * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option.
44
+ *
45
+ * Note: Update also Version.h !
46
+ */
47
+#define CONFIGURATION_ADV_H_VERSION 010100
37 48
 
38 49
 // @section temperature
39 50
 
@@ -102,8 +113,8 @@
102 113
 #if ENABLED(PIDTEMP)
103 114
   // this adds an experimental additional term to the heating power, proportional to the extrusion speed.
104 115
   // if Kc is chosen well, the additional required power due to increased melting should be compensated.
105
-  #define PID_ADD_EXTRUSION_RATE
106
-  #if ENABLED(PID_ADD_EXTRUSION_RATE)
116
+  //#define PID_EXTRUSION_SCALING
117
+  #if ENABLED(PID_EXTRUSION_SCALING)
107 118
     #define DEFAULT_Kc (100) //heating power=Kc*(e_speed)
108 119
     #define LPQ_MAX_LEN 50
109 120
   #endif
@@ -128,15 +139,42 @@
128 139
 //The M105 command return, besides traditional information, the ADC value read from temperature sensors.
129 140
 //#define SHOW_TEMP_ADC_VALUES
130 141
 
142
+/**
143
+ * High Temperature Thermistor Support
144
+ *
145
+ * Thermistors able to support high temperature tend to have a hard time getting
146
+ * good readings at room and lower temperatures. This means HEATER_X_RAW_LO_TEMP
147
+ * will probably be caught when the heating element first turns on during the
148
+ * preheating process, which will trigger a min_temp_error as a safety measure
149
+ * and force stop everything.
150
+ * To circumvent this limitation, we allow for a preheat time (during which,
151
+ * min_temp_error won't be triggered) and add a min_temp buffer to handle
152
+ * aberrant readings.
153
+ *
154
+ * If you want to enable this feature for your hotend thermistor(s)
155
+ * uncomment and set values > 0 in the constants below
156
+ */
157
+
158
+// The number of consecutive low temperature errors that can occur
159
+// before a min_temp_error is triggered. (Shouldn't be more than 10.)
160
+//#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 0
161
+
162
+// The number of milliseconds a hotend will preheat before starting to check
163
+// the temperature. This value should NOT be set to the time it takes the
164
+// hot end to reach the target temperature, but the time it takes to reach
165
+// the minimum temperature your thermistor can read. The lower the better/safer.
166
+// This shouldn't need to be more than 30 seconds (30000)
167
+//#define MILLISECONDS_PREHEAT_TIME 0
168
+
131 169
 // @section extruder
132 170
 
133 171
 //  extruder run-out prevention.
134 172
 //if the machine is idle, and the temperature over MINTEMP, every couple of SECONDS some filament is extruded
135 173
 //#define EXTRUDER_RUNOUT_PREVENT
136 174
 #define EXTRUDER_RUNOUT_MINTEMP 190
137
-#define EXTRUDER_RUNOUT_SECONDS 30.
138
-#define EXTRUDER_RUNOUT_ESTEPS 14. //mm filament
139
-#define EXTRUDER_RUNOUT_SPEED 1500.  //extrusion speed
175
+#define EXTRUDER_RUNOUT_SECONDS 30
176
+#define EXTRUDER_RUNOUT_ESTEPS 14   // mm filament
177
+#define EXTRUDER_RUNOUT_SPEED 1500  // extrusion speed
140 178
 #define EXTRUDER_RUNOUT_EXTRUDE 100
141 179
 
142 180
 // @section temperature
@@ -177,24 +215,42 @@
177 215
 #define EXTRUDER_AUTO_FAN_TEMPERATURE 50
178 216
 #define EXTRUDER_AUTO_FAN_SPEED   255  // == full speed
179 217
 
180
-
181 218
 //===========================================================================
182
-//=============================Mechanical Settings===========================
219
+//============================ Mechanical Settings ==========================
183 220
 //===========================================================================
184 221
 
185 222
 // @section homing
186 223
 
187
-//#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing
224
+// If you want endstops to stay on (by default) even when not homing
225
+// enable this option. Override at any time with M120, M121.
226
+#define ENDSTOPS_ALWAYS_ON_DEFAULT
188 227
 
189 228
 // @section extras
190 229
 
191 230
 //#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
192 231
 
232
+// Dual X Steppers
233
+// Uncomment this option to drive two X axis motors.
234
+// The next unused E driver will be assigned to the second X stepper.
235
+//#define X_DUAL_STEPPER_DRIVERS
236
+#if ENABLED(X_DUAL_STEPPER_DRIVERS)
237
+  // Set true if the two X motors need to rotate in opposite directions
238
+  #define INVERT_X2_VS_X_DIR true
239
+#endif
240
+
241
+
242
+// Dual Y Steppers
243
+// Uncomment this option to drive two Y axis motors.
244
+// The next unused E driver will be assigned to the second Y stepper.
245
+//#define Y_DUAL_STEPPER_DRIVERS
246
+#if ENABLED(Y_DUAL_STEPPER_DRIVERS)
247
+  // Set true if the two Y motors need to rotate in opposite directions
248
+  #define INVERT_Y2_VS_Y_DIR true
249
+#endif
250
+
193 251
 // A single Z stepper driver is usually used to drive 2 stepper motors.
194
-// Uncomment this define to utilize a separate stepper driver for each Z axis motor.
195
-// Only a few motherboards support this, like RAMPS, which have dual extruder support (the 2nd, often unused, extruder driver is used
196
-// to control the 2nd Z axis stepper motor). The pins are currently only defined for a RAMPS motherboards.
197
-// On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder.
252
+// Uncomment this option to use a separate stepper driver for each Z axis motor.
253
+// The next unused E driver will be assigned to the second Z stepper.
198 254
 //#define Z_DUAL_STEPPER_DRIVERS
199 255
 
200 256
 #if ENABLED(Z_DUAL_STEPPER_DRIVERS)
@@ -216,14 +272,6 @@
216 272
 
217 273
 #endif // Z_DUAL_STEPPER_DRIVERS
218 274
 
219
-// Same again but for Y Axis.
220
-//#define Y_DUAL_STEPPER_DRIVERS
221
-
222
-#if ENABLED(Y_DUAL_STEPPER_DRIVERS)
223
-  // Define if the two Y drives need to rotate in opposite directions
224
-  #define INVERT_Y2_VS_Y_DIR true
225
-#endif
226
-
227 275
 // Enable this for dual x-carriage printers.
228 276
 // A dual x-carriage design has the advantage that the inactive extruder can be parked which
229 277
 // prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
@@ -237,7 +285,7 @@
237 285
   #define X2_MAX_POS 353    // set maximum to the distance between toolheads when both heads are homed
238 286
   #define X2_HOME_DIR 1     // the second X-carriage always homes to the maximum endstop position
239 287
   #define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position
240
-      // However: In this mode the EXTRUDER_OFFSET_X value for the second extruder provides a software
288
+      // However: In this mode the HOTEND_OFFSET_X value for the second extruder provides a software
241 289
       // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops
242 290
       // without modifying the firmware (through the "M218 T1 X???" command).
243 291
       // Remember: you should set the second extruder x-offset to 0 in your slicer.
@@ -279,7 +327,10 @@
279 327
 
280 328
 #define AXIS_RELATIVE_MODES {false, false, false, false}
281 329
 
282
-//By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
330
+// Allow duplication mode with a basic dual-nozzle extruder
331
+//#define DUAL_NOZZLE_DUPLICATION_MODE
332
+
333
+// By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
283 334
 #define INVERT_X_STEP_PIN false
284 335
 #define INVERT_Y_STEP_PIN false
285 336
 #define INVERT_Z_STEP_PIN false
@@ -351,6 +402,9 @@
351 402
 
352 403
 // @section lcd
353 404
 
405
+// Include a page of printer information in the LCD Main Menu
406
+//#define LCD_INFO_MENU
407
+
354 408
 #if ENABLED(SDSUPPORT)
355 409
 
356 410
   // Some RAMPS and other boards don't detect when an SD card is inserted. You can work
@@ -388,7 +442,6 @@
388 442
   // This option allows you to abort SD printing when any endstop is triggered.
389 443
   // This feature must be enabled with "M540 S1" or from the LCD menu.
390 444
   // To have any effect, endstops must be enabled during SD printing.
391
-  // With ENDSTOPS_ONLY_FOR_HOMING you must send "M120" to enable endstops.
392 445
   //#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED
393 446
 
394 447
 #endif // SDSUPPORT
@@ -404,9 +457,10 @@
404 457
   //#define USE_SMALL_INFOFONT
405 458
 #endif // DOGLCD
406 459
 
407
-// @section more
460
+// @section safety
408 461
 
409
-// The hardware watchdog should reset the microcontroller disabling all outputs, in case the firmware gets stuck and doesn't do temperature regulation.
462
+// The hardware watchdog should reset the microcontroller disabling all outputs,
463
+// in case the firmware gets stuck and doesn't do temperature regulation.
410 464
 #define USE_WATCHDOG
411 465
 
412 466
 #if ENABLED(USE_WATCHDOG)
@@ -445,6 +499,27 @@
445 499
   #define D_FILAMENT 1.75
446 500
 #endif
447 501
 
502
+// Implementation of a linear pressure control
503
+// Assumption: advance = k * (delta velocity)
504
+// K=0 means advance disabled. A good value for a gregs wade extruder will be around K=75
505
+//#define LIN_ADVANCE
506
+
507
+#if ENABLED(LIN_ADVANCE)
508
+  #define LIN_ADVANCE_K 75
509
+#endif
510
+
511
+// @section leveling
512
+
513
+// Default mesh area is an area with an inset margin on the print area.
514
+// Below are the macros that are used to define the borders for the mesh area,
515
+// made available here for specialized needs, ie dual extruder setup.
516
+#if ENABLED(MESH_BED_LEVELING)
517
+  #define MESH_MIN_X (X_MIN_POS + MESH_INSET)
518
+  #define MESH_MAX_X (X_MAX_POS - (MESH_INSET))
519
+  #define MESH_MIN_Y (Y_MIN_POS + MESH_INSET)
520
+  #define MESH_MAX_Y (Y_MAX_POS - (MESH_INSET))
521
+#endif
522
+
448 523
 // @section extras
449 524
 
450 525
 // Arc interpretation settings:
@@ -476,12 +551,27 @@ const unsigned int dropsegments = 5; //everything with less than this number of
476 551
   #define BLOCK_BUFFER_SIZE 16 // maximize block buffer
477 552
 #endif
478 553
 
479
-// @section more
554
+// @section serial
480 555
 
481
-//The ASCII buffer for receiving from the serial:
556
+// The ASCII buffer for serial input
482 557
 #define MAX_CMD_SIZE 96
483 558
 #define BUFSIZE 4
484 559
 
560
+// Transfer Buffer Size
561
+// To save 386 bytes of PROGMEM (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0.
562
+// To buffer a simple "ok" you need 4 bytes.
563
+// For ADVANCED_OK (M105) you need 32 bytes.
564
+// For debug-echo: 128 bytes for the optimal speed.
565
+// Other output doesn't need to be that speedy.
566
+// :[0,2,4,8,16,32,64,128,256]
567
+#define TX_BUFFER_SIZE 0
568
+
569
+// Enable an emergency-command parser to intercept certain commands as they
570
+// enter the serial receive buffer, so they cannot be blocked.
571
+// Currently handles M108, M112, M410
572
+// Does not work on boards using AT90USB (USBCON) processors!
573
+//#define EMERGENCY_PARSER
574
+
485 575
 // Bad Serial-connections can miss a received command by sending an 'ok'
486 576
 // Therefore some clients abort after 30 seconds in a timeout.
487 577
 // Some other clients start sending commands while receiving a 'wait'.
@@ -513,16 +603,30 @@ const unsigned int dropsegments = 5; //everything with less than this number of
513 603
 
514 604
 // Add support for experimental filament exchange support M600; requires display
515 605
 #if ENABLED(ULTIPANEL)
516
-  //#define FILAMENTCHANGEENABLE
517
-  #if ENABLED(FILAMENTCHANGEENABLE)
518
-    #define FILAMENTCHANGE_XPOS 3
519
-    #define FILAMENTCHANGE_YPOS 3
520
-    #define FILAMENTCHANGE_ZADD 10
521
-    #define FILAMENTCHANGE_FIRSTRETRACT -2
522
-    #define FILAMENTCHANGE_FINALRETRACT -100
523
-    #define AUTO_FILAMENT_CHANGE                //This extrude filament until you press the button on LCD
524
-    #define AUTO_FILAMENT_CHANGE_LENGTH 0.04    //Extrusion length on automatic extrusion loop
525
-    #define AUTO_FILAMENT_CHANGE_FEEDRATE 300   //Extrusion feedrate (mm/min) on automatic extrusion loop
606
+  // #define FILAMENT_CHANGE_FEATURE             // Enable filament exchange menu and M600 g-code (used for runout sensor too)
607
+  #if ENABLED(FILAMENT_CHANGE_FEATURE)
608
+    #define FILAMENT_CHANGE_X_POS 3             // X position of hotend
609
+    #define FILAMENT_CHANGE_Y_POS 3             // Y position of hotend
610
+    #define FILAMENT_CHANGE_Z_ADD 10            // Z addition of hotend (lift)
611
+    #define FILAMENT_CHANGE_XY_FEEDRATE 100     // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
612
+    #define FILAMENT_CHANGE_Z_FEEDRATE 5        // Z axis feedrate in mm/s (not used for delta printers)
613
+    #define FILAMENT_CHANGE_RETRACT_LENGTH 2    // Initial retract in mm
614
+                                                // It is a short retract used immediately after print interrupt before move to filament exchange position
615
+    #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
616
+    #define FILAMENT_CHANGE_UNLOAD_LENGTH 100   // Unload filament length from hotend in mm
617
+                                                // Longer length for bowden printers to unload filament from whole bowden tube,
618
+                                                // shorter lenght for printers without bowden to unload filament from extruder only,
619
+                                                // 0 to disable unloading for manual unloading
620
+    #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10  // Unload filament feedrate in mm/s - filament unloading can be fast
621
+    #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
622
+                                                // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
623
+                                                // Short or zero length for printers without bowden where loading is not used
624
+    #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
625
+    #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
626
+                                                // 0 to disable for manual extrusion
627
+                                                // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
628
+                                                // or until outcoming filament color is not clear for filament color change
629
+    #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
526 630
   #endif
527 631
 #endif
528 632
 
@@ -668,9 +772,9 @@ const unsigned int dropsegments = 5; //everything with less than this number of
668 772
  * devices on the bus.
669 773
  *
670 774
  * ; Example #1
671
- * ; This macro send the string "Marlin" to the slave device with address 0x63
775
+ * ; This macro send the string "Marlin" to the slave device with address 0x63 (99)
672 776
  * ; It uses multiple M155 commands with one B<base 10> arg
673
- * M155 A63  ; Target slave address
777
+ * M155 A99  ; Target slave address
674 778
  * M155 B77  ; M
675 779
  * M155 B97  ; a
676 780
  * M155 B114 ; r
@@ -680,19 +784,16 @@ const unsigned int dropsegments = 5; //everything with less than this number of
680 784
  * M155 S1   ; Send the current buffer
681 785
  *
682 786
  * ; Example #2
683
- * ; Request 6 bytes from slave device with address 0x63
684
- * M156 A63 B5
787
+ * ; Request 6 bytes from slave device with address 0x63 (99)
788
+ * M156 A99 B5
685 789
  *
686 790
  * ; Example #3
687 791
  * ; Example serial output of a M156 request
688
- * echo:i2c-reply: from:63 bytes:5 data:hello
792
+ * echo:i2c-reply: from:99 bytes:5 data:hello
689 793
  */
690 794
 
691 795
 // @section i2cbus
692 796
 
693 797
 //#define EXPERIMENTAL_I2CBUS
694 798
 
695
-#include "Conditionals.h"
696
-#include "SanityCheck.h"
697
-
698
-#endif //CONFIGURATION_ADV_H
799
+#endif // CONFIGURATION_ADV_H

+ 290
- 147
Marlin/example_configurations/adafruit/ST7565/Configuration.h Parādīt failu

@@ -38,8 +38,18 @@
38 38
 #ifndef CONFIGURATION_H
39 39
 #define CONFIGURATION_H
40 40
 
41
-#include "boards.h"
42
-#include "macros.h"
41
+/**
42
+ *
43
+ *  ***********************************
44
+ *  **  ATTENTION TO ALL DEVELOPERS  **
45
+ *  ***********************************
46
+ *
47
+ * You must increment this version number for every significant change such as,
48
+ * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option.
49
+ *
50
+ * Note: Update also Version.h !
51
+ */
52
+#define CONFIGURATION_H_VERSION 010100
43 53
 
44 54
 //===========================================================================
45 55
 //============================= Getting Started =============================
@@ -73,20 +83,26 @@
73 83
 
74 84
 // @section info
75 85
 
76
-#if ENABLED(USE_AUTOMATIC_VERSIONING)
77
-  #include "_Version.h"
78
-#else
79
-  #include "Version.h"
80
-#endif
81
-
82 86
 // User-specified version info of this build to display in [Pronterface, etc] terminal window during
83 87
 // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
84 88
 // build by the user have been successfully uploaded into firmware.
85 89
 #define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes.
86 90
 #define SHOW_BOOTSCREEN
87
-#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during bootup in line 1
88
-//#define STRING_SPLASH_LINE2 STRING_DISTRIBUTION_DATE // will be shown during bootup in line 2
91
+#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during boot in line 1
92
+#define STRING_SPLASH_LINE2 WEBSITE_URL         // will be shown during boot in line 2
89 93
 
94
+//
95
+// *** VENDORS PLEASE READ *****************************************************
96
+//
97
+// Marlin now allow you to have a vendor boot image to be displayed on machine
98
+// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your
99
+// custom boot image and them the default Marlin boot image is shown.
100
+//
101
+// We suggest for you to take advantage of this new feature and keep the Marlin
102
+// boot image unmodified. For an example have a look at the bq Hephestos 2
103
+// example configuration folder.
104
+//
105
+//#define SHOW_CUSTOM_BOOTSCREEN
90 106
 // @section machine
91 107
 
92 108
 // SERIAL_PORT selects which serial port should be used for communication with the host.
@@ -123,17 +139,40 @@
123 139
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
124 140
 //#define SINGLENOZZLE
125 141
 
142
+// A dual extruder that uses a single stepper motor
143
+// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z
144
+//#define SWITCHING_EXTRUDER
145
+#if ENABLED(SWITCHING_EXTRUDER)
146
+  #define SWITCHING_EXTRUDER_SERVO_NR 0
147
+  #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1
148
+  //#define HOTEND_OFFSET_Z {0.0, 0.0}
149
+#endif
150
+
151
+/**
152
+ * "Mixing Extruder"
153
+ *   - Adds a new code, M165, to set the current mix factors.
154
+ *   - Extends the stepping routines to move multiple steppers in proportion to the mix.
155
+ *   - Optional support for Repetier Host M163, M164, and virtual extruder.
156
+ *   - This implementation supports only a single extruder.
157
+ *   - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
158
+ */
159
+//#define MIXING_EXTRUDER
160
+#if ENABLED(MIXING_EXTRUDER)
161
+  #define MIXING_STEPPERS 2        // Number of steppers in your mixing extruder
162
+  #define MIXING_VIRTUAL_TOOLS 16  // Use the Virtual Tool method with M163 and M164
163
+  //#define DIRECT_MIXING_IN_G1    // Allow ABCDHI mix factors in G1 movement commands
164
+#endif
165
+
126 166
 // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
127 167
 // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
128 168
 // For the other hotends it is their distance from the extruder 0 hotend.
129
-//#define EXTRUDER_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
130
-//#define EXTRUDER_OFFSET_Y {0.0, 5.00}  // (in mm) for each extruder, offset of the hotend on the Y axis
169
+//#define HOTEND_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
170
+//#define HOTEND_OFFSET_Y {0.0, 5.00}  // (in mm) for each extruder, offset of the hotend on the Y axis
131 171
 
132 172
 //// The following define selects which power supply you have. Please choose the one that matches your setup
133 173
 // 1 = ATX
134 174
 // 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC)
135 175
 // :{1:'ATX',2:'X-Box 360'}
136
-
137 176
 #define POWER_SUPPLY 1
138 177
 
139 178
 // Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it.
@@ -168,6 +207,7 @@
168 207
 // 13 is 100k Hisens 3950  1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE"
169 208
 // 20 is the PT100 circuit found in the Ultimainboard V2.x
170 209
 // 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950
210
+// 66 is 4.7M High Temperature thermistor from Dyze Design
171 211
 // 70 is the 100K thermistor found in the bq Hephestos 2
172 212
 //
173 213
 //    1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k
@@ -184,7 +224,7 @@
184 224
 //     Use it for Testing or Development purposes. NEVER for production machine.
185 225
 //#define DUMMY_THERMISTOR_998_VALUE 25
186 226
 //#define DUMMY_THERMISTOR_999_VALUE 100
187
-// :{ '0': "Not used", '4': "10k !! do not use for a hotend. Bad resolution at high temp. !!", '1': "100k / 4.7k - EPCOS", '51': "100k / 1k - EPCOS", '6': "100k / 4.7k EPCOS - Not as accurate as Table 1", '5': "100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '7': "100k / 4.7k Honeywell 135-104LAG-J01", '71': "100k / 4.7k Honeywell 135-104LAF-J01", '8': "100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT", '9': "100k / 4.7k GE Sensing AL03006-58.2K-97-G1", '10': "100k / 4.7k RS 198-961", '11': "100k / 4.7k beta 3950 1%", '12': "100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)", '13': "100k Hisens 3950  1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'", '60': "100k Maker's Tool Works Kapton Bed Thermistor beta=3950", '55': "100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '2': "200k / 4.7k - ATC Semitec 204GT-2", '52': "200k / 1k - ATC Semitec 204GT-2", '-3': "Thermocouple + MAX31855 (only for sensor 0)", '-2': "Thermocouple + MAX6675 (only for sensor 0)", '-1': "Thermocouple + AD595", '3': "Mendel-parts / 4.7k", '1047': "Pt1000 / 4.7k", '1010': "Pt1000 / 1k (non standard)", '20': "PT100 (Ultimainboard V2.x)", '147': "Pt100 / 4.7k", '110': "Pt100 / 1k (non-standard)", '998': "Dummy 1", '999': "Dummy 2" }
227
+// :{ '0': "Not used",'1':"100k / 4.7k - EPCOS",'2':"200k / 4.7k - ATC Semitec 204GT-2",'3':"Mendel-parts / 4.7k",'4':"10k !! do not use for a hotend. Bad resolution at high temp. !!",'5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'6':"100k / 4.7k EPCOS - Not as accurate as Table 1",'7':"100k / 4.7k Honeywell 135-104LAG-J01",'8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT",'9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1",'10':"100k / 4.7k RS 198-961",'11':"100k / 4.7k beta 3950 1%",'12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)",'13':"100k Hisens 3950  1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'",'20':"PT100 (Ultimainboard V2.x)",'51':"100k / 1k - EPCOS",'52':"200k / 1k - ATC Semitec 204GT-2",'55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950",'66':"Dyze Design 4.7M High Temperature thermistor",'70':"the 100K thermistor found in the bq Hephestos 2",'71':"100k / 4.7k Honeywell 135-104LAF-J01",'147':"Pt100 / 4.7k",'1047':"Pt1000 / 4.7k",'110':"Pt100 / 1k (non-standard)",'1010':"Pt1000 / 1k (non standard)",'-3':"Thermocouple + MAX31855 (only for sensor 0)",'-2':"Thermocouple + MAX6675 (only for sensor 0)",'-1':"Thermocouple + AD595",'998':"Dummy 1",'999':"Dummy 2" }
188 228
 #define TEMP_SENSOR_0 1
189 229
 #define TEMP_SENSOR_1 0
190 230
 #define TEMP_SENSOR_2 0
@@ -223,10 +263,6 @@
223 263
 #define HEATER_3_MAXTEMP 275
224 264
 #define BED_MAXTEMP 150
225 265
 
226
-// If you want the M105 heater power reported in watts, define the BED_WATTS, and (shared for all extruders) EXTRUDER_WATTS
227
-//#define EXTRUDER_WATTS (12.0*12.0/6.7) // P=U^2/R
228
-//#define BED_WATTS (12.0*12.0/1.1)      // P=U^2/R
229
-
230 266
 //===========================================================================
231 267
 //============================= PID Settings ================================
232 268
 //===========================================================================
@@ -241,8 +277,8 @@
241 277
   //#define PID_DEBUG // Sends debug data to the serial port.
242 278
   //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX
243 279
   //#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
244
-  //#define PID_PARAMS_PER_EXTRUDER // Uses separate PID parameters for each extruder (useful for mismatched extruders)
245
-                                    // Set/get with gcode: M301 E[extruder number, 0-2]
280
+  //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders)
281
+                                  // Set/get with gcode: M301 E[extruder number, 0-2]
246 282
   #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature
247 283
                                   // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max.
248 284
   #define PID_INTEGRAL_DRIVE_MAX PID_MAX  //limit for the integral term
@@ -384,18 +420,79 @@
384 420
 #endif
385 421
 
386 422
 // Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup).
387
-const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
388
-const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
389
-const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
390
-const bool X_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
391
-const bool Y_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
392
-const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
393
-const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
423
+#define X_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
424
+#define Y_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
425
+#define Z_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
426
+#define X_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
427
+#define Y_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
428
+#define Z_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
429
+#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
394 430
 
395 431
 //===========================================================================
396 432
 //============================= Z Probe Options =============================
397 433
 //===========================================================================
398 434
 
435
+//
436
+// Probe Type
437
+// Probes are sensors/switches that are activated / deactivated before/after use.
438
+//
439
+// Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc.
440
+// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below.
441
+//
442
+// Use M851 to set the Z probe vertical offset from the nozzle. Store with M500.
443
+//
444
+
445
+// A Fix-Mounted Probe either doesn't deploy or needs manual deployment.
446
+// For example an inductive probe, or a setup that uses the nozzle to probe.
447
+// An inductive probe must be deactivated to go below
448
+// its trigger-point if hardware endstops are active.
449
+//#define FIX_MOUNTED_PROBE
450
+
451
+// The BLTouch probe emulates a servo probe.
452
+//#define BLTOUCH
453
+
454
+// Z Servo Probe, such as an endstop switch on a rotating arm.
455
+//#define Z_ENDSTOP_SERVO_NR 0
456
+//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles
457
+
458
+// Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
459
+//#define Z_PROBE_SLED
460
+//#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.
461
+
462
+// Z Probe to nozzle (X,Y) offset, relative to (0, 0).
463
+// X and Y offsets must be integers.
464
+//
465
+// In the following example the X and Y offsets are both positive:
466
+// #define X_PROBE_OFFSET_FROM_EXTRUDER 10
467
+// #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
468
+//
469
+//    +-- BACK ---+
470
+//    |           |
471
+//  L |    (+) P  | R <-- probe (20,20)
472
+//  E |           | I
473
+//  F | (-) N (+) | G <-- nozzle (10,10)
474
+//  T |           | H
475
+//    |    (-)    | T
476
+//    |           |
477
+//    O-- FRONT --+
478
+//  (0,0)
479
+#define X_PROBE_OFFSET_FROM_EXTRUDER -25     // X offset: -left  +right  [of the nozzle]
480
+#define Y_PROBE_OFFSET_FROM_EXTRUDER -29     // Y offset: -front +behind [the nozzle]
481
+#define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35  // Z offset: -below +above  [the nozzle]
482
+
483
+// X and Y axis travel speed (mm/m) between probes
484
+#define XY_PROBE_SPEED 8000
485
+// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
486
+#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
487
+// Speed for the "accurate" probe of each point
488
+#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
489
+// Use double touch for probing
490
+//#define PROBE_DOUBLE_TOUCH
491
+
492
+//
493
+// Allen Key Probe is defined in the Delta example configurations.
494
+//
495
+
399 496
 // Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z Probe and a Z-min-endstop on the same machine.
400 497
 // With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing.
401 498
 //
@@ -407,7 +504,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
407 504
 // To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN.
408 505
 //
409 506
 // For a servo-based Z probe, you must set up servo support below, including
410
-// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES.
507
+// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and Z_SERVO_ANGLES.
411 508
 //
412 509
 // - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin.
413 510
 // - Use 5V for powered (usu. inductive) sensors.
@@ -440,6 +537,21 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
440 537
 // If you're using the Z MIN endstop connector for your Z probe, this has no effect.
441 538
 //#define DISABLE_Z_MIN_PROBE_ENDSTOP
442 539
 
540
+// Enable Z Probe Repeatability test to see how accurate your probe is
541
+//#define Z_MIN_PROBE_REPEATABILITY_TEST
542
+
543
+//
544
+// Probe Raise options provide clearance for the probe to deploy, stow, and travel.
545
+//
546
+#define Z_PROBE_DEPLOY_HEIGHT 15 // Raise to make room for the probe to deploy / stow
547
+#define Z_PROBE_TRAVEL_HEIGHT 5  // Raise between probing points.
548
+
549
+//
550
+// For M851 give a range for adjusting the Z probe offset
551
+//
552
+#define Z_PROBE_OFFSET_RANGE_MIN -20
553
+#define Z_PROBE_OFFSET_RANGE_MAX 20
554
+
443 555
 // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
444 556
 // :{0:'Low',1:'High'}
445 557
 #define X_ENABLE_ON 0
@@ -476,8 +588,9 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
476 588
 #define INVERT_E3_DIR false
477 589
 
478 590
 // @section homing
479
-//#define MIN_Z_HEIGHT_FOR_HOMING 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
480
-                                    // Be sure you have this distance over your Z_MAX_POS in case.
591
+
592
+//#define Z_HOMING_HEIGHT 4  // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
593
+                             // Be sure you have this distance over your Z_MAX_POS in case.
481 594
 
482 595
 // ENDSTOP SETTINGS:
483 596
 // Sets direction of endstops when homing; 1=MAX, -1=MIN
@@ -507,7 +620,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
507 620
                                  // It is assumed that when logic high = filament available
508 621
                                  //                    when logic  low = filament ran out
509 622
 #if ENABLED(FILAMENT_RUNOUT_SENSOR)
510
-  const bool FIL_RUNOUT_INVERTING = true;  // Should be uncommented and true or false should assigned
623
+  const bool FIL_RUNOUT_INVERTING = false; // set to true to invert the logic of the sensor.
511 624
   #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined.
512 625
   #define FILAMENT_RUNOUT_SCRIPT "M600"
513 626
 #endif
@@ -519,10 +632,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
519 632
 //#define MESH_BED_LEVELING    // Enable mesh bed leveling.
520 633
 
521 634
 #if ENABLED(MESH_BED_LEVELING)
522
-  #define MESH_MIN_X 10
523
-  #define MESH_MAX_X (X_MAX_POS - (MESH_MIN_X))
524
-  #define MESH_MIN_Y 10
525
-  #define MESH_MAX_Y (Y_MAX_POS - (MESH_MIN_Y))
635
+  #define MESH_INSET 10        // Mesh inset margin on print area
526 636
   #define MESH_NUM_X_POINTS 3  // Don't use more than 7 points per axis, implementation limited.
527 637
   #define MESH_NUM_Y_POINTS 3
528 638
   #define MESH_HOME_SEARCH_Z 4  // Z after Home, bed somewhere below but above 0.0.
@@ -544,8 +654,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
544 654
 // @section bedlevel
545 655
 
546 656
 //#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line)
657
+
658
+// Enable this feature to get detailed logging of G28, G29, M48, etc.
659
+// Logging is off by default. Enable this logging feature with 'M111 S32'.
660
+// NOTE: Requires a huge amount of PROGMEM.
547 661
 //#define DEBUG_LEVELING_FEATURE
548
-#define Z_MIN_PROBE_REPEATABILITY_TEST  // If not commented out, Z Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
549 662
 
550 663
 #if ENABLED(AUTO_BED_LEVELING_FEATURE)
551 664
 
@@ -588,58 +701,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
588 701
     #define ABL_PROBE_PT_3_X 170
589 702
     #define ABL_PROBE_PT_3_Y 20
590 703
 
591
-  #endif // AUTO_BED_LEVELING_GRID
592
-
593
-  // Z Probe to nozzle (X,Y) offset, relative to (0, 0).
594
-  // X and Y offsets must be integers.
595
-  //
596
-  // In the following example the X and Y offsets are both positive:
597
-  // #define X_PROBE_OFFSET_FROM_EXTRUDER 10
598
-  // #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
599
-  //
600
-  //    +-- BACK ---+
601
-  //    |           |
602
-  //  L |    (+) P  | R <-- probe (20,20)
603
-  //  E |           | I
604
-  //  F | (-) N (+) | G <-- nozzle (10,10)
605
-  //  T |           | H
606
-  //    |    (-)    | T
607
-  //    |           |
608
-  //    O-- FRONT --+
609
-  //  (0,0)
610
-  #define X_PROBE_OFFSET_FROM_EXTRUDER -25     // X offset: -left  +right  [of the nozzle]
611
-  #define Y_PROBE_OFFSET_FROM_EXTRUDER -29     // Y offset: -front +behind [the nozzle]
612
-  #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35  // Z offset: -below +above  [the nozzle]
613
-
614
-  #define XY_TRAVEL_SPEED 8000         // X and Y axis travel speed between probes, in mm/min.
615
-
616
-  #define Z_RAISE_BEFORE_PROBING 15   // How much the Z axis will be raised before traveling to the first probing point.
617
-  #define Z_RAISE_BETWEEN_PROBINGS 5  // How much the Z axis will be raised when traveling from between next probing points.
618
-  #define Z_RAISE_AFTER_PROBING 15    // How much the Z axis will be raised after the last probing point.
704
+  #endif // !AUTO_BED_LEVELING_GRID
619 705
 
620 706
   //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine.
621 707
                                                                              // Useful to retract a deployable Z probe.
622 708
 
623
-  // Probes are sensors/switches that need to be activated before they can be used
624
-  // and deactivated after their use.
625
-  // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE
626
-
627
-  // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER
628
-  // when the hardware endstops are active.
629
-  //#define FIX_MOUNTED_PROBE
630
-
631
-  // A Servo Probe can be defined in the servo section below.
632
-
633
-  // An Allen Key Probe is currently predefined only in the delta example configurations.
634
-
635
-  // Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
636
-  //#define Z_PROBE_SLED
637
-  //#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.
638
-
639
-  // A Mechanical Probe is any probe that either doesn't deploy or needs manual deployment
640
-  // For example any setup that uses the nozzle itself as a probe.
641
-  //#define MECHANICAL_PROBE
642
-
643 709
   // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing,
644 710
   // it is highly recommended you also enable Z_SAFE_HOMING below!
645 711
 
@@ -648,18 +714,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
648 714
 
649 715
 // @section homing
650 716
 
651
-// The position of the homing switches
652
-//#define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used
653
-//#define BED_CENTER_AT_0_0  // If defined, the center of the bed is at (X=0, Y=0)
654
-
655
-// Manual homing switch locations:
656
-// For deltabots this means top and center of the Cartesian print volume.
657
-#if ENABLED(MANUAL_HOME_POSITIONS)
658
-  #define MANUAL_X_HOME_POS 0
659
-  #define MANUAL_Y_HOME_POS 0
660
-  #define MANUAL_Z_HOME_POS 0
661
-  //#define MANUAL_Z_HOME_POS 402 // For delta: Distance between nozzle and print surface after homing.
662
-#endif
717
+// The center of the bed is at (X=0, Y=0)
718
+//#define BED_CENTER_AT_0_0
719
+
720
+// Manually set the home position. Leave these undefined for automatic settings.
721
+// For DELTA this is the top-center of the Cartesian print volume.
722
+//#define MANUAL_X_HOME_POS 0
723
+//#define MANUAL_Y_HOME_POS 0
724
+//#define MANUAL_Z_HOME_POS 0 // Distance between the nozzle to printbed after homing
663 725
 
664 726
 // Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
665 727
 //
@@ -667,7 +729,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
667 729
 //
668 730
 // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
669 731
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
670
-// - Position the Z probe in a defined XY point before Z Homing when homing all axes (G28).
732
+// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
671 733
 // - Prevent Z homing when the Z probe is outside bed area.
672 734
 //#define Z_SAFE_HOMING
673 735
 
@@ -676,14 +738,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
676 738
   #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2)    // Y point for Z homing when homing all axis (G28).
677 739
 #endif
678 740
 
741
+// Homing speeds (mm/m)
742
+#define HOMING_FEEDRATE_XY (50*60)
743
+#define HOMING_FEEDRATE_Z  (4*60)
679 744
 
680
-// @section movement
681
-
682
-/**
683
- * MOVEMENT SETTINGS
684
- */
685
-
686
-#define HOMING_FEEDRATE {50*60, 50*60, 4*60, 0}  // set the homing speeds (mm/min)
745
+//
746
+// MOVEMENT SETTINGS
747
+// @section motion
748
+//
687 749
 
688 750
 // default settings
689 751
 
@@ -705,18 +767,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
705 767
 //============================= Additional Features ===========================
706 768
 //=============================================================================
707 769
 
708
-// @section more
709
-
710
-// Custom M code points
711
-#define CUSTOM_M_CODES
712
-#if ENABLED(CUSTOM_M_CODES)
713
-  #if ENABLED(AUTO_BED_LEVELING_FEATURE)
714
-    #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851
715
-    #define Z_PROBE_OFFSET_RANGE_MIN -20
716
-    #define Z_PROBE_OFFSET_RANGE_MAX 20
717
-  #endif
718
-#endif
719
-
720 770
 // @section extras
721 771
 
722 772
 //
@@ -748,22 +798,107 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
748 798
 //
749 799
 //#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose
750 800
 
801
+//
802
+// G20/G21 Inch mode support
803
+//
804
+//#define INCH_MODE_SUPPORT
805
+
806
+//
807
+// M149 Set temperature units support
808
+//
809
+//#define TEMPERATURE_UNITS_SUPPORT
810
+
751 811
 // @section temperature
752 812
 
753 813
 // Preheat Constants
754
-#define PLA_PREHEAT_HOTEND_TEMP 180
755
-#define PLA_PREHEAT_HPB_TEMP 70
756
-#define PLA_PREHEAT_FAN_SPEED 0   // Insert Value between 0 and 255
814
+#define PREHEAT_1_TEMP_HOTEND 180
815
+#define PREHEAT_1_TEMP_BED     70
816
+#define PREHEAT_1_FAN_SPEED     0 // Value from 0 to 255
817
+
818
+#define PREHEAT_2_TEMP_HOTEND 240
819
+#define PREHEAT_2_TEMP_BED    110
820
+#define PREHEAT_2_FAN_SPEED     0 // Value from 0 to 255
757 821
 
758
-#define ABS_PREHEAT_HOTEND_TEMP 240
759
-#define ABS_PREHEAT_HPB_TEMP 110
760
-#define ABS_PREHEAT_FAN_SPEED 0   // Insert Value between 0 and 255
822
+//
823
+// Nozzle Park -- EXPERIMENTAL
824
+//
825
+// When enabled allows the user to define a special XYZ position, inside the
826
+// machine's topology, to park the nozzle when idle or when receiving the G27
827
+// command.
828
+//
829
+// The "P" paramenter controls what is the action applied to the Z axis:
830
+//    P0: (Default) If current Z-pos is lower than Z-park then the nozzle will
831
+//        be raised to reach Z-park height.
832
+//
833
+//    P1: No matter the current Z-pos, the nozzle will be raised/lowered to
834
+//        reach Z-park height.
835
+//
836
+//    P2: The nozzle height will be raised by Z-park amount but never going over
837
+//        the machine's limit of Z_MAX_POS.
838
+//
839
+//#define NOZZLE_PARK_FEATURE
840
+
841
+#if ENABLED(NOZZLE_PARK_FEATURE)
842
+  // Specify a park position as { X, Y, Z }
843
+  #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 }
844
+#endif
845
+
846
+//
847
+// Clean Nozzle Feature -- EXPERIMENTAL
848
+//
849
+// When enabled allows the user to send G12 to start the nozzle cleaning
850
+// process, the G-Code accepts two parameters:
851
+//   "P" for pattern selection
852
+//   "S" for defining the number of strokes/repetitions
853
+//
854
+// Available list of patterns:
855
+//   P0: This is the default pattern, this process requires a sponge type
856
+//       material at a fixed bed location, the cleaning process is based on
857
+//       "strokes" i.e. back-and-forth movements between the starting and end
858
+//       points.
859
+//
860
+//   P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T"
861
+//       defines the number of zig-zag triangles to be done. "S" defines the
862
+//       number of strokes aka one back-and-forth movement. As an example
863
+//       sending "G12 P1 S1 T3" will execute:
864
+//
865
+//          --
866
+//         |  (X0, Y1) |     /\        /\        /\     | (X1, Y1)
867
+//         |           |    /  \      /  \      /  \    |
868
+//       A |           |   /    \    /    \    /    \   |
869
+//         |           |  /      \  /      \  /      \  |
870
+//         |  (X0, Y0) | /        \/        \/        \ | (X1, Y0)
871
+//          --         +--------------------------------+
872
+//                       |________|_________|_________|
873
+//                           T1        T2        T3
874
+//
875
+// Caveats: End point Z should use the same value as Start point Z.
876
+//
877
+// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments
878
+// may change to add new functionality like different wipe patterns.
879
+//
880
+//#define NOZZLE_CLEAN_FEATURE
881
+
882
+#if ENABLED(NOZZLE_CLEAN_FEATURE)
883
+  // Number of pattern repetitions
884
+  #define NOZZLE_CLEAN_STROKES  12
885
+
886
+  // Specify positions as { X, Y, Z }
887
+  #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)}
888
+  #define NOZZLE_CLEAN_END_POINT   {100, 60, (Z_MIN_POS + 1)}
889
+
890
+  // Moves the nozzle to the initial position
891
+  #define NOZZLE_CLEAN_GOBACK
892
+#endif
761 893
 
762 894
 //
763 895
 // Print job timer
764 896
 //
765 897
 // Enable this option to automatically start and stop the
766
-// print job timer when M104 and M109 commands are received.
898
+// print job timer when M104/M109/M190 commands are received.
899
+// M104 (extruder without wait) - high temp = none, low temp = stop timer
900
+// M109 (extruder with wait) - high temp = start timer, low temp = stop timer
901
+// M190 (bed with wait) - high temp = start timer, low temp = none
767 902
 //
768 903
 // In all cases the timer can be started and stopped using
769 904
 // the following commands:
@@ -796,8 +931,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
796 931
 //
797 932
 // Here you may choose the language used by Marlin on the LCD menus, the following
798 933
 // list of languages are available:
799
-//    en, pl, fr, de, es, ru, bg, it, pt, pt_utf8, pt-br, pt-br_utf8,
800
-//    fi, an, nl, ca, eu, kana, kana_utf8, cn, cz, test
934
+//    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
935
+//    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
936
+//
937
+// :{'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','test':'TEST'}
801 938
 //
802 939
 #define LCD_LANGUAGE en
803 940
 
@@ -945,6 +1082,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
945 1082
 //#define ULTIPANEL
946 1083
 
947 1084
 //
1085
+// Cartesio UI
1086
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1087
+//
1088
+//#define CARTESIO_UI
1089
+
1090
+//
948 1091
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
949 1092
 // http://reprap.org/wiki/PanelOne
950 1093
 //
@@ -957,6 +1100,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
957 1100
 //#define MAKRPANEL
958 1101
 
959 1102
 //
1103
+// ReprapWorld Graphical LCD
1104
+// https://reprapworld.com/?products_details&products_id/1218
1105
+//
1106
+//#define REPRAPWORLD_GRAPHICAL_LCD
1107
+
1108
+//
960 1109
 // Activate one of these if you have a Panucatt Devices
961 1110
 // Viki 2.0 or mini Viki with Graphic LCD
962 1111
 // http://panucatt.com
@@ -1006,7 +1155,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1006 1155
 // is pressed, a value of 10.0 means 10mm per click.
1007 1156
 //
1008 1157
 //#define REPRAPWORLD_KEYPAD
1009
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1158
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1010 1159
 
1011 1160
 //
1012 1161
 // RigidBot Panel V1.0
@@ -1067,6 +1216,15 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1067 1216
 //#define U8GLIB_SSD1306
1068 1217
 
1069 1218
 //
1219
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1220
+//
1221
+//#define SAV_3DGLCD
1222
+#if ENABLED(SAV_3DGLCD)
1223
+  //#define U8GLIB_SSD1306
1224
+  #define U8GLIB_SH1106
1225
+#endif
1226
+
1227
+//
1070 1228
 // CONTROLLER TYPE: Shift register panels
1071 1229
 //
1072 1230
 // 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH
@@ -1094,7 +1252,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1094 1252
 // at zero value, there are 128 effective control positions.
1095 1253
 #define SOFT_PWM_SCALE 0
1096 1254
 
1097
-// Temperature status LEDs that display the hotend and bet temperature.
1255
+// Temperature status LEDs that display the hotend and bed temperature.
1098 1256
 // If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
1099 1257
 // Otherwise the RED led is on. There is 1C hysteresis.
1100 1258
 //#define TEMP_STAT_LEDS
@@ -1126,28 +1284,16 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1126 1284
 //
1127 1285
 //#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
1128 1286
 
1129
-// Servo Endstops
1130
-//
1131
-// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes.
1132
-// Use M851 to set the Z probe vertical offset from the nozzle. Store that setting with M500.
1133
-//
1134
-//#define X_ENDSTOP_SERVO_NR 1
1135
-//#define Y_ENDSTOP_SERVO_NR 2
1136
-//#define Z_ENDSTOP_SERVO_NR 0
1137
-//#define SERVO_ENDSTOP_ANGLES {{0,0}, {0,0}, {70,0}} // X,Y,Z Axis Extend and Retract angles
1287
+// Delay (in microseconds) before the next move will start, to give the servo time to reach its target angle.
1288
+// 300ms is a good value but you can try less delay.
1289
+// If the servo can't reach the requested position, increase it.
1290
+#define SERVO_DELAY 300
1138 1291
 
1139 1292
 // Servo deactivation
1140 1293
 //
1141 1294
 // With this option servos are powered only during movement, then turned off to prevent jitter.
1142 1295
 //#define DEACTIVATE_SERVOS_AFTER_MOVE
1143 1296
 
1144
-#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE)
1145
-  // Delay (in microseconds) before turning the servo off. This depends on the servo speed.
1146
-  // 300ms is a good value but you can try less delay.
1147
-  // If the servo can't reach the requested position, increase it.
1148
-  #define SERVO_DEACTIVATION_DELAY 300
1149
-#endif
1150
-
1151 1297
 /**********************************************************************\
1152 1298
  * Support for a filament diameter sensor
1153 1299
  * Also allows adjustment of diameter at print time (vs  at slicing)
@@ -1178,7 +1324,4 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1178 1324
   //#define FILAMENT_LCD_DISPLAY
1179 1325
 #endif
1180 1326
 
1181
-#include "Configuration_adv.h"
1182
-#include "thermistortables.h"
1183
-
1184
-#endif //CONFIGURATION_H
1327
+#endif // CONFIGURATION_H

+ 335
- 228
Marlin/example_configurations/delta/biv2.5/Configuration.h Parādīt failu

@@ -38,8 +38,18 @@
38 38
 #ifndef CONFIGURATION_H
39 39
 #define CONFIGURATION_H
40 40
 
41
-#include "boards.h"
42
-#include "macros.h"
41
+/**
42
+ *
43
+ *  ***********************************
44
+ *  **  ATTENTION TO ALL DEVELOPERS  **
45
+ *  ***********************************
46
+ *
47
+ * You must increment this version number for every significant change such as,
48
+ * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option.
49
+ *
50
+ * Note: Update also Version.h !
51
+ */
52
+#define CONFIGURATION_H_VERSION 010100
43 53
 
44 54
 //===========================================================================
45 55
 //============================= Getting Started =============================
@@ -73,20 +83,26 @@
73 83
 
74 84
 // @section info
75 85
 
76
-#if ENABLED(USE_AUTOMATIC_VERSIONING)
77
-  #include "_Version.h"
78
-#else
79
-  #include "Version.h"
80
-#endif
81
-
82 86
 // User-specified version info of this build to display in [Pronterface, etc] terminal window during
83 87
 // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
84 88
 // build by the user have been successfully uploaded into firmware.
85 89
 #define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes.
86 90
 #define SHOW_BOOTSCREEN
87
-#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during bootup in line 1
88
-//#define STRING_SPLASH_LINE2 STRING_DISTRIBUTION_DATE // will be shown during bootup in line 2
91
+#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during boot in line 1
92
+#define STRING_SPLASH_LINE2 WEBSITE_URL         // will be shown during boot in line 2
89 93
 
94
+//
95
+// *** VENDORS PLEASE READ *****************************************************
96
+//
97
+// Marlin now allow you to have a vendor boot image to be displayed on machine
98
+// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your
99
+// custom boot image and them the default Marlin boot image is shown.
100
+//
101
+// We suggest for you to take advantage of this new feature and keep the Marlin
102
+// boot image unmodified. For an example have a look at the bq Hephestos 2
103
+// example configuration folder.
104
+//
105
+//#define SHOW_CUSTOM_BOOTSCREEN
90 106
 // @section machine
91 107
 
92 108
 // SERIAL_PORT selects which serial port should be used for communication with the host.
@@ -123,17 +139,40 @@
123 139
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
124 140
 //#define SINGLENOZZLE
125 141
 
142
+// A dual extruder that uses a single stepper motor
143
+// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z
144
+//#define SWITCHING_EXTRUDER
145
+#if ENABLED(SWITCHING_EXTRUDER)
146
+  #define SWITCHING_EXTRUDER_SERVO_NR 0
147
+  #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1
148
+  //#define HOTEND_OFFSET_Z {0.0, 0.0}
149
+#endif
150
+
151
+/**
152
+ * "Mixing Extruder"
153
+ *   - Adds a new code, M165, to set the current mix factors.
154
+ *   - Extends the stepping routines to move multiple steppers in proportion to the mix.
155
+ *   - Optional support for Repetier Host M163, M164, and virtual extruder.
156
+ *   - This implementation supports only a single extruder.
157
+ *   - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
158
+ */
159
+//#define MIXING_EXTRUDER
160
+#if ENABLED(MIXING_EXTRUDER)
161
+  #define MIXING_STEPPERS 2        // Number of steppers in your mixing extruder
162
+  #define MIXING_VIRTUAL_TOOLS 16  // Use the Virtual Tool method with M163 and M164
163
+  //#define DIRECT_MIXING_IN_G1    // Allow ABCDHI mix factors in G1 movement commands
164
+#endif
165
+
126 166
 // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
127 167
 // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
128 168
 // For the other hotends it is their distance from the extruder 0 hotend.
129
-//#define EXTRUDER_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
130
-//#define EXTRUDER_OFFSET_Y {0.0, 5.00}  // (in mm) for each extruder, offset of the hotend on the Y axis
169
+//#define HOTEND_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
170
+//#define HOTEND_OFFSET_Y {0.0, 5.00}  // (in mm) for each extruder, offset of the hotend on the Y axis
131 171
 
132 172
 //// The following define selects which power supply you have. Please choose the one that matches your setup
133 173
 // 1 = ATX
134 174
 // 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC)
135 175
 // :{1:'ATX',2:'X-Box 360'}
136
-
137 176
 #define POWER_SUPPLY 1
138 177
 
139 178
 // Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it.
@@ -168,6 +207,7 @@
168 207
 // 13 is 100k Hisens 3950  1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE"
169 208
 // 20 is the PT100 circuit found in the Ultimainboard V2.x
170 209
 // 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950
210
+// 66 is 4.7M High Temperature thermistor from Dyze Design
171 211
 // 70 is the 100K thermistor found in the bq Hephestos 2
172 212
 //
173 213
 //    1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k
@@ -184,7 +224,7 @@
184 224
 //     Use it for Testing or Development purposes. NEVER for production machine.
185 225
 //#define DUMMY_THERMISTOR_998_VALUE 25
186 226
 //#define DUMMY_THERMISTOR_999_VALUE 100
187
-// :{ '0': "Not used", '4': "10k !! do not use for a hotend. Bad resolution at high temp. !!", '1': "100k / 4.7k - EPCOS", '51': "100k / 1k - EPCOS", '6': "100k / 4.7k EPCOS - Not as accurate as Table 1", '5': "100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '7': "100k / 4.7k Honeywell 135-104LAG-J01", '71': "100k / 4.7k Honeywell 135-104LAF-J01", '8': "100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT", '9': "100k / 4.7k GE Sensing AL03006-58.2K-97-G1", '10': "100k / 4.7k RS 198-961", '11': "100k / 4.7k beta 3950 1%", '12': "100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)", '13': "100k Hisens 3950  1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'", '60': "100k Maker's Tool Works Kapton Bed Thermistor beta=3950", '55': "100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '2': "200k / 4.7k - ATC Semitec 204GT-2", '52': "200k / 1k - ATC Semitec 204GT-2", '-3': "Thermocouple + MAX31855 (only for sensor 0)", '-2': "Thermocouple + MAX6675 (only for sensor 0)", '-1': "Thermocouple + AD595", '3': "Mendel-parts / 4.7k", '1047': "Pt1000 / 4.7k", '1010': "Pt1000 / 1k (non standard)", '20': "PT100 (Ultimainboard V2.x)", '147': "Pt100 / 4.7k", '110': "Pt100 / 1k (non-standard)", '998': "Dummy 1", '999': "Dummy 2" }
227
+// :{ '0': "Not used",'1':"100k / 4.7k - EPCOS",'2':"200k / 4.7k - ATC Semitec 204GT-2",'3':"Mendel-parts / 4.7k",'4':"10k !! do not use for a hotend. Bad resolution at high temp. !!",'5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'6':"100k / 4.7k EPCOS - Not as accurate as Table 1",'7':"100k / 4.7k Honeywell 135-104LAG-J01",'8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT",'9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1",'10':"100k / 4.7k RS 198-961",'11':"100k / 4.7k beta 3950 1%",'12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)",'13':"100k Hisens 3950  1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'",'20':"PT100 (Ultimainboard V2.x)",'51':"100k / 1k - EPCOS",'52':"200k / 1k - ATC Semitec 204GT-2",'55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950",'66':"Dyze Design 4.7M High Temperature thermistor",'70':"the 100K thermistor found in the bq Hephestos 2",'71':"100k / 4.7k Honeywell 135-104LAF-J01",'147':"Pt100 / 4.7k",'1047':"Pt1000 / 4.7k",'110':"Pt100 / 1k (non-standard)",'1010':"Pt1000 / 1k (non standard)",'-3':"Thermocouple + MAX31855 (only for sensor 0)",'-2':"Thermocouple + MAX6675 (only for sensor 0)",'-1':"Thermocouple + AD595",'998':"Dummy 1",'999':"Dummy 2" }
188 228
 #define TEMP_SENSOR_0 5
189 229
 #define TEMP_SENSOR_1 5
190 230
 #define TEMP_SENSOR_2 0
@@ -223,10 +263,6 @@
223 263
 #define HEATER_3_MAXTEMP 275
224 264
 #define BED_MAXTEMP 150
225 265
 
226
-// If you want the M105 heater power reported in watts, define the BED_WATTS, and (shared for all extruders) EXTRUDER_WATTS
227
-//#define EXTRUDER_WATTS (12.0*12.0/6.7) // P=U^2/R
228
-//#define BED_WATTS (12.0*12.0/1.1)      // P=U^2/R
229
-
230 266
 //===========================================================================
231 267
 //============================= PID Settings ================================
232 268
 //===========================================================================
@@ -241,8 +277,8 @@
241 277
   //#define PID_DEBUG // Sends debug data to the serial port.
242 278
   //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX
243 279
   //#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
244
-  //#define PID_PARAMS_PER_EXTRUDER // Uses separate PID parameters for each extruder (useful for mismatched extruders)
245
-                                    // Set/get with gcode: M301 E[extruder number, 0-2]
280
+  //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders)
281
+                                  // Set/get with gcode: M301 E[extruder number, 0-2]
246 282
   #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature
247 283
                                   // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max.
248 284
   #define PID_INTEGRAL_DRIVE_MAX PID_MAX  //limit for the integral term
@@ -426,18 +462,126 @@
426 462
 #endif
427 463
 
428 464
 // Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup).
429
-const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
430
-const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
431
-const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
432
-const bool X_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
433
-const bool Y_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
434
-const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
435
-const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
465
+#define X_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
466
+#define Y_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
467
+#define Z_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
468
+#define X_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
469
+#define Y_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
470
+#define Z_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
471
+#define Z_MIN_PROBE_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
436 472
 
437 473
 //===========================================================================
438 474
 //============================= Z Probe Options =============================
439 475
 //===========================================================================
440 476
 
477
+//
478
+// Probe Type
479
+// Probes are sensors/switches that are activated / deactivated before/after use.
480
+//
481
+// Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc.
482
+// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below.
483
+//
484
+// Use M851 to set the Z probe vertical offset from the nozzle. Store with M500.
485
+//
486
+
487
+// A Fix-Mounted Probe either doesn't deploy or needs manual deployment.
488
+// For example an inductive probe, or a setup that uses the nozzle to probe.
489
+// An inductive probe must be deactivated to go below
490
+// its trigger-point if hardware endstops are active.
491
+//#define FIX_MOUNTED_PROBE
492
+
493
+// The BLTouch probe emulates a servo probe.
494
+//#define BLTOUCH
495
+
496
+// Z Servo Probe, such as an endstop switch on a rotating arm.
497
+//#define Z_ENDSTOP_SERVO_NR 0
498
+//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles
499
+
500
+// Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
501
+//#define Z_PROBE_SLED
502
+//#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.
503
+
504
+// Z Probe to nozzle (X,Y) offset, relative to (0, 0).
505
+// X and Y offsets must be integers.
506
+//
507
+// In the following example the X and Y offsets are both positive:
508
+// #define X_PROBE_OFFSET_FROM_EXTRUDER 10
509
+// #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
510
+//
511
+//    +-- BACK ---+
512
+//    |           |
513
+//  L |    (+) P  | R <-- probe (20,20)
514
+//  E |           | I
515
+//  F | (-) N (+) | G <-- nozzle (10,10)
516
+//  T |           | H
517
+//    |    (-)    | T
518
+//    |           |
519
+//    O-- FRONT --+
520
+//  (0,0)
521
+#define X_PROBE_OFFSET_FROM_EXTRUDER 0     // X offset: -left  +right  [of the nozzle]
522
+#define Y_PROBE_OFFSET_FROM_EXTRUDER -10   // Y offset: -front +behind [the nozzle]
523
+#define Z_PROBE_OFFSET_FROM_EXTRUDER -3.5  // Z offset: -below +above  [the nozzle]
524
+
525
+// X and Y axis travel speed (mm/m) between probes
526
+#define XY_PROBE_SPEED 4000
527
+// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
528
+#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
529
+// Speed for the "accurate" probe of each point
530
+#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
531
+// Use double touch for probing
532
+//#define PROBE_DOUBLE_TOUCH
533
+
534
+// Allen key retractable z-probe as seen on many Kossel delta printers - http://reprap.org/wiki/Kossel#Automatic_bed_leveling_probe
535
+// Deploys by touching z-axis belt. Retracts by pushing the probe down. Uses Z_MIN_PIN.
536
+//#define Z_PROBE_ALLEN_KEY
537
+
538
+#if ENABLED(Z_PROBE_ALLEN_KEY)
539
+  // 2 or 3 sets of coordinates for deploying and retracting the spring loaded touch probe on G29,
540
+  // if servo actuated touch probe is not defined. Uncomment as appropriate for your printer/probe.
541
+
542
+  // Just like Kossel Pro
543
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_1_X -105.00 // Move left but not quite so far that we'll bump the belt
544
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_1_Y 0.00
545
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_1_Z 100.0
546
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE XY_PROBE_SPEED
547
+
548
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_2_X -110.00 // Move outward to position deploy pin to the left of the arm
549
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_2_Y -125.00
550
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_2_Z 100.0
551
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE XY_PROBE_SPEED
552
+
553
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_3_X Z_PROBE_ALLEN_KEY_DEPLOY_2_X * 0.75
554
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_3_Y Z_PROBE_ALLEN_KEY_DEPLOY_2_Y * 0.75
555
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_3_Z Z_PROBE_ALLEN_KEY_DEPLOY_2_Z
556
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE XY_PROBE_SPEED
557
+
558
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_3_X 45.00 // Move right to trigger deploy pin
559
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_3_Y -125.00
560
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_3_Z 100.0
561
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE (XY_PROBE_SPEED)/2
562
+
563
+  #define Z_PROBE_ALLEN_KEY_STOW_1_X 36.00 // Line up with bed retaining clip
564
+  #define Z_PROBE_ALLEN_KEY_STOW_1_Y -122.00
565
+  #define Z_PROBE_ALLEN_KEY_STOW_1_Z 75.0
566
+  #define Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE XY_PROBE_SPEED
567
+
568
+  #define Z_PROBE_ALLEN_KEY_STOW_2_X 36.00 // move down to retract probe
569
+  #define Z_PROBE_ALLEN_KEY_STOW_2_Y -122.00
570
+  #define Z_PROBE_ALLEN_KEY_STOW_2_Z 25.0
571
+  #define Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE (XY_PROBE_SPEED)/2
572
+
573
+  #define Z_PROBE_ALLEN_KEY_STOW_3_X 0.0  // return to 0,0,100
574
+  #define Z_PROBE_ALLEN_KEY_STOW_3_Y 0.0
575
+  #define Z_PROBE_ALLEN_KEY_STOW_3_Z 100.0
576
+  #define Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE XY_PROBE_SPEED
577
+
578
+  #define Z_PROBE_ALLEN_KEY_STOW_4_X 0.0
579
+  #define Z_PROBE_ALLEN_KEY_STOW_4_Y 0.0
580
+  #define Z_PROBE_ALLEN_KEY_STOW_4_Z Z_PROBE_ALLEN_KEY_STOW_3_Z
581
+  #define Z_PROBE_ALLEN_KEY_STOW_4_FEEDRATE XY_PROBE_SPEED
582
+
583
+#endif // Z_PROBE_ALLEN_KEY
584
+
441 585
 // Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z Probe and a Z-min-endstop on the same machine.
442 586
 // With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing.
443 587
 //
@@ -449,7 +593,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
449 593
 // To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN.
450 594
 //
451 595
 // For a servo-based Z probe, you must set up servo support below, including
452
-// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES.
596
+// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and Z_SERVO_ANGLES.
453 597
 //
454 598
 // - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin.
455 599
 // - Use 5V for powered (usu. inductive) sensors.
@@ -482,6 +626,21 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
482 626
 // If you're using the Z MIN endstop connector for your Z probe, this has no effect.
483 627
 //#define DISABLE_Z_MIN_PROBE_ENDSTOP
484 628
 
629
+// Enable Z Probe Repeatability test to see how accurate your probe is
630
+//#define Z_MIN_PROBE_REPEATABILITY_TEST
631
+
632
+//
633
+// Probe Raise options provide clearance for the probe to deploy, stow, and travel.
634
+//
635
+#define Z_PROBE_DEPLOY_HEIGHT 50 // Raise to make room for the probe to deploy / stow
636
+#define Z_PROBE_TRAVEL_HEIGHT 5  // Raise between probing points.
637
+
638
+//
639
+// For M851 give a range for adjusting the Z probe offset
640
+//
641
+#define Z_PROBE_OFFSET_RANGE_MIN -20
642
+#define Z_PROBE_OFFSET_RANGE_MAX 20
643
+
485 644
 // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
486 645
 // :{0:'Low',1:'High'}
487 646
 #define X_ENABLE_ON 0
@@ -518,8 +677,9 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
518 677
 #define INVERT_E3_DIR false
519 678
 
520 679
 // @section homing
521
-//#define MIN_Z_HEIGHT_FOR_HOMING 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
522
-                                    // Be sure you have this distance over your Z_MAX_POS in case.
680
+
681
+//#define Z_HOMING_HEIGHT 4  // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
682
+                             // Be sure you have this distance over your Z_MAX_POS in case.
523 683
 
524 684
 // ENDSTOP SETTINGS:
525 685
 // Sets direction of endstops when homing; 1=MAX, -1=MIN
@@ -549,7 +709,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
549 709
                                  // It is assumed that when logic high = filament available
550 710
                                  //                    when logic  low = filament ran out
551 711
 #if ENABLED(FILAMENT_RUNOUT_SENSOR)
552
-  const bool FIL_RUNOUT_INVERTING = true;  // Should be uncommented and true or false should assigned
712
+  const bool FIL_RUNOUT_INVERTING = false; // set to true to invert the logic of the sensor.
553 713
   #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined.
554 714
   #define FILAMENT_RUNOUT_SCRIPT "M600"
555 715
 #endif
@@ -561,10 +721,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
561 721
 //#define MESH_BED_LEVELING    // Enable mesh bed leveling.
562 722
 
563 723
 #if ENABLED(MESH_BED_LEVELING)
564
-  #define MESH_MIN_X 10
565
-  #define MESH_MAX_X (X_MAX_POS - (MESH_MIN_X))
566
-  #define MESH_MIN_Y 10
567
-  #define MESH_MAX_Y (Y_MAX_POS - (MESH_MIN_Y))
724
+  #define MESH_INSET 10        // Mesh inset margin on print area
568 725
   #define MESH_NUM_X_POINTS 3  // Don't use more than 7 points per axis, implementation limited.
569 726
   #define MESH_NUM_Y_POINTS 3
570 727
   #define MESH_HOME_SEARCH_Z 4  // Z after Home, bed somewhere below but above 0.0.
@@ -586,8 +743,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
586 743
 // @section bedlevel
587 744
 
588 745
 //#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line)
746
+
747
+// Enable this feature to get detailed logging of G28, G29, M48, etc.
748
+// Logging is off by default. Enable this logging feature with 'M111 S32'.
749
+// NOTE: Requires a huge amount of PROGMEM.
589 750
 //#define DEBUG_LEVELING_FEATURE
590
-//#define Z_MIN_PROBE_REPEATABILITY_TEST  // If not commented out, Z Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
591 751
 
592 752
 #if ENABLED(AUTO_BED_LEVELING_FEATURE)
593 753
 
@@ -634,139 +794,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
634 794
     #define ABL_PROBE_PT_3_X 170
635 795
     #define ABL_PROBE_PT_3_Y 20
636 796
 
637
-  #endif // AUTO_BED_LEVELING_GRID
638
-
639
-  // Z Probe to nozzle (X,Y) offset, relative to (0, 0).
640
-  // X and Y offsets must be integers.
641
-  //
642
-  // In the following example the X and Y offsets are both positive:
643
-  // #define X_PROBE_OFFSET_FROM_EXTRUDER 10
644
-  // #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
645
-  //
646
-  //    +-- BACK ---+
647
-  //    |           |
648
-  //  L |    (+) P  | R <-- probe (20,20)
649
-  //  E |           | I
650
-  //  F | (-) N (+) | G <-- nozzle (10,10)
651
-  //  T |           | H
652
-  //    |    (-)    | T
653
-  //    |           |
654
-  //    O-- FRONT --+
655
-  //  (0,0)
656
-  #define X_PROBE_OFFSET_FROM_EXTRUDER 0     // X offset: -left  +right  [of the nozzle]
657
-  #define Y_PROBE_OFFSET_FROM_EXTRUDER -10   // Y offset: -front +behind [the nozzle]
658
-  #define Z_PROBE_OFFSET_FROM_EXTRUDER -3.5  // Z offset: -below +above  [the nozzle]
659
-
660
-  #define XY_TRAVEL_SPEED 4000         // X and Y axis travel speed between probes, in mm/min.
661
-
662
-  #define Z_RAISE_BEFORE_PROBING 15   // How much the Z axis will be raised before traveling to the first probing point.
663
-  #define Z_RAISE_BETWEEN_PROBINGS 5  // How much the Z axis will be raised when traveling from between next probing points.
664
-  #define Z_RAISE_AFTER_PROBING 50    // How much the Z axis will be raised after the last probing point.
797
+  #endif // !AUTO_BED_LEVELING_GRID
665 798
 
666 799
   //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine.
667 800
                                                                              // Useful to retract a deployable Z probe.
668 801
 
669
-  // Probes are sensors/switches that need to be activated before they can be used
670
-  // and deactivated after their use.
671
-  // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE
672
-
673
-  // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER
674
-  // when the hardware endstops are active.
675
-  //#define FIX_MOUNTED_PROBE
676
-
677
-  // A Servo Probe can be defined in the servo section below.
678
-
679
-  // An Allen Key Probe is currently predefined only in the delta example configurations.
680
-
681
-  // Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
682
-  //#define Z_PROBE_SLED
683
-  //#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.
684
-
685
-  // A Mechanical Probe is any probe that either doesn't deploy or needs manual deployment
686
-  // For example any setup that uses the nozzle itself as a probe.
687
-  //#define MECHANICAL_PROBE
688
-
689
-  // Allen key retractable z-probe as seen on many Kossel delta printers - http://reprap.org/wiki/Kossel#Automatic_bed_leveling_probe
690
-  // Deploys by touching z-axis belt. Retracts by pushing the probe down. Uses Z_MIN_PIN.
691
-  //#define Z_PROBE_ALLEN_KEY
692
-
693
-  #if ENABLED(Z_PROBE_ALLEN_KEY)
694
-    // 2 or 3 sets of coordinates for deploying and retracting the spring loaded touch probe on G29,
695
-    // if servo actuated touch probe is not defined. Uncomment as appropriate for your printer/probe.
696
-
697
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_X 30.0
698
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_Y DELTA_PRINTABLE_RADIUS
699
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_Z 100.0
700
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE HOMING_FEEDRATE_XYZ
701
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_X 0.0
702
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_Y DELTA_PRINTABLE_RADIUS
703
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_Z 100.0
704
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE (HOMING_FEEDRATE_XYZ)/10
705
-
706
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_X -64.0 // Move the probe into position
707
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_Y 56.0
708
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_Z 23.0
709
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE HOMING_FEEDRATE_XYZ
710
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_X -64.0 // Push it down
711
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_Y 56.0
712
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_Z 3.0
713
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE (HOMING_FEEDRATE_XYZ)/10
714
-    //#define Z_PROBE_ALLEN_KEY_STOW_3_X -64.0 // Move it up to clear
715
-    //#define Z_PROBE_ALLEN_KEY_STOW_3_Y 56.0
716
-    //#define Z_PROBE_ALLEN_KEY_STOW_3_Z 50.0
717
-    //#define Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE HOMING_FEEDRATE_XYZ
718
-
719
-    // Kossel Mini
720
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_X 35.0
721
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_Y 72.0
722
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_Z 100.0
723
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE (HOMING_FEEDRATE_XYZ)/10
724
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_X 0.0
725
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_Y 0.0
726
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_Z 100.0
727
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE (HOMING_FEEDRATE_XYZ)/10
728
-
729
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_X -46.0 // Move the probe into position
730
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_Y 59.0
731
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_Z 28.0
732
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE HOMING_FEEDRATE_XYZ
733
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_X -46.0 // Move the nozzle down further to push the probe into retracted position.
734
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_Y 59.0
735
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_Z 8.0
736
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE (HOMING_FEEDRATE_XYZ)/10
737
-    //#define Z_PROBE_ALLEN_KEY_STOW_3_X -46.0 // Raise things back up slightly so we don't bump into anything
738
-    //#define Z_PROBE_ALLEN_KEY_STOW_3_Y 59.0
739
-    //#define Z_PROBE_ALLEN_KEY_STOW_3_Z 38.0
740
-    //#define Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE HOMING_FEEDRATE_XYZ
741
-
742
-    // Kossel Pro
743
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_1_X -105.00 // Move left but not quite so far that we'll bump the belt
744
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_1_Y 0.00
745
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_1_Z 100.0
746
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE HOMING_FEEDRATE_XYZ
747
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_2_X -110.00 // Move outward to position deploy pin to the left of the arm
748
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_2_Y -125.00
749
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_2_Z 100.0
750
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE HOMING_FEEDRATE_XYZ
751
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_3_X 45.00 // Move right to trigger deploy pin
752
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_3_Y -125.00
753
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_3_Z 100.0
754
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE (HOMING_FEEDRATE_XYZ)/2
755
-
756
-    #define Z_PROBE_ALLEN_KEY_STOW_1_X 36.00 // Line up with bed retaining clip
757
-    #define Z_PROBE_ALLEN_KEY_STOW_1_Y -122.00
758
-    #define Z_PROBE_ALLEN_KEY_STOW_1_Z 75.0
759
-    #define Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE HOMING_FEEDRATE_XYZ
760
-    #define Z_PROBE_ALLEN_KEY_STOW_2_X 36.00 // move down to retract probe
761
-    #define Z_PROBE_ALLEN_KEY_STOW_2_Y -122.00
762
-    #define Z_PROBE_ALLEN_KEY_STOW_2_Z 25.0
763
-    #define Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE (HOMING_FEEDRATE_XYZ)/2
764
-    #define Z_PROBE_ALLEN_KEY_STOW_3_X 0.0  // return to 0,0,100
765
-    #define Z_PROBE_ALLEN_KEY_STOW_3_Y 0.0
766
-    #define Z_PROBE_ALLEN_KEY_STOW_3_Z 100.0
767
-    #define Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE HOMING_FEEDRATE_XYZ
768
-  #endif
769
-
770 802
   // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing,
771 803
   // it is highly recommended you also enable Z_SAFE_HOMING below!
772 804
 
@@ -775,17 +807,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
775 807
 
776 808
 // @section homing
777 809
 
778
-// The position of the homing switches
779
-#define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used
780
-//#define BED_CENTER_AT_0_0  // If defined, the center of the bed is at (X=0, Y=0)
810
+// The center of the bed is at (X=0, Y=0)
811
+#define BED_CENTER_AT_0_0
781 812
 
782
-// Manual homing switch locations:
783
-// For deltabots this means top and center of the Cartesian print volume.
784
-#if ENABLED(MANUAL_HOME_POSITIONS)
785
-  #define MANUAL_X_HOME_POS 0
786
-  #define MANUAL_Y_HOME_POS 0
787
-  #define MANUAL_Z_HOME_POS 405 // For delta: Distance between nozzle and print surface after homing.
788
-#endif
813
+// Manually set the home position. Leave these undefined for automatic settings.
814
+// For DELTA this is the top-center of the Cartesian print volume.
815
+//#define MANUAL_X_HOME_POS 0
816
+//#define MANUAL_Y_HOME_POS 0
817
+#define MANUAL_Z_HOME_POS 405 // Distance between the nozzle to printbed after homing
789 818
 
790 819
 // Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
791 820
 //
@@ -793,7 +822,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
793 822
 //
794 823
 // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
795 824
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
796
-// - Position the Z probe in a defined XY point before Z Homing when homing all axes (G28).
825
+// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
797 826
 // - Prevent Z homing when the Z probe is outside bed area.
798 827
 //#define Z_SAFE_HOMING
799 828
 
@@ -803,16 +832,13 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
803 832
 #endif
804 833
 
805 834
 
806
-// @section movement
835
+// Delta only homes to Z
836
+#define HOMING_FEEDRATE_Z  (200*30)
807 837
 
808
-/**
809
- * MOVEMENT SETTINGS
810
- */
811
-
812
-// delta homing speeds must be the same on xyz
813
-#define HOMING_FEEDRATE_XYZ (200*30)
814
-#define HOMING_FEEDRATE_E 0
815
-#define HOMING_FEEDRATE { HOMING_FEEDRATE_XYZ, HOMING_FEEDRATE_XYZ, HOMING_FEEDRATE_XYZ, HOMING_FEEDRATE_E }
838
+//
839
+// MOVEMENT SETTINGS
840
+// @section motion
841
+//
816 842
 
817 843
 // default settings
818 844
 // delta speeds must be the same on xyz
@@ -834,18 +860,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
834 860
 //============================= Additional Features ===========================
835 861
 //=============================================================================
836 862
 
837
-// @section more
838
-
839
-// Custom M code points
840
-#define CUSTOM_M_CODES
841
-#if ENABLED(CUSTOM_M_CODES)
842
-  #if ENABLED(AUTO_BED_LEVELING_FEATURE)
843
-    #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851
844
-    #define Z_PROBE_OFFSET_RANGE_MIN -20
845
-    #define Z_PROBE_OFFSET_RANGE_MAX 20
846
-  #endif
847
-#endif
848
-
849 863
 // @section extras
850 864
 
851 865
 //
@@ -877,22 +891,107 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
877 891
 //
878 892
 //#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose
879 893
 
894
+//
895
+// G20/G21 Inch mode support
896
+//
897
+//#define INCH_MODE_SUPPORT
898
+
899
+//
900
+// M149 Set temperature units support
901
+//
902
+//#define TEMPERATURE_UNITS_SUPPORT
903
+
880 904
 // @section temperature
881 905
 
882 906
 // Preheat Constants
883
-#define PLA_PREHEAT_HOTEND_TEMP 180
884
-#define PLA_PREHEAT_HPB_TEMP 70
885
-#define PLA_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
907
+#define PREHEAT_1_TEMP_HOTEND 180
908
+#define PREHEAT_1_TEMP_BED     70
909
+#define PREHEAT_1_FAN_SPEED   255 // Value from 0 to 255
910
+
911
+#define PREHEAT_2_TEMP_HOTEND 240
912
+#define PREHEAT_2_TEMP_BED    100
913
+#define PREHEAT_2_FAN_SPEED   255 // Value from 0 to 255
914
+
915
+//
916
+// Nozzle Park -- EXPERIMENTAL
917
+//
918
+// When enabled allows the user to define a special XYZ position, inside the
919
+// machine's topology, to park the nozzle when idle or when receiving the G27
920
+// command.
921
+//
922
+// The "P" paramenter controls what is the action applied to the Z axis:
923
+//    P0: (Default) If current Z-pos is lower than Z-park then the nozzle will
924
+//        be raised to reach Z-park height.
925
+//
926
+//    P1: No matter the current Z-pos, the nozzle will be raised/lowered to
927
+//        reach Z-park height.
928
+//
929
+//    P2: The nozzle height will be raised by Z-park amount but never going over
930
+//        the machine's limit of Z_MAX_POS.
931
+//
932
+//#define NOZZLE_PARK_FEATURE
886 933
 
887
-#define ABS_PREHEAT_HOTEND_TEMP 240
888
-#define ABS_PREHEAT_HPB_TEMP 100
889
-#define ABS_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
934
+#if ENABLED(NOZZLE_PARK_FEATURE)
935
+  // Specify a park position as { X, Y, Z }
936
+  #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 }
937
+#endif
938
+
939
+//
940
+// Clean Nozzle Feature -- EXPERIMENTAL
941
+//
942
+// When enabled allows the user to send G12 to start the nozzle cleaning
943
+// process, the G-Code accepts two parameters:
944
+//   "P" for pattern selection
945
+//   "S" for defining the number of strokes/repetitions
946
+//
947
+// Available list of patterns:
948
+//   P0: This is the default pattern, this process requires a sponge type
949
+//       material at a fixed bed location, the cleaning process is based on
950
+//       "strokes" i.e. back-and-forth movements between the starting and end
951
+//       points.
952
+//
953
+//   P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T"
954
+//       defines the number of zig-zag triangles to be done. "S" defines the
955
+//       number of strokes aka one back-and-forth movement. As an example
956
+//       sending "G12 P1 S1 T3" will execute:
957
+//
958
+//          --
959
+//         |  (X0, Y1) |     /\        /\        /\     | (X1, Y1)
960
+//         |           |    /  \      /  \      /  \    |
961
+//       A |           |   /    \    /    \    /    \   |
962
+//         |           |  /      \  /      \  /      \  |
963
+//         |  (X0, Y0) | /        \/        \/        \ | (X1, Y0)
964
+//          --         +--------------------------------+
965
+//                       |________|_________|_________|
966
+//                           T1        T2        T3
967
+//
968
+// Caveats: End point Z should use the same value as Start point Z.
969
+//
970
+// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments
971
+// may change to add new functionality like different wipe patterns.
972
+//
973
+//#define NOZZLE_CLEAN_FEATURE
974
+
975
+#if ENABLED(NOZZLE_CLEAN_FEATURE)
976
+  // Number of pattern repetitions
977
+  #define NOZZLE_CLEAN_STROKES  12
978
+
979
+  // Specify positions as { X, Y, Z }
980
+  #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)}
981
+  #define NOZZLE_CLEAN_END_POINT   {100, 60, (Z_MIN_POS + 1)}
982
+
983
+  // Moves the nozzle to the initial position
984
+  #define NOZZLE_CLEAN_GOBACK
985
+#endif
890 986
 
891 987
 //
892 988
 // Print job timer
893 989
 //
894 990
 // Enable this option to automatically start and stop the
895
-// print job timer when M104 and M109 commands are received.
991
+// print job timer when M104/M109/M190 commands are received.
992
+// M104 (extruder without wait) - high temp = none, low temp = stop timer
993
+// M109 (extruder with wait) - high temp = start timer, low temp = stop timer
994
+// M190 (bed with wait) - high temp = start timer, low temp = none
896 995
 //
897 996
 // In all cases the timer can be started and stopped using
898 997
 // the following commands:
@@ -925,8 +1024,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
925 1024
 //
926 1025
 // Here you may choose the language used by Marlin on the LCD menus, the following
927 1026
 // list of languages are available:
928
-//    en, pl, fr, de, es, ru, bg, it, pt, pt_utf8, pt-br, pt-br_utf8,
929
-//    fi, an, nl, ca, eu, kana, kana_utf8, cn, cz, test
1027
+//    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
1028
+//    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
1029
+//
1030
+// :{'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','test':'TEST'}
930 1031
 //
931 1032
 #define LCD_LANGUAGE en
932 1033
 
@@ -1074,6 +1175,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1074 1175
 //#define ULTIPANEL
1075 1176
 
1076 1177
 //
1178
+// Cartesio UI
1179
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1180
+//
1181
+//#define CARTESIO_UI
1182
+
1183
+//
1077 1184
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
1078 1185
 // http://reprap.org/wiki/PanelOne
1079 1186
 //
@@ -1086,6 +1193,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1086 1193
 //#define MAKRPANEL
1087 1194
 
1088 1195
 //
1196
+// ReprapWorld Graphical LCD
1197
+// https://reprapworld.com/?products_details&products_id/1218
1198
+//
1199
+//#define REPRAPWORLD_GRAPHICAL_LCD
1200
+
1201
+//
1089 1202
 // Activate one of these if you have a Panucatt Devices
1090 1203
 // Viki 2.0 or mini Viki with Graphic LCD
1091 1204
 // http://panucatt.com
@@ -1135,7 +1248,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1135 1248
 // is pressed, a value of 10.0 means 10mm per click.
1136 1249
 //
1137 1250
 //#define REPRAPWORLD_KEYPAD
1138
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1251
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1139 1252
 
1140 1253
 //
1141 1254
 // RigidBot Panel V1.0
@@ -1196,6 +1309,15 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1196 1309
 //#define U8GLIB_SSD1306
1197 1310
 
1198 1311
 //
1312
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1313
+//
1314
+//#define SAV_3DGLCD
1315
+#if ENABLED(SAV_3DGLCD)
1316
+  //#define U8GLIB_SSD1306
1317
+  #define U8GLIB_SH1106
1318
+#endif
1319
+
1320
+//
1199 1321
 // CONTROLLER TYPE: Shift register panels
1200 1322
 //
1201 1323
 // 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH
@@ -1223,7 +1345,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1223 1345
 // at zero value, there are 128 effective control positions.
1224 1346
 #define SOFT_PWM_SCALE 0
1225 1347
 
1226
-// Temperature status LEDs that display the hotend and bet temperature.
1348
+// Temperature status LEDs that display the hotend and bed temperature.
1227 1349
 // If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
1228 1350
 // Otherwise the RED led is on. There is 1C hysteresis.
1229 1351
 //#define TEMP_STAT_LEDS
@@ -1255,28 +1377,16 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1255 1377
 //
1256 1378
 //#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
1257 1379
 
1258
-// Servo Endstops
1259
-//
1260
-// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes.
1261
-// Use M851 to set the Z probe vertical offset from the nozzle. Store that setting with M500.
1262
-//
1263
-//#define X_ENDSTOP_SERVO_NR 1
1264
-//#define Y_ENDSTOP_SERVO_NR 2
1265
-//#define Z_ENDSTOP_SERVO_NR 0
1266
-//#define SERVO_ENDSTOP_ANGLES {{0,0}, {0,0}, {70,0}} // X,Y,Z Axis Extend and Retract angles
1380
+// Delay (in microseconds) before the next move will start, to give the servo time to reach its target angle.
1381
+// 300ms is a good value but you can try less delay.
1382
+// If the servo can't reach the requested position, increase it.
1383
+#define SERVO_DELAY 300
1267 1384
 
1268 1385
 // Servo deactivation
1269 1386
 //
1270 1387
 // With this option servos are powered only during movement, then turned off to prevent jitter.
1271 1388
 //#define DEACTIVATE_SERVOS_AFTER_MOVE
1272 1389
 
1273
-#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE)
1274
-  // Delay (in microseconds) before turning the servo off. This depends on the servo speed.
1275
-  // 300ms is a good value but you can try less delay.
1276
-  // If the servo can't reach the requested position, increase it.
1277
-  #define SERVO_DEACTIVATION_DELAY 300
1278
-#endif
1279
-
1280 1390
 /**********************************************************************\
1281 1391
  * Support for a filament diameter sensor
1282 1392
  * Also allows adjustment of diameter at print time (vs  at slicing)
@@ -1307,7 +1417,4 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1307 1417
   //#define FILAMENT_LCD_DISPLAY
1308 1418
 #endif
1309 1419
 
1310
-#include "Configuration_adv.h"
1311
-#include "thermistortables.h"
1312
-
1313
-#endif //CONFIGURATION_H
1420
+#endif // CONFIGURATION_H

+ 148
- 47
Marlin/example_configurations/delta/biv2.5/Configuration_adv.h Parādīt failu

@@ -33,7 +33,18 @@
33 33
 #ifndef CONFIGURATION_ADV_H
34 34
 #define CONFIGURATION_ADV_H
35 35
 
36
-#include "Conditionals.h"
36
+/**
37
+ *
38
+ *  ***********************************
39
+ *  **  ATTENTION TO ALL DEVELOPERS  **
40
+ *  ***********************************
41
+ *
42
+ * You must increment this version number for every significant change such as,
43
+ * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option.
44
+ *
45
+ * Note: Update also Version.h !
46
+ */
47
+#define CONFIGURATION_ADV_H_VERSION 010100
37 48
 
38 49
 // @section temperature
39 50
 
@@ -102,8 +113,8 @@
102 113
 #if ENABLED(PIDTEMP)
103 114
   // this adds an experimental additional term to the heating power, proportional to the extrusion speed.
104 115
   // if Kc is chosen well, the additional required power due to increased melting should be compensated.
105
-  #define PID_ADD_EXTRUSION_RATE
106
-  #if ENABLED(PID_ADD_EXTRUSION_RATE)
116
+  //#define PID_EXTRUSION_SCALING
117
+  #if ENABLED(PID_EXTRUSION_SCALING)
107 118
     #define DEFAULT_Kc (100) //heating power=Kc*(e_speed)
108 119
     #define LPQ_MAX_LEN 50
109 120
   #endif
@@ -128,15 +139,42 @@
128 139
 //The M105 command return, besides traditional information, the ADC value read from temperature sensors.
129 140
 //#define SHOW_TEMP_ADC_VALUES
130 141
 
142
+/**
143
+ * High Temperature Thermistor Support
144
+ *
145
+ * Thermistors able to support high temperature tend to have a hard time getting
146
+ * good readings at room and lower temperatures. This means HEATER_X_RAW_LO_TEMP
147
+ * will probably be caught when the heating element first turns on during the
148
+ * preheating process, which will trigger a min_temp_error as a safety measure
149
+ * and force stop everything.
150
+ * To circumvent this limitation, we allow for a preheat time (during which,
151
+ * min_temp_error won't be triggered) and add a min_temp buffer to handle
152
+ * aberrant readings.
153
+ *
154
+ * If you want to enable this feature for your hotend thermistor(s)
155
+ * uncomment and set values > 0 in the constants below
156
+ */
157
+
158
+// The number of consecutive low temperature errors that can occur
159
+// before a min_temp_error is triggered. (Shouldn't be more than 10.)
160
+//#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 0
161
+
162
+// The number of milliseconds a hotend will preheat before starting to check
163
+// the temperature. This value should NOT be set to the time it takes the
164
+// hot end to reach the target temperature, but the time it takes to reach
165
+// the minimum temperature your thermistor can read. The lower the better/safer.
166
+// This shouldn't need to be more than 30 seconds (30000)
167
+//#define MILLISECONDS_PREHEAT_TIME 0
168
+
131 169
 // @section extruder
132 170
 
133 171
 //  extruder run-out prevention.
134 172
 //if the machine is idle, and the temperature over MINTEMP, every couple of SECONDS some filament is extruded
135 173
 //#define EXTRUDER_RUNOUT_PREVENT
136 174
 #define EXTRUDER_RUNOUT_MINTEMP 190
137
-#define EXTRUDER_RUNOUT_SECONDS 30.
138
-#define EXTRUDER_RUNOUT_ESTEPS 14. //mm filament
139
-#define EXTRUDER_RUNOUT_SPEED 1500.  //extrusion speed
175
+#define EXTRUDER_RUNOUT_SECONDS 30
176
+#define EXTRUDER_RUNOUT_ESTEPS 14   // mm filament
177
+#define EXTRUDER_RUNOUT_SPEED 1500  // extrusion speed
140 178
 #define EXTRUDER_RUNOUT_EXTRUDE 100
141 179
 
142 180
 // @section temperature
@@ -177,24 +215,42 @@
177 215
 #define EXTRUDER_AUTO_FAN_TEMPERATURE 50
178 216
 #define EXTRUDER_AUTO_FAN_SPEED   255  // == full speed
179 217
 
180
-
181 218
 //===========================================================================
182
-//=============================Mechanical Settings===========================
219
+//============================ Mechanical Settings ==========================
183 220
 //===========================================================================
184 221
 
185 222
 // @section homing
186 223
 
187
-#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing
224
+// If you want endstops to stay on (by default) even when not homing
225
+// enable this option. Override at any time with M120, M121.
226
+//#define ENDSTOPS_ALWAYS_ON_DEFAULT
188 227
 
189 228
 // @section extras
190 229
 
191 230
 //#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
192 231
 
232
+// Dual X Steppers
233
+// Uncomment this option to drive two X axis motors.
234
+// The next unused E driver will be assigned to the second X stepper.
235
+//#define X_DUAL_STEPPER_DRIVERS
236
+#if ENABLED(X_DUAL_STEPPER_DRIVERS)
237
+  // Set true if the two X motors need to rotate in opposite directions
238
+  #define INVERT_X2_VS_X_DIR true
239
+#endif
240
+
241
+
242
+// Dual Y Steppers
243
+// Uncomment this option to drive two Y axis motors.
244
+// The next unused E driver will be assigned to the second Y stepper.
245
+//#define Y_DUAL_STEPPER_DRIVERS
246
+#if ENABLED(Y_DUAL_STEPPER_DRIVERS)
247
+  // Set true if the two Y motors need to rotate in opposite directions
248
+  #define INVERT_Y2_VS_Y_DIR true
249
+#endif
250
+
193 251
 // A single Z stepper driver is usually used to drive 2 stepper motors.
194
-// Uncomment this define to utilize a separate stepper driver for each Z axis motor.
195
-// Only a few motherboards support this, like RAMPS, which have dual extruder support (the 2nd, often unused, extruder driver is used
196
-// to control the 2nd Z axis stepper motor). The pins are currently only defined for a RAMPS motherboards.
197
-// On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder.
252
+// Uncomment this option to use a separate stepper driver for each Z axis motor.
253
+// The next unused E driver will be assigned to the second Z stepper.
198 254
 //#define Z_DUAL_STEPPER_DRIVERS
199 255
 
200 256
 #if ENABLED(Z_DUAL_STEPPER_DRIVERS)
@@ -216,14 +272,6 @@
216 272
 
217 273
 #endif // Z_DUAL_STEPPER_DRIVERS
218 274
 
219
-// Same again but for Y Axis.
220
-//#define Y_DUAL_STEPPER_DRIVERS
221
-
222
-#if ENABLED(Y_DUAL_STEPPER_DRIVERS)
223
-  // Define if the two Y drives need to rotate in opposite directions
224
-  #define INVERT_Y2_VS_Y_DIR true
225
-#endif
226
-
227 275
 // Enable this for dual x-carriage printers.
228 276
 // A dual x-carriage design has the advantage that the inactive extruder can be parked which
229 277
 // prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
@@ -237,7 +285,7 @@
237 285
   #define X2_MAX_POS 353    // set maximum to the distance between toolheads when both heads are homed
238 286
   #define X2_HOME_DIR 1     // the second X-carriage always homes to the maximum endstop position
239 287
   #define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position
240
-      // However: In this mode the EXTRUDER_OFFSET_X value for the second extruder provides a software
288
+      // However: In this mode the HOTEND_OFFSET_X value for the second extruder provides a software
241 289
       // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops
242 290
       // without modifying the firmware (through the "M218 T1 X???" command).
243 291
       // Remember: you should set the second extruder x-offset to 0 in your slicer.
@@ -279,7 +327,10 @@
279 327
 
280 328
 #define AXIS_RELATIVE_MODES {false, false, false, false}
281 329
 
282
-//By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
330
+// Allow duplication mode with a basic dual-nozzle extruder
331
+//#define DUAL_NOZZLE_DUPLICATION_MODE
332
+
333
+// By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
283 334
 #define INVERT_X_STEP_PIN false
284 335
 #define INVERT_Y_STEP_PIN false
285 336
 #define INVERT_Z_STEP_PIN false
@@ -353,6 +404,9 @@
353 404
 
354 405
 // @section lcd
355 406
 
407
+// Include a page of printer information in the LCD Main Menu
408
+//#define LCD_INFO_MENU
409
+
356 410
 #if ENABLED(SDSUPPORT)
357 411
 
358 412
   // Some RAMPS and other boards don't detect when an SD card is inserted. You can work
@@ -390,7 +444,6 @@
390 444
   // This option allows you to abort SD printing when any endstop is triggered.
391 445
   // This feature must be enabled with "M540 S1" or from the LCD menu.
392 446
   // To have any effect, endstops must be enabled during SD printing.
393
-  // With ENDSTOPS_ONLY_FOR_HOMING you must send "M120" to enable endstops.
394 447
   //#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED
395 448
 
396 449
 #endif // SDSUPPORT
@@ -406,9 +459,10 @@
406 459
   //#define USE_SMALL_INFOFONT
407 460
 #endif // DOGLCD
408 461
 
409
-// @section more
462
+// @section safety
410 463
 
411
-// The hardware watchdog should reset the microcontroller disabling all outputs, in case the firmware gets stuck and doesn't do temperature regulation.
464
+// The hardware watchdog should reset the microcontroller disabling all outputs,
465
+// in case the firmware gets stuck and doesn't do temperature regulation.
412 466
 #define USE_WATCHDOG
413 467
 
414 468
 #if ENABLED(USE_WATCHDOG)
@@ -447,6 +501,27 @@
447 501
   #define D_FILAMENT 2.85
448 502
 #endif
449 503
 
504
+// Implementation of a linear pressure control
505
+// Assumption: advance = k * (delta velocity)
506
+// K=0 means advance disabled. A good value for a gregs wade extruder will be around K=75
507
+//#define LIN_ADVANCE
508
+
509
+#if ENABLED(LIN_ADVANCE)
510
+  #define LIN_ADVANCE_K 75
511
+#endif
512
+
513
+// @section leveling
514
+
515
+// Default mesh area is an area with an inset margin on the print area.
516
+// Below are the macros that are used to define the borders for the mesh area,
517
+// made available here for specialized needs, ie dual extruder setup.
518
+#if ENABLED(MESH_BED_LEVELING)
519
+  #define MESH_MIN_X (X_MIN_POS + MESH_INSET)
520
+  #define MESH_MAX_X (X_MAX_POS - (MESH_INSET))
521
+  #define MESH_MIN_Y (Y_MIN_POS + MESH_INSET)
522
+  #define MESH_MAX_Y (Y_MAX_POS - (MESH_INSET))
523
+#endif
524
+
450 525
 // @section extras
451 526
 
452 527
 // Arc interpretation settings:
@@ -478,12 +553,27 @@ const unsigned int dropsegments = 5; //everything with less than this number of
478 553
   #define BLOCK_BUFFER_SIZE 16 // maximize block buffer
479 554
 #endif
480 555
 
481
-// @section more
556
+// @section serial
482 557
 
483
-//The ASCII buffer for receiving from the serial:
558
+// The ASCII buffer for serial input
484 559
 #define MAX_CMD_SIZE 96
485 560
 #define BUFSIZE 4
486 561
 
562
+// Transfer Buffer Size
563
+// To save 386 bytes of PROGMEM (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0.
564
+// To buffer a simple "ok" you need 4 bytes.
565
+// For ADVANCED_OK (M105) you need 32 bytes.
566
+// For debug-echo: 128 bytes for the optimal speed.
567
+// Other output doesn't need to be that speedy.
568
+// :[0,2,4,8,16,32,64,128,256]
569
+#define TX_BUFFER_SIZE 0
570
+
571
+// Enable an emergency-command parser to intercept certain commands as they
572
+// enter the serial receive buffer, so they cannot be blocked.
573
+// Currently handles M108, M112, M410
574
+// Does not work on boards using AT90USB (USBCON) processors!
575
+//#define EMERGENCY_PARSER
576
+
487 577
 // Bad Serial-connections can miss a received command by sending an 'ok'
488 578
 // Therefore some clients abort after 30 seconds in a timeout.
489 579
 // Some other clients start sending commands while receiving a 'wait'.
@@ -515,16 +605,30 @@ const unsigned int dropsegments = 5; //everything with less than this number of
515 605
 
516 606
 // Add support for experimental filament exchange support M600; requires display
517 607
 #if ENABLED(ULTIPANEL)
518
-  //#define FILAMENTCHANGEENABLE
519
-  #if ENABLED(FILAMENTCHANGEENABLE)
520
-    #define FILAMENTCHANGE_XPOS 3
521
-    #define FILAMENTCHANGE_YPOS 3
522
-    #define FILAMENTCHANGE_ZADD 10
523
-    #define FILAMENTCHANGE_FIRSTRETRACT -2
524
-    #define FILAMENTCHANGE_FINALRETRACT -100
525
-    #define AUTO_FILAMENT_CHANGE                //This extrude filament until you press the button on LCD
526
-    #define AUTO_FILAMENT_CHANGE_LENGTH 0.04    //Extrusion length on automatic extrusion loop
527
-    #define AUTO_FILAMENT_CHANGE_FEEDRATE 300   //Extrusion feedrate (mm/min) on automatic extrusion loop
608
+  // #define FILAMENT_CHANGE_FEATURE             // Enable filament exchange menu and M600 g-code (used for runout sensor too)
609
+  #if ENABLED(FILAMENT_CHANGE_FEATURE)
610
+    #define FILAMENT_CHANGE_X_POS 3             // X position of hotend
611
+    #define FILAMENT_CHANGE_Y_POS 3             // Y position of hotend
612
+    #define FILAMENT_CHANGE_Z_ADD 10            // Z addition of hotend (lift)
613
+    #define FILAMENT_CHANGE_XY_FEEDRATE 100     // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
614
+    #define FILAMENT_CHANGE_Z_FEEDRATE 5        // Z axis feedrate in mm/s (not used for delta printers)
615
+    #define FILAMENT_CHANGE_RETRACT_LENGTH 2    // Initial retract in mm
616
+                                                // It is a short retract used immediately after print interrupt before move to filament exchange position
617
+    #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
618
+    #define FILAMENT_CHANGE_UNLOAD_LENGTH 100   // Unload filament length from hotend in mm
619
+                                                // Longer length for bowden printers to unload filament from whole bowden tube,
620
+                                                // shorter lenght for printers without bowden to unload filament from extruder only,
621
+                                                // 0 to disable unloading for manual unloading
622
+    #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10  // Unload filament feedrate in mm/s - filament unloading can be fast
623
+    #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
624
+                                                // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
625
+                                                // Short or zero length for printers without bowden where loading is not used
626
+    #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
627
+    #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
628
+                                                // 0 to disable for manual extrusion
629
+                                                // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
630
+                                                // or until outcoming filament color is not clear for filament color change
631
+    #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
528 632
   #endif
529 633
 #endif
530 634
 
@@ -670,9 +774,9 @@ const unsigned int dropsegments = 5; //everything with less than this number of
670 774
  * devices on the bus.
671 775
  *
672 776
  * ; Example #1
673
- * ; This macro send the string "Marlin" to the slave device with address 0x63
777
+ * ; This macro send the string "Marlin" to the slave device with address 0x63 (99)
674 778
  * ; It uses multiple M155 commands with one B<base 10> arg
675
- * M155 A63  ; Target slave address
779
+ * M155 A99  ; Target slave address
676 780
  * M155 B77  ; M
677 781
  * M155 B97  ; a
678 782
  * M155 B114 ; r
@@ -682,19 +786,16 @@ const unsigned int dropsegments = 5; //everything with less than this number of
682 786
  * M155 S1   ; Send the current buffer
683 787
  *
684 788
  * ; Example #2
685
- * ; Request 6 bytes from slave device with address 0x63
686
- * M156 A63 B5
789
+ * ; Request 6 bytes from slave device with address 0x63 (99)
790
+ * M156 A99 B5
687 791
  *
688 792
  * ; Example #3
689 793
  * ; Example serial output of a M156 request
690
- * echo:i2c-reply: from:63 bytes:5 data:hello
794
+ * echo:i2c-reply: from:99 bytes:5 data:hello
691 795
  */
692 796
 
693 797
 // @section i2cbus
694 798
 
695 799
 //#define EXPERIMENTAL_I2CBUS
696 800
 
697
-#include "Conditionals.h"
698
-#include "SanityCheck.h"
699
-
700
-#endif //CONFIGURATION_ADV_H
801
+#endif // CONFIGURATION_ADV_H

+ 330
- 229
Marlin/example_configurations/delta/generic/Configuration.h Parādīt failu

@@ -38,8 +38,18 @@
38 38
 #ifndef CONFIGURATION_H
39 39
 #define CONFIGURATION_H
40 40
 
41
-#include "boards.h"
42
-#include "macros.h"
41
+/**
42
+ *
43
+ *  ***********************************
44
+ *  **  ATTENTION TO ALL DEVELOPERS  **
45
+ *  ***********************************
46
+ *
47
+ * You must increment this version number for every significant change such as,
48
+ * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option.
49
+ *
50
+ * Note: Update also Version.h !
51
+ */
52
+#define CONFIGURATION_H_VERSION 010100
43 53
 
44 54
 //===========================================================================
45 55
 //============================= Getting Started =============================
@@ -73,20 +83,26 @@
73 83
 
74 84
 // @section info
75 85
 
76
-#if ENABLED(USE_AUTOMATIC_VERSIONING)
77
-  #include "_Version.h"
78
-#else
79
-  #include "Version.h"
80
-#endif
81
-
82 86
 // User-specified version info of this build to display in [Pronterface, etc] terminal window during
83 87
 // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
84 88
 // build by the user have been successfully uploaded into firmware.
85 89
 #define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes.
86 90
 #define SHOW_BOOTSCREEN
87
-#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during bootup in line 1
88
-//#define STRING_SPLASH_LINE2 STRING_DISTRIBUTION_DATE // will be shown during bootup in line 2
91
+#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during boot in line 1
92
+#define STRING_SPLASH_LINE2 WEBSITE_URL         // will be shown during boot in line 2
89 93
 
94
+//
95
+// *** VENDORS PLEASE READ *****************************************************
96
+//
97
+// Marlin now allow you to have a vendor boot image to be displayed on machine
98
+// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your
99
+// custom boot image and them the default Marlin boot image is shown.
100
+//
101
+// We suggest for you to take advantage of this new feature and keep the Marlin
102
+// boot image unmodified. For an example have a look at the bq Hephestos 2
103
+// example configuration folder.
104
+//
105
+//#define SHOW_CUSTOM_BOOTSCREEN
90 106
 // @section machine
91 107
 
92 108
 // SERIAL_PORT selects which serial port should be used for communication with the host.
@@ -123,17 +139,40 @@
123 139
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
124 140
 //#define SINGLENOZZLE
125 141
 
142
+// A dual extruder that uses a single stepper motor
143
+// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z
144
+//#define SWITCHING_EXTRUDER
145
+#if ENABLED(SWITCHING_EXTRUDER)
146
+  #define SWITCHING_EXTRUDER_SERVO_NR 0
147
+  #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1
148
+  //#define HOTEND_OFFSET_Z {0.0, 0.0}
149
+#endif
150
+
151
+/**
152
+ * "Mixing Extruder"
153
+ *   - Adds a new code, M165, to set the current mix factors.
154
+ *   - Extends the stepping routines to move multiple steppers in proportion to the mix.
155
+ *   - Optional support for Repetier Host M163, M164, and virtual extruder.
156
+ *   - This implementation supports only a single extruder.
157
+ *   - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
158
+ */
159
+//#define MIXING_EXTRUDER
160
+#if ENABLED(MIXING_EXTRUDER)
161
+  #define MIXING_STEPPERS 2        // Number of steppers in your mixing extruder
162
+  #define MIXING_VIRTUAL_TOOLS 16  // Use the Virtual Tool method with M163 and M164
163
+  //#define DIRECT_MIXING_IN_G1    // Allow ABCDHI mix factors in G1 movement commands
164
+#endif
165
+
126 166
 // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
127 167
 // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
128 168
 // For the other hotends it is their distance from the extruder 0 hotend.
129
-//#define EXTRUDER_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
130
-//#define EXTRUDER_OFFSET_Y {0.0, 5.00}  // (in mm) for each extruder, offset of the hotend on the Y axis
169
+//#define HOTEND_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
170
+//#define HOTEND_OFFSET_Y {0.0, 5.00}  // (in mm) for each extruder, offset of the hotend on the Y axis
131 171
 
132 172
 //// The following define selects which power supply you have. Please choose the one that matches your setup
133 173
 // 1 = ATX
134 174
 // 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC)
135 175
 // :{1:'ATX',2:'X-Box 360'}
136
-
137 176
 #define POWER_SUPPLY 1
138 177
 
139 178
 // Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it.
@@ -168,6 +207,7 @@
168 207
 // 13 is 100k Hisens 3950  1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE"
169 208
 // 20 is the PT100 circuit found in the Ultimainboard V2.x
170 209
 // 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950
210
+// 66 is 4.7M High Temperature thermistor from Dyze Design
171 211
 // 70 is the 100K thermistor found in the bq Hephestos 2
172 212
 //
173 213
 //    1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k
@@ -184,9 +224,9 @@
184 224
 //     Use it for Testing or Development purposes. NEVER for production machine.
185 225
 //#define DUMMY_THERMISTOR_998_VALUE 25
186 226
 //#define DUMMY_THERMISTOR_999_VALUE 100
187
-// :{ '0': "Not used", '4': "10k !! do not use for a hotend. Bad resolution at high temp. !!", '1': "100k / 4.7k - EPCOS", '51': "100k / 1k - EPCOS", '6': "100k / 4.7k EPCOS - Not as accurate as Table 1", '5': "100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '7': "100k / 4.7k Honeywell 135-104LAG-J01", '71': "100k / 4.7k Honeywell 135-104LAF-J01", '8': "100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT", '9': "100k / 4.7k GE Sensing AL03006-58.2K-97-G1", '10': "100k / 4.7k RS 198-961", '11': "100k / 4.7k beta 3950 1%", '12': "100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)", '13': "100k Hisens 3950  1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'", '60': "100k Maker's Tool Works Kapton Bed Thermistor beta=3950", '55': "100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '2': "200k / 4.7k - ATC Semitec 204GT-2", '52': "200k / 1k - ATC Semitec 204GT-2", '-3': "Thermocouple + MAX31855 (only for sensor 0)", '-2': "Thermocouple + MAX6675 (only for sensor 0)", '-1': "Thermocouple + AD595", '3': "Mendel-parts / 4.7k", '1047': "Pt1000 / 4.7k", '1010': "Pt1000 / 1k (non standard)", '20': "PT100 (Ultimainboard V2.x)", '147': "Pt100 / 4.7k", '110': "Pt100 / 1k (non-standard)", '998': "Dummy 1", '999': "Dummy 2" }
227
+// :{ '0': "Not used",'1':"100k / 4.7k - EPCOS",'2':"200k / 4.7k - ATC Semitec 204GT-2",'3':"Mendel-parts / 4.7k",'4':"10k !! do not use for a hotend. Bad resolution at high temp. !!",'5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'6':"100k / 4.7k EPCOS - Not as accurate as Table 1",'7':"100k / 4.7k Honeywell 135-104LAG-J01",'8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT",'9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1",'10':"100k / 4.7k RS 198-961",'11':"100k / 4.7k beta 3950 1%",'12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)",'13':"100k Hisens 3950  1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'",'20':"PT100 (Ultimainboard V2.x)",'51':"100k / 1k - EPCOS",'52':"200k / 1k - ATC Semitec 204GT-2",'55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950",'66':"Dyze Design 4.7M High Temperature thermistor",'70':"the 100K thermistor found in the bq Hephestos 2",'71':"100k / 4.7k Honeywell 135-104LAF-J01",'147':"Pt100 / 4.7k",'1047':"Pt1000 / 4.7k",'110':"Pt100 / 1k (non-standard)",'1010':"Pt1000 / 1k (non standard)",'-3':"Thermocouple + MAX31855 (only for sensor 0)",'-2':"Thermocouple + MAX6675 (only for sensor 0)",'-1':"Thermocouple + AD595",'998':"Dummy 1",'999':"Dummy 2" }
188 228
 #define TEMP_SENSOR_0 -1
189
-#define TEMP_SENSOR_1 -1
229
+#define TEMP_SENSOR_1 0
190 230
 #define TEMP_SENSOR_2 0
191 231
 #define TEMP_SENSOR_3 0
192 232
 #define TEMP_SENSOR_BED 0
@@ -223,10 +263,6 @@
223 263
 #define HEATER_3_MAXTEMP 275
224 264
 #define BED_MAXTEMP 150
225 265
 
226
-// If you want the M105 heater power reported in watts, define the BED_WATTS, and (shared for all extruders) EXTRUDER_WATTS
227
-//#define EXTRUDER_WATTS (12.0*12.0/6.7) // P=U^2/R
228
-//#define BED_WATTS (12.0*12.0/1.1)      // P=U^2/R
229
-
230 266
 //===========================================================================
231 267
 //============================= PID Settings ================================
232 268
 //===========================================================================
@@ -241,8 +277,8 @@
241 277
   //#define PID_DEBUG // Sends debug data to the serial port.
242 278
   //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX
243 279
   //#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
244
-  //#define PID_PARAMS_PER_EXTRUDER // Uses separate PID parameters for each extruder (useful for mismatched extruders)
245
-                                    // Set/get with gcode: M301 E[extruder number, 0-2]
280
+  //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders)
281
+                                  // Set/get with gcode: M301 E[extruder number, 0-2]
246 282
   #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature
247 283
                                   // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max.
248 284
   #define PID_INTEGRAL_DRIVE_MAX PID_MAX  //limit for the integral term
@@ -426,18 +462,120 @@
426 462
 #endif
427 463
 
428 464
 // Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup).
429
-const bool X_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
430
-const bool Y_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
431
-const bool Z_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
432
-const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
433
-const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
434
-const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
435
-const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
465
+#define X_MIN_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
466
+#define Y_MIN_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
467
+#define Z_MIN_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
468
+#define X_MAX_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
469
+#define Y_MAX_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
470
+#define Z_MAX_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
471
+#define Z_MIN_PROBE_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
436 472
 
437 473
 //===========================================================================
438 474
 //============================= Z Probe Options =============================
439 475
 //===========================================================================
440 476
 
477
+//
478
+// Probe Type
479
+// Probes are sensors/switches that are activated / deactivated before/after use.
480
+//
481
+// Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc.
482
+// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below.
483
+//
484
+// Use M851 to set the Z probe vertical offset from the nozzle. Store with M500.
485
+//
486
+
487
+// A Fix-Mounted Probe either doesn't deploy or needs manual deployment.
488
+// For example an inductive probe, or a setup that uses the nozzle to probe.
489
+// An inductive probe must be deactivated to go below
490
+// its trigger-point if hardware endstops are active.
491
+//#define FIX_MOUNTED_PROBE
492
+
493
+// The BLTouch probe emulates a servo probe.
494
+//#define BLTOUCH
495
+
496
+// Z Servo Probe, such as an endstop switch on a rotating arm.
497
+//#define Z_ENDSTOP_SERVO_NR 0
498
+//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles
499
+
500
+// Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
501
+//#define Z_PROBE_SLED
502
+//#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.
503
+
504
+// Z Probe to nozzle (X,Y) offset, relative to (0, 0).
505
+// X and Y offsets must be integers.
506
+//
507
+// In the following example the X and Y offsets are both positive:
508
+// #define X_PROBE_OFFSET_FROM_EXTRUDER 10
509
+// #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
510
+//
511
+//    +-- BACK ---+
512
+//    |           |
513
+//  L |    (+) P  | R <-- probe (20,20)
514
+//  E |           | I
515
+//  F | (-) N (+) | G <-- nozzle (10,10)
516
+//  T |           | H
517
+//    |    (-)    | T
518
+//    |           |
519
+//    O-- FRONT --+
520
+//  (0,0)
521
+#define X_PROBE_OFFSET_FROM_EXTRUDER 0     // X offset: -left  +right  [of the nozzle]
522
+#define Y_PROBE_OFFSET_FROM_EXTRUDER -10   // Y offset: -front +behind [the nozzle]
523
+#define Z_PROBE_OFFSET_FROM_EXTRUDER -3.5  // Z offset: -below +above  [the nozzle]
524
+
525
+// X and Y axis travel speed (mm/m) between probes
526
+#define XY_PROBE_SPEED 4000
527
+// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
528
+#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
529
+// Speed for the "accurate" probe of each point
530
+#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
531
+// Use double touch for probing
532
+//#define PROBE_DOUBLE_TOUCH
533
+
534
+// Allen key retractable z-probe as seen on many Kossel delta printers - http://reprap.org/wiki/Kossel#Automatic_bed_leveling_probe
535
+// Deploys by touching z-axis belt. Retracts by pushing the probe down. Uses Z_MIN_PIN.
536
+//#define Z_PROBE_ALLEN_KEY
537
+
538
+#if ENABLED(Z_PROBE_ALLEN_KEY)
539
+  // 2 or 3 sets of coordinates for deploying and retracting the spring loaded touch probe on G29,
540
+  // if servo actuated touch probe is not defined. Uncomment as appropriate for your printer/probe.
541
+
542
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_1_X 30.0
543
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_1_Y DELTA_PRINTABLE_RADIUS
544
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_1_Z 100.0
545
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE XY_PROBE_SPEED
546
+
547
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_2_X 0.0
548
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_2_Y DELTA_PRINTABLE_RADIUS
549
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_2_Z 100.0
550
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE (XY_PROBE_SPEED)/10
551
+
552
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_3_X Z_PROBE_ALLEN_KEY_DEPLOY_2_X * 0.75
553
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_3_Y Z_PROBE_ALLEN_KEY_DEPLOY_2_Y * 0.75
554
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_3_Z Z_PROBE_ALLEN_KEY_DEPLOY_2_Z
555
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE XY_PROBE_SPEED
556
+
557
+  #define Z_PROBE_ALLEN_KEY_STOW_1_X -64.0 // Move the probe into position
558
+  #define Z_PROBE_ALLEN_KEY_STOW_1_Y 56.0
559
+  #define Z_PROBE_ALLEN_KEY_STOW_1_Z 23.0
560
+  #define Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE XY_PROBE_SPEED
561
+
562
+  #define Z_PROBE_ALLEN_KEY_STOW_2_X -64.0 // Push it down
563
+  #define Z_PROBE_ALLEN_KEY_STOW_2_Y 56.0
564
+  #define Z_PROBE_ALLEN_KEY_STOW_2_Z 3.0
565
+  #define Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE (XY_PROBE_SPEED)/10
566
+
567
+  #define Z_PROBE_ALLEN_KEY_STOW_3_X -64.0 // Move it up to clear
568
+  #define Z_PROBE_ALLEN_KEY_STOW_3_Y 56.0
569
+  #define Z_PROBE_ALLEN_KEY_STOW_3_Z 50.0
570
+  #define Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE XY_PROBE_SPEED
571
+
572
+  #define Z_PROBE_ALLEN_KEY_STOW_4_X 0.0
573
+  #define Z_PROBE_ALLEN_KEY_STOW_4_Y 0.0
574
+  #define Z_PROBE_ALLEN_KEY_STOW_4_Z Z_PROBE_ALLEN_KEY_STOW_3_Z
575
+  #define Z_PROBE_ALLEN_KEY_STOW_4_FEEDRATE XY_PROBE_SPEED
576
+
577
+#endif // Z_PROBE_ALLEN_KEY
578
+
441 579
 // Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z Probe and a Z-min-endstop on the same machine.
442 580
 // With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing.
443 581
 //
@@ -449,7 +587,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
449 587
 // To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN.
450 588
 //
451 589
 // For a servo-based Z probe, you must set up servo support below, including
452
-// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES.
590
+// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and Z_SERVO_ANGLES.
453 591
 //
454 592
 // - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin.
455 593
 // - Use 5V for powered (usu. inductive) sensors.
@@ -482,6 +620,21 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
482 620
 // If you're using the Z MIN endstop connector for your Z probe, this has no effect.
483 621
 //#define DISABLE_Z_MIN_PROBE_ENDSTOP
484 622
 
623
+// Enable Z Probe Repeatability test to see how accurate your probe is
624
+//#define Z_MIN_PROBE_REPEATABILITY_TEST
625
+
626
+//
627
+// Probe Raise options provide clearance for the probe to deploy, stow, and travel.
628
+//
629
+#define Z_PROBE_DEPLOY_HEIGHT 15 // Raise to make room for the probe to deploy / stow
630
+#define Z_PROBE_TRAVEL_HEIGHT 5  // Raise between probing points.
631
+
632
+//
633
+// For M851 give a range for adjusting the Z probe offset
634
+//
635
+#define Z_PROBE_OFFSET_RANGE_MIN -20
636
+#define Z_PROBE_OFFSET_RANGE_MAX 20
637
+
485 638
 // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
486 639
 // :{0:'Low',1:'High'}
487 640
 #define X_ENABLE_ON 0
@@ -518,8 +671,9 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
518 671
 #define INVERT_E3_DIR false
519 672
 
520 673
 // @section homing
521
-//#define MIN_Z_HEIGHT_FOR_HOMING 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
522
-                                    // Be sure you have this distance over your Z_MAX_POS in case.
674
+
675
+//#define Z_HOMING_HEIGHT 4  // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
676
+                             // Be sure you have this distance over your Z_MAX_POS in case.
523 677
 
524 678
 // ENDSTOP SETTINGS:
525 679
 // Sets direction of endstops when homing; 1=MAX, -1=MIN
@@ -549,7 +703,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
549 703
                                  // It is assumed that when logic high = filament available
550 704
                                  //                    when logic  low = filament ran out
551 705
 #if ENABLED(FILAMENT_RUNOUT_SENSOR)
552
-  const bool FIL_RUNOUT_INVERTING = true;  // Should be uncommented and true or false should assigned
706
+  const bool FIL_RUNOUT_INVERTING = false; // set to true to invert the logic of the sensor.
553 707
   #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined.
554 708
   #define FILAMENT_RUNOUT_SCRIPT "M600"
555 709
 #endif
@@ -561,10 +715,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
561 715
 //#define MESH_BED_LEVELING    // Enable mesh bed leveling.
562 716
 
563 717
 #if ENABLED(MESH_BED_LEVELING)
564
-  #define MESH_MIN_X 10
565
-  #define MESH_MAX_X (X_MAX_POS - (MESH_MIN_X))
566
-  #define MESH_MIN_Y 10
567
-  #define MESH_MAX_Y (Y_MAX_POS - (MESH_MIN_Y))
718
+  #define MESH_INSET 10        // Mesh inset margin on print area
568 719
   #define MESH_NUM_X_POINTS 3  // Don't use more than 7 points per axis, implementation limited.
569 720
   #define MESH_NUM_Y_POINTS 3
570 721
   #define MESH_HOME_SEARCH_Z 4  // Z after Home, bed somewhere below but above 0.0.
@@ -586,8 +737,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
586 737
 // @section bedlevel
587 738
 
588 739
 //#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line)
740
+
741
+// Enable this feature to get detailed logging of G28, G29, M48, etc.
742
+// Logging is off by default. Enable this logging feature with 'M111 S32'.
743
+// NOTE: Requires a huge amount of PROGMEM.
589 744
 //#define DEBUG_LEVELING_FEATURE
590
-//#define Z_MIN_PROBE_REPEATABILITY_TEST  // If not commented out, Z Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
591 745
 
592 746
 #if ENABLED(AUTO_BED_LEVELING_FEATURE)
593 747
 
@@ -634,139 +788,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
634 788
     #define ABL_PROBE_PT_3_X 170
635 789
     #define ABL_PROBE_PT_3_Y 20
636 790
 
637
-  #endif // AUTO_BED_LEVELING_GRID
638
-
639
-  // Z Probe to nozzle (X,Y) offset, relative to (0, 0).
640
-  // X and Y offsets must be integers.
641
-  //
642
-  // In the following example the X and Y offsets are both positive:
643
-  // #define X_PROBE_OFFSET_FROM_EXTRUDER 10
644
-  // #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
645
-  //
646
-  //    +-- BACK ---+
647
-  //    |           |
648
-  //  L |    (+) P  | R <-- probe (20,20)
649
-  //  E |           | I
650
-  //  F | (-) N (+) | G <-- nozzle (10,10)
651
-  //  T |           | H
652
-  //    |    (-)    | T
653
-  //    |           |
654
-  //    O-- FRONT --+
655
-  //  (0,0)
656
-  #define X_PROBE_OFFSET_FROM_EXTRUDER 0     // X offset: -left  +right  [of the nozzle]
657
-  #define Y_PROBE_OFFSET_FROM_EXTRUDER -10   // Y offset: -front +behind [the nozzle]
658
-  #define Z_PROBE_OFFSET_FROM_EXTRUDER -3.5  // Z offset: -below +above  [the nozzle]
659
-
660
-  #define XY_TRAVEL_SPEED 4000         // X and Y axis travel speed between probes, in mm/min.
661
-
662
-  #define Z_RAISE_BEFORE_PROBING 15   // How much the Z axis will be raised before traveling to the first probing point.
663
-  #define Z_RAISE_BETWEEN_PROBINGS 5  // How much the Z axis will be raised when traveling from between next probing points
664
-  #define Z_RAISE_AFTER_PROBING 50    // How much the Z axis will be raised after the last probing point.
791
+  #endif // !AUTO_BED_LEVELING_GRID
665 792
 
666 793
   //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine.
667 794
                                                                              // Useful to retract a deployable Z probe.
668 795
 
669
-  // Probes are sensors/switches that need to be activated before they can be used
670
-  // and deactivated after their use.
671
-  // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE
672
-
673
-  // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER
674
-  // when the hardware endstops are active.
675
-  //#define FIX_MOUNTED_PROBE
676
-
677
-  // A Servo Probe can be defined in the servo section below.
678
-
679
-  // An Allen Key Probe is currently predefined only in the delta example configurations.
680
-
681
-  // Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
682
-  //#define Z_PROBE_SLED
683
-  //#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.
684
-
685
-  // A Mechanical Probe is any probe that either doesn't deploy or needs manual deployment
686
-  // For example any setup that uses the nozzle itself as a probe.
687
-  //#define MECHANICAL_PROBE
688
-
689
-  // Allen key retractable z-probe as seen on many Kossel delta printers - http://reprap.org/wiki/Kossel#Automatic_bed_leveling_probe
690
-  // Deploys by touching z-axis belt. Retracts by pushing the probe down. Uses Z_MIN_PIN.
691
-  //#define Z_PROBE_ALLEN_KEY
692
-
693
-  #if ENABLED(Z_PROBE_ALLEN_KEY)
694
-    // 2 or 3 sets of coordinates for deploying and retracting the spring loaded touch probe on G29,
695
-    // if servo actuated touch probe is not defined. Uncomment as appropriate for your printer/probe.
696
-
697
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_1_X 30.0
698
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_1_Y DELTA_PRINTABLE_RADIUS
699
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_1_Z 100.0
700
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE HOMING_FEEDRATE_XYZ
701
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_2_X 0.0
702
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_2_Y DELTA_PRINTABLE_RADIUS
703
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_2_Z 100.0
704
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE (HOMING_FEEDRATE_XYZ)/10
705
-
706
-    #define Z_PROBE_ALLEN_KEY_STOW_1_X -64.0 // Move the probe into position
707
-    #define Z_PROBE_ALLEN_KEY_STOW_1_Y 56.0
708
-    #define Z_PROBE_ALLEN_KEY_STOW_1_Z 23.0
709
-    #define Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE HOMING_FEEDRATE_XYZ
710
-    #define Z_PROBE_ALLEN_KEY_STOW_2_X -64.0 // Push it down
711
-    #define Z_PROBE_ALLEN_KEY_STOW_2_Y 56.0
712
-    #define Z_PROBE_ALLEN_KEY_STOW_2_Z 3.0
713
-    #define Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE (HOMING_FEEDRATE_XYZ)/10
714
-    #define Z_PROBE_ALLEN_KEY_STOW_3_X -64.0 // Move it up to clear
715
-    #define Z_PROBE_ALLEN_KEY_STOW_3_Y 56.0
716
-    #define Z_PROBE_ALLEN_KEY_STOW_3_Z 50.0
717
-    #define Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE HOMING_FEEDRATE_XYZ
718
-
719
-    // Kossel Mini
720
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_X 35.0
721
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_Y 72.0
722
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_Z 100.0
723
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE (HOMING_FEEDRATE_XYZ)/10
724
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_X 0.0
725
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_Y 0.0
726
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_Z 100.0
727
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE (HOMING_FEEDRATE_XYZ)/10
728
-
729
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_X -46.0 // Move the probe into position
730
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_Y 59.0
731
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_Z 28.0
732
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE HOMING_FEEDRATE_XYZ
733
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_X -46.0 // Move the nozzle down further to push the probe into retracted position.
734
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_Y 59.0
735
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_Z 8.0
736
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE (HOMING_FEEDRATE_XYZ)/10
737
-    //#define Z_PROBE_ALLEN_KEY_STOW_3_X -46.0 // Raise things back up slightly so we don't bump into anything
738
-    //#define Z_PROBE_ALLEN_KEY_STOW_3_Y 59.0
739
-    //#define Z_PROBE_ALLEN_KEY_STOW_3_Z 38.0
740
-    //#define Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE HOMING_FEEDRATE_XYZ
741
-
742
-    // Kossel Pro
743
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_X -105.00 // Move left but not quite so far that we'll bump the belt
744
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_Y 0.00
745
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_Z 100.0
746
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE HOMING_FEEDRATE_XYZ
747
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_X -110.00 // Move outward to position deploy pin to the left of the arm
748
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_Y -125.00
749
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_Z 100.0
750
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE HOMING_FEEDRATE_XYZ
751
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_3_X 45.00 // Move right to trigger deploy pin
752
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_3_Y -125.00
753
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_3_Z 100.0
754
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE (HOMING_FEEDRATE_XYZ)/2
755
-
756
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_X 36.00 // Line up with bed retaining clip
757
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_Y -122.00
758
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_Z 75.0
759
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE HOMING_FEEDRATE_XYZ
760
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_X 36.00 // move down to retract probe
761
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_Y -122.00
762
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_Z 25.0
763
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE (HOMING_FEEDRATE_XYZ)/2
764
-    //#define Z_PROBE_ALLEN_KEY_STOW_3_X 0.0  // return to 0,0,100
765
-    //#define Z_PROBE_ALLEN_KEY_STOW_3_Y 0.0
766
-    //#define Z_PROBE_ALLEN_KEY_STOW_3_Z 100.0
767
-    //#define Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE HOMING_FEEDRATE_XYZ
768
-  #endif
769
-
770 796
   // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing,
771 797
   // it is highly recommended you also enable Z_SAFE_HOMING below!
772 798
 
@@ -775,17 +801,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
775 801
 
776 802
 // @section homing
777 803
 
778
-// The position of the homing switches
779
-#define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used
780
-//#define BED_CENTER_AT_0_0  // If defined, the center of the bed is at (X=0, Y=0)
804
+// The center of the bed is at (X=0, Y=0)
805
+#define BED_CENTER_AT_0_0
781 806
 
782
-// Manual homing switch locations:
783
-// For deltabots this means top and center of the Cartesian print volume.
784
-#if ENABLED(MANUAL_HOME_POSITIONS)
785
-  #define MANUAL_X_HOME_POS 0
786
-  #define MANUAL_Y_HOME_POS 0
787
-  #define MANUAL_Z_HOME_POS 250 // For delta: Distance between nozzle and print surface after homing.
788
-#endif
807
+// Manually set the home position. Leave these undefined for automatic settings.
808
+// For DELTA this is the top-center of the Cartesian print volume.
809
+//#define MANUAL_X_HOME_POS 0
810
+//#define MANUAL_Y_HOME_POS 0
811
+#define MANUAL_Z_HOME_POS 250 // Distance between the nozzle to printbed after homing
789 812
 
790 813
 // Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
791 814
 //
@@ -793,7 +816,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
793 816
 //
794 817
 // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
795 818
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
796
-// - Position the Z probe in a defined XY point before Z Homing when homing all axes (G28).
819
+// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
797 820
 // - Prevent Z homing when the Z probe is outside bed area.
798 821
 //#define Z_SAFE_HOMING
799 822
 
@@ -803,16 +826,13 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
803 826
 #endif
804 827
 
805 828
 
806
-// @section movement
829
+// Delta only homes to Z
830
+#define HOMING_FEEDRATE_Z  (200*60)
807 831
 
808
-/**
809
- * MOVEMENT SETTINGS
810
- */
811
-
812
-// delta homing speeds must be the same on xyz
813
-#define HOMING_FEEDRATE_XYZ (200*60)
814
-#define HOMING_FEEDRATE_E 0
815
-#define HOMING_FEEDRATE { HOMING_FEEDRATE_XYZ, HOMING_FEEDRATE_XYZ, HOMING_FEEDRATE_XYZ, HOMING_FEEDRATE_E }
832
+//
833
+// MOVEMENT SETTINGS
834
+// @section motion
835
+//
816 836
 
817 837
 // default settings
818 838
 // delta speeds must be the same on xyz
@@ -834,18 +854,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
834 854
 //============================= Additional Features ===========================
835 855
 //=============================================================================
836 856
 
837
-// @section more
838
-
839
-// Custom M code points
840
-#define CUSTOM_M_CODES
841
-#if ENABLED(CUSTOM_M_CODES)
842
-  #if ENABLED(AUTO_BED_LEVELING_FEATURE)
843
-    #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851
844
-    #define Z_PROBE_OFFSET_RANGE_MIN -20
845
-    #define Z_PROBE_OFFSET_RANGE_MAX 20
846
-  #endif
847
-#endif
848
-
849 857
 // @section extras
850 858
 
851 859
 //
@@ -877,22 +885,107 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
877 885
 //
878 886
 //#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose
879 887
 
888
+//
889
+// G20/G21 Inch mode support
890
+//
891
+//#define INCH_MODE_SUPPORT
892
+
893
+//
894
+// M149 Set temperature units support
895
+//
896
+//#define TEMPERATURE_UNITS_SUPPORT
897
+
880 898
 // @section temperature
881 899
 
882 900
 // Preheat Constants
883
-#define PLA_PREHEAT_HOTEND_TEMP 180
884
-#define PLA_PREHEAT_HPB_TEMP 70
885
-#define PLA_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
901
+#define PREHEAT_1_TEMP_HOTEND 180
902
+#define PREHEAT_1_TEMP_BED     70
903
+#define PREHEAT_1_FAN_SPEED   255 // Value from 0 to 255
904
+
905
+#define PREHEAT_2_TEMP_HOTEND 240
906
+#define PREHEAT_2_TEMP_BED    100
907
+#define PREHEAT_2_FAN_SPEED   255 // Value from 0 to 255
908
+
909
+//
910
+// Nozzle Park -- EXPERIMENTAL
911
+//
912
+// When enabled allows the user to define a special XYZ position, inside the
913
+// machine's topology, to park the nozzle when idle or when receiving the G27
914
+// command.
915
+//
916
+// The "P" paramenter controls what is the action applied to the Z axis:
917
+//    P0: (Default) If current Z-pos is lower than Z-park then the nozzle will
918
+//        be raised to reach Z-park height.
919
+//
920
+//    P1: No matter the current Z-pos, the nozzle will be raised/lowered to
921
+//        reach Z-park height.
922
+//
923
+//    P2: The nozzle height will be raised by Z-park amount but never going over
924
+//        the machine's limit of Z_MAX_POS.
925
+//
926
+//#define NOZZLE_PARK_FEATURE
886 927
 
887
-#define ABS_PREHEAT_HOTEND_TEMP 240
888
-#define ABS_PREHEAT_HPB_TEMP 100
889
-#define ABS_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
928
+#if ENABLED(NOZZLE_PARK_FEATURE)
929
+  // Specify a park position as { X, Y, Z }
930
+  #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 }
931
+#endif
932
+
933
+//
934
+// Clean Nozzle Feature -- EXPERIMENTAL
935
+//
936
+// When enabled allows the user to send G12 to start the nozzle cleaning
937
+// process, the G-Code accepts two parameters:
938
+//   "P" for pattern selection
939
+//   "S" for defining the number of strokes/repetitions
940
+//
941
+// Available list of patterns:
942
+//   P0: This is the default pattern, this process requires a sponge type
943
+//       material at a fixed bed location, the cleaning process is based on
944
+//       "strokes" i.e. back-and-forth movements between the starting and end
945
+//       points.
946
+//
947
+//   P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T"
948
+//       defines the number of zig-zag triangles to be done. "S" defines the
949
+//       number of strokes aka one back-and-forth movement. As an example
950
+//       sending "G12 P1 S1 T3" will execute:
951
+//
952
+//          --
953
+//         |  (X0, Y1) |     /\        /\        /\     | (X1, Y1)
954
+//         |           |    /  \      /  \      /  \    |
955
+//       A |           |   /    \    /    \    /    \   |
956
+//         |           |  /      \  /      \  /      \  |
957
+//         |  (X0, Y0) | /        \/        \/        \ | (X1, Y0)
958
+//          --         +--------------------------------+
959
+//                       |________|_________|_________|
960
+//                           T1        T2        T3
961
+//
962
+// Caveats: End point Z should use the same value as Start point Z.
963
+//
964
+// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments
965
+// may change to add new functionality like different wipe patterns.
966
+//
967
+//#define NOZZLE_CLEAN_FEATURE
968
+
969
+#if ENABLED(NOZZLE_CLEAN_FEATURE)
970
+  // Number of pattern repetitions
971
+  #define NOZZLE_CLEAN_STROKES  12
972
+
973
+  // Specify positions as { X, Y, Z }
974
+  #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)}
975
+  #define NOZZLE_CLEAN_END_POINT   {100, 60, (Z_MIN_POS + 1)}
976
+
977
+  // Moves the nozzle to the initial position
978
+  #define NOZZLE_CLEAN_GOBACK
979
+#endif
890 980
 
891 981
 //
892 982
 // Print job timer
893 983
 //
894 984
 // Enable this option to automatically start and stop the
895
-// print job timer when M104 and M109 commands are received.
985
+// print job timer when M104/M109/M190 commands are received.
986
+// M104 (extruder without wait) - high temp = none, low temp = stop timer
987
+// M109 (extruder with wait) - high temp = start timer, low temp = stop timer
988
+// M190 (bed with wait) - high temp = start timer, low temp = none
896 989
 //
897 990
 // In all cases the timer can be started and stopped using
898 991
 // the following commands:
@@ -925,8 +1018,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
925 1018
 //
926 1019
 // Here you may choose the language used by Marlin on the LCD menus, the following
927 1020
 // list of languages are available:
928
-//    en, pl, fr, de, es, ru, bg, it, pt, pt_utf8, pt-br, pt-br_utf8,
929
-//    fi, an, nl, ca, eu, kana, kana_utf8, cn, cz, test
1021
+//    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
1022
+//    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
1023
+//
1024
+// :{'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','test':'TEST'}
930 1025
 //
931 1026
 #define LCD_LANGUAGE en
932 1027
 
@@ -1074,6 +1169,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1074 1169
 //#define ULTIPANEL
1075 1170
 
1076 1171
 //
1172
+// Cartesio UI
1173
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1174
+//
1175
+//#define CARTESIO_UI
1176
+
1177
+//
1077 1178
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
1078 1179
 // http://reprap.org/wiki/PanelOne
1079 1180
 //
@@ -1086,6 +1187,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1086 1187
 //#define MAKRPANEL
1087 1188
 
1088 1189
 //
1190
+// ReprapWorld Graphical LCD
1191
+// https://reprapworld.com/?products_details&products_id/1218
1192
+//
1193
+//#define REPRAPWORLD_GRAPHICAL_LCD
1194
+
1195
+//
1089 1196
 // Activate one of these if you have a Panucatt Devices
1090 1197
 // Viki 2.0 or mini Viki with Graphic LCD
1091 1198
 // http://panucatt.com
@@ -1135,7 +1242,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1135 1242
 // is pressed, a value of 10.0 means 10mm per click.
1136 1243
 //
1137 1244
 //#define REPRAPWORLD_KEYPAD
1138
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1245
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1139 1246
 
1140 1247
 //
1141 1248
 // RigidBot Panel V1.0
@@ -1196,6 +1303,15 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1196 1303
 //#define U8GLIB_SSD1306
1197 1304
 
1198 1305
 //
1306
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1307
+//
1308
+//#define SAV_3DGLCD
1309
+#if ENABLED(SAV_3DGLCD)
1310
+  //#define U8GLIB_SSD1306
1311
+  #define U8GLIB_SH1106
1312
+#endif
1313
+
1314
+//
1199 1315
 // CONTROLLER TYPE: Shift register panels
1200 1316
 //
1201 1317
 // 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH
@@ -1223,7 +1339,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1223 1339
 // at zero value, there are 128 effective control positions.
1224 1340
 #define SOFT_PWM_SCALE 0
1225 1341
 
1226
-// Temperature status LEDs that display the hotend and bet temperature.
1342
+// Temperature status LEDs that display the hotend and bed temperature.
1227 1343
 // If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
1228 1344
 // Otherwise the RED led is on. There is 1C hysteresis.
1229 1345
 //#define TEMP_STAT_LEDS
@@ -1255,28 +1371,16 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1255 1371
 //
1256 1372
 //#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
1257 1373
 
1258
-// Servo Endstops
1259
-//
1260
-// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes.
1261
-// Use M851 to set the Z probe vertical offset from the nozzle. Store that setting with M500.
1262
-//
1263
-//#define X_ENDSTOP_SERVO_NR 1
1264
-//#define Y_ENDSTOP_SERVO_NR 2
1265
-//#define Z_ENDSTOP_SERVO_NR 0
1266
-//#define SERVO_ENDSTOP_ANGLES {{0,0}, {0,0}, {70,0}} // X,Y,Z Axis Extend and Retract angles
1374
+// Delay (in microseconds) before the next move will start, to give the servo time to reach its target angle.
1375
+// 300ms is a good value but you can try less delay.
1376
+// If the servo can't reach the requested position, increase it.
1377
+#define SERVO_DELAY 300
1267 1378
 
1268 1379
 // Servo deactivation
1269 1380
 //
1270 1381
 // With this option servos are powered only during movement, then turned off to prevent jitter.
1271 1382
 //#define DEACTIVATE_SERVOS_AFTER_MOVE
1272 1383
 
1273
-#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE)
1274
-  // Delay (in microseconds) before turning the servo off. This depends on the servo speed.
1275
-  // 300ms is a good value but you can try less delay.
1276
-  // If the servo can't reach the requested position, increase it.
1277
-  #define SERVO_DEACTIVATION_DELAY 300
1278
-#endif
1279
-
1280 1384
 /**********************************************************************\
1281 1385
  * Support for a filament diameter sensor
1282 1386
  * Also allows adjustment of diameter at print time (vs  at slicing)
@@ -1307,7 +1411,4 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1307 1411
   //#define FILAMENT_LCD_DISPLAY
1308 1412
 #endif
1309 1413
 
1310
-#include "Configuration_adv.h"
1311
-#include "thermistortables.h"
1312
-
1313
-#endif //CONFIGURATION_H
1414
+#endif // CONFIGURATION_H

+ 148
- 47
Marlin/example_configurations/delta/generic/Configuration_adv.h Parādīt failu

@@ -33,7 +33,18 @@
33 33
 #ifndef CONFIGURATION_ADV_H
34 34
 #define CONFIGURATION_ADV_H
35 35
 
36
-#include "Conditionals.h"
36
+/**
37
+ *
38
+ *  ***********************************
39
+ *  **  ATTENTION TO ALL DEVELOPERS  **
40
+ *  ***********************************
41
+ *
42
+ * You must increment this version number for every significant change such as,
43
+ * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option.
44
+ *
45
+ * Note: Update also Version.h !
46
+ */
47
+#define CONFIGURATION_ADV_H_VERSION 010100
37 48
 
38 49
 // @section temperature
39 50
 
@@ -102,8 +113,8 @@
102 113
 #if ENABLED(PIDTEMP)
103 114
   // this adds an experimental additional term to the heating power, proportional to the extrusion speed.
104 115
   // if Kc is chosen well, the additional required power due to increased melting should be compensated.
105
-  #define PID_ADD_EXTRUSION_RATE
106
-  #if ENABLED(PID_ADD_EXTRUSION_RATE)
116
+  //#define PID_EXTRUSION_SCALING
117
+  #if ENABLED(PID_EXTRUSION_SCALING)
107 118
     #define DEFAULT_Kc (100) //heating power=Kc*(e_speed)
108 119
     #define LPQ_MAX_LEN 50
109 120
   #endif
@@ -128,15 +139,42 @@
128 139
 //The M105 command return, besides traditional information, the ADC value read from temperature sensors.
129 140
 //#define SHOW_TEMP_ADC_VALUES
130 141
 
142
+/**
143
+ * High Temperature Thermistor Support
144
+ *
145
+ * Thermistors able to support high temperature tend to have a hard time getting
146
+ * good readings at room and lower temperatures. This means HEATER_X_RAW_LO_TEMP
147
+ * will probably be caught when the heating element first turns on during the
148
+ * preheating process, which will trigger a min_temp_error as a safety measure
149
+ * and force stop everything.
150
+ * To circumvent this limitation, we allow for a preheat time (during which,
151
+ * min_temp_error won't be triggered) and add a min_temp buffer to handle
152
+ * aberrant readings.
153
+ *
154
+ * If you want to enable this feature for your hotend thermistor(s)
155
+ * uncomment and set values > 0 in the constants below
156
+ */
157
+
158
+// The number of consecutive low temperature errors that can occur
159
+// before a min_temp_error is triggered. (Shouldn't be more than 10.)
160
+//#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 0
161
+
162
+// The number of milliseconds a hotend will preheat before starting to check
163
+// the temperature. This value should NOT be set to the time it takes the
164
+// hot end to reach the target temperature, but the time it takes to reach
165
+// the minimum temperature your thermistor can read. The lower the better/safer.
166
+// This shouldn't need to be more than 30 seconds (30000)
167
+//#define MILLISECONDS_PREHEAT_TIME 0
168
+
131 169
 // @section extruder
132 170
 
133 171
 //  extruder run-out prevention.
134 172
 //if the machine is idle, and the temperature over MINTEMP, every couple of SECONDS some filament is extruded
135 173
 //#define EXTRUDER_RUNOUT_PREVENT
136 174
 #define EXTRUDER_RUNOUT_MINTEMP 190
137
-#define EXTRUDER_RUNOUT_SECONDS 30.
138
-#define EXTRUDER_RUNOUT_ESTEPS 14. //mm filament
139
-#define EXTRUDER_RUNOUT_SPEED 1500.  //extrusion speed
175
+#define EXTRUDER_RUNOUT_SECONDS 30
176
+#define EXTRUDER_RUNOUT_ESTEPS 14   // mm filament
177
+#define EXTRUDER_RUNOUT_SPEED 1500  // extrusion speed
140 178
 #define EXTRUDER_RUNOUT_EXTRUDE 100
141 179
 
142 180
 // @section temperature
@@ -177,24 +215,42 @@
177 215
 #define EXTRUDER_AUTO_FAN_TEMPERATURE 50
178 216
 #define EXTRUDER_AUTO_FAN_SPEED   255  // == full speed
179 217
 
180
-
181 218
 //===========================================================================
182
-//=============================Mechanical Settings===========================
219
+//============================ Mechanical Settings ==========================
183 220
 //===========================================================================
184 221
 
185 222
 // @section homing
186 223
 
187
-#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing
224
+// If you want endstops to stay on (by default) even when not homing
225
+// enable this option. Override at any time with M120, M121.
226
+//#define ENDSTOPS_ALWAYS_ON_DEFAULT
188 227
 
189 228
 // @section extras
190 229
 
191 230
 //#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
192 231
 
232
+// Dual X Steppers
233
+// Uncomment this option to drive two X axis motors.
234
+// The next unused E driver will be assigned to the second X stepper.
235
+//#define X_DUAL_STEPPER_DRIVERS
236
+#if ENABLED(X_DUAL_STEPPER_DRIVERS)
237
+  // Set true if the two X motors need to rotate in opposite directions
238
+  #define INVERT_X2_VS_X_DIR true
239
+#endif
240
+
241
+
242
+// Dual Y Steppers
243
+// Uncomment this option to drive two Y axis motors.
244
+// The next unused E driver will be assigned to the second Y stepper.
245
+//#define Y_DUAL_STEPPER_DRIVERS
246
+#if ENABLED(Y_DUAL_STEPPER_DRIVERS)
247
+  // Set true if the two Y motors need to rotate in opposite directions
248
+  #define INVERT_Y2_VS_Y_DIR true
249
+#endif
250
+
193 251
 // A single Z stepper driver is usually used to drive 2 stepper motors.
194
-// Uncomment this define to utilize a separate stepper driver for each Z axis motor.
195
-// Only a few motherboards support this, like RAMPS, which have dual extruder support (the 2nd, often unused, extruder driver is used
196
-// to control the 2nd Z axis stepper motor). The pins are currently only defined for a RAMPS motherboards.
197
-// On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder.
252
+// Uncomment this option to use a separate stepper driver for each Z axis motor.
253
+// The next unused E driver will be assigned to the second Z stepper.
198 254
 //#define Z_DUAL_STEPPER_DRIVERS
199 255
 
200 256
 #if ENABLED(Z_DUAL_STEPPER_DRIVERS)
@@ -216,14 +272,6 @@
216 272
 
217 273
 #endif // Z_DUAL_STEPPER_DRIVERS
218 274
 
219
-// Same again but for Y Axis.
220
-//#define Y_DUAL_STEPPER_DRIVERS
221
-
222
-#if ENABLED(Y_DUAL_STEPPER_DRIVERS)
223
-  // Define if the two Y drives need to rotate in opposite directions
224
-  #define INVERT_Y2_VS_Y_DIR true
225
-#endif
226
-
227 275
 // Enable this for dual x-carriage printers.
228 276
 // A dual x-carriage design has the advantage that the inactive extruder can be parked which
229 277
 // prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
@@ -237,7 +285,7 @@
237 285
   #define X2_MAX_POS 353    // set maximum to the distance between toolheads when both heads are homed
238 286
   #define X2_HOME_DIR 1     // the second X-carriage always homes to the maximum endstop position
239 287
   #define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position
240
-      // However: In this mode the EXTRUDER_OFFSET_X value for the second extruder provides a software
288
+      // However: In this mode the HOTEND_OFFSET_X value for the second extruder provides a software
241 289
       // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops
242 290
       // without modifying the firmware (through the "M218 T1 X???" command).
243 291
       // Remember: you should set the second extruder x-offset to 0 in your slicer.
@@ -279,7 +327,10 @@
279 327
 
280 328
 #define AXIS_RELATIVE_MODES {false, false, false, false}
281 329
 
282
-//By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
330
+// Allow duplication mode with a basic dual-nozzle extruder
331
+//#define DUAL_NOZZLE_DUPLICATION_MODE
332
+
333
+// By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
283 334
 #define INVERT_X_STEP_PIN false
284 335
 #define INVERT_Y_STEP_PIN false
285 336
 #define INVERT_Z_STEP_PIN false
@@ -353,6 +404,9 @@
353 404
 
354 405
 // @section lcd
355 406
 
407
+// Include a page of printer information in the LCD Main Menu
408
+//#define LCD_INFO_MENU
409
+
356 410
 #if ENABLED(SDSUPPORT)
357 411
 
358 412
   // Some RAMPS and other boards don't detect when an SD card is inserted. You can work
@@ -390,7 +444,6 @@
390 444
   // This option allows you to abort SD printing when any endstop is triggered.
391 445
   // This feature must be enabled with "M540 S1" or from the LCD menu.
392 446
   // To have any effect, endstops must be enabled during SD printing.
393
-  // With ENDSTOPS_ONLY_FOR_HOMING you must send "M120" to enable endstops.
394 447
   //#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED
395 448
 
396 449
 #endif // SDSUPPORT
@@ -406,9 +459,10 @@
406 459
   //#define USE_SMALL_INFOFONT
407 460
 #endif // DOGLCD
408 461
 
409
-// @section more
462
+// @section safety
410 463
 
411
-// The hardware watchdog should reset the microcontroller disabling all outputs, in case the firmware gets stuck and doesn't do temperature regulation.
464
+// The hardware watchdog should reset the microcontroller disabling all outputs,
465
+// in case the firmware gets stuck and doesn't do temperature regulation.
412 466
 #define USE_WATCHDOG
413 467
 
414 468
 #if ENABLED(USE_WATCHDOG)
@@ -447,6 +501,27 @@
447 501
   #define D_FILAMENT 2.85
448 502
 #endif
449 503
 
504
+// Implementation of a linear pressure control
505
+// Assumption: advance = k * (delta velocity)
506
+// K=0 means advance disabled. A good value for a gregs wade extruder will be around K=75
507
+//#define LIN_ADVANCE
508
+
509
+#if ENABLED(LIN_ADVANCE)
510
+  #define LIN_ADVANCE_K 75
511
+#endif
512
+
513
+// @section leveling
514
+
515
+// Default mesh area is an area with an inset margin on the print area.
516
+// Below are the macros that are used to define the borders for the mesh area,
517
+// made available here for specialized needs, ie dual extruder setup.
518
+#if ENABLED(MESH_BED_LEVELING)
519
+  #define MESH_MIN_X (X_MIN_POS + MESH_INSET)
520
+  #define MESH_MAX_X (X_MAX_POS - (MESH_INSET))
521
+  #define MESH_MIN_Y (Y_MIN_POS + MESH_INSET)
522
+  #define MESH_MAX_Y (Y_MAX_POS - (MESH_INSET))
523
+#endif
524
+
450 525
 // @section extras
451 526
 
452 527
 // Arc interpretation settings:
@@ -478,12 +553,27 @@ const unsigned int dropsegments = 5; //everything with less than this number of
478 553
   #define BLOCK_BUFFER_SIZE 16 // maximize block buffer
479 554
 #endif
480 555
 
481
-// @section more
556
+// @section serial
482 557
 
483
-//The ASCII buffer for receiving from the serial:
558
+// The ASCII buffer for serial input
484 559
 #define MAX_CMD_SIZE 96
485 560
 #define BUFSIZE 4
486 561
 
562
+// Transfer Buffer Size
563
+// To save 386 bytes of PROGMEM (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0.
564
+// To buffer a simple "ok" you need 4 bytes.
565
+// For ADVANCED_OK (M105) you need 32 bytes.
566
+// For debug-echo: 128 bytes for the optimal speed.
567
+// Other output doesn't need to be that speedy.
568
+// :[0,2,4,8,16,32,64,128,256]
569
+#define TX_BUFFER_SIZE 0
570
+
571
+// Enable an emergency-command parser to intercept certain commands as they
572
+// enter the serial receive buffer, so they cannot be blocked.
573
+// Currently handles M108, M112, M410
574
+// Does not work on boards using AT90USB (USBCON) processors!
575
+//#define EMERGENCY_PARSER
576
+
487 577
 // Bad Serial-connections can miss a received command by sending an 'ok'
488 578
 // Therefore some clients abort after 30 seconds in a timeout.
489 579
 // Some other clients start sending commands while receiving a 'wait'.
@@ -515,16 +605,30 @@ const unsigned int dropsegments = 5; //everything with less than this number of
515 605
 
516 606
 // Add support for experimental filament exchange support M600; requires display
517 607
 #if ENABLED(ULTIPANEL)
518
-  //#define FILAMENTCHANGEENABLE
519
-  #if ENABLED(FILAMENTCHANGEENABLE)
520
-    #define FILAMENTCHANGE_XPOS 3
521
-    #define FILAMENTCHANGE_YPOS 3
522
-    #define FILAMENTCHANGE_ZADD 10
523
-    #define FILAMENTCHANGE_FIRSTRETRACT -2
524
-    #define FILAMENTCHANGE_FINALRETRACT -100
525
-    #define AUTO_FILAMENT_CHANGE                //This extrude filament until you press the button on LCD
526
-    #define AUTO_FILAMENT_CHANGE_LENGTH 0.04    //Extrusion length on automatic extrusion loop
527
-    #define AUTO_FILAMENT_CHANGE_FEEDRATE 300   //Extrusion feedrate (mm/min) on automatic extrusion loop
608
+  // #define FILAMENT_CHANGE_FEATURE             // Enable filament exchange menu and M600 g-code (used for runout sensor too)
609
+  #if ENABLED(FILAMENT_CHANGE_FEATURE)
610
+    #define FILAMENT_CHANGE_X_POS 3             // X position of hotend
611
+    #define FILAMENT_CHANGE_Y_POS 3             // Y position of hotend
612
+    #define FILAMENT_CHANGE_Z_ADD 10            // Z addition of hotend (lift)
613
+    #define FILAMENT_CHANGE_XY_FEEDRATE 100     // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
614
+    #define FILAMENT_CHANGE_Z_FEEDRATE 5        // Z axis feedrate in mm/s (not used for delta printers)
615
+    #define FILAMENT_CHANGE_RETRACT_LENGTH 2    // Initial retract in mm
616
+                                                // It is a short retract used immediately after print interrupt before move to filament exchange position
617
+    #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
618
+    #define FILAMENT_CHANGE_UNLOAD_LENGTH 100   // Unload filament length from hotend in mm
619
+                                                // Longer length for bowden printers to unload filament from whole bowden tube,
620
+                                                // shorter lenght for printers without bowden to unload filament from extruder only,
621
+                                                // 0 to disable unloading for manual unloading
622
+    #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10  // Unload filament feedrate in mm/s - filament unloading can be fast
623
+    #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
624
+                                                // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
625
+                                                // Short or zero length for printers without bowden where loading is not used
626
+    #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
627
+    #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
628
+                                                // 0 to disable for manual extrusion
629
+                                                // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
630
+                                                // or until outcoming filament color is not clear for filament color change
631
+    #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
528 632
   #endif
529 633
 #endif
530 634
 
@@ -670,9 +774,9 @@ const unsigned int dropsegments = 5; //everything with less than this number of
670 774
  * devices on the bus.
671 775
  *
672 776
  * ; Example #1
673
- * ; This macro send the string "Marlin" to the slave device with address 0x63
777
+ * ; This macro send the string "Marlin" to the slave device with address 0x63 (99)
674 778
  * ; It uses multiple M155 commands with one B<base 10> arg
675
- * M155 A63  ; Target slave address
779
+ * M155 A99  ; Target slave address
676 780
  * M155 B77  ; M
677 781
  * M155 B97  ; a
678 782
  * M155 B114 ; r
@@ -682,19 +786,16 @@ const unsigned int dropsegments = 5; //everything with less than this number of
682 786
  * M155 S1   ; Send the current buffer
683 787
  *
684 788
  * ; Example #2
685
- * ; Request 6 bytes from slave device with address 0x63
686
- * M156 A63 B5
789
+ * ; Request 6 bytes from slave device with address 0x63 (99)
790
+ * M156 A99 B5
687 791
  *
688 792
  * ; Example #3
689 793
  * ; Example serial output of a M156 request
690
- * echo:i2c-reply: from:63 bytes:5 data:hello
794
+ * echo:i2c-reply: from:99 bytes:5 data:hello
691 795
  */
692 796
 
693 797
 // @section i2cbus
694 798
 
695 799
 //#define EXPERIMENTAL_I2CBUS
696 800
 
697
-#include "Conditionals.h"
698
-#include "SanityCheck.h"
699
-
700
-#endif //CONFIGURATION_ADV_H
801
+#endif // CONFIGURATION_ADV_H

+ 333
- 233
Marlin/example_configurations/delta/kossel_mini/Configuration.h Parādīt failu

@@ -38,8 +38,18 @@
38 38
 #ifndef CONFIGURATION_H
39 39
 #define CONFIGURATION_H
40 40
 
41
-#include "boards.h"
42
-#include "macros.h"
41
+/**
42
+ *
43
+ *  ***********************************
44
+ *  **  ATTENTION TO ALL DEVELOPERS  **
45
+ *  ***********************************
46
+ *
47
+ * You must increment this version number for every significant change such as,
48
+ * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option.
49
+ *
50
+ * Note: Update also Version.h !
51
+ */
52
+#define CONFIGURATION_H_VERSION 010100
43 53
 
44 54
 //===========================================================================
45 55
 //============================= Getting Started =============================
@@ -73,20 +83,26 @@
73 83
 
74 84
 // @section info
75 85
 
76
-#if ENABLED(USE_AUTOMATIC_VERSIONING)
77
-  #include "_Version.h"
78
-#else
79
-  #include "Version.h"
80
-#endif
81
-
82 86
 // User-specified version info of this build to display in [Pronterface, etc] terminal window during
83 87
 // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
84 88
 // build by the user have been successfully uploaded into firmware.
85 89
 #define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes.
86 90
 #define SHOW_BOOTSCREEN
87
-#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during bootup in line 1
88
-//#define STRING_SPLASH_LINE2 STRING_DISTRIBUTION_DATE // will be shown during bootup in line 2
91
+#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during boot in line 1
92
+#define STRING_SPLASH_LINE2 WEBSITE_URL         // will be shown during boot in line 2
89 93
 
94
+//
95
+// *** VENDORS PLEASE READ *****************************************************
96
+//
97
+// Marlin now allow you to have a vendor boot image to be displayed on machine
98
+// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your
99
+// custom boot image and them the default Marlin boot image is shown.
100
+//
101
+// We suggest for you to take advantage of this new feature and keep the Marlin
102
+// boot image unmodified. For an example have a look at the bq Hephestos 2
103
+// example configuration folder.
104
+//
105
+//#define SHOW_CUSTOM_BOOTSCREEN
90 106
 // @section machine
91 107
 
92 108
 // SERIAL_PORT selects which serial port should be used for communication with the host.
@@ -123,17 +139,40 @@
123 139
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
124 140
 //#define SINGLENOZZLE
125 141
 
142
+// A dual extruder that uses a single stepper motor
143
+// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z
144
+//#define SWITCHING_EXTRUDER
145
+#if ENABLED(SWITCHING_EXTRUDER)
146
+  #define SWITCHING_EXTRUDER_SERVO_NR 0
147
+  #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1
148
+  //#define HOTEND_OFFSET_Z {0.0, 0.0}
149
+#endif
150
+
151
+/**
152
+ * "Mixing Extruder"
153
+ *   - Adds a new code, M165, to set the current mix factors.
154
+ *   - Extends the stepping routines to move multiple steppers in proportion to the mix.
155
+ *   - Optional support for Repetier Host M163, M164, and virtual extruder.
156
+ *   - This implementation supports only a single extruder.
157
+ *   - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
158
+ */
159
+//#define MIXING_EXTRUDER
160
+#if ENABLED(MIXING_EXTRUDER)
161
+  #define MIXING_STEPPERS 2        // Number of steppers in your mixing extruder
162
+  #define MIXING_VIRTUAL_TOOLS 16  // Use the Virtual Tool method with M163 and M164
163
+  //#define DIRECT_MIXING_IN_G1    // Allow ABCDHI mix factors in G1 movement commands
164
+#endif
165
+
126 166
 // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
127 167
 // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
128 168
 // For the other hotends it is their distance from the extruder 0 hotend.
129
-//#define EXTRUDER_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
130
-//#define EXTRUDER_OFFSET_Y {0.0, 5.00}  // (in mm) for each extruder, offset of the hotend on the Y axis
169
+//#define HOTEND_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
170
+//#define HOTEND_OFFSET_Y {0.0, 5.00}  // (in mm) for each extruder, offset of the hotend on the Y axis
131 171
 
132 172
 //// The following define selects which power supply you have. Please choose the one that matches your setup
133 173
 // 1 = ATX
134 174
 // 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC)
135 175
 // :{1:'ATX',2:'X-Box 360'}
136
-
137 176
 #define POWER_SUPPLY 1
138 177
 
139 178
 // Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it.
@@ -168,6 +207,7 @@
168 207
 // 13 is 100k Hisens 3950  1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE"
169 208
 // 20 is the PT100 circuit found in the Ultimainboard V2.x
170 209
 // 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950
210
+// 66 is 4.7M High Temperature thermistor from Dyze Design
171 211
 // 70 is the 100K thermistor found in the bq Hephestos 2
172 212
 //
173 213
 //    1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k
@@ -184,7 +224,7 @@
184 224
 //     Use it for Testing or Development purposes. NEVER for production machine.
185 225
 //#define DUMMY_THERMISTOR_998_VALUE 25
186 226
 //#define DUMMY_THERMISTOR_999_VALUE 100
187
-// :{ '0': "Not used", '4': "10k !! do not use for a hotend. Bad resolution at high temp. !!", '1': "100k / 4.7k - EPCOS", '51': "100k / 1k - EPCOS", '6': "100k / 4.7k EPCOS - Not as accurate as Table 1", '5': "100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '7': "100k / 4.7k Honeywell 135-104LAG-J01", '71': "100k / 4.7k Honeywell 135-104LAF-J01", '8': "100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT", '9': "100k / 4.7k GE Sensing AL03006-58.2K-97-G1", '10': "100k / 4.7k RS 198-961", '11': "100k / 4.7k beta 3950 1%", '12': "100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)", '13': "100k Hisens 3950  1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'", '60': "100k Maker's Tool Works Kapton Bed Thermistor beta=3950", '55': "100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '2': "200k / 4.7k - ATC Semitec 204GT-2", '52': "200k / 1k - ATC Semitec 204GT-2", '-3': "Thermocouple + MAX31855 (only for sensor 0)", '-2': "Thermocouple + MAX6675 (only for sensor 0)", '-1': "Thermocouple + AD595", '3': "Mendel-parts / 4.7k", '1047': "Pt1000 / 4.7k", '1010': "Pt1000 / 1k (non standard)", '20': "PT100 (Ultimainboard V2.x)", '147': "Pt100 / 4.7k", '110': "Pt100 / 1k (non-standard)", '998': "Dummy 1", '999': "Dummy 2" }
227
+// :{ '0': "Not used",'1':"100k / 4.7k - EPCOS",'2':"200k / 4.7k - ATC Semitec 204GT-2",'3':"Mendel-parts / 4.7k",'4':"10k !! do not use for a hotend. Bad resolution at high temp. !!",'5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'6':"100k / 4.7k EPCOS - Not as accurate as Table 1",'7':"100k / 4.7k Honeywell 135-104LAG-J01",'8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT",'9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1",'10':"100k / 4.7k RS 198-961",'11':"100k / 4.7k beta 3950 1%",'12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)",'13':"100k Hisens 3950  1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'",'20':"PT100 (Ultimainboard V2.x)",'51':"100k / 1k - EPCOS",'52':"200k / 1k - ATC Semitec 204GT-2",'55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950",'66':"Dyze Design 4.7M High Temperature thermistor",'70':"the 100K thermistor found in the bq Hephestos 2",'71':"100k / 4.7k Honeywell 135-104LAF-J01",'147':"Pt100 / 4.7k",'1047':"Pt1000 / 4.7k",'110':"Pt100 / 1k (non-standard)",'1010':"Pt1000 / 1k (non standard)",'-3':"Thermocouple + MAX31855 (only for sensor 0)",'-2':"Thermocouple + MAX6675 (only for sensor 0)",'-1':"Thermocouple + AD595",'998':"Dummy 1",'999':"Dummy 2" }
188 228
 #define TEMP_SENSOR_0 7
189 229
 #define TEMP_SENSOR_1 0
190 230
 #define TEMP_SENSOR_2 0
@@ -223,10 +263,6 @@
223 263
 #define HEATER_3_MAXTEMP 275
224 264
 #define BED_MAXTEMP 150
225 265
 
226
-// If you want the M105 heater power reported in watts, define the BED_WATTS, and (shared for all extruders) EXTRUDER_WATTS
227
-//#define EXTRUDER_WATTS (12.0*12.0/6.7) // P=U^2/R
228
-//#define BED_WATTS (12.0*12.0/1.1)      // P=U^2/R
229
-
230 266
 //===========================================================================
231 267
 //============================= PID Settings ================================
232 268
 //===========================================================================
@@ -241,8 +277,8 @@
241 277
   //#define PID_DEBUG // Sends debug data to the serial port.
242 278
   //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX
243 279
   //#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
244
-  //#define PID_PARAMS_PER_EXTRUDER // Uses separate PID parameters for each extruder (useful for mismatched extruders)
245
-                                    // Set/get with gcode: M301 E[extruder number, 0-2]
280
+  //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders)
281
+                                  // Set/get with gcode: M301 E[extruder number, 0-2]
246 282
   #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature
247 283
                                   // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max.
248 284
   #define PID_INTEGRAL_DRIVE_MAX PID_MAX  //limit for the integral term
@@ -406,7 +442,7 @@
406 442
 // extra connectors. Leave undefined any used for non-endstop and non-probe purposes.
407 443
 //#define USE_XMIN_PLUG
408 444
 //#define USE_YMIN_PLUG
409
-//#define USE_ZMIN_PLUG
445
+#define USE_ZMIN_PLUG
410 446
 #define USE_XMAX_PLUG
411 447
 #define USE_YMAX_PLUG
412 448
 #define USE_ZMAX_PLUG
@@ -426,18 +462,123 @@
426 462
 #endif
427 463
 
428 464
 // Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup).
429
-const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
430
-const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
431
-const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
432
-const bool X_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
433
-const bool Y_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
434
-const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
435
-const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
465
+#define X_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
466
+#define Y_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
467
+#define Z_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
468
+#define X_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
469
+#define Y_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
470
+#define Z_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
471
+#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
436 472
 
437 473
 //===========================================================================
438 474
 //============================= Z Probe Options =============================
439 475
 //===========================================================================
440 476
 
477
+//
478
+// Probe Type
479
+// Probes are sensors/switches that are activated / deactivated before/after use.
480
+//
481
+// Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc.
482
+// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below.
483
+//
484
+// Use M851 to set the Z probe vertical offset from the nozzle. Store with M500.
485
+//
486
+
487
+// A Fix-Mounted Probe either doesn't deploy or needs manual deployment.
488
+// For example an inductive probe, or a setup that uses the nozzle to probe.
489
+// An inductive probe must be deactivated to go below
490
+// its trigger-point if hardware endstops are active.
491
+//#define FIX_MOUNTED_PROBE
492
+
493
+// The BLTouch probe emulates a servo probe.
494
+//#define BLTOUCH
495
+
496
+// Z Servo Probe, such as an endstop switch on a rotating arm.
497
+//#define Z_ENDSTOP_SERVO_NR 0
498
+//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles
499
+
500
+// Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
501
+//#define Z_PROBE_SLED
502
+//#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.
503
+
504
+// Z Probe to nozzle (X,Y) offset, relative to (0, 0).
505
+// X and Y offsets must be integers.
506
+//
507
+// In the following example the X and Y offsets are both positive:
508
+// #define X_PROBE_OFFSET_FROM_EXTRUDER 10
509
+// #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
510
+//
511
+//    +-- BACK ---+
512
+//    |           |
513
+//  L |    (+) P  | R <-- probe (20,20)
514
+//  E |           | I
515
+//  F | (-) N (+) | G <-- nozzle (10,10)
516
+//  T |           | H
517
+//    |    (-)    | T
518
+//    |           |
519
+//    O-- FRONT --+
520
+//  (0,0)
521
+#define X_PROBE_OFFSET_FROM_EXTRUDER 0     // X offset: -left  +right  [of the nozzle]
522
+#define Y_PROBE_OFFSET_FROM_EXTRUDER -10   // Y offset: -front +behind [the nozzle]
523
+#define Z_PROBE_OFFSET_FROM_EXTRUDER -3.5  // Z offset: -below +above  [the nozzle]
524
+
525
+// X and Y axis travel speed (mm/m) between probes
526
+#define XY_PROBE_SPEED 4000
527
+// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
528
+#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
529
+// Speed for the "accurate" probe of each point
530
+#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
531
+// Use double touch for probing
532
+//#define PROBE_DOUBLE_TOUCH
533
+
534
+// Allen key retractable z-probe as seen on many Kossel delta printers - http://reprap.org/wiki/Kossel#Automatic_bed_leveling_probe
535
+// Deploys by touching z-axis belt. Retracts by pushing the probe down. Uses Z_MIN_PIN.
536
+#define Z_PROBE_ALLEN_KEY
537
+
538
+#if ENABLED(Z_PROBE_ALLEN_KEY)
539
+  // 2 or 3 sets of coordinates for deploying and retracting the spring loaded touch probe on G29,
540
+  // if servo actuated touch probe is not defined. Uncomment as appropriate for your printer/probe.
541
+
542
+  // Kossel Mini
543
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_1_X 30.0
544
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_1_Y DELTA_PRINTABLE_RADIUS
545
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_1_Z 100.0
546
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE XY_PROBE_SPEED
547
+
548
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_2_X 0.0
549
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_2_Y DELTA_PRINTABLE_RADIUS
550
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_2_Z 100.0
551
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE (XY_PROBE_SPEED/10)
552
+
553
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_3_X Z_PROBE_ALLEN_KEY_DEPLOY_2_X * 0.75
554
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_3_Y Z_PROBE_ALLEN_KEY_DEPLOY_2_Y * 0.75
555
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_3_Z Z_PROBE_ALLEN_KEY_DEPLOY_2_Z
556
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE XY_PROBE_SPEED
557
+
558
+  #define Z_PROBE_ALLEN_KEY_STOW_DEPTH 20
559
+  // Move the probe into position
560
+  #define Z_PROBE_ALLEN_KEY_STOW_1_X -64.0
561
+  #define Z_PROBE_ALLEN_KEY_STOW_1_Y 56.0
562
+  #define Z_PROBE_ALLEN_KEY_STOW_1_Z 23.0
563
+  #define Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE XY_PROBE_SPEED
564
+  // Move the nozzle down further to push the probe into retracted position.
565
+  #define Z_PROBE_ALLEN_KEY_STOW_2_X  Z_PROBE_ALLEN_KEY_STOW_1_X
566
+  #define Z_PROBE_ALLEN_KEY_STOW_2_Y  Z_PROBE_ALLEN_KEY_STOW_1_Y
567
+  #define Z_PROBE_ALLEN_KEY_STOW_2_Z  (Z_PROBE_ALLEN_KEY_STOW_1_Z-Z_PROBE_ALLEN_KEY_STOW_DEPTH)
568
+  #define Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE (XY_PROBE_SPEED/10)
569
+  // Raise things back up slightly so we don't bump into anything
570
+  #define Z_PROBE_ALLEN_KEY_STOW_3_X  Z_PROBE_ALLEN_KEY_STOW_2_X
571
+  #define Z_PROBE_ALLEN_KEY_STOW_3_Y  Z_PROBE_ALLEN_KEY_STOW_2_Y
572
+  #define Z_PROBE_ALLEN_KEY_STOW_3_Z  (Z_PROBE_ALLEN_KEY_STOW_1_Z+Z_PROBE_ALLEN_KEY_STOW_DEPTH)
573
+  #define Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE (XY_PROBE_SPEED/2)
574
+
575
+  #define Z_PROBE_ALLEN_KEY_STOW_4_X 0.0
576
+  #define Z_PROBE_ALLEN_KEY_STOW_4_Y 0.0
577
+  #define Z_PROBE_ALLEN_KEY_STOW_4_Z Z_PROBE_ALLEN_KEY_STOW_3_Z
578
+  #define Z_PROBE_ALLEN_KEY_STOW_4_FEEDRATE XY_PROBE_SPEED
579
+
580
+#endif // Z_PROBE_ALLEN_KEY
581
+
441 582
 // Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z Probe and a Z-min-endstop on the same machine.
442 583
 // With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing.
443 584
 //
@@ -449,7 +590,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
449 590
 // To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN.
450 591
 //
451 592
 // For a servo-based Z probe, you must set up servo support below, including
452
-// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES.
593
+// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and Z_SERVO_ANGLES.
453 594
 //
454 595
 // - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin.
455 596
 // - Use 5V for powered (usu. inductive) sensors.
@@ -482,6 +623,21 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
482 623
 // If you're using the Z MIN endstop connector for your Z probe, this has no effect.
483 624
 //#define DISABLE_Z_MIN_PROBE_ENDSTOP
484 625
 
626
+// Enable Z Probe Repeatability test to see how accurate your probe is
627
+//#define Z_MIN_PROBE_REPEATABILITY_TEST
628
+
629
+//
630
+// Probe Raise options provide clearance for the probe to deploy, stow, and travel.
631
+//
632
+#define Z_PROBE_DEPLOY_HEIGHT 50 // Raise to make room for the probe to deploy / stow
633
+#define Z_PROBE_TRAVEL_HEIGHT 5  // Raise between probing points.
634
+
635
+//
636
+// For M851 give a range for adjusting the Z probe offset
637
+//
638
+#define Z_PROBE_OFFSET_RANGE_MIN -20
639
+#define Z_PROBE_OFFSET_RANGE_MAX 20
640
+
485 641
 // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
486 642
 // :{0:'Low',1:'High'}
487 643
 #define X_ENABLE_ON 0
@@ -518,8 +674,9 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
518 674
 #define INVERT_E3_DIR false
519 675
 
520 676
 // @section homing
521
-//#define MIN_Z_HEIGHT_FOR_HOMING 15// (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
522
-                                    // Be sure you have this distance over your Z_MAX_POS in case.
677
+
678
+//#define Z_HOMING_HEIGHT 15 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
679
+                             // Be sure you have this distance over your Z_MAX_POS in case.
523 680
 
524 681
 // ENDSTOP SETTINGS:
525 682
 // Sets direction of endstops when homing; 1=MAX, -1=MIN
@@ -549,7 +706,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
549 706
                                  // It is assumed that when logic high = filament available
550 707
                                  //                    when logic  low = filament ran out
551 708
 #if ENABLED(FILAMENT_RUNOUT_SENSOR)
552
-  const bool FIL_RUNOUT_INVERTING = true;  // Should be uncommented and true or false should assigned
709
+  const bool FIL_RUNOUT_INVERTING = false; // set to true to invert the logic of the sensor.
553 710
   #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined.
554 711
   #define FILAMENT_RUNOUT_SCRIPT "M600"
555 712
 #endif
@@ -561,10 +718,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
561 718
 //#define MESH_BED_LEVELING    // Enable mesh bed leveling.
562 719
 
563 720
 #if ENABLED(MESH_BED_LEVELING)
564
-  #define MESH_MIN_X 10
565
-  #define MESH_MAX_X (X_MAX_POS - (MESH_MIN_X))
566
-  #define MESH_MIN_Y 10
567
-  #define MESH_MAX_Y (Y_MAX_POS - (MESH_MIN_Y))
721
+  #define MESH_INSET 10        // Mesh inset margin on print area
568 722
   #define MESH_NUM_X_POINTS 3  // Don't use more than 7 points per axis, implementation limited.
569 723
   #define MESH_NUM_Y_POINTS 3
570 724
   #define MESH_HOME_SEARCH_Z 4  // Z after Home, bed somewhere below but above 0.0.
@@ -586,8 +740,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
586 740
 // @section bedlevel
587 741
 
588 742
 //#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line)
743
+
744
+// Enable this feature to get detailed logging of G28, G29, M48, etc.
745
+// Logging is off by default. Enable this logging feature with 'M111 S32'.
746
+// NOTE: Requires a huge amount of PROGMEM.
589 747
 //#define DEBUG_LEVELING_FEATURE
590
-//#define Z_MIN_PROBE_REPEATABILITY_TEST  // If not commented out, Z Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
591 748
 
592 749
 #if ENABLED(AUTO_BED_LEVELING_FEATURE)
593 750
 
@@ -634,143 +791,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
634 791
     #define ABL_PROBE_PT_3_X 170
635 792
     #define ABL_PROBE_PT_3_Y 20
636 793
 
637
-  #endif // AUTO_BED_LEVELING_GRID
638
-
639
-  // Z Probe to nozzle (X,Y) offset, relative to (0, 0).
640
-  // X and Y offsets must be integers.
641
-  //
642
-  // In the following example the X and Y offsets are both positive:
643
-  // #define X_PROBE_OFFSET_FROM_EXTRUDER 10
644
-  // #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
645
-  //
646
-  //    +-- BACK ---+
647
-  //    |           |
648
-  //  L |    (+) P  | R <-- probe (20,20)
649
-  //  E |           | I
650
-  //  F | (-) N (+) | G <-- nozzle (10,10)
651
-  //  T |           | H
652
-  //    |    (-)    | T
653
-  //    |           |
654
-  //    O-- FRONT --+
655
-  //  (0,0)
656
-  #define X_PROBE_OFFSET_FROM_EXTRUDER 0     // X offset: -left  +right  [of the nozzle]
657
-  #define Y_PROBE_OFFSET_FROM_EXTRUDER -10   // Y offset: -front +behind [the nozzle]
658
-  #define Z_PROBE_OFFSET_FROM_EXTRUDER -3.5  // Z offset: -below +above  [the nozzle]
659
-
660
-  #define XY_TRAVEL_SPEED 4000         // X and Y axis travel speed between probes, in mm/min.
661
-
662
-  #define Z_RAISE_BEFORE_PROBING 15   // How much the Z axis will be raised before traveling to the first probing point.
663
-  #define Z_RAISE_BETWEEN_PROBINGS 5  // How much the Z axis will be raised when traveling from between next probing points
664
-  #define Z_RAISE_AFTER_PROBING 50    // How much the Z axis will be raised after the last probing point.
794
+  #endif // !AUTO_BED_LEVELING_GRID
665 795
 
666 796
   //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine.
667 797
                                                                              // Useful to retract a deployable Z probe.
668 798
 
669
-  // Probes are sensors/switches that need to be activated before they can be used
670
-  // and deactivated after their use.
671
-  // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE
672
-
673
-  // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER
674
-  // when the hardware endstops are active.
675
-  //#define FIX_MOUNTED_PROBE
676
-
677
-  // A Servo Probe can be defined in the servo section below.
678
-
679
-  // An Allen Key Probe is currently predefined only in the delta example configurations.
680
-
681
-  // Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
682
-  //#define Z_PROBE_SLED
683
-  //#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.
684
-
685
-  // A Mechanical Probe is any probe that either doesn't deploy or needs manual deployment
686
-  // For example any setup that uses the nozzle itself as a probe.
687
-  //#define MECHANICAL_PROBE
688
-
689
-  // Allen key retractable z-probe as seen on many Kossel delta printers - http://reprap.org/wiki/Kossel#Automatic_bed_leveling_probe
690
-  // Deploys by touching z-axis belt. Retracts by pushing the probe down. Uses Z_MIN_PIN.
691
-  #define Z_PROBE_ALLEN_KEY
692
-
693
-  #if ENABLED(Z_PROBE_ALLEN_KEY)
694
-    // 2 or 3 sets of coordinates for deploying and retracting the spring loaded touch probe on G29,
695
-    // if servo actuated touch probe is not defined. Uncomment as appropriate for your printer/probe.
696
-
697
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_X 30.0
698
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_Y DELTA_PRINTABLE_RADIUS
699
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_Z 100.0
700
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE HOMING_FEEDRATE_XYZ
701
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_X 0.0
702
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_Y DELTA_PRINTABLE_RADIUS
703
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_Z 100.0
704
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE (HOMING_FEEDRATE_XYZ)/10
705
-
706
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_X -64.0 // Move the probe into position
707
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_Y 56.0
708
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_Z 23.0
709
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE HOMING_FEEDRATE_XYZ
710
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_X -64.0 // Push it down
711
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_Y 56.0
712
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_Z 3.0
713
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE (HOMING_FEEDRATE_XYZ)/10
714
-    //#define Z_PROBE_ALLEN_KEY_STOW_3_X -64.0 // Move it up to clear
715
-    //#define Z_PROBE_ALLEN_KEY_STOW_3_Y 56.0
716
-    //#define Z_PROBE_ALLEN_KEY_STOW_3_Z 50.0
717
-    //#define Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE HOMING_FEEDRATE_XYZ
718
-
719
-    // Kossel Mini
720
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_1_X 30.0
721
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_1_Y DELTA_PRINTABLE_RADIUS
722
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_1_Z 100.0
723
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE XY_TRAVEL_SPEED
724
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_2_X 0.0
725
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_2_Y DELTA_PRINTABLE_RADIUS
726
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_2_Z 100.0
727
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE (XY_TRAVEL_SPEED/10)
728
-
729
-    #define Z_PROBE_ALLEN_KEY_STOW_DEPTH 20
730
-    // Move the probe into position
731
-    #define Z_PROBE_ALLEN_KEY_STOW_1_X -64.0
732
-    #define Z_PROBE_ALLEN_KEY_STOW_1_Y 56.0
733
-    #define Z_PROBE_ALLEN_KEY_STOW_1_Z 23.0
734
-    #define Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE XY_TRAVEL_SPEED
735
-    // Move the nozzle down further to push the probe into retracted position.
736
-    #define Z_PROBE_ALLEN_KEY_STOW_2_X  Z_PROBE_ALLEN_KEY_STOW_1_X
737
-    #define Z_PROBE_ALLEN_KEY_STOW_2_Y  Z_PROBE_ALLEN_KEY_STOW_1_Y
738
-    #define Z_PROBE_ALLEN_KEY_STOW_2_Z  (Z_PROBE_ALLEN_KEY_STOW_1_Z-Z_PROBE_ALLEN_KEY_STOW_DEPTH)
739
-    #define Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE (XY_TRAVEL_SPEED/10)
740
-    // Raise things back up slightly so we don't bump into anything
741
-    #define Z_PROBE_ALLEN_KEY_STOW_3_X  Z_PROBE_ALLEN_KEY_STOW_2_X
742
-    #define Z_PROBE_ALLEN_KEY_STOW_3_Y  Z_PROBE_ALLEN_KEY_STOW_2_Y
743
-    #define Z_PROBE_ALLEN_KEY_STOW_3_Z  (Z_PROBE_ALLEN_KEY_STOW_1_Z+Z_PROBE_ALLEN_KEY_STOW_DEPTH)
744
-    #define Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE (XY_TRAVEL_SPEED/2)
745
-
746
-    // Kossel Pro
747
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_X -105.00 // Move left but not quite so far that we'll bump the belt
748
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_Y 0.00
749
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_Z 100.0
750
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE HOMING_FEEDRATE_XYZ
751
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_X -110.00 // Move outward to position deploy pin to the left of the arm
752
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_Y -125.00
753
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_Z 100.0
754
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE HOMING_FEEDRATE_XYZ
755
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_3_X 45.00 // Move right to trigger deploy pin
756
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_3_Y -125.00
757
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_3_Z 100.0
758
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE (HOMING_FEEDRATE_XYZ)/2
759
-
760
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_X 36.00 // Line up with bed retaining clip
761
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_Y -122.00
762
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_Z 75.0
763
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE HOMING_FEEDRATE_XYZ
764
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_X 36.00 // move down to retract probe
765
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_Y -122.00
766
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_Z 25.0
767
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE (HOMING_FEEDRATE_XYZ)/2
768
-    //#define Z_PROBE_ALLEN_KEY_STOW_3_X 0.0  // return to 0,0,100
769
-    //#define Z_PROBE_ALLEN_KEY_STOW_3_Y 0.0
770
-    //#define Z_PROBE_ALLEN_KEY_STOW_3_Z 100.0
771
-    //#define Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE HOMING_FEEDRATE_XYZ
772
-  #endif
773
-
774 799
   // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing,
775 800
   // it is highly recommended you also enable Z_SAFE_HOMING below!
776 801
 
@@ -779,17 +804,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
779 804
 
780 805
 // @section homing
781 806
 
782
-// The position of the homing switches
783
-#define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used
784
-#define BED_CENTER_AT_0_0  // If defined, the center of the bed is at (X=0, Y=0)
807
+// The center of the bed is at (X=0, Y=0)
808
+#define BED_CENTER_AT_0_0
785 809
 
786
-// Manual homing switch locations:
787
-// For deltabots this means top and center of the Cartesian print volume.
788
-#if ENABLED(MANUAL_HOME_POSITIONS)
789
-  #define MANUAL_X_HOME_POS 0
790
-  #define MANUAL_Y_HOME_POS 0
791
-  #define MANUAL_Z_HOME_POS 250 // For delta: Distance between nozzle and print surface after homing.
792
-#endif
810
+// Manually set the home position. Leave these undefined for automatic settings.
811
+// For DELTA this is the top-center of the Cartesian print volume.
812
+//#define MANUAL_X_HOME_POS 0
813
+//#define MANUAL_Y_HOME_POS 0
814
+#define MANUAL_Z_HOME_POS 250 // Distance between the nozzle to printbed after homing
793 815
 
794 816
 // Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
795 817
 //
@@ -797,7 +819,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
797 819
 //
798 820
 // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
799 821
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
800
-// - Position the Z probe in a defined XY point before Z Homing when homing all axes (G28).
822
+// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
801 823
 // - Prevent Z homing when the Z probe is outside bed area.
802 824
 //#define Z_SAFE_HOMING
803 825
 
@@ -807,16 +829,13 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
807 829
 #endif
808 830
 
809 831
 
810
-// @section movement
832
+// Delta only homes to Z
833
+#define HOMING_FEEDRATE_Z  (200*60)
811 834
 
812
-/**
813
- * MOVEMENT SETTINGS
814
- */
815
-
816
-// delta homing speeds must be the same on xyz
817
-#define HOMING_FEEDRATE_XYZ (200*60)
818
-#define HOMING_FEEDRATE_E 0
819
-#define HOMING_FEEDRATE { HOMING_FEEDRATE_XYZ, HOMING_FEEDRATE_XYZ, HOMING_FEEDRATE_XYZ, HOMING_FEEDRATE_E }
835
+//
836
+// MOVEMENT SETTINGS
837
+// @section motion
838
+//
820 839
 
821 840
 // default settings
822 841
 // delta speeds must be the same on xyz
@@ -838,18 +857,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
838 857
 //============================= Additional Features ===========================
839 858
 //=============================================================================
840 859
 
841
-// @section more
842
-
843
-// Custom M code points
844
-#define CUSTOM_M_CODES
845
-#if ENABLED(CUSTOM_M_CODES)
846
-  #if ENABLED(AUTO_BED_LEVELING_FEATURE)
847
-    #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851
848
-    #define Z_PROBE_OFFSET_RANGE_MIN -20
849
-    #define Z_PROBE_OFFSET_RANGE_MAX 20
850
-  #endif
851
-#endif
852
-
853 860
 // @section extras
854 861
 
855 862
 //
@@ -881,22 +888,107 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
881 888
 //
882 889
 //#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose
883 890
 
891
+//
892
+// G20/G21 Inch mode support
893
+//
894
+//#define INCH_MODE_SUPPORT
895
+
896
+//
897
+// M149 Set temperature units support
898
+//
899
+//#define TEMPERATURE_UNITS_SUPPORT
900
+
884 901
 // @section temperature
885 902
 
886 903
 // Preheat Constants
887
-#define PLA_PREHEAT_HOTEND_TEMP 180
888
-#define PLA_PREHEAT_HPB_TEMP 70
889
-#define PLA_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
904
+#define PREHEAT_1_TEMP_HOTEND 180
905
+#define PREHEAT_1_TEMP_BED     70
906
+#define PREHEAT_1_FAN_SPEED   255 // Value from 0 to 255
907
+
908
+#define PREHEAT_2_TEMP_HOTEND 240
909
+#define PREHEAT_2_TEMP_BED    100
910
+#define PREHEAT_2_FAN_SPEED   255 // Value from 0 to 255
911
+
912
+//
913
+// Nozzle Park -- EXPERIMENTAL
914
+//
915
+// When enabled allows the user to define a special XYZ position, inside the
916
+// machine's topology, to park the nozzle when idle or when receiving the G27
917
+// command.
918
+//
919
+// The "P" paramenter controls what is the action applied to the Z axis:
920
+//    P0: (Default) If current Z-pos is lower than Z-park then the nozzle will
921
+//        be raised to reach Z-park height.
922
+//
923
+//    P1: No matter the current Z-pos, the nozzle will be raised/lowered to
924
+//        reach Z-park height.
925
+//
926
+//    P2: The nozzle height will be raised by Z-park amount but never going over
927
+//        the machine's limit of Z_MAX_POS.
928
+//
929
+//#define NOZZLE_PARK_FEATURE
890 930
 
891
-#define ABS_PREHEAT_HOTEND_TEMP 240
892
-#define ABS_PREHEAT_HPB_TEMP 100
893
-#define ABS_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
931
+#if ENABLED(NOZZLE_PARK_FEATURE)
932
+  // Specify a park position as { X, Y, Z }
933
+  #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 }
934
+#endif
935
+
936
+//
937
+// Clean Nozzle Feature -- EXPERIMENTAL
938
+//
939
+// When enabled allows the user to send G12 to start the nozzle cleaning
940
+// process, the G-Code accepts two parameters:
941
+//   "P" for pattern selection
942
+//   "S" for defining the number of strokes/repetitions
943
+//
944
+// Available list of patterns:
945
+//   P0: This is the default pattern, this process requires a sponge type
946
+//       material at a fixed bed location, the cleaning process is based on
947
+//       "strokes" i.e. back-and-forth movements between the starting and end
948
+//       points.
949
+//
950
+//   P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T"
951
+//       defines the number of zig-zag triangles to be done. "S" defines the
952
+//       number of strokes aka one back-and-forth movement. As an example
953
+//       sending "G12 P1 S1 T3" will execute:
954
+//
955
+//          --
956
+//         |  (X0, Y1) |     /\        /\        /\     | (X1, Y1)
957
+//         |           |    /  \      /  \      /  \    |
958
+//       A |           |   /    \    /    \    /    \   |
959
+//         |           |  /      \  /      \  /      \  |
960
+//         |  (X0, Y0) | /        \/        \/        \ | (X1, Y0)
961
+//          --         +--------------------------------+
962
+//                       |________|_________|_________|
963
+//                           T1        T2        T3
964
+//
965
+// Caveats: End point Z should use the same value as Start point Z.
966
+//
967
+// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments
968
+// may change to add new functionality like different wipe patterns.
969
+//
970
+//#define NOZZLE_CLEAN_FEATURE
971
+
972
+#if ENABLED(NOZZLE_CLEAN_FEATURE)
973
+  // Number of pattern repetitions
974
+  #define NOZZLE_CLEAN_STROKES  12
975
+
976
+  // Specify positions as { X, Y, Z }
977
+  #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)}
978
+  #define NOZZLE_CLEAN_END_POINT   {100, 60, (Z_MIN_POS + 1)}
979
+
980
+  // Moves the nozzle to the initial position
981
+  #define NOZZLE_CLEAN_GOBACK
982
+#endif
894 983
 
895 984
 //
896 985
 // Print job timer
897 986
 //
898 987
 // Enable this option to automatically start and stop the
899
-// print job timer when M104 and M109 commands are received.
988
+// print job timer when M104/M109/M190 commands are received.
989
+// M104 (extruder without wait) - high temp = none, low temp = stop timer
990
+// M109 (extruder with wait) - high temp = start timer, low temp = stop timer
991
+// M190 (bed with wait) - high temp = start timer, low temp = none
900 992
 //
901 993
 // In all cases the timer can be started and stopped using
902 994
 // the following commands:
@@ -929,8 +1021,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
929 1021
 //
930 1022
 // Here you may choose the language used by Marlin on the LCD menus, the following
931 1023
 // list of languages are available:
932
-//    en, pl, fr, de, es, ru, bg, it, pt, pt_utf8, pt-br, pt-br_utf8,
933
-//    fi, an, nl, ca, eu, kana, kana_utf8, cn, cz, test
1024
+//    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
1025
+//    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
1026
+//
1027
+// :{'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','test':'TEST'}
934 1028
 //
935 1029
 #define LCD_LANGUAGE en
936 1030
 
@@ -1078,6 +1172,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1078 1172
 //#define ULTIPANEL
1079 1173
 
1080 1174
 //
1175
+// Cartesio UI
1176
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1177
+//
1178
+//#define CARTESIO_UI
1179
+
1180
+//
1081 1181
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
1082 1182
 // http://reprap.org/wiki/PanelOne
1083 1183
 //
@@ -1090,6 +1190,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1090 1190
 //#define MAKRPANEL
1091 1191
 
1092 1192
 //
1193
+// ReprapWorld Graphical LCD
1194
+// https://reprapworld.com/?products_details&products_id/1218
1195
+//
1196
+//#define REPRAPWORLD_GRAPHICAL_LCD
1197
+
1198
+//
1093 1199
 // Activate one of these if you have a Panucatt Devices
1094 1200
 // Viki 2.0 or mini Viki with Graphic LCD
1095 1201
 // http://panucatt.com
@@ -1139,7 +1245,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1139 1245
 // is pressed, a value of 10.0 means 10mm per click.
1140 1246
 //
1141 1247
 //#define REPRAPWORLD_KEYPAD
1142
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1248
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1143 1249
 
1144 1250
 //
1145 1251
 // RigidBot Panel V1.0
@@ -1200,6 +1306,15 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1200 1306
 //#define U8GLIB_SSD1306
1201 1307
 
1202 1308
 //
1309
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1310
+//
1311
+//#define SAV_3DGLCD
1312
+#if ENABLED(SAV_3DGLCD)
1313
+  //#define U8GLIB_SSD1306
1314
+  #define U8GLIB_SH1106
1315
+#endif
1316
+
1317
+//
1203 1318
 // CONTROLLER TYPE: Shift register panels
1204 1319
 //
1205 1320
 // 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH
@@ -1227,7 +1342,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1227 1342
 // at zero value, there are 128 effective control positions.
1228 1343
 #define SOFT_PWM_SCALE 0
1229 1344
 
1230
-// Temperature status LEDs that display the hotend and bet temperature.
1345
+// Temperature status LEDs that display the hotend and bed temperature.
1231 1346
 // If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
1232 1347
 // Otherwise the RED led is on. There is 1C hysteresis.
1233 1348
 //#define TEMP_STAT_LEDS
@@ -1259,28 +1374,16 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1259 1374
 //
1260 1375
 //#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
1261 1376
 
1262
-// Servo Endstops
1263
-//
1264
-// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes.
1265
-// Use M851 to set the Z probe vertical offset from the nozzle. Store that setting with M500.
1266
-//
1267
-//#define X_ENDSTOP_SERVO_NR 1
1268
-//#define Y_ENDSTOP_SERVO_NR 2
1269
-//#define Z_ENDSTOP_SERVO_NR 0
1270
-//#define SERVO_ENDSTOP_ANGLES {{0,0}, {0,0}, {70,0}} // X,Y,Z Axis Extend and Retract angles
1377
+// Delay (in microseconds) before the next move will start, to give the servo time to reach its target angle.
1378
+// 300ms is a good value but you can try less delay.
1379
+// If the servo can't reach the requested position, increase it.
1380
+#define SERVO_DELAY 300
1271 1381
 
1272 1382
 // Servo deactivation
1273 1383
 //
1274 1384
 // With this option servos are powered only during movement, then turned off to prevent jitter.
1275 1385
 //#define DEACTIVATE_SERVOS_AFTER_MOVE
1276 1386
 
1277
-#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE)
1278
-  // Delay (in microseconds) before turning the servo off. This depends on the servo speed.
1279
-  // 300ms is a good value but you can try less delay.
1280
-  // If the servo can't reach the requested position, increase it.
1281
-  #define SERVO_DEACTIVATION_DELAY 300
1282
-#endif
1283
-
1284 1387
 /**********************************************************************\
1285 1388
  * Support for a filament diameter sensor
1286 1389
  * Also allows adjustment of diameter at print time (vs  at slicing)
@@ -1311,7 +1414,4 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1311 1414
   //#define FILAMENT_LCD_DISPLAY
1312 1415
 #endif
1313 1416
 
1314
-#include "Configuration_adv.h"
1315
-#include "thermistortables.h"
1316
-
1317
-#endif //CONFIGURATION_H
1417
+#endif // CONFIGURATION_H

+ 148
- 47
Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h Parādīt failu

@@ -33,7 +33,18 @@
33 33
 #ifndef CONFIGURATION_ADV_H
34 34
 #define CONFIGURATION_ADV_H
35 35
 
36
-#include "Conditionals.h"
36
+/**
37
+ *
38
+ *  ***********************************
39
+ *  **  ATTENTION TO ALL DEVELOPERS  **
40
+ *  ***********************************
41
+ *
42
+ * You must increment this version number for every significant change such as,
43
+ * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option.
44
+ *
45
+ * Note: Update also Version.h !
46
+ */
47
+#define CONFIGURATION_ADV_H_VERSION 010100
37 48
 
38 49
 // @section temperature
39 50
 
@@ -102,8 +113,8 @@
102 113
 #if ENABLED(PIDTEMP)
103 114
   // this adds an experimental additional term to the heating power, proportional to the extrusion speed.
104 115
   // if Kc is chosen well, the additional required power due to increased melting should be compensated.
105
-  #define PID_ADD_EXTRUSION_RATE
106
-  #if ENABLED(PID_ADD_EXTRUSION_RATE)
116
+  //#define PID_EXTRUSION_SCALING
117
+  #if ENABLED(PID_EXTRUSION_SCALING)
107 118
     #define DEFAULT_Kc (100) //heating power=Kc*(e_speed)
108 119
     #define LPQ_MAX_LEN 50
109 120
   #endif
@@ -128,15 +139,42 @@
128 139
 //The M105 command return, besides traditional information, the ADC value read from temperature sensors.
129 140
 //#define SHOW_TEMP_ADC_VALUES
130 141
 
142
+/**
143
+ * High Temperature Thermistor Support
144
+ *
145
+ * Thermistors able to support high temperature tend to have a hard time getting
146
+ * good readings at room and lower temperatures. This means HEATER_X_RAW_LO_TEMP
147
+ * will probably be caught when the heating element first turns on during the
148
+ * preheating process, which will trigger a min_temp_error as a safety measure
149
+ * and force stop everything.
150
+ * To circumvent this limitation, we allow for a preheat time (during which,
151
+ * min_temp_error won't be triggered) and add a min_temp buffer to handle
152
+ * aberrant readings.
153
+ *
154
+ * If you want to enable this feature for your hotend thermistor(s)
155
+ * uncomment and set values > 0 in the constants below
156
+ */
157
+
158
+// The number of consecutive low temperature errors that can occur
159
+// before a min_temp_error is triggered. (Shouldn't be more than 10.)
160
+//#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 0
161
+
162
+// The number of milliseconds a hotend will preheat before starting to check
163
+// the temperature. This value should NOT be set to the time it takes the
164
+// hot end to reach the target temperature, but the time it takes to reach
165
+// the minimum temperature your thermistor can read. The lower the better/safer.
166
+// This shouldn't need to be more than 30 seconds (30000)
167
+//#define MILLISECONDS_PREHEAT_TIME 0
168
+
131 169
 // @section extruder
132 170
 
133 171
 //  extruder run-out prevention.
134 172
 //if the machine is idle, and the temperature over MINTEMP, every couple of SECONDS some filament is extruded
135 173
 //#define EXTRUDER_RUNOUT_PREVENT
136 174
 #define EXTRUDER_RUNOUT_MINTEMP 190
137
-#define EXTRUDER_RUNOUT_SECONDS 30.
138
-#define EXTRUDER_RUNOUT_ESTEPS 14. //mm filament
139
-#define EXTRUDER_RUNOUT_SPEED 1500.  //extrusion speed
175
+#define EXTRUDER_RUNOUT_SECONDS 30
176
+#define EXTRUDER_RUNOUT_ESTEPS 14   // mm filament
177
+#define EXTRUDER_RUNOUT_SPEED 1500  // extrusion speed
140 178
 #define EXTRUDER_RUNOUT_EXTRUDE 100
141 179
 
142 180
 // @section temperature
@@ -177,24 +215,42 @@
177 215
 #define EXTRUDER_AUTO_FAN_TEMPERATURE 50
178 216
 #define EXTRUDER_AUTO_FAN_SPEED   255  // == full speed
179 217
 
180
-
181 218
 //===========================================================================
182
-//=============================Mechanical Settings===========================
219
+//============================ Mechanical Settings ==========================
183 220
 //===========================================================================
184 221
 
185 222
 // @section homing
186 223
 
187
-#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing
224
+// If you want endstops to stay on (by default) even when not homing
225
+// enable this option. Override at any time with M120, M121.
226
+//#define ENDSTOPS_ALWAYS_ON_DEFAULT
188 227
 
189 228
 // @section extras
190 229
 
191 230
 //#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
192 231
 
232
+// Dual X Steppers
233
+// Uncomment this option to drive two X axis motors.
234
+// The next unused E driver will be assigned to the second X stepper.
235
+//#define X_DUAL_STEPPER_DRIVERS
236
+#if ENABLED(X_DUAL_STEPPER_DRIVERS)
237
+  // Set true if the two X motors need to rotate in opposite directions
238
+  #define INVERT_X2_VS_X_DIR true
239
+#endif
240
+
241
+
242
+// Dual Y Steppers
243
+// Uncomment this option to drive two Y axis motors.
244
+// The next unused E driver will be assigned to the second Y stepper.
245
+//#define Y_DUAL_STEPPER_DRIVERS
246
+#if ENABLED(Y_DUAL_STEPPER_DRIVERS)
247
+  // Set true if the two Y motors need to rotate in opposite directions
248
+  #define INVERT_Y2_VS_Y_DIR true
249
+#endif
250
+
193 251
 // A single Z stepper driver is usually used to drive 2 stepper motors.
194
-// Uncomment this define to utilize a separate stepper driver for each Z axis motor.
195
-// Only a few motherboards support this, like RAMPS, which have dual extruder support (the 2nd, often unused, extruder driver is used
196
-// to control the 2nd Z axis stepper motor). The pins are currently only defined for a RAMPS motherboards.
197
-// On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder.
252
+// Uncomment this option to use a separate stepper driver for each Z axis motor.
253
+// The next unused E driver will be assigned to the second Z stepper.
198 254
 //#define Z_DUAL_STEPPER_DRIVERS
199 255
 
200 256
 #if ENABLED(Z_DUAL_STEPPER_DRIVERS)
@@ -216,14 +272,6 @@
216 272
 
217 273
 #endif // Z_DUAL_STEPPER_DRIVERS
218 274
 
219
-// Same again but for Y Axis.
220
-//#define Y_DUAL_STEPPER_DRIVERS
221
-
222
-#if ENABLED(Y_DUAL_STEPPER_DRIVERS)
223
-  // Define if the two Y drives need to rotate in opposite directions
224
-  #define INVERT_Y2_VS_Y_DIR true
225
-#endif
226
-
227 275
 // Enable this for dual x-carriage printers.
228 276
 // A dual x-carriage design has the advantage that the inactive extruder can be parked which
229 277
 // prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
@@ -237,7 +285,7 @@
237 285
   #define X2_MAX_POS 353    // set maximum to the distance between toolheads when both heads are homed
238 286
   #define X2_HOME_DIR 1     // the second X-carriage always homes to the maximum endstop position
239 287
   #define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position
240
-      // However: In this mode the EXTRUDER_OFFSET_X value for the second extruder provides a software
288
+      // However: In this mode the HOTEND_OFFSET_X value for the second extruder provides a software
241 289
       // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops
242 290
       // without modifying the firmware (through the "M218 T1 X???" command).
243 291
       // Remember: you should set the second extruder x-offset to 0 in your slicer.
@@ -279,7 +327,10 @@
279 327
 
280 328
 #define AXIS_RELATIVE_MODES {false, false, false, false}
281 329
 
282
-//By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
330
+// Allow duplication mode with a basic dual-nozzle extruder
331
+//#define DUAL_NOZZLE_DUPLICATION_MODE
332
+
333
+// By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
283 334
 #define INVERT_X_STEP_PIN false
284 335
 #define INVERT_Y_STEP_PIN false
285 336
 #define INVERT_Z_STEP_PIN false
@@ -352,6 +403,9 @@
352 403
 
353 404
 // @section lcd
354 405
 
406
+// Include a page of printer information in the LCD Main Menu
407
+//#define LCD_INFO_MENU
408
+
355 409
 #if ENABLED(SDSUPPORT)
356 410
 
357 411
   // Some RAMPS and other boards don't detect when an SD card is inserted. You can work
@@ -389,7 +443,6 @@
389 443
   // This option allows you to abort SD printing when any endstop is triggered.
390 444
   // This feature must be enabled with "M540 S1" or from the LCD menu.
391 445
   // To have any effect, endstops must be enabled during SD printing.
392
-  // With ENDSTOPS_ONLY_FOR_HOMING you must send "M120" to enable endstops.
393 446
   //#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED
394 447
 
395 448
 #endif // SDSUPPORT
@@ -405,9 +458,10 @@
405 458
   //#define USE_SMALL_INFOFONT
406 459
 #endif // DOGLCD
407 460
 
408
-// @section more
461
+// @section safety
409 462
 
410
-// The hardware watchdog should reset the microcontroller disabling all outputs, in case the firmware gets stuck and doesn't do temperature regulation.
463
+// The hardware watchdog should reset the microcontroller disabling all outputs,
464
+// in case the firmware gets stuck and doesn't do temperature regulation.
411 465
 #define USE_WATCHDOG
412 466
 
413 467
 #if ENABLED(USE_WATCHDOG)
@@ -446,6 +500,27 @@
446 500
   #define D_FILAMENT 2.85
447 501
 #endif
448 502
 
503
+// Implementation of a linear pressure control
504
+// Assumption: advance = k * (delta velocity)
505
+// K=0 means advance disabled. A good value for a gregs wade extruder will be around K=75
506
+//#define LIN_ADVANCE
507
+
508
+#if ENABLED(LIN_ADVANCE)
509
+  #define LIN_ADVANCE_K 75
510
+#endif
511
+
512
+// @section leveling
513
+
514
+// Default mesh area is an area with an inset margin on the print area.
515
+// Below are the macros that are used to define the borders for the mesh area,
516
+// made available here for specialized needs, ie dual extruder setup.
517
+#if ENABLED(MESH_BED_LEVELING)
518
+  #define MESH_MIN_X (X_MIN_POS + MESH_INSET)
519
+  #define MESH_MAX_X (X_MAX_POS - (MESH_INSET))
520
+  #define MESH_MIN_Y (Y_MIN_POS + MESH_INSET)
521
+  #define MESH_MAX_Y (Y_MAX_POS - (MESH_INSET))
522
+#endif
523
+
449 524
 // @section extras
450 525
 
451 526
 // Arc interpretation settings:
@@ -477,12 +552,27 @@ const unsigned int dropsegments = 5; //everything with less than this number of
477 552
   #define BLOCK_BUFFER_SIZE 16 // maximize block buffer
478 553
 #endif
479 554
 
480
-// @section more
555
+// @section serial
481 556
 
482
-//The ASCII buffer for receiving from the serial:
557
+// The ASCII buffer for serial input
483 558
 #define MAX_CMD_SIZE 96
484 559
 #define BUFSIZE 4
485 560
 
561
+// Transfer Buffer Size
562
+// To save 386 bytes of PROGMEM (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0.
563
+// To buffer a simple "ok" you need 4 bytes.
564
+// For ADVANCED_OK (M105) you need 32 bytes.
565
+// For debug-echo: 128 bytes for the optimal speed.
566
+// Other output doesn't need to be that speedy.
567
+// :[0,2,4,8,16,32,64,128,256]
568
+#define TX_BUFFER_SIZE 0
569
+
570
+// Enable an emergency-command parser to intercept certain commands as they
571
+// enter the serial receive buffer, so they cannot be blocked.
572
+// Currently handles M108, M112, M410
573
+// Does not work on boards using AT90USB (USBCON) processors!
574
+//#define EMERGENCY_PARSER
575
+
486 576
 // Bad Serial-connections can miss a received command by sending an 'ok'
487 577
 // Therefore some clients abort after 30 seconds in a timeout.
488 578
 // Some other clients start sending commands while receiving a 'wait'.
@@ -514,16 +604,30 @@ const unsigned int dropsegments = 5; //everything with less than this number of
514 604
 
515 605
 // Add support for experimental filament exchange support M600; requires display
516 606
 #if ENABLED(ULTIPANEL)
517
-  //#define FILAMENTCHANGEENABLE
518
-  #if ENABLED(FILAMENTCHANGEENABLE)
519
-    #define FILAMENTCHANGE_XPOS 3
520
-    #define FILAMENTCHANGE_YPOS 3
521
-    #define FILAMENTCHANGE_ZADD 10
522
-    #define FILAMENTCHANGE_FIRSTRETRACT -2
523
-    #define FILAMENTCHANGE_FINALRETRACT -100
524
-    #define AUTO_FILAMENT_CHANGE                //This extrude filament until you press the button on LCD
525
-    #define AUTO_FILAMENT_CHANGE_LENGTH 0.04    //Extrusion length on automatic extrusion loop
526
-    #define AUTO_FILAMENT_CHANGE_FEEDRATE 300   //Extrusion feedrate (mm/min) on automatic extrusion loop
607
+  // #define FILAMENT_CHANGE_FEATURE             // Enable filament exchange menu and M600 g-code (used for runout sensor too)
608
+  #if ENABLED(FILAMENT_CHANGE_FEATURE)
609
+    #define FILAMENT_CHANGE_X_POS 3             // X position of hotend
610
+    #define FILAMENT_CHANGE_Y_POS 3             // Y position of hotend
611
+    #define FILAMENT_CHANGE_Z_ADD 10            // Z addition of hotend (lift)
612
+    #define FILAMENT_CHANGE_XY_FEEDRATE 100     // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
613
+    #define FILAMENT_CHANGE_Z_FEEDRATE 5        // Z axis feedrate in mm/s (not used for delta printers)
614
+    #define FILAMENT_CHANGE_RETRACT_LENGTH 2    // Initial retract in mm
615
+                                                // It is a short retract used immediately after print interrupt before move to filament exchange position
616
+    #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
617
+    #define FILAMENT_CHANGE_UNLOAD_LENGTH 100   // Unload filament length from hotend in mm
618
+                                                // Longer length for bowden printers to unload filament from whole bowden tube,
619
+                                                // shorter lenght for printers without bowden to unload filament from extruder only,
620
+                                                // 0 to disable unloading for manual unloading
621
+    #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10  // Unload filament feedrate in mm/s - filament unloading can be fast
622
+    #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
623
+                                                // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
624
+                                                // Short or zero length for printers without bowden where loading is not used
625
+    #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
626
+    #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
627
+                                                // 0 to disable for manual extrusion
628
+                                                // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
629
+                                                // or until outcoming filament color is not clear for filament color change
630
+    #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
527 631
   #endif
528 632
 #endif
529 633
 
@@ -669,9 +773,9 @@ const unsigned int dropsegments = 5; //everything with less than this number of
669 773
  * devices on the bus.
670 774
  *
671 775
  * ; Example #1
672
- * ; This macro send the string "Marlin" to the slave device with address 0x63
776
+ * ; This macro send the string "Marlin" to the slave device with address 0x63 (99)
673 777
  * ; It uses multiple M155 commands with one B<base 10> arg
674
- * M155 A63  ; Target slave address
778
+ * M155 A99  ; Target slave address
675 779
  * M155 B77  ; M
676 780
  * M155 B97  ; a
677 781
  * M155 B114 ; r
@@ -681,19 +785,16 @@ const unsigned int dropsegments = 5; //everything with less than this number of
681 785
  * M155 S1   ; Send the current buffer
682 786
  *
683 787
  * ; Example #2
684
- * ; Request 6 bytes from slave device with address 0x63
685
- * M156 A63 B5
788
+ * ; Request 6 bytes from slave device with address 0x63 (99)
789
+ * M156 A99 B5
686 790
  *
687 791
  * ; Example #3
688 792
  * ; Example serial output of a M156 request
689
- * echo:i2c-reply: from:63 bytes:5 data:hello
793
+ * echo:i2c-reply: from:99 bytes:5 data:hello
690 794
  */
691 795
 
692 796
 // @section i2cbus
693 797
 
694 798
 //#define EXPERIMENTAL_I2CBUS
695 799
 
696
-#include "Conditionals.h"
697
-#include "SanityCheck.h"
698
-
699
-#endif //CONFIGURATION_ADV_H
800
+#endif // CONFIGURATION_ADV_H

+ 337
- 230
Marlin/example_configurations/delta/kossel_pro/Configuration.h Parādīt failu

@@ -44,8 +44,18 @@
44 44
 #ifndef CONFIGURATION_H
45 45
 #define CONFIGURATION_H
46 46
 
47
-#include "boards.h"
48
-#include "macros.h"
47
+/**
48
+ *
49
+ *  ***********************************
50
+ *  **  ATTENTION TO ALL DEVELOPERS  **
51
+ *  ***********************************
52
+ *
53
+ * You must increment this version number for every significant change such as,
54
+ * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option.
55
+ *
56
+ * Note: Update also Version.h !
57
+ */
58
+#define CONFIGURATION_H_VERSION 010100
49 59
 
50 60
 //===========================================================================
51 61
 //============================= Getting Started =============================
@@ -79,20 +89,26 @@
79 89
 
80 90
 // @section info
81 91
 
82
-#if ENABLED(USE_AUTOMATIC_VERSIONING)
83
-  #include "_Version.h"
84
-#else
85
-  #include "Version.h"
86
-#endif
87
-
88 92
 // User-specified version info of this build to display in [Pronterface, etc] terminal window during
89 93
 // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
90 94
 // build by the user have been successfully uploaded into firmware.
91 95
 #define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes.
92 96
 #define SHOW_BOOTSCREEN
93
-#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during bootup in line 1
94
-//#define STRING_SPLASH_LINE2 STRING_DISTRIBUTION_DATE // will be shown during bootup in line 2
97
+#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during boot in line 1
98
+#define STRING_SPLASH_LINE2 WEBSITE_URL         // will be shown during boot in line 2
95 99
 
100
+//
101
+// *** VENDORS PLEASE READ *****************************************************
102
+//
103
+// Marlin now allow you to have a vendor boot image to be displayed on machine
104
+// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your
105
+// custom boot image and them the default Marlin boot image is shown.
106
+//
107
+// We suggest for you to take advantage of this new feature and keep the Marlin
108
+// boot image unmodified. For an example have a look at the bq Hephestos 2
109
+// example configuration folder.
110
+//
111
+//#define SHOW_CUSTOM_BOOTSCREEN
96 112
 // @section machine
97 113
 
98 114
 // SERIAL_PORT selects which serial port should be used for communication with the host.
@@ -129,17 +145,40 @@
129 145
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
130 146
 //#define SINGLENOZZLE
131 147
 
148
+// A dual extruder that uses a single stepper motor
149
+// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z
150
+//#define SWITCHING_EXTRUDER
151
+#if ENABLED(SWITCHING_EXTRUDER)
152
+  #define SWITCHING_EXTRUDER_SERVO_NR 0
153
+  #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1
154
+  //#define HOTEND_OFFSET_Z {0.0, 0.0}
155
+#endif
156
+
157
+/**
158
+ * "Mixing Extruder"
159
+ *   - Adds a new code, M165, to set the current mix factors.
160
+ *   - Extends the stepping routines to move multiple steppers in proportion to the mix.
161
+ *   - Optional support for Repetier Host M163, M164, and virtual extruder.
162
+ *   - This implementation supports only a single extruder.
163
+ *   - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
164
+ */
165
+//#define MIXING_EXTRUDER
166
+#if ENABLED(MIXING_EXTRUDER)
167
+  #define MIXING_STEPPERS 2        // Number of steppers in your mixing extruder
168
+  #define MIXING_VIRTUAL_TOOLS 16  // Use the Virtual Tool method with M163 and M164
169
+  //#define DIRECT_MIXING_IN_G1    // Allow ABCDHI mix factors in G1 movement commands
170
+#endif
171
+
132 172
 // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
133 173
 // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
134 174
 // For the other hotends it is their distance from the extruder 0 hotend.
135
-//#define EXTRUDER_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
136
-//#define EXTRUDER_OFFSET_Y {0.0, 5.00}  // (in mm) for each extruder, offset of the hotend on the Y axis
175
+//#define HOTEND_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
176
+//#define HOTEND_OFFSET_Y {0.0, 5.00}  // (in mm) for each extruder, offset of the hotend on the Y axis
137 177
 
138 178
 //// The following define selects which power supply you have. Please choose the one that matches your setup
139 179
 // 1 = ATX
140 180
 // 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC)
141 181
 // :{1:'ATX',2:'X-Box 360'}
142
-
143 182
 #define POWER_SUPPLY 1
144 183
 
145 184
 // Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it.
@@ -174,6 +213,7 @@
174 213
 // 13 is 100k Hisens 3950  1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE"
175 214
 // 20 is the PT100 circuit found in the Ultimainboard V2.x
176 215
 // 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950
216
+// 66 is 4.7M High Temperature thermistor from Dyze Design
177 217
 // 70 is the 100K thermistor found in the bq Hephestos 2
178 218
 //
179 219
 //    1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k
@@ -190,7 +230,7 @@
190 230
 //     Use it for Testing or Development purposes. NEVER for production machine.
191 231
 //#define DUMMY_THERMISTOR_998_VALUE 25
192 232
 //#define DUMMY_THERMISTOR_999_VALUE 100
193
-// :{ '0': "Not used", '4': "10k !! do not use for a hotend. Bad resolution at high temp. !!", '1': "100k / 4.7k - EPCOS", '51': "100k / 1k - EPCOS", '6': "100k / 4.7k EPCOS - Not as accurate as Table 1", '5': "100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '7': "100k / 4.7k Honeywell 135-104LAG-J01", '71': "100k / 4.7k Honeywell 135-104LAF-J01", '8': "100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT", '9': "100k / 4.7k GE Sensing AL03006-58.2K-97-G1", '10': "100k / 4.7k RS 198-961", '11': "100k / 4.7k beta 3950 1%", '12': "100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)", '13': "100k Hisens 3950  1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'", '60': "100k Maker's Tool Works Kapton Bed Thermistor beta=3950", '55': "100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '2': "200k / 4.7k - ATC Semitec 204GT-2", '52': "200k / 1k - ATC Semitec 204GT-2", '-3': "Thermocouple + MAX31855 (only for sensor 0)", '-2': "Thermocouple + MAX6675 (only for sensor 0)", '-1': "Thermocouple + AD595", '3': "Mendel-parts / 4.7k", '1047': "Pt1000 / 4.7k", '1010': "Pt1000 / 1k (non standard)", '20': "PT100 (Ultimainboard V2.x)", '147': "Pt100 / 4.7k", '110': "Pt100 / 1k (non-standard)", '998': "Dummy 1", '999': "Dummy 2" }
233
+// :{ '0': "Not used",'1':"100k / 4.7k - EPCOS",'2':"200k / 4.7k - ATC Semitec 204GT-2",'3':"Mendel-parts / 4.7k",'4':"10k !! do not use for a hotend. Bad resolution at high temp. !!",'5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'6':"100k / 4.7k EPCOS - Not as accurate as Table 1",'7':"100k / 4.7k Honeywell 135-104LAG-J01",'8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT",'9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1",'10':"100k / 4.7k RS 198-961",'11':"100k / 4.7k beta 3950 1%",'12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)",'13':"100k Hisens 3950  1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'",'20':"PT100 (Ultimainboard V2.x)",'51':"100k / 1k - EPCOS",'52':"200k / 1k - ATC Semitec 204GT-2",'55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950",'66':"Dyze Design 4.7M High Temperature thermistor",'70':"the 100K thermistor found in the bq Hephestos 2",'71':"100k / 4.7k Honeywell 135-104LAF-J01",'147':"Pt100 / 4.7k",'1047':"Pt1000 / 4.7k",'110':"Pt100 / 1k (non-standard)",'1010':"Pt1000 / 1k (non standard)",'-3':"Thermocouple + MAX31855 (only for sensor 0)",'-2':"Thermocouple + MAX6675 (only for sensor 0)",'-1':"Thermocouple + AD595",'998':"Dummy 1",'999':"Dummy 2" }
194 234
 #define TEMP_SENSOR_0 5
195 235
 #define TEMP_SENSOR_1 0
196 236
 #define TEMP_SENSOR_2 0
@@ -229,10 +269,6 @@
229 269
 #define HEATER_3_MAXTEMP 275
230 270
 #define BED_MAXTEMP 150
231 271
 
232
-// If you want the M105 heater power reported in watts, define the BED_WATTS, and (shared for all extruders) EXTRUDER_WATTS
233
-//#define EXTRUDER_WATTS (12.0*12.0/6.7) // P=U^2/R
234
-//#define BED_WATTS (12.0*12.0/1.1)      // P=U^2/R
235
-
236 272
 //===========================================================================
237 273
 //============================= PID Settings ================================
238 274
 //===========================================================================
@@ -247,8 +283,8 @@
247 283
   //#define PID_DEBUG // Sends debug data to the serial port.
248 284
   //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX
249 285
   //#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
250
-  //#define PID_PARAMS_PER_EXTRUDER // Uses separate PID parameters for each extruder (useful for mismatched extruders)
251
-                                    // Set/get with gcode: M301 E[extruder number, 0-2]
286
+  //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders)
287
+                                  // Set/get with gcode: M301 E[extruder number, 0-2]
252 288
   #define PID_FUNCTIONAL_RANGE 50 // If the temperature difference between the target temperature and the actual temperature
253 289
                                   // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max.
254 290
   #define PID_INTEGRAL_DRIVE_MAX PID_MAX  //limit for the integral term
@@ -415,18 +451,128 @@
415 451
 #endif
416 452
 
417 453
 // Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup).
418
-const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
419
-const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
420
-const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
421
-const bool X_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
422
-const bool Y_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
423
-const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
424
-const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
454
+#define X_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
455
+#define Y_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
456
+#define Z_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
457
+#define X_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
458
+#define Y_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
459
+#define Z_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
460
+#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
425 461
 
426 462
 //===========================================================================
427 463
 //============================= Z Probe Options =============================
428 464
 //===========================================================================
429 465
 
466
+//
467
+// Probe Type
468
+// Probes are sensors/switches that are activated / deactivated before/after use.
469
+//
470
+// Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc.
471
+// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below.
472
+//
473
+// Use M851 to set the Z probe vertical offset from the nozzle. Store with M500.
474
+//
475
+
476
+// A Fix-Mounted Probe either doesn't deploy or needs manual deployment.
477
+// For example an inductive probe, or a setup that uses the nozzle to probe.
478
+// An inductive probe must be deactivated to go below
479
+// its trigger-point if hardware endstops are active.
480
+//#define FIX_MOUNTED_PROBE
481
+
482
+// The BLTouch probe emulates a servo probe.
483
+//#define BLTOUCH
484
+
485
+// Z Servo Probe, such as an endstop switch on a rotating arm.
486
+//#define Z_ENDSTOP_SERVO_NR 0
487
+//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles
488
+
489
+// Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
490
+//#define Z_PROBE_SLED
491
+//#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.
492
+
493
+// Z Probe to nozzle (X,Y) offset, relative to (0, 0).
494
+// X and Y offsets must be integers.
495
+//
496
+// In the following example the X and Y offsets are both positive:
497
+// #define X_PROBE_OFFSET_FROM_EXTRUDER 10
498
+// #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
499
+//
500
+//    +-- BACK ---+
501
+//    |           |
502
+//  L |    (+) P  | R <-- probe (20,20)
503
+//  E |           | I
504
+//  F | (-) N (+) | G <-- nozzle (10,10)
505
+//  T |           | H
506
+//    |    (-)    | T
507
+//    |           |
508
+//    O-- FRONT --+
509
+//  (0,0)
510
+#define X_PROBE_OFFSET_FROM_EXTRUDER -23 // KosselPro actual: -22.919
511
+#define Y_PROBE_OFFSET_FROM_EXTRUDER -6  // KosselPro actual: -6.304
512
+// Kossel Pro note: The correct value is likely -17.45 but I'd rather err on the side of
513
+// not giving someone a head crash. Use something like G29 Z-0.2 to adjust as needed.
514
+#define Z_PROBE_OFFSET_FROM_EXTRUDER -17.25  // Increase this if the first layer is too thin (remember: it's a negative number so increase means closer to zero).
515
+
516
+// X and Y axis travel speed (mm/m) between probes
517
+#define XY_PROBE_SPEED 8000
518
+// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
519
+#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
520
+// Speed for the "accurate" probe of each point
521
+#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
522
+// Use double touch for probing
523
+//#define PROBE_DOUBLE_TOUCH
524
+
525
+// Allen key retractable z-probe as seen on many Kossel delta printers - http://reprap.org/wiki/Kossel#Automatic_bed_leveling_probe
526
+// Deploys by touching z-axis belt. Retracts by pushing the probe down. Uses Z_MIN_PIN.
527
+#define Z_PROBE_ALLEN_KEY
528
+
529
+#if ENABLED(Z_PROBE_ALLEN_KEY)
530
+  // 2 or 3 sets of coordinates for deploying and retracting the spring loaded touch probe on G29,
531
+  // if servo actuated touch probe is not defined. Uncomment as appropriate for your printer/probe.
532
+
533
+  // Kossel Pro
534
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_1_X -105.00 // Move left but not quite so far that we'll bump the belt
535
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_1_Y 0.00
536
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_1_Z 100.0
537
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE XY_PROBE_SPEED
538
+
539
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_2_X -110.00 // Move outward to position deploy pin to the left of the arm
540
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_2_Y -125.00
541
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_2_Z Z_PROBE_ALLEN_KEY_DEPLOY_1_Z
542
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE XY_PROBE_SPEED
543
+
544
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_3_X Z_PROBE_ALLEN_KEY_DEPLOY_2_X * 0.75
545
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_3_Y Z_PROBE_ALLEN_KEY_DEPLOY_2_Y * 0.75
546
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_3_Z Z_PROBE_ALLEN_KEY_DEPLOY_2_Z
547
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE XY_PROBE_SPEED
548
+
549
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_3_X 45.00 // Move right to trigger deploy pin
550
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_3_Y -125.00
551
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_3_Z Z_PROBE_ALLEN_KEY_DEPLOY_2_Z
552
+  #define Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE (XY_PROBE_SPEED)/2
553
+
554
+  #define Z_PROBE_ALLEN_KEY_STOW_1_X 36.00 // Line up with bed retaining clip
555
+  #define Z_PROBE_ALLEN_KEY_STOW_1_Y -125.00
556
+  #define Z_PROBE_ALLEN_KEY_STOW_1_Z 75.0
557
+  #define Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE XY_PROBE_SPEED
558
+
559
+  #define Z_PROBE_ALLEN_KEY_STOW_2_X Z_PROBE_ALLEN_KEY_STOW_1_X // move down to retract probe
560
+  #define Z_PROBE_ALLEN_KEY_STOW_2_Y Z_PROBE_ALLEN_KEY_STOW_1_Y
561
+  #define Z_PROBE_ALLEN_KEY_STOW_2_Z 0.0
562
+  #define Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE (XY_PROBE_SPEED)/2
563
+
564
+  #define Z_PROBE_ALLEN_KEY_STOW_3_X 0.0  // return to 0,0,100
565
+  #define Z_PROBE_ALLEN_KEY_STOW_3_Y 0.0
566
+  #define Z_PROBE_ALLEN_KEY_STOW_3_Z 100.0
567
+  #define Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE XY_PROBE_SPEED
568
+
569
+  #define Z_PROBE_ALLEN_KEY_STOW_4_X 0.0
570
+  #define Z_PROBE_ALLEN_KEY_STOW_4_Y 0.0
571
+  #define Z_PROBE_ALLEN_KEY_STOW_4_Z Z_PROBE_ALLEN_KEY_STOW_3_Z
572
+  #define Z_PROBE_ALLEN_KEY_STOW_4_FEEDRATE XY_PROBE_SPEED
573
+
574
+#endif // Z_PROBE_ALLEN_KEY
575
+
430 576
 // Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z Probe and a Z-min-endstop on the same machine.
431 577
 // With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing.
432 578
 //
@@ -438,7 +584,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
438 584
 // To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN.
439 585
 //
440 586
 // For a servo-based Z probe, you must set up servo support below, including
441
-// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES.
587
+// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and Z_SERVO_ANGLES.
442 588
 //
443 589
 // - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin.
444 590
 // - Use 5V for powered (usu. inductive) sensors.
@@ -471,6 +617,21 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
471 617
 // If you're using the Z MIN endstop connector for your Z probe, this has no effect.
472 618
 //#define DISABLE_Z_MIN_PROBE_ENDSTOP
473 619
 
620
+// Enable Z Probe Repeatability test to see how accurate your probe is
621
+//#define Z_MIN_PROBE_REPEATABILITY_TEST
622
+
623
+//
624
+// Probe Raise options provide clearance for the probe to deploy, stow, and travel.
625
+//
626
+#define Z_PROBE_DEPLOY_HEIGHT 100 // Raise to make room for the probe to deploy / stow
627
+#define Z_PROBE_TRAVEL_HEIGHT 5  // Raise between probing points.
628
+
629
+//
630
+// For M851 give a range for adjusting the Z probe offset
631
+//
632
+#define Z_PROBE_OFFSET_RANGE_MIN -15
633
+#define Z_PROBE_OFFSET_RANGE_MAX   5
634
+
474 635
 // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
475 636
 // :{0:'Low',1:'High'}
476 637
 #define X_ENABLE_ON 0
@@ -507,8 +668,9 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
507 668
 #define INVERT_E3_DIR false
508 669
 
509 670
 // @section homing
510
-//#define MIN_Z_HEIGHT_FOR_HOMING 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
511
-                                    // Be sure you have this distance over your Z_MAX_POS in case.
671
+
672
+//#define Z_HOMING_HEIGHT 4  // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
673
+                             // Be sure you have this distance over your Z_MAX_POS in case.
512 674
 
513 675
 // ENDSTOP SETTINGS:
514 676
 // Sets direction of endstops when homing; 1=MAX, -1=MIN
@@ -538,7 +700,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
538 700
                                  // It is assumed that when logic high = filament available
539 701
                                  //                    when logic  low = filament ran out
540 702
 #if ENABLED(FILAMENT_RUNOUT_SENSOR)
541
-  const bool FIL_RUNOUT_INVERTING = true;  // Should be uncommented and true or false should assigned
703
+  const bool FIL_RUNOUT_INVERTING = false; // set to true to invert the logic of the sensor.
542 704
   #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined.
543 705
   #define FILAMENT_RUNOUT_SCRIPT "M600"
544 706
 #endif
@@ -550,10 +712,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
550 712
 //#define MESH_BED_LEVELING    // Enable mesh bed leveling.
551 713
 
552 714
 #if ENABLED(MESH_BED_LEVELING)
553
-  #define MESH_MIN_X 10
554
-  #define MESH_MAX_X (X_MAX_POS - (MESH_MIN_X))
555
-  #define MESH_MIN_Y 10
556
-  #define MESH_MAX_Y (Y_MAX_POS - (MESH_MIN_Y))
715
+  #define MESH_INSET 10        // Mesh inset margin on print area
557 716
   #define MESH_NUM_X_POINTS 3  // Don't use more than 7 points per axis, implementation limited.
558 717
   #define MESH_NUM_Y_POINTS 3
559 718
   #define MESH_HOME_SEARCH_Z 4  // Z after Home, bed somewhere below but above 0.0.
@@ -575,8 +734,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
575 734
 // @section bedlevel
576 735
 
577 736
 #define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line)
737
+
738
+// Enable this feature to get detailed logging of G28, G29, M48, etc.
739
+// Logging is off by default. Enable this logging feature with 'M111 S32'.
740
+// NOTE: Requires a huge amount of PROGMEM.
578 741
 //#define DEBUG_LEVELING_FEATURE
579
-//#define Z_MIN_PROBE_REPEATABILITY_TEST  // If not commented out, Z Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
580 742
 
581 743
 #if ENABLED(AUTO_BED_LEVELING_FEATURE)
582 744
 
@@ -623,141 +785,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
623 785
     #define ABL_PROBE_PT_3_X 170
624 786
     #define ABL_PROBE_PT_3_Y 20
625 787
 
626
-  #endif // AUTO_BED_LEVELING_GRID
627
-
628
-  // Z Probe to nozzle (X,Y) offset, relative to (0, 0).
629
-  // X and Y offsets must be integers.
630
-  //
631
-  // In the following example the X and Y offsets are both positive:
632
-  // #define X_PROBE_OFFSET_FROM_EXTRUDER 10
633
-  // #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
634
-  //
635
-  //    +-- BACK ---+
636
-  //    |           |
637
-  //  L |    (+) P  | R <-- probe (20,20)
638
-  //  E |           | I
639
-  //  F | (-) N (+) | G <-- nozzle (10,10)
640
-  //  T |           | H
641
-  //    |    (-)    | T
642
-  //    |           |
643
-  //    O-- FRONT --+
644
-  //  (0,0)
645
-  #define X_PROBE_OFFSET_FROM_EXTRUDER -23 // KosselPro actual: -22.919
646
-  #define Y_PROBE_OFFSET_FROM_EXTRUDER -6  // KosselPro actual: -6.304
647
-  // Kossel Pro note: The correct value is likely -17.45 but I'd rather err on the side of
648
-  // not giving someone a head crash. Use something like G29 Z-0.2 to adjust as needed.
649
-  #define Z_PROBE_OFFSET_FROM_EXTRUDER -17.25  // Increase this if the first layer is too thin (remember: it's a negative number so increase means closer to zero).
650
-
651
-  #define XY_TRAVEL_SPEED 8000         // X and Y axis travel speed between probes, in mm/min.
652
-
653
-  #define Z_RAISE_BEFORE_PROBING 100  // How much the Z axis will be raised before traveling to the first probing point.
654
-  #define Z_RAISE_BETWEEN_PROBINGS 5  // How much the Z axis will be raised when traveling from between next probing points.
655
-  #define Z_RAISE_AFTER_PROBING 15    // How much the Z axis will be raised after the last probing point.
788
+  #endif // !AUTO_BED_LEVELING_GRID
656 789
 
657 790
   //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine.
658 791
                                                                              // Useful to retract a deployable Z probe.
659 792
 
660
-  // Probes are sensors/switches that need to be activated before they can be used
661
-  // and deactivated after their use.
662
-  // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE
663
-
664
-  // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER
665
-  // when the hardware endstops are active.
666
-  //#define FIX_MOUNTED_PROBE
667
-
668
-  // A Servo Probe can be defined in the servo section below.
669
-
670
-  // An Allen Key Probe is currently predefined only in the delta example configurations.
671
-
672
-  // Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
673
-  //#define Z_PROBE_SLED
674
-  //#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.
675
-
676
-  // A Mechanical Probe is any probe that either doesn't deploy or needs manual deployment
677
-  // For example any setup that uses the nozzle itself as a probe.
678
-  //#define MECHANICAL_PROBE
679
-
680
-  // Allen key retractable z-probe as seen on many Kossel delta printers - http://reprap.org/wiki/Kossel#Automatic_bed_leveling_probe
681
-  // Deploys by touching z-axis belt. Retracts by pushing the probe down. Uses Z_MIN_PIN.
682
-  #define Z_PROBE_ALLEN_KEY
683
-
684
-  #if ENABLED(Z_PROBE_ALLEN_KEY)
685
-    // 2 or 3 sets of coordinates for deploying and retracting the spring loaded touch probe on G29,
686
-    // if servo actuated touch probe is not defined. Uncomment as appropriate for your printer/probe.
687
-
688
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_X 30.0
689
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_Y DELTA_PRINTABLE_RADIUS
690
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_Z 100.0
691
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE HOMING_FEEDRATE_XYZ
692
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_X 0.0
693
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_Y DELTA_PRINTABLE_RADIUS
694
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_Z 100.0
695
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE (HOMING_FEEDRATE_XYZ)/10
696
-
697
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_X -64.0 // Move the probe into position
698
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_Y 56.0
699
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_Z 23.0
700
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE HOMING_FEEDRATE_XYZ
701
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_X -64.0 // Push it down
702
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_Y 56.0
703
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_Z 3.0
704
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE (HOMING_FEEDRATE_XYZ)/10
705
-    //#define Z_PROBE_ALLEN_KEY_STOW_3_X -64.0 // Move it up to clear
706
-    //#define Z_PROBE_ALLEN_KEY_STOW_3_Y 56.0
707
-    //#define Z_PROBE_ALLEN_KEY_STOW_3_Z 50.0
708
-    //#define Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE HOMING_FEEDRATE_XYZ
709
-
710
-    // Kossel Mini
711
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_X 35.0
712
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_Y 72.0
713
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_Z 100.0
714
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE (HOMING_FEEDRATE_XYZ)/10
715
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_X 0.0
716
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_Y 0.0
717
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_Z 100.0
718
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE (HOMING_FEEDRATE_XYZ)/10
719
-
720
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_X -46.0 // Move the probe into position
721
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_Y 59.0
722
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_Z 28.0
723
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE HOMING_FEEDRATE_XYZ
724
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_X -46.0 // Move the nozzle down further to push the probe into retracted position.
725
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_Y 59.0
726
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_Z 8.0
727
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE (HOMING_FEEDRATE_XYZ)/10
728
-    //#define Z_PROBE_ALLEN_KEY_STOW_3_X -46.0 // Raise things back up slightly so we don't bump into anything
729
-    //#define Z_PROBE_ALLEN_KEY_STOW_3_Y 59.0
730
-    //#define Z_PROBE_ALLEN_KEY_STOW_3_Z 38.0
731
-    //#define Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE HOMING_FEEDRATE_XYZ
732
-
733
-    // Kossel Pro
734
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_1_X -105.00 // Move left but not quite so far that we'll bump the belt
735
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_1_Y 0.00
736
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_1_Z 100.0
737
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE HOMING_FEEDRATE_XYZ
738
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_2_X -110.00 // Move outward to position deploy pin to the left of the arm
739
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_2_Y -125.00
740
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_2_Z Z_PROBE_ALLEN_KEY_DEPLOY_1_Z
741
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE HOMING_FEEDRATE_XYZ
742
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_3_X 45.00 // Move right to trigger deploy pin
743
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_3_Y -125.00
744
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_3_Z Z_PROBE_ALLEN_KEY_DEPLOY_2_Z
745
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE (HOMING_FEEDRATE_XYZ)/2
746
-
747
-    #define Z_PROBE_ALLEN_KEY_STOW_1_X 36.00 // Line up with bed retaining clip
748
-    #define Z_PROBE_ALLEN_KEY_STOW_1_Y -125.00
749
-    #define Z_PROBE_ALLEN_KEY_STOW_1_Z 75.0
750
-    #define Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE HOMING_FEEDRATE_XYZ
751
-    #define Z_PROBE_ALLEN_KEY_STOW_2_X Z_PROBE_ALLEN_KEY_STOW_1_X // move down to retract probe
752
-    #define Z_PROBE_ALLEN_KEY_STOW_2_Y Z_PROBE_ALLEN_KEY_STOW_1_Y
753
-    #define Z_PROBE_ALLEN_KEY_STOW_2_Z 0.0
754
-    #define Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE (HOMING_FEEDRATE_XYZ)/2
755
-    #define Z_PROBE_ALLEN_KEY_STOW_3_X 0.0  // return to 0,0,100
756
-    #define Z_PROBE_ALLEN_KEY_STOW_3_Y 0.0
757
-    #define Z_PROBE_ALLEN_KEY_STOW_3_Z 100.0
758
-    #define Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE HOMING_FEEDRATE_XYZ
759
-  #endif
760
-
761 793
   // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing,
762 794
   // it is highly recommended you also enable Z_SAFE_HOMING below!
763 795
 
@@ -766,17 +798,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
766 798
 
767 799
 // @section homing
768 800
 
769
-// The position of the homing switches
770
-#define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used
771
-#define BED_CENTER_AT_0_0  // If defined, the center of the bed is at (X=0, Y=0)
801
+// The center of the bed is at (X=0, Y=0)
802
+#define BED_CENTER_AT_0_0
772 803
 
773
-// Manual homing switch locations:
774
-// For deltabots this means top and center of the Cartesian print volume.
775
-#if ENABLED(MANUAL_HOME_POSITIONS)
776
-  #define MANUAL_X_HOME_POS 0
777
-  #define MANUAL_Y_HOME_POS 0
778
-  #define MANUAL_Z_HOME_POS 277 // For delta: Distance between nozzle and print surface after homing.
779
-#endif
804
+// Manually set the home position. Leave these undefined for automatic settings.
805
+// For DELTA this is the top-center of the Cartesian print volume.
806
+//#define MANUAL_X_HOME_POS 0
807
+//#define MANUAL_Y_HOME_POS 0
808
+#define MANUAL_Z_HOME_POS 277 // Distance between the nozzle to printbed after homing
780 809
 
781 810
 // Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
782 811
 //
@@ -784,7 +813,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
784 813
 //
785 814
 // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
786 815
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
787
-// - Position the Z probe in a defined XY point before Z Homing when homing all axes (G28).
816
+// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
788 817
 // - Prevent Z homing when the Z probe is outside bed area.
789 818
 #define Z_SAFE_HOMING
790 819
 
@@ -794,16 +823,13 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
794 823
 #endif
795 824
 
796 825
 
797
-// @section movement
798
-
799
-/**
800
- * MOVEMENT SETTINGS
801
- */
826
+// Delta only homes to Z
827
+#define HOMING_FEEDRATE_Z  (200*60)
802 828
 
803
-// delta homing speeds must be the same on xyz
804
-#define HOMING_FEEDRATE_XYZ (200*60)
805
-#define HOMING_FEEDRATE_E 0
806
-#define HOMING_FEEDRATE { HOMING_FEEDRATE_XYZ, HOMING_FEEDRATE_XYZ, HOMING_FEEDRATE_XYZ, HOMING_FEEDRATE_E }
829
+//
830
+// MOVEMENT SETTINGS
831
+// @section motion
832
+//
807 833
 
808 834
 #define XYZ_FULL_STEPS_PER_ROTATION 200
809 835
 #define XYZ_MICROSTEPS 32
@@ -831,18 +857,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
831 857
 //============================= Additional Features ===========================
832 858
 //=============================================================================
833 859
 
834
-// @section more
835
-
836
-// Custom M code points
837
-#define CUSTOM_M_CODES
838
-#if ENABLED(CUSTOM_M_CODES)
839
-  #if ENABLED(AUTO_BED_LEVELING_FEATURE)
840
-    #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851
841
-    #define Z_PROBE_OFFSET_RANGE_MIN -15
842
-    #define Z_PROBE_OFFSET_RANGE_MAX -5
843
-  #endif
844
-#endif
845
-
846 860
 // @section extras
847 861
 
848 862
 //
@@ -874,22 +888,107 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
874 888
 //
875 889
 //#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose
876 890
 
891
+//
892
+// G20/G21 Inch mode support
893
+//
894
+//#define INCH_MODE_SUPPORT
895
+
896
+//
897
+// M149 Set temperature units support
898
+//
899
+//#define TEMPERATURE_UNITS_SUPPORT
900
+
877 901
 // @section temperature
878 902
 
879 903
 // Preheat Constants
880
-#define PLA_PREHEAT_HOTEND_TEMP 180
881
-#define PLA_PREHEAT_HPB_TEMP 70
882
-#define PLA_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
904
+#define PREHEAT_1_TEMP_HOTEND 180
905
+#define PREHEAT_1_TEMP_BED     70
906
+#define PREHEAT_1_FAN_SPEED   255 // Value from 0 to 255
907
+
908
+#define PREHEAT_2_TEMP_HOTEND 240
909
+#define PREHEAT_2_TEMP_BED    100
910
+#define PREHEAT_2_FAN_SPEED   255 // Value from 0 to 255
911
+
912
+//
913
+// Nozzle Park -- EXPERIMENTAL
914
+//
915
+// When enabled allows the user to define a special XYZ position, inside the
916
+// machine's topology, to park the nozzle when idle or when receiving the G27
917
+// command.
918
+//
919
+// The "P" paramenter controls what is the action applied to the Z axis:
920
+//    P0: (Default) If current Z-pos is lower than Z-park then the nozzle will
921
+//        be raised to reach Z-park height.
922
+//
923
+//    P1: No matter the current Z-pos, the nozzle will be raised/lowered to
924
+//        reach Z-park height.
925
+//
926
+//    P2: The nozzle height will be raised by Z-park amount but never going over
927
+//        the machine's limit of Z_MAX_POS.
928
+//
929
+//#define NOZZLE_PARK_FEATURE
930
+
931
+#if ENABLED(NOZZLE_PARK_FEATURE)
932
+  // Specify a park position as { X, Y, Z }
933
+  #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 }
934
+#endif
935
+
936
+//
937
+// Clean Nozzle Feature -- EXPERIMENTAL
938
+//
939
+// When enabled allows the user to send G12 to start the nozzle cleaning
940
+// process, the G-Code accepts two parameters:
941
+//   "P" for pattern selection
942
+//   "S" for defining the number of strokes/repetitions
943
+//
944
+// Available list of patterns:
945
+//   P0: This is the default pattern, this process requires a sponge type
946
+//       material at a fixed bed location, the cleaning process is based on
947
+//       "strokes" i.e. back-and-forth movements between the starting and end
948
+//       points.
949
+//
950
+//   P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T"
951
+//       defines the number of zig-zag triangles to be done. "S" defines the
952
+//       number of strokes aka one back-and-forth movement. As an example
953
+//       sending "G12 P1 S1 T3" will execute:
954
+//
955
+//          --
956
+//         |  (X0, Y1) |     /\        /\        /\     | (X1, Y1)
957
+//         |           |    /  \      /  \      /  \    |
958
+//       A |           |   /    \    /    \    /    \   |
959
+//         |           |  /      \  /      \  /      \  |
960
+//         |  (X0, Y0) | /        \/        \/        \ | (X1, Y0)
961
+//          --         +--------------------------------+
962
+//                       |________|_________|_________|
963
+//                           T1        T2        T3
964
+//
965
+// Caveats: End point Z should use the same value as Start point Z.
966
+//
967
+// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments
968
+// may change to add new functionality like different wipe patterns.
969
+//
970
+//#define NOZZLE_CLEAN_FEATURE
971
+
972
+#if ENABLED(NOZZLE_CLEAN_FEATURE)
973
+  // Number of pattern repetitions
974
+  #define NOZZLE_CLEAN_STROKES  12
975
+
976
+  // Specify positions as { X, Y, Z }
977
+  #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)}
978
+  #define NOZZLE_CLEAN_END_POINT   {100, 60, (Z_MIN_POS + 1)}
883 979
 
884
-#define ABS_PREHEAT_HOTEND_TEMP 240
885
-#define ABS_PREHEAT_HPB_TEMP 100
886
-#define ABS_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
980
+  // Moves the nozzle to the initial position
981
+  #define NOZZLE_CLEAN_GOBACK
982
+#endif
887 983
 
888 984
 //
889 985
 // Print job timer
890 986
 //
891 987
 // Enable this option to automatically start and stop the
892
-// print job timer when M104 and M109 commands are received.
988
+// print job timer when M104/M109/M190 commands are received.
989
+// M104 (extruder without wait) - high temp = none, low temp = stop timer
990
+// M109 (extruder with wait) - high temp = start timer, low temp = stop timer
991
+// M190 (bed with wait) - high temp = start timer, low temp = none
893 992
 //
894 993
 // In all cases the timer can be started and stopped using
895 994
 // the following commands:
@@ -922,8 +1021,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
922 1021
 //
923 1022
 // Here you may choose the language used by Marlin on the LCD menus, the following
924 1023
 // list of languages are available:
925
-//    en, pl, fr, de, es, ru, bg, it, pt, pt_utf8, pt-br, pt-br_utf8,
926
-//    fi, an, nl, ca, eu, kana, kana_utf8, cn, cz, test
1024
+//    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
1025
+//    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
1026
+//
1027
+// :{'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','test':'TEST'}
927 1028
 //
928 1029
 #define LCD_LANGUAGE en
929 1030
 
@@ -1071,6 +1172,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1071 1172
 //#define ULTIPANEL
1072 1173
 
1073 1174
 //
1175
+// Cartesio UI
1176
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1177
+//
1178
+//#define CARTESIO_UI
1179
+
1180
+//
1074 1181
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
1075 1182
 // http://reprap.org/wiki/PanelOne
1076 1183
 //
@@ -1083,6 +1190,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1083 1190
 //#define MAKRPANEL
1084 1191
 
1085 1192
 //
1193
+// ReprapWorld Graphical LCD
1194
+// https://reprapworld.com/?products_details&products_id/1218
1195
+//
1196
+//#define REPRAPWORLD_GRAPHICAL_LCD
1197
+
1198
+//
1086 1199
 // Activate one of these if you have a Panucatt Devices
1087 1200
 // Viki 2.0 or mini Viki with Graphic LCD
1088 1201
 // http://panucatt.com
@@ -1132,7 +1245,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1132 1245
 // is pressed, a value of 10.0 means 10mm per click.
1133 1246
 //
1134 1247
 //#define REPRAPWORLD_KEYPAD
1135
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1248
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1136 1249
 
1137 1250
 //
1138 1251
 // RigidBot Panel V1.0
@@ -1193,6 +1306,15 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1193 1306
 //#define U8GLIB_SSD1306
1194 1307
 
1195 1308
 //
1309
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1310
+//
1311
+//#define SAV_3DGLCD
1312
+#if ENABLED(SAV_3DGLCD)
1313
+  //#define U8GLIB_SSD1306
1314
+  #define U8GLIB_SH1106
1315
+#endif
1316
+
1317
+//
1196 1318
 // CONTROLLER TYPE: Shift register panels
1197 1319
 //
1198 1320
 // 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH
@@ -1220,7 +1342,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1220 1342
 // at zero value, there are 128 effective control positions.
1221 1343
 #define SOFT_PWM_SCALE 0
1222 1344
 
1223
-// Temperature status LEDs that display the hotend and bet temperature.
1345
+// Temperature status LEDs that display the hotend and bed temperature.
1224 1346
 // If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
1225 1347
 // Otherwise the RED led is on. There is 1C hysteresis.
1226 1348
 //#define TEMP_STAT_LEDS
@@ -1252,28 +1374,16 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1252 1374
 //
1253 1375
 //#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
1254 1376
 
1255
-// Servo Endstops
1256
-//
1257
-// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes.
1258
-// Use M851 to set the Z probe vertical offset from the nozzle. Store that setting with M500.
1259
-//
1260
-//#define X_ENDSTOP_SERVO_NR 1
1261
-//#define Y_ENDSTOP_SERVO_NR 2
1262
-//#define Z_ENDSTOP_SERVO_NR 0
1263
-//#define SERVO_ENDSTOP_ANGLES {{0,0}, {0,0}, {70,0}} // X,Y,Z Axis Extend and Retract angles
1377
+// Delay (in microseconds) before the next move will start, to give the servo time to reach its target angle.
1378
+// 300ms is a good value but you can try less delay.
1379
+// If the servo can't reach the requested position, increase it.
1380
+#define SERVO_DELAY 300
1264 1381
 
1265 1382
 // Servo deactivation
1266 1383
 //
1267 1384
 // With this option servos are powered only during movement, then turned off to prevent jitter.
1268 1385
 //#define DEACTIVATE_SERVOS_AFTER_MOVE
1269 1386
 
1270
-#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE)
1271
-  // Delay (in microseconds) before turning the servo off. This depends on the servo speed.
1272
-  // 300ms is a good value but you can try less delay.
1273
-  // If the servo can't reach the requested position, increase it.
1274
-  #define SERVO_DEACTIVATION_DELAY 300
1275
-#endif
1276
-
1277 1387
 /**********************************************************************\
1278 1388
  * Support for a filament diameter sensor
1279 1389
  * Also allows adjustment of diameter at print time (vs  at slicing)
@@ -1304,7 +1414,4 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1304 1414
   //#define FILAMENT_LCD_DISPLAY
1305 1415
 #endif
1306 1416
 
1307
-#include "Configuration_adv.h"
1308
-#include "thermistortables.h"
1309
-
1310
-#endif //CONFIGURATION_H
1417
+#endif // CONFIGURATION_H

+ 148
- 47
Marlin/example_configurations/delta/kossel_pro/Configuration_adv.h Parādīt failu

@@ -38,7 +38,18 @@
38 38
 #ifndef CONFIGURATION_ADV_H
39 39
 #define CONFIGURATION_ADV_H
40 40
 
41
-#include "Conditionals.h"
41
+/**
42
+ *
43
+ *  ***********************************
44
+ *  **  ATTENTION TO ALL DEVELOPERS  **
45
+ *  ***********************************
46
+ *
47
+ * You must increment this version number for every significant change such as,
48
+ * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option.
49
+ *
50
+ * Note: Update also Version.h !
51
+ */
52
+#define CONFIGURATION_ADV_H_VERSION 010100
42 53
 
43 54
 // @section temperature
44 55
 
@@ -107,8 +118,8 @@
107 118
 #if ENABLED(PIDTEMP)
108 119
   // this adds an experimental additional term to the heating power, proportional to the extrusion speed.
109 120
   // if Kc is chosen well, the additional required power due to increased melting should be compensated.
110
-  #define PID_ADD_EXTRUSION_RATE
111
-  #if ENABLED(PID_ADD_EXTRUSION_RATE)
121
+  //#define PID_EXTRUSION_SCALING
122
+  #if ENABLED(PID_EXTRUSION_SCALING)
112 123
     #define DEFAULT_Kc (100) //heating power=Kc*(e_speed)
113 124
     #define LPQ_MAX_LEN 50
114 125
   #endif
@@ -133,15 +144,42 @@
133 144
 //The M105 command return, besides traditional information, the ADC value read from temperature sensors.
134 145
 //#define SHOW_TEMP_ADC_VALUES
135 146
 
147
+/**
148
+ * High Temperature Thermistor Support
149
+ *
150
+ * Thermistors able to support high temperature tend to have a hard time getting
151
+ * good readings at room and lower temperatures. This means HEATER_X_RAW_LO_TEMP
152
+ * will probably be caught when the heating element first turns on during the
153
+ * preheating process, which will trigger a min_temp_error as a safety measure
154
+ * and force stop everything.
155
+ * To circumvent this limitation, we allow for a preheat time (during which,
156
+ * min_temp_error won't be triggered) and add a min_temp buffer to handle
157
+ * aberrant readings.
158
+ *
159
+ * If you want to enable this feature for your hotend thermistor(s)
160
+ * uncomment and set values > 0 in the constants below
161
+ */
162
+
163
+// The number of consecutive low temperature errors that can occur
164
+// before a min_temp_error is triggered. (Shouldn't be more than 10.)
165
+//#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 0
166
+
167
+// The number of milliseconds a hotend will preheat before starting to check
168
+// the temperature. This value should NOT be set to the time it takes the
169
+// hot end to reach the target temperature, but the time it takes to reach
170
+// the minimum temperature your thermistor can read. The lower the better/safer.
171
+// This shouldn't need to be more than 30 seconds (30000)
172
+//#define MILLISECONDS_PREHEAT_TIME 0
173
+
136 174
 // @section extruder
137 175
 
138 176
 //  extruder run-out prevention.
139 177
 //if the machine is idle, and the temperature over MINTEMP, every couple of SECONDS some filament is extruded
140 178
 //#define EXTRUDER_RUNOUT_PREVENT
141 179
 #define EXTRUDER_RUNOUT_MINTEMP 190
142
-#define EXTRUDER_RUNOUT_SECONDS 30.
143
-#define EXTRUDER_RUNOUT_ESTEPS 14. //mm filament
144
-#define EXTRUDER_RUNOUT_SPEED 1500.  //extrusion speed
180
+#define EXTRUDER_RUNOUT_SECONDS 30
181
+#define EXTRUDER_RUNOUT_ESTEPS 14   // mm filament
182
+#define EXTRUDER_RUNOUT_SPEED 1500  // extrusion speed
145 183
 #define EXTRUDER_RUNOUT_EXTRUDE 100
146 184
 
147 185
 // @section temperature
@@ -182,24 +220,42 @@
182 220
 #define EXTRUDER_AUTO_FAN_TEMPERATURE 50
183 221
 #define EXTRUDER_AUTO_FAN_SPEED   255  // == full speed
184 222
 
185
-
186 223
 //===========================================================================
187
-//=============================Mechanical Settings===========================
224
+//============================ Mechanical Settings ==========================
188 225
 //===========================================================================
189 226
 
190 227
 // @section homing
191 228
 
192
-#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing
229
+// If you want endstops to stay on (by default) even when not homing
230
+// enable this option. Override at any time with M120, M121.
231
+//#define ENDSTOPS_ALWAYS_ON_DEFAULT
193 232
 
194 233
 // @section extras
195 234
 
196 235
 //#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
197 236
 
237
+// Dual X Steppers
238
+// Uncomment this option to drive two X axis motors.
239
+// The next unused E driver will be assigned to the second X stepper.
240
+//#define X_DUAL_STEPPER_DRIVERS
241
+#if ENABLED(X_DUAL_STEPPER_DRIVERS)
242
+  // Set true if the two X motors need to rotate in opposite directions
243
+  #define INVERT_X2_VS_X_DIR true
244
+#endif
245
+
246
+
247
+// Dual Y Steppers
248
+// Uncomment this option to drive two Y axis motors.
249
+// The next unused E driver will be assigned to the second Y stepper.
250
+//#define Y_DUAL_STEPPER_DRIVERS
251
+#if ENABLED(Y_DUAL_STEPPER_DRIVERS)
252
+  // Set true if the two Y motors need to rotate in opposite directions
253
+  #define INVERT_Y2_VS_Y_DIR true
254
+#endif
255
+
198 256
 // A single Z stepper driver is usually used to drive 2 stepper motors.
199
-// Uncomment this define to utilize a separate stepper driver for each Z axis motor.
200
-// Only a few motherboards support this, like RAMPS, which have dual extruder support (the 2nd, often unused, extruder driver is used
201
-// to control the 2nd Z axis stepper motor). The pins are currently only defined for a RAMPS motherboards.
202
-// On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder.
257
+// Uncomment this option to use a separate stepper driver for each Z axis motor.
258
+// The next unused E driver will be assigned to the second Z stepper.
203 259
 //#define Z_DUAL_STEPPER_DRIVERS
204 260
 
205 261
 #if ENABLED(Z_DUAL_STEPPER_DRIVERS)
@@ -221,14 +277,6 @@
221 277
 
222 278
 #endif // Z_DUAL_STEPPER_DRIVERS
223 279
 
224
-// Same again but for Y Axis.
225
-//#define Y_DUAL_STEPPER_DRIVERS
226
-
227
-#if ENABLED(Y_DUAL_STEPPER_DRIVERS)
228
-  // Define if the two Y drives need to rotate in opposite directions
229
-  #define INVERT_Y2_VS_Y_DIR true
230
-#endif
231
-
232 280
 // Enable this for dual x-carriage printers.
233 281
 // A dual x-carriage design has the advantage that the inactive extruder can be parked which
234 282
 // prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
@@ -242,7 +290,7 @@
242 290
   #define X2_MAX_POS 353    // set maximum to the distance between toolheads when both heads are homed
243 291
   #define X2_HOME_DIR 1     // the second X-carriage always homes to the maximum endstop position
244 292
   #define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position
245
-      // However: In this mode the EXTRUDER_OFFSET_X value for the second extruder provides a software
293
+      // However: In this mode the HOTEND_OFFSET_X value for the second extruder provides a software
246 294
       // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops
247 295
       // without modifying the firmware (through the "M218 T1 X???" command).
248 296
       // Remember: you should set the second extruder x-offset to 0 in your slicer.
@@ -284,7 +332,10 @@
284 332
 
285 333
 #define AXIS_RELATIVE_MODES {false, false, false, false}
286 334
 
287
-//By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
335
+// Allow duplication mode with a basic dual-nozzle extruder
336
+//#define DUAL_NOZZLE_DUPLICATION_MODE
337
+
338
+// By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
288 339
 #define INVERT_X_STEP_PIN false
289 340
 #define INVERT_Y_STEP_PIN false
290 341
 #define INVERT_Z_STEP_PIN false
@@ -357,6 +408,9 @@
357 408
 
358 409
 // @section lcd
359 410
 
411
+// Include a page of printer information in the LCD Main Menu
412
+//#define LCD_INFO_MENU
413
+
360 414
 #if ENABLED(SDSUPPORT)
361 415
 
362 416
   // Some RAMPS and other boards don't detect when an SD card is inserted. You can work
@@ -394,7 +448,6 @@
394 448
   // This option allows you to abort SD printing when any endstop is triggered.
395 449
   // This feature must be enabled with "M540 S1" or from the LCD menu.
396 450
   // To have any effect, endstops must be enabled during SD printing.
397
-  // With ENDSTOPS_ONLY_FOR_HOMING you must send "M120" to enable endstops.
398 451
   //#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED
399 452
 
400 453
 #endif // SDSUPPORT
@@ -410,9 +463,10 @@
410 463
   //#define USE_SMALL_INFOFONT
411 464
 #endif // DOGLCD
412 465
 
413
-// @section more
466
+// @section safety
414 467
 
415
-// The hardware watchdog should reset the microcontroller disabling all outputs, in case the firmware gets stuck and doesn't do temperature regulation.
468
+// The hardware watchdog should reset the microcontroller disabling all outputs,
469
+// in case the firmware gets stuck and doesn't do temperature regulation.
416 470
 #define USE_WATCHDOG
417 471
 
418 472
 #if ENABLED(USE_WATCHDOG)
@@ -451,6 +505,27 @@
451 505
   #define D_FILAMENT 2.85
452 506
 #endif
453 507
 
508
+// Implementation of a linear pressure control
509
+// Assumption: advance = k * (delta velocity)
510
+// K=0 means advance disabled. A good value for a gregs wade extruder will be around K=75
511
+//#define LIN_ADVANCE
512
+
513
+#if ENABLED(LIN_ADVANCE)
514
+  #define LIN_ADVANCE_K 75
515
+#endif
516
+
517
+// @section leveling
518
+
519
+// Default mesh area is an area with an inset margin on the print area.
520
+// Below are the macros that are used to define the borders for the mesh area,
521
+// made available here for specialized needs, ie dual extruder setup.
522
+#if ENABLED(MESH_BED_LEVELING)
523
+  #define MESH_MIN_X (X_MIN_POS + MESH_INSET)
524
+  #define MESH_MAX_X (X_MAX_POS - (MESH_INSET))
525
+  #define MESH_MIN_Y (Y_MIN_POS + MESH_INSET)
526
+  #define MESH_MAX_Y (Y_MAX_POS - (MESH_INSET))
527
+#endif
528
+
454 529
 // @section extras
455 530
 
456 531
 // Arc interpretation settings:
@@ -482,12 +557,27 @@ const unsigned int dropsegments = 5; //everything with less than this number of
482 557
   #define BLOCK_BUFFER_SIZE 16 // maximize block buffer
483 558
 #endif
484 559
 
485
-// @section more
560
+// @section serial
486 561
 
487
-//The ASCII buffer for receiving from the serial:
562
+// The ASCII buffer for serial input
488 563
 #define MAX_CMD_SIZE 96
489 564
 #define BUFSIZE 4
490 565
 
566
+// Transfer Buffer Size
567
+// To save 386 bytes of PROGMEM (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0.
568
+// To buffer a simple "ok" you need 4 bytes.
569
+// For ADVANCED_OK (M105) you need 32 bytes.
570
+// For debug-echo: 128 bytes for the optimal speed.
571
+// Other output doesn't need to be that speedy.
572
+// :[0,2,4,8,16,32,64,128,256]
573
+#define TX_BUFFER_SIZE 0
574
+
575
+// Enable an emergency-command parser to intercept certain commands as they
576
+// enter the serial receive buffer, so they cannot be blocked.
577
+// Currently handles M108, M112, M410
578
+// Does not work on boards using AT90USB (USBCON) processors!
579
+//#define EMERGENCY_PARSER
580
+
491 581
 // Bad Serial-connections can miss a received command by sending an 'ok'
492 582
 // Therefore some clients abort after 30 seconds in a timeout.
493 583
 // Some other clients start sending commands while receiving a 'wait'.
@@ -519,16 +609,30 @@ const unsigned int dropsegments = 5; //everything with less than this number of
519 609
 
520 610
 // Add support for experimental filament exchange support M600; requires display
521 611
 #if ENABLED(ULTIPANEL)
522
-  //#define FILAMENTCHANGEENABLE
523
-  #if ENABLED(FILAMENTCHANGEENABLE)
524
-    #define FILAMENTCHANGE_XPOS 3
525
-    #define FILAMENTCHANGE_YPOS 3
526
-    #define FILAMENTCHANGE_ZADD 10
527
-    #define FILAMENTCHANGE_FIRSTRETRACT -2
528
-    #define FILAMENTCHANGE_FINALRETRACT -100
529
-    #define AUTO_FILAMENT_CHANGE                //This extrude filament until you press the button on LCD
530
-    #define AUTO_FILAMENT_CHANGE_LENGTH 0.04    //Extrusion length on automatic extrusion loop
531
-    #define AUTO_FILAMENT_CHANGE_FEEDRATE 300   //Extrusion feedrate (mm/min) on automatic extrusion loop
612
+  // #define FILAMENT_CHANGE_FEATURE             // Enable filament exchange menu and M600 g-code (used for runout sensor too)
613
+  #if ENABLED(FILAMENT_CHANGE_FEATURE)
614
+    #define FILAMENT_CHANGE_X_POS 3             // X position of hotend
615
+    #define FILAMENT_CHANGE_Y_POS 3             // Y position of hotend
616
+    #define FILAMENT_CHANGE_Z_ADD 10            // Z addition of hotend (lift)
617
+    #define FILAMENT_CHANGE_XY_FEEDRATE 100     // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
618
+    #define FILAMENT_CHANGE_Z_FEEDRATE 5        // Z axis feedrate in mm/s (not used for delta printers)
619
+    #define FILAMENT_CHANGE_RETRACT_LENGTH 2    // Initial retract in mm
620
+                                                // It is a short retract used immediately after print interrupt before move to filament exchange position
621
+    #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
622
+    #define FILAMENT_CHANGE_UNLOAD_LENGTH 100   // Unload filament length from hotend in mm
623
+                                                // Longer length for bowden printers to unload filament from whole bowden tube,
624
+                                                // shorter lenght for printers without bowden to unload filament from extruder only,
625
+                                                // 0 to disable unloading for manual unloading
626
+    #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10  // Unload filament feedrate in mm/s - filament unloading can be fast
627
+    #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
628
+                                                // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
629
+                                                // Short or zero length for printers without bowden where loading is not used
630
+    #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
631
+    #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
632
+                                                // 0 to disable for manual extrusion
633
+                                                // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
634
+                                                // or until outcoming filament color is not clear for filament color change
635
+    #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
532 636
   #endif
533 637
 #endif
534 638
 
@@ -674,9 +778,9 @@ const unsigned int dropsegments = 5; //everything with less than this number of
674 778
  * devices on the bus.
675 779
  *
676 780
  * ; Example #1
677
- * ; This macro send the string "Marlin" to the slave device with address 0x63
781
+ * ; This macro send the string "Marlin" to the slave device with address 0x63 (99)
678 782
  * ; It uses multiple M155 commands with one B<base 10> arg
679
- * M155 A63  ; Target slave address
783
+ * M155 A99  ; Target slave address
680 784
  * M155 B77  ; M
681 785
  * M155 B97  ; a
682 786
  * M155 B114 ; r
@@ -686,19 +790,16 @@ const unsigned int dropsegments = 5; //everything with less than this number of
686 790
  * M155 S1   ; Send the current buffer
687 791
  *
688 792
  * ; Example #2
689
- * ; Request 6 bytes from slave device with address 0x63
690
- * M156 A63 B5
793
+ * ; Request 6 bytes from slave device with address 0x63 (99)
794
+ * M156 A99 B5
691 795
  *
692 796
  * ; Example #3
693 797
  * ; Example serial output of a M156 request
694
- * echo:i2c-reply: from:63 bytes:5 data:hello
798
+ * echo:i2c-reply: from:99 bytes:5 data:hello
695 799
  */
696 800
 
697 801
 // @section i2cbus
698 802
 
699 803
 //#define EXPERIMENTAL_I2CBUS
700 804
 
701
-#include "Conditionals.h"
702
-#include "SanityCheck.h"
703
-
704
-#endif //CONFIGURATION_ADV_H
805
+#endif // CONFIGURATION_ADV_H

Marlin/example_configurations/delta/kossel_pro/readme.md → Marlin/example_configurations/delta/kossel_pro/README.md Parādīt failu


+ 331
- 229
Marlin/example_configurations/delta/kossel_xl/Configuration.h Parādīt failu

@@ -38,8 +38,18 @@
38 38
 #ifndef CONFIGURATION_H
39 39
 #define CONFIGURATION_H
40 40
 
41
-#include "boards.h"
42
-#include "macros.h"
41
+/**
42
+ *
43
+ *  ***********************************
44
+ *  **  ATTENTION TO ALL DEVELOPERS  **
45
+ *  ***********************************
46
+ *
47
+ * You must increment this version number for every significant change such as,
48
+ * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option.
49
+ *
50
+ * Note: Update also Version.h !
51
+ */
52
+#define CONFIGURATION_H_VERSION 010100
43 53
 
44 54
 //===========================================================================
45 55
 //============================= Getting Started =============================
@@ -66,20 +76,26 @@
66 76
 
67 77
 // @section info
68 78
 
69
-#if ENABLED(USE_AUTOMATIC_VERSIONING)
70
-  #include "_Version.h"
71
-#else
72
-  #include "Version.h"
73
-#endif
74
-
75 79
 // User-specified version info of this build to display in [Pronterface, etc] terminal window during
76 80
 // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
77 81
 // build by the user have been successfully uploaded into firmware.
78 82
 #define STRING_CONFIG_H_AUTHOR "(oxivanisher)" // Who made the changes.
79 83
 #define SHOW_BOOTSCREEN
80
-#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during bootup in line 1
81
-#define STRING_SPLASH_LINE2 STRING_DISTRIBUTION_DATE // will be shown during bootup in line 2
84
+#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during boot in line 1
85
+#define STRING_SPLASH_LINE2 WEBSITE_URL         // will be shown during boot in line 2
82 86
 
87
+//
88
+// *** VENDORS PLEASE READ *****************************************************
89
+//
90
+// Marlin now allow you to have a vendor boot image to be displayed on machine
91
+// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your
92
+// custom boot image and them the default Marlin boot image is shown.
93
+//
94
+// We suggest for you to take advantage of this new feature and keep the Marlin
95
+// boot image unmodified. For an example have a look at the bq Hephestos 2
96
+// example configuration folder.
97
+//
98
+//#define SHOW_CUSTOM_BOOTSCREEN
83 99
 // @section machine
84 100
 
85 101
 // SERIAL_PORT selects which serial port should be used for communication with the host.
@@ -116,17 +132,40 @@
116 132
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
117 133
 //#define SINGLENOZZLE
118 134
 
135
+// A dual extruder that uses a single stepper motor
136
+// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z
137
+//#define SWITCHING_EXTRUDER
138
+#if ENABLED(SWITCHING_EXTRUDER)
139
+  #define SWITCHING_EXTRUDER_SERVO_NR 0
140
+  #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1
141
+  //#define HOTEND_OFFSET_Z {0.0, 0.0}
142
+#endif
143
+
144
+/**
145
+ * "Mixing Extruder"
146
+ *   - Adds a new code, M165, to set the current mix factors.
147
+ *   - Extends the stepping routines to move multiple steppers in proportion to the mix.
148
+ *   - Optional support for Repetier Host M163, M164, and virtual extruder.
149
+ *   - This implementation supports only a single extruder.
150
+ *   - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
151
+ */
152
+//#define MIXING_EXTRUDER
153
+#if ENABLED(MIXING_EXTRUDER)
154
+  #define MIXING_STEPPERS 2        // Number of steppers in your mixing extruder
155
+  #define MIXING_VIRTUAL_TOOLS 16  // Use the Virtual Tool method with M163 and M164
156
+  //#define DIRECT_MIXING_IN_G1    // Allow ABCDHI mix factors in G1 movement commands
157
+#endif
158
+
119 159
 // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
120 160
 // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
121 161
 // For the other hotends it is their distance from the extruder 0 hotend.
122
-//#define EXTRUDER_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
123
-//#define EXTRUDER_OFFSET_Y {0.0, 5.00}  // (in mm) for each extruder, offset of the hotend on the Y axis
162
+//#define HOTEND_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
163
+//#define HOTEND_OFFSET_Y {0.0, 5.00}  // (in mm) for each extruder, offset of the hotend on the Y axis
124 164
 
125 165
 //// The following define selects which power supply you have. Please choose the one that matches your setup
126 166
 // 1 = ATX
127 167
 // 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC)
128 168
 // :{1:'ATX',2:'X-Box 360'}
129
-
130 169
 #define POWER_SUPPLY 2
131 170
 
132 171
 // Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it.
@@ -161,6 +200,7 @@
161 200
 // 13 is 100k Hisens 3950  1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE"
162 201
 // 20 is the PT100 circuit found in the Ultimainboard V2.x
163 202
 // 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950
203
+// 66 is 4.7M High Temperature thermistor from Dyze Design
164 204
 // 70 is the 100K thermistor found in the bq Hephestos 2
165 205
 //
166 206
 //    1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k
@@ -177,7 +217,7 @@
177 217
 //     Use it for Testing or Development purposes. NEVER for production machine.
178 218
 //#define DUMMY_THERMISTOR_998_VALUE 25
179 219
 //#define DUMMY_THERMISTOR_999_VALUE 100
180
-// :{ '0': "Not used", '4': "10k !! do not use for a hotend. Bad resolution at high temp. !!", '1': "100k / 4.7k - EPCOS", '51': "100k / 1k - EPCOS", '6': "100k / 4.7k EPCOS - Not as accurate as Table 1", '5': "100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '7': "100k / 4.7k Honeywell 135-104LAG-J01", '71': "100k / 4.7k Honeywell 135-104LAF-J01", '8': "100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT", '9': "100k / 4.7k GE Sensing AL03006-58.2K-97-G1", '10': "100k / 4.7k RS 198-961", '11': "100k / 4.7k beta 3950 1%", '12': "100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)", '13': "100k Hisens 3950  1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'", '60': "100k Maker's Tool Works Kapton Bed Thermistor beta=3950", '55': "100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '2': "200k / 4.7k - ATC Semitec 204GT-2", '52': "200k / 1k - ATC Semitec 204GT-2", '-3': "Thermocouple + MAX31855 (only for sensor 0)", '-2': "Thermocouple + MAX6675 (only for sensor 0)", '-1': "Thermocouple + AD595", '3': "Mendel-parts / 4.7k", '1047': "Pt1000 / 4.7k", '1010': "Pt1000 / 1k (non standard)", '20': "PT100 (Ultimainboard V2.x)", '147': "Pt100 / 4.7k", '110': "Pt100 / 1k (non-standard)", '998': "Dummy 1", '999': "Dummy 2" }
220
+// :{ '0': "Not used",'1':"100k / 4.7k - EPCOS",'2':"200k / 4.7k - ATC Semitec 204GT-2",'3':"Mendel-parts / 4.7k",'4':"10k !! do not use for a hotend. Bad resolution at high temp. !!",'5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'6':"100k / 4.7k EPCOS - Not as accurate as Table 1",'7':"100k / 4.7k Honeywell 135-104LAG-J01",'8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT",'9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1",'10':"100k / 4.7k RS 198-961",'11':"100k / 4.7k beta 3950 1%",'12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)",'13':"100k Hisens 3950  1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'",'20':"PT100 (Ultimainboard V2.x)",'51':"100k / 1k - EPCOS",'52':"200k / 1k - ATC Semitec 204GT-2",'55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950",'66':"Dyze Design 4.7M High Temperature thermistor",'70':"the 100K thermistor found in the bq Hephestos 2",'71':"100k / 4.7k Honeywell 135-104LAF-J01",'147':"Pt100 / 4.7k",'1047':"Pt1000 / 4.7k",'110':"Pt100 / 1k (non-standard)",'1010':"Pt1000 / 1k (non standard)",'-3':"Thermocouple + MAX31855 (only for sensor 0)",'-2':"Thermocouple + MAX6675 (only for sensor 0)",'-1':"Thermocouple + AD595",'998':"Dummy 1",'999':"Dummy 2" }
181 221
 #define TEMP_SENSOR_0 5
182 222
 #define TEMP_SENSOR_1 0
183 223
 #define TEMP_SENSOR_2 0
@@ -216,10 +256,6 @@
216 256
 #define HEATER_3_MAXTEMP 275
217 257
 #define BED_MAXTEMP 150
218 258
 
219
-// If you want the M105 heater power reported in watts, define the BED_WATTS, and (shared for all extruders) EXTRUDER_WATTS
220
-//#define EXTRUDER_WATTS (12.0*12.0/6.7) // P=U^2/R
221
-//#define BED_WATTS (12.0*12.0/1.1)      // P=U^2/R
222
-
223 259
 //===========================================================================
224 260
 //============================= PID Settings ================================
225 261
 //===========================================================================
@@ -234,8 +270,8 @@
234 270
   //#define PID_DEBUG // Sends debug data to the serial port.
235 271
   //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX
236 272
   //#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
237
-  //#define PID_PARAMS_PER_EXTRUDER // Uses separate PID parameters for each extruder (useful for mismatched extruders)
238
-                                    // Set/get with gcode: M301 E[extruder number, 0-2]
273
+  //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders)
274
+                                  // Set/get with gcode: M301 E[extruder number, 0-2]
239 275
   #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature
240 276
                                   // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max.
241 277
   #define PID_INTEGRAL_DRIVE_MAX PID_MAX  //limit for the integral term
@@ -424,18 +460,120 @@
424 460
 #endif
425 461
 
426 462
 // Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup).
427
-const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
428
-const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
429
-const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
430
-const bool X_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
431
-const bool Y_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
432
-const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
433
-const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
463
+#define X_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
464
+#define Y_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
465
+#define Z_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
466
+#define X_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
467
+#define Y_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
468
+#define Z_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
469
+#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
434 470
 
435 471
 //===========================================================================
436 472
 //============================= Z Probe Options =============================
437 473
 //===========================================================================
438 474
 
475
+//
476
+// Probe Type
477
+// Probes are sensors/switches that are activated / deactivated before/after use.
478
+//
479
+// Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc.
480
+// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below.
481
+//
482
+// Use M851 to set the Z probe vertical offset from the nozzle. Store with M500.
483
+//
484
+
485
+// A Fix-Mounted Probe either doesn't deploy or needs manual deployment.
486
+// For example an inductive probe, or a setup that uses the nozzle to probe.
487
+// An inductive probe must be deactivated to go below
488
+// its trigger-point if hardware endstops are active.
489
+#define FIX_MOUNTED_PROBE
490
+
491
+// The BLTouch probe emulates a servo probe.
492
+//#define BLTOUCH
493
+
494
+// Z Servo Probe, such as an endstop switch on a rotating arm.
495
+//#define Z_ENDSTOP_SERVO_NR 0
496
+//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles
497
+
498
+// Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
499
+//#define Z_PROBE_SLED
500
+//#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.
501
+
502
+// Z Probe to nozzle (X,Y) offset, relative to (0, 0).
503
+// X and Y offsets must be integers.
504
+//
505
+// In the following example the X and Y offsets are both positive:
506
+// #define X_PROBE_OFFSET_FROM_EXTRUDER 10
507
+// #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
508
+//
509
+//    +-- BACK ---+
510
+//    |           |
511
+//  L |    (+) P  | R <-- probe (20,20)
512
+//  E |           | I
513
+//  F | (-) N (+) | G <-- nozzle (10,10)
514
+//  T |           | H
515
+//    |    (-)    | T
516
+//    |           |
517
+//    O-- FRONT --+
518
+//  (0,0)
519
+#define X_PROBE_OFFSET_FROM_EXTRUDER 0.0     // Z probe to nozzle X offset: -left  +right
520
+#define Y_PROBE_OFFSET_FROM_EXTRUDER 0.0     // Z probe to nozzle Y offset: -front +behind
521
+#define Z_PROBE_OFFSET_FROM_EXTRUDER 0.3     // Z probe to nozzle Z offset: -below (always!)
522
+
523
+// X and Y axis travel speed (mm/m) between probes
524
+#define XY_PROBE_SPEED 8000
525
+// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
526
+#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
527
+// Speed for the "accurate" probe of each point
528
+#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
529
+// Use double touch for probing
530
+//#define PROBE_DOUBLE_TOUCH
531
+
532
+// Allen key retractable z-probe as seen on many Kossel delta printers - http://reprap.org/wiki/Kossel#Automatic_bed_leveling_probe
533
+// Deploys by touching z-axis belt. Retracts by pushing the probe down. Uses Z_MIN_PIN.
534
+//#define Z_PROBE_ALLEN_KEY
535
+
536
+#if ENABLED(Z_PROBE_ALLEN_KEY)
537
+  // 2 or 3 sets of coordinates for deploying and retracting the spring loaded touch probe on G29,
538
+  // if servo actuated touch probe is not defined. Uncomment as appropriate for your printer/probe.
539
+
540
+  //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_X 30.0
541
+  //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_Y DELTA_PRINTABLE_RADIUS
542
+  //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_Z 100.0
543
+  //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE XY_PROBE_SPEED
544
+
545
+  //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_X 0.0
546
+  //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_Y DELTA_PRINTABLE_RADIUS
547
+  //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_Z 100.0
548
+  //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE (XY_PROBE_SPEED)/10
549
+
550
+  //#define Z_PROBE_ALLEN_KEY_DEPLOY_3_X Z_PROBE_ALLEN_KEY_DEPLOY_2_X * 0.75
551
+  //#define Z_PROBE_ALLEN_KEY_DEPLOY_3_Y Z_PROBE_ALLEN_KEY_DEPLOY_2_Y * 0.75
552
+  //#define Z_PROBE_ALLEN_KEY_DEPLOY_3_Z Z_PROBE_ALLEN_KEY_DEPLOY_2_Z
553
+  //#define Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE XY_PROBE_SPEED
554
+
555
+  //#define Z_PROBE_ALLEN_KEY_STOW_1_X -64.0 // Move the probe into position
556
+  //#define Z_PROBE_ALLEN_KEY_STOW_1_Y 56.0
557
+  //#define Z_PROBE_ALLEN_KEY_STOW_1_Z 23.0
558
+  //#define Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE XY_PROBE_SPEED
559
+
560
+  //#define Z_PROBE_ALLEN_KEY_STOW_2_X -64.0 // Push it down
561
+  //#define Z_PROBE_ALLEN_KEY_STOW_2_Y 56.0
562
+  //#define Z_PROBE_ALLEN_KEY_STOW_2_Z 3.0
563
+  //#define Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE (XY_PROBE_SPEED)/10
564
+
565
+  //#define Z_PROBE_ALLEN_KEY_STOW_3_X -64.0 // Move it up to clear
566
+  //#define Z_PROBE_ALLEN_KEY_STOW_3_Y 56.0
567
+  //#define Z_PROBE_ALLEN_KEY_STOW_3_Z 50.0
568
+  //#define Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE XY_PROBE_SPEED
569
+
570
+  //#define Z_PROBE_ALLEN_KEY_STOW_4_X 0.0
571
+  //#define Z_PROBE_ALLEN_KEY_STOW_4_Y 0.0
572
+  //#define Z_PROBE_ALLEN_KEY_STOW_4_Z Z_PROBE_ALLEN_KEY_STOW_3_Z
573
+  //#define Z_PROBE_ALLEN_KEY_STOW_4_FEEDRATE XY_PROBE_SPEED
574
+
575
+#endif // Z_PROBE_ALLEN_KEY
576
+
439 577
 // Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z Probe and a Z-min-endstop on the same machine.
440 578
 // With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing.
441 579
 //
@@ -447,7 +585,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
447 585
 // To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN.
448 586
 //
449 587
 // For a servo-based Z probe, you must set up servo support below, including
450
-// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES.
588
+// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and Z_SERVO_ANGLES.
451 589
 //
452 590
 // - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin.
453 591
 // - Use 5V for powered (usu. inductive) sensors.
@@ -480,6 +618,21 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
480 618
 // If you're using the Z MIN endstop connector for your Z probe, this has no effect.
481 619
 //#define DISABLE_Z_MIN_PROBE_ENDSTOP
482 620
 
621
+// Enable Z Probe Repeatability test to see how accurate your probe is
622
+//#define Z_MIN_PROBE_REPEATABILITY_TEST
623
+
624
+//
625
+// Probe Raise options provide clearance for the probe to deploy, stow, and travel.
626
+//
627
+#define Z_PROBE_DEPLOY_HEIGHT 20 // Raise to make room for the probe to deploy / stow
628
+#define Z_PROBE_TRAVEL_HEIGHT 10 // Raise between probing points.
629
+
630
+//
631
+// For M851 give a range for adjusting the Z probe offset
632
+//
633
+#define Z_PROBE_OFFSET_RANGE_MIN -20
634
+#define Z_PROBE_OFFSET_RANGE_MAX 20
635
+
483 636
 // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
484 637
 // :{0:'Low',1:'High'}
485 638
 #define X_ENABLE_ON 0
@@ -516,8 +669,9 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
516 669
 #define INVERT_E3_DIR false
517 670
 
518 671
 // @section homing
519
-//#define MIN_Z_HEIGHT_FOR_HOMING 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
520
-                                    // Be sure you have this distance over your Z_MAX_POS in case.
672
+
673
+//#define Z_HOMING_HEIGHT 4  // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
674
+                             // Be sure you have this distance over your Z_MAX_POS in case.
521 675
 
522 676
 // ENDSTOP SETTINGS:
523 677
 // Sets direction of endstops when homing; 1=MAX, -1=MIN
@@ -547,7 +701,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
547 701
                                  // It is assumed that when logic high = filament available
548 702
                                  //                    when logic  low = filament ran out
549 703
 #if ENABLED(FILAMENT_RUNOUT_SENSOR)
550
-  const bool FIL_RUNOUT_INVERTING = true;  // Should be uncommented and true or false should assigned
704
+  const bool FIL_RUNOUT_INVERTING = false; // set to true to invert the logic of the sensor.
551 705
   #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined.
552 706
   #define FILAMENT_RUNOUT_SCRIPT "M600"
553 707
 #endif
@@ -559,10 +713,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
559 713
 //#define MESH_BED_LEVELING    // Enable mesh bed leveling.
560 714
 
561 715
 #if ENABLED(MESH_BED_LEVELING)
562
-  #define MESH_MIN_X 10
563
-  #define MESH_MAX_X (X_MAX_POS - (MESH_MIN_X))
564
-  #define MESH_MIN_Y 10
565
-  #define MESH_MAX_Y (Y_MAX_POS - (MESH_MIN_Y))
716
+  #define MESH_INSET 10        // Mesh inset margin on print area
566 717
   #define MESH_NUM_X_POINTS 3  // Don't use more than 7 points per axis, implementation limited.
567 718
   #define MESH_NUM_Y_POINTS 3
568 719
   #define MESH_HOME_SEARCH_Z 4  // Z after Home, bed somewhere below but above 0.0.
@@ -584,8 +735,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
584 735
 // @section bedlevel
585 736
 
586 737
 #define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line)
738
+
739
+// Enable this feature to get detailed logging of G28, G29, M48, etc.
740
+// Logging is off by default. Enable this logging feature with 'M111 S32'.
741
+// NOTE: Requires a huge amount of PROGMEM.
587 742
 //#define DEBUG_LEVELING_FEATURE
588
-//#define Z_MIN_PROBE_REPEATABILITY_TEST  // If not commented out, Z Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
589 743
 
590 744
 #if ENABLED(AUTO_BED_LEVELING_FEATURE)
591 745
 
@@ -632,139 +786,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
632 786
     #define ABL_PROBE_PT_3_X 170
633 787
     #define ABL_PROBE_PT_3_Y 20
634 788
 
635
-  #endif // AUTO_BED_LEVELING_GRID
636
-
637
-  // Z Probe to nozzle (X,Y) offset, relative to (0, 0).
638
-  // X and Y offsets must be integers.
639
-  //
640
-  // In the following example the X and Y offsets are both positive:
641
-  // #define X_PROBE_OFFSET_FROM_EXTRUDER 10
642
-  // #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
643
-  //
644
-  //    +-- BACK ---+
645
-  //    |           |
646
-  //  L |    (+) P  | R <-- probe (20,20)
647
-  //  E |           | I
648
-  //  F | (-) N (+) | G <-- nozzle (10,10)
649
-  //  T |           | H
650
-  //    |    (-)    | T
651
-  //    |           |
652
-  //    O-- FRONT --+
653
-  //  (0,0)
654
-  #define X_PROBE_OFFSET_FROM_EXTRUDER 0.0     // Z probe to nozzle X offset: -left  +right
655
-  #define Y_PROBE_OFFSET_FROM_EXTRUDER 0.0     // Z probe to nozzle Y offset: -front +behind
656
-  #define Z_PROBE_OFFSET_FROM_EXTRUDER 0.3     // Z probe to nozzle Z offset: -below (always!)
657
-
658
-  #define XY_TRAVEL_SPEED 8000         // X and Y axis travel speed between probes, in mm/min.
659
-
660
-  #define Z_RAISE_BEFORE_PROBING 20   // How much the Z axis will be raised before traveling to the first probing point.
661
-  #define Z_RAISE_BETWEEN_PROBINGS 10 // How much the Z axis will be raised when traveling from between next probing points.
662
-  #define Z_RAISE_AFTER_PROBING 20    // How much the Z axis will be raised after the last probing point.
789
+  #endif // !AUTO_BED_LEVELING_GRID
663 790
 
664 791
   //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine.
665 792
                                                                              // Useful to retract a deployable Z probe.
666 793
 
667
-  // Probes are sensors/switches that need to be activated before they can be used
668
-  // and deactivated after their use.
669
-  // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE
670
-
671
-  // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER
672
-  // when the hardware endstops are active.
673
-  #define FIX_MOUNTED_PROBE
674
-
675
-  // A Servo Probe can be defined in the servo section below.
676
-
677
-  // An Allen Key Probe is currently predefined only in the delta example configurations.
678
-
679
-  // Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
680
-  //#define Z_PROBE_SLED
681
-  //#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.
682
-
683
-  // A Mechanical Probe is any probe that either doesn't deploy or needs manual deployment
684
-  // For example any setup that uses the nozzle itself as a probe.
685
-  //#define MECHANICAL_PROBE
686
-
687
-  // Allen key retractable z-probe as seen on many Kossel delta printers - http://reprap.org/wiki/Kossel#Automatic_bed_leveling_probe
688
-  // Deploys by touching z-axis belt. Retracts by pushing the probe down. Uses Z_MIN_PIN.
689
-  //#define Z_PROBE_ALLEN_KEY
690
-
691
-  #if ENABLED(Z_PROBE_ALLEN_KEY)
692
-    // 2 or 3 sets of coordinates for deploying and retracting the spring loaded touch probe on G29,
693
-    // if servo actuated touch probe is not defined. Uncomment as appropriate for your printer/probe.
694
-
695
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_X 30.0
696
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_Y DELTA_PRINTABLE_RADIUS
697
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_Z 100.0
698
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE HOMING_FEEDRATE_XYZ
699
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_X 0.0
700
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_Y DELTA_PRINTABLE_RADIUS
701
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_Z 100.0
702
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE (HOMING_FEEDRATE_XYZ)/10
703
-
704
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_X -64.0 // Move the probe into position
705
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_Y 56.0
706
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_Z 23.0
707
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE HOMING_FEEDRATE_XYZ
708
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_X -64.0 // Push it down
709
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_Y 56.0
710
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_Z 3.0
711
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE (HOMING_FEEDRATE_XYZ)/10
712
-    //#define Z_PROBE_ALLEN_KEY_STOW_3_X -64.0 // Move it up to clear
713
-    //#define Z_PROBE_ALLEN_KEY_STOW_3_Y 56.0
714
-    //#define Z_PROBE_ALLEN_KEY_STOW_3_Z 50.0
715
-    //#define Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE HOMING_FEEDRATE_XYZ
716
-
717
-    // Kossel Mini
718
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_X 35.0
719
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_Y 72.0
720
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_Z 100.0
721
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE (HOMING_FEEDRATE_XYZ)/10
722
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_X 0.0
723
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_Y 0.0
724
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_Z 100.0
725
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE (HOMING_FEEDRATE_XYZ)/10
726
-
727
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_X -46.0 // Move the probe into position
728
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_Y 59.0
729
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_Z 28.0
730
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE HOMING_FEEDRATE_XYZ
731
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_X -46.0 // Move the nozzle down further to push the probe into retracted position.
732
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_Y 59.0
733
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_Z 8.0
734
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE (HOMING_FEEDRATE_XYZ)/10
735
-    //#define Z_PROBE_ALLEN_KEY_STOW_3_X -46.0 // Raise things back up slightly so we don't bump into anything
736
-    //#define Z_PROBE_ALLEN_KEY_STOW_3_Y 59.0
737
-    //#define Z_PROBE_ALLEN_KEY_STOW_3_Z 38.0
738
-    //#define Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE HOMING_FEEDRATE_XYZ
739
-
740
-    // Kossel Pro
741
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_X -105.00 // Move left but not quite so far that we'll bump the belt
742
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_Y 0.00
743
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_Z 100.0
744
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE HOMING_FEEDRATE_XYZ
745
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_X -110.00 // Move outward to position deploy pin to the left of the arm
746
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_Y -125.00
747
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_Z 100.0
748
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE HOMING_FEEDRATE_XYZ
749
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_3_X 45.00 // Move right to trigger deploy pin
750
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_3_Y -125.00
751
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_3_Z 100.0
752
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE (HOMING_FEEDRATE_XYZ)/2
753
-
754
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_X 36.00 // Line up with bed retaining clip
755
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_Y -122.00
756
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_Z 75.0
757
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE HOMING_FEEDRATE_XYZ
758
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_X 36.00 // move down to retract probe
759
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_Y -122.00
760
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_Z 25.0
761
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE (HOMING_FEEDRATE_XYZ)/2
762
-    //#define Z_PROBE_ALLEN_KEY_STOW_3_X 0.0  // return to 0,0,100
763
-    //#define Z_PROBE_ALLEN_KEY_STOW_3_Y 0.0
764
-    //#define Z_PROBE_ALLEN_KEY_STOW_3_Z 100.0
765
-    //#define Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE HOMING_FEEDRATE_XYZ
766
-  #endif
767
-
768 794
   // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing,
769 795
   // it is highly recommended you also enable Z_SAFE_HOMING below!
770 796
 
@@ -773,17 +799,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
773 799
 
774 800
 // @section homing
775 801
 
776
-// The position of the homing switches
777
-#define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used
778
-#define BED_CENTER_AT_0_0  // If defined, the center of the bed is at (X=0, Y=0)
802
+// The center of the bed is at (X=0, Y=0)
803
+#define BED_CENTER_AT_0_0
779 804
 
780
-// Manual homing switch locations:
781
-// For deltabots this means top and center of the Cartesian print volume.
782
-#if ENABLED(MANUAL_HOME_POSITIONS)
783
-  #define MANUAL_X_HOME_POS 0
784
-  #define MANUAL_Y_HOME_POS 0
785
-  #define MANUAL_Z_HOME_POS 381.4 // For delta: Distance between nozzle and print surface after homing.
786
-#endif
805
+// Manually set the home position. Leave these undefined for automatic settings.
806
+// For DELTA this is the top-center of the Cartesian print volume.
807
+//#define MANUAL_X_HOME_POS 0
808
+//#define MANUAL_Y_HOME_POS 0
809
+#define MANUAL_Z_HOME_POS 381.4 // Distance between the nozzle to printbed after homing
787 810
 
788 811
 // Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
789 812
 //
@@ -791,7 +814,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
791 814
 //
792 815
 // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
793 816
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
794
-// - Position the Z probe in a defined XY point before Z Homing when homing all axes (G28).
817
+// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
795 818
 // - Prevent Z homing when the Z probe is outside bed area.
796 819
 //#define Z_SAFE_HOMING
797 820
 
@@ -800,17 +823,13 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
800 823
   #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2)    // Y point for Z homing when homing all axis (G28).
801 824
 #endif
802 825
 
826
+// Delta only homes to Z
827
+#define HOMING_FEEDRATE_Z  (60*60)
803 828
 
804
-// @section movement
805
-
806
-/**
807
- * MOVEMENT SETTINGS
808
- */
809
-
810
-// delta homing speeds must be the same on xyz
811
-#define HOMING_FEEDRATE_XYZ (60*60)
812
-#define HOMING_FEEDRATE_E 0
813
-#define HOMING_FEEDRATE { HOMING_FEEDRATE_XYZ, HOMING_FEEDRATE_XYZ, HOMING_FEEDRATE_XYZ, HOMING_FEEDRATE_E }
829
+//
830
+// MOVEMENT SETTINGS
831
+// @section motion
832
+//
814 833
 
815 834
 // variables to calculate steps
816 835
 #define XYZ_FULL_STEPS_PER_ROTATION 200
@@ -821,6 +840,8 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
821 840
 // delta speeds must be the same on xyz
822 841
 #define XYZ_STEPS (XYZ_FULL_STEPS_PER_ROTATION * XYZ_MICROSTEPS / double(XYZ_BELT_PITCH) / double(XYZ_PULLEY_TEETH))
823 842
 
843
+// default settings
844
+
824 845
 #define DEFAULT_AXIS_STEPS_PER_UNIT   {XYZ_STEPS, XYZ_STEPS, XYZ_STEPS, 158}   // default steps per unit for PowerWasp
825 846
 #define DEFAULT_MAX_FEEDRATE          {200, 200, 200, 25}    // (mm/sec)
826 847
 #define DEFAULT_MAX_ACCELERATION      {9000,9000,9000,10000}    // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for skeinforge 40+, for older versions raise them a lot.
@@ -839,18 +860,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
839 860
 //============================= Additional Features ===========================
840 861
 //=============================================================================
841 862
 
842
-// @section more
843
-
844
-// Custom M code points
845
-#define CUSTOM_M_CODES
846
-#if ENABLED(CUSTOM_M_CODES)
847
-  #if ENABLED(AUTO_BED_LEVELING_FEATURE)
848
-    #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851
849
-    #define Z_PROBE_OFFSET_RANGE_MIN -20
850
-    #define Z_PROBE_OFFSET_RANGE_MAX 20
851
-  #endif
852
-#endif
853
-
854 863
 // @section extras
855 864
 
856 865
 //
@@ -882,22 +891,107 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
882 891
 //
883 892
 //#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose
884 893
 
894
+//
895
+// G20/G21 Inch mode support
896
+//
897
+//#define INCH_MODE_SUPPORT
898
+
899
+//
900
+// M149 Set temperature units support
901
+//
902
+//#define TEMPERATURE_UNITS_SUPPORT
903
+
885 904
 // @section temperature
886 905
 
887 906
 // Preheat Constants
888
-#define PLA_PREHEAT_HOTEND_TEMP 180
889
-#define PLA_PREHEAT_HPB_TEMP 70
890
-#define PLA_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
907
+#define PREHEAT_1_TEMP_HOTEND 180
908
+#define PREHEAT_1_TEMP_BED     70
909
+#define PREHEAT_1_FAN_SPEED   255 // Value from 0 to 255
910
+
911
+#define PREHEAT_2_TEMP_HOTEND 240
912
+#define PREHEAT_2_TEMP_BED    100
913
+#define PREHEAT_2_FAN_SPEED   255 // Value from 0 to 255
914
+
915
+//
916
+// Nozzle Park -- EXPERIMENTAL
917
+//
918
+// When enabled allows the user to define a special XYZ position, inside the
919
+// machine's topology, to park the nozzle when idle or when receiving the G27
920
+// command.
921
+//
922
+// The "P" paramenter controls what is the action applied to the Z axis:
923
+//    P0: (Default) If current Z-pos is lower than Z-park then the nozzle will
924
+//        be raised to reach Z-park height.
925
+//
926
+//    P1: No matter the current Z-pos, the nozzle will be raised/lowered to
927
+//        reach Z-park height.
928
+//
929
+//    P2: The nozzle height will be raised by Z-park amount but never going over
930
+//        the machine's limit of Z_MAX_POS.
931
+//
932
+//#define NOZZLE_PARK_FEATURE
933
+
934
+#if ENABLED(NOZZLE_PARK_FEATURE)
935
+  // Specify a park position as { X, Y, Z }
936
+  #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 }
937
+#endif
938
+
939
+//
940
+// Clean Nozzle Feature -- EXPERIMENTAL
941
+//
942
+// When enabled allows the user to send G12 to start the nozzle cleaning
943
+// process, the G-Code accepts two parameters:
944
+//   "P" for pattern selection
945
+//   "S" for defining the number of strokes/repetitions
946
+//
947
+// Available list of patterns:
948
+//   P0: This is the default pattern, this process requires a sponge type
949
+//       material at a fixed bed location, the cleaning process is based on
950
+//       "strokes" i.e. back-and-forth movements between the starting and end
951
+//       points.
952
+//
953
+//   P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T"
954
+//       defines the number of zig-zag triangles to be done. "S" defines the
955
+//       number of strokes aka one back-and-forth movement. As an example
956
+//       sending "G12 P1 S1 T3" will execute:
957
+//
958
+//          --
959
+//         |  (X0, Y1) |     /\        /\        /\     | (X1, Y1)
960
+//         |           |    /  \      /  \      /  \    |
961
+//       A |           |   /    \    /    \    /    \   |
962
+//         |           |  /      \  /      \  /      \  |
963
+//         |  (X0, Y0) | /        \/        \/        \ | (X1, Y0)
964
+//          --         +--------------------------------+
965
+//                       |________|_________|_________|
966
+//                           T1        T2        T3
967
+//
968
+// Caveats: End point Z should use the same value as Start point Z.
969
+//
970
+// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments
971
+// may change to add new functionality like different wipe patterns.
972
+//
973
+//#define NOZZLE_CLEAN_FEATURE
974
+
975
+#if ENABLED(NOZZLE_CLEAN_FEATURE)
976
+  // Number of pattern repetitions
977
+  #define NOZZLE_CLEAN_STROKES  12
978
+
979
+  // Specify positions as { X, Y, Z }
980
+  #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)}
981
+  #define NOZZLE_CLEAN_END_POINT   {100, 60, (Z_MIN_POS + 1)}
891 982
 
892
-#define ABS_PREHEAT_HOTEND_TEMP 240
893
-#define ABS_PREHEAT_HPB_TEMP 100
894
-#define ABS_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
983
+  // Moves the nozzle to the initial position
984
+  #define NOZZLE_CLEAN_GOBACK
985
+#endif
895 986
 
896 987
 //
897 988
 // Print job timer
898 989
 //
899 990
 // Enable this option to automatically start and stop the
900
-// print job timer when M104 and M109 commands are received.
991
+// print job timer when M104/M109/M190 commands are received.
992
+// M104 (extruder without wait) - high temp = none, low temp = stop timer
993
+// M109 (extruder with wait) - high temp = start timer, low temp = stop timer
994
+// M190 (bed with wait) - high temp = start timer, low temp = none
901 995
 //
902 996
 // In all cases the timer can be started and stopped using
903 997
 // the following commands:
@@ -930,8 +1024,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
930 1024
 //
931 1025
 // Here you may choose the language used by Marlin on the LCD menus, the following
932 1026
 // list of languages are available:
933
-//    en, pl, fr, de, es, ru, bg, it, pt, pt_utf8, pt-br, pt-br_utf8,
934
-//    fi, an, nl, ca, eu, kana, kana_utf8, cn, cz, test
1027
+//    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
1028
+//    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
1029
+//
1030
+// :{'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','test':'TEST'}
935 1031
 //
936 1032
 #define LCD_LANGUAGE en
937 1033
 
@@ -1079,6 +1175,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1079 1175
 //#define ULTIPANEL
1080 1176
 
1081 1177
 //
1178
+// Cartesio UI
1179
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1180
+//
1181
+//#define CARTESIO_UI
1182
+
1183
+//
1082 1184
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
1083 1185
 // http://reprap.org/wiki/PanelOne
1084 1186
 //
@@ -1091,6 +1193,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1091 1193
 //#define MAKRPANEL
1092 1194
 
1093 1195
 //
1196
+// ReprapWorld Graphical LCD
1197
+// https://reprapworld.com/?products_details&products_id/1218
1198
+//
1199
+//#define REPRAPWORLD_GRAPHICAL_LCD
1200
+
1201
+//
1094 1202
 // Activate one of these if you have a Panucatt Devices
1095 1203
 // Viki 2.0 or mini Viki with Graphic LCD
1096 1204
 // http://panucatt.com
@@ -1140,7 +1248,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1140 1248
 // is pressed, a value of 10.0 means 10mm per click.
1141 1249
 //
1142 1250
 //#define REPRAPWORLD_KEYPAD
1143
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1251
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1144 1252
 
1145 1253
 //
1146 1254
 // RigidBot Panel V1.0
@@ -1201,6 +1309,15 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1201 1309
 //#define U8GLIB_SSD1306
1202 1310
 
1203 1311
 //
1312
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1313
+//
1314
+//#define SAV_3DGLCD
1315
+#if ENABLED(SAV_3DGLCD)
1316
+  //#define U8GLIB_SSD1306
1317
+  #define U8GLIB_SH1106
1318
+#endif
1319
+
1320
+//
1204 1321
 // CONTROLLER TYPE: Shift register panels
1205 1322
 //
1206 1323
 // 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH
@@ -1228,7 +1345,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1228 1345
 // at zero value, there are 128 effective control positions.
1229 1346
 #define SOFT_PWM_SCALE 0
1230 1347
 
1231
-// Temperature status LEDs that display the hotend and bet temperature.
1348
+// Temperature status LEDs that display the hotend and bed temperature.
1232 1349
 // If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
1233 1350
 // Otherwise the RED led is on. There is 1C hysteresis.
1234 1351
 //#define TEMP_STAT_LEDS
@@ -1260,28 +1377,16 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1260 1377
 //
1261 1378
 //#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
1262 1379
 
1263
-// Servo Endstops
1264
-//
1265
-// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes.
1266
-// Use M851 to set the Z probe vertical offset from the nozzle. Store that setting with M500.
1267
-//
1268
-//#define X_ENDSTOP_SERVO_NR 1
1269
-//#define Y_ENDSTOP_SERVO_NR 2
1270
-//#define Z_ENDSTOP_SERVO_NR 0
1271
-//#define SERVO_ENDSTOP_ANGLES {{0,0}, {0,0}, {70,0}} // X,Y,Z Axis Extend and Retract angles
1380
+// Delay (in microseconds) before the next move will start, to give the servo time to reach its target angle.
1381
+// 300ms is a good value but you can try less delay.
1382
+// If the servo can't reach the requested position, increase it.
1383
+#define SERVO_DELAY 300
1272 1384
 
1273 1385
 // Servo deactivation
1274 1386
 //
1275 1387
 // With this option servos are powered only during movement, then turned off to prevent jitter.
1276 1388
 //#define DEACTIVATE_SERVOS_AFTER_MOVE
1277 1389
 
1278
-#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE)
1279
-  // Delay (in microseconds) before turning the servo off. This depends on the servo speed.
1280
-  // 300ms is a good value but you can try less delay.
1281
-  // If the servo can't reach the requested position, increase it.
1282
-  #define SERVO_DEACTIVATION_DELAY 300
1283
-#endif
1284
-
1285 1390
 /**********************************************************************\
1286 1391
  * Support for a filament diameter sensor
1287 1392
  * Also allows adjustment of diameter at print time (vs  at slicing)
@@ -1312,7 +1417,4 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1312 1417
   //#define FILAMENT_LCD_DISPLAY
1313 1418
 #endif
1314 1419
 
1315
-#include "Configuration_adv.h"
1316
-#include "thermistortables.h"
1317
-
1318
-#endif //CONFIGURATION_H
1420
+#endif // CONFIGURATION_H

+ 148
- 47
Marlin/example_configurations/delta/kossel_xl/Configuration_adv.h Parādīt failu

@@ -33,7 +33,18 @@
33 33
 #ifndef CONFIGURATION_ADV_H
34 34
 #define CONFIGURATION_ADV_H
35 35
 
36
-#include "Conditionals.h"
36
+/**
37
+ *
38
+ *  ***********************************
39
+ *  **  ATTENTION TO ALL DEVELOPERS  **
40
+ *  ***********************************
41
+ *
42
+ * You must increment this version number for every significant change such as,
43
+ * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option.
44
+ *
45
+ * Note: Update also Version.h !
46
+ */
47
+#define CONFIGURATION_ADV_H_VERSION 010100
37 48
 
38 49
 // @section temperature
39 50
 
@@ -102,8 +113,8 @@
102 113
 #if ENABLED(PIDTEMP)
103 114
   // this adds an experimental additional term to the heating power, proportional to the extrusion speed.
104 115
   // if Kc is chosen well, the additional required power due to increased melting should be compensated.
105
-  #define PID_ADD_EXTRUSION_RATE
106
-  #if ENABLED(PID_ADD_EXTRUSION_RATE)
116
+  //#define PID_EXTRUSION_SCALING
117
+  #if ENABLED(PID_EXTRUSION_SCALING)
107 118
     #define DEFAULT_Kc (100) //heating power=Kc*(e_speed)
108 119
     #define LPQ_MAX_LEN 50
109 120
   #endif
@@ -128,15 +139,42 @@
128 139
 //The M105 command return, besides traditional information, the ADC value read from temperature sensors.
129 140
 //#define SHOW_TEMP_ADC_VALUES
130 141
 
142
+/**
143
+ * High Temperature Thermistor Support
144
+ *
145
+ * Thermistors able to support high temperature tend to have a hard time getting
146
+ * good readings at room and lower temperatures. This means HEATER_X_RAW_LO_TEMP
147
+ * will probably be caught when the heating element first turns on during the
148
+ * preheating process, which will trigger a min_temp_error as a safety measure
149
+ * and force stop everything.
150
+ * To circumvent this limitation, we allow for a preheat time (during which,
151
+ * min_temp_error won't be triggered) and add a min_temp buffer to handle
152
+ * aberrant readings.
153
+ *
154
+ * If you want to enable this feature for your hotend thermistor(s)
155
+ * uncomment and set values > 0 in the constants below
156
+ */
157
+
158
+// The number of consecutive low temperature errors that can occur
159
+// before a min_temp_error is triggered. (Shouldn't be more than 10.)
160
+//#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 0
161
+
162
+// The number of milliseconds a hotend will preheat before starting to check
163
+// the temperature. This value should NOT be set to the time it takes the
164
+// hot end to reach the target temperature, but the time it takes to reach
165
+// the minimum temperature your thermistor can read. The lower the better/safer.
166
+// This shouldn't need to be more than 30 seconds (30000)
167
+//#define MILLISECONDS_PREHEAT_TIME 0
168
+
131 169
 // @section extruder
132 170
 
133 171
 //  extruder run-out prevention.
134 172
 //if the machine is idle, and the temperature over MINTEMP, every couple of SECONDS some filament is extruded
135 173
 //#define EXTRUDER_RUNOUT_PREVENT
136 174
 #define EXTRUDER_RUNOUT_MINTEMP 190
137
-#define EXTRUDER_RUNOUT_SECONDS 30.
138
-#define EXTRUDER_RUNOUT_ESTEPS 14. //mm filament
139
-#define EXTRUDER_RUNOUT_SPEED 1500.  //extrusion speed
175
+#define EXTRUDER_RUNOUT_SECONDS 30
176
+#define EXTRUDER_RUNOUT_ESTEPS 14   // mm filament
177
+#define EXTRUDER_RUNOUT_SPEED 1500  // extrusion speed
140 178
 #define EXTRUDER_RUNOUT_EXTRUDE 100
141 179
 
142 180
 // @section temperature
@@ -177,24 +215,42 @@
177 215
 #define EXTRUDER_AUTO_FAN_TEMPERATURE 50
178 216
 #define EXTRUDER_AUTO_FAN_SPEED   255  // == full speed
179 217
 
180
-
181 218
 //===========================================================================
182
-//=============================Mechanical Settings===========================
219
+//============================ Mechanical Settings ==========================
183 220
 //===========================================================================
184 221
 
185 222
 // @section homing
186 223
 
187
-#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing
224
+// If you want endstops to stay on (by default) even when not homing
225
+// enable this option. Override at any time with M120, M121.
226
+//#define ENDSTOPS_ALWAYS_ON_DEFAULT
188 227
 
189 228
 // @section extras
190 229
 
191 230
 //#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
192 231
 
232
+// Dual X Steppers
233
+// Uncomment this option to drive two X axis motors.
234
+// The next unused E driver will be assigned to the second X stepper.
235
+//#define X_DUAL_STEPPER_DRIVERS
236
+#if ENABLED(X_DUAL_STEPPER_DRIVERS)
237
+  // Set true if the two X motors need to rotate in opposite directions
238
+  #define INVERT_X2_VS_X_DIR true
239
+#endif
240
+
241
+
242
+// Dual Y Steppers
243
+// Uncomment this option to drive two Y axis motors.
244
+// The next unused E driver will be assigned to the second Y stepper.
245
+//#define Y_DUAL_STEPPER_DRIVERS
246
+#if ENABLED(Y_DUAL_STEPPER_DRIVERS)
247
+  // Set true if the two Y motors need to rotate in opposite directions
248
+  #define INVERT_Y2_VS_Y_DIR true
249
+#endif
250
+
193 251
 // A single Z stepper driver is usually used to drive 2 stepper motors.
194
-// Uncomment this define to utilize a separate stepper driver for each Z axis motor.
195
-// Only a few motherboards support this, like RAMPS, which have dual extruder support (the 2nd, often unused, extruder driver is used
196
-// to control the 2nd Z axis stepper motor). The pins are currently only defined for a RAMPS motherboards.
197
-// On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder.
252
+// Uncomment this option to use a separate stepper driver for each Z axis motor.
253
+// The next unused E driver will be assigned to the second Z stepper.
198 254
 //#define Z_DUAL_STEPPER_DRIVERS
199 255
 
200 256
 #if ENABLED(Z_DUAL_STEPPER_DRIVERS)
@@ -216,14 +272,6 @@
216 272
 
217 273
 #endif // Z_DUAL_STEPPER_DRIVERS
218 274
 
219
-// Same again but for Y Axis.
220
-//#define Y_DUAL_STEPPER_DRIVERS
221
-
222
-#if ENABLED(Y_DUAL_STEPPER_DRIVERS)
223
-  // Define if the two Y drives need to rotate in opposite directions
224
-  #define INVERT_Y2_VS_Y_DIR true
225
-#endif
226
-
227 275
 // Enable this for dual x-carriage printers.
228 276
 // A dual x-carriage design has the advantage that the inactive extruder can be parked which
229 277
 // prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
@@ -237,7 +285,7 @@
237 285
   #define X2_MAX_POS 353    // set maximum to the distance between toolheads when both heads are homed
238 286
   #define X2_HOME_DIR 1     // the second X-carriage always homes to the maximum endstop position
239 287
   #define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position
240
-      // However: In this mode the EXTRUDER_OFFSET_X value for the second extruder provides a software
288
+      // However: In this mode the HOTEND_OFFSET_X value for the second extruder provides a software
241 289
       // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops
242 290
       // without modifying the firmware (through the "M218 T1 X???" command).
243 291
       // Remember: you should set the second extruder x-offset to 0 in your slicer.
@@ -279,7 +327,10 @@
279 327
 
280 328
 #define AXIS_RELATIVE_MODES {false, false, false, false}
281 329
 
282
-//By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
330
+// Allow duplication mode with a basic dual-nozzle extruder
331
+//#define DUAL_NOZZLE_DUPLICATION_MODE
332
+
333
+// By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
283 334
 #define INVERT_X_STEP_PIN false
284 335
 #define INVERT_Y_STEP_PIN false
285 336
 #define INVERT_Z_STEP_PIN false
@@ -353,6 +404,9 @@
353 404
 
354 405
 // @section lcd
355 406
 
407
+// Include a page of printer information in the LCD Main Menu
408
+//#define LCD_INFO_MENU
409
+
356 410
 #if ENABLED(SDSUPPORT)
357 411
 
358 412
   // Some RAMPS and other boards don't detect when an SD card is inserted. You can work
@@ -390,7 +444,6 @@
390 444
   // This option allows you to abort SD printing when any endstop is triggered.
391 445
   // This feature must be enabled with "M540 S1" or from the LCD menu.
392 446
   // To have any effect, endstops must be enabled during SD printing.
393
-  // With ENDSTOPS_ONLY_FOR_HOMING you must send "M120" to enable endstops.
394 447
   //#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED
395 448
 
396 449
 #endif // SDSUPPORT
@@ -406,9 +459,10 @@
406 459
   //#define USE_SMALL_INFOFONT
407 460
 #endif // DOGLCD
408 461
 
409
-// @section more
462
+// @section safety
410 463
 
411
-// The hardware watchdog should reset the microcontroller disabling all outputs, in case the firmware gets stuck and doesn't do temperature regulation.
464
+// The hardware watchdog should reset the microcontroller disabling all outputs,
465
+// in case the firmware gets stuck and doesn't do temperature regulation.
412 466
 #define USE_WATCHDOG
413 467
 
414 468
 #if ENABLED(USE_WATCHDOG)
@@ -447,6 +501,27 @@
447 501
   #define D_FILAMENT 2.85
448 502
 #endif
449 503
 
504
+// Implementation of a linear pressure control
505
+// Assumption: advance = k * (delta velocity)
506
+// K=0 means advance disabled. A good value for a gregs wade extruder will be around K=75
507
+//#define LIN_ADVANCE
508
+
509
+#if ENABLED(LIN_ADVANCE)
510
+  #define LIN_ADVANCE_K 75
511
+#endif
512
+
513
+// @section leveling
514
+
515
+// Default mesh area is an area with an inset margin on the print area.
516
+// Below are the macros that are used to define the borders for the mesh area,
517
+// made available here for specialized needs, ie dual extruder setup.
518
+#if ENABLED(MESH_BED_LEVELING)
519
+  #define MESH_MIN_X (X_MIN_POS + MESH_INSET)
520
+  #define MESH_MAX_X (X_MAX_POS - (MESH_INSET))
521
+  #define MESH_MIN_Y (Y_MIN_POS + MESH_INSET)
522
+  #define MESH_MAX_Y (Y_MAX_POS - (MESH_INSET))
523
+#endif
524
+
450 525
 // @section extras
451 526
 
452 527
 // Arc interpretation settings:
@@ -478,12 +553,27 @@ const unsigned int dropsegments = 5; //everything with less than this number of
478 553
   #define BLOCK_BUFFER_SIZE 16 // maximize block buffer
479 554
 #endif
480 555
 
481
-// @section more
556
+// @section serial
482 557
 
483
-//The ASCII buffer for receiving from the serial:
558
+// The ASCII buffer for serial input
484 559
 #define MAX_CMD_SIZE 96
485 560
 #define BUFSIZE 4
486 561
 
562
+// Transfer Buffer Size
563
+// To save 386 bytes of PROGMEM (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0.
564
+// To buffer a simple "ok" you need 4 bytes.
565
+// For ADVANCED_OK (M105) you need 32 bytes.
566
+// For debug-echo: 128 bytes for the optimal speed.
567
+// Other output doesn't need to be that speedy.
568
+// :[0,2,4,8,16,32,64,128,256]
569
+#define TX_BUFFER_SIZE 0
570
+
571
+// Enable an emergency-command parser to intercept certain commands as they
572
+// enter the serial receive buffer, so they cannot be blocked.
573
+// Currently handles M108, M112, M410
574
+// Does not work on boards using AT90USB (USBCON) processors!
575
+//#define EMERGENCY_PARSER
576
+
487 577
 // Bad Serial-connections can miss a received command by sending an 'ok'
488 578
 // Therefore some clients abort after 30 seconds in a timeout.
489 579
 // Some other clients start sending commands while receiving a 'wait'.
@@ -515,16 +605,30 @@ const unsigned int dropsegments = 5; //everything with less than this number of
515 605
 
516 606
 // Add support for experimental filament exchange support M600; requires display
517 607
 #if ENABLED(ULTIPANEL)
518
-  //#define FILAMENTCHANGEENABLE
519
-  #if ENABLED(FILAMENTCHANGEENABLE)
520
-    #define FILAMENTCHANGE_XPOS 3
521
-    #define FILAMENTCHANGE_YPOS 3
522
-    #define FILAMENTCHANGE_ZADD 10
523
-    #define FILAMENTCHANGE_FIRSTRETRACT -2
524
-    #define FILAMENTCHANGE_FINALRETRACT -100
525
-    #define AUTO_FILAMENT_CHANGE                //This extrude filament until you press the button on LCD
526
-    #define AUTO_FILAMENT_CHANGE_LENGTH 0.04    //Extrusion length on automatic extrusion loop
527
-    #define AUTO_FILAMENT_CHANGE_FEEDRATE 300   //Extrusion feedrate (mm/min) on automatic extrusion loop
608
+  // #define FILAMENT_CHANGE_FEATURE             // Enable filament exchange menu and M600 g-code (used for runout sensor too)
609
+  #if ENABLED(FILAMENT_CHANGE_FEATURE)
610
+    #define FILAMENT_CHANGE_X_POS 3             // X position of hotend
611
+    #define FILAMENT_CHANGE_Y_POS 3             // Y position of hotend
612
+    #define FILAMENT_CHANGE_Z_ADD 10            // Z addition of hotend (lift)
613
+    #define FILAMENT_CHANGE_XY_FEEDRATE 100     // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
614
+    #define FILAMENT_CHANGE_Z_FEEDRATE 5        // Z axis feedrate in mm/s (not used for delta printers)
615
+    #define FILAMENT_CHANGE_RETRACT_LENGTH 2    // Initial retract in mm
616
+                                                // It is a short retract used immediately after print interrupt before move to filament exchange position
617
+    #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
618
+    #define FILAMENT_CHANGE_UNLOAD_LENGTH 100   // Unload filament length from hotend in mm
619
+                                                // Longer length for bowden printers to unload filament from whole bowden tube,
620
+                                                // shorter lenght for printers without bowden to unload filament from extruder only,
621
+                                                // 0 to disable unloading for manual unloading
622
+    #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10  // Unload filament feedrate in mm/s - filament unloading can be fast
623
+    #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
624
+                                                // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
625
+                                                // Short or zero length for printers without bowden where loading is not used
626
+    #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
627
+    #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
628
+                                                // 0 to disable for manual extrusion
629
+                                                // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
630
+                                                // or until outcoming filament color is not clear for filament color change
631
+    #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
528 632
   #endif
529 633
 #endif
530 634
 
@@ -670,9 +774,9 @@ const unsigned int dropsegments = 5; //everything with less than this number of
670 774
  * devices on the bus.
671 775
  *
672 776
  * ; Example #1
673
- * ; This macro send the string "Marlin" to the slave device with address 0x63
777
+ * ; This macro send the string "Marlin" to the slave device with address 0x63 (99)
674 778
  * ; It uses multiple M155 commands with one B<base 10> arg
675
- * M155 A63  ; Target slave address
779
+ * M155 A99  ; Target slave address
676 780
  * M155 B77  ; M
677 781
  * M155 B97  ; a
678 782
  * M155 B114 ; r
@@ -682,19 +786,16 @@ const unsigned int dropsegments = 5; //everything with less than this number of
682 786
  * M155 S1   ; Send the current buffer
683 787
  *
684 788
  * ; Example #2
685
- * ; Request 6 bytes from slave device with address 0x63
686
- * M156 A63 B5
789
+ * ; Request 6 bytes from slave device with address 0x63 (99)
790
+ * M156 A99 B5
687 791
  *
688 792
  * ; Example #3
689 793
  * ; Example serial output of a M156 request
690
- * echo:i2c-reply: from:63 bytes:5 data:hello
794
+ * echo:i2c-reply: from:99 bytes:5 data:hello
691 795
  */
692 796
 
693 797
 // @section i2cbus
694 798
 
695 799
 //#define EXPERIMENTAL_I2CBUS
696 800
 
697
-#include "Conditionals.h"
698
-#include "SanityCheck.h"
699
-
700
-#endif //CONFIGURATION_ADV_H
801
+#endif // CONFIGURATION_ADV_H

+ 290
- 147
Marlin/example_configurations/makibox/Configuration.h Parādīt failu

@@ -38,8 +38,18 @@
38 38
 #ifndef CONFIGURATION_H
39 39
 #define CONFIGURATION_H
40 40
 
41
-#include "boards.h"
42
-#include "macros.h"
41
+/**
42
+ *
43
+ *  ***********************************
44
+ *  **  ATTENTION TO ALL DEVELOPERS  **
45
+ *  ***********************************
46
+ *
47
+ * You must increment this version number for every significant change such as,
48
+ * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option.
49
+ *
50
+ * Note: Update also Version.h !
51
+ */
52
+#define CONFIGURATION_H_VERSION 010100
43 53
 
44 54
 //===========================================================================
45 55
 //============================= Getting Started =============================
@@ -73,20 +83,26 @@
73 83
 
74 84
 // @section info
75 85
 
76
-#if ENABLED(USE_AUTOMATIC_VERSIONING)
77
-  #include "_Version.h"
78
-#else
79
-  #include "Version.h"
80
-#endif
81
-
82 86
 // User-specified version info of this build to display in [Pronterface, etc] terminal window during
83 87
 // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
84 88
 // build by the user have been successfully uploaded into firmware.
85 89
 #define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes.
86 90
 #define SHOW_BOOTSCREEN
87
-#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during bootup in line 1
88
-//#define STRING_SPLASH_LINE2 STRING_DISTRIBUTION_DATE // will be shown during bootup in line 2
91
+#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during boot in line 1
92
+#define STRING_SPLASH_LINE2 WEBSITE_URL         // will be shown during boot in line 2
89 93
 
94
+//
95
+// *** VENDORS PLEASE READ *****************************************************
96
+//
97
+// Marlin now allow you to have a vendor boot image to be displayed on machine
98
+// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your
99
+// custom boot image and them the default Marlin boot image is shown.
100
+//
101
+// We suggest for you to take advantage of this new feature and keep the Marlin
102
+// boot image unmodified. For an example have a look at the bq Hephestos 2
103
+// example configuration folder.
104
+//
105
+//#define SHOW_CUSTOM_BOOTSCREEN
90 106
 // @section machine
91 107
 
92 108
 // SERIAL_PORT selects which serial port should be used for communication with the host.
@@ -123,17 +139,40 @@
123 139
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
124 140
 //#define SINGLENOZZLE
125 141
 
142
+// A dual extruder that uses a single stepper motor
143
+// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z
144
+//#define SWITCHING_EXTRUDER
145
+#if ENABLED(SWITCHING_EXTRUDER)
146
+  #define SWITCHING_EXTRUDER_SERVO_NR 0
147
+  #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1
148
+  //#define HOTEND_OFFSET_Z {0.0, 0.0}
149
+#endif
150
+
151
+/**
152
+ * "Mixing Extruder"
153
+ *   - Adds a new code, M165, to set the current mix factors.
154
+ *   - Extends the stepping routines to move multiple steppers in proportion to the mix.
155
+ *   - Optional support for Repetier Host M163, M164, and virtual extruder.
156
+ *   - This implementation supports only a single extruder.
157
+ *   - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
158
+ */
159
+//#define MIXING_EXTRUDER
160
+#if ENABLED(MIXING_EXTRUDER)
161
+  #define MIXING_STEPPERS 2        // Number of steppers in your mixing extruder
162
+  #define MIXING_VIRTUAL_TOOLS 16  // Use the Virtual Tool method with M163 and M164
163
+  //#define DIRECT_MIXING_IN_G1    // Allow ABCDHI mix factors in G1 movement commands
164
+#endif
165
+
126 166
 // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
127 167
 // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
128 168
 // For the other hotends it is their distance from the extruder 0 hotend.
129
-//#define EXTRUDER_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
130
-//#define EXTRUDER_OFFSET_Y {0.0, 5.00}  // (in mm) for each extruder, offset of the hotend on the Y axis
169
+//#define HOTEND_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
170
+//#define HOTEND_OFFSET_Y {0.0, 5.00}  // (in mm) for each extruder, offset of the hotend on the Y axis
131 171
 
132 172
 //// The following define selects which power supply you have. Please choose the one that matches your setup
133 173
 // 1 = ATX
134 174
 // 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC)
135 175
 // :{1:'ATX',2:'X-Box 360'}
136
-
137 176
 #define POWER_SUPPLY 1
138 177
 
139 178
 // Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it.
@@ -168,6 +207,7 @@
168 207
 // 13 is 100k Hisens 3950  1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE"
169 208
 // 20 is the PT100 circuit found in the Ultimainboard V2.x
170 209
 // 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950
210
+// 66 is 4.7M High Temperature thermistor from Dyze Design
171 211
 // 70 is the 100K thermistor found in the bq Hephestos 2
172 212
 //
173 213
 //    1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k
@@ -184,7 +224,7 @@
184 224
 //     Use it for Testing or Development purposes. NEVER for production machine.
185 225
 //#define DUMMY_THERMISTOR_998_VALUE 25
186 226
 //#define DUMMY_THERMISTOR_999_VALUE 100
187
-// :{ '0': "Not used", '4': "10k !! do not use for a hotend. Bad resolution at high temp. !!", '1': "100k / 4.7k - EPCOS", '51': "100k / 1k - EPCOS", '6': "100k / 4.7k EPCOS - Not as accurate as Table 1", '5': "100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '7': "100k / 4.7k Honeywell 135-104LAG-J01", '71': "100k / 4.7k Honeywell 135-104LAF-J01", '8': "100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT", '9': "100k / 4.7k GE Sensing AL03006-58.2K-97-G1", '10': "100k / 4.7k RS 198-961", '11': "100k / 4.7k beta 3950 1%", '12': "100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)", '13': "100k Hisens 3950  1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'", '60': "100k Maker's Tool Works Kapton Bed Thermistor beta=3950", '55': "100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '2': "200k / 4.7k - ATC Semitec 204GT-2", '52': "200k / 1k - ATC Semitec 204GT-2", '-3': "Thermocouple + MAX31855 (only for sensor 0)", '-2': "Thermocouple + MAX6675 (only for sensor 0)", '-1': "Thermocouple + AD595", '3': "Mendel-parts / 4.7k", '1047': "Pt1000 / 4.7k", '1010': "Pt1000 / 1k (non standard)", '20': "PT100 (Ultimainboard V2.x)", '147': "Pt100 / 4.7k", '110': "Pt100 / 1k (non-standard)", '998': "Dummy 1", '999': "Dummy 2" }
227
+// :{ '0': "Not used",'1':"100k / 4.7k - EPCOS",'2':"200k / 4.7k - ATC Semitec 204GT-2",'3':"Mendel-parts / 4.7k",'4':"10k !! do not use for a hotend. Bad resolution at high temp. !!",'5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'6':"100k / 4.7k EPCOS - Not as accurate as Table 1",'7':"100k / 4.7k Honeywell 135-104LAG-J01",'8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT",'9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1",'10':"100k / 4.7k RS 198-961",'11':"100k / 4.7k beta 3950 1%",'12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)",'13':"100k Hisens 3950  1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'",'20':"PT100 (Ultimainboard V2.x)",'51':"100k / 1k - EPCOS",'52':"200k / 1k - ATC Semitec 204GT-2",'55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950",'66':"Dyze Design 4.7M High Temperature thermistor",'70':"the 100K thermistor found in the bq Hephestos 2",'71':"100k / 4.7k Honeywell 135-104LAF-J01",'147':"Pt100 / 4.7k",'1047':"Pt1000 / 4.7k",'110':"Pt100 / 1k (non-standard)",'1010':"Pt1000 / 1k (non standard)",'-3':"Thermocouple + MAX31855 (only for sensor 0)",'-2':"Thermocouple + MAX6675 (only for sensor 0)",'-1':"Thermocouple + AD595",'998':"Dummy 1",'999':"Dummy 2" }
188 228
 #define TEMP_SENSOR_0 1
189 229
 #define TEMP_SENSOR_1 0
190 230
 #define TEMP_SENSOR_2 0
@@ -223,10 +263,6 @@
223 263
 #define HEATER_3_MAXTEMP 275
224 264
 #define BED_MAXTEMP 150
225 265
 
226
-// If you want the M105 heater power reported in watts, define the BED_WATTS, and (shared for all extruders) EXTRUDER_WATTS
227
-//#define EXTRUDER_WATTS (12.0*12.0/6.7) // P=U^2/R
228
-//#define BED_WATTS (12.0*12.0/1.1)      // P=U^2/R
229
-
230 266
 //===========================================================================
231 267
 //============================= PID Settings ================================
232 268
 //===========================================================================
@@ -241,8 +277,8 @@
241 277
   //#define PID_DEBUG // Sends debug data to the serial port.
242 278
   //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX
243 279
   //#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
244
-  //#define PID_PARAMS_PER_EXTRUDER // Uses separate PID parameters for each extruder (useful for mismatched extruders)
245
-                                    // Set/get with gcode: M301 E[extruder number, 0-2]
280
+  //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders)
281
+                                  // Set/get with gcode: M301 E[extruder number, 0-2]
246 282
   #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature
247 283
                                   // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max.
248 284
   #define PID_INTEGRAL_DRIVE_MAX PID_MAX  //limit for the integral term
@@ -387,18 +423,79 @@
387 423
 #endif
388 424
 
389 425
 // Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup).
390
-const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
391
-const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
392
-const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
393
-const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
394
-const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
395
-const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
396
-const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
426
+#define X_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
427
+#define Y_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
428
+#define Z_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
429
+#define X_MAX_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
430
+#define Y_MAX_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
431
+#define Z_MAX_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
432
+#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
397 433
 
398 434
 //===========================================================================
399 435
 //============================= Z Probe Options =============================
400 436
 //===========================================================================
401 437
 
438
+//
439
+// Probe Type
440
+// Probes are sensors/switches that are activated / deactivated before/after use.
441
+//
442
+// Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc.
443
+// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below.
444
+//
445
+// Use M851 to set the Z probe vertical offset from the nozzle. Store with M500.
446
+//
447
+
448
+// A Fix-Mounted Probe either doesn't deploy or needs manual deployment.
449
+// For example an inductive probe, or a setup that uses the nozzle to probe.
450
+// An inductive probe must be deactivated to go below
451
+// its trigger-point if hardware endstops are active.
452
+//#define FIX_MOUNTED_PROBE
453
+
454
+// The BLTouch probe emulates a servo probe.
455
+//#define BLTOUCH
456
+
457
+// Z Servo Probe, such as an endstop switch on a rotating arm.
458
+//#define Z_ENDSTOP_SERVO_NR 0
459
+//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles
460
+
461
+// Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
462
+//#define Z_PROBE_SLED
463
+//#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.
464
+
465
+// Z Probe to nozzle (X,Y) offset, relative to (0, 0).
466
+// X and Y offsets must be integers.
467
+//
468
+// In the following example the X and Y offsets are both positive:
469
+// #define X_PROBE_OFFSET_FROM_EXTRUDER 10
470
+// #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
471
+//
472
+//    +-- BACK ---+
473
+//    |           |
474
+//  L |    (+) P  | R <-- probe (20,20)
475
+//  E |           | I
476
+//  F | (-) N (+) | G <-- nozzle (10,10)
477
+//  T |           | H
478
+//    |    (-)    | T
479
+//    |           |
480
+//    O-- FRONT --+
481
+//  (0,0)
482
+#define X_PROBE_OFFSET_FROM_EXTRUDER -25     // X offset: -left  +right  [of the nozzle]
483
+#define Y_PROBE_OFFSET_FROM_EXTRUDER -29     // Y offset: -front +behind [the nozzle]
484
+#define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35  // Z offset: -below +above  [the nozzle]
485
+
486
+// X and Y axis travel speed (mm/m) between probes
487
+#define XY_PROBE_SPEED 8000
488
+// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
489
+#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
490
+// Speed for the "accurate" probe of each point
491
+#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
492
+// Use double touch for probing
493
+//#define PROBE_DOUBLE_TOUCH
494
+
495
+//
496
+// Allen Key Probe is defined in the Delta example configurations.
497
+//
498
+
402 499
 // Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z Probe and a Z-min-endstop on the same machine.
403 500
 // With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing.
404 501
 //
@@ -410,7 +507,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
410 507
 // To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN.
411 508
 //
412 509
 // For a servo-based Z probe, you must set up servo support below, including
413
-// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES.
510
+// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and Z_SERVO_ANGLES.
414 511
 //
415 512
 // - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin.
416 513
 // - Use 5V for powered (usu. inductive) sensors.
@@ -443,6 +540,21 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
443 540
 // If you're using the Z MIN endstop connector for your Z probe, this has no effect.
444 541
 //#define DISABLE_Z_MIN_PROBE_ENDSTOP
445 542
 
543
+// Enable Z Probe Repeatability test to see how accurate your probe is
544
+//#define Z_MIN_PROBE_REPEATABILITY_TEST
545
+
546
+//
547
+// Probe Raise options provide clearance for the probe to deploy, stow, and travel.
548
+//
549
+#define Z_PROBE_DEPLOY_HEIGHT 15 // Raise to make room for the probe to deploy / stow
550
+#define Z_PROBE_TRAVEL_HEIGHT 5  // Raise between probing points.
551
+
552
+//
553
+// For M851 give a range for adjusting the Z probe offset
554
+//
555
+#define Z_PROBE_OFFSET_RANGE_MIN -20
556
+#define Z_PROBE_OFFSET_RANGE_MAX 20
557
+
446 558
 // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
447 559
 // :{0:'Low',1:'High'}
448 560
 #define X_ENABLE_ON 0
@@ -479,8 +591,9 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
479 591
 #define INVERT_E3_DIR false
480 592
 
481 593
 // @section homing
482
-//#define MIN_Z_HEIGHT_FOR_HOMING 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
483
-                                    // Be sure you have this distance over your Z_MAX_POS in case.
594
+
595
+//#define Z_HOMING_HEIGHT 4  // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
596
+                             // Be sure you have this distance over your Z_MAX_POS in case.
484 597
 
485 598
 // ENDSTOP SETTINGS:
486 599
 // Sets direction of endstops when homing; 1=MAX, -1=MIN
@@ -510,7 +623,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
510 623
                                  // It is assumed that when logic high = filament available
511 624
                                  //                    when logic  low = filament ran out
512 625
 #if ENABLED(FILAMENT_RUNOUT_SENSOR)
513
-  const bool FIL_RUNOUT_INVERTING = true;  // Should be uncommented and true or false should assigned
626
+  const bool FIL_RUNOUT_INVERTING = false; // set to true to invert the logic of the sensor.
514 627
   #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined.
515 628
   #define FILAMENT_RUNOUT_SCRIPT "M600"
516 629
 #endif
@@ -522,10 +635,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
522 635
 //#define MESH_BED_LEVELING    // Enable mesh bed leveling.
523 636
 
524 637
 #if ENABLED(MESH_BED_LEVELING)
525
-  #define MESH_MIN_X 10
526
-  #define MESH_MAX_X (X_MAX_POS - (MESH_MIN_X))
527
-  #define MESH_MIN_Y 10
528
-  #define MESH_MAX_Y (Y_MAX_POS - (MESH_MIN_Y))
638
+  #define MESH_INSET 10        // Mesh inset margin on print area
529 639
   #define MESH_NUM_X_POINTS 3  // Don't use more than 7 points per axis, implementation limited.
530 640
   #define MESH_NUM_Y_POINTS 3
531 641
   #define MESH_HOME_SEARCH_Z 4  // Z after Home, bed somewhere below but above 0.0.
@@ -547,8 +657,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
547 657
 // @section bedlevel
548 658
 
549 659
 //#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line)
660
+
661
+// Enable this feature to get detailed logging of G28, G29, M48, etc.
662
+// Logging is off by default. Enable this logging feature with 'M111 S32'.
663
+// NOTE: Requires a huge amount of PROGMEM.
550 664
 //#define DEBUG_LEVELING_FEATURE
551
-#define Z_MIN_PROBE_REPEATABILITY_TEST  // If not commented out, Z Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
552 665
 
553 666
 #if ENABLED(AUTO_BED_LEVELING_FEATURE)
554 667
 
@@ -591,58 +704,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
591 704
     #define ABL_PROBE_PT_3_X 170
592 705
     #define ABL_PROBE_PT_3_Y 20
593 706
 
594
-  #endif // AUTO_BED_LEVELING_GRID
595
-
596
-  // Z Probe to nozzle (X,Y) offset, relative to (0, 0).
597
-  // X and Y offsets must be integers.
598
-  //
599
-  // In the following example the X and Y offsets are both positive:
600
-  // #define X_PROBE_OFFSET_FROM_EXTRUDER 10
601
-  // #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
602
-  //
603
-  //    +-- BACK ---+
604
-  //    |           |
605
-  //  L |    (+) P  | R <-- probe (20,20)
606
-  //  E |           | I
607
-  //  F | (-) N (+) | G <-- nozzle (10,10)
608
-  //  T |           | H
609
-  //    |    (-)    | T
610
-  //    |           |
611
-  //    O-- FRONT --+
612
-  //  (0,0)
613
-  #define X_PROBE_OFFSET_FROM_EXTRUDER -25     // X offset: -left  +right  [of the nozzle]
614
-  #define Y_PROBE_OFFSET_FROM_EXTRUDER -29     // Y offset: -front +behind [the nozzle]
615
-  #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35  // Z offset: -below +above  [the nozzle]
616
-
617
-  #define XY_TRAVEL_SPEED 8000         // X and Y axis travel speed between probes, in mm/min.
618
-
619
-  #define Z_RAISE_BEFORE_PROBING 15   // How much the Z axis will be raised before traveling to the first probing point.
620
-  #define Z_RAISE_BETWEEN_PROBINGS 5  // How much the Z axis will be raised when traveling from between next probing points.
621
-  #define Z_RAISE_AFTER_PROBING 15    // How much the Z axis will be raised after the last probing point.
707
+  #endif // !AUTO_BED_LEVELING_GRID
622 708
 
623 709
   //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine.
624 710
                                                                              // Useful to retract a deployable Z probe.
625 711
 
626
-  // Probes are sensors/switches that need to be activated before they can be used
627
-  // and deactivated after their use.
628
-  // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE
629
-
630
-  // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER
631
-  // when the hardware endstops are active.
632
-  //#define FIX_MOUNTED_PROBE
633
-
634
-  // A Servo Probe can be defined in the servo section below.
635
-
636
-  // An Allen Key Probe is currently predefined only in the delta example configurations.
637
-
638
-  // Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
639
-  //#define Z_PROBE_SLED
640
-  //#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.
641
-
642
-  // A Mechanical Probe is any probe that either doesn't deploy or needs manual deployment
643
-  // For example any setup that uses the nozzle itself as a probe.
644
-  //#define MECHANICAL_PROBE
645
-
646 712
   // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing,
647 713
   // it is highly recommended you also enable Z_SAFE_HOMING below!
648 714
 
@@ -651,18 +717,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
651 717
 
652 718
 // @section homing
653 719
 
654
-// The position of the homing switches
655
-//#define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used
656
-//#define BED_CENTER_AT_0_0  // If defined, the center of the bed is at (X=0, Y=0)
657
-
658
-// Manual homing switch locations:
659
-// For deltabots this means top and center of the Cartesian print volume.
660
-#if ENABLED(MANUAL_HOME_POSITIONS)
661
-  #define MANUAL_X_HOME_POS 0
662
-  #define MANUAL_Y_HOME_POS 0
663
-  #define MANUAL_Z_HOME_POS 0
664
-  //#define MANUAL_Z_HOME_POS 402 // For delta: Distance between nozzle and print surface after homing.
665
-#endif
720
+// The center of the bed is at (X=0, Y=0)
721
+//#define BED_CENTER_AT_0_0
722
+
723
+// Manually set the home position. Leave these undefined for automatic settings.
724
+// For DELTA this is the top-center of the Cartesian print volume.
725
+//#define MANUAL_X_HOME_POS 0
726
+//#define MANUAL_Y_HOME_POS 0
727
+//#define MANUAL_Z_HOME_POS 0 // Distance between the nozzle to printbed after homing
666 728
 
667 729
 // Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
668 730
 //
@@ -670,7 +732,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
670 732
 //
671 733
 // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
672 734
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
673
-// - Position the Z probe in a defined XY point before Z Homing when homing all axes (G28).
735
+// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
674 736
 // - Prevent Z homing when the Z probe is outside bed area.
675 737
 //#define Z_SAFE_HOMING
676 738
 
@@ -679,14 +741,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
679 741
   #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2)    // Y point for Z homing when homing all axis (G28).
680 742
 #endif
681 743
 
744
+// Homing speeds (mm/m)
745
+#define HOMING_FEEDRATE_XY 1500
746
+#define HOMING_FEEDRATE_Z  (2*60)
682 747
 
683
-// @section movement
684
-
685
-/**
686
- * MOVEMENT SETTINGS
687
- */
688
-
689
-#define HOMING_FEEDRATE {1500, 1500, 120, 0}  // set the homing speeds (mm/min)   ***** MakiBox A6 *****
748
+//
749
+// MOVEMENT SETTINGS
750
+// @section motion
751
+//
690 752
 
691 753
 // default settings
692 754
 
@@ -708,18 +770,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
708 770
 //============================= Additional Features ===========================
709 771
 //=============================================================================
710 772
 
711
-// @section more
712
-
713
-// Custom M code points
714
-#define CUSTOM_M_CODES
715
-#if ENABLED(CUSTOM_M_CODES)
716
-  #if ENABLED(AUTO_BED_LEVELING_FEATURE)
717
-    #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851
718
-    #define Z_PROBE_OFFSET_RANGE_MIN -20
719
-    #define Z_PROBE_OFFSET_RANGE_MAX 20
720
-  #endif
721
-#endif
722
-
723 773
 // @section extras
724 774
 
725 775
 //
@@ -751,22 +801,107 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
751 801
 //
752 802
 //#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose
753 803
 
804
+//
805
+// G20/G21 Inch mode support
806
+//
807
+//#define INCH_MODE_SUPPORT
808
+
809
+//
810
+// M149 Set temperature units support
811
+//
812
+//#define TEMPERATURE_UNITS_SUPPORT
813
+
754 814
 // @section temperature
755 815
 
756 816
 // Preheat Constants
757
-#define PLA_PREHEAT_HOTEND_TEMP 180
758
-#define PLA_PREHEAT_HPB_TEMP 70
759
-#define PLA_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
817
+#define PREHEAT_1_TEMP_HOTEND 180
818
+#define PREHEAT_1_TEMP_BED     70
819
+#define PREHEAT_1_FAN_SPEED   255 // Value from 0 to 255
820
+
821
+#define PREHEAT_2_TEMP_HOTEND 240
822
+#define PREHEAT_2_TEMP_BED    100
823
+#define PREHEAT_2_FAN_SPEED   255 // Value from 0 to 255
760 824
 
761
-#define ABS_PREHEAT_HOTEND_TEMP 240
762
-#define ABS_PREHEAT_HPB_TEMP 100
763
-#define ABS_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
825
+//
826
+// Nozzle Park -- EXPERIMENTAL
827
+//
828
+// When enabled allows the user to define a special XYZ position, inside the
829
+// machine's topology, to park the nozzle when idle or when receiving the G27
830
+// command.
831
+//
832
+// The "P" paramenter controls what is the action applied to the Z axis:
833
+//    P0: (Default) If current Z-pos is lower than Z-park then the nozzle will
834
+//        be raised to reach Z-park height.
835
+//
836
+//    P1: No matter the current Z-pos, the nozzle will be raised/lowered to
837
+//        reach Z-park height.
838
+//
839
+//    P2: The nozzle height will be raised by Z-park amount but never going over
840
+//        the machine's limit of Z_MAX_POS.
841
+//
842
+//#define NOZZLE_PARK_FEATURE
843
+
844
+#if ENABLED(NOZZLE_PARK_FEATURE)
845
+  // Specify a park position as { X, Y, Z }
846
+  #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 }
847
+#endif
848
+
849
+//
850
+// Clean Nozzle Feature -- EXPERIMENTAL
851
+//
852
+// When enabled allows the user to send G12 to start the nozzle cleaning
853
+// process, the G-Code accepts two parameters:
854
+//   "P" for pattern selection
855
+//   "S" for defining the number of strokes/repetitions
856
+//
857
+// Available list of patterns:
858
+//   P0: This is the default pattern, this process requires a sponge type
859
+//       material at a fixed bed location, the cleaning process is based on
860
+//       "strokes" i.e. back-and-forth movements between the starting and end
861
+//       points.
862
+//
863
+//   P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T"
864
+//       defines the number of zig-zag triangles to be done. "S" defines the
865
+//       number of strokes aka one back-and-forth movement. As an example
866
+//       sending "G12 P1 S1 T3" will execute:
867
+//
868
+//          --
869
+//         |  (X0, Y1) |     /\        /\        /\     | (X1, Y1)
870
+//         |           |    /  \      /  \      /  \    |
871
+//       A |           |   /    \    /    \    /    \   |
872
+//         |           |  /      \  /      \  /      \  |
873
+//         |  (X0, Y0) | /        \/        \/        \ | (X1, Y0)
874
+//          --         +--------------------------------+
875
+//                       |________|_________|_________|
876
+//                           T1        T2        T3
877
+//
878
+// Caveats: End point Z should use the same value as Start point Z.
879
+//
880
+// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments
881
+// may change to add new functionality like different wipe patterns.
882
+//
883
+//#define NOZZLE_CLEAN_FEATURE
884
+
885
+#if ENABLED(NOZZLE_CLEAN_FEATURE)
886
+  // Number of pattern repetitions
887
+  #define NOZZLE_CLEAN_STROKES  12
888
+
889
+  // Specify positions as { X, Y, Z }
890
+  #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)}
891
+  #define NOZZLE_CLEAN_END_POINT   {100, 60, (Z_MIN_POS + 1)}
892
+
893
+  // Moves the nozzle to the initial position
894
+  #define NOZZLE_CLEAN_GOBACK
895
+#endif
764 896
 
765 897
 //
766 898
 // Print job timer
767 899
 //
768 900
 // Enable this option to automatically start and stop the
769
-// print job timer when M104 and M109 commands are received.
901
+// print job timer when M104/M109/M190 commands are received.
902
+// M104 (extruder without wait) - high temp = none, low temp = stop timer
903
+// M109 (extruder with wait) - high temp = start timer, low temp = stop timer
904
+// M190 (bed with wait) - high temp = start timer, low temp = none
770 905
 //
771 906
 // In all cases the timer can be started and stopped using
772 907
 // the following commands:
@@ -799,8 +934,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
799 934
 //
800 935
 // Here you may choose the language used by Marlin on the LCD menus, the following
801 936
 // list of languages are available:
802
-//    en, pl, fr, de, es, ru, bg, it, pt, pt_utf8, pt-br, pt-br_utf8,
803
-//    fi, an, nl, ca, eu, kana, kana_utf8, cn, cz, test
937
+//    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
938
+//    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
939
+//
940
+// :{'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','test':'TEST'}
804 941
 //
805 942
 //#define LCD_LANGUAGE en
806 943
 
@@ -948,6 +1085,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
948 1085
 //#define ULTIPANEL
949 1086
 
950 1087
 //
1088
+// Cartesio UI
1089
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1090
+//
1091
+//#define CARTESIO_UI
1092
+
1093
+//
951 1094
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
952 1095
 // http://reprap.org/wiki/PanelOne
953 1096
 //
@@ -960,6 +1103,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
960 1103
 //#define MAKRPANEL
961 1104
 
962 1105
 //
1106
+// ReprapWorld Graphical LCD
1107
+// https://reprapworld.com/?products_details&products_id/1218
1108
+//
1109
+//#define REPRAPWORLD_GRAPHICAL_LCD
1110
+
1111
+//
963 1112
 // Activate one of these if you have a Panucatt Devices
964 1113
 // Viki 2.0 or mini Viki with Graphic LCD
965 1114
 // http://panucatt.com
@@ -1009,7 +1158,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1009 1158
 // is pressed, a value of 10.0 means 10mm per click.
1010 1159
 //
1011 1160
 //#define REPRAPWORLD_KEYPAD
1012
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1161
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1013 1162
 
1014 1163
 //
1015 1164
 // RigidBot Panel V1.0
@@ -1070,6 +1219,15 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1070 1219
 //#define U8GLIB_SSD1306
1071 1220
 
1072 1221
 //
1222
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1223
+//
1224
+//#define SAV_3DGLCD
1225
+#if ENABLED(SAV_3DGLCD)
1226
+  //#define U8GLIB_SSD1306
1227
+  #define U8GLIB_SH1106
1228
+#endif
1229
+
1230
+//
1073 1231
 // CONTROLLER TYPE: Shift register panels
1074 1232
 //
1075 1233
 // 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH
@@ -1097,7 +1255,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1097 1255
 // at zero value, there are 128 effective control positions.
1098 1256
 #define SOFT_PWM_SCALE 0
1099 1257
 
1100
-// Temperature status LEDs that display the hotend and bet temperature.
1258
+// Temperature status LEDs that display the hotend and bed temperature.
1101 1259
 // If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
1102 1260
 // Otherwise the RED led is on. There is 1C hysteresis.
1103 1261
 //#define TEMP_STAT_LEDS
@@ -1129,28 +1287,16 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1129 1287
 //
1130 1288
 //#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
1131 1289
 
1132
-// Servo Endstops
1133
-//
1134
-// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes.
1135
-// Use M851 to set the Z probe vertical offset from the nozzle. Store that setting with M500.
1136
-//
1137
-//#define X_ENDSTOP_SERVO_NR 1
1138
-//#define Y_ENDSTOP_SERVO_NR 2
1139
-//#define Z_ENDSTOP_SERVO_NR 0
1140
-//#define SERVO_ENDSTOP_ANGLES {{0,0}, {0,0}, {70,0}} // X,Y,Z Axis Extend and Retract angles
1290
+// Delay (in microseconds) before the next move will start, to give the servo time to reach its target angle.
1291
+// 300ms is a good value but you can try less delay.
1292
+// If the servo can't reach the requested position, increase it.
1293
+#define SERVO_DELAY 300
1141 1294
 
1142 1295
 // Servo deactivation
1143 1296
 //
1144 1297
 // With this option servos are powered only during movement, then turned off to prevent jitter.
1145 1298
 //#define DEACTIVATE_SERVOS_AFTER_MOVE
1146 1299
 
1147
-#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE)
1148
-  // Delay (in microseconds) before turning the servo off. This depends on the servo speed.
1149
-  // 300ms is a good value but you can try less delay.
1150
-  // If the servo can't reach the requested position, increase it.
1151
-  #define SERVO_DEACTIVATION_DELAY 300
1152
-#endif
1153
-
1154 1300
 /**********************************************************************\
1155 1301
  * Support for a filament diameter sensor
1156 1302
  * Also allows adjustment of diameter at print time (vs  at slicing)
@@ -1181,7 +1327,4 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1181 1327
   //#define FILAMENT_LCD_DISPLAY
1182 1328
 #endif
1183 1329
 
1184
-#include "Configuration_adv.h"
1185
-#include "thermistortables.h"
1186
-
1187
-#endif //CONFIGURATION_H
1330
+#endif // CONFIGURATION_H

+ 148
- 47
Marlin/example_configurations/makibox/Configuration_adv.h Parādīt failu

@@ -33,7 +33,18 @@
33 33
 #ifndef CONFIGURATION_ADV_H
34 34
 #define CONFIGURATION_ADV_H
35 35
 
36
-#include "Conditionals.h"
36
+/**
37
+ *
38
+ *  ***********************************
39
+ *  **  ATTENTION TO ALL DEVELOPERS  **
40
+ *  ***********************************
41
+ *
42
+ * You must increment this version number for every significant change such as,
43
+ * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option.
44
+ *
45
+ * Note: Update also Version.h !
46
+ */
47
+#define CONFIGURATION_ADV_H_VERSION 010100
37 48
 
38 49
 // @section temperature
39 50
 
@@ -102,8 +113,8 @@
102 113
 #if ENABLED(PIDTEMP)
103 114
   // this adds an experimental additional term to the heating power, proportional to the extrusion speed.
104 115
   // if Kc is chosen well, the additional required power due to increased melting should be compensated.
105
-  #define PID_ADD_EXTRUSION_RATE
106
-  #if ENABLED(PID_ADD_EXTRUSION_RATE)
116
+  //#define PID_EXTRUSION_SCALING
117
+  #if ENABLED(PID_EXTRUSION_SCALING)
107 118
     #define DEFAULT_Kc (100) //heating power=Kc*(e_speed)
108 119
     #define LPQ_MAX_LEN 50
109 120
   #endif
@@ -128,15 +139,42 @@
128 139
 //The M105 command return, besides traditional information, the ADC value read from temperature sensors.
129 140
 //#define SHOW_TEMP_ADC_VALUES
130 141
 
142
+/**
143
+ * High Temperature Thermistor Support
144
+ *
145
+ * Thermistors able to support high temperature tend to have a hard time getting
146
+ * good readings at room and lower temperatures. This means HEATER_X_RAW_LO_TEMP
147
+ * will probably be caught when the heating element first turns on during the
148
+ * preheating process, which will trigger a min_temp_error as a safety measure
149
+ * and force stop everything.
150
+ * To circumvent this limitation, we allow for a preheat time (during which,
151
+ * min_temp_error won't be triggered) and add a min_temp buffer to handle
152
+ * aberrant readings.
153
+ *
154
+ * If you want to enable this feature for your hotend thermistor(s)
155
+ * uncomment and set values > 0 in the constants below
156
+ */
157
+
158
+// The number of consecutive low temperature errors that can occur
159
+// before a min_temp_error is triggered. (Shouldn't be more than 10.)
160
+//#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 0
161
+
162
+// The number of milliseconds a hotend will preheat before starting to check
163
+// the temperature. This value should NOT be set to the time it takes the
164
+// hot end to reach the target temperature, but the time it takes to reach
165
+// the minimum temperature your thermistor can read. The lower the better/safer.
166
+// This shouldn't need to be more than 30 seconds (30000)
167
+//#define MILLISECONDS_PREHEAT_TIME 0
168
+
131 169
 // @section extruder
132 170
 
133 171
 //  extruder run-out prevention.
134 172
 //if the machine is idle, and the temperature over MINTEMP, every couple of SECONDS some filament is extruded
135 173
 //#define EXTRUDER_RUNOUT_PREVENT
136 174
 #define EXTRUDER_RUNOUT_MINTEMP 190
137
-#define EXTRUDER_RUNOUT_SECONDS 30.
138
-#define EXTRUDER_RUNOUT_ESTEPS 14. //mm filament
139
-#define EXTRUDER_RUNOUT_SPEED 1500.  //extrusion speed
175
+#define EXTRUDER_RUNOUT_SECONDS 30
176
+#define EXTRUDER_RUNOUT_ESTEPS 14   // mm filament
177
+#define EXTRUDER_RUNOUT_SPEED 1500  // extrusion speed
140 178
 #define EXTRUDER_RUNOUT_EXTRUDE 100
141 179
 
142 180
 // @section temperature
@@ -177,24 +215,42 @@
177 215
 #define EXTRUDER_AUTO_FAN_TEMPERATURE 50
178 216
 #define EXTRUDER_AUTO_FAN_SPEED   255  // == full speed
179 217
 
180
-
181 218
 //===========================================================================
182
-//=============================Mechanical Settings===========================
219
+//============================ Mechanical Settings ==========================
183 220
 //===========================================================================
184 221
 
185 222
 // @section homing
186 223
 
187
-#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing
224
+// If you want endstops to stay on (by default) even when not homing
225
+// enable this option. Override at any time with M120, M121.
226
+//#define ENDSTOPS_ALWAYS_ON_DEFAULT
188 227
 
189 228
 // @section extras
190 229
 
191 230
 //#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
192 231
 
232
+// Dual X Steppers
233
+// Uncomment this option to drive two X axis motors.
234
+// The next unused E driver will be assigned to the second X stepper.
235
+//#define X_DUAL_STEPPER_DRIVERS
236
+#if ENABLED(X_DUAL_STEPPER_DRIVERS)
237
+  // Set true if the two X motors need to rotate in opposite directions
238
+  #define INVERT_X2_VS_X_DIR true
239
+#endif
240
+
241
+
242
+// Dual Y Steppers
243
+// Uncomment this option to drive two Y axis motors.
244
+// The next unused E driver will be assigned to the second Y stepper.
245
+//#define Y_DUAL_STEPPER_DRIVERS
246
+#if ENABLED(Y_DUAL_STEPPER_DRIVERS)
247
+  // Set true if the two Y motors need to rotate in opposite directions
248
+  #define INVERT_Y2_VS_Y_DIR true
249
+#endif
250
+
193 251
 // A single Z stepper driver is usually used to drive 2 stepper motors.
194
-// Uncomment this define to utilize a separate stepper driver for each Z axis motor.
195
-// Only a few motherboards support this, like RAMPS, which have dual extruder support (the 2nd, often unused, extruder driver is used
196
-// to control the 2nd Z axis stepper motor). The pins are currently only defined for a RAMPS motherboards.
197
-// On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder.
252
+// Uncomment this option to use a separate stepper driver for each Z axis motor.
253
+// The next unused E driver will be assigned to the second Z stepper.
198 254
 //#define Z_DUAL_STEPPER_DRIVERS
199 255
 
200 256
 #if ENABLED(Z_DUAL_STEPPER_DRIVERS)
@@ -216,14 +272,6 @@
216 272
 
217 273
 #endif // Z_DUAL_STEPPER_DRIVERS
218 274
 
219
-// Same again but for Y Axis.
220
-//#define Y_DUAL_STEPPER_DRIVERS
221
-
222
-#if ENABLED(Y_DUAL_STEPPER_DRIVERS)
223
-  // Define if the two Y drives need to rotate in opposite directions
224
-  #define INVERT_Y2_VS_Y_DIR true
225
-#endif
226
-
227 275
 // Enable this for dual x-carriage printers.
228 276
 // A dual x-carriage design has the advantage that the inactive extruder can be parked which
229 277
 // prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
@@ -237,7 +285,7 @@
237 285
   #define X2_MAX_POS 353    // set maximum to the distance between toolheads when both heads are homed
238 286
   #define X2_HOME_DIR 1     // the second X-carriage always homes to the maximum endstop position
239 287
   #define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position
240
-      // However: In this mode the EXTRUDER_OFFSET_X value for the second extruder provides a software
288
+      // However: In this mode the HOTEND_OFFSET_X value for the second extruder provides a software
241 289
       // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops
242 290
       // without modifying the firmware (through the "M218 T1 X???" command).
243 291
       // Remember: you should set the second extruder x-offset to 0 in your slicer.
@@ -279,7 +327,10 @@
279 327
 
280 328
 #define AXIS_RELATIVE_MODES {false, false, false, false}
281 329
 
282
-//By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
330
+// Allow duplication mode with a basic dual-nozzle extruder
331
+//#define DUAL_NOZZLE_DUPLICATION_MODE
332
+
333
+// By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
283 334
 #define INVERT_X_STEP_PIN false
284 335
 #define INVERT_Y_STEP_PIN false
285 336
 #define INVERT_Z_STEP_PIN false
@@ -351,6 +402,9 @@
351 402
 
352 403
 // @section lcd
353 404
 
405
+// Include a page of printer information in the LCD Main Menu
406
+//#define LCD_INFO_MENU
407
+
354 408
 #if ENABLED(SDSUPPORT)
355 409
 
356 410
   // Some RAMPS and other boards don't detect when an SD card is inserted. You can work
@@ -388,7 +442,6 @@
388 442
   // This option allows you to abort SD printing when any endstop is triggered.
389 443
   // This feature must be enabled with "M540 S1" or from the LCD menu.
390 444
   // To have any effect, endstops must be enabled during SD printing.
391
-  // With ENDSTOPS_ONLY_FOR_HOMING you must send "M120" to enable endstops.
392 445
   //#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED
393 446
 
394 447
 #endif // SDSUPPORT
@@ -404,9 +457,10 @@
404 457
   //#define USE_SMALL_INFOFONT
405 458
 #endif // DOGLCD
406 459
 
407
-// @section more
460
+// @section safety
408 461
 
409
-// The hardware watchdog should reset the microcontroller disabling all outputs, in case the firmware gets stuck and doesn't do temperature regulation.
462
+// The hardware watchdog should reset the microcontroller disabling all outputs,
463
+// in case the firmware gets stuck and doesn't do temperature regulation.
410 464
 #define USE_WATCHDOG
411 465
 
412 466
 #if ENABLED(USE_WATCHDOG)
@@ -445,6 +499,27 @@
445 499
   #define D_FILAMENT 2.85
446 500
 #endif
447 501
 
502
+// Implementation of a linear pressure control
503
+// Assumption: advance = k * (delta velocity)
504
+// K=0 means advance disabled. A good value for a gregs wade extruder will be around K=75
505
+//#define LIN_ADVANCE
506
+
507
+#if ENABLED(LIN_ADVANCE)
508
+  #define LIN_ADVANCE_K 75
509
+#endif
510
+
511
+// @section leveling
512
+
513
+// Default mesh area is an area with an inset margin on the print area.
514
+// Below are the macros that are used to define the borders for the mesh area,
515
+// made available here for specialized needs, ie dual extruder setup.
516
+#if ENABLED(MESH_BED_LEVELING)
517
+  #define MESH_MIN_X (X_MIN_POS + MESH_INSET)
518
+  #define MESH_MAX_X (X_MAX_POS - (MESH_INSET))
519
+  #define MESH_MIN_Y (Y_MIN_POS + MESH_INSET)
520
+  #define MESH_MAX_Y (Y_MAX_POS - (MESH_INSET))
521
+#endif
522
+
448 523
 // @section extras
449 524
 
450 525
 // Arc interpretation settings:
@@ -476,12 +551,27 @@ const unsigned int dropsegments = 5; //everything with less than this number of
476 551
   #define BLOCK_BUFFER_SIZE 16 // maximize block buffer
477 552
 #endif
478 553
 
479
-// @section more
554
+// @section serial
480 555
 
481
-//The ASCII buffer for receiving from the serial:
556
+// The ASCII buffer for serial input
482 557
 #define MAX_CMD_SIZE 96
483 558
 #define BUFSIZE 4
484 559
 
560
+// Transfer Buffer Size
561
+// To save 386 bytes of PROGMEM (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0.
562
+// To buffer a simple "ok" you need 4 bytes.
563
+// For ADVANCED_OK (M105) you need 32 bytes.
564
+// For debug-echo: 128 bytes for the optimal speed.
565
+// Other output doesn't need to be that speedy.
566
+// :[0,2,4,8,16,32,64,128,256]
567
+#define TX_BUFFER_SIZE 0
568
+
569
+// Enable an emergency-command parser to intercept certain commands as they
570
+// enter the serial receive buffer, so they cannot be blocked.
571
+// Currently handles M108, M112, M410
572
+// Does not work on boards using AT90USB (USBCON) processors!
573
+//#define EMERGENCY_PARSER
574
+
485 575
 // Bad Serial-connections can miss a received command by sending an 'ok'
486 576
 // Therefore some clients abort after 30 seconds in a timeout.
487 577
 // Some other clients start sending commands while receiving a 'wait'.
@@ -513,16 +603,30 @@ const unsigned int dropsegments = 5; //everything with less than this number of
513 603
 
514 604
 // Add support for experimental filament exchange support M600; requires display
515 605
 #if ENABLED(ULTIPANEL)
516
-  //#define FILAMENTCHANGEENABLE
517
-  #if ENABLED(FILAMENTCHANGEENABLE)
518
-    #define FILAMENTCHANGE_XPOS 3
519
-    #define FILAMENTCHANGE_YPOS 3
520
-    #define FILAMENTCHANGE_ZADD 10
521
-    #define FILAMENTCHANGE_FIRSTRETRACT -2
522
-    #define FILAMENTCHANGE_FINALRETRACT -100
523
-    #define AUTO_FILAMENT_CHANGE                //This extrude filament until you press the button on LCD
524
-    #define AUTO_FILAMENT_CHANGE_LENGTH 0.04    //Extrusion length on automatic extrusion loop
525
-    #define AUTO_FILAMENT_CHANGE_FEEDRATE 300   //Extrusion feedrate (mm/min) on automatic extrusion loop
606
+  // #define FILAMENT_CHANGE_FEATURE             // Enable filament exchange menu and M600 g-code (used for runout sensor too)
607
+  #if ENABLED(FILAMENT_CHANGE_FEATURE)
608
+    #define FILAMENT_CHANGE_X_POS 3             // X position of hotend
609
+    #define FILAMENT_CHANGE_Y_POS 3             // Y position of hotend
610
+    #define FILAMENT_CHANGE_Z_ADD 10            // Z addition of hotend (lift)
611
+    #define FILAMENT_CHANGE_XY_FEEDRATE 100     // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
612
+    #define FILAMENT_CHANGE_Z_FEEDRATE 5        // Z axis feedrate in mm/s (not used for delta printers)
613
+    #define FILAMENT_CHANGE_RETRACT_LENGTH 2    // Initial retract in mm
614
+                                                // It is a short retract used immediately after print interrupt before move to filament exchange position
615
+    #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
616
+    #define FILAMENT_CHANGE_UNLOAD_LENGTH 100   // Unload filament length from hotend in mm
617
+                                                // Longer length for bowden printers to unload filament from whole bowden tube,
618
+                                                // shorter lenght for printers without bowden to unload filament from extruder only,
619
+                                                // 0 to disable unloading for manual unloading
620
+    #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10  // Unload filament feedrate in mm/s - filament unloading can be fast
621
+    #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
622
+                                                // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
623
+                                                // Short or zero length for printers without bowden where loading is not used
624
+    #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
625
+    #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
626
+                                                // 0 to disable for manual extrusion
627
+                                                // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
628
+                                                // or until outcoming filament color is not clear for filament color change
629
+    #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
526 630
   #endif
527 631
 #endif
528 632
 
@@ -668,9 +772,9 @@ const unsigned int dropsegments = 5; //everything with less than this number of
668 772
  * devices on the bus.
669 773
  *
670 774
  * ; Example #1
671
- * ; This macro send the string "Marlin" to the slave device with address 0x63
775
+ * ; This macro send the string "Marlin" to the slave device with address 0x63 (99)
672 776
  * ; It uses multiple M155 commands with one B<base 10> arg
673
- * M155 A63  ; Target slave address
777
+ * M155 A99  ; Target slave address
674 778
  * M155 B77  ; M
675 779
  * M155 B97  ; a
676 780
  * M155 B114 ; r
@@ -680,19 +784,16 @@ const unsigned int dropsegments = 5; //everything with less than this number of
680 784
  * M155 S1   ; Send the current buffer
681 785
  *
682 786
  * ; Example #2
683
- * ; Request 6 bytes from slave device with address 0x63
684
- * M156 A63 B5
787
+ * ; Request 6 bytes from slave device with address 0x63 (99)
788
+ * M156 A99 B5
685 789
  *
686 790
  * ; Example #3
687 791
  * ; Example serial output of a M156 request
688
- * echo:i2c-reply: from:63 bytes:5 data:hello
792
+ * echo:i2c-reply: from:99 bytes:5 data:hello
689 793
  */
690 794
 
691 795
 // @section i2cbus
692 796
 
693 797
 //#define EXPERIMENTAL_I2CBUS
694 798
 
695
-#include "Conditionals.h"
696
-#include "SanityCheck.h"
697
-
698
-#endif //CONFIGURATION_ADV_H
799
+#endif // CONFIGURATION_ADV_H

+ 290
- 147
Marlin/example_configurations/tvrrug/Round2/Configuration.h Parādīt failu

@@ -38,8 +38,18 @@
38 38
 #ifndef CONFIGURATION_H
39 39
 #define CONFIGURATION_H
40 40
 
41
-#include "boards.h"
42
-#include "macros.h"
41
+/**
42
+ *
43
+ *  ***********************************
44
+ *  **  ATTENTION TO ALL DEVELOPERS  **
45
+ *  ***********************************
46
+ *
47
+ * You must increment this version number for every significant change such as,
48
+ * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option.
49
+ *
50
+ * Note: Update also Version.h !
51
+ */
52
+#define CONFIGURATION_H_VERSION 010100
43 53
 
44 54
 //===========================================================================
45 55
 //============================= Getting Started =============================
@@ -73,20 +83,26 @@
73 83
 
74 84
 // @section info
75 85
 
76
-#if ENABLED(USE_AUTOMATIC_VERSIONING)
77
-  #include "_Version.h"
78
-#else
79
-  #include "Version.h"
80
-#endif
81
-
82 86
 // User-specified version info of this build to display in [Pronterface, etc] terminal window during
83 87
 // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
84 88
 // build by the user have been successfully uploaded into firmware.
85 89
 #define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes.
86 90
 #define SHOW_BOOTSCREEN
87
-#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during bootup in line 1
88
-//#define STRING_SPLASH_LINE2 STRING_DISTRIBUTION_DATE // will be shown during bootup in line 2
91
+#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during boot in line 1
92
+#define STRING_SPLASH_LINE2 WEBSITE_URL         // will be shown during boot in line 2
89 93
 
94
+//
95
+// *** VENDORS PLEASE READ *****************************************************
96
+//
97
+// Marlin now allow you to have a vendor boot image to be displayed on machine
98
+// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your
99
+// custom boot image and them the default Marlin boot image is shown.
100
+//
101
+// We suggest for you to take advantage of this new feature and keep the Marlin
102
+// boot image unmodified. For an example have a look at the bq Hephestos 2
103
+// example configuration folder.
104
+//
105
+//#define SHOW_CUSTOM_BOOTSCREEN
90 106
 // @section machine
91 107
 
92 108
 // SERIAL_PORT selects which serial port should be used for communication with the host.
@@ -123,17 +139,40 @@
123 139
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
124 140
 //#define SINGLENOZZLE
125 141
 
142
+// A dual extruder that uses a single stepper motor
143
+// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z
144
+//#define SWITCHING_EXTRUDER
145
+#if ENABLED(SWITCHING_EXTRUDER)
146
+  #define SWITCHING_EXTRUDER_SERVO_NR 0
147
+  #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1
148
+  //#define HOTEND_OFFSET_Z {0.0, 0.0}
149
+#endif
150
+
151
+/**
152
+ * "Mixing Extruder"
153
+ *   - Adds a new code, M165, to set the current mix factors.
154
+ *   - Extends the stepping routines to move multiple steppers in proportion to the mix.
155
+ *   - Optional support for Repetier Host M163, M164, and virtual extruder.
156
+ *   - This implementation supports only a single extruder.
157
+ *   - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation
158
+ */
159
+//#define MIXING_EXTRUDER
160
+#if ENABLED(MIXING_EXTRUDER)
161
+  #define MIXING_STEPPERS 2        // Number of steppers in your mixing extruder
162
+  #define MIXING_VIRTUAL_TOOLS 16  // Use the Virtual Tool method with M163 and M164
163
+  //#define DIRECT_MIXING_IN_G1    // Allow ABCDHI mix factors in G1 movement commands
164
+#endif
165
+
126 166
 // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
127 167
 // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
128 168
 // For the other hotends it is their distance from the extruder 0 hotend.
129
-//#define EXTRUDER_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
130
-//#define EXTRUDER_OFFSET_Y {0.0, 5.00}  // (in mm) for each extruder, offset of the hotend on the Y axis
169
+//#define HOTEND_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
170
+//#define HOTEND_OFFSET_Y {0.0, 5.00}  // (in mm) for each extruder, offset of the hotend on the Y axis
131 171
 
132 172
 //// The following define selects which power supply you have. Please choose the one that matches your setup
133 173
 // 1 = ATX
134 174
 // 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC)
135 175
 // :{1:'ATX',2:'X-Box 360'}
136
-
137 176
 #define POWER_SUPPLY 1
138 177
 
139 178
 // Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it.
@@ -168,6 +207,7 @@
168 207
 // 13 is 100k Hisens 3950  1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE"
169 208
 // 20 is the PT100 circuit found in the Ultimainboard V2.x
170 209
 // 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950
210
+// 66 is 4.7M High Temperature thermistor from Dyze Design
171 211
 // 70 is the 100K thermistor found in the bq Hephestos 2
172 212
 //
173 213
 //    1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k
@@ -184,7 +224,7 @@
184 224
 //     Use it for Testing or Development purposes. NEVER for production machine.
185 225
 //#define DUMMY_THERMISTOR_998_VALUE 25
186 226
 //#define DUMMY_THERMISTOR_999_VALUE 100
187
-// :{ '0': "Not used", '4': "10k !! do not use for a hotend. Bad resolution at high temp. !!", '1': "100k / 4.7k - EPCOS", '51': "100k / 1k - EPCOS", '6': "100k / 4.7k EPCOS - Not as accurate as Table 1", '5': "100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '7': "100k / 4.7k Honeywell 135-104LAG-J01", '71': "100k / 4.7k Honeywell 135-104LAF-J01", '8': "100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT", '9': "100k / 4.7k GE Sensing AL03006-58.2K-97-G1", '10': "100k / 4.7k RS 198-961", '11': "100k / 4.7k beta 3950 1%", '12': "100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)", '13': "100k Hisens 3950  1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'", '60': "100k Maker's Tool Works Kapton Bed Thermistor beta=3950", '55': "100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '2': "200k / 4.7k - ATC Semitec 204GT-2", '52': "200k / 1k - ATC Semitec 204GT-2", '-3': "Thermocouple + MAX31855 (only for sensor 0)", '-2': "Thermocouple + MAX6675 (only for sensor 0)", '-1': "Thermocouple + AD595", '3': "Mendel-parts / 4.7k", '1047': "Pt1000 / 4.7k", '1010': "Pt1000 / 1k (non standard)", '20': "PT100 (Ultimainboard V2.x)", '147': "Pt100 / 4.7k", '110': "Pt100 / 1k (non-standard)", '998': "Dummy 1", '999': "Dummy 2" }
227
+// :{ '0': "Not used",'1':"100k / 4.7k - EPCOS",'2':"200k / 4.7k - ATC Semitec 204GT-2",'3':"Mendel-parts / 4.7k",'4':"10k !! do not use for a hotend. Bad resolution at high temp. !!",'5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'6':"100k / 4.7k EPCOS - Not as accurate as Table 1",'7':"100k / 4.7k Honeywell 135-104LAG-J01",'8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT",'9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1",'10':"100k / 4.7k RS 198-961",'11':"100k / 4.7k beta 3950 1%",'12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)",'13':"100k Hisens 3950  1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'",'20':"PT100 (Ultimainboard V2.x)",'51':"100k / 1k - EPCOS",'52':"200k / 1k - ATC Semitec 204GT-2",'55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950",'66':"Dyze Design 4.7M High Temperature thermistor",'70':"the 100K thermistor found in the bq Hephestos 2",'71':"100k / 4.7k Honeywell 135-104LAF-J01",'147':"Pt100 / 4.7k",'1047':"Pt1000 / 4.7k",'110':"Pt100 / 1k (non-standard)",'1010':"Pt1000 / 1k (non standard)",'-3':"Thermocouple + MAX31855 (only for sensor 0)",'-2':"Thermocouple + MAX6675 (only for sensor 0)",'-1':"Thermocouple + AD595",'998':"Dummy 1",'999':"Dummy 2" }
188 228
 #define TEMP_SENSOR_0 5
189 229
 #define TEMP_SENSOR_1 0
190 230
 #define TEMP_SENSOR_2 0
@@ -223,10 +263,6 @@
223 263
 #define HEATER_3_MAXTEMP 275
224 264
 #define BED_MAXTEMP 150
225 265
 
226
-// If you want the M105 heater power reported in watts, define the BED_WATTS, and (shared for all extruders) EXTRUDER_WATTS
227
-//#define EXTRUDER_WATTS (12.0*12.0/6.7) // P=U^2/R
228
-//#define BED_WATTS (12.0*12.0/1.1)      // P=U^2/R
229
-
230 266
 //===========================================================================
231 267
 //============================= PID Settings ================================
232 268
 //===========================================================================
@@ -241,8 +277,8 @@
241 277
   //#define PID_DEBUG // Sends debug data to the serial port.
242 278
   //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX
243 279
   //#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
244
-  //#define PID_PARAMS_PER_EXTRUDER // Uses separate PID parameters for each extruder (useful for mismatched extruders)
245
-                                    // Set/get with gcode: M301 E[extruder number, 0-2]
280
+  //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders)
281
+                                  // Set/get with gcode: M301 E[extruder number, 0-2]
246 282
   #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature
247 283
                                   // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max.
248 284
   #define PID_INTEGRAL_DRIVE_MAX PID_MAX  //limit for the integral term
@@ -374,18 +410,79 @@
374 410
 #endif
375 411
 
376 412
 // Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup).
377
-const bool X_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
378
-const bool Y_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
379
-const bool Z_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
380
-const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
381
-const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
382
-const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
383
-const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
413
+#define X_MIN_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
414
+#define Y_MIN_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
415
+#define Z_MIN_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
416
+#define X_MAX_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
417
+#define Y_MAX_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
418
+#define Z_MAX_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
419
+#define Z_MIN_PROBE_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.
384 420
 
385 421
 //===========================================================================
386 422
 //============================= Z Probe Options =============================
387 423
 //===========================================================================
388 424
 
425
+//
426
+// Probe Type
427
+// Probes are sensors/switches that are activated / deactivated before/after use.
428
+//
429
+// Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc.
430
+// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below.
431
+//
432
+// Use M851 to set the Z probe vertical offset from the nozzle. Store with M500.
433
+//
434
+
435
+// A Fix-Mounted Probe either doesn't deploy or needs manual deployment.
436
+// For example an inductive probe, or a setup that uses the nozzle to probe.
437
+// An inductive probe must be deactivated to go below
438
+// its trigger-point if hardware endstops are active.
439
+//#define FIX_MOUNTED_PROBE
440
+
441
+// The BLTouch probe emulates a servo probe.
442
+//#define BLTOUCH
443
+
444
+// Z Servo Probe, such as an endstop switch on a rotating arm.
445
+//#define Z_ENDSTOP_SERVO_NR 0
446
+//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles
447
+
448
+// Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
449
+//#define Z_PROBE_SLED
450
+//#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.
451
+
452
+// Z Probe to nozzle (X,Y) offset, relative to (0, 0).
453
+// X and Y offsets must be integers.
454
+//
455
+// In the following example the X and Y offsets are both positive:
456
+// #define X_PROBE_OFFSET_FROM_EXTRUDER 10
457
+// #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
458
+//
459
+//    +-- BACK ---+
460
+//    |           |
461
+//  L |    (+) P  | R <-- probe (20,20)
462
+//  E |           | I
463
+//  F | (-) N (+) | G <-- nozzle (10,10)
464
+//  T |           | H
465
+//    |    (-)    | T
466
+//    |           |
467
+//    O-- FRONT --+
468
+//  (0,0)
469
+#define X_PROBE_OFFSET_FROM_EXTRUDER -25     // X offset: -left  +right  [of the nozzle]
470
+#define Y_PROBE_OFFSET_FROM_EXTRUDER -29     // Y offset: -front +behind [the nozzle]
471
+#define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35  // Z offset: -below +above  [the nozzle]
472
+
473
+// X and Y axis travel speed (mm/m) between probes
474
+#define XY_PROBE_SPEED 8000
475
+// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
476
+#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
477
+// Speed for the "accurate" probe of each point
478
+#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
479
+// Use double touch for probing
480
+//#define PROBE_DOUBLE_TOUCH
481
+
482
+//
483
+// Allen Key Probe is defined in the Delta example configurations.
484
+//
485
+
389 486
 // Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z Probe and a Z-min-endstop on the same machine.
390 487
 // With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing.
391 488
 //
@@ -397,7 +494,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
397 494
 // To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN.
398 495
 //
399 496
 // For a servo-based Z probe, you must set up servo support below, including
400
-// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and SERVO_ENDSTOP_ANGLES.
497
+// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and Z_SERVO_ANGLES.
401 498
 //
402 499
 // - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin.
403 500
 // - Use 5V for powered (usu. inductive) sensors.
@@ -430,6 +527,21 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
430 527
 // If you're using the Z MIN endstop connector for your Z probe, this has no effect.
431 528
 //#define DISABLE_Z_MIN_PROBE_ENDSTOP
432 529
 
530
+// Enable Z Probe Repeatability test to see how accurate your probe is
531
+//#define Z_MIN_PROBE_REPEATABILITY_TEST
532
+
533
+//
534
+// Probe Raise options provide clearance for the probe to deploy, stow, and travel.
535
+//
536
+#define Z_PROBE_DEPLOY_HEIGHT 15 // Raise to make room for the probe to deploy / stow
537
+#define Z_PROBE_TRAVEL_HEIGHT 5  // Raise between probing points.
538
+
539
+//
540
+// For M851 give a range for adjusting the Z probe offset
541
+//
542
+#define Z_PROBE_OFFSET_RANGE_MIN -20
543
+#define Z_PROBE_OFFSET_RANGE_MAX 20
544
+
433 545
 // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
434 546
 // :{0:'Low',1:'High'}
435 547
 #define X_ENABLE_ON 1
@@ -466,8 +578,9 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
466 578
 #define INVERT_E3_DIR false
467 579
 
468 580
 // @section homing
469
-//#define MIN_Z_HEIGHT_FOR_HOMING 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
470
-                                    // Be sure you have this distance over your Z_MAX_POS in case.
581
+
582
+//#define Z_HOMING_HEIGHT 4  // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
583
+                             // Be sure you have this distance over your Z_MAX_POS in case.
471 584
 
472 585
 // ENDSTOP SETTINGS:
473 586
 // Sets direction of endstops when homing; 1=MAX, -1=MIN
@@ -497,7 +610,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
497 610
                                  // It is assumed that when logic high = filament available
498 611
                                  //                    when logic  low = filament ran out
499 612
 #if ENABLED(FILAMENT_RUNOUT_SENSOR)
500
-  const bool FIL_RUNOUT_INVERTING = true;  // Should be uncommented and true or false should assigned
613
+  const bool FIL_RUNOUT_INVERTING = false; // set to true to invert the logic of the sensor.
501 614
   #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined.
502 615
   #define FILAMENT_RUNOUT_SCRIPT "M600"
503 616
 #endif
@@ -509,10 +622,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
509 622
 //#define MESH_BED_LEVELING    // Enable mesh bed leveling.
510 623
 
511 624
 #if ENABLED(MESH_BED_LEVELING)
512
-  #define MESH_MIN_X 10
513
-  #define MESH_MAX_X (X_MAX_POS - (MESH_MIN_X))
514
-  #define MESH_MIN_Y 10
515
-  #define MESH_MAX_Y (Y_MAX_POS - (MESH_MIN_Y))
625
+  #define MESH_INSET 10        // Mesh inset margin on print area
516 626
   #define MESH_NUM_X_POINTS 3  // Don't use more than 7 points per axis, implementation limited.
517 627
   #define MESH_NUM_Y_POINTS 3
518 628
   #define MESH_HOME_SEARCH_Z 4  // Z after Home, bed somewhere below but above 0.0.
@@ -534,8 +644,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
534 644
 // @section bedlevel
535 645
 
536 646
 //#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line)
647
+
648
+// Enable this feature to get detailed logging of G28, G29, M48, etc.
649
+// Logging is off by default. Enable this logging feature with 'M111 S32'.
650
+// NOTE: Requires a huge amount of PROGMEM.
537 651
 //#define DEBUG_LEVELING_FEATURE
538
-#define Z_MIN_PROBE_REPEATABILITY_TEST  // If not commented out, Z Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
539 652
 
540 653
 #if ENABLED(AUTO_BED_LEVELING_FEATURE)
541 654
 
@@ -578,58 +691,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
578 691
     #define ABL_PROBE_PT_3_X 170
579 692
     #define ABL_PROBE_PT_3_Y 20
580 693
 
581
-  #endif // AUTO_BED_LEVELING_GRID
582
-
583
-  // Z Probe to nozzle (X,Y) offset, relative to (0, 0).
584
-  // X and Y offsets must be integers.
585
-  //
586
-  // In the following example the X and Y offsets are both positive:
587
-  // #define X_PROBE_OFFSET_FROM_EXTRUDER 10
588
-  // #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
589
-  //
590
-  //    +-- BACK ---+
591
-  //    |           |
592
-  //  L |    (+) P  | R <-- probe (20,20)
593
-  //  E |           | I
594
-  //  F | (-) N (+) | G <-- nozzle (10,10)
595
-  //  T |           | H
596
-  //    |    (-)    | T
597
-  //    |           |
598
-  //    O-- FRONT --+
599
-  //  (0,0)
600
-  #define X_PROBE_OFFSET_FROM_EXTRUDER -25     // X offset: -left  +right  [of the nozzle]
601
-  #define Y_PROBE_OFFSET_FROM_EXTRUDER -29     // Y offset: -front +behind [the nozzle]
602
-  #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35  // Z offset: -below +above  [the nozzle]
603
-
604
-  #define XY_TRAVEL_SPEED 8000         // X and Y axis travel speed between probes, in mm/min.
605
-
606
-  #define Z_RAISE_BEFORE_PROBING 15   // How much the Z axis will be raised before traveling to the first probing point.
607
-  #define Z_RAISE_BETWEEN_PROBINGS 5  // How much the Z axis will be raised when traveling from between next probing points.
608
-  #define Z_RAISE_AFTER_PROBING 15    // How much the Z axis will be raised after the last probing point.
694
+  #endif // !AUTO_BED_LEVELING_GRID
609 695
 
610 696
   //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine.
611 697
                                                                              // Useful to retract a deployable Z probe.
612 698
 
613
-  // Probes are sensors/switches that need to be activated before they can be used
614
-  // and deactivated after their use.
615
-  // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE
616
-
617
-  // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER
618
-  // when the hardware endstops are active.
619
-  //#define FIX_MOUNTED_PROBE
620
-
621
-  // A Servo Probe can be defined in the servo section below.
622
-
623
-  // An Allen Key Probe is currently predefined only in the delta example configurations.
624
-
625
-  // Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
626
-  //#define Z_PROBE_SLED
627
-  //#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.
628
-
629
-  // A Mechanical Probe is any probe that either doesn't deploy or needs manual deployment
630
-  // For example any setup that uses the nozzle itself as a probe.
631
-  //#define MECHANICAL_PROBE
632
-
633 699
   // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing,
634 700
   // it is highly recommended you also enable Z_SAFE_HOMING below!
635 701
 
@@ -638,18 +704,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
638 704
 
639 705
 // @section homing
640 706
 
641
-// The position of the homing switches
642
-//#define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used
643
-//#define BED_CENTER_AT_0_0  // If defined, the center of the bed is at (X=0, Y=0)
644
-
645
-// Manual homing switch locations:
646
-// For deltabots this means top and center of the Cartesian print volume.
647
-#if ENABLED(MANUAL_HOME_POSITIONS)
648
-  #define MANUAL_X_HOME_POS 0
649
-  #define MANUAL_Y_HOME_POS 0
650
-  #define MANUAL_Z_HOME_POS 0
651
-  //#define MANUAL_Z_HOME_POS 402 // For delta: Distance between nozzle and print surface after homing.
652
-#endif
707
+// The center of the bed is at (X=0, Y=0)
708
+//#define BED_CENTER_AT_0_0
709
+
710
+// Manually set the home position. Leave these undefined for automatic settings.
711
+// For DELTA this is the top-center of the Cartesian print volume.
712
+//#define MANUAL_X_HOME_POS 0
713
+//#define MANUAL_Y_HOME_POS 0
714
+//#define MANUAL_Z_HOME_POS 0 // Distance between the nozzle to printbed after homing
653 715
 
654 716
 // Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
655 717
 //
@@ -657,7 +719,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
657 719
 //
658 720
 // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
659 721
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
660
-// - Position the Z probe in a defined XY point before Z Homing when homing all axes (G28).
722
+// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
661 723
 // - Prevent Z homing when the Z probe is outside bed area.
662 724
 //#define Z_SAFE_HOMING
663 725
 
@@ -666,14 +728,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
666 728
   #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2)    // Y point for Z homing when homing all axis (G28).
667 729
 #endif
668 730
 
731
+// Homing speeds (mm/m)
732
+#define HOMING_FEEDRATE_XY (50*60)
733
+#define HOMING_FEEDRATE_Z  (4*60)
669 734
 
670
-// @section movement
671
-
672
-/**
673
- * MOVEMENT SETTINGS
674
- */
675
-
676
-#define HOMING_FEEDRATE {50*60, 50*60, 4*60, 0}  // set the homing speeds (mm/min)
735
+//
736
+// MOVEMENT SETTINGS
737
+// @section motion
738
+//
677 739
 
678 740
 // default settings
679 741
 
@@ -699,18 +761,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
699 761
 //============================= Additional Features ===========================
700 762
 //=============================================================================
701 763
 
702
-// @section more
703
-
704
-// Custom M code points
705
-#define CUSTOM_M_CODES
706
-#if ENABLED(CUSTOM_M_CODES)
707
-  #if ENABLED(AUTO_BED_LEVELING_FEATURE)
708
-    #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851
709
-    #define Z_PROBE_OFFSET_RANGE_MIN -20
710
-    #define Z_PROBE_OFFSET_RANGE_MAX 20
711
-  #endif
712
-#endif
713
-
714 764
 // @section extras
715 765
 
716 766
 //
@@ -742,22 +792,107 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
742 792
 //
743 793
 //#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose
744 794
 
795
+//
796
+// G20/G21 Inch mode support
797
+//
798
+//#define INCH_MODE_SUPPORT
799
+
800
+//
801
+// M149 Set temperature units support
802
+//
803
+//#define TEMPERATURE_UNITS_SUPPORT
804
+
745 805
 // @section temperature
746 806
 
747 807
 // Preheat Constants
748
-#define PLA_PREHEAT_HOTEND_TEMP 180
749
-#define PLA_PREHEAT_HPB_TEMP 70
750
-#define PLA_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
808
+#define PREHEAT_1_TEMP_HOTEND 180
809
+#define PREHEAT_1_TEMP_BED     70
810
+#define PREHEAT_1_FAN_SPEED   255 // Value from 0 to 255
811
+
812
+#define PREHEAT_2_TEMP_HOTEND 240
813
+#define PREHEAT_2_TEMP_BED    100
814
+#define PREHEAT_2_FAN_SPEED   255 // Value from 0 to 255
751 815
 
752
-#define ABS_PREHEAT_HOTEND_TEMP 240
753
-#define ABS_PREHEAT_HPB_TEMP 100
754
-#define ABS_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
816
+//
817
+// Nozzle Park -- EXPERIMENTAL
818
+//
819
+// When enabled allows the user to define a special XYZ position, inside the
820
+// machine's topology, to park the nozzle when idle or when receiving the G27
821
+// command.
822
+//
823
+// The "P" paramenter controls what is the action applied to the Z axis:
824
+//    P0: (Default) If current Z-pos is lower than Z-park then the nozzle will
825
+//        be raised to reach Z-park height.
826
+//
827
+//    P1: No matter the current Z-pos, the nozzle will be raised/lowered to
828
+//        reach Z-park height.
829
+//
830
+//    P2: The nozzle height will be raised by Z-park amount but never going over
831
+//        the machine's limit of Z_MAX_POS.
832
+//
833
+//#define NOZZLE_PARK_FEATURE
834
+
835
+#if ENABLED(NOZZLE_PARK_FEATURE)
836
+  // Specify a park position as { X, Y, Z }
837
+  #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 }
838
+#endif
839
+
840
+//
841
+// Clean Nozzle Feature -- EXPERIMENTAL
842
+//
843
+// When enabled allows the user to send G12 to start the nozzle cleaning
844
+// process, the G-Code accepts two parameters:
845
+//   "P" for pattern selection
846
+//   "S" for defining the number of strokes/repetitions
847
+//
848
+// Available list of patterns:
849
+//   P0: This is the default pattern, this process requires a sponge type
850
+//       material at a fixed bed location, the cleaning process is based on
851
+//       "strokes" i.e. back-and-forth movements between the starting and end
852
+//       points.
853
+//
854
+//   P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T"
855
+//       defines the number of zig-zag triangles to be done. "S" defines the
856
+//       number of strokes aka one back-and-forth movement. As an example
857
+//       sending "G12 P1 S1 T3" will execute:
858
+//
859
+//          --
860
+//         |  (X0, Y1) |     /\        /\        /\     | (X1, Y1)
861
+//         |           |    /  \      /  \      /  \    |
862
+//       A |           |   /    \    /    \    /    \   |
863
+//         |           |  /      \  /      \  /      \  |
864
+//         |  (X0, Y0) | /        \/        \/        \ | (X1, Y0)
865
+//          --         +--------------------------------+
866
+//                       |________|_________|_________|
867
+//                           T1        T2        T3
868
+//
869
+// Caveats: End point Z should use the same value as Start point Z.
870
+//
871
+// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments
872
+// may change to add new functionality like different wipe patterns.
873
+//
874
+//#define NOZZLE_CLEAN_FEATURE
875
+
876
+#if ENABLED(NOZZLE_CLEAN_FEATURE)
877
+  // Number of pattern repetitions
878
+  #define NOZZLE_CLEAN_STROKES  12
879
+
880
+  // Specify positions as { X, Y, Z }
881
+  #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)}
882
+  #define NOZZLE_CLEAN_END_POINT   {100, 60, (Z_MIN_POS + 1)}
883
+
884
+  // Moves the nozzle to the initial position
885
+  #define NOZZLE_CLEAN_GOBACK
886
+#endif
755 887
 
756 888
 //
757 889
 // Print job timer
758 890
 //
759 891
 // Enable this option to automatically start and stop the
760
-// print job timer when M104 and M109 commands are received.
892
+// print job timer when M104/M109/M190 commands are received.
893
+// M104 (extruder without wait) - high temp = none, low temp = stop timer
894
+// M109 (extruder with wait) - high temp = start timer, low temp = stop timer
895
+// M190 (bed with wait) - high temp = start timer, low temp = none
761 896
 //
762 897
 // In all cases the timer can be started and stopped using
763 898
 // the following commands:
@@ -790,8 +925,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
790 925
 //
791 926
 // Here you may choose the language used by Marlin on the LCD menus, the following
792 927
 // list of languages are available:
793
-//    en, pl, fr, de, es, ru, bg, it, pt, pt_utf8, pt-br, pt-br_utf8,
794
-//    fi, an, nl, ca, eu, kana, kana_utf8, cn, cz, test
928
+//    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
929
+//    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test
930
+//
931
+// :{'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','test':'TEST'}
795 932
 //
796 933
 //#define LCD_LANGUAGE en
797 934
 
@@ -939,6 +1076,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
939 1076
 //#define ULTIPANEL
940 1077
 
941 1078
 //
1079
+// Cartesio UI
1080
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1081
+//
1082
+//#define CARTESIO_UI
1083
+
1084
+//
942 1085
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
943 1086
 // http://reprap.org/wiki/PanelOne
944 1087
 //
@@ -951,6 +1094,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
951 1094
 //#define MAKRPANEL
952 1095
 
953 1096
 //
1097
+// ReprapWorld Graphical LCD
1098
+// https://reprapworld.com/?products_details&products_id/1218
1099
+//
1100
+//#define REPRAPWORLD_GRAPHICAL_LCD
1101
+
1102
+//
954 1103
 // Activate one of these if you have a Panucatt Devices
955 1104
 // Viki 2.0 or mini Viki with Graphic LCD
956 1105
 // http://panucatt.com
@@ -1000,7 +1149,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1000 1149
 // is pressed, a value of 10.0 means 10mm per click.
1001 1150
 //
1002 1151
 //#define REPRAPWORLD_KEYPAD
1003
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1152
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1004 1153
 
1005 1154
 //
1006 1155
 // RigidBot Panel V1.0
@@ -1061,6 +1210,15 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1061 1210
 //#define U8GLIB_SSD1306
1062 1211
 
1063 1212
 //
1213
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1214
+//
1215
+//#define SAV_3DGLCD
1216
+#if ENABLED(SAV_3DGLCD)
1217
+  //#define U8GLIB_SSD1306
1218
+  #define U8GLIB_SH1106
1219
+#endif
1220
+
1221
+//
1064 1222
 // CONTROLLER TYPE: Shift register panels
1065 1223
 //
1066 1224
 // 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH
@@ -1088,7 +1246,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1088 1246
 // at zero value, there are 128 effective control positions.
1089 1247
 #define SOFT_PWM_SCALE 0
1090 1248
 
1091
-// Temperature status LEDs that display the hotend and bet temperature.
1249
+// Temperature status LEDs that display the hotend and bed temperature.
1092 1250
 // If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
1093 1251
 // Otherwise the RED led is on. There is 1C hysteresis.
1094 1252
 //#define TEMP_STAT_LEDS
@@ -1120,28 +1278,16 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1120 1278
 //
1121 1279
 //#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
1122 1280
 
1123
-// Servo Endstops
1124
-//
1125
-// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes.
1126
-// Use M851 to set the Z probe vertical offset from the nozzle. Store that setting with M500.
1127
-//
1128
-//#define X_ENDSTOP_SERVO_NR 1
1129
-//#define Y_ENDSTOP_SERVO_NR 2
1130
-//#define Z_ENDSTOP_SERVO_NR 0
1131
-//#define SERVO_ENDSTOP_ANGLES {{0,0}, {0,0}, {70,0}} // X,Y,Z Axis Extend and Retract angles
1281
+// Delay (in microseconds) before the next move will start, to give the servo time to reach its target angle.
1282
+// 300ms is a good value but you can try less delay.
1283
+// If the servo can't reach the requested position, increase it.
1284
+#define SERVO_DELAY 300
1132 1285
 
1133 1286
 // Servo deactivation
1134 1287
 //
1135 1288
 // With this option servos are powered only during movement, then turned off to prevent jitter.
1136 1289
 //#define DEACTIVATE_SERVOS_AFTER_MOVE
1137 1290
 
1138
-#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE)
1139
-  // Delay (in microseconds) before turning the servo off. This depends on the servo speed.
1140
-  // 300ms is a good value but you can try less delay.
1141
-  // If the servo can't reach the requested position, increase it.
1142
-  #define SERVO_DEACTIVATION_DELAY 300
1143
-#endif
1144
-
1145 1291
 /**********************************************************************\
1146 1292
  * Support for a filament diameter sensor
1147 1293
  * Also allows adjustment of diameter at print time (vs  at slicing)
@@ -1172,7 +1318,4 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1172 1318
   //#define FILAMENT_LCD_DISPLAY
1173 1319
 #endif
1174 1320
 
1175
-#include "Configuration_adv.h"
1176
-#include "thermistortables.h"
1177
-
1178
-#endif //CONFIGURATION_H
1321
+#endif // CONFIGURATION_H

+ 148
- 47
Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h Parādīt failu

@@ -33,7 +33,18 @@
33 33
 #ifndef CONFIGURATION_ADV_H
34 34
 #define CONFIGURATION_ADV_H
35 35
 
36
-#include "Conditionals.h"
36
+/**
37
+ *
38
+ *  ***********************************
39
+ *  **  ATTENTION TO ALL DEVELOPERS  **
40
+ *  ***********************************
41
+ *
42
+ * You must increment this version number for every significant change such as,
43
+ * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option.
44
+ *
45
+ * Note: Update also Version.h !
46
+ */
47
+#define CONFIGURATION_ADV_H_VERSION 010100
37 48
 
38 49
 // @section temperature
39 50
 
@@ -102,8 +113,8 @@
102 113
 #if ENABLED(PIDTEMP)
103 114
   // this adds an experimental additional term to the heating power, proportional to the extrusion speed.
104 115
   // if Kc is chosen well, the additional required power due to increased melting should be compensated.
105
-  #define PID_ADD_EXTRUSION_RATE
106
-  #if ENABLED(PID_ADD_EXTRUSION_RATE)
116
+  //#define PID_EXTRUSION_SCALING
117
+  #if ENABLED(PID_EXTRUSION_SCALING)
107 118
     #define DEFAULT_Kc (100) //heating power=Kc*(e_speed)
108 119
     #define LPQ_MAX_LEN 50
109 120
   #endif
@@ -128,15 +139,42 @@
128 139
 //The M105 command return, besides traditional information, the ADC value read from temperature sensors.
129 140
 //#define SHOW_TEMP_ADC_VALUES
130 141
 
142
+/**
143
+ * High Temperature Thermistor Support
144
+ *
145
+ * Thermistors able to support high temperature tend to have a hard time getting
146
+ * good readings at room and lower temperatures. This means HEATER_X_RAW_LO_TEMP
147
+ * will probably be caught when the heating element first turns on during the
148
+ * preheating process, which will trigger a min_temp_error as a safety measure
149
+ * and force stop everything.
150
+ * To circumvent this limitation, we allow for a preheat time (during which,
151
+ * min_temp_error won't be triggered) and add a min_temp buffer to handle
152
+ * aberrant readings.
153
+ *
154
+ * If you want to enable this feature for your hotend thermistor(s)
155
+ * uncomment and set values > 0 in the constants below
156
+ */
157
+
158
+// The number of consecutive low temperature errors that can occur
159
+// before a min_temp_error is triggered. (Shouldn't be more than 10.)
160
+//#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 0
161
+
162
+// The number of milliseconds a hotend will preheat before starting to check
163
+// the temperature. This value should NOT be set to the time it takes the
164
+// hot end to reach the target temperature, but the time it takes to reach
165
+// the minimum temperature your thermistor can read. The lower the better/safer.
166
+// This shouldn't need to be more than 30 seconds (30000)
167
+//#define MILLISECONDS_PREHEAT_TIME 0
168
+
131 169
 // @section extruder
132 170
 
133 171
 //  extruder run-out prevention.
134 172
 //if the machine is idle, and the temperature over MINTEMP, every couple of SECONDS some filament is extruded
135 173
 //#define EXTRUDER_RUNOUT_PREVENT
136 174
 #define EXTRUDER_RUNOUT_MINTEMP 190
137
-#define EXTRUDER_RUNOUT_SECONDS 30.
138
-#define EXTRUDER_RUNOUT_ESTEPS 14. //mm filament
139
-#define EXTRUDER_RUNOUT_SPEED 1500.  //extrusion speed
175
+#define EXTRUDER_RUNOUT_SECONDS 30
176
+#define EXTRUDER_RUNOUT_ESTEPS 14   // mm filament
177
+#define EXTRUDER_RUNOUT_SPEED 1500  // extrusion speed
140 178
 #define EXTRUDER_RUNOUT_EXTRUDE 100
141 179
 
142 180
 // @section temperature
@@ -177,24 +215,42 @@
177 215
 #define EXTRUDER_AUTO_FAN_TEMPERATURE 50
178 216
 #define EXTRUDER_AUTO_FAN_SPEED   255  // == full speed
179 217
 
180
-
181 218
 //===========================================================================
182
-//=============================Mechanical Settings===========================
219
+//============================ Mechanical Settings ==========================
183 220
 //===========================================================================
184 221
 
185 222
 // @section homing
186 223
 
187
-#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing
224
+// If you want endstops to stay on (by default) even when not homing
225
+// enable this option. Override at any time with M120, M121.
226
+//#define ENDSTOPS_ALWAYS_ON_DEFAULT
188 227
 
189 228
 // @section extras
190 229
 
191 230
 //#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
192 231
 
232
+// Dual X Steppers
233
+// Uncomment this option to drive two X axis motors.
234
+// The next unused E driver will be assigned to the second X stepper.
235
+//#define X_DUAL_STEPPER_DRIVERS
236
+#if ENABLED(X_DUAL_STEPPER_DRIVERS)
237
+  // Set true if the two X motors need to rotate in opposite directions
238
+  #define INVERT_X2_VS_X_DIR true
239
+#endif
240
+
241
+
242
+// Dual Y Steppers
243
+// Uncomment this option to drive two Y axis motors.
244
+// The next unused E driver will be assigned to the second Y stepper.
245
+//#define Y_DUAL_STEPPER_DRIVERS
246
+#if ENABLED(Y_DUAL_STEPPER_DRIVERS)
247
+  // Set true if the two Y motors need to rotate in opposite directions
248
+  #define INVERT_Y2_VS_Y_DIR true
249
+#endif
250
+
193 251
 // A single Z stepper driver is usually used to drive 2 stepper motors.
194
-// Uncomment this define to utilize a separate stepper driver for each Z axis motor.
195
-// Only a few motherboards support this, like RAMPS, which have dual extruder support (the 2nd, often unused, extruder driver is used
196
-// to control the 2nd Z axis stepper motor). The pins are currently only defined for a RAMPS motherboards.
197
-// On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder.
252
+// Uncomment this option to use a separate stepper driver for each Z axis motor.
253
+// The next unused E driver will be assigned to the second Z stepper.
198 254
 //#define Z_DUAL_STEPPER_DRIVERS
199 255
 
200 256
 #if ENABLED(Z_DUAL_STEPPER_DRIVERS)
@@ -216,14 +272,6 @@
216 272
 
217 273
 #endif // Z_DUAL_STEPPER_DRIVERS
218 274
 
219
-// Same again but for Y Axis.
220
-//#define Y_DUAL_STEPPER_DRIVERS
221
-
222
-#if ENABLED(Y_DUAL_STEPPER_DRIVERS)
223
-  // Define if the two Y drives need to rotate in opposite directions
224
-  #define INVERT_Y2_VS_Y_DIR true
225
-#endif
226
-
227 275
 // Enable this for dual x-carriage printers.
228 276
 // A dual x-carriage design has the advantage that the inactive extruder can be parked which
229 277
 // prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
@@ -237,7 +285,7 @@
237 285
   #define X2_MAX_POS 353    // set maximum to the distance between toolheads when both heads are homed
238 286
   #define X2_HOME_DIR 1     // the second X-carriage always homes to the maximum endstop position
239 287
   #define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position
240
-      // However: In this mode the EXTRUDER_OFFSET_X value for the second extruder provides a software
288
+      // However: In this mode the HOTEND_OFFSET_X value for the second extruder provides a software
241 289
       // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops
242 290
       // without modifying the firmware (through the "M218 T1 X???" command).
243 291
       // Remember: you should set the second extruder x-offset to 0 in your slicer.
@@ -279,7 +327,10 @@
279 327
 
280 328
 #define AXIS_RELATIVE_MODES {false, false, false, false}
281 329
 
282
-//By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
330
+// Allow duplication mode with a basic dual-nozzle extruder
331
+//#define DUAL_NOZZLE_DUPLICATION_MODE
332
+
333
+// By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
283 334
 #define INVERT_X_STEP_PIN false
284 335
 #define INVERT_Y_STEP_PIN false
285 336
 #define INVERT_Z_STEP_PIN false
@@ -351,6 +402,9 @@
351 402
 
352 403
 // @section lcd
353 404
 
405
+// Include a page of printer information in the LCD Main Menu
406
+//#define LCD_INFO_MENU
407
+
354 408
 #if ENABLED(SDSUPPORT)
355 409
 
356 410
   // Some RAMPS and other boards don't detect when an SD card is inserted. You can work
@@ -388,7 +442,6 @@
388 442
   // This option allows you to abort SD printing when any endstop is triggered.
389 443
   // This feature must be enabled with "M540 S1" or from the LCD menu.
390 444
   // To have any effect, endstops must be enabled during SD printing.
391
-  // With ENDSTOPS_ONLY_FOR_HOMING you must send "M120" to enable endstops.
392 445
   //#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED
393 446
 
394 447
 #endif // SDSUPPORT
@@ -404,9 +457,10 @@
404 457
   //#define USE_SMALL_INFOFONT
405 458
 #endif // DOGLCD
406 459
 
407
-// @section more
460
+// @section safety
408 461
 
409
-// The hardware watchdog should reset the microcontroller disabling all outputs, in case the firmware gets stuck and doesn't do temperature regulation.
462
+// The hardware watchdog should reset the microcontroller disabling all outputs,
463
+// in case the firmware gets stuck and doesn't do temperature regulation.
410 464
 #define USE_WATCHDOG
411 465
 
412 466
 #if ENABLED(USE_WATCHDOG)
@@ -445,6 +499,27 @@
445 499
   #define D_FILAMENT 2.85
446 500
 #endif
447 501
 
502
+// Implementation of a linear pressure control
503
+// Assumption: advance = k * (delta velocity)
504
+// K=0 means advance disabled. A good value for a gregs wade extruder will be around K=75
505
+//#define LIN_ADVANCE
506
+
507
+#if ENABLED(LIN_ADVANCE)
508
+  #define LIN_ADVANCE_K 75
509
+#endif
510
+
511
+// @section leveling
512
+
513
+// Default mesh area is an area with an inset margin on the print area.
514
+// Below are the macros that are used to define the borders for the mesh area,
515
+// made available here for specialized needs, ie dual extruder setup.
516
+#if ENABLED(MESH_BED_LEVELING)
517
+  #define MESH_MIN_X (X_MIN_POS + MESH_INSET)
518
+  #define MESH_MAX_X (X_MAX_POS - (MESH_INSET))
519
+  #define MESH_MIN_Y (Y_MIN_POS + MESH_INSET)
520
+  #define MESH_MAX_Y (Y_MAX_POS - (MESH_INSET))
521
+#endif
522
+
448 523
 // @section extras
449 524
 
450 525
 // Arc interpretation settings:
@@ -476,12 +551,27 @@ const unsigned int dropsegments = 5; //everything with less than this number of
476 551
   #define BLOCK_BUFFER_SIZE 16 // maximize block buffer
477 552
 #endif
478 553
 
479
-// @section more
554
+// @section serial
480 555
 
481
-//The ASCII buffer for receiving from the serial:
556
+// The ASCII buffer for serial input
482 557
 #define MAX_CMD_SIZE 96
483 558
 #define BUFSIZE 4
484 559
 
560
+// Transfer Buffer Size
561
+// To save 386 bytes of PROGMEM (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0.
562
+// To buffer a simple "ok" you need 4 bytes.
563
+// For ADVANCED_OK (M105) you need 32 bytes.
564
+// For debug-echo: 128 bytes for the optimal speed.
565
+// Other output doesn't need to be that speedy.
566
+// :[0,2,4,8,16,32,64,128,256]
567
+#define TX_BUFFER_SIZE 0
568
+
569
+// Enable an emergency-command parser to intercept certain commands as they
570
+// enter the serial receive buffer, so they cannot be blocked.
571
+// Currently handles M108, M112, M410
572
+// Does not work on boards using AT90USB (USBCON) processors!
573
+//#define EMERGENCY_PARSER
574
+
485 575
 // Bad Serial-connections can miss a received command by sending an 'ok'
486 576
 // Therefore some clients abort after 30 seconds in a timeout.
487 577
 // Some other clients start sending commands while receiving a 'wait'.
@@ -513,16 +603,30 @@ const unsigned int dropsegments = 5; //everything with less than this number of
513 603
 
514 604
 // Add support for experimental filament exchange support M600; requires display
515 605
 #if ENABLED(ULTIPANEL)
516
-  //#define FILAMENTCHANGEENABLE
517
-  #if ENABLED(FILAMENTCHANGEENABLE)
518
-    #define FILAMENTCHANGE_XPOS 3
519
-    #define FILAMENTCHANGE_YPOS 3
520
-    #define FILAMENTCHANGE_ZADD 10
521
-    #define FILAMENTCHANGE_FIRSTRETRACT -2
522
-    #define FILAMENTCHANGE_FINALRETRACT -100
523
-    #define AUTO_FILAMENT_CHANGE                //This extrude filament until you press the button on LCD
524
-    #define AUTO_FILAMENT_CHANGE_LENGTH 0.04    //Extrusion length on automatic extrusion loop
525
-    #define AUTO_FILAMENT_CHANGE_FEEDRATE 300   //Extrusion feedrate (mm/min) on automatic extrusion loop
606
+  // #define FILAMENT_CHANGE_FEATURE             // Enable filament exchange menu and M600 g-code (used for runout sensor too)
607
+  #if ENABLED(FILAMENT_CHANGE_FEATURE)
608
+    #define FILAMENT_CHANGE_X_POS 3             // X position of hotend
609
+    #define FILAMENT_CHANGE_Y_POS 3             // Y position of hotend
610
+    #define FILAMENT_CHANGE_Z_ADD 10            // Z addition of hotend (lift)
611
+    #define FILAMENT_CHANGE_XY_FEEDRATE 100     // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
612
+    #define FILAMENT_CHANGE_Z_FEEDRATE 5        // Z axis feedrate in mm/s (not used for delta printers)
613
+    #define FILAMENT_CHANGE_RETRACT_LENGTH 2    // Initial retract in mm
614
+                                                // It is a short retract used immediately after print interrupt before move to filament exchange position
615
+    #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s
616
+    #define FILAMENT_CHANGE_UNLOAD_LENGTH 100   // Unload filament length from hotend in mm
617
+                                                // Longer length for bowden printers to unload filament from whole bowden tube,
618
+                                                // shorter lenght for printers without bowden to unload filament from extruder only,
619
+                                                // 0 to disable unloading for manual unloading
620
+    #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10  // Unload filament feedrate in mm/s - filament unloading can be fast
621
+    #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
622
+                                                // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
623
+                                                // Short or zero length for printers without bowden where loading is not used
624
+    #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
625
+    #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50   // Extrude filament length in mm after filament is load over the hotend,
626
+                                                // 0 to disable for manual extrusion
627
+                                                // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend,
628
+                                                // or until outcoming filament color is not clear for filament color change
629
+    #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3  // Extrude filament feedrate in mm/s - must be slower than load feedrate
526 630
   #endif
527 631
 #endif
528 632
 
@@ -668,9 +772,9 @@ const unsigned int dropsegments = 5; //everything with less than this number of
668 772
  * devices on the bus.
669 773
  *
670 774
  * ; Example #1
671
- * ; This macro send the string "Marlin" to the slave device with address 0x63
775
+ * ; This macro send the string "Marlin" to the slave device with address 0x63 (99)
672 776
  * ; It uses multiple M155 commands with one B<base 10> arg
673
- * M155 A63  ; Target slave address
777
+ * M155 A99  ; Target slave address
674 778
  * M155 B77  ; M
675 779
  * M155 B97  ; a
676 780
  * M155 B114 ; r
@@ -680,19 +784,16 @@ const unsigned int dropsegments = 5; //everything with less than this number of
680 784
  * M155 S1   ; Send the current buffer
681 785
  *
682 786
  * ; Example #2
683
- * ; Request 6 bytes from slave device with address 0x63
684
- * M156 A63 B5
787
+ * ; Request 6 bytes from slave device with address 0x63 (99)
788
+ * M156 A99 B5
685 789
  *
686 790
  * ; Example #3
687 791
  * ; Example serial output of a M156 request
688
- * echo:i2c-reply: from:63 bytes:5 data:hello
792
+ * echo:i2c-reply: from:99 bytes:5 data:hello
689 793
  */
690 794
 
691 795
 // @section i2cbus
692 796
 
693 797
 //#define EXPERIMENTAL_I2CBUS
694 798
 
695
-#include "Conditionals.h"
696
-#include "SanityCheck.h"
697
-
698
-#endif //CONFIGURATION_ADV_H
799
+#endif // CONFIGURATION_ADV_H

+ 12
- 5
Marlin/fastio.h Parādīt failu

@@ -2047,11 +2047,6 @@
2047 2047
 #endif
2048 2048
 
2049 2049
 #if defined(__AVR_AT90USB1287__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__)
2050
-  // SPI
2051
-  #define SCK         DIO9
2052
-  #define MISO        DIO11
2053
-  #define MOSI        DIO10
2054
-  #define SS          DIO8
2055 2050
 
2056 2051
   // change for your board
2057 2052
   #define DEBUG_LED   DIO31 /* led D5 red */
@@ -2063,6 +2058,12 @@
2063 2058
   //#define AT90USBxx_TEENSYPP_ASSIGNMENTS // Use Teensy++ 2.0 assignments
2064 2059
   #ifndef AT90USBxx_TEENSYPP_ASSIGNMENTS // Use traditional Marlin pin assignments
2065 2060
 
2061
+    // SPI
2062
+    #define SCK         DIO9   // 21
2063
+    #define MISO        DIO11  // 23
2064
+    #define MOSI        DIO10  // 22
2065
+    #define SS          DIO8   // 20
2066
+
2066 2067
     #define DIO0_PIN        PINA0
2067 2068
     #define DIO0_RPORT      PINA
2068 2069
     #define DIO0_WPORT      PORTA
@@ -2707,6 +2708,12 @@
2707 2708
              The pins 46 and 47 are not supported by Teensyduino, but are supported below.
2708 2709
     */
2709 2710
 
2711
+    // SPI
2712
+    #define SCK             DIO21 // 9
2713
+    #define MISO            DIO23 // 11
2714
+    #define MOSI            DIO22 // 10
2715
+    #define SS              DIO20 // 8
2716
+
2710 2717
     #define DIO0_PIN PIND0
2711 2718
     #define DIO0_RPORT PIND
2712 2719
     #define DIO0_WPORT PORTD

+ 0
- 30
Marlin/fonts/README.md Parādīt failu

@@ -1,30 +0,0 @@
1
-The fonts are created with Fony.exe (http://hukka.ncn.fi/?fony) because Fontforge didn't do what I want (probably lack of experience).
2
-
3
-In Fony export the fonts to bdf-format. (Maybe another one can edit them with Fontforge.) Then run `make_fonts.bat` which calls `bdf2u8g.exe` with the parameters needed to produce the `.h` files. The `.h` files must be edited and moved:
4
-- Replace `#include "u8g.h"` with `#include <utility/u8g.h>`,
5
-- Replace `U8G_FONT_SECTION` with `U8G_SECTION`,
6
-- Insert `.progmem.` right after the first quote `"`,
7
-- Move the file to the main directory.
8
-
9
-How to integrate a new font:
10
-Currently we are limited to 256 symbols per font. We use a menu system with 5 lines, on a display with 64 pixel height. That means we have 12 pixels per line. So to have any space between the lines we can use no more than 10 pixel height for the symbols. For up to 11 pixels set TALL_FONT_CORRECTION 1 when loading the font.
11
-To fit 22 Symbols on the 128 pixel wide screen, the symbols can't be wider than 5 pixel, for the first 128 symbols.
12
-For the second half of the font we now support up to 11x11 pixel.
13
-
14
-- Get `Fony.exe` from [hukka.ncn.fi](http://hukka.ncn.fi/?fony)
15
-- Copy one of the existing `*.fon` files and use the copy for your work.
16
-- Only change the pixels. Don't change width or height.
17
-- Export as a `*.bdf` file
18
-- Use `bdf2u8g.exe` to produce the `.h` file. Examples for the existing fonts are in `make_fonts.bat`.
19
-- Edit the produced `.h` file to match our needs. Find hints in the `dogm_font_data_.h` files.
20
-- Make a new entry in the font list in `dogm_lcd_implementation.h` before the `#else // fall-back` line:
21
-```cpp
22
-    #elif ENABLED(DISPLAY_CHARSET_NEWNAME)
23
-      #include "dogm_font_data_yourfont.h"
24
-      #define FONT_MENU_NAME YOURFONTNAME
25
-    #else // fall-back
26
-```
27
-- Add your font to the list of permitted fonts in 'language_en.h'
28
-```cpp
29
-    ... || ENABLED(DISPLAY_CHARSET_YOUR_NEW_FONT) ... )
30
-```

Binārs
Marlin/fonts/bdf2u8g.exe Parādīt failu


+ 25
- 25
Marlin/language.h Parādīt failu

@@ -23,7 +23,7 @@
23 23
 #ifndef LANGUAGE_H
24 24
 #define LANGUAGE_H
25 25
 
26
-#include "Configuration.h"
26
+#include "MarlinConfig.h"
27 27
 
28 28
 // Fallback if no language is set. DON'T CHANGE
29 29
 #ifndef LCD_LANGUAGE
@@ -42,34 +42,31 @@
42 42
 // See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language
43 43
 
44 44
 // Languages
45
-// en         English
46
-// pl         Polish
47
-// fr         French
45
+// an         Aragonese
46
+// bg         Bulgarian
47
+// ca         Catalan
48
+// cn         Chinese
49
+// cz         Czech
48 50
 // de         German
51
+// el         Greek
52
+// el-gr      Greek (Greece)
53
+// en         English
49 54
 // es         Spanish
50
-// ru         Russian
51
-// bg         Bulgarian
52
-// it         Italian
53
-// pt         Portuguese
54
-// pt_utf8    Portuguese (UTF8)
55
-// pt-br      Portuguese (Brazilian)
56
-// pt-br_utf8 Portuguese (Brazilian UTF8)
55
+// eu         Basque-Euskera
57 56
 // fi         Finnish
58
-// an         Aragonese
59
-// nl         Dutch
57
+// fr         French
60 58
 // gl         Galician
61
-// ca         Catalan
62
-// eu         Basque-Euskera
59
+// hr         Croatian
60
+// it         Italian
63 61
 // kana       Japanese
64 62
 // kana_utf8  Japanese (UTF8)
65
-// cn         Chinese
66
-// cz         Czech
67
-
68
-#if ENABLED(USE_AUTOMATIC_VERSIONING)
69
-  #include "_Version.h"
70
-#else
71
-  #include "Version.h"
72
-#endif
63
+// nl         Dutch
64
+// pl         Polish
65
+// pt         Portuguese
66
+// pt-br      Portuguese (Brazilian)
67
+// pt-br_utf8 Portuguese (Brazilian UTF8)
68
+// pt_utf8    Portuguese (UTF8)
69
+// ru         Russian
73 70
 
74 71
 #ifdef DEFAULT_SOURCE_CODE_URL
75 72
   #undef  SOURCE_CODE_URL
@@ -116,6 +113,7 @@
116 113
 #define MSG_PLANNER_BUFFER_BYTES            "  PlannerBufferBytes: "
117 114
 #define MSG_OK                              "ok"
118 115
 #define MSG_WAIT                            "wait"
116
+#define MSG_STATS                           "Stats: "
119 117
 #define MSG_FILE_SAVED                      "Done saving file."
120 118
 #define MSG_ERR_LINE_NO                     "Line Number is not Last Line Number+1, Last Line: "
121 119
 #define MSG_ERR_CHECKSUM_MISMATCH           "checksum mismatch, Last Line: "
@@ -127,7 +125,7 @@
127 125
 #define MSG_INVALID_EXTRUDER                "Invalid extruder"
128 126
 #define MSG_INVALID_SOLENOID                "Invalid solenoid"
129 127
 #define MSG_ERR_NO_THERMISTORS              "No thermistors - no temperature"
130
-#define MSG_M115_REPORT                     "FIRMWARE_NAME:Marlin " DETAILED_BUILD_VERSION " SOURCE_CODE_URL:" SOURCE_CODE_URL " PROTOCOL_VERSION:" PROTOCOL_VERSION " MACHINE_TYPE:" MACHINE_NAME " EXTRUDER_COUNT:" STRINGIFY(EXTRUDERS) " UUID:" MACHINE_UUID "\n"
128
+#define MSG_M115_REPORT                     "FIRMWARE_NAME:Marlin " DETAILED_BUILD_VERSION " SOURCE_CODE_URL:" SOURCE_CODE_URL " PROTOCOL_VERSION:" PROTOCOL_VERSION " MACHINE_TYPE:" MACHINE_NAME " EXTRUDER_COUNT:" STRINGIFY(EXTRUDERS) " UUID:" MACHINE_UUID EMERGENCY_PARSER_CAPABILITIES "\n"
131 129
 #define MSG_COUNT_X                         " Count X: "
132 130
 #define MSG_COUNT_A                         " Count A: "
133 131
 #define MSG_ERR_KILLED                      "Printer halted. kill() called!"
@@ -155,8 +153,9 @@
155 153
 #define MSG_ENDSTOP_HIT                     "TRIGGERED"
156 154
 #define MSG_ENDSTOP_OPEN                    "open"
157 155
 #define MSG_HOTEND_OFFSET                   "Hotend offsets:"
156
+#define MSG_DUPLICATION_MODE                "Duplication mode: "
158 157
 
159
-#define MSG_SD_CANT_OPEN_SUBDIR             "Cannot open subdir"
158
+#define MSG_SD_CANT_OPEN_SUBDIR             "Cannot open subdir "
160 159
 #define MSG_SD_INIT_FAIL                    "SD init fail"
161 160
 #define MSG_SD_VOL_INIT_FAIL                "volume.init failed"
162 161
 #define MSG_SD_OPENROOT_FAIL                "openRoot failed"
@@ -170,6 +169,7 @@
170 169
 #define MSG_SD_PRINTING_BYTE                "SD printing byte "
171 170
 #define MSG_SD_NOT_PRINTING                 "Not SD printing"
172 171
 #define MSG_SD_ERR_WRITE_TO_FILE            "error writing to file"
172
+#define MSG_SD_ERR_READ                     "SD read error"
173 173
 #define MSG_SD_CANT_ENTER_SUBDIR            "Cannot enter subdir: "
174 174
 
175 175
 #define MSG_STEPPER_TOO_HIGH                "Steprate too high: "

+ 12
- 15
Marlin/language_an.h Parādīt failu

@@ -30,7 +30,6 @@
30 30
 #ifndef LANGUAGE_AN_H
31 31
 #define LANGUAGE_AN_H
32 32
 
33
-#define MAPPER_NON
34 33
 // Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h
35 34
 //#define SIMULATE_ROMFONT
36 35
 #define DISPLAY_CHARSET_ISO10646_1
@@ -49,16 +48,16 @@
49 48
 #define MSG_SET_HOME_OFFSETS                "Set home offsets"
50 49
 #define MSG_HOME_OFFSETS_APPLIED            "Offsets applied"
51 50
 #define MSG_SET_ORIGIN                      "Establir zero"
52
-#define MSG_PREHEAT_PLA                     "Precalentar PLA"
53
-#define MSG_PREHEAT_PLA_N                   "Precalentar PLA "
54
-#define MSG_PREHEAT_PLA_ALL                 "Precalentar PLA a"
55
-#define MSG_PREHEAT_PLA_BEDONLY             "Prec. PLA Base"
56
-#define MSG_PREHEAT_PLA_SETTINGS            "Achustar tem. PLA"
57
-#define MSG_PREHEAT_ABS                     "Precalentar ABS"
58
-#define MSG_PREHEAT_ABS_N                   "Precalentar ABS "
59
-#define MSG_PREHEAT_ABS_ALL                 "Precalentar ABS a"
60
-#define MSG_PREHEAT_ABS_BEDONLY             "Prec. ABS Base"
61
-#define MSG_PREHEAT_ABS_SETTINGS            "Achustar tem. ABS"
51
+#define MSG_PREHEAT_1                       "Precalentar PLA"
52
+#define MSG_PREHEAT_1_N                     "Precalentar PLA "
53
+#define MSG_PREHEAT_1_ALL                   "Precalentar PLA a"
54
+#define MSG_PREHEAT_1_BEDONLY               "Prec. PLA Base"
55
+#define MSG_PREHEAT_1_SETTINGS              "Achustar tem. PLA"
56
+#define MSG_PREHEAT_2                       "Precalentar ABS"
57
+#define MSG_PREHEAT_2_N                     "Precalentar ABS "
58
+#define MSG_PREHEAT_2_ALL                   "Precalentar ABS a"
59
+#define MSG_PREHEAT_2_BEDONLY               "Prec. ABS Base"
60
+#define MSG_PREHEAT_2_SETTINGS              "Achustar tem. ABS"
62 61
 #define MSG_COOLDOWN                        "Enfriar"
63 62
 #define MSG_SWITCH_PS_ON                    "Enchegar Fuent"
64 63
 #define MSG_SWITCH_PS_OFF                   "Desenchegar Fuent"
@@ -142,15 +141,13 @@
142 141
 #define MSG_INIT_SDCARD                     "Encetan. tarcheta"
143 142
 #define MSG_CNG_SDCARD                      "Cambiar tarcheta"
144 143
 #define MSG_ZPROBE_OUT                      "Z probe out. bed"
145
-#define MSG_YX_UNHOMED                      "Home X/Y before Z"
144
+#define MSG_HOME                            "Home"  // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST
145
+#define MSG_FIRST                           "first"
146 146
 #define MSG_ZPROBE_ZOFFSET                  "Z Offset"
147 147
 #define MSG_BABYSTEP_X                      "Babystep X"
148 148
 #define MSG_BABYSTEP_Y                      "Babystep Y"
149 149
 #define MSG_BABYSTEP_Z                      "Babystep Z"
150 150
 #define MSG_ENDSTOP_ABORT                   "Endstop abort"
151
-#define MSG_END_HOUR                        "hours"
152
-#define MSG_END_MINUTE                      "minutes"
153
-
154 151
 #define MSG_DELTA_CALIBRATE                 "Delta Calibration"
155 152
 #define MSG_DELTA_CALIBRATE_X               "Calibrate X"
156 153
 #define MSG_DELTA_CALIBRATE_Y               "Calibrate Y"

+ 12
- 14
Marlin/language_bg.h Parādīt failu

@@ -49,16 +49,16 @@
49 49
 #define MSG_SET_HOME_OFFSETS                "Задай Начало"
50 50
 #define MSG_HOME_OFFSETS_APPLIED            "Offsets applied"
51 51
 #define MSG_SET_ORIGIN                      "Изходна точка"
52
-#define MSG_PREHEAT_PLA                     "Подгряване PLA"
53
-#define MSG_PREHEAT_PLA_N                   "Подгряване PLA"
54
-#define MSG_PREHEAT_PLA_ALL                 "Подгр. PLA Всички"
55
-#define MSG_PREHEAT_PLA_BEDONLY             "Подгр. PLA Легло"
56
-#define MSG_PREHEAT_PLA_SETTINGS            "Настройки PLA"
57
-#define MSG_PREHEAT_ABS                     "Подгряване ABS"
58
-#define MSG_PREHEAT_ABS_N                   "Подгряване ABS"
59
-#define MSG_PREHEAT_ABS_ALL                 "Подгр. ABS Всички"
60
-#define MSG_PREHEAT_ABS_BEDONLY             "Подгр. ABS Легло"
61
-#define MSG_PREHEAT_ABS_SETTINGS            "Настройки ABS"
52
+#define MSG_PREHEAT_1                       "Подгряване PLA"
53
+#define MSG_PREHEAT_1_N                     "Подгряване PLA"
54
+#define MSG_PREHEAT_1_ALL                   "Подгр. PLA Всички"
55
+#define MSG_PREHEAT_1_BEDONLY               "Подгр. PLA Легло"
56
+#define MSG_PREHEAT_1_SETTINGS              "Настройки PLA"
57
+#define MSG_PREHEAT_2                       "Подгряване ABS"
58
+#define MSG_PREHEAT_2_N                     "Подгряване ABS"
59
+#define MSG_PREHEAT_2_ALL                   "Подгр. ABS Всички"
60
+#define MSG_PREHEAT_2_BEDONLY               "Подгр. ABS Легло"
61
+#define MSG_PREHEAT_2_SETTINGS              "Настройки ABS"
62 62
 #define MSG_COOLDOWN                        "Охлаждане"
63 63
 #define MSG_SWITCH_PS_ON                    "Вкл. захранване"
64 64
 #define MSG_SWITCH_PS_OFF                   "Изкл. захранване"
@@ -143,15 +143,13 @@
143 143
 #define MSG_INIT_SDCARD                     "Иниц. SD-Карта"
144 144
 #define MSG_CNG_SDCARD                      "Смяна SD-Карта"
145 145
 #define MSG_ZPROBE_OUT                      "Z-сондата е извадена"
146
-#define MSG_YX_UNHOMED                      "Задайте X/Y преди Z"
146
+#define MSG_HOME                            "Home"  // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST
147
+#define MSG_FIRST                           "first"
147 148
 #define MSG_ZPROBE_ZOFFSET                  "Z Отстояние"
148 149
 #define MSG_BABYSTEP_X                      "Министъпка X"
149 150
 #define MSG_BABYSTEP_Y                      "Министъпка Y"
150 151
 #define MSG_BABYSTEP_Z                      "Министъпка Z"
151 152
 #define MSG_ENDSTOP_ABORT                   "Стоп Кр.Изключватели"
152
-#define MSG_END_HOUR                        "часа"
153
-#define MSG_END_MINUTE                      "минути"
154
-
155 153
 #define MSG_DELTA_CALIBRATE                 "Делта Калибровка"
156 154
 #define MSG_DELTA_CALIBRATE_X               "Калибровка X"
157 155
 #define MSG_DELTA_CALIBRATE_Y               "Калибровка Y"

+ 12
- 15
Marlin/language_ca.h Parādīt failu

@@ -30,7 +30,6 @@
30 30
 #ifndef LANGUAGE_CA_H
31 31
 #define LANGUAGE_CA_H
32 32
 
33
-//#define MAPPER_NON
34 33
 #define MAPPER_C2C3  // because of "ó"
35 34
 // Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h
36 35
 //#define SIMULATE_ROMFONT
@@ -50,16 +49,16 @@
50 49
 #define MSG_SET_HOME_OFFSETS                "Set home offsets"
51 50
 #define MSG_HOME_OFFSETS_APPLIED            "Offsets applied"
52 51
 #define MSG_SET_ORIGIN                      "Establir origen"
53
-#define MSG_PREHEAT_PLA                     "Preescalfar PLA"
54
-#define MSG_PREHEAT_PLA_N                   "Preescalfar PLA "
55
-#define MSG_PREHEAT_PLA_ALL                 "Preesc. tot PLA"
56
-#define MSG_PREHEAT_PLA_BEDONLY             "Preesc. llit PLA"
57
-#define MSG_PREHEAT_PLA_SETTINGS            "Configuració PLA"
58
-#define MSG_PREHEAT_ABS                     "Preescalfar ABS"
59
-#define MSG_PREHEAT_ABS_N                   "Preescalfar ABS "
60
-#define MSG_PREHEAT_ABS_ALL                 "Preesc. tot ABS"
61
-#define MSG_PREHEAT_ABS_BEDONLY             "Preesc. llit ABS"
62
-#define MSG_PREHEAT_ABS_SETTINGS            "Configuració ABS"
52
+#define MSG_PREHEAT_1                       "Preescalfar PLA"
53
+#define MSG_PREHEAT_1_N                     "Preescalfar PLA "
54
+#define MSG_PREHEAT_1_ALL                   "Preesc. tot PLA"
55
+#define MSG_PREHEAT_1_BEDONLY               "Preesc. llit PLA"
56
+#define MSG_PREHEAT_1_SETTINGS              "Configuració PLA"
57
+#define MSG_PREHEAT_2                       "Preescalfar ABS"
58
+#define MSG_PREHEAT_2_N                     "Preescalfar ABS "
59
+#define MSG_PREHEAT_2_ALL                   "Preesc. tot ABS"
60
+#define MSG_PREHEAT_2_BEDONLY               "Preesc. llit ABS"
61
+#define MSG_PREHEAT_2_SETTINGS              "Configuració ABS"
63 62
 #define MSG_COOLDOWN                        "Refredar"
64 63
 #define MSG_SWITCH_PS_ON                    "Switch power on"
65 64
 #define MSG_SWITCH_PS_OFF                   "Switch power off"
@@ -143,15 +142,13 @@
143 142
 #define MSG_INIT_SDCARD                     "Iniciant SD"
144 143
 #define MSG_CNG_SDCARD                      "Canviar SD"
145 144
 #define MSG_ZPROBE_OUT                      "Z probe out. bed"
146
-#define MSG_YX_UNHOMED                      "Home X/Y abans Z"
145
+#define MSG_HOME                            "Home"  // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST
146
+#define MSG_FIRST                           "first"
147 147
 #define MSG_ZPROBE_ZOFFSET                  "Z Offset"
148 148
 #define MSG_BABYSTEP_X                      "Babystep X"
149 149
 #define MSG_BABYSTEP_Y                      "Babystep Y"
150 150
 #define MSG_BABYSTEP_Z                      "Babystep Z"
151 151
 #define MSG_ENDSTOP_ABORT                   "Endstop abort"
152
-#define MSG_END_HOUR                        "hours"
153
-#define MSG_END_MINUTE                      "minutes"
154
-
155 152
 #define MSG_DELTA_CALIBRATE                 "Delta Calibration"
156 153
 #define MSG_DELTA_CALIBRATE_X               "Calibrate X"
157 154
 #define MSG_DELTA_CALIBRATE_Y               "Calibrate Y"

+ 12
- 16
Marlin/language_cn.h Parādīt failu

@@ -29,8 +29,6 @@
29 29
  */
30 30
 #ifndef LANGUAGE_CN_H
31 31
 #define LANGUAGE_CN_H
32
-
33
-#define MAPPER_NON         // For direct ascii codes
34 32
 #define DISPLAY_CHARSET_ISO10646_CN
35 33
 
36 34
 #define WELCOME_MSG                         "\xa4\xa5\xa6\xa7"
@@ -47,16 +45,16 @@
47 45
 #define MSG_SET_HOME_OFFSETS                "\xbe\xbf\xbb\xbc\xbd\xc0\xc1"
48 46
 #define MSG_HOME_OFFSETS_APPLIED            "Offsets applied"
49 47
 #define MSG_SET_ORIGIN                      "\xbe\xbf\xbc\xbd"
50
-#define MSG_PREHEAT_PLA                     "\xc3\xc4 PLA"
51
-#define MSG_PREHEAT_PLA_N                   MSG_PREHEAT_PLA " "
52
-#define MSG_PREHEAT_PLA_ALL                 MSG_PREHEAT_PLA " \xc5\xc6"
53
-#define MSG_PREHEAT_PLA_BEDONLY             MSG_PREHEAT_PLA " \xc4\xc7"
54
-#define MSG_PREHEAT_PLA_SETTINGS            MSG_PREHEAT_PLA " \xbe\xbf"
55
-#define MSG_PREHEAT_ABS                     "\xc3\xc4 ABS"
56
-#define MSG_PREHEAT_ABS_N                   MSG_PREHEAT_ABS " "
57
-#define MSG_PREHEAT_ABS_ALL                 MSG_PREHEAT_ABS " \xc5\xc6"
58
-#define MSG_PREHEAT_ABS_BEDONLY             MSG_PREHEAT_ABS " \xbe\xc6"
59
-#define MSG_PREHEAT_ABS_SETTINGS            MSG_PREHEAT_ABS " \xbe\xbf"
48
+#define MSG_PREHEAT_1                       "\xc3\xc4 PLA"
49
+#define MSG_PREHEAT_1_N                     MSG_PREHEAT_1 " "
50
+#define MSG_PREHEAT_1_ALL                   MSG_PREHEAT_1 " \xc5\xc6"
51
+#define MSG_PREHEAT_1_BEDONLY               MSG_PREHEAT_1 " \xc4\xc7"
52
+#define MSG_PREHEAT_1_SETTINGS              MSG_PREHEAT_1 " \xbe\xbf"
53
+#define MSG_PREHEAT_2                       "\xc3\xc4 ABS"
54
+#define MSG_PREHEAT_2_N                     MSG_PREHEAT_2 " "
55
+#define MSG_PREHEAT_2_ALL                   MSG_PREHEAT_2 " \xc5\xc6"
56
+#define MSG_PREHEAT_2_BEDONLY               MSG_PREHEAT_2 " \xbe\xc6"
57
+#define MSG_PREHEAT_2_SETTINGS              MSG_PREHEAT_2 " \xbe\xbf"
60 58
 #define MSG_COOLDOWN                        "\xc8\xc9"
61 59
 #define MSG_SWITCH_PS_ON                    "\xb9\xcb\xca\xb3"
62 60
 #define MSG_SWITCH_PS_OFF                   "\xb9\xcb\xb5\xb6"
@@ -142,7 +140,8 @@
142 140
 #define MSG_INIT_SDCARD                     "Init. SD card"
143 141
 #define MSG_CNG_SDCARD                      "Change SD card"
144 142
 #define MSG_ZPROBE_OUT                      "Z probe out. bed"
145
-#define MSG_YX_UNHOMED                      "Home X/Y before Z"
143
+#define MSG_HOME                            "Home"  // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST
144
+#define MSG_FIRST                           "first"
146 145
 #define MSG_ZPROBE_ZOFFSET                  "Z Offset"
147 146
 #define MSG_BABYSTEP_X                      "Babystep X"
148 147
 #define MSG_BABYSTEP_Y                      "Babystep Y"
@@ -154,9 +153,6 @@
154 153
 #define MSG_ERR_MAXTEMP                     "Err: MAXTEMP"
155 154
 #define MSG_ERR_MINTEMP                     "Err: MINTEMP"
156 155
 #define MSG_ERR_MAXTEMP_BED                 "Err: MAXTEMP BED"
157
-#define MSG_END_HOUR                        "hours"
158
-#define MSG_END_MINUTE                      "minutes"
159
-
160 156
 #define MSG_DELTA_CALIBRATE                 "Delta Calibration"
161 157
 #define MSG_DELTA_CALIBRATE_X               "Calibrate X"
162 158
 #define MSG_DELTA_CALIBRATE_Y               "Calibrate Y"

+ 99
- 20
Marlin/language_cz.h Parādīt failu

@@ -34,7 +34,6 @@
34 34
 #ifndef LANGUAGE_CZ_H
35 35
 #define LANGUAGE_CZ_H
36 36
 
37
-#define MAPPER_NON
38 37
 // Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h
39 38
 //#define SIMULATE_ROMFONT
40 39
 #define DISPLAY_CHARSET_ISO10646_1
@@ -58,16 +57,20 @@
58 57
 #define MSG_SET_HOME_OFFSETS                "Nastavit ofsety"
59 58
 #define MSG_HOME_OFFSETS_APPLIED            "Ofsety nastaveny"
60 59
 #define MSG_SET_ORIGIN                      "Nastavit pocatek"
61
-#define MSG_PREHEAT_PLA                     "Zahrat PLA"
62
-#define MSG_PREHEAT_PLA_N                   MSG_PREHEAT_PLA " "
63
-#define MSG_PREHEAT_PLA_ALL                 MSG_PREHEAT_PLA " Vse"
64
-#define MSG_PREHEAT_PLA_BEDONLY             MSG_PREHEAT_PLA " Podloz"
65
-#define MSG_PREHEAT_PLA_SETTINGS            MSG_PREHEAT_PLA " Nast"
66
-#define MSG_PREHEAT_ABS                     "Zahrat ABS"
67
-#define MSG_PREHEAT_ABS_N                   MSG_PREHEAT_ABS " "
68
-#define MSG_PREHEAT_ABS_ALL                 MSG_PREHEAT_ABS " Vse"
69
-#define MSG_PREHEAT_ABS_BEDONLY             MSG_PREHEAT_ABS " Podloz"
70
-#define MSG_PREHEAT_ABS_SETTINGS            MSG_PREHEAT_ABS " Nast"
60
+#define MSG_PREHEAT_1                       "Zahrat PLA"
61
+#define MSG_PREHEAT_1_N                     MSG_PREHEAT_1 " "
62
+#define MSG_PREHEAT_1_ALL                   MSG_PREHEAT_1 " Vse"
63
+#define MSG_PREHEAT_1_BEDONLY               MSG_PREHEAT_1 " Podloz"
64
+#define MSG_PREHEAT_1_SETTINGS              MSG_PREHEAT_1 " Nast"
65
+#define MSG_PREHEAT_2                       "Zahrat ABS"
66
+#define MSG_PREHEAT_2_N                     MSG_PREHEAT_2 " "
67
+#define MSG_PREHEAT_2_ALL                   MSG_PREHEAT_2 " Vse"
68
+#define MSG_PREHEAT_2_BEDONLY               MSG_PREHEAT_2 " Podloz"
69
+#define MSG_PREHEAT_2_SETTINGS              MSG_PREHEAT_2 " Nast"
70
+#define MSG_H1                              "1"
71
+#define MSG_H2                              "2"
72
+#define MSG_H3                              "3"
73
+#define MSG_H4                              "4"
71 74
 #define MSG_COOLDOWN                        "Zchladit"
72 75
 #define MSG_SWITCH_PS_ON                    "Zapnout napajeni"
73 76
 #define MSG_SWITCH_PS_OFF                   "Vypnout napajeni"
@@ -79,12 +82,20 @@
79 82
 #define MSG_MOVE_Y                          "Posunout Y"
80 83
 #define MSG_MOVE_Z                          "Posunout Z"
81 84
 #define MSG_MOVE_E                          "Extruder"
85
+#define MSG_MOVE_E1                         "1"
86
+#define MSG_MOVE_E2                         "2"
87
+#define MSG_MOVE_E3                         "3"
88
+#define MSG_MOVE_E4                         "4"
82 89
 #define MSG_MOVE_01MM                       "Posunout o 0,1mm"
83 90
 #define MSG_MOVE_1MM                        "Posunout o 1mm"
84 91
 #define MSG_MOVE_10MM                       "Posunout o 10mm"
85 92
 #define MSG_SPEED                           "Rychlost"
86 93
 #define MSG_BED_Z                           "Vyska podl."
87 94
 #define MSG_NOZZLE                          "Tryska"
95
+#define MSG_N1                              " 1"
96
+#define MSG_N2                              " 2"
97
+#define MSG_N3                              " 3"
98
+#define MSG_N4                              " 4"
88 99
 #define MSG_BED                             "Podlozka"
89 100
 #define MSG_FAN_SPEED                       "Rychlost vent."
90 101
 #define MSG_FLOW                            "Prutok"
@@ -99,6 +110,11 @@
99 110
 #define MSG_PID_I                           "PID-I"
100 111
 #define MSG_PID_D                           "PID-D"
101 112
 #define MSG_PID_C                           "PID-C"
113
+#define MSG_SELECT                          "Vybrat"
114
+#define MSG_E1                              " E1"
115
+#define MSG_E2                              " E2"
116
+#define MSG_E3                              " E3"
117
+#define MSG_E4                              " E4"
102 118
 #define MSG_ACC                             "Zrychl"
103 119
 #define MSG_VXY_JERK                        "Vxy-jerk"
104 120
 #define MSG_VZ_JERK                         "Vz-jerk"
@@ -122,6 +138,10 @@
122 138
 #define MSG_VOLUMETRIC                      "Filament"
123 139
 #define MSG_VOLUMETRIC_ENABLED              "E na mm3"
124 140
 #define MSG_FILAMENT_DIAM                   "Fil. Prum."
141
+#define MSG_DIAM_E1                         " 1"
142
+#define MSG_DIAM_E2                         " 2"
143
+#define MSG_DIAM_E3                         " 3"
144
+#define MSG_DIAM_E4                         " 4"
125 145
 #define MSG_CONTRAST                        "Kontrast LCD"
126 146
 #define MSG_STORE_EPROM                     "Ulozit nastaveni"
127 147
 #define MSG_LOAD_EPROM                      "Nacist nastaveni"
@@ -154,30 +174,89 @@
154 174
 #define MSG_INIT_SDCARD                     "Nacist SD kartu"
155 175
 #define MSG_CNG_SDCARD                      "Vymenit SD kartu"
156 176
 #define MSG_ZPROBE_OUT                      "Sonda Z mimo podl"
157
-#define MSG_YX_UNHOMED                      "Domu X/Y pred Z"
177
+#define MSG_HOME                            "Domu"  // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST
178
+#define MSG_FIRST                           "prvni"
158 179
 #define MSG_ZPROBE_ZOFFSET                  "Z ofset"
159 180
 #define MSG_BABYSTEP_X                      "Babystep X"
160 181
 #define MSG_BABYSTEP_Y                      "Babystep Y"
161 182
 #define MSG_BABYSTEP_Z                      "Babystep Z"
162 183
 #define MSG_ENDSTOP_ABORT                   "Endstop abort"
163 184
 #define MSG_HEATING_FAILED_LCD              "Chyba zahrivani"
164
-#define MSG_ERR_REDUNDANT_TEMP              "Chyba: REDUNDANTNI TEPLOTA"
185
+#define MSG_ERR_REDUNDANT_TEMP              "REDUND. TEPLOTA"
165 186
 #define MSG_THERMAL_RUNAWAY                 "TEPLOTNI SKOK"
166
-#define MSG_ERR_MAXTEMP                     "Chyba: VYSOKA TEPLOTA"
167
-#define MSG_ERR_MINTEMP                     "Chyba: NIZKA TEPLOTA"
168
-#define MSG_ERR_MAXTEMP_BED                 "Chyba: VYSOKA TEPLOTA PODL."
169
-#define MSG_ERR_MINTEMP_BED                 "Chyba: NIZKA TEPLOTA PODL."
170
-#define MSG_END_HOUR                        "hod"
171
-#define MSG_END_MINUTE                      "min"
187
+#define MSG_ERR_MAXTEMP                     "VYSOKA TEPLOTA"
188
+#define MSG_ERR_MINTEMP                     "NIZKA TEPLOTA"
189
+#define MSG_ERR_MAXTEMP_BED                 "VYS. TEPL. PODL."
190
+#define MSG_ERR_MINTEMP_BED                 "NIZ. TEPL. PODL."
191
+#define MSG_HALTED                          "TISK. ZASTAVENA"
192
+#define MSG_PLEASE_RESET                    "Provedte reset"
193
+#define MSG_SHORT_DAY                       "d"
194
+#define MSG_SHORT_HOUR                      "h"
195
+#define MSG_SHORT_MINUTE                    "m"
172 196
 #define MSG_HEATING                         "Zahrivani..."
173 197
 #define MSG_HEATING_COMPLETE                "Zahrati hotovo."
174 198
 #define MSG_BED_HEATING                     "Zahrivani podl."
175 199
 #define MSG_BED_DONE                        "Podlozka hotova."
176
-
177 200
 #define MSG_DELTA_CALIBRATE                 "Delta Kalibrace"
178 201
 #define MSG_DELTA_CALIBRATE_X               "Kalibrovat X"
179 202
 #define MSG_DELTA_CALIBRATE_Y               "Kalibrovat Y"
180 203
 #define MSG_DELTA_CALIBRATE_Z               "Kalibrovat Z"
181 204
 #define MSG_DELTA_CALIBRATE_CENTER          "Kalibrovat Stred"
205
+#define MSG_INFO_MENU                       "O tiskarne"
206
+#define MSG_INFO_PRINTER_MENU               "Info o tiskarne"
207
+#define MSG_INFO_STATS_MENU                 "Statistika"
208
+#define MSG_INFO_BOARD_MENU                 "Info o desce"
209
+#define MSG_INFO_THERMISTOR_MENU            "Termistory"
210
+#define MSG_INFO_EXTRUDERS                  "Extrudery"
211
+#define MSG_INFO_BAUDRATE                   "Rychlost"
212
+#define MSG_INFO_PROTOCOL                   "Protokol"
213
+#if LCD_WIDTH > 19
214
+  #define MSG_INFO_PRINT_COUNT              "Pocet tisku"
215
+  #define MSG_INFO_COMPLETED_PRINTS         "Dokonceno"
216
+  #define MSG_INFO_PRINT_TIME               "Celkovy cas"
217
+  #define MSG_INFO_PRINT_LONGEST            "Nejdelsi tisk"
218
+  #define MSG_INFO_PRINT_FILAMENT           "Celkem vytlaceno"
219
+#else
220
+  #define MSG_INFO_PRINT_COUNT              "Tisky"
221
+  #define MSG_INFO_COMPLETED_PRINTS         "Hotovo"
222
+  #define MSG_INFO_PRINT_TIME               "Cas"
223
+  #define MSG_INFO_PRINT_LONGEST            "Nejdelsi"
224
+  #define MSG_INFO_PRINT_FILAMENT           "Vytlaceno"
225
+#endif
226
+#define MSG_INFO_MIN_TEMP                   "Teplota min"
227
+#define MSG_INFO_MAX_TEMP                   "Teplota max"
228
+#define MSG_INFO_PSU                        "Nap. zdroj"
229
+
230
+#define MSG_FILAMENT_CHANGE_HEADER          "VYMENA FILAMENTU"
231
+#define MSG_FILAMENT_CHANGE_OPTION_HEADER   "CO DAL?"
232
+#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE  "Jeste vytlacit"
233
+#define MSG_FILAMENT_CHANGE_OPTION_RESUME   "Obnovit tisk"
234
+#if LCD_HEIGHT >= 4
235
+  #define MSG_FILAMENT_CHANGE_INIT_1          "Cekejte prosim"
236
+  #define MSG_FILAMENT_CHANGE_INIT_2          "na zahajeni"
237
+  #define MSG_FILAMENT_CHANGE_INIT_3          "vymeny filamentu"
238
+  #define MSG_FILAMENT_CHANGE_UNLOAD_1        "Cekejte prosim"
239
+  #define MSG_FILAMENT_CHANGE_UNLOAD_2        "na vysunuti"
240
+  #define MSG_FILAMENT_CHANGE_UNLOAD_3        "filamentu"
241
+  #define MSG_FILAMENT_CHANGE_INSERT_1        "Vlozte filament"
242
+  #define MSG_FILAMENT_CHANGE_INSERT_2        "a stisknete"
243
+  #define MSG_FILAMENT_CHANGE_INSERT_3        "tlacitko..."
244
+  #define MSG_FILAMENT_CHANGE_LOAD_1          "Cekejte prosim"
245
+  #define MSG_FILAMENT_CHANGE_LOAD_2          "na zavedeni"
246
+  #define MSG_FILAMENT_CHANGE_LOAD_3          "filamentu"
247
+  #define MSG_FILAMENT_CHANGE_EXTRUDE_1       "Cekejte prosim"
248
+  #define MSG_FILAMENT_CHANGE_EXTRUDE_2       "na vytlaceni"
249
+  #define MSG_FILAMENT_CHANGE_EXTRUDE_3       "filamentu"
250
+  #define MSG_FILAMENT_CHANGE_RESUME_1        "Cekejte prosim"
251
+  #define MSG_FILAMENT_CHANGE_RESUME_2        "na pokracovani"
252
+  #define MSG_FILAMENT_CHANGE_RESUME_3        "tisku"
253
+#else // LCD_HEIGHT < 4
254
+  #define MSG_FILAMENT_CHANGE_INIT_1          "Cekejte..."
255
+  #define MSG_FILAMENT_CHANGE_UNLOAD_1        "Vysouvani..."
256
+  #define MSG_FILAMENT_CHANGE_INSERT_1        "Vlozte, kliknete"
257
+  #define MSG_FILAMENT_CHANGE_LOAD_1          "Zavadeni..."
258
+  #define MSG_FILAMENT_CHANGE_EXTRUDE_1       "Vytlacovani..."
259
+  #define MSG_FILAMENT_CHANGE_RESUME_1        "Pokracovani..."
260
+#endif // LCD_HEIGHT < 4
182 261
 
183 262
 #endif // LANGUAGE_CZ_H

+ 54
- 30
Marlin/language_da.h Parādīt failu

@@ -38,43 +38,61 @@
38 38
 #define WELCOME_MSG                         MACHINE_NAME " er klar"
39 39
 #define MSG_SD_INSERTED                     "Kort isat"
40 40
 #define MSG_SD_REMOVED                      "Kort fjernet"
41
+#define MSG_LCD_ENDSTOPS                    "Endstops" // Max length 8 characters
41 42
 #define MSG_MAIN                            "Menu"
42 43
 #define MSG_AUTOSTART                       "Autostart"
43
-#define MSG_DISABLE_STEPPERS                "Slå stepper fra"
44
-#define MSG_AUTO_HOME                       "Home" // G28
44
+#define MSG_DISABLE_STEPPERS                "Slå alle steppere fra"
45
+#define MSG_AUTO_HOME                       "Auto Home" // G28
46
+#define MSG_AUTO_HOME_X                     "Home X"
47
+#define MSG_AUTO_HOME_Y                     "Home Y"
48
+#define MSG_AUTO_HOME_Z                     "Home Z"
45 49
 #define MSG_LEVEL_BED_HOMING                "Homing XYZ"
46
-#define MSG_LEVEL_BED_WAITING               "Tryk for at starte"
47
-#define MSG_LEVEL_BED_DONE                  "Justering er færdig!"
48
-#define MSG_LEVEL_BED_CANCEL                "Annuller"
49
-#define MSG_SET_HOME_OFFSETS                "Sæt forskyding til udgangsposition"
50
-#define MSG_HOME_OFFSETS_APPLIED            "Forskydninger er tilføjet"
50
+#define MSG_LEVEL_BED_WAITING               "Tryk for at starte bed level"
51
+#define MSG_LEVEL_BED_NEXT_POINT            "Næste punkt"
52
+#define MSG_LEVEL_BED_DONE                  "Bed level er færdig!"
53
+#define MSG_LEVEL_BED_CANCEL                "Annuller bed level"
54
+#define MSG_SET_HOME_OFFSETS                "Sæt forskyding af home"
55
+#define MSG_HOME_OFFSETS_APPLIED            "Forskydninger af home pos. er tilføjet"
51 56
 #define MSG_SET_ORIGIN                      "Sæt origin"
52
-#define MSG_PREHEAT_PLA                     "Forvarm PLA"
53
-#define MSG_PREHEAT_PLA_N                   "Forvarm PLA "
54
-#define MSG_PREHEAT_PLA_ALL                 "Forvarm PLA Alle"
55
-#define MSG_PREHEAT_PLA_BEDONLY             "Forvarm PLA Bed"
56
-#define MSG_PREHEAT_PLA_SETTINGS            "Forvarm PLA conf"
57
-#define MSG_PREHEAT_ABS                     "Forvarm ABS"
58
-#define MSG_PREHEAT_ABS_N                   "Forvarm ABS "
59
-#define MSG_PREHEAT_ABS_ALL                 "Forvarm ABS Alle"
60
-#define MSG_PREHEAT_ABS_BEDONLY             "Forvarm ABS Bed"
61
-#define MSG_PREHEAT_ABS_SETTINGS            "Forvarm ABS conf"
57
+#define MSG_PREHEAT_1                       "Forvarm PLA"
58
+#define MSG_PREHEAT_1_N                     "Forvarm PLA "
59
+#define MSG_PREHEAT_1_ALL                   "Forvarm PLA Alle"
60
+#define MSG_PREHEAT_1_BEDONLY               "Forvarm PLA Bed"
61
+#define MSG_PREHEAT_1_SETTINGS              "Forvarm PLA conf"
62
+#define MSG_PREHEAT_2                       "Forvarm ABS"
63
+#define MSG_PREHEAT_2_N                     "Forvarm ABS "
64
+#define MSG_PREHEAT_2_ALL                   "Forvarm ABS Alle"
65
+#define MSG_PREHEAT_2_BEDONLY               "Forvarm ABS Bed"
66
+#define MSG_PREHEAT_2_SETTINGS              "Forvarm ABS conf"
67
+#define MSG_H1                              "1"
68
+#define MSG_H2                              "2"
69
+#define MSG_H3                              "3"
70
+#define MSG_H4                              "4"
62 71
 #define MSG_COOLDOWN                        "Afkøl"
63 72
 #define MSG_SWITCH_PS_ON                    "Slå strøm til"
64 73
 #define MSG_SWITCH_PS_OFF                   "Slå strøm fra"
65 74
 #define MSG_EXTRUDE                         "Extruder"
66 75
 #define MSG_RETRACT                         "Retract"
67 76
 #define MSG_MOVE_AXIS                       "Flyt akser"
77
+#define MSG_LEVEL_BED                       "Juster bed"
68 78
 #define MSG_MOVE_X                          "Flyt X"
69 79
 #define MSG_MOVE_Y                          "Flyt Y"
70 80
 #define MSG_MOVE_Z                          "Flyt Z"
71 81
 #define MSG_MOVE_E                          "Extruder"
82
+#define MSG_MOVE_E1                         "1"
83
+#define MSG_MOVE_E2                         "2"
84
+#define MSG_MOVE_E3                         "3"
85
+#define MSG_MOVE_E4                         "4"
72 86
 #define MSG_MOVE_01MM                       "Flyt 0.1mm"
73 87
 #define MSG_MOVE_1MM                        "Flyt 1mm"
74 88
 #define MSG_MOVE_10MM                       "Flyt 10mm"
75 89
 #define MSG_SPEED                           "Hastighed"
76 90
 #define MSG_BED_Z                           "Plade Z"
77 91
 #define MSG_NOZZLE                          "Dyse"
92
+#define MSG_N1                              " 1"
93
+#define MSG_N2                              " 2"
94
+#define MSG_N3                              " 3"
95
+#define MSG_N4                              " 4"
78 96
 #define MSG_BED                             "Plade"
79 97
 #define MSG_FAN_SPEED                       "Blæser hastighed"
80 98
 #define MSG_FLOW                            "Flow"
@@ -89,6 +107,10 @@
89 107
 #define MSG_PID_I                           "PID-I"
90 108
 #define MSG_PID_D                           "PID-D"
91 109
 #define MSG_PID_C                           "PID-C"
110
+#define MSG_E1                              " E1"
111
+#define MSG_E2                              " E2"
112
+#define MSG_E3                              " E3"
113
+#define MSG_E4                              " E4"
92 114
 #define MSG_ACC                             "Accel"
93 115
 #define MSG_VXY_JERK                        "Vxy-jerk"
94 116
 #define MSG_VZ_JERK                         "Vz-jerk"
@@ -108,10 +130,14 @@
108 130
 #define MSG_ZSTEPS                          "Zsteps/mm"
109 131
 #define MSG_ESTEPS                          "Esteps/mm"
110 132
 #define MSG_TEMPERATURE                     "Temperatur"
111
-#define MSG_MOTION                          "Motion"
133
+#define MSG_MOTION                          "Bevægelse"
112 134
 #define MSG_VOLUMETRIC                      "Filament"
113 135
 #define MSG_VOLUMETRIC_ENABLED              "E in mm3"
114 136
 #define MSG_FILAMENT_DIAM                   "Fil. Dia."
137
+#define MSG_DIAM_E1                         " 1"
138
+#define MSG_DIAM_E2                         " 2"
139
+#define MSG_DIAM_E3                         " 3"
140
+#define MSG_DIAM_E4                         " 4"
115 141
 #define MSG_CONTRAST                        "LCD kontrast"
116 142
 #define MSG_STORE_EPROM                     "Gem i EEPROM"
117 143
 #define MSG_LOAD_EPROM                      "Hent fra EEPROM"
@@ -132,7 +158,7 @@
132 158
 #define MSG_NO_MOVE                         "Ingen bevægelse."
133 159
 #define MSG_KILLED                          "DRÆBT. "
134 160
 #define MSG_STOPPED                         "STOPPET. "
135
-#define MSG_CONTROL_RETRACT                 "Tilbagetraek mm"
161
+#define MSG_CONTROL_RETRACT                 "Tilbagetræk mm"
136 162
 #define MSG_CONTROL_RETRACT_SWAP            "Skift Re.mm"
137 163
 #define MSG_CONTROL_RETRACTF                "Tilbagetræk V"
138 164
 #define MSG_CONTROL_RETRACT_ZLIFT           "Hop mm"
@@ -144,7 +170,8 @@
144 170
 #define MSG_INIT_SDCARD                     "Init. SD card"
145 171
 #define MSG_CNG_SDCARD                      "Skift SD kort"
146 172
 #define MSG_ZPROBE_OUT                      "Probe udenfor plade"
147
-#define MSG_YX_UNHOMED                      "Home X/Y før Z"
173
+#define MSG_HOME                            "Home"  // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST
174
+#define MSG_FIRST                           "first"
148 175
 #define MSG_ZPROBE_ZOFFSET                  "Z Offset"
149 176
 #define MSG_BABYSTEP_X                      "Babystep X"
150 177
 #define MSG_BABYSTEP_Y                      "Babystep Y"
@@ -155,19 +182,16 @@
155 182
 #define MSG_THERMAL_RUNAWAY                 "Temp løber løbsk"
156 183
 #define MSG_ERR_MAXTEMP                     "Fejl: Maks temp"
157 184
 #define MSG_ERR_MINTEMP                     "Fejl: Min temp"
158
-#define MSG_ERR_MAXTEMP_BED                 "Fejl: Maks P temp"
159
-#define MSG_ERR_MINTEMP_BED                 "Fejl: Min P temp"
160
-#define MSG_END_HOUR                        "Timer"
161
-#define MSG_END_MINUTE                      "Minutter"
185
+#define MSG_ERR_MAXTEMP_BED                 "Fejl: Maks Plsde temp"
186
+#define MSG_ERR_MINTEMP_BED                 "Fejl: Min Plade temp"
162 187
 #define MSG_HEATING                         "Opvarmer..."
163 188
 #define MSG_HEATING_COMPLETE                "Opvarmet"
164 189
 #define MSG_BED_HEATING                     "Opvarmer plade"
165 190
 #define MSG_BED_DONE                        "Plade opvarmet"
166
-
167
-#define MSG_DELTA_CALIBRATE               "Delta Kalibrering"
168
-#define MSG_DELTA_CALIBRATE_X             "Kalibrer X"
169
-#define MSG_DELTA_CALIBRATE_Y             "Kalibrer Y"
170
-#define MSG_DELTA_CALIBRATE_Z             "Kalibrer Z"
171
-#define MSG_DELTA_CALIBRATE_CENTER        "Kalibrerings Center"
191
+#define MSG_DELTA_CALIBRATE                 "Delta Kalibrering"
192
+#define MSG_DELTA_CALIBRATE_X               "Kalibrer X"
193
+#define MSG_DELTA_CALIBRATE_Y               "Kalibrer Y"
194
+#define MSG_DELTA_CALIBRATE_Z               "Kalibrer Z"
195
+#define MSG_DELTA_CALIBRATE_CENTER          "Kalibrerings Center"
172 196
 
173 197
 #endif // LANGUAGE_DA_H

+ 67
- 14
Marlin/language_de.h Parādīt failu

@@ -49,16 +49,16 @@
49 49
 #define MSG_SET_HOME_OFFSETS                "Setze Homeoffsets"
50 50
 #define MSG_HOME_OFFSETS_APPLIED            "Offsets aktiv"
51 51
 #define MSG_SET_ORIGIN                      "Setze Nullpunkt" //"G92 X0 Y0 Z0" commented out in ultralcd.cpp
52
-#define MSG_PREHEAT_PLA                     "Vorwärmen PLA"
53
-#define MSG_PREHEAT_PLA_N                   "Vorwärmen PLA "
54
-#define MSG_PREHEAT_PLA_ALL                 "Vorw. PLA Alle"
55
-#define MSG_PREHEAT_PLA_BEDONLY             "Vorw. PLA Bett"
56
-#define MSG_PREHEAT_PLA_SETTINGS            "Vorw. PLA Einst."
57
-#define MSG_PREHEAT_ABS                     "Vorwärmen ABS"
58
-#define MSG_PREHEAT_ABS_N                   "Vorwärmen ABS "
59
-#define MSG_PREHEAT_ABS_ALL                 "Vorw. ABS Alle"
60
-#define MSG_PREHEAT_ABS_BEDONLY             "Vorw. ABS Bett"
61
-#define MSG_PREHEAT_ABS_SETTINGS            "Vorw. ABS Einst."
52
+#define MSG_PREHEAT_1                       "Vorwärmen PLA"
53
+#define MSG_PREHEAT_1_N                     "Vorwärmen PLA "
54
+#define MSG_PREHEAT_1_ALL                   "Vorw. PLA Alle"
55
+#define MSG_PREHEAT_1_BEDONLY               "Vorw. PLA Bett"
56
+#define MSG_PREHEAT_1_SETTINGS              "Vorw. PLA Einst."
57
+#define MSG_PREHEAT_2                       "Vorwärmen ABS"
58
+#define MSG_PREHEAT_2_N                     "Vorwärmen ABS "
59
+#define MSG_PREHEAT_2_ALL                   "Vorw. ABS Alle"
60
+#define MSG_PREHEAT_2_BEDONLY               "Vorw. ABS Bett"
61
+#define MSG_PREHEAT_2_SETTINGS              "Vorw. ABS Einst."
62 62
 #define MSG_COOLDOWN                        "Abkühlen"
63 63
 #define MSG_SWITCH_PS_ON                    "Netzteil ein"
64 64
 #define MSG_SWITCH_PS_OFF                   "Netzteil aus"
@@ -145,7 +145,8 @@
145 145
 #define MSG_INIT_SDCARD                     "SD-Karte erkennen"  // Manually initialize the SD-card via user interface
146 146
 #define MSG_CNG_SDCARD                      "SD-Karte getauscht" // SD-card changed by user. For machines with no autocarddetect. Both send "M21"
147 147
 #define MSG_ZPROBE_OUT                      "Sensor ausserhalb"
148
-#define MSG_YX_UNHOMED                      "X/Y vor Z homen!"
148
+#define MSG_HOME                            "Vorher"  // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST
149
+#define MSG_FIRST                           "homen"
149 150
 #define MSG_ZPROBE_ZOFFSET                  "Z Offset"
150 151
 #define MSG_BABYSTEP_X                      "Babystep X"
151 152
 #define MSG_BABYSTEP_Y                      "Babystep Y"
@@ -158,17 +159,69 @@
158 159
 #define MSG_ERR_MINTEMP                     LCD_STR_THERMOMETER " UNTERSCHRITTEN"
159 160
 #define MSG_ERR_MAXTEMP_BED                 "BETT " LCD_STR_THERMOMETER " ÜBERSCHRITTEN"
160 161
 #define MSG_ERR_MINTEMP_BED                 "BETT " LCD_STR_THERMOMETER " UNTERSCHRITTEN"
161
-#define MSG_END_HOUR                        "Stunden"
162
-#define MSG_END_MINUTE                      "Minuten"
163 162
 #define MSG_HEATING                         "Aufheizen..."
164 163
 #define MSG_HEATING_COMPLETE                "Aufgeheizt"
165 164
 #define MSG_BED_HEATING                     "Bett aufheizen"
166 165
 #define MSG_BED_DONE                        "Bett aufgeheizt"
167
-
168 166
 #define MSG_DELTA_CALIBRATE                 "Delta kalibrieren"
169 167
 #define MSG_DELTA_CALIBRATE_X               "Kalibriere X"
170 168
 #define MSG_DELTA_CALIBRATE_Y               "Kalibriere Y"
171 169
 #define MSG_DELTA_CALIBRATE_Z               "Kalibriere Z"
172 170
 #define MSG_DELTA_CALIBRATE_CENTER          "Kalibriere Mitte"
173 171
 
172
+#define MSG_INFO_MENU                       "Über den Drucker"
173
+#define MSG_INFO_PRINTER_MENU               "Drucker Info"
174
+#define MSG_INFO_STATS_MENU                 "Drucker Stats"
175
+#define MSG_INFO_BOARD_MENU                 "Board Info"
176
+#define MSG_INFO_THERMISTOR_MENU            "Thermistors"
177
+#define MSG_INFO_EXTRUDERS                  "Extruders"
178
+#define MSG_INFO_BAUDRATE                   "Baud"
179
+#define MSG_INFO_PROTOCOL                   "Protokol"
180
+
181
+#if LCD_WIDTH > 19
182
+  #define MSG_INFO_PRINT_COUNT              "Gesamte Drucke   "
183
+  #define MSG_INFO_COMPLETED_PRINTS         "Beendete Drucke  "
184
+  #define MSG_INFO_PRINT_TIME               "Gesamte Druckzeit"
185
+#else
186
+  #define MSG_INFO_PRINT_COUNT              "Prints   "
187
+  #define MSG_INFO_COMPLETED_PRINTS         "Completed"
188
+  #define MSG_INFO_PRINT_TIME               "Duration "
189
+#endif
190
+#define MSG_INFO_MIN_TEMP                   "Min Temp"
191
+#define MSG_INFO_MAX_TEMP                   "Max Temp"
192
+#define MSG_INFO_PSU                        "Stromversorgung"
193
+
194
+#define MSG_FILAMENT_CHANGE_HEADER          "ÄNDERE FILAMENT"
195
+#define MSG_FILAMENT_CHANGE_OPTION_HEADER   "ÄNDERE OPTIONEN:"
196
+#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE  "Extrude mehr"
197
+#define MSG_FILAMENT_CHANGE_OPTION_RESUME   "Drucke weiter"
198
+
199
+#if LCD_HEIGHT >= 4
200
+  #define MSG_FILAMENT_CHANGE_INIT_1          "Warte auf den"
201
+  #define MSG_FILAMENT_CHANGE_INIT_2          "Start zum "
202
+  #define MSG_FILAMENT_CHANGE_INIT_3          "Filament wechsel"
203
+  #define MSG_FILAMENT_CHANGE_UNLOAD_1        "Warte auf das"
204
+  #define MSG_FILAMENT_CHANGE_UNLOAD_2        "herrausnehmen"
205
+  #define MSG_FILAMENT_CHANGE_UNLOAD_3        "des Filaments"
206
+  #define MSG_FILAMENT_CHANGE_INSERT_1        "Fädel Filament"
207
+  #define MSG_FILAMENT_CHANGE_INSERT_2        "ein und drücke"
208
+  #define MSG_FILAMENT_CHANGE_INSERT_3        "den Knopf..."
209
+  #define MSG_FILAMENT_CHANGE_LOAD_1          "Warte auf das"
210
+  #define MSG_FILAMENT_CHANGE_LOAD_2          "laden des"
211
+  #define MSG_FILAMENT_CHANGE_LOAD_3          "Filaments"
212
+  #define MSG_FILAMENT_CHANGE_EXTRUDE_1       "Warte auf das"
213
+  #define MSG_FILAMENT_CHANGE_EXTRUDE_2       "Extruden des"
214
+  #define MSG_FILAMENT_CHANGE_EXTRUDE_3       "Filaments"
215
+  #define MSG_FILAMENT_CHANGE_RESUME_1        "Warte auf das"
216
+  #define MSG_FILAMENT_CHANGE_RESUME_2        "fortfahren des"
217
+  #define MSG_FILAMENT_CHANGE_RESUME_3        "Druckes"
218
+#else // LCD_HEIGHT < 4
219
+  #define MSG_FILAMENT_CHANGE_INIT_1          "Bitte warten..."
220
+  #define MSG_FILAMENT_CHANGE_UNLOAD_1        "Auswerfen..."
221
+  #define MSG_FILAMENT_CHANGE_INSERT_1        "Laden und Klick"
222
+  #define MSG_FILAMENT_CHANGE_LOAD_1          "Laden..."
223
+  #define MSG_FILAMENT_CHANGE_EXTRUDE_1       "Extruden..."
224
+  #define MSG_FILAMENT_CHANGE_RESUME_1        "Weitermachen..."
225
+#endif // LCD_HEIGHT < 4
226
+
174 227
 #endif // LANGUAGE_DE_H

+ 198
- 0
Marlin/language_el-gr.h Parādīt failu

@@ -0,0 +1,198 @@
1
+/**
2
+ * Marlin 3D Printer Firmware
3
+ * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
4
+ *
5
+ * Based on Sprinter and grbl.
6
+ * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
7
+ *
8
+ * This program is free software: you can redistribute it and/or modify
9
+ * it under the terms of the GNU General Public License as published by
10
+ * the Free Software Foundation, either version 3 of the License, or
11
+ * (at your option) any later version.
12
+ *
13
+ * This program is distributed in the hope that it will be useful,
14
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
+ * GNU General Public License for more details.
17
+ *
18
+ * You should have received a copy of the GNU General Public License
19
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
+ *
21
+ */
22
+
23
+/**
24
+ * Greek (Greece)
25
+ *
26
+ * LCD Menu Messages
27
+ * See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language
28
+ *
29
+ */
30
+#ifndef LANGUAGE_EL_GR_H
31
+#define LANGUAGE_EL_GR_H
32
+
33
+// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h
34
+//#define SIMULATE_ROMFONT
35
+
36
+//#define MAPPER_CECF
37
+//#define DISPLAY_CHARSET_ISO10646_GREEK
38
+
39
+#define WELCOME_MSG                         MACHINE_NAME " έτοιμο."
40
+#define MSG_SD_INSERTED                     "Εισαγωγή κάρτας"
41
+#define MSG_SD_REMOVED                      "Αφαίρεση κάρτας"
42
+#define MSG_LCD_ENDSTOPS                    "Endstops" // Max length 8 characters
43
+#define MSG_MAIN                            "Βασική Οθόνη"
44
+#define MSG_AUTOSTART                       "Αυτόματη εκκίνηση"
45
+#define MSG_DISABLE_STEPPERS                "Απενεργοποίηση βηματιστή"
46
+#define MSG_AUTO_HOME                       "Αυτομ. επαναφορά στο αρχικό σημείο"
47
+#define MSG_AUTO_HOME_X                     "Αρχικό σημείο X"
48
+#define MSG_AUTO_HOME_Y                     "Αρχικό σημείο Y"
49
+#define MSG_AUTO_HOME_Z                     "Αρχικό σημείο Z"
50
+#define MSG_LEVEL_BED_HOMING                "Επαναφορά στο αρχικό σημείο ΧΥΖ"
51
+#define MSG_LEVEL_BED_WAITING               "Κάντε κλικ για να ξεκινήσετε"
52
+#define MSG_LEVEL_BED_NEXT_POINT            "Επόμενο σημείο"
53
+#define MSG_LEVEL_BED_DONE                  "Ολοκλήρωση επιπεδοποίησης!"
54
+#define MSG_LEVEL_BED_CANCEL                "Ακύρωση"
55
+#define MSG_SET_HOME_OFFSETS                "Ορισμός βασικών μετατοπίσεων"
56
+#define MSG_HOME_OFFSETS_APPLIED            "Εφαρμόστηκαν οι μετατοπίσεις"
57
+#define MSG_SET_ORIGIN                      "Ορισμός προέλευσης"
58
+#define MSG_PREHEAT_1                       "Προθέρμανση PLA"
59
+#define MSG_PREHEAT_1_N                     MSG_PREHEAT_1 " "
60
+#define MSG_PREHEAT_1_ALL                   MSG_PREHEAT_1 " όλα"
61
+#define MSG_PREHEAT_1_BEDONLY               MSG_PREHEAT_1 " κλίνη"
62
+#define MSG_PREHEAT_1_SETTINGS              MSG_PREHEAT_1 " επιβεβαίωση"
63
+#define MSG_PREHEAT_2                       "Προθέρμανση ABS"
64
+#define MSG_PREHEAT_2_N                     MSG_PREHEAT_2 " "
65
+#define MSG_PREHEAT_2_ALL                   MSG_PREHEAT_2 " όλα"
66
+#define MSG_PREHEAT_2_BEDONLY               MSG_PREHEAT_2 " Bed"
67
+#define MSG_PREHEAT_2_SETTINGS              MSG_PREHEAT_2 " επιβεβαίωση"
68
+#define MSG_H1                              "1"
69
+#define MSG_H2                              "2"
70
+#define MSG_H3                              "3"
71
+#define MSG_H4                              "4"
72
+#define MSG_COOLDOWN                        "Μειωση θερμοκρασιας"
73
+#define MSG_SWITCH_PS_ON                    "Ενεργοποίηση"
74
+#define MSG_SWITCH_PS_OFF                   "Απενεργοποίηση"
75
+#define MSG_EXTRUDE                         "Εξώθηση"
76
+#define MSG_RETRACT                         "Ανάσυρση"
77
+#define MSG_MOVE_AXIS                       "Μετακίνηση άξονα"
78
+#define MSG_LEVEL_BED                       "Επιπεδοποίηση κλίνης"
79
+#define MSG_MOVE_X                          "Μετακίνηση X"
80
+#define MSG_MOVE_Y                          "Μετακίνηση Y"
81
+#define MSG_MOVE_Z                          "Μετακίνηση Z"
82
+#define MSG_MOVE_E                          "Εξωθητήρας"
83
+#define MSG_MOVE_E1                         "1"
84
+#define MSG_MOVE_E2                         "2"
85
+#define MSG_MOVE_E3                         "3"
86
+#define MSG_MOVE_E4                         "4"
87
+#define MSG_MOVE_01MM                       "Μετακίνηση 0,1 μμ"
88
+#define MSG_MOVE_1MM                        "Μετακίνηση 1 μμ"
89
+#define MSG_MOVE_10MM                       "Μετακίνηση 10 μμ"
90
+#define MSG_SPEED                           "Ταχύτητα"
91
+#define MSG_BED_Z                           "Κλίνη Z"
92
+#define MSG_NOZZLE                          "Ακροφύσιο"
93
+#define MSG_N1                              " 1"
94
+#define MSG_N2                              " 2"
95
+#define MSG_N3                              " 3"
96
+#define MSG_N4                              " 4"
97
+#define MSG_BED                             "Κλίνη"
98
+#define MSG_FAN_SPEED                       "Ταχύτητα ανεμιστήρα"
99
+#define MSG_FLOW                            "Ροή"
100
+#define MSG_CONTROL                         "Έλεγχος"
101
+#define MSG_MIN                             " " LCD_STR_THERMOMETER " Min"
102
+#define MSG_MAX                             " " LCD_STR_THERMOMETER " Max"
103
+#define MSG_FACTOR                          " " LCD_STR_THERMOMETER " Fact"
104
+#define MSG_AUTOTEMP                        "Αυτομ. ρύθμιση θερμοκρασίας"
105
+#define MSG_ON                              "Ενεργοποιημένο"
106
+#define MSG_OFF                             "Απενεργοποιημένο"
107
+#define MSG_PID_P                           "PID-P"
108
+#define MSG_PID_I                           "PID-I"
109
+#define MSG_PID_D                           "PID-D"
110
+#define MSG_PID_C                           "PID-C"
111
+#define MSG_E1                              " E1"
112
+#define MSG_E2                              " E2"
113
+#define MSG_E3                              " E3"
114
+#define MSG_E4                              " E4"
115
+#define MSG_ACC                             "Επιτάχυνση"
116
+#define MSG_VXY_JERK                        "Vαντίδραση xy"
117
+#define MSG_VZ_JERK                         "Vαντίδραση z"
118
+#define MSG_VE_JERK                         "Vαντίδραση e"
119
+#define MSG_VMAX                            "Vμεγ "
120
+#define MSG_X                               "X"
121
+#define MSG_Y                               "Y"
122
+#define MSG_Z                               "Z"
123
+#define MSG_E                               "E"
124
+#define MSG_VMIN                            "Vελαχ"
125
+#define MSG_VTRAV_MIN                       "Vελάχ. μετατόπιση"
126
+#define MSG_AMAX                            "Aμεγ "
127
+#define MSG_A_RETRACT                       "Α-ανάσυρση"
128
+#define MSG_A_TRAVEL                        "Α-μετατόπιση"
129
+#define MSG_XSTEPS                          "Bήματα X ανά μμ"
130
+#define MSG_YSTEPS                          "Bήματα Υ ανά μμ"
131
+#define MSG_ZSTEPS                          "Bήματα Ζ ανά μμ"
132
+#define MSG_ESTEPS                          "Bήματα Ε ανά μμ"
133
+#define MSG_TEMPERATURE                     "Θερμοκρασία"
134
+#define MSG_MOTION                          "Κίνηση"
135
+#define MSG_VOLUMETRIC                      "Νήμα"
136
+#define MSG_VOLUMETRIC_ENABLED              "Ε σε μμ3"
137
+#define MSG_FILAMENT_DIAM                   "Διάμετρος νήματος"
138
+#define MSG_DIAM_E1                         " 1"
139
+#define MSG_DIAM_E2                         " 2"
140
+#define MSG_DIAM_E3                         " 3"
141
+#define MSG_DIAM_E4                         " 4"
142
+#define MSG_CONTRAST                        "Κοντράστ LCD"
143
+#define MSG_STORE_EPROM                     "Αποθήκευση"
144
+#define MSG_LOAD_EPROM                      "Φόρτωση"
145
+#define MSG_RESTORE_FAILSAFE                "Επαναφορά ασφαλούς αντιγράφου"
146
+#define MSG_REFRESH                         "Ανανέωση"
147
+#define MSG_WATCH                           "Οθόνη πληροφόρησης"
148
+#define MSG_PREPARE                         "Προετοιμασία"
149
+#define MSG_TUNE                            "Συντονισμός"
150
+#define MSG_PAUSE_PRINT                     "Παύση εκτύπωσης"
151
+#define MSG_RESUME_PRINT                    "Συνέχιση εκτύπωσης"
152
+#define MSG_STOP_PRINT                      "Διακοπή εκτύπωσης"
153
+#define MSG_CARD_MENU                       "Εκτύπωση από SD"
154
+#define MSG_NO_CARD                         "Δεν βρέθηκε SD"
155
+#define MSG_DWELL                           "Αναστολή λειτουργίας..."
156
+#define MSG_USERWAIT                        "Αναμονή για χρήστη…"
157
+#define MSG_RESUMING                        "Συνεχίζεται η εκτύπωση"
158
+#define MSG_PRINT_ABORTED                   "Διακόπτεται η εκτύπωση"
159
+#define MSG_NO_MOVE                         "Καμία κίνηση."
160
+#define MSG_KILLED                          "ΤΕΡΜΑΤΙΣΜΟΣ. "
161
+#define MSG_STOPPED                         "ΔΙΑΚΟΠΗ. "
162
+#define MSG_CONTROL_RETRACT                 "Ανάσυρση μμ"
163
+#define MSG_CONTROL_RETRACT_SWAP            "Εναλλαγή ανάσυρσης μμ"
164
+#define MSG_CONTROL_RETRACTF                "Ανάσυρση V"
165
+#define MSG_CONTROL_RETRACT_ZLIFT           "Μεταπήδηση μμ"
166
+#define MSG_CONTROL_RETRACT_RECOVER         "UnRet +mm"
167
+#define MSG_CONTROL_RETRACT_RECOVER_SWAP    "S UnRet+mm"
168
+#define MSG_CONTROL_RETRACT_RECOVERF        "UnRet  V"
169
+#define MSG_AUTORETRACT                     "Αυτόματη ανάσυρση"
170
+#define MSG_FILAMENTCHANGE                  "Αλλαγή νήματος"
171
+#define MSG_INIT_SDCARD                     "Προετοιμασία κάρτας SD"
172
+#define MSG_CNG_SDCARD                      "Αλλαγή κάρτας SD"
173
+#define MSG_ZPROBE_OUT                      "Διερεύνηση Z εκτός κλίνης"
174
+#define MSG_YX_UNHOMED                      "Επαναφορά Χ/Υ πριν από Ζ"
175
+#define MSG_XYZ_UNHOMED                     "Επαναφορά ΧΥΖ πρώτα"
176
+#define MSG_ZPROBE_ZOFFSET                  "Μετατόπιση Ζ"
177
+#define MSG_BABYSTEP_X                      "Μικρό βήμα Χ"
178
+#define MSG_BABYSTEP_Y                      "Μικρό βήμα Υ"
179
+#define MSG_BABYSTEP_Z                      "Μικρό βήμα Ζ"
180
+#define MSG_ENDSTOP_ABORT                   "Ματαίωση endstop "
181
+#define MSG_HEATING_FAILED_LCD              "Ανεπιτυχής θέρμανση"
182
+#define MSG_ERR_REDUNDANT_TEMP              "Λάθος: ΠΛΕΟΝΑΖΟΥΣΑ ΘΕΡΜΟΤΗΤΑ"
183
+#define MSG_THERMAL_RUNAWAY                 "ΔΙΑΦΥΓΗ ΘΕΡΜΟΤΗΤΑΣ"
184
+#define MSG_ERR_MAXTEMP                     "Λάθος: ΜΕΓΙΣΤΗ ΘΕΡΜΟΤΗΤΑ"
185
+#define MSG_ERR_MINTEMP                     "Λάθος: ΕΛΑΧΙΣΤΗ ΘΕΡΜΟΤΗΤΑ"
186
+#define MSG_ERR_MAXTEMP_BED                 "Λάθος: ΜΕΓΙΣΤΗ ΘΕΡΜΟΤΗΤΑ ΚΛΙΝΗΣ"
187
+#define MSG_ERR_MINTEMP_BED                 "Λάθος: ΕΛΑΧΙΣΤΗ ΘΕΡΜΟΤΗΤΑ ΚΛΙΝΗΣ"
188
+#define MSG_HEATING                         "Θερμαίνεται…"
189
+#define MSG_HEATING_COMPLETE                "Η θέρμανση ολοκληρώθηκε."
190
+#define MSG_BED_HEATING                     "Θέρμανση κλίνης."
191
+#define MSG_BED_DONE                        "Η κλίνη ολοκληρώθηκε."
192
+#define MSG_DELTA_CALIBRATE                 "Βαθμονόμηση Delta"
193
+#define MSG_DELTA_CALIBRATE_X               "Βαθμονόμηση X"
194
+#define MSG_DELTA_CALIBRATE_Y               "Βαθμονόμηση Y"
195
+#define MSG_DELTA_CALIBRATE_Z               "Βαθμονόμηση Z"
196
+#define MSG_DELTA_CALIBRATE_CENTER          "Βαθμονόμηση κέντρου"
197
+
198
+#endif // LANGUAGE_EL_GR_H

+ 254
- 0
Marlin/language_el.h Parādīt failu

@@ -0,0 +1,254 @@
1
+/**
2
+ * Marlin 3D Printer Firmware
3
+ * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
4
+ *
5
+ * Based on Sprinter and grbl.
6
+ * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
7
+ *
8
+ * This program is free software: you can redistribute it and/or modify
9
+ * it under the terms of the GNU General Public License as published by
10
+ * the Free Software Foundation, either version 3 of the License, or
11
+ * (at your option) any later version.
12
+ *
13
+ * This program is distributed in the hope that it will be useful,
14
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
+ * GNU General Public License for more details.
17
+ *
18
+ * You should have received a copy of the GNU General Public License
19
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
+ *
21
+ */
22
+
23
+/**
24
+ * Greek
25
+ *
26
+ * LCD Menu Messages
27
+ * See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language
28
+ *
29
+ */
30
+#ifndef LANGUAGE_EL_H
31
+#define LANGUAGE_EL_H
32
+
33
+// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h
34
+//#define SIMULATE_ROMFONT
35
+
36
+#define MAPPER_CECF
37
+#define DISPLAY_CHARSET_ISO10646_GREEK
38
+
39
+#define WELCOME_MSG                         MACHINE_NAME " έτοιμο."
40
+#define MSG_SD_INSERTED                     "Εισαγωγή κάρτας"
41
+#define MSG_SD_REMOVED                      "Αφαίρεση κάρτας"
42
+#define MSG_LCD_ENDSTOPS                    "Endstops" // Max length 8 characters
43
+#define MSG_MAIN                            "Βασική Οθόνη"
44
+#define MSG_AUTOSTART                       "Αυτόματη εκκίνηση"
45
+#define MSG_DISABLE_STEPPERS                "Απενεργοποίηση Μοτέρ"
46
+#define MSG_AUTO_HOME                       "Αυτομ. επαναφορά στο αρχικό σημείο" //SHORTEN
47
+#define MSG_AUTO_HOME_X                     "Αρχικό σημείο X"
48
+#define MSG_AUTO_HOME_Y                     "Αρχικό σημείο Y"
49
+#define MSG_AUTO_HOME_Z                     "Αρχικό σημείο Z"
50
+#define MSG_LEVEL_BED_HOMING                "Επαναφορά Επ. Εκτύπωσης" //SHORTEN
51
+#define MSG_LEVEL_BED_WAITING               "Επιπεδοποίηση επ. Εκτύπωσης περιμενει" //SHORTEN
52
+#define MSG_LEVEL_BED_NEXT_POINT            "Επόμενο σημείο"
53
+#define MSG_LEVEL_BED_DONE                  "Ολοκλήρωση επιπεδοποίησης!" //SHORTEN
54
+#define MSG_LEVEL_BED_CANCEL                "Ακύρωση"
55
+#define MSG_SET_HOME_OFFSETS                "Ορισμός βασικών μετατοπίσεων" //SHORTEN
56
+#define MSG_HOME_OFFSETS_APPLIED            "Εφαρμόστηκαν οι μετατοπίσεις" //SHORTEN
57
+#define MSG_SET_ORIGIN                      "Ορισμός προέλευσης"
58
+#define MSG_PREHEAT_1                       "Προθέρμανση PLA"
59
+#define MSG_PREHEAT_1_N                     MSG_PREHEAT_1 " "
60
+#define MSG_PREHEAT_1_ALL                   MSG_PREHEAT_1 " όλα"
61
+#define MSG_PREHEAT_1_BEDONLY               MSG_PREHEAT_1 " bed" //SHORTEN
62
+#define MSG_PREHEAT_1_SETTINGS              MSG_PREHEAT_1 " επιβεβαίωση" //SHORTEN
63
+#define MSG_PREHEAT_2                       "Προθέρμανση ABS"
64
+#define MSG_PREHEAT_2_N                     MSG_PREHEAT_2 " "
65
+#define MSG_PREHEAT_2_ALL                   MSG_PREHEAT_2 " όλα"
66
+#define MSG_PREHEAT_2_BEDONLY               MSG_PREHEAT_2 " bed" //SHORTEN
67
+#define MSG_PREHEAT_2_SETTINGS              MSG_PREHEAT_2 " επιβεβαίωση" //SHORTEN
68
+#define MSG_H1                              "1"
69
+#define MSG_H2                              "2"
70
+#define MSG_H3                              "3"
71
+#define MSG_H4                              "4"
72
+#define MSG_COOLDOWN                        "Μειωση θερμοκρασιας"
73
+#define MSG_SWITCH_PS_ON                    "Ενεργοποίηση"
74
+#define MSG_SWITCH_PS_OFF                   "Απενεργοποίηση"
75
+#define MSG_EXTRUDE                         "Εξώθηση"
76
+#define MSG_RETRACT                         "Ανάσυρση"
77
+#define MSG_MOVE_AXIS                       "Μετακίνηση άξονα"
78
+#define MSG_LEVEL_BED                       "Επιπεδοποίηση Επ. Εκτύπωσης" //SHORTEN
79
+#define MSG_MOVE_X                          "Μετακίνηση X"
80
+#define MSG_MOVE_Y                          "Μετακίνηση Y"
81
+#define MSG_MOVE_Z                          "Μετακίνηση Z"
82
+#define MSG_MOVE_E                          "Εξωθητήρας"
83
+#define MSG_MOVE_E1                         "1"
84
+#define MSG_MOVE_E2                         "2"
85
+#define MSG_MOVE_E3                         "3"
86
+#define MSG_MOVE_E4                         "4"
87
+#define MSG_MOVE_01MM                       "Μετακίνηση 0,1μμ"
88
+#define MSG_MOVE_1MM                        "Μετακίνηση 1μμ"
89
+#define MSG_MOVE_10MM                       "Μετακίνηση 10μμ"
90
+#define MSG_SPEED                           "Ταχύτητα"
91
+#define MSG_BED_Z                           "Επ. Εκτύπωσης Z"
92
+#define MSG_NOZZLE                          "Ακροφύσιο"
93
+#define MSG_N1                              " 1"
94
+#define MSG_N2                              " 2"
95
+#define MSG_N3                              " 3"
96
+#define MSG_N4                              " 4"
97
+#define MSG_BED                             "Κλίνη"
98
+#define MSG_FAN_SPEED                       "Ταχύτητα ανεμιστήρα"
99
+#define MSG_FLOW                            "Ροή"
100
+#define MSG_CONTROL                         "Έλεγχος"
101
+#define MSG_MIN                             " " LCD_STR_THERMOMETER " Min"
102
+#define MSG_MAX                             " " LCD_STR_THERMOMETER " Max"
103
+#define MSG_FACTOR                          " " LCD_STR_THERMOMETER " Fact"
104
+#define MSG_AUTOTEMP                        "Αυτομ ρύθμιση θερ/σίας" //SHORTEN
105
+#define MSG_ON                              "Ενεργοποιημένο"
106
+#define MSG_OFF                             "Απενεργοποιημένο"
107
+#define MSG_PID_P                           "PID-P"
108
+#define MSG_PID_I                           "PID-I"
109
+#define MSG_PID_D                           "PID-D"
110
+#define MSG_PID_C                           "PID-C"
111
+#define MSG_E1                              " E1"
112
+#define MSG_E2                              " E2"
113
+#define MSG_E3                              " E3"
114
+#define MSG_E4                              " E4"
115
+#define MSG_ACC                             "Επιτάχυνση"
116
+#define MSG_VXY_JERK                        "Vαντίδραση xy"
117
+#define MSG_VZ_JERK                         "Vαντίδραση z"
118
+#define MSG_VE_JERK                         "Vαντίδραση e"
119
+#define MSG_VMAX                            "V Μέγιστο"
120
+#define MSG_X                               "X"
121
+#define MSG_Y                               "Y"
122
+#define MSG_Z                               "Z"
123
+#define MSG_E                               "E"
124
+#define MSG_VMIN                            "V Ελάχιστο"
125
+#define MSG_VTRAV_MIN                       "Vελάχ. μετατόπιση"
126
+#define MSG_AMAX                            "Aμεγ "
127
+#define MSG_A_RETRACT                       "Α-ανάσυρση"
128
+#define MSG_A_TRAVEL                        "Α-μετατόπιση"
129
+#define MSG_XSTEPS                          "Bήματα X ανά μμ"
130
+#define MSG_YSTEPS                          "Bήματα Υ ανά μμ"
131
+#define MSG_ZSTEPS                          "Bήματα Ζ ανά μμ"
132
+#define MSG_ESTEPS                          "Bήματα Ε ανά μμ"
133
+#define MSG_TEMPERATURE                     "Θερμοκρασία"
134
+#define MSG_MOTION                          "Κίνηση"
135
+#define MSG_VOLUMETRIC                      "Νήμα"
136
+#define MSG_VOLUMETRIC_ENABLED              "Ε σε μμ3"
137
+#define MSG_FILAMENT_DIAM                   "Διάμετρος νήματος"
138
+#define MSG_DIAM_E1                         " 1"
139
+#define MSG_DIAM_E2                         " 2"
140
+#define MSG_DIAM_E3                         " 3"
141
+#define MSG_DIAM_E4                         " 4"
142
+#define MSG_CONTRAST                        "Κοντράστ LCD"
143
+#define MSG_STORE_EPROM                     "Αποθήκευση"
144
+#define MSG_LOAD_EPROM                      "Φόρτωση"
145
+#define MSG_RESTORE_FAILSAFE                "Επαναφορά ασφαλούς αντιγράφου" //SHORTEN
146
+#define MSG_REFRESH                         "Ανανέωση"
147
+#define MSG_WATCH                           "Οθόνη πληροφόρησης"
148
+#define MSG_PREPARE                         "Προετοιμασία"
149
+#define MSG_TUNE                            "Συντονισμός"
150
+#define MSG_PAUSE_PRINT                     "Παύση εκτύπωσης"
151
+#define MSG_RESUME_PRINT                    "Συνέχιση εκτύπωσης"
152
+#define MSG_STOP_PRINT                      "Διακοπή εκτύπωσης"
153
+#define MSG_CARD_MENU                       "Εκτύπωση από SD"
154
+#define MSG_NO_CARD                         "Δεν βρέθηκε SD"
155
+#define MSG_DWELL                           "Αναστολή λειτουργίας"
156
+#define MSG_USERWAIT                        "Αναμονή για χρήστη"
157
+#define MSG_RESUMING                        "Συνεχίζεται η εκτύπωση" //SHORTEN
158
+#define MSG_PRINT_ABORTED                   "Διακόπτεται η εκτύπωση" //SHORTEN
159
+#define MSG_NO_MOVE                         "Καμία κίνηση."
160
+#define MSG_KILLED                          "ΤΕΡΜΑΤΙΣΜΟΣ. "
161
+#define MSG_STOPPED                         "ΔΙΑΚΟΠΗ. "
162
+#define MSG_CONTROL_RETRACT                 "Ανάσυρση μμ"
163
+#define MSG_CONTROL_RETRACT_SWAP            "Εναλλαγή ανάσυρσης μμ"  //SHORTEN
164
+#define MSG_CONTROL_RETRACTF                "Ανάσυρση V"
165
+#define MSG_CONTROL_RETRACT_ZLIFT           "Μεταπήδηση μμ"
166
+#define MSG_CONTROL_RETRACT_RECOVER         "UnRet +mm"
167
+#define MSG_CONTROL_RETRACT_RECOVER_SWAP    "S UnRet+mm"
168
+#define MSG_CONTROL_RETRACT_RECOVERF        "UnRet  V"
169
+#define MSG_AUTORETRACT                     "Αυτόματη ανάσυρση"
170
+#define MSG_FILAMENTCHANGE                  "Αλλαγή νήματος"
171
+#define MSG_INIT_SDCARD                     "Προετοιμασία κάρτας SD"  //SHORTEN
172
+#define MSG_CNG_SDCARD                      "Αλλαγή κάρτας SD"
173
+#define MSG_ZPROBE_OUT                      "Διερεύνηση Z εκτός Επ.Εκτύπωσης" //SHORTEN
174
+#define MSG_YX_UNHOMED                      "Επαναφορά Χ/Υ πριν από Ζ" //SHORTEN
175
+#define MSG_XYZ_UNHOMED                     "Επαναφορά ΧΥΖ πρώτα"
176
+#define MSG_ZPROBE_ZOFFSET                  "Μετατόπιση Ζ"
177
+#define MSG_BABYSTEP_X                      "Μικρό βήμα Χ"
178
+#define MSG_BABYSTEP_Y                      "Μικρό βήμα Υ"
179
+#define MSG_BABYSTEP_Z                      "Μικρό βήμα Ζ"
180
+#define MSG_ENDSTOP_ABORT                   "Ακύρωση endstop "
181
+#define MSG_HEATING_FAILED_LCD              "Ανεπιτυχής θέρμανση"
182
+#define MSG_ERR_REDUNDANT_TEMP              "ΠΛΕΟΝΑΖΟΥΣΑ ΘΕΡΜΟΤΗΤΑ"
183
+#define MSG_THERMAL_RUNAWAY                 "ΔΙΑΦΥΓΗ ΘΕΡΜΟΚΡΑΣΙΑΣ"
184
+#define MSG_ERR_MAXTEMP                     "ΠΕΡΙΤΗ ΘΕΡΜΟΚΡΑΣΙΑ"
185
+#define MSG_ERR_MINTEMP                     "ΜΗ ΕΠΑΡΚΗΣ ΘΕΡΜΟΚΡΑΣΙΑΣ" //SHORTEN
186
+#define MSG_ERR_MAXTEMP_BED                 "ΜΕΓΙΣΤΗ ΘΕΡΜΟΚΡΑΣΙΑΣ ΕΠ. ΕΚΤΥΠΩΣΗΣ" //SHORTEN
187
+#define MSG_ERR_MINTEMP_BED                 "ΕΛΑΧΙΣΤΗ ΘΕΡΜΟΚΡΑΣΙΑΣ ΕΠ. ΕΚΤΥΠΩΣΗΣ" //SHORTEN
188
+#define MSG_HALTED                          "H εκτύπωση διακόπηκε"
189
+#define MSG_PLEASE_RESET                    "PLEASE RESET" //TRANSLATE
190
+#define MSG_HEATING                         "Θερμαίνεται…"
191
+#define MSG_HEATING_COMPLETE                "Η θέρμανση ολοκληρώθηκε." //SHORTEN
192
+#define MSG_BED_HEATING                     "Θέρμανση ΕΠ. Εκτύπωσης" //SHORTEN
193
+#define MSG_BED_DONE                        "Η Επ. Εκτύπωσης ολοκληρώθηκε" //SHORTEN
194
+#define MSG_DELTA_CALIBRATE                 "Βαθμονόμηση Delta"
195
+#define MSG_DELTA_CALIBRATE_X               "Βαθμονόμηση X"
196
+#define MSG_DELTA_CALIBRATE_Y               "Βαθμονόμηση Y"
197
+#define MSG_DELTA_CALIBRATE_Z               "Βαθμονόμηση Z"
198
+#define MSG_DELTA_CALIBRATE_CENTER          "Βαθμονόμηση κέντρου"
199
+
200
+#define MSG_INFO_MENU                       "About Printer"
201
+#define MSG_INFO_PRINTER_MENU               "Printer Info"
202
+#define MSG_INFO_STATS_MENU                 "Printer Stats"
203
+#define MSG_INFO_BOARD_MENU                 "Board Info"
204
+#define MSG_INFO_THERMISTOR_MENU            "Thermistors"
205
+#define MSG_INFO_EXTRUDERS                  "Extruders"
206
+#define MSG_INFO_BAUDRATE                   "Baud"
207
+#define MSG_INFO_PROTOCOL                   "Protocol"
208
+
209
+#if LCD_WIDTH > 19
210
+  #define MSG_INFO_PRINT_COUNT              "Print Count"
211
+  #define MSG_INFO_COMPLETED_PRINTS         "Completed  "
212
+  #define MSG_INFO_PRINT_TIME               "Total Time "
213
+#else
214
+  #define MSG_INFO_PRINT_COUNT              "Prints   "
215
+  #define MSG_INFO_COMPLETED_PRINTS         "Completed"
216
+  #define MSG_INFO_PRINT_TIME               "Duration "
217
+#endif
218
+#define MSG_INFO_MIN_TEMP                   "Min Temp"
219
+#define MSG_INFO_MAX_TEMP                   "Max Temp"
220
+#define MSG_INFO_PSU                        "Power Supply"
221
+
222
+#define MSG_FILAMENT_CHANGE_HEADER          "CHANGE FILAMENT"
223
+#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE  "Extrude more"
224
+#define MSG_FILAMENT_CHANGE_OPTION_RESUME   "Resume print"
225
+
226
+#if LCD_HEIGHT >= 4
227
+  #define MSG_FILAMENT_CHANGE_INIT_1        "Wait for start"
228
+  #define MSG_FILAMENT_CHANGE_INIT_2        "of the filament"
229
+  #define MSG_FILAMENT_CHANGE_INIT_3        "change"
230
+  #define MSG_FILAMENT_CHANGE_UNLOAD_1      "Wait for"
231
+  #define MSG_FILAMENT_CHANGE_UNLOAD_2      "filament unload"
232
+  #define MSG_FILAMENT_CHANGE_UNLOAD_3      ""
233
+  #define MSG_FILAMENT_CHANGE_INSERT_1      "Insert filament"
234
+  #define MSG_FILAMENT_CHANGE_INSERT_2      "and press button"
235
+  #define MSG_FILAMENT_CHANGE_INSERT_3      "to continue..."
236
+  #define MSG_FILAMENT_CHANGE_LOAD_1        "Wait for"
237
+  #define MSG_FILAMENT_CHANGE_LOAD_2        "filament load"
238
+  #define MSG_FILAMENT_CHANGE_LOAD_3        ""
239
+  #define MSG_FILAMENT_CHANGE_EXTRUDE_1     "Wait for"
240
+  #define MSG_FILAMENT_CHANGE_EXTRUDE_2     "filament extrude"
241
+  #define MSG_FILAMENT_CHANGE_EXTRUDE_3     ""
242
+  #define MSG_FILAMENT_CHANGE_RESUME_1      "Wait for print"
243
+  #define MSG_FILAMENT_CHANGE_RESUME_2      "to resume"
244
+  #define MSG_FILAMENT_CHANGE_RESUME_3      ""
245
+#else // LCD_HEIGHT < 4
246
+  #define MSG_FILAMENT_CHANGE_INIT_1        "Please wait..."
247
+  #define MSG_FILAMENT_CHANGE_UNLOAD_1      "Ejecting..."
248
+  #define MSG_FILAMENT_CHANGE_INSERT_1      "Insert and Click"
249
+  #define MSG_FILAMENT_CHANGE_LOAD_1        "Loading..."
250
+  #define MSG_FILAMENT_CHANGE_EXTRUDE_1     "Extruding..."
251
+  #define MSG_FILAMENT_CHANGE_RESUME_1      "Resuming..."
252
+#endif
253
+
254
+#endif // LANGUAGE_EL_H

+ 198
- 34
Marlin/language_en.h Parādīt failu

@@ -30,16 +30,11 @@
30 30
 #ifndef LANGUAGE_EN_H
31 31
 #define LANGUAGE_EN_H
32 32
 
33
-#if DISABLED(MAPPER_NON) && DISABLED(MAPPER_C2C3) && DISABLED(MAPPER_D0D1) && DISABLED(MAPPER_D0D1_MOD) && DISABLED(MAPPER_E382E383)
34
-  #define MAPPER_NON         // For direct ascii codes
35
-#endif
36
-
37 33
 //#define SIMULATE_ROMFONT //Comment in to see what is seen on the character based displays
38
-#if DISABLED(SIMULATE_ROMFONT) && DISABLED(DISPLAY_CHARSET_ISO10646_1) && DISABLED(DISPLAY_CHARSET_ISO10646_5) && DISABLED(DISPLAY_CHARSET_ISO10646_KANA) && DISABLED(DISPLAY_CHARSET_ISO10646_CN)
34
+#if DISABLED(SIMULATE_ROMFONT) && DISABLED(DISPLAY_CHARSET_ISO10646_1) && DISABLED(DISPLAY_CHARSET_ISO10646_5) && DISABLED(DISPLAY_CHARSET_ISO10646_KANA) && DISABLED(DISPLAY_CHARSET_ISO10646_GREEK) && DISABLED(DISPLAY_CHARSET_ISO10646_CN)
39 35
   #define DISPLAY_CHARSET_ISO10646_1 // use the better font on full graphic displays.
40 36
 #endif
41 37
 
42
-
43 38
 #ifndef WELCOME_MSG
44 39
   #define WELCOME_MSG                         MACHINE_NAME " ready."
45 40
 #endif
@@ -97,35 +92,35 @@
97 92
 #ifndef MSG_SET_ORIGIN
98 93
   #define MSG_SET_ORIGIN                      "Set origin"
99 94
 #endif
100
-#ifndef MSG_PREHEAT_PLA
101
-  #define MSG_PREHEAT_PLA                     "Preheat PLA"
95
+#ifndef MSG_PREHEAT_1
96
+  #define MSG_PREHEAT_1                       "Preheat PLA"
102 97
 #endif
103
-#ifndef MSG_PREHEAT_PLA_N
104
-  #define MSG_PREHEAT_PLA_N                   MSG_PREHEAT_PLA " "
98
+#ifndef MSG_PREHEAT_1_N
99
+  #define MSG_PREHEAT_1_N                     MSG_PREHEAT_1 " "
105 100
 #endif
106
-#ifndef MSG_PREHEAT_PLA_ALL
107
-  #define MSG_PREHEAT_PLA_ALL                 MSG_PREHEAT_PLA " All"
101
+#ifndef MSG_PREHEAT_1_ALL
102
+  #define MSG_PREHEAT_1_ALL                   MSG_PREHEAT_1 " All"
108 103
 #endif
109
-#ifndef MSG_PREHEAT_PLA_BEDONLY
110
-  #define MSG_PREHEAT_PLA_BEDONLY             MSG_PREHEAT_PLA " Bed"
104
+#ifndef MSG_PREHEAT_1_BEDONLY
105
+  #define MSG_PREHEAT_1_BEDONLY               MSG_PREHEAT_1 " Bed"
111 106
 #endif
112
-#ifndef MSG_PREHEAT_PLA_SETTINGS
113
-  #define MSG_PREHEAT_PLA_SETTINGS            MSG_PREHEAT_PLA " conf"
107
+#ifndef MSG_PREHEAT_1_SETTINGS
108
+  #define MSG_PREHEAT_1_SETTINGS              MSG_PREHEAT_1 " conf"
114 109
 #endif
115
-#ifndef MSG_PREHEAT_ABS
116
-  #define MSG_PREHEAT_ABS                     "Preheat ABS"
110
+#ifndef MSG_PREHEAT_2
111
+  #define MSG_PREHEAT_2                       "Preheat ABS"
117 112
 #endif
118
-#ifndef MSG_PREHEAT_ABS_N
119
-  #define MSG_PREHEAT_ABS_N                   MSG_PREHEAT_ABS " "
113
+#ifndef MSG_PREHEAT_2_N
114
+  #define MSG_PREHEAT_2_N                     MSG_PREHEAT_2 " "
120 115
 #endif
121
-#ifndef MSG_PREHEAT_ABS_ALL
122
-  #define MSG_PREHEAT_ABS_ALL                 MSG_PREHEAT_ABS " All"
116
+#ifndef MSG_PREHEAT_2_ALL
117
+  #define MSG_PREHEAT_2_ALL                   MSG_PREHEAT_2 " All"
123 118
 #endif
124
-#ifndef MSG_PREHEAT_ABS_BEDONLY
125
-  #define MSG_PREHEAT_ABS_BEDONLY             MSG_PREHEAT_ABS " Bed"
119
+#ifndef MSG_PREHEAT_2_BEDONLY
120
+  #define MSG_PREHEAT_2_BEDONLY               MSG_PREHEAT_2 " Bed"
126 121
 #endif
127
-#ifndef MSG_PREHEAT_ABS_SETTINGS
128
-  #define MSG_PREHEAT_ABS_SETTINGS            MSG_PREHEAT_ABS " conf"
122
+#ifndef MSG_PREHEAT_2_SETTINGS
123
+  #define MSG_PREHEAT_2_SETTINGS              MSG_PREHEAT_2 " conf"
129 124
 #endif
130 125
 #ifndef MSG_H1
131 126
   #define MSG_H1                              "1"
@@ -256,6 +251,9 @@
256 251
 #ifndef MSG_PID_C
257 252
   #define MSG_PID_C                           "PID-C"
258 253
 #endif
254
+#ifndef MSG_SELECT
255
+  #define MSG_SELECT                          "Select"
256
+#endif
259 257
 #ifndef MSG_E1
260 258
   #define MSG_E1                              " E1"
261 259
 #endif
@@ -445,11 +443,11 @@
445 443
 #ifndef MSG_ZPROBE_OUT
446 444
   #define MSG_ZPROBE_OUT                      "Z probe out. bed"
447 445
 #endif
448
-#ifndef MSG_YX_UNHOMED
449
-  #define MSG_YX_UNHOMED                      "Home X/Y before Z"
446
+#ifndef MSG_HOME
447
+  #define MSG_HOME                            "Home"  // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST
450 448
 #endif
451
-#ifndef MSG_XYZ_UNHOMED
452
-  #define MSG_XYZ_UNHOMED                     "Home XYZ first"
449
+#ifndef MSG_FIRST
450
+  #define MSG_FIRST                           "first"
453 451
 #endif
454 452
 #ifndef MSG_ZPROBE_ZOFFSET
455 453
   #define MSG_ZPROBE_ZOFFSET                  "Z Offset"
@@ -487,11 +485,20 @@
487 485
 #ifndef MSG_ERR_MINTEMP_BED
488 486
   #define MSG_ERR_MINTEMP_BED                 "Err: MINTEMP BED"
489 487
 #endif
490
-#ifndef MSG_END_HOUR
491
-  #define MSG_END_HOUR                        "hours"
488
+#ifndef MSG_HALTED
489
+  #define MSG_HALTED                          "PRINTER HALTED"
490
+#endif
491
+#ifndef MSG_PLEASE_RESET
492
+  #define MSG_PLEASE_RESET                    "Please reset"
493
+#endif
494
+#ifndef MSG_SHORT_DAY
495
+  #define MSG_SHORT_DAY                       "d" // One character only
492 496
 #endif
493
-#ifndef MSG_END_MINUTE
494
-  #define MSG_END_MINUTE                      "minutes"
497
+#ifndef MSG_SHORT_HOUR
498
+  #define MSG_SHORT_HOUR                      "h" // One character only
499
+#endif
500
+#ifndef MSG_SHORT_MINUTE
501
+  #define MSG_SHORT_MINUTE                    "m" // One character only
495 502
 #endif
496 503
 #ifndef MSG_HEATING
497 504
   #define MSG_HEATING                         "Heating..."
@@ -521,4 +528,161 @@
521 528
   #define MSG_DELTA_CALIBRATE_CENTER          "Calibrate Center"
522 529
 #endif
523 530
 
531
+#ifndef MSG_INFO_MENU
532
+  #define MSG_INFO_MENU                       "About Printer"
533
+#endif
534
+#ifndef MSG_INFO_PRINTER_MENU
535
+  #define MSG_INFO_PRINTER_MENU               "Printer Info"
536
+#endif
537
+#ifndef MSG_INFO_STATS_MENU
538
+  #define MSG_INFO_STATS_MENU                 "Printer Stats"
539
+#endif
540
+#ifndef MSG_INFO_BOARD_MENU
541
+  #define MSG_INFO_BOARD_MENU                 "Board Info"
542
+#endif
543
+#ifndef MSG_INFO_THERMISTOR_MENU
544
+  #define MSG_INFO_THERMISTOR_MENU            "Thermistors"
545
+#endif
546
+#ifndef MSG_INFO_EXTRUDERS
547
+  #define MSG_INFO_EXTRUDERS                  "Extruders"
548
+#endif
549
+#ifndef MSG_INFO_BAUDRATE
550
+  #define MSG_INFO_BAUDRATE                   "Baud"
551
+#endif
552
+#ifndef MSG_INFO_PROTOCOL
553
+  #define MSG_INFO_PROTOCOL                   "Protocol"
554
+#endif
555
+
556
+#if LCD_WIDTH > 19
557
+  #ifndef MSG_INFO_PRINT_COUNT
558
+    #define MSG_INFO_PRINT_COUNT              "Print Count"
559
+  #endif
560
+  #ifndef MSG_INFO_COMPLETED_PRINTS
561
+    #define MSG_INFO_COMPLETED_PRINTS         "Completed"
562
+  #endif
563
+  #ifndef MSG_INFO_PRINT_TIME
564
+    #define MSG_INFO_PRINT_TIME               "Total print time"
565
+  #endif
566
+  #ifndef MSG_INFO_PRINT_LONGEST
567
+    #define MSG_INFO_PRINT_LONGEST            "Longest job time"
568
+  #endif
569
+  #ifndef MSG_INFO_PRINT_FILAMENT
570
+    #define MSG_INFO_PRINT_FILAMENT           "Extruded total"
571
+  #endif
572
+#else
573
+  #ifndef MSG_INFO_PRINT_COUNT
574
+    #define MSG_INFO_PRINT_COUNT              "Prints"
575
+  #endif
576
+  #ifndef MSG_INFO_COMPLETED_PRINTS
577
+    #define MSG_INFO_COMPLETED_PRINTS         "Completed"
578
+  #endif
579
+  #ifndef MSG_INFO_PRINT_TIME
580
+    #define MSG_INFO_PRINT_TIME               "Total"
581
+  #endif
582
+  #ifndef MSG_INFO_PRINT_LONGEST
583
+    #define MSG_INFO_PRINT_LONGEST            "Longest"
584
+  #endif
585
+  #ifndef MSG_INFO_PRINT_FILAMENT
586
+    #define MSG_INFO_PRINT_FILAMENT           "Extruded"
587
+  #endif
588
+#endif
589
+
590
+#ifndef MSG_INFO_MIN_TEMP
591
+  #define MSG_INFO_MIN_TEMP                   "Min Temp"
592
+#endif
593
+#ifndef MSG_INFO_MAX_TEMP
594
+  #define MSG_INFO_MAX_TEMP                   "Max Temp"
595
+#endif
596
+#ifndef MSG_INFO_PSU
597
+  #define MSG_INFO_PSU                        "Power Supply"
598
+#endif
599
+
600
+#ifndef MSG_FILAMENT_CHANGE_HEADER
601
+  #define MSG_FILAMENT_CHANGE_HEADER          "CHANGE FILAMENT"
602
+#endif
603
+#ifndef MSG_FILAMENT_CHANGE_OPTION_HEADER
604
+  #define MSG_FILAMENT_CHANGE_OPTION_HEADER   "CHANGE OPTIONS:"
605
+#endif
606
+#ifndef MSG_FILAMENT_CHANGE_OPTION_EXTRUDE
607
+  #define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE  "Extrude more"
608
+#endif
609
+#ifndef MSG_FILAMENT_CHANGE_OPTION_RESUME
610
+  #define MSG_FILAMENT_CHANGE_OPTION_RESUME   "Resume print"
611
+#endif
612
+#if LCD_HEIGHT >= 4
613
+  #ifndef MSG_FILAMENT_CHANGE_INIT_1
614
+    #define MSG_FILAMENT_CHANGE_INIT_1          "Wait for start"
615
+  #endif
616
+  #ifndef MSG_FILAMENT_CHANGE_INIT_2
617
+    #define MSG_FILAMENT_CHANGE_INIT_2          "of the filament"
618
+  #endif
619
+  #ifndef MSG_FILAMENT_CHANGE_INIT_3
620
+    #define MSG_FILAMENT_CHANGE_INIT_3          "change"
621
+  #endif
622
+  #ifndef MSG_FILAMENT_CHANGE_UNLOAD_1
623
+    #define MSG_FILAMENT_CHANGE_UNLOAD_1        "Wait for"
624
+  #endif
625
+  #ifndef MSG_FILAMENT_CHANGE_UNLOAD_2
626
+    #define MSG_FILAMENT_CHANGE_UNLOAD_2        "filament unload"
627
+  #endif
628
+  #ifndef MSG_FILAMENT_CHANGE_UNLOAD_3
629
+    #define MSG_FILAMENT_CHANGE_UNLOAD_3        ""
630
+  #endif
631
+  #ifndef MSG_FILAMENT_CHANGE_INSERT_1
632
+    #define MSG_FILAMENT_CHANGE_INSERT_1        "Insert filament"
633
+  #endif
634
+  #ifndef MSG_FILAMENT_CHANGE_INSERT_2
635
+    #define MSG_FILAMENT_CHANGE_INSERT_2        "and press button"
636
+  #endif
637
+  #ifndef MSG_FILAMENT_CHANGE_INSERT_3
638
+    #define MSG_FILAMENT_CHANGE_INSERT_3        "to continue..."
639
+  #endif
640
+  #ifndef MSG_FILAMENT_CHANGE_LOAD_1
641
+    #define MSG_FILAMENT_CHANGE_LOAD_1          "Wait for"
642
+  #endif
643
+  #ifndef MSG_FILAMENT_CHANGE_LOAD_2
644
+    #define MSG_FILAMENT_CHANGE_LOAD_2          "filament load"
645
+  #endif
646
+  #ifndef MSG_FILAMENT_CHANGE_LOAD_3
647
+    #define MSG_FILAMENT_CHANGE_LOAD_3          ""
648
+  #endif
649
+  #ifndef MSG_FILAMENT_CHANGE_EXTRUDE_1
650
+    #define MSG_FILAMENT_CHANGE_EXTRUDE_1       "Wait for"
651
+  #endif
652
+  #ifndef MSG_FILAMENT_CHANGE_EXTRUDE_2
653
+    #define MSG_FILAMENT_CHANGE_EXTRUDE_2       "filament extrude"
654
+  #endif
655
+  #ifndef MSG_FILAMENT_CHANGE_EXTRUDE_3
656
+    #define MSG_FILAMENT_CHANGE_EXTRUDE_3       ""
657
+  #endif
658
+  #ifndef MSG_FILAMENT_CHANGE_RESUME_1
659
+    #define MSG_FILAMENT_CHANGE_RESUME_1        "Wait for print"
660
+  #endif
661
+  #ifndef MSG_FILAMENT_CHANGE_RESUME_2
662
+    #define MSG_FILAMENT_CHANGE_RESUME_2        "to resume"
663
+  #endif
664
+  #ifndef MSG_FILAMENT_CHANGE_RESUME_3
665
+    #define MSG_FILAMENT_CHANGE_RESUME_3        ""
666
+  #endif
667
+#else // LCD_HEIGHT < 4
668
+  #ifndef MSG_FILAMENT_CHANGE_INIT_1
669
+    #define MSG_FILAMENT_CHANGE_INIT_1          "Please wait..."
670
+  #endif
671
+  #ifndef MSG_FILAMENT_CHANGE_UNLOAD_1
672
+    #define MSG_FILAMENT_CHANGE_UNLOAD_1        "Ejecting..."
673
+  #endif
674
+  #ifndef MSG_FILAMENT_CHANGE_INSERT_1
675
+    #define MSG_FILAMENT_CHANGE_INSERT_1        "Insert and Click"
676
+  #endif
677
+  #ifndef MSG_FILAMENT_CHANGE_LOAD_1
678
+    #define MSG_FILAMENT_CHANGE_LOAD_1          "Loading..."
679
+  #endif
680
+  #ifndef MSG_FILAMENT_CHANGE_EXTRUDE_1
681
+    #define MSG_FILAMENT_CHANGE_EXTRUDE_1       "Extruding..."
682
+  #endif
683
+  #ifndef MSG_FILAMENT_CHANGE_RESUME_1
684
+    #define MSG_FILAMENT_CHANGE_RESUME_1        "Resuming..."
685
+  #endif
686
+#endif // LCD_HEIGHT < 4
687
+
524 688
 #endif // LANGUAGE_EN_H

+ 42
- 21
Marlin/language_es.h Parādīt failu

@@ -30,7 +30,6 @@
30 30
 #ifndef LANGUAGE_ES_H
31 31
 #define LANGUAGE_ES_H
32 32
 
33
-#define MAPPER_NON
34 33
 // Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h
35 34
 //#define SIMULATE_ROMFONT
36 35
 #define DISPLAY_CHARSET_ISO10646_1
@@ -38,27 +37,35 @@
38 37
 #define WELCOME_MSG                         MACHINE_NAME " lista."
39 38
 #define MSG_SD_INSERTED                     "Tarjeta colocada"
40 39
 #define MSG_SD_REMOVED                      "Tarjeta retirada"
40
+#define MSG_LCD_ENDSTOPS                    "Endstops" // Max length 8 characters
41 41
 #define MSG_MAIN                            "Menu principal"
42 42
 #define MSG_AUTOSTART                       "Inicio automatico"
43 43
 #define MSG_DISABLE_STEPPERS                "Apagar motores"
44 44
 #define MSG_AUTO_HOME                       "Llevar al origen"
45
+#define MSG_AUTO_HOME_X                     "Origen X"
46
+#define MSG_AUTO_HOME_Y                     "Origen Y"
47
+#define MSG_AUTO_HOME_Z                     "Origen Z"
45 48
 #define MSG_LEVEL_BED_HOMING                "Origen XYZ"
46
-#define MSG_LEVEL_BED_WAITING               "Click to Begin"
47
-#define MSG_LEVEL_BED_DONE                  "Leveling Done!"
48
-#define MSG_LEVEL_BED_CANCEL                "Cancel"
49
+#define MSG_LEVEL_BED_WAITING               "Presione para iniciar"
50
+#define MSG_LEVEL_BED_DONE                  "Nivelacion lista!"
51
+#define MSG_LEVEL_BED_CANCEL                "Cancelar"
49 52
 #define MSG_SET_HOME_OFFSETS                "Ajustar desfases"
50
-#define MSG_HOME_OFFSETS_APPLIED            "Offsets applied"
53
+#define MSG_HOME_OFFSETS_APPLIED            "Desfase aplicado"
51 54
 #define MSG_SET_ORIGIN                      "Establecer origen"
52
-#define MSG_PREHEAT_PLA                     "Precalentar PLA"
53
-#define MSG_PREHEAT_PLA_N                   MSG_PREHEAT_PLA " "
54
-#define MSG_PREHEAT_PLA_ALL                 MSG_PREHEAT_PLA "Todo"
55
-#define MSG_PREHEAT_PLA_BEDONLY             MSG_PREHEAT_PLA"Plataforma"
56
-#define MSG_PREHEAT_PLA_SETTINGS            MSG_PREHEAT_PLA "Config"
57
-#define MSG_PREHEAT_ABS                     "Precalentar ABS"
58
-#define MSG_PREHEAT_ABS_N                   MSG_PREHEAT_ABS " "
59
-#define MSG_PREHEAT_ABS_ALL                 MSG_PREHEAT_ABS "Todo"
60
-#define MSG_PREHEAT_ABS_BEDONLY             MSG_PREHEAT_ABS "Plataforma"
61
-#define MSG_PREHEAT_ABS_SETTINGS            MSG_PREHEAT_ABS "Config"
55
+#define MSG_PREHEAT_1                       "Precalentar PLA"
56
+#define MSG_PREHEAT_1_N                     MSG_PREHEAT_1 " "
57
+#define MSG_PREHEAT_1_ALL                   MSG_PREHEAT_1 "Todo"
58
+#define MSG_PREHEAT_1_BEDONLY               MSG_PREHEAT_1"Plataforma"
59
+#define MSG_PREHEAT_1_SETTINGS              MSG_PREHEAT_1 "Config"
60
+#define MSG_PREHEAT_2                       "Precalentar ABS"
61
+#define MSG_PREHEAT_2_N                     MSG_PREHEAT_2 " "
62
+#define MSG_PREHEAT_2_ALL                   MSG_PREHEAT_2 "Todo"
63
+#define MSG_PREHEAT_2_BEDONLY               MSG_PREHEAT_2 "Plataforma"
64
+#define MSG_PREHEAT_2_SETTINGS              MSG_PREHEAT_2 "Config"
65
+#define MSG_H1                              "1"
66
+#define MSG_H2                              "2"
67
+#define MSG_H3                              "3"
68
+#define MSG_H4                              "4"
62 69
 #define MSG_COOLDOWN                        "Enfriar"
63 70
 #define MSG_SWITCH_PS_ON                    "Encender"
64 71
 #define MSG_SWITCH_PS_OFF                   "Apagar"
@@ -70,12 +77,20 @@
70 77
 #define MSG_MOVE_Y                          "Mover Y"
71 78
 #define MSG_MOVE_Z                          "Mover Z"
72 79
 #define MSG_MOVE_E                          "Extrusor"
80
+#define MSG_MOVE_E1                         "1"
81
+#define MSG_MOVE_E2                         "2"
82
+#define MSG_MOVE_E3                         "3"
83
+#define MSG_MOVE_E4                         "4"
73 84
 #define MSG_MOVE_01MM                       "Mover 0.1mm"
74 85
 #define MSG_MOVE_1MM                        "Mover 1mm"
75 86
 #define MSG_MOVE_10MM                       "Mover 10mm"
76 87
 #define MSG_SPEED                           "Velocidad"
77 88
 #define MSG_BED_Z                           "Plataforma Z"
78 89
 #define MSG_NOZZLE                          "Boquilla"
90
+#define MSG_N1                              " 1"
91
+#define MSG_N2                              " 2"
92
+#define MSG_N3                              " 3"
93
+#define MSG_N4                              " 4"
79 94
 #define MSG_BED                             "Plataforma"
80 95
 #define MSG_FAN_SPEED                       "Ventilador"
81 96
 #define MSG_FLOW                            "Flujo"
@@ -90,6 +105,10 @@
90 105
 #define MSG_PID_I                           "PID-I"
91 106
 #define MSG_PID_D                           "PID-D"
92 107
 #define MSG_PID_C                           "PID-C"
108
+#define MSG_E1                              " E1"
109
+#define MSG_E2                              " E2"
110
+#define MSG_E3                              " E3"
111
+#define MSG_E4                              " E4"
93 112
 #define MSG_ACC                             "Aceleracion"
94 113
 #define MSG_VXY_JERK                        "Vxy-jerk"
95 114
 #define MSG_VZ_JERK                         "Vz-jerk"
@@ -113,12 +132,16 @@
113 132
 #define MSG_VOLUMETRIC                      "Filamento"
114 133
 #define MSG_VOLUMETRIC_ENABLED              "E in mm3"
115 134
 #define MSG_FILAMENT_DIAM                   "Fil. Dia."
135
+#define MSG_DIAM_E1                         " 1"
136
+#define MSG_DIAM_E2                         " 2"
137
+#define MSG_DIAM_E3                         " 3"
138
+#define MSG_DIAM_E4                         " 4"
116 139
 #define MSG_CONTRAST                        "Contraste"
117 140
 #define MSG_STORE_EPROM                     "Guardar memoria"
118 141
 #define MSG_LOAD_EPROM                      "Cargar memoria"
119 142
 #define MSG_RESTORE_FAILSAFE                "Restaurar memoria."
120 143
 #define MSG_REFRESH                         "Volver a cargar"
121
-#define MSG_WATCH                           "Monitorizar"
144
+#define MSG_WATCH                           "Informacion"
122 145
 #define MSG_PREPARE                         "Preparar"
123 146
 #define MSG_TUNE                            "Ajustar"
124 147
 #define MSG_PAUSE_PRINT                     "Pausar impresion"
@@ -145,12 +168,13 @@
145 168
 #define MSG_INIT_SDCARD                     "Iniciando tarjeta"
146 169
 #define MSG_CNG_SDCARD                      "Cambiar tarjeta"
147 170
 #define MSG_ZPROBE_OUT                      "Sonda Z fuera"
148
-#define MSG_YX_UNHOMED                      "Reiniciar X/Y y Z"
171
+#define MSG_HOME                            "Home"  // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST
172
+#define MSG_FIRST                           "first"
149 173
 #define MSG_ZPROBE_ZOFFSET                  "Desfase Z"
150 174
 #define MSG_BABYSTEP_X                      "Micropaso X"
151 175
 #define MSG_BABYSTEP_Y                      "Micropaso Y"
152 176
 #define MSG_BABYSTEP_Z                      "Micropaso Z"
153
-#define MSG_ENDSTOP_ABORT                   "Endstop abort"
177
+#define MSG_ENDSTOP_ABORT                   "Cancelado - Endstop"
154 178
 #define MSG_HEATING_FAILED_LCD              "Error: al calentar"
155 179
 #define MSG_ERR_REDUNDANT_TEMP              "Error: temperatura redundante"
156 180
 #define MSG_THERMAL_RUNAWAY                 "Error de temperatura"
@@ -158,13 +182,10 @@
158 182
 #define MSG_ERR_MINTEMP                     "Error: Temp Minima"
159 183
 #define MSG_ERR_MAXTEMP_BED                 "Error: Temp Max Plataforma"
160 184
 #define MSG_ERR_MINTEMP_BED                 "Error: Temp Min Plataforma"
161
-#define MSG_END_HOUR                        "horas"
162
-#define MSG_END_MINUTE                      "minutos"
163 185
 #define MSG_HEATING                         "Calentando..."
164 186
 #define MSG_HEATING_COMPLETE                "Calentamiento Completo"
165 187
 #define MSG_BED_HEATING                     "Calentando plataforma ..."
166 188
 #define MSG_BED_DONE                        "Plataforma Caliente"
167
-
168 189
 #define MSG_DELTA_CALIBRATE                 "Calibracion Delta"
169 190
 #define MSG_DELTA_CALIBRATE_X               "Calibrar X"
170 191
 #define MSG_DELTA_CALIBRATE_Y               "Calibrar Y"

+ 12
- 15
Marlin/language_eu.h Parādīt failu

@@ -30,7 +30,6 @@
30 30
 #ifndef LANGUAGE_EU_H
31 31
 #define LANGUAGE_EU_H
32 32
 
33
-#define MAPPER_NON
34 33
 // Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h
35 34
 //#define SIMULATE_ROMFONT
36 35
 #define DISPLAY_CHARSET_ISO10646_1
@@ -49,16 +48,16 @@
49 48
 #define MSG_SET_HOME_OFFSETS                "Set home offsets"
50 49
 #define MSG_HOME_OFFSETS_APPLIED            "Offsets applied"
51 50
 #define MSG_SET_ORIGIN                      "Hasiera ipini"
52
-#define MSG_PREHEAT_PLA                     "Aurreberotu PLA"
53
-#define MSG_PREHEAT_PLA_N                   "Aurreberotu PLA "
54
-#define MSG_PREHEAT_PLA_ALL                 "Berotu PLA Guztia"
55
-#define MSG_PREHEAT_PLA_BEDONLY             "Berotu PLA Ohea"
56
-#define MSG_PREHEAT_PLA_SETTINGS            "Berotu PLA Konfig"
57
-#define MSG_PREHEAT_ABS                     "Aurreberotu ABS"
58
-#define MSG_PREHEAT_ABS_N                   "Aurreberotu ABS "
59
-#define MSG_PREHEAT_ABS_ALL                 "Berotu ABS Guztia"
60
-#define MSG_PREHEAT_ABS_BEDONLY             "Berotu ABS Ohea"
61
-#define MSG_PREHEAT_ABS_SETTINGS            "Berotu ABS Konfig"
51
+#define MSG_PREHEAT_1                       "Aurreberotu PLA"
52
+#define MSG_PREHEAT_1_N                     "Aurreberotu PLA "
53
+#define MSG_PREHEAT_1_ALL                   "Berotu PLA Guztia"
54
+#define MSG_PREHEAT_1_BEDONLY               "Berotu PLA Ohea"
55
+#define MSG_PREHEAT_1_SETTINGS              "Berotu PLA Konfig"
56
+#define MSG_PREHEAT_2                       "Aurreberotu ABS"
57
+#define MSG_PREHEAT_2_N                     "Aurreberotu ABS "
58
+#define MSG_PREHEAT_2_ALL                   "Berotu ABS Guztia"
59
+#define MSG_PREHEAT_2_BEDONLY               "Berotu ABS Ohea"
60
+#define MSG_PREHEAT_2_SETTINGS              "Berotu ABS Konfig"
62 61
 #define MSG_COOLDOWN                        "Hoztu"
63 62
 #define MSG_SWITCH_PS_ON                    "Energia piztu"
64 63
 #define MSG_SWITCH_PS_OFF                   "Energia itzali"
@@ -142,15 +141,13 @@
142 141
 #define MSG_INIT_SDCARD                     "Hasieratu txartela"
143 142
 #define MSG_CNG_SDCARD                      "Aldatu txartela"
144 143
 #define MSG_ZPROBE_OUT                      "Z ohe hasiera"
145
-#define MSG_YX_UNHOMED                      "Posizio ezezaguna"
144
+#define MSG_HOME                            "Home"  // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST
145
+#define MSG_FIRST                           "first"
146 146
 #define MSG_ZPROBE_ZOFFSET                  "Z konpentsatu"
147 147
 #define MSG_BABYSTEP_X                      "Babystep X"
148 148
 #define MSG_BABYSTEP_Y                      "Babystep Y"
149 149
 #define MSG_BABYSTEP_Z                      "Babystep Z"
150 150
 #define MSG_ENDSTOP_ABORT                   "Endstop deuseztat"
151
-#define MSG_END_HOUR                        "hours"
152
-#define MSG_END_MINUTE                      "minutes"
153
-
154 151
 #define MSG_DELTA_CALIBRATE                 "Delta Calibration"
155 152
 #define MSG_DELTA_CALIBRATE_X               "Calibrate X"
156 153
 #define MSG_DELTA_CALIBRATE_Y               "Calibrate Y"

+ 12
- 14
Marlin/language_fi.h Parādīt failu

@@ -49,16 +49,16 @@
49 49
 #define MSG_SET_HOME_OFFSETS                "Set home offsets"
50 50
 #define MSG_HOME_OFFSETS_APPLIED            "Offsets applied"
51 51
 #define MSG_SET_ORIGIN                      "Aseta origo"
52
-#define MSG_PREHEAT_PLA                     "Esilämmitä PLA"
53
-#define MSG_PREHEAT_PLA_N                   "Esilämmitä PLA "
54
-#define MSG_PREHEAT_PLA_ALL                 "Esilä. PLA Kaikki"
55
-#define MSG_PREHEAT_PLA_BEDONLY             "Esilä. PLA Alusta"
56
-#define MSG_PREHEAT_PLA_SETTINGS            "Esilämm. PLA konf"
57
-#define MSG_PREHEAT_ABS                     "Esilämmitä ABS"
58
-#define MSG_PREHEAT_ABS_N                   "Esilämmitä ABS "
59
-#define MSG_PREHEAT_ABS_ALL                 "Esilä. ABS Kaikki"
60
-#define MSG_PREHEAT_ABS_BEDONLY             "Esilä. ABS Alusta"
61
-#define MSG_PREHEAT_ABS_SETTINGS            "Esilämm. ABS konf"
52
+#define MSG_PREHEAT_1                       "Esilämmitä PLA"
53
+#define MSG_PREHEAT_1_N                     "Esilämmitä PLA "
54
+#define MSG_PREHEAT_1_ALL                   "Esilä. PLA Kaikki"
55
+#define MSG_PREHEAT_1_BEDONLY               "Esilä. PLA Alusta"
56
+#define MSG_PREHEAT_1_SETTINGS              "Esilämm. PLA konf"
57
+#define MSG_PREHEAT_2                       "Esilämmitä ABS"
58
+#define MSG_PREHEAT_2_N                     "Esilämmitä ABS "
59
+#define MSG_PREHEAT_2_ALL                   "Esilä. ABS Kaikki"
60
+#define MSG_PREHEAT_2_BEDONLY               "Esilä. ABS Alusta"
61
+#define MSG_PREHEAT_2_SETTINGS              "Esilämm. ABS konf"
62 62
 #define MSG_COOLDOWN                        "Jäähdytä"
63 63
 #define MSG_SWITCH_PS_ON                    "Virta päälle"
64 64
 #define MSG_SWITCH_PS_OFF                   "Virta pois"
@@ -142,15 +142,13 @@
142 142
 #define MSG_INIT_SDCARD                     "Init. SD-Card"
143 143
 #define MSG_CNG_SDCARD                      "Change SD-Card"
144 144
 #define MSG_ZPROBE_OUT                      "Z probe out. bed"
145
-#define MSG_YX_UNHOMED                      "Home X/Y before Z"
145
+#define MSG_HOME                            "Home"  // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST
146
+#define MSG_FIRST                           "first"
146 147
 #define MSG_ZPROBE_ZOFFSET                  "Z Offset"
147 148
 #define MSG_BABYSTEP_X                      "Babystep X"
148 149
 #define MSG_BABYSTEP_Y                      "Babystep Y"
149 150
 #define MSG_BABYSTEP_Z                      "Babystep Z"
150 151
 #define MSG_ENDSTOP_ABORT                   "Endstop abort"
151
-#define MSG_END_HOUR                        "hours"
152
-#define MSG_END_MINUTE                      "minutes"
153
-
154 152
 #define MSG_DELTA_CALIBRATE                 "Delta Kalibrointi"
155 153
 #define MSG_DELTA_CALIBRATE_X               "Kalibroi X"
156 154
 #define MSG_DELTA_CALIBRATE_Y               "Kalibroi Y"

+ 12
- 15
Marlin/language_fr.h Parādīt failu

@@ -30,7 +30,6 @@
30 30
 #ifndef LANGUAGE_FR_H
31 31
 #define LANGUAGE_FR_H
32 32
 
33
-#define MAPPER_NON
34 33
 // Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h
35 34
 //#define SIMULATE_ROMFONT
36 35
 #define DISPLAY_CHARSET_ISO10646_1
@@ -49,16 +48,16 @@
49 48
 #define MSG_SET_HOME_OFFSETS                "Regler decal. origine"
50 49
 #define MSG_HOME_OFFSETS_APPLIED            "Decalages appliques"
51 50
 #define MSG_SET_ORIGIN                      "Regler origine"
52
-#define MSG_PREHEAT_PLA                     "Prechauffage PLA"
53
-#define MSG_PREHEAT_PLA_N                   "Prechauff. PLA "
54
-#define MSG_PREHEAT_PLA_ALL                 "Prech. PLA Tout"
55
-#define MSG_PREHEAT_PLA_BEDONLY             "Prech. PLA Plateau"
56
-#define MSG_PREHEAT_PLA_SETTINGS            "Regl. prech. PLA"
57
-#define MSG_PREHEAT_ABS                     "Prechauffage ABS"
58
-#define MSG_PREHEAT_ABS_N                   "Prechauff. ABS "
59
-#define MSG_PREHEAT_ABS_ALL                 "Prech. ABS Tout"
60
-#define MSG_PREHEAT_ABS_BEDONLY             "Prech. ABS Plateau"
61
-#define MSG_PREHEAT_ABS_SETTINGS            "Regl. prech. ABS"
51
+#define MSG_PREHEAT_1                       "Prechauffage PLA"
52
+#define MSG_PREHEAT_1_N                     "Prechauff. PLA "
53
+#define MSG_PREHEAT_1_ALL                   "Prech. PLA Tout"
54
+#define MSG_PREHEAT_1_BEDONLY               "Prech. PLA Plateau"
55
+#define MSG_PREHEAT_1_SETTINGS              "Regl. prech. PLA"
56
+#define MSG_PREHEAT_2                       "Prechauffage ABS"
57
+#define MSG_PREHEAT_2_N                     "Prechauff. ABS "
58
+#define MSG_PREHEAT_2_ALL                   "Prech. ABS Tout"
59
+#define MSG_PREHEAT_2_BEDONLY               "Prech. ABS Plateau"
60
+#define MSG_PREHEAT_2_SETTINGS              "Regl. prech. ABS"
62 61
 #define MSG_COOLDOWN                        "Refroidir"
63 62
 #define MSG_SWITCH_PS_ON                    "Allumer alim."
64 63
 #define MSG_SWITCH_PS_OFF                   "Eteindre alim."
@@ -145,7 +144,8 @@
145 144
 #define MSG_INIT_SDCARD                     "Init. la carte SD"
146 145
 #define MSG_CNG_SDCARD                      "Changer de carte"
147 146
 #define MSG_ZPROBE_OUT                      "Z sonde exte. lit"
148
-#define MSG_YX_UNHOMED                      "Rev. dans XY av.Z"
147
+#define MSG_HOME                            "Home"  // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST
148
+#define MSG_FIRST                           "first"
149 149
 #define MSG_ZPROBE_ZOFFSET                  "Decalage Z"
150 150
 #define MSG_BABYSTEP_X                      "Babystep X"
151 151
 #define MSG_BABYSTEP_Y                      "Babystep Y"
@@ -158,13 +158,10 @@
158 158
 #define MSG_ERR_MINTEMP                     "Err: TEMP. MIN"
159 159
 #define MSG_ERR_MAXTEMP_BED                 "Err: TEMP. MAX PLATEAU"
160 160
 #define MSG_ERR_MINTEMP_BED                 "Err: TEMP. MIN PLATEAU"
161
-#define MSG_END_HOUR                        "heures"
162
-#define MSG_END_MINUTE                      "minutes"
163 161
 #define MSG_HEATING                         "En chauffe..."
164 162
 #define MSG_HEATING_COMPLETE                "Chauffe terminee"
165 163
 #define MSG_BED_HEATING                     "Plateau en chauffe..."
166 164
 #define MSG_BED_DONE                        "Chauffe plateau terminee"
167
-
168 165
 #define MSG_DELTA_CALIBRATE                 "Calibration Delta"
169 166
 #define MSG_DELTA_CALIBRATE_X               "Calibrer X"
170 167
 #define MSG_DELTA_CALIBRATE_Y               "Calibrer Y"

+ 0
- 0
Marlin/language_gl.h Parādīt failu


Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels

Notiek ielāde…
Atcelt
Saglabāt