Просмотр исходного кода

Merge pull request #1 from MarlinFirmware/RCBugFix

Update August
Rafa Couto 9 лет назад
Родитель
Сommit
433a22189b
100 измененных файлов: 20959 добавлений и 8529 удалений
  1. 105
    9
      .gitignore
  2. 153
    63
      .travis.yml
  3. 2
    746
      Marlin/Conditionals.h
  4. 319
    0
      Marlin/Conditionals_LCD.h
  5. 663
    0
      Marlin/Conditionals_post.h
  6. 279
    140
      Marlin/Configuration.h
  7. 136
    47
      Marlin/Configuration_adv.h
  8. 81
    108
      Marlin/M100_Free_Mem_Chk.cpp
  9. 156
    131
      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. 2934
    2341
      Marlin/Marlin_main.cpp
  15. 303
    143
      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. 378
    331
      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. 5
    22
      Marlin/endstops.cpp
  36. 3
    3
      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. 280
    141
      Marlin/example_configurations/Felix/Configuration.h
  42. 136
    47
      Marlin/example_configurations/Felix/Configuration_adv.h
  43. 280
    141
      Marlin/example_configurations/Felix/DUAL/Configuration.h
  44. 280
    141
      Marlin/example_configurations/Hephestos/Configuration.h
  45. 136
    47
      Marlin/example_configurations/Hephestos/Configuration_adv.h
  46. 301
    162
      Marlin/example_configurations/Hephestos_2/Configuration.h
  47. 144
    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. 280
    141
      Marlin/example_configurations/K8200/Configuration.h
  51. 136
    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. 280
    141
      Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h
  58. 284
    142
      Marlin/example_configurations/RigidBot/Configuration.h
  59. 136
    47
      Marlin/example_configurations/RigidBot/Configuration_adv.h
  60. 280
    141
      Marlin/example_configurations/SCARA/Configuration.h
  61. 136
    47
      Marlin/example_configurations/SCARA/Configuration_adv.h
  62. 280
    141
      Marlin/example_configurations/TAZ4/Configuration.h
  63. 136
    47
      Marlin/example_configurations/TAZ4/Configuration_adv.h
  64. 280
    141
      Marlin/example_configurations/WITBOX/Configuration.h
  65. 136
    47
      Marlin/example_configurations/WITBOX/Configuration_adv.h
  66. 280
    141
      Marlin/example_configurations/adafruit/ST7565/Configuration.h
  67. 325
    182
      Marlin/example_configurations/delta/biv2.5/Configuration.h
  68. 136
    47
      Marlin/example_configurations/delta/biv2.5/Configuration_adv.h
  69. 320
    177
      Marlin/example_configurations/delta/generic/Configuration.h
  70. 136
    47
      Marlin/example_configurations/delta/generic/Configuration_adv.h
  71. 323
    180
      Marlin/example_configurations/delta/kossel_mini/Configuration.h
  72. 136
    47
      Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h
  73. 327
    184
      Marlin/example_configurations/delta/kossel_pro/Configuration.h
  74. 136
    47
      Marlin/example_configurations/delta/kossel_pro/Configuration_adv.h
  75. 0
    0
      Marlin/example_configurations/delta/kossel_pro/README.md
  76. 321
    177
      Marlin/example_configurations/delta/kossel_xl/Configuration.h
  77. 136
    47
      Marlin/example_configurations/delta/kossel_xl/Configuration_adv.h
  78. 280
    141
      Marlin/example_configurations/makibox/Configuration.h
  79. 136
    47
      Marlin/example_configurations/makibox/Configuration_adv.h
  80. 280
    141
      Marlin/example_configurations/tvrrug/Round2/Configuration.h
  81. 136
    47
      Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h
  82. 12
    5
      Marlin/fastio.h
  83. 0
    30
      Marlin/fonts/README.md
  84. Двоичные данные
      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. 19
    22
      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 Просмотреть файл

@@ -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 Просмотреть файл

@@ -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
- 746
Marlin/Conditionals.h Просмотреть файл

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

@@ -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 Просмотреть файл

@@ -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_RAISE_BETWEEN_PROBINGS > Z_RAISE_PROBE_DEPLOY_STOW
579
+      #define _Z_RAISE_PROBE_DEPLOY_STOW Z_RAISE_BETWEEN_PROBINGS
580
+    #else
581
+      #define _Z_RAISE_PROBE_DEPLOY_STOW Z_RAISE_PROBE_DEPLOY_STOW
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
+   * MIN_Z_HEIGHT_FOR_HOMING / Z_RAISE_BETWEEN_PROBINGS
651
+   */
652
+  #ifndef MIN_Z_HEIGHT_FOR_HOMING
653
+    #ifndef Z_RAISE_BETWEEN_PROBINGS
654
+      #define MIN_Z_HEIGHT_FOR_HOMING 0
655
+    #else
656
+      #define MIN_Z_HEIGHT_FOR_HOMING Z_RAISE_BETWEEN_PROBINGS
657
+    #endif
658
+  #endif
659
+  #ifndef Z_RAISE_BETWEEN_PROBINGS
660
+    #define Z_RAISE_BETWEEN_PROBING MIN_Z_HEIGHT_FOR_HOMING
661
+  #endif
662
+
663
+#endif // CONDITIONALS_POST_H

+ 279
- 140
Marlin/Configuration.h Просмотреть файл

@@ -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 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 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 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_RAISE_PROBE_DEPLOY_STOW 15 // Raise to make room for the probe to deploy / stow
547
+#define Z_RAISE_BETWEEN_PROBINGS 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,6 +588,7 @@ 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
591
+
479 592
 //#define MIN_Z_HEIGHT_FOR_HOMING 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
480 593
                                     // Be sure you have this distance over your Z_MAX_POS in case.
481 594
 
@@ -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
@@ -541,8 +654,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
541 654
 // @section bedlevel
542 655
 
543 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.
544 661
 //#define DEBUG_LEVELING_FEATURE
545
-#define Z_MIN_PROBE_REPEATABILITY_TEST  // If not commented out, Z Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
546 662
 
547 663
 #if ENABLED(AUTO_BED_LEVELING_FEATURE)
548 664
 
@@ -585,58 +701,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
585 701
     #define ABL_PROBE_PT_3_X 170
586 702
     #define ABL_PROBE_PT_3_Y 20
587 703
 
588
-  #endif // AUTO_BED_LEVELING_GRID
589
-
590
-  // Z Probe to nozzle (X,Y) offset, relative to (0, 0).
591
-  // X and Y offsets must be integers.
592
-  //
593
-  // In the following example the X and Y offsets are both positive:
594
-  // #define X_PROBE_OFFSET_FROM_EXTRUDER 10
595
-  // #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
596
-  //
597
-  //    +-- BACK ---+
598
-  //    |           |
599
-  //  L |    (+) P  | R <-- probe (20,20)
600
-  //  E |           | I
601
-  //  F | (-) N (+) | G <-- nozzle (10,10)
602
-  //  T |           | H
603
-  //    |    (-)    | T
604
-  //    |           |
605
-  //    O-- FRONT --+
606
-  //  (0,0)
607
-  #define X_PROBE_OFFSET_FROM_EXTRUDER 10  // X offset: -left  +right  [of the nozzle]
608
-  #define Y_PROBE_OFFSET_FROM_EXTRUDER 10  // Y offset: -front +behind [the nozzle]
609
-  #define Z_PROBE_OFFSET_FROM_EXTRUDER 0   // Z offset: -below +above  [the nozzle]
610
-
611
-  #define XY_TRAVEL_SPEED 8000         // X and Y axis travel speed between probes, in mm/min.
612
-
613
-  #define Z_RAISE_BEFORE_PROBING 15   // How much the Z axis will be raised before traveling to the first probing point.
614
-  #define Z_RAISE_BETWEEN_PROBINGS 5  // How much the Z axis will be raised when traveling from between next probing points.
615
-  #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
616 705
 
617 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.
618 707
                                                                              // Useful to retract a deployable Z probe.
619 708
 
620
-  // Probes are sensors/switches that need to be activated before they can be used
621
-  // and deactivated after their use.
622
-  // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE
623
-
624
-  // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER
625
-  // when the hardware endstops are active.
626
-  //#define FIX_MOUNTED_PROBE
627
-
628
-  // A Servo Probe can be defined in the servo section below.
629
-
630
-  // An Allen Key Probe is currently predefined only in the delta example configurations.
631
-
632
-  // Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
633
-  //#define Z_PROBE_SLED
634
-  //#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.
635
-
636
-  // A Mechanical Probe is any probe that either doesn't deploy or needs manual deployment
637
-  // For example any setup that uses the nozzle itself as a probe.
638
-  //#define MECHANICAL_PROBE
639
-
640 709
   // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing,
641 710
   // it is highly recommended you also enable Z_SAFE_HOMING below!
642 711
 
@@ -645,18 +714,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
645 714
 
646 715
 // @section homing
647 716
 
648
-// The position of the homing switches
649
-//#define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used
650
-//#define BED_CENTER_AT_0_0  // If defined, the center of the bed is at (X=0, Y=0)
651
-
652
-// Manual homing switch locations:
653
-// For deltabots this means top and center of the Cartesian print volume.
654
-#if ENABLED(MANUAL_HOME_POSITIONS)
655
-  #define MANUAL_X_HOME_POS 0
656
-  #define MANUAL_Y_HOME_POS 0
657
-  #define MANUAL_Z_HOME_POS 0
658
-  //#define MANUAL_Z_HOME_POS 402 // For delta: Distance between nozzle and print surface after homing.
659
-#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
660 725
 
661 726
 // Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
662 727
 //
@@ -664,7 +729,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
664 729
 //
665 730
 // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
666 731
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
667
-// - 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).
668 733
 // - Prevent Z homing when the Z probe is outside bed area.
669 734
 //#define Z_SAFE_HOMING
670 735
 
@@ -673,14 +738,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
673 738
   #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2)    // Y point for Z homing when homing all axis (G28).
674 739
 #endif
675 740
 
741
+// Homing speeds (mm/m)
742
+#define HOMING_FEEDRATE_XY (50*60)
743
+#define HOMING_FEEDRATE_Z  (4*60)
676 744
 
677
-// @section movement
678
-
679
-/**
680
- * MOVEMENT SETTINGS
681
- */
682
-
683
-#define HOMING_FEEDRATE {50*60, 50*60, 4*60, 0}  // set the homing speeds (mm/min)
745
+//
746
+// MOVEMENT SETTINGS
747
+// @section motion
748
+//
684 749
 
685 750
 // default settings
686 751
 
@@ -702,18 +767,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
702 767
 //============================= Additional Features ===========================
703 768
 //=============================================================================
704 769
 
705
-// @section more
706
-
707
-// Custom M code points
708
-#define CUSTOM_M_CODES
709
-#if ENABLED(CUSTOM_M_CODES)
710
-  #if ENABLED(AUTO_BED_LEVELING_FEATURE)
711
-    #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851
712
-    #define Z_PROBE_OFFSET_RANGE_MIN -20
713
-    #define Z_PROBE_OFFSET_RANGE_MAX 20
714
-  #endif
715
-#endif
716
-
717 770
 // @section extras
718 771
 
719 772
 //
@@ -745,22 +798,107 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
745 798
 //
746 799
 //#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose
747 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
+
748 811
 // @section temperature
749 812
 
750 813
 // Preheat Constants
751
-#define PLA_PREHEAT_HOTEND_TEMP 180
752
-#define PLA_PREHEAT_HPB_TEMP 70
753
-#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
821
+
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
754 881
 
755
-#define ABS_PREHEAT_HOTEND_TEMP 240
756
-#define ABS_PREHEAT_HPB_TEMP 110
757
-#define ABS_PREHEAT_FAN_SPEED 0   // Insert Value between 0 and 255
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
758 893
 
759 894
 //
760 895
 // Print job timer
761 896
 //
762 897
 // Enable this option to automatically start and stop the
763
-// 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
764 902
 //
765 903
 // In all cases the timer can be started and stopped using
766 904
 // the following commands:
@@ -793,8 +931,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
793 931
 //
794 932
 // Here you may choose the language used by Marlin on the LCD menus, the following
795 933
 // list of languages are available:
796
-//    en, pl, fr, de, es, ru, bg, it, pt, pt_utf8, pt-br, pt-br_utf8,
797
-//    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'}
798 938
 //
799 939
 #define LCD_LANGUAGE en
800 940
 
@@ -942,6 +1082,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
942 1082
 //#define ULTIPANEL
943 1083
 
944 1084
 //
1085
+// Cartesio UI
1086
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1087
+//
1088
+//#define CARTESIO_UI
1089
+
1090
+//
945 1091
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
946 1092
 // http://reprap.org/wiki/PanelOne
947 1093
 //
@@ -954,6 +1100,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
954 1100
 //#define MAKRPANEL
955 1101
 
956 1102
 //
1103
+// ReprapWorld Graphical LCD
1104
+// https://reprapworld.com/?products_details&products_id/1218
1105
+//
1106
+//#define REPRAPWORLD_GRAPHICAL_LCD
1107
+
1108
+//
957 1109
 // Activate one of these if you have a Panucatt Devices
958 1110
 // Viki 2.0 or mini Viki with Graphic LCD
959 1111
 // 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
@@ -1063,7 +1215,9 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1063 1215
 //
1064 1216
 //#define U8GLIB_SSD1306
1065 1217
 
1218
+//
1066 1219
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1220
+//
1067 1221
 //#define SAV_3DGLCD
1068 1222
 #if ENABLED(SAV_3DGLCD)
1069 1223
   //#define U8GLIB_SSD1306
@@ -1098,7 +1252,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1098 1252
 // at zero value, there are 128 effective control positions.
1099 1253
 #define SOFT_PWM_SCALE 0
1100 1254
 
1101
-// Temperature status LEDs that display the hotend and bet temperature.
1255
+// Temperature status LEDs that display the hotend and bed temperature.
1102 1256
 // If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
1103 1257
 // Otherwise the RED led is on. There is 1C hysteresis.
1104 1258
 //#define TEMP_STAT_LEDS
@@ -1130,28 +1284,16 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1130 1284
 //
1131 1285
 //#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
1132 1286
 
1133
-// Servo Endstops
1134
-//
1135
-// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes.
1136
-// Use M851 to set the Z probe vertical offset from the nozzle. Store that setting with M500.
1137
-//
1138
-//#define X_ENDSTOP_SERVO_NR 1
1139
-//#define Y_ENDSTOP_SERVO_NR 2
1140
-//#define Z_ENDSTOP_SERVO_NR 0
1141
-//#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
1142 1291
 
1143 1292
 // Servo deactivation
1144 1293
 //
1145 1294
 // With this option servos are powered only during movement, then turned off to prevent jitter.
1146 1295
 //#define DEACTIVATE_SERVOS_AFTER_MOVE
1147 1296
 
1148
-#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE)
1149
-  // Delay (in microseconds) before turning the servo off. This depends on the servo speed.
1150
-  // 300ms is a good value but you can try less delay.
1151
-  // If the servo can't reach the requested position, increase it.
1152
-  #define SERVO_DEACTIVATION_DELAY 300
1153
-#endif
1154
-
1155 1297
 /**********************************************************************\
1156 1298
  * Support for a filament diameter sensor
1157 1299
  * Also allows adjustment of diameter at print time (vs  at slicing)
@@ -1182,7 +1324,4 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1182 1324
   //#define FILAMENT_LCD_DISPLAY
1183 1325
 #endif
1184 1326
 
1185
-#include "Configuration_adv.h"
1186
-#include "thermistortables.h"
1187
-
1188
-#endif //CONFIGURATION_H
1327
+#endif // CONFIGURATION_H

+ 136
- 47
Marlin/Configuration_adv.h Просмотреть файл

@@ -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,15 @@
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
+
448 511
 // @section leveling
449 512
 
450 513
 // Default mesh area is an area with an inset margin on the print area.
@@ -488,12 +551,27 @@ const unsigned int dropsegments = 5; //everything with less than this number of
488 551
   #define BLOCK_BUFFER_SIZE 16 // maximize block buffer
489 552
 #endif
490 553
 
491
-// @section more
554
+// @section serial
492 555
 
493
-//The ASCII buffer for receiving from the serial:
556
+// The ASCII buffer for serial input
494 557
 #define MAX_CMD_SIZE 96
495 558
 #define BUFSIZE 4
496 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
+
497 575
 // Bad Serial-connections can miss a received command by sending an 'ok'
498 576
 // Therefore some clients abort after 30 seconds in a timeout.
499 577
 // Some other clients start sending commands while receiving a 'wait'.
@@ -525,16 +603,30 @@ const unsigned int dropsegments = 5; //everything with less than this number of
525 603
 
526 604
 // Add support for experimental filament exchange support M600; requires display
527 605
 #if ENABLED(ULTIPANEL)
528
-  //#define FILAMENTCHANGEENABLE
529
-  #if ENABLED(FILAMENTCHANGEENABLE)
530
-    #define FILAMENTCHANGE_XPOS 3
531
-    #define FILAMENTCHANGE_YPOS 3
532
-    #define FILAMENTCHANGE_ZADD 10
533
-    #define FILAMENTCHANGE_FIRSTRETRACT -2
534
-    #define FILAMENTCHANGE_FINALRETRACT -100
535
-    #define AUTO_FILAMENT_CHANGE                //This extrude filament until you press the button on LCD
536
-    #define AUTO_FILAMENT_CHANGE_LENGTH 0.04    //Extrusion length on automatic extrusion loop
537
-    #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
538 630
   #endif
539 631
 #endif
540 632
 
@@ -680,9 +772,9 @@ const unsigned int dropsegments = 5; //everything with less than this number of
680 772
  * devices on the bus.
681 773
  *
682 774
  * ; Example #1
683
- * ; 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)
684 776
  * ; It uses multiple M155 commands with one B<base 10> arg
685
- * M155 A63  ; Target slave address
777
+ * M155 A99  ; Target slave address
686 778
  * M155 B77  ; M
687 779
  * M155 B97  ; a
688 780
  * M155 B114 ; r
@@ -692,19 +784,16 @@ const unsigned int dropsegments = 5; //everything with less than this number of
692 784
  * M155 S1   ; Send the current buffer
693 785
  *
694 786
  * ; Example #2
695
- * ; Request 6 bytes from slave device with address 0x63
696
- * M156 A63 B5
787
+ * ; Request 6 bytes from slave device with address 0x63 (99)
788
+ * M156 A99 B5
697 789
  *
698 790
  * ; Example #3
699 791
  * ; Example serial output of a M156 request
700
- * echo:i2c-reply: from:63 bytes:5 data:hello
792
+ * echo:i2c-reply: from:99 bytes:5 data:hello
701 793
  */
702 794
 
703 795
 // @section i2cbus
704 796
 
705 797
 //#define EXPERIMENTAL_I2CBUS
706 798
 
707
-#include "Conditionals.h"
708
-#include "SanityCheck.h"
709
-
710
-#endif //CONFIGURATION_ADV_H
799
+#endif // CONFIGURATION_ADV_H

+ 81
- 108
Marlin/M100_Free_Mem_Chk.cpp Просмотреть файл

@@ -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;

+ 156
- 131
Marlin/Marlin.h Просмотреть файл

@@ -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,29 +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
 
230
-#if DISABLED(DELTA) && DISABLED(SCARA)
231
-  void set_current_position_from_planner();
232
-#endif
229
+void quickstop_stepper();
233 230
 
234 231
 #if ENABLED(FILAMENT_RUNOUT_SENSOR)
235 232
   void handle_filament_runout();
236 233
 #endif
237 234
 
238
-/**
239
- * Debug flags - not yet widely applied
240
- */
241
-enum DebugFlags {
242
-  DEBUG_NONE          = 0,
243
-  DEBUG_ECHO          = _BV(0), ///< Echo commands in order as they are processed
244
-  DEBUG_INFO          = _BV(1), ///< Print messages for code that has debug output
245
-  DEBUG_ERRORS        = _BV(2), ///< Not implemented
246
-  DEBUG_DRYRUN        = _BV(3), ///< Ignore temperature setting and E movement commands
247
-  DEBUG_COMMUNICATION = _BV(4), ///< Not implemented
248
-  DEBUG_LEVELING      = _BV(5)  ///< Print detailed output for homing and leveling
249
-};
250 235
 extern uint8_t marlin_debug_flags;
251 236
 #define DEBUGGING(F) (marlin_debug_flags & (DEBUG_## F))
252 237
 
@@ -268,29 +253,47 @@ inline void refresh_cmd_timeout() { previous_cmd_ms = millis(); }
268 253
   void setPwmFrequency(uint8_t pin, int val);
269 254
 #endif
270 255
 
271
-#ifndef CRITICAL_SECTION_START
272
-  #define CRITICAL_SECTION_START  unsigned char _sreg = SREG; cli();
273
-  #define CRITICAL_SECTION_END    SREG = _sreg;
274
-#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)))
275 266
 
276 267
 extern bool axis_relative_modes[];
277
-extern int feedrate_multiplier;
278 268
 extern bool volumetric_enabled;
279 269
 extern int extruder_multiplier[EXTRUDERS]; // sets extrude multiply factor (in percent) for each extruder individually
280 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.
281 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
282
-extern float current_position[NUM_AXIS];
283
-extern float home_offset[3]; // axis[n].home_offset
284
-extern float sw_endstop_min[3]; // axis[n].sw_endstop_min
285
-extern float sw_endstop_max[3]; // axis[n].sw_endstop_max
286 272
 extern bool axis_known_position[3]; // axis[n].is_known
287 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)
288 291
 
289 292
 // GCode support for external objects
290 293
 bool code_seen(char);
291
-float code_value();
292
-long code_value_long();
293
-int16_t code_value_short();
294
+int code_value_int();
295
+float code_value_temp_abs();
296
+float code_value_temp_diff();
294 297
 
295 298
 #if ENABLED(DELTA)
296 299
   extern float delta[3];
@@ -301,23 +304,24 @@ int16_t code_value_short();
301 304
   extern float delta_diagonal_rod_trim_tower_1;
302 305
   extern float delta_diagonal_rod_trim_tower_2;
303 306
   extern float delta_diagonal_rod_trim_tower_3;
304
-  void calculate_delta(float cartesian[3]);
307
+  void inverse_kinematics(const float cartesian[3]);
305 308
   void recalc_delta_settings(float radius, float diagonal_rod);
306 309
   #if ENABLED(AUTO_BED_LEVELING_FEATURE)
307 310
     extern int delta_grid_spacing[2];
308 311
     void adjust_delta(float cartesian[3]);
309 312
   #endif
310 313
 #elif ENABLED(SCARA)
314
+  extern float delta[3];
311 315
   extern float axis_scaling[3];  // Build size scaling
312
-  void calculate_delta(float cartesian[3]);
313
-  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]);
314 318
 #endif
315 319
 
316 320
 #if ENABLED(Z_DUAL_ENDSTOPS)
317 321
   extern float z_endstop_adj;
318 322
 #endif
319 323
 
320
-#if ENABLED(AUTO_BED_LEVELING_FEATURE)
324
+#if HAS_BED_PROBE
321 325
   extern float zprobe_zoffset;
322 326
 #endif
323 327
 
@@ -343,15 +347,19 @@ int16_t code_value_short();
343 347
   extern int meas_delay_cm; //delay distance
344 348
 #endif
345 349
 
346
-#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)
347 355
   extern int lpq_len;
348 356
 #endif
349 357
 
350 358
 #if ENABLED(FWRETRACT)
351 359
   extern bool autoretract_enabled;
352 360
   extern bool retracted[EXTRUDERS]; // extruder[n].retracted
353
-  extern float retract_length, retract_length_swap, retract_feedrate, retract_zlift;
354
-  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;
355 363
 #endif
356 364
 
357 365
 // Print job timer
@@ -368,6 +376,23 @@ extern uint8_t active_extruder;
368 376
   void print_heaterstates();
369 377
 #endif
370 378
 
379
+#if ENABLED(MIXING_EXTRUDER)
380
+  extern float mixing_factor[MIXING_STEPPERS];
381
+#endif
382
+
371 383
 void calculate_volumetric_multipliers();
372 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
+
373 398
 #endif //MARLIN_H

+ 1
- 2
Marlin/Marlin.ino Просмотреть файл

@@ -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 Просмотреть файл

@@ -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 Просмотреть файл

@@ -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 Просмотреть файл

@@ -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);

+ 2934
- 2341
Marlin/Marlin_main.cpp
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 303
- 143
Marlin/SanityCheck.h Просмотреть файл

@@ -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
147 160
 
148
-  #if ENABLED(Z_DUAL_STEPPER_DRIVERS)
149
-    #error "EXTRUDERS must be 1 with Z_DUAL_STEPPER_DRIVERS."
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
168
+
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,68 @@
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_RAISE_BEFORE_PROBING) || defined(Z_RAISE_AFTER_PROBING)
338
+    #error "Z_RAISE_(BEFORE|AFTER)_PROBING are deprecated. Use Z_RAISE_PROBE_DEPLOY_STOW instead."
339
+  #elif !defined(Z_RAISE_PROBE_DEPLOY_STOW)
340
+    #error "You must set Z_RAISE_PROBE_DEPLOY_STOW in your configuration."
341
+  #elif !defined(Z_RAISE_BETWEEN_PROBINGS)
342
+    #error "You must set Z_RAISE_BETWEEN_PROBINGS in your configuration."
343
+  #elif Z_RAISE_PROBE_DEPLOY_STOW < 0
344
+    #error "Probes need Z_RAISE_PROBE_DEPLOY_STOW >= 0."
345
+  #elif Z_RAISE_BETWEEN_PROBINGS < 0
346
+    #error "Probes need Z_RAISE_BETWEEN_PROBINGS >= 0."
347
+  #endif
348
+
282 349
 #else
283 350
 
284 351
   /**
285
-   * Require some kind of probe for bed leveling
352
+   * Require some kind of probe for bed leveling and probe testing
286 353
    */
287 354
   #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."
355
+    #error "AUTO_BED_LEVELING_FEATURE requires a probe! Define a Z Servo, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or FIX_MOUNTED_PROBE."
356
+  #elif ENABLED(Z_MIN_PROBE_REPEATABILITY_TEST)
357
+    #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 358
   #endif
290 359
 
291 360
 #endif
292 361
 
293 362
 /**
363
+ * Make sure Z_SAFE_HOMING point is reachable
364
+ */
365
+#if ENABLED(Z_SAFE_HOMING)
366
+  #if Z_SAFE_HOMING_X_POINT < MIN_PROBE_X || Z_SAFE_HOMING_X_POINT > MAX_PROBE_X
367
+    #if HAS_BED_PROBE
368
+      #error "Z_SAFE_HOMING_X_POINT can't be reached by the Z probe."
369
+    #else
370
+      #error "Z_SAFE_HOMING_X_POINT can't be reached by the nozzle."
371
+    #endif
372
+  #elif Z_SAFE_HOMING_Y_POINT < MIN_PROBE_Y || Z_SAFE_HOMING_Y_POINT > MAX_PROBE_Y
373
+    #if HAS_BED_PROBE
374
+      #error "Z_SAFE_HOMING_Y_POINT can't be reached by the Z probe."
375
+    #else
376
+      #error "Z_SAFE_HOMING_Y_POINT can't be reached by the nozzle."
377
+    #endif
378
+  #endif
379
+#endif // Z_SAFE_HOMING
380
+
381
+/**
294 382
  * Auto Bed Leveling
295 383
  */
296 384
 #if ENABLED(AUTO_BED_LEVELING_FEATURE)
297 385
 
298 386
   /**
299
-   * Require a Z min pin
387
+   * Delta has limited bed leveling options
300 388
    */
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
389
+  #if ENABLED(DELTA) && DISABLED(AUTO_BED_LEVELING_GRID)
390
+    #error "You must use AUTO_BED_LEVELING_GRID for DELTA bed leveling."
309 391
   #endif
310 392
 
311 393
   /**
@@ -352,13 +434,19 @@
352 434
 #endif // AUTO_BED_LEVELING_FEATURE
353 435
 
354 436
 /**
437
+ * Advance Extrusion
438
+ */
439
+#if ENABLED(ADVANCE) && ENABLED(LIN_ADVANCE)
440
+  #error "You can enable ADVANCE or LIN_ADVANCE, but not both."
441
+#endif
442
+
443
+/**
355 444
  * Filament Width Sensor
356 445
  */
357 446
 #if ENABLED(FILAMENT_WIDTH_SENSOR) && !HAS_FILAMENT_WIDTH_SENSOR
358 447
   #error "FILAMENT_WIDTH_SENSOR requires a FILWIDTH_PIN to be defined."
359 448
 #endif
360 449
 
361
-
362 450
 /**
363 451
  * ULTIPANEL encoder
364 452
  */
@@ -367,26 +455,14 @@
367 455
 #endif
368 456
 
369 457
 #if ENCODER_PULSES_PER_STEP < 0
370
-  #error "ENCODER_PULSES_PER_STEP should not be negative, use REVERSE_MENU_DIRECTION instead"
458
+  #error "ENCODER_PULSES_PER_STEP should not be negative, use REVERSE_MENU_DIRECTION instead."
371 459
 #endif
372 460
 
373 461
 /**
374
- * Delta has limited bed leveling options
462
+ * SAV_3DGLCD display options
375 463
  */
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
-
464
+#if ENABLED(U8GLIB_SSD1306) && ENABLED(U8GLIB_SH1106)
465
+  #error "Only enable one SAV_3DGLCD display type: U8GLIB_SSD1306 or U8GLIB_SH1106."
390 466
 #endif
391 467
 
392 468
 /**
@@ -400,10 +476,11 @@
400 476
 #endif
401 477
 
402 478
 /**
403
- * Allen Key Z probe requires Auto Bed Leveling grid and Delta
479
+ * Allen Key
480
+ * Deploying the Allen Key probe uses big moves in z direction. Too dangerous for an unhomed z-axis.
404 481
  */
405
-#if ENABLED(Z_PROBE_ALLEN_KEY) && !(ENABLED(AUTO_BED_LEVELING_GRID) && ENABLED(DELTA))
406
-  #error "Invalid use of Z_PROBE_ALLEN_KEY."
482
+#if ENABLED(Z_PROBE_ALLEN_KEY) && (Z_HOME_DIR < 0) && ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN)
483
+  #error "You can't home to a z min endstop with a Z_PROBE_ALLEN_KEY"
407 484
 #endif
408 485
 
409 486
 /**
@@ -461,54 +538,96 @@
461 538
 /**
462 539
  * Test Heater, Temp Sensor, and Extruder Pins; Sensor Type must also be set.
463 540
  */
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."
541
+#if !HAS_HEATER_0
542
+  #error "HEATER_0_PIN not defined for this board."
543
+#elif !PIN_EXISTS(TEMP_0)
544
+  #error "TEMP_0_PIN not defined for this board."
545
+#elif !PIN_EXISTS(E0_STEP) || !PIN_EXISTS(E0_DIR) || !PIN_EXISTS(E0_ENABLE)
546
+  #error "E0_STEP_PIN, E0_DIR_PIN, or E0_ENABLE_PIN not defined for this board."
547
+#elif TEMP_SENSOR_0 == 0
548
+  #error "TEMP_SENSOR_0 is required."
549
+#endif
550
+
551
+#if HOTENDS > 1 || ENABLED(HEATERS_PARALLEL)
552
+  #if !HAS_HEATER_1
553
+    #error "HEATER_1_PIN not defined for this board."
483 554
   #endif
484
-#elif EXTRUDERS > 1
555
+#endif
556
+
557
+#if HOTENDS > 1
485 558
   #if TEMP_SENSOR_1 == 0
486
-    #error "TEMP_SENSOR_1 is required with 2 or more EXTRUDERS."
559
+    #error "TEMP_SENSOR_1 is required with 2 or more HOTENDS."
487 560
   #elif !PIN_EXISTS(TEMP_1)
488 561
     #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 562
   #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."
563
+  #if HOTENDS > 2
564
+    #if TEMP_SENSOR_2 == 0
565
+      #error "TEMP_SENSOR_2 is required with 3 or more HOTENDS."
566
+    #elif !HAS_HEATER_2
567
+      #error "HEATER_2_PIN not defined for this board."
568
+    #elif !PIN_EXISTS(TEMP_2)
569
+      #error "TEMP_2_PIN not defined for this board."
570
+    #endif
571
+    #if HOTENDS > 3
572
+      #if TEMP_SENSOR_3 == 0
573
+        #error "TEMP_SENSOR_3 is required with 4 HOTENDS."
574
+      #elif !HAS_HEATER_3
575
+        #error "HEATER_3_PIN not defined for this board."
576
+      #elif !PIN_EXISTS(TEMP_3)
577
+        #error "TEMP_3_PIN not defined for this board."
578
+      #endif
579
+    #elif TEMP_SENSOR_3 != 0
580
+      #error "TEMP_SENSOR_3 shouldn't be set with only 3 extruders."
581
+    #endif
582
+  #elif TEMP_SENSOR_2 != 0
583
+    #error "TEMP_SENSOR_2 shouldn't be set with only 2 extruders."
584
+  #elif TEMP_SENSOR_3 != 0
585
+    #error "TEMP_SENSOR_3 shouldn't be set with only 2 extruders."
497 586
   #endif
587
+#elif TEMP_SENSOR_1 != 0 && DISABLED(TEMP_SENSOR_1_AS_REDUNDANT)
588
+  #error "TEMP_SENSOR_1 shouldn't be set with only 1 extruder."
589
+#elif TEMP_SENSOR_2 != 0
590
+  #error "TEMP_SENSOR_2 shouldn't be set with only 1 extruder."
591
+#elif TEMP_SENSOR_3 != 0
592
+  #error "TEMP_SENSOR_3 shouldn't be set with only 1 extruder."
498 593
 #endif
499 594
 
500 595
 #if ENABLED(TEMP_SENSOR_1_AS_REDUNDANT) && TEMP_SENSOR_1 == 0
501 596
   #error "TEMP_SENSOR_1 is required with TEMP_SENSOR_1_AS_REDUNDANT."
502 597
 #endif
503 598
 
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."
599
+/**
600
+ * Basic 2-nozzle duplication mode
601
+ */
602
+#if ENABLED(DUAL_NOZZLE_DUPLICATION_MODE)
603
+  #if HOTENDS != 2
604
+    #error "DUAL_NOZZLE_DUPLICATION_MODE requires exactly 2 hotends."
605
+  #elif ENABLED(DUAL_X_CARRIAGE)
606
+    #error "DUAL_NOZZLE_DUPLICATION_MODE is incompatible with DUAL_X_CARRIAGE."
607
+  #elif ENABLED(SINGLENOZZLE)
608
+    #error "DUAL_NOZZLE_DUPLICATION_MODE is incompatible with SINGLENOZZLE."
609
+  #elif ENABLED(MIXING_EXTRUDER)
610
+    #error "DUAL_NOZZLE_DUPLICATION_MODE is incompatible with MIXING_EXTRUDER."
611
+  #elif ENABLED(SWITCHING_EXTRUDER)
612
+    #error "DUAL_NOZZLE_DUPLICATION_MODE is incompatible with SWITCHING_EXTRUDER."
613
+  #endif
614
+#endif
615
+
616
+/**
617
+ * Test Extruder Pins
618
+ */
619
+#if EXTRUDERS > 3
620
+  #if !PIN_EXISTS(E3_STEP) || !PIN_EXISTS(E3_DIR) || !PIN_EXISTS(E3_ENABLE)
621
+    #error "E3_STEP_PIN, E3_DIR_PIN, or E3_ENABLE_PIN not defined for this board."
622
+  #endif
623
+#elif EXTRUDERS > 2
624
+  #if !PIN_EXISTS(E2_STEP) || !PIN_EXISTS(E2_DIR) || !PIN_EXISTS(E2_ENABLE)
625
+    #error "E2_STEP_PIN, E2_DIR_PIN, or E2_ENABLE_PIN not defined for this board."
626
+  #endif
627
+#elif EXTRUDERS > 1
628
+  #if !PIN_EXISTS(E1_STEP) || !PIN_EXISTS(E1_DIR) || !PIN_EXISTS(E1_ENABLE)
629
+    #error "E1_STEP_PIN, E1_DIR_PIN, or E1_ENABLE_PIN not defined for this board."
630
+  #endif
512 631
 #endif
513 632
 
514 633
 /**
@@ -525,6 +644,13 @@
525 644
 #endif
526 645
 
527 646
 /**
647
+ * emergency-command parser
648
+ */
649
+#if ENABLED(EMERGENCY_PARSER) && ENABLED(USBCON)
650
+  #error "EMERGENCY_PARSER does not work on boards with AT90USB processors (USBCON)."
651
+#endif
652
+
653
+ /**
528 654
  * Warnings for old configurations
529 655
  */
530 656
 #if WATCH_TEMP_PERIOD > 500
@@ -537,8 +663,6 @@
537 663
   #error "Z_LATE_ENABLE can't be used with COREXZ."
538 664
 #elif defined(X_HOME_RETRACT_MM)
539 665
   #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 666
 #elif defined(BEEPER)
543 667
   #error "BEEPER is now BEEPER_PIN. Please update your pins definitions."
544 668
 #elif defined(SDCARDDETECT)
@@ -567,6 +691,42 @@
567 691
   #error "Z_DUAL_ENDSTOPS settings are simplified. Just set Z2_USE_ENDSTOP to the endstop you want to repurpose for Z2"
568 692
 #elif defined(LANGUAGE_INCLUDE)
569 693
   #error "LANGUAGE_INCLUDE has been replaced by LCD_LANGUAGE. Please update your configuration."
694
+#elif defined(EXTRUDER_OFFSET_X) || defined(EXTRUDER_OFFSET_Y)
695
+  #error "EXTRUDER_OFFSET_[XY] is deprecated. Use HOTEND_OFFSET_[XY] instead."
696
+#elif defined(PID_PARAMS_PER_EXTRUDER)
697
+  #error "PID_PARAMS_PER_EXTRUDER is deprecated. Use PID_PARAMS_PER_HOTEND instead."
698
+#elif defined(EXTRUDER_WATTS) || defined(BED_WATTS)
699
+  #error "EXTRUDER_WATTS and BED_WATTS are deprecated. Remove them from your configuration."
700
+#elif defined(SERVO_ENDSTOP_ANGLES)
701
+  #error "SERVO_ENDSTOP_ANGLES is deprecated. Use Z_SERVO_ANGLES instead."
702
+#elif defined(X_ENDSTOP_SERVO_NR) || defined(Y_ENDSTOP_SERVO_NR)
703
+  #error "X_ENDSTOP_SERVO_NR and Y_ENDSTOP_SERVO_NR are deprecated and should be removed."
704
+#elif defined(XY_TRAVEL_SPEED)
705
+  #error "XY_TRAVEL_SPEED is deprecated. Use XY_PROBE_SPEED instead."
706
+#elif defined(PROBE_SERVO_DEACTIVATION_DELAY)
707
+  #error "PROBE_SERVO_DEACTIVATION_DELAY is deprecated. Use DEACTIVATE_SERVOS_AFTER_MOVE instead."
708
+#elif defined(SERVO_DEACTIVATION_DELAY)
709
+  #error "SERVO_DEACTIVATION_DELAY is deprecated. Use SERVO_DELAY instead."
710
+#elif ENABLED(FILAMENTCHANGEENABLE)
711
+  #error "FILAMENTCHANGEENABLE is now FILAMENT_CHANGE_FEATURE. Please update your configuration."
712
+#elif defined(PLA_PREHEAT_HOTEND_TEMP)
713
+  #error "PLA_PREHEAT_HOTEND_TEMP is now PREHEAT_1_TEMP_HOTEND. Please update your configuration."
714
+#elif defined(PLA_PREHEAT_HPB_TEMP)
715
+  #error "PLA_PREHEAT_HPB_TEMP is now PREHEAT_1_TEMP_BED. Please update your configuration."
716
+#elif defined(PLA_PREHEAT_FAN_SPEED)
717
+  #error "PLA_PREHEAT_FAN_SPEED is now PREHEAT_1_FAN_SPEED. Please update your configuration."
718
+#elif defined(ABS_PREHEAT_HOTEND_TEMP)
719
+  #error "ABS_PREHEAT_HOTEND_TEMP is now PREHEAT_2_TEMP_HOTEND. Please update your configuration."
720
+#elif defined(ABS_PREHEAT_HPB_TEMP)
721
+  #error "ABS_PREHEAT_HPB_TEMP is now PREHEAT_2_TEMP_BED. Please update your configuration."
722
+#elif defined(ABS_PREHEAT_FAN_SPEED)
723
+  #error "ABS_PREHEAT_FAN_SPEED is now PREHEAT_2_FAN_SPEED. Please update your configuration."
724
+#elif defined(ENDSTOPS_ONLY_FOR_HOMING)
725
+  #error "ENDSTOPS_ONLY_FOR_HOMING is deprecated. Use (disable) ENDSTOPS_ALWAYS_ON_DEFAULT instead."
726
+#elif defined(HOMING_FEEDRATE)
727
+  #error "HOMING_FEEDRATE is deprecated. Set individual rates with HOMING_FEEDRATE_(XY|Z|E) instead."
728
+#elif defined(MANUAL_HOME_POSITIONS)
729
+  #error "MANUAL_HOME_POSITIONS is deprecated. Set MANUAL_[XYZ]_HOME_POS as-needed instead."
730
+#elif defined(PID_ADD_EXTRUSION_RATE)
731
+  #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."
570 732
 #endif
571
-
572
-#endif //SANITYCHECK_H

+ 9
- 8
Marlin/Sd2Card.cpp Просмотреть файл

@@ -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 Просмотреть файл

@@ -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 Просмотреть файл

@@ -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 Просмотреть файл

@@ -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 Просмотреть файл

@@ -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-RCBugFix"
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-RCBugFix"
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-26 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 Просмотреть файл

@@ -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 Просмотреть файл

@@ -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 Просмотреть файл

@@ -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 Просмотреть файл

@@ -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 Просмотреть файл

@@ -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 Просмотреть файл

@@ -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

+ 378
- 331
Marlin/configuration_store.cpp
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 1
- 1
Marlin/configuration_store.h Просмотреть файл

@@ -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 Просмотреть файл

@@ -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 Просмотреть файл

@@ -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 Просмотреть файл

@@ -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 Просмотреть файл

@@ -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 Просмотреть файл

@@ -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 Просмотреть файл

@@ -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__

+ 5
- 22
Marlin/endstops.cpp Просмотреть файл

@@ -40,10 +40,10 @@ Endstops endstops;
40 40
 
41 41
 bool  Endstops::enabled = true,
42 42
       Endstops::enabled_globally =
43
-        #if ENABLED(ENDSTOPS_ONLY_FOR_HOMING)
44
-          false
43
+        #if ENABLED(ENDSTOPS_ALWAYS_ON_DEFAULT)
44
+          (true)
45 45
         #else
46
-          true
46
+          (false)
47 47
         #endif
48 48
       ;
49 49
 volatile char Endstops::endstop_hit_bits; // use X_MIN, Y_MIN, Z_MIN and Z_MIN_PROBE as BIT value
@@ -64,20 +64,6 @@ volatile char Endstops::endstop_hit_bits; // use X_MIN, Y_MIN, Z_MIN and Z_MIN_P
64 64
  * Class and Instance Methods
65 65
  */
66 66
 
67
-Endstops::Endstops() {
68
-  enable_globally(
69
-    #if ENABLED(ENDSTOPS_ONLY_FOR_HOMING)
70
-      false
71
-    #else
72
-      true
73
-    #endif
74
-  );
75
-  enable(true);
76
-  #if HAS_BED_PROBE
77
-    enable_z_probe(false);
78
-  #endif
79
-} // Endstops::Endstops
80
-
81 67
 void Endstops::init() {
82 68
 
83 69
   #if HAS_X_MIN
@@ -186,10 +172,7 @@ void Endstops::report_state() {
186 172
       if (stepper.abort_on_endstop_hit) {
187 173
         card.sdprinting = false;
188 174
         card.closefile();
189
-        stepper.quick_stop();
190
-        #if DISABLED(DELTA) && DISABLED(SCARA)
191
-          set_current_position_from_planner();
192
-        #endif
175
+        quickstop_stepper();
193 176
         thermalManager.disable_all_heaters(); // switch off all heaters.
194 177
       }
195 178
     #endif
@@ -197,7 +180,7 @@ void Endstops::report_state() {
197 180
 } // Endstops::report_state
198 181
 
199 182
 void Endstops::M119() {
200
-  SERIAL_PROTOCOLLN(MSG_M119_REPORT);
183
+  SERIAL_PROTOCOLLNPGM(MSG_M119_REPORT);
201 184
   #if HAS_X_MIN
202 185
     SERIAL_PROTOCOLPGM(MSG_X_MIN);
203 186
     SERIAL_PROTOCOLLN(((READ(X_MIN_PIN)^X_MIN_ENDSTOP_INVERTING) ? MSG_ENDSTOP_HIT : MSG_ENDSTOP_OPEN));

+ 3
- 3
Marlin/endstops.h Просмотреть файл

@@ -27,7 +27,7 @@
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
 
@@ -42,8 +42,8 @@ class Endstops {
42 42
       static byte
43 43
     #endif
44 44
         current_endstop_bits, old_endstop_bits;
45
-        
46
-    Endstops();
45
+
46
+    Endstops() {};
47 47
 
48 48
     /**
49 49
      * Initialize the endstop pins

+ 193
- 0
Marlin/enum.h Просмотреть файл

@@ -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
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 799
- 0
Marlin/example_configurations/Cartesio/Configuration_adv.h Просмотреть файл

@@ -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 Просмотреть файл

@@ -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
+};

+ 280
- 141
Marlin/example_configurations/Felix/Configuration.h Просмотреть файл

@@ -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_RAISE_PROBE_DEPLOY_STOW 15 // Raise to make room for the probe to deploy / stow
529
+#define Z_RAISE_BETWEEN_PROBINGS 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,6 +570,7 @@ 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
573
+
461 574
 //#define MIN_Z_HEIGHT_FOR_HOMING 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
462 575
                                     // Be sure you have this distance over your Z_MAX_POS in case.
463 576
 
@@ -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
@@ -523,8 +636,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
523 636
 // @section bedlevel
524 637
 
525 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.
526 643
 //#define DEBUG_LEVELING_FEATURE
527
-//#define Z_MIN_PROBE_REPEATABILITY_TEST  // If not commented out, Z Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
528 644
 
529 645
 #if ENABLED(AUTO_BED_LEVELING_FEATURE)
530 646
 
@@ -567,58 +683,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
567 683
     #define ABL_PROBE_PT_3_X 170
568 684
     #define ABL_PROBE_PT_3_Y 20
569 685
 
570
-  #endif // AUTO_BED_LEVELING_GRID
571
-
572
-  // Z Probe to nozzle (X,Y) offset, relative to (0, 0).
573
-  // X and Y offsets must be integers.
574
-  //
575
-  // In the following example the X and Y offsets are both positive:
576
-  // #define X_PROBE_OFFSET_FROM_EXTRUDER 10
577
-  // #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
578
-  //
579
-  //    +-- BACK ---+
580
-  //    |           |
581
-  //  L |    (+) P  | R <-- probe (20,20)
582
-  //  E |           | I
583
-  //  F | (-) N (+) | G <-- nozzle (10,10)
584
-  //  T |           | H
585
-  //    |    (-)    | T
586
-  //    |           |
587
-  //    O-- FRONT --+
588
-  //  (0,0)
589
-  #define X_PROBE_OFFSET_FROM_EXTRUDER -25     // X offset: -left  +right  [of the nozzle]
590
-  #define Y_PROBE_OFFSET_FROM_EXTRUDER -29     // Y offset: -front +behind [the nozzle]
591
-  #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35  // Z offset: -below +above  [the nozzle]
592
-
593
-  #define XY_TRAVEL_SPEED 8000         // X and Y axis travel speed between probes, in mm/min.
594
-
595
-  #define Z_RAISE_BEFORE_PROBING 15   // How much the Z axis will be raised before traveling to the first probing point.
596
-  #define Z_RAISE_BETWEEN_PROBINGS 5  // How much the Z axis will be raised when traveling from between next probing points.
597
-  #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
598 687
 
599 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.
600 689
                                                                              // Useful to retract a deployable Z probe.
601 690
 
602
-  // Probes are sensors/switches that need to be activated before they can be used
603
-  // and deactivated after their use.
604
-  // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE
605
-
606
-  // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER
607
-  // when the hardware endstops are active.
608
-  //#define FIX_MOUNTED_PROBE
609
-
610
-  // A Servo Probe can be defined in the servo section below.
611
-
612
-  // An Allen Key Probe is currently predefined only in the delta example configurations.
613
-
614
-  // Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
615
-  //#define Z_PROBE_SLED
616
-  //#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.
617
-
618
-  // A Mechanical Probe is any probe that either doesn't deploy or needs manual deployment
619
-  // For example any setup that uses the nozzle itself as a probe.
620
-  //#define MECHANICAL_PROBE
621
-
622 691
   // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing,
623 692
   // it is highly recommended you also enable Z_SAFE_HOMING below!
624 693
 
@@ -627,18 +696,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
627 696
 
628 697
 // @section homing
629 698
 
630
-// The position of the homing switches
631
-//#define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used
632
-//#define BED_CENTER_AT_0_0  // If defined, the center of the bed is at (X=0, Y=0)
633
-
634
-// Manual homing switch locations:
635
-// For deltabots this means top and center of the Cartesian print volume.
636
-#if ENABLED(MANUAL_HOME_POSITIONS)
637
-  #define MANUAL_X_HOME_POS 0
638
-  #define MANUAL_Y_HOME_POS 0
639
-  #define MANUAL_Z_HOME_POS 0
640
-  //#define MANUAL_Z_HOME_POS 402 // For delta: Distance between nozzle and print surface after homing.
641
-#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
642 707
 
643 708
 // Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
644 709
 //
@@ -646,7 +711,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
646 711
 //
647 712
 // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
648 713
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
649
-// - 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).
650 715
 // - Prevent Z homing when the Z probe is outside bed area.
651 716
 //#define Z_SAFE_HOMING
652 717
 
@@ -655,14 +720,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
655 720
   #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2)    // Y point for Z homing when homing all axis (G28).
656 721
 #endif
657 722
 
723
+// Homing speeds (mm/m)
724
+#define HOMING_FEEDRATE_XY (50*60)
725
+#define HOMING_FEEDRATE_Z  (4*60)
658 726
 
659
-// @section movement
660
-
661
-/**
662
- * MOVEMENT SETTINGS
663
- */
664
-
665
-#define HOMING_FEEDRATE {50*60, 50*60, 4*60, 0}  // set the homing speeds (mm/min)
727
+//
728
+// MOVEMENT SETTINGS
729
+// @section motion
730
+//
666 731
 
667 732
 // default settings
668 733
 
@@ -685,18 +750,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
685 750
 //============================= Additional Features ===========================
686 751
 //=============================================================================
687 752
 
688
-// @section more
689
-
690
-// Custom M code points
691
-#define CUSTOM_M_CODES
692
-#if ENABLED(CUSTOM_M_CODES)
693
-  #if ENABLED(AUTO_BED_LEVELING_FEATURE)
694
-    #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851
695
-    #define Z_PROBE_OFFSET_RANGE_MIN -20
696
-    #define Z_PROBE_OFFSET_RANGE_MAX 20
697
-  #endif
698
-#endif
699
-
700 753
 // @section extras
701 754
 
702 755
 //
@@ -728,22 +781,107 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
728 781
 //
729 782
 //#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose
730 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
+
731 794
 // @section temperature
732 795
 
733 796
 // Preheat Constants
734
-#define PLA_PREHEAT_HOTEND_TEMP 180
735
-#define PLA_PREHEAT_HPB_TEMP 70
736
-#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
804
+
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
737 864
 
738
-#define ABS_PREHEAT_HOTEND_TEMP 240
739
-#define ABS_PREHEAT_HPB_TEMP 100
740
-#define ABS_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
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
741 876
 
742 877
 //
743 878
 // Print job timer
744 879
 //
745 880
 // Enable this option to automatically start and stop the
746
-// 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
747 885
 //
748 886
 // In all cases the timer can be started and stopped using
749 887
 // the following commands:
@@ -776,8 +914,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
776 914
 //
777 915
 // Here you may choose the language used by Marlin on the LCD menus, the following
778 916
 // list of languages are available:
779
-//    en, pl, fr, de, es, ru, bg, it, pt, pt_utf8, pt-br, pt-br_utf8,
780
-//    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'}
781 921
 //
782 922
 //#define LCD_LANGUAGE en
783 923
 
@@ -925,6 +1065,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
925 1065
 //#define ULTIPANEL
926 1066
 
927 1067
 //
1068
+// Cartesio UI
1069
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1070
+//
1071
+//#define CARTESIO_UI
1072
+
1073
+//
928 1074
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
929 1075
 // http://reprap.org/wiki/PanelOne
930 1076
 //
@@ -937,6 +1083,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
937 1083
 //#define MAKRPANEL
938 1084
 
939 1085
 //
1086
+// ReprapWorld Graphical LCD
1087
+// https://reprapworld.com/?products_details&products_id/1218
1088
+//
1089
+//#define REPRAPWORLD_GRAPHICAL_LCD
1090
+
1091
+//
940 1092
 // Activate one of these if you have a Panucatt Devices
941 1093
 // Viki 2.0 or mini Viki with Graphic LCD
942 1094
 // http://panucatt.com
@@ -986,7 +1138,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
986 1138
 // is pressed, a value of 10.0 means 10mm per click.
987 1139
 //
988 1140
 //#define REPRAPWORLD_KEYPAD
989
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1141
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
990 1142
 
991 1143
 //
992 1144
 // RigidBot Panel V1.0
@@ -1046,7 +1198,9 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1046 1198
 //
1047 1199
 //#define U8GLIB_SSD1306
1048 1200
 
1201
+//
1049 1202
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1203
+//
1050 1204
 //#define SAV_3DGLCD
1051 1205
 #if ENABLED(SAV_3DGLCD)
1052 1206
   //#define U8GLIB_SSD1306
@@ -1081,7 +1235,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1081 1235
 // at zero value, there are 128 effective control positions.
1082 1236
 #define SOFT_PWM_SCALE 0
1083 1237
 
1084
-// Temperature status LEDs that display the hotend and bet temperature.
1238
+// Temperature status LEDs that display the hotend and bed temperature.
1085 1239
 // If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
1086 1240
 // Otherwise the RED led is on. There is 1C hysteresis.
1087 1241
 //#define TEMP_STAT_LEDS
@@ -1113,28 +1267,16 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1113 1267
 //
1114 1268
 //#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
1115 1269
 
1116
-// Servo Endstops
1117
-//
1118
-// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes.
1119
-// Use M851 to set the Z probe vertical offset from the nozzle. Store that setting with M500.
1120
-//
1121
-//#define X_ENDSTOP_SERVO_NR 1
1122
-//#define Y_ENDSTOP_SERVO_NR 2
1123
-//#define Z_ENDSTOP_SERVO_NR 0
1124
-//#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
1125 1274
 
1126 1275
 // Servo deactivation
1127 1276
 //
1128 1277
 // With this option servos are powered only during movement, then turned off to prevent jitter.
1129 1278
 //#define DEACTIVATE_SERVOS_AFTER_MOVE
1130 1279
 
1131
-#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE)
1132
-  // Delay (in microseconds) before turning the servo off. This depends on the servo speed.
1133
-  // 300ms is a good value but you can try less delay.
1134
-  // If the servo can't reach the requested position, increase it.
1135
-  #define SERVO_DEACTIVATION_DELAY 300
1136
-#endif
1137
-
1138 1280
 /**********************************************************************\
1139 1281
  * Support for a filament diameter sensor
1140 1282
  * Also allows adjustment of diameter at print time (vs  at slicing)
@@ -1165,7 +1307,4 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1165 1307
   //#define FILAMENT_LCD_DISPLAY
1166 1308
 #endif
1167 1309
 
1168
-#include "Configuration_adv.h"
1169
-#include "thermistortables.h"
1170
-
1171
-#endif //CONFIGURATION_H
1310
+#endif // CONFIGURATION_H

+ 136
- 47
Marlin/example_configurations/Felix/Configuration_adv.h Просмотреть файл

@@ -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,15 @@
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
+
448 511
 // @section leveling
449 512
 
450 513
 // Default mesh area is an area with an inset margin on the print area.
@@ -488,12 +551,27 @@ const unsigned int dropsegments = 5; //everything with less than this number of
488 551
   #define BLOCK_BUFFER_SIZE 16 // maximize block buffer
489 552
 #endif
490 553
 
491
-// @section more
554
+// @section serial
492 555
 
493
-//The ASCII buffer for receiving from the serial:
556
+// The ASCII buffer for serial input
494 557
 #define MAX_CMD_SIZE 96
495 558
 #define BUFSIZE 4
496 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
+
497 575
 // Bad Serial-connections can miss a received command by sending an 'ok'
498 576
 // Therefore some clients abort after 30 seconds in a timeout.
499 577
 // Some other clients start sending commands while receiving a 'wait'.
@@ -525,16 +603,30 @@ const unsigned int dropsegments = 5; //everything with less than this number of
525 603
 
526 604
 // Add support for experimental filament exchange support M600; requires display
527 605
 #if ENABLED(ULTIPANEL)
528
-  //#define FILAMENTCHANGEENABLE
529
-  #if ENABLED(FILAMENTCHANGEENABLE)
530
-    #define FILAMENTCHANGE_XPOS 3
531
-    #define FILAMENTCHANGE_YPOS 3
532
-    #define FILAMENTCHANGE_ZADD 10
533
-    #define FILAMENTCHANGE_FIRSTRETRACT -2
534
-    #define FILAMENTCHANGE_FINALRETRACT -100
535
-    #define AUTO_FILAMENT_CHANGE                //This extrude filament until you press the button on LCD
536
-    #define AUTO_FILAMENT_CHANGE_LENGTH 0.04    //Extrusion length on automatic extrusion loop
537
-    #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
538 630
   #endif
539 631
 #endif
540 632
 
@@ -680,9 +772,9 @@ const unsigned int dropsegments = 5; //everything with less than this number of
680 772
  * devices on the bus.
681 773
  *
682 774
  * ; Example #1
683
- * ; 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)
684 776
  * ; It uses multiple M155 commands with one B<base 10> arg
685
- * M155 A63  ; Target slave address
777
+ * M155 A99  ; Target slave address
686 778
  * M155 B77  ; M
687 779
  * M155 B97  ; a
688 780
  * M155 B114 ; r
@@ -692,19 +784,16 @@ const unsigned int dropsegments = 5; //everything with less than this number of
692 784
  * M155 S1   ; Send the current buffer
693 785
  *
694 786
  * ; Example #2
695
- * ; Request 6 bytes from slave device with address 0x63
696
- * M156 A63 B5
787
+ * ; Request 6 bytes from slave device with address 0x63 (99)
788
+ * M156 A99 B5
697 789
  *
698 790
  * ; Example #3
699 791
  * ; Example serial output of a M156 request
700
- * echo:i2c-reply: from:63 bytes:5 data:hello
792
+ * echo:i2c-reply: from:99 bytes:5 data:hello
701 793
  */
702 794
 
703 795
 // @section i2cbus
704 796
 
705 797
 //#define EXPERIMENTAL_I2CBUS
706 798
 
707
-#include "Conditionals.h"
708
-#include "SanityCheck.h"
709
-
710
-#endif //CONFIGURATION_ADV_H
799
+#endif // CONFIGURATION_ADV_H

+ 280
- 141
Marlin/example_configurations/Felix/DUAL/Configuration.h Просмотреть файл

@@ -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_RAISE_PROBE_DEPLOY_STOW 15 // Raise to make room for the probe to deploy / stow
527
+#define Z_RAISE_BETWEEN_PROBINGS 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,6 +568,7 @@ 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
571
+
459 572
 //#define MIN_Z_HEIGHT_FOR_HOMING 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
460 573
                                     // Be sure you have this distance over your Z_MAX_POS in case.
461 574
 
@@ -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
@@ -521,8 +634,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
521 634
 // @section bedlevel
522 635
 
523 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.
524 641
 //#define DEBUG_LEVELING_FEATURE
525
-//#define Z_MIN_PROBE_REPEATABILITY_TEST  // If not commented out, Z Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
526 642
 
527 643
 #if ENABLED(AUTO_BED_LEVELING_FEATURE)
528 644
 
@@ -565,58 +681,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
565 681
     #define ABL_PROBE_PT_3_X 170
566 682
     #define ABL_PROBE_PT_3_Y 20
567 683
 
568
-  #endif // AUTO_BED_LEVELING_GRID
569
-
570
-  // Z Probe to nozzle (X,Y) offset, relative to (0, 0).
571
-  // X and Y offsets must be integers.
572
-  //
573
-  // In the following example the X and Y offsets are both positive:
574
-  // #define X_PROBE_OFFSET_FROM_EXTRUDER 10
575
-  // #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
576
-  //
577
-  //    +-- BACK ---+
578
-  //    |           |
579
-  //  L |    (+) P  | R <-- probe (20,20)
580
-  //  E |           | I
581
-  //  F | (-) N (+) | G <-- nozzle (10,10)
582
-  //  T |           | H
583
-  //    |    (-)    | T
584
-  //    |           |
585
-  //    O-- FRONT --+
586
-  //  (0,0)
587
-  #define X_PROBE_OFFSET_FROM_EXTRUDER -25     // X offset: -left  +right  [of the nozzle]
588
-  #define Y_PROBE_OFFSET_FROM_EXTRUDER -29     // Y offset: -front +behind [the nozzle]
589
-  #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35  // Z offset: -below +above  [the nozzle]
590
-
591
-  #define XY_TRAVEL_SPEED 8000         // X and Y axis travel speed between probes, in mm/min.
592
-
593
-  #define Z_RAISE_BEFORE_PROBING 15   // How much the Z axis will be raised before traveling to the first probing point.
594
-  #define Z_RAISE_BETWEEN_PROBINGS 5  // How much the Z axis will be raised when traveling from between next probing points.
595
-  #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
596 685
 
597 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.
598 687
                                                                              // Useful to retract a deployable Z probe.
599 688
 
600
-  // Probes are sensors/switches that need to be activated before they can be used
601
-  // and deactivated after their use.
602
-  // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE
603
-
604
-  // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER
605
-  // when the hardware endstops are active.
606
-  //#define FIX_MOUNTED_PROBE
607
-
608
-  // A Servo Probe can be defined in the servo section below.
609
-
610
-  // An Allen Key Probe is currently predefined only in the delta example configurations.
611
-
612
-  // Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
613
-  //#define Z_PROBE_SLED
614
-  //#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.
615
-
616
-  // A Mechanical Probe is any probe that either doesn't deploy or needs manual deployment
617
-  // For example any setup that uses the nozzle itself as a probe.
618
-  //#define MECHANICAL_PROBE
619
-
620 689
   // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing,
621 690
   // it is highly recommended you also enable Z_SAFE_HOMING below!
622 691
 
@@ -625,18 +694,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
625 694
 
626 695
 // @section homing
627 696
 
628
-// The position of the homing switches
629
-//#define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used
630
-//#define BED_CENTER_AT_0_0  // If defined, the center of the bed is at (X=0, Y=0)
631
-
632
-// Manual homing switch locations:
633
-// For deltabots this means top and center of the Cartesian print volume.
634
-#if ENABLED(MANUAL_HOME_POSITIONS)
635
-  #define MANUAL_X_HOME_POS 0
636
-  #define MANUAL_Y_HOME_POS 0
637
-  #define MANUAL_Z_HOME_POS 0
638
-  //#define MANUAL_Z_HOME_POS 402 // For delta: Distance between nozzle and print surface after homing.
639
-#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
640 705
 
641 706
 // Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
642 707
 //
@@ -644,7 +709,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
644 709
 //
645 710
 // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
646 711
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
647
-// - 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).
648 713
 // - Prevent Z homing when the Z probe is outside bed area.
649 714
 //#define Z_SAFE_HOMING
650 715
 
@@ -653,14 +718,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
653 718
   #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2)    // Y point for Z homing when homing all axis (G28).
654 719
 #endif
655 720
 
721
+// Homing speeds (mm/m)
722
+#define HOMING_FEEDRATE_XY (50*60)
723
+#define HOMING_FEEDRATE_Z  (4*60)
656 724
 
657
-// @section movement
658
-
659
-/**
660
- * MOVEMENT SETTINGS
661
- */
662
-
663
-#define HOMING_FEEDRATE {50*60, 50*60, 4*60, 0}  // set the homing speeds (mm/min)
725
+//
726
+// MOVEMENT SETTINGS
727
+// @section motion
728
+//
664 729
 
665 730
 // default settings
666 731
 
@@ -683,18 +748,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
683 748
 //============================= Additional Features ===========================
684 749
 //=============================================================================
685 750
 
686
-// @section more
687
-
688
-// Custom M code points
689
-#define CUSTOM_M_CODES
690
-#if ENABLED(CUSTOM_M_CODES)
691
-  #if ENABLED(AUTO_BED_LEVELING_FEATURE)
692
-    #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851
693
-    #define Z_PROBE_OFFSET_RANGE_MIN -20
694
-    #define Z_PROBE_OFFSET_RANGE_MAX 20
695
-  #endif
696
-#endif
697
-
698 751
 // @section extras
699 752
 
700 753
 //
@@ -726,22 +779,107 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
726 779
 //
727 780
 //#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose
728 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
+
729 792
 // @section temperature
730 793
 
731 794
 // Preheat Constants
732
-#define PLA_PREHEAT_HOTEND_TEMP 180
733
-#define PLA_PREHEAT_HPB_TEMP 70
734
-#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
802
+
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
735 862
 
736
-#define ABS_PREHEAT_HOTEND_TEMP 240
737
-#define ABS_PREHEAT_HPB_TEMP 100
738
-#define ABS_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
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
739 874
 
740 875
 //
741 876
 // Print job timer
742 877
 //
743 878
 // Enable this option to automatically start and stop the
744
-// 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
745 883
 //
746 884
 // In all cases the timer can be started and stopped using
747 885
 // the following commands:
@@ -774,8 +912,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
774 912
 //
775 913
 // Here you may choose the language used by Marlin on the LCD menus, the following
776 914
 // list of languages are available:
777
-//    en, pl, fr, de, es, ru, bg, it, pt, pt_utf8, pt-br, pt-br_utf8,
778
-//    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'}
779 919
 //
780 920
 //#define LCD_LANGUAGE en
781 921
 
@@ -923,6 +1063,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
923 1063
 //#define ULTIPANEL
924 1064
 
925 1065
 //
1066
+// Cartesio UI
1067
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1068
+//
1069
+//#define CARTESIO_UI
1070
+
1071
+//
926 1072
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
927 1073
 // http://reprap.org/wiki/PanelOne
928 1074
 //
@@ -935,6 +1081,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
935 1081
 //#define MAKRPANEL
936 1082
 
937 1083
 //
1084
+// ReprapWorld Graphical LCD
1085
+// https://reprapworld.com/?products_details&products_id/1218
1086
+//
1087
+//#define REPRAPWORLD_GRAPHICAL_LCD
1088
+
1089
+//
938 1090
 // Activate one of these if you have a Panucatt Devices
939 1091
 // Viki 2.0 or mini Viki with Graphic LCD
940 1092
 // http://panucatt.com
@@ -984,7 +1136,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
984 1136
 // is pressed, a value of 10.0 means 10mm per click.
985 1137
 //
986 1138
 //#define REPRAPWORLD_KEYPAD
987
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1139
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
988 1140
 
989 1141
 //
990 1142
 // RigidBot Panel V1.0
@@ -1044,7 +1196,9 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1044 1196
 //
1045 1197
 //#define U8GLIB_SSD1306
1046 1198
 
1199
+//
1047 1200
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1201
+//
1048 1202
 //#define SAV_3DGLCD
1049 1203
 #if ENABLED(SAV_3DGLCD)
1050 1204
   //#define U8GLIB_SSD1306
@@ -1079,7 +1233,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1079 1233
 // at zero value, there are 128 effective control positions.
1080 1234
 #define SOFT_PWM_SCALE 0
1081 1235
 
1082
-// Temperature status LEDs that display the hotend and bet temperature.
1236
+// Temperature status LEDs that display the hotend and bed temperature.
1083 1237
 // If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
1084 1238
 // Otherwise the RED led is on. There is 1C hysteresis.
1085 1239
 //#define TEMP_STAT_LEDS
@@ -1111,28 +1265,16 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1111 1265
 //
1112 1266
 //#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
1113 1267
 
1114
-// Servo Endstops
1115
-//
1116
-// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes.
1117
-// Use M851 to set the Z probe vertical offset from the nozzle. Store that setting with M500.
1118
-//
1119
-//#define X_ENDSTOP_SERVO_NR 1
1120
-//#define Y_ENDSTOP_SERVO_NR 2
1121
-//#define Z_ENDSTOP_SERVO_NR 0
1122
-//#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
1123 1272
 
1124 1273
 // Servo deactivation
1125 1274
 //
1126 1275
 // With this option servos are powered only during movement, then turned off to prevent jitter.
1127 1276
 //#define DEACTIVATE_SERVOS_AFTER_MOVE
1128 1277
 
1129
-#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE)
1130
-  // Delay (in microseconds) before turning the servo off. This depends on the servo speed.
1131
-  // 300ms is a good value but you can try less delay.
1132
-  // If the servo can't reach the requested position, increase it.
1133
-  #define SERVO_DEACTIVATION_DELAY 300
1134
-#endif
1135
-
1136 1278
 /**********************************************************************\
1137 1279
  * Support for a filament diameter sensor
1138 1280
  * Also allows adjustment of diameter at print time (vs  at slicing)
@@ -1163,7 +1305,4 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1163 1305
   //#define FILAMENT_LCD_DISPLAY
1164 1306
 #endif
1165 1307
 
1166
-#include "Configuration_adv.h"
1167
-#include "thermistortables.h"
1168
-
1169
-#endif //CONFIGURATION_H
1308
+#endif // CONFIGURATION_H

+ 280
- 141
Marlin/example_configurations/Hephestos/Configuration.h Просмотреть файл

@@ -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_RAISE_PROBE_DEPLOY_STOW 15 // Raise to make room for the probe to deploy / stow
539
+#define Z_RAISE_BETWEEN_PROBINGS 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,6 +580,7 @@ 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
583
+
471 584
 //#define MIN_Z_HEIGHT_FOR_HOMING 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
472 585
                                     // Be sure you have this distance over your Z_MAX_POS in case.
473 586
 
@@ -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
@@ -533,8 +646,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
533 646
 // @section bedlevel
534 647
 
535 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.
536 653
 //#define DEBUG_LEVELING_FEATURE
537
-#define Z_MIN_PROBE_REPEATABILITY_TEST  // If not commented out, Z Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
538 654
 
539 655
 #if ENABLED(AUTO_BED_LEVELING_FEATURE)
540 656
 
@@ -577,58 +693,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
577 693
     #define ABL_PROBE_PT_3_X 170
578 694
     #define ABL_PROBE_PT_3_Y 20
579 695
 
580
-  #endif // AUTO_BED_LEVELING_GRID
581
-
582
-  // Z Probe to nozzle (X,Y) offset, relative to (0, 0).
583
-  // X and Y offsets must be integers.
584
-  //
585
-  // In the following example the X and Y offsets are both positive:
586
-  // #define X_PROBE_OFFSET_FROM_EXTRUDER 10
587
-  // #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
588
-  //
589
-  //    +-- BACK ---+
590
-  //    |           |
591
-  //  L |    (+) P  | R <-- probe (20,20)
592
-  //  E |           | I
593
-  //  F | (-) N (+) | G <-- nozzle (10,10)
594
-  //  T |           | H
595
-  //    |    (-)    | T
596
-  //    |           |
597
-  //    O-- FRONT --+
598
-  //  (0,0)
599
-  #define X_PROBE_OFFSET_FROM_EXTRUDER -25     // X offset: -left  +right  [of the nozzle]
600
-  #define Y_PROBE_OFFSET_FROM_EXTRUDER -29     // Y offset: -front +behind [the nozzle]
601
-  #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35  // Z offset: -below +above  [the nozzle]
602
-
603
-  #define XY_TRAVEL_SPEED 8000         // X and Y axis travel speed between probes, in mm/min.
604
-
605
-  #define Z_RAISE_BEFORE_PROBING 15   // How much the Z axis will be raised before traveling to the first probing point.
606
-  #define Z_RAISE_BETWEEN_PROBINGS 5  // How much the Z axis will be raised when traveling from between next probing points.
607
-  #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
608 697
 
609 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.
610 699
                                                                              // Useful to retract a deployable Z probe.
611 700
 
612
-  // Probes are sensors/switches that need to be activated before they can be used
613
-  // and deactivated after their use.
614
-  // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE
615
-
616
-  // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER
617
-  // when the hardware endstops are active.
618
-  //#define FIX_MOUNTED_PROBE
619
-
620
-  // A Servo Probe can be defined in the servo section below.
621
-
622
-  // An Allen Key Probe is currently predefined only in the delta example configurations.
623
-
624
-  // Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
625
-  //#define Z_PROBE_SLED
626
-  //#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.
627
-
628
-  // A Mechanical Probe is any probe that either doesn't deploy or needs manual deployment
629
-  // For example any setup that uses the nozzle itself as a probe.
630
-  //#define MECHANICAL_PROBE
631
-
632 701
   // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing,
633 702
   // it is highly recommended you also enable Z_SAFE_HOMING below!
634 703
 
@@ -637,18 +706,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
637 706
 
638 707
 // @section homing
639 708
 
640
-// The position of the homing switches
641
-//#define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used
642
-//#define BED_CENTER_AT_0_0  // If defined, the center of the bed is at (X=0, Y=0)
643
-
644
-// Manual homing switch locations:
645
-// For deltabots this means top and center of the Cartesian print volume.
646
-#if ENABLED(MANUAL_HOME_POSITIONS)
647
-  #define MANUAL_X_HOME_POS 0
648
-  #define MANUAL_Y_HOME_POS 0
649
-  #define MANUAL_Z_HOME_POS 0
650
-  //#define MANUAL_Z_HOME_POS 402 // For delta: Distance between nozzle and print surface after homing.
651
-#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
652 717
 
653 718
 // Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
654 719
 //
@@ -656,7 +721,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
656 721
 //
657 722
 // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
658 723
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
659
-// - 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).
660 725
 // - Prevent Z homing when the Z probe is outside bed area.
661 726
 //#define Z_SAFE_HOMING
662 727
 
@@ -665,14 +730,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
665 730
   #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2)    // Y point for Z homing when homing all axis (G28).
666 731
 #endif
667 732
 
733
+// Homing speeds (mm/m)
734
+#define HOMING_FEEDRATE_XY 2000
735
+#define HOMING_FEEDRATE_Z  150
668 736
 
669
-// @section movement
670
-
671
-/**
672
- * MOVEMENT SETTINGS
673
- */
674
-
675
-#define HOMING_FEEDRATE {2000, 2000, 150, 0}  // set the homing speeds (mm/min)
737
+//
738
+// MOVEMENT SETTINGS
739
+// @section motion
740
+//
676 741
 
677 742
 // default settings
678 743
 
@@ -694,18 +759,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
694 759
 //============================= Additional Features ===========================
695 760
 //=============================================================================
696 761
 
697
-// @section more
698
-
699
-// Custom M code points
700
-#define CUSTOM_M_CODES
701
-#if ENABLED(CUSTOM_M_CODES)
702
-  #if ENABLED(AUTO_BED_LEVELING_FEATURE)
703
-    #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851
704
-    #define Z_PROBE_OFFSET_RANGE_MIN -20
705
-    #define Z_PROBE_OFFSET_RANGE_MAX 20
706
-  #endif
707
-#endif
708
-
709 762
 // @section extras
710 763
 
711 764
 //
@@ -737,22 +790,107 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
737 790
 //
738 791
 //#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose
739 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
+
740 803
 // @section temperature
741 804
 
742 805
 // Preheat Constants
743
-#define PLA_PREHEAT_HOTEND_TEMP 200
744
-#define PLA_PREHEAT_HPB_TEMP 0
745
-#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
813
+
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
746 873
 
747
-#define ABS_PREHEAT_HOTEND_TEMP 220
748
-#define ABS_PREHEAT_HPB_TEMP 100
749
-#define ABS_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
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
750 885
 
751 886
 //
752 887
 // Print job timer
753 888
 //
754 889
 // Enable this option to automatically start and stop the
755
-// 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
756 894
 //
757 895
 // In all cases the timer can be started and stopped using
758 896
 // the following commands:
@@ -785,8 +923,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
785 923
 //
786 924
 // Here you may choose the language used by Marlin on the LCD menus, the following
787 925
 // list of languages are available:
788
-//    en, pl, fr, de, es, ru, bg, it, pt, pt_utf8, pt-br, pt-br_utf8,
789
-//    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'}
790 930
 //
791 931
 //#define LCD_LANGUAGE en
792 932
 
@@ -934,6 +1074,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
934 1074
 //#define ULTIPANEL
935 1075
 
936 1076
 //
1077
+// Cartesio UI
1078
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1079
+//
1080
+//#define CARTESIO_UI
1081
+
1082
+//
937 1083
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
938 1084
 // http://reprap.org/wiki/PanelOne
939 1085
 //
@@ -946,6 +1092,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
946 1092
 //#define MAKRPANEL
947 1093
 
948 1094
 //
1095
+// ReprapWorld Graphical LCD
1096
+// https://reprapworld.com/?products_details&products_id/1218
1097
+//
1098
+//#define REPRAPWORLD_GRAPHICAL_LCD
1099
+
1100
+//
949 1101
 // Activate one of these if you have a Panucatt Devices
950 1102
 // Viki 2.0 or mini Viki with Graphic LCD
951 1103
 // http://panucatt.com
@@ -995,7 +1147,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
995 1147
 // is pressed, a value of 10.0 means 10mm per click.
996 1148
 //
997 1149
 //#define REPRAPWORLD_KEYPAD
998
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1150
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
999 1151
 
1000 1152
 //
1001 1153
 // RigidBot Panel V1.0
@@ -1055,7 +1207,9 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1055 1207
 //
1056 1208
 //#define U8GLIB_SSD1306
1057 1209
 
1210
+//
1058 1211
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1212
+//
1059 1213
 //#define SAV_3DGLCD
1060 1214
 #if ENABLED(SAV_3DGLCD)
1061 1215
   //#define U8GLIB_SSD1306
@@ -1090,7 +1244,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1090 1244
 // at zero value, there are 128 effective control positions.
1091 1245
 #define SOFT_PWM_SCALE 0
1092 1246
 
1093
-// Temperature status LEDs that display the hotend and bet temperature.
1247
+// Temperature status LEDs that display the hotend and bed temperature.
1094 1248
 // If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
1095 1249
 // Otherwise the RED led is on. There is 1C hysteresis.
1096 1250
 //#define TEMP_STAT_LEDS
@@ -1122,28 +1276,16 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1122 1276
 //
1123 1277
 //#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
1124 1278
 
1125
-// Servo Endstops
1126
-//
1127
-// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes.
1128
-// Use M851 to set the Z probe vertical offset from the nozzle. Store that setting with M500.
1129
-//
1130
-//#define X_ENDSTOP_SERVO_NR 1
1131
-//#define Y_ENDSTOP_SERVO_NR 2
1132
-//#define Z_ENDSTOP_SERVO_NR 0
1133
-//#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
1134 1283
 
1135 1284
 // Servo deactivation
1136 1285
 //
1137 1286
 // With this option servos are powered only during movement, then turned off to prevent jitter.
1138 1287
 //#define DEACTIVATE_SERVOS_AFTER_MOVE
1139 1288
 
1140
-#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE)
1141
-  // Delay (in microseconds) before turning the servo off. This depends on the servo speed.
1142
-  // 300ms is a good value but you can try less delay.
1143
-  // If the servo can't reach the requested position, increase it.
1144
-  #define SERVO_DEACTIVATION_DELAY 300
1145
-#endif
1146
-
1147 1289
 /**********************************************************************\
1148 1290
  * Support for a filament diameter sensor
1149 1291
  * Also allows adjustment of diameter at print time (vs  at slicing)
@@ -1174,7 +1316,4 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1174 1316
   //#define FILAMENT_LCD_DISPLAY
1175 1317
 #endif
1176 1318
 
1177
-#include "Configuration_adv.h"
1178
-#include "thermistortables.h"
1179
-
1180
-#endif //CONFIGURATION_H
1319
+#endif // CONFIGURATION_H

+ 136
- 47
Marlin/example_configurations/Hephestos/Configuration_adv.h Просмотреть файл

@@ -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,15 @@
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
+
448 511
 // @section leveling
449 512
 
450 513
 // Default mesh area is an area with an inset margin on the print area.
@@ -488,12 +551,27 @@ const unsigned int dropsegments = 5; //everything with less than this number of
488 551
   #define BLOCK_BUFFER_SIZE 16 // maximize block buffer
489 552
 #endif
490 553
 
491
-// @section more
554
+// @section serial
492 555
 
493
-//The ASCII buffer for receiving from the serial:
556
+// The ASCII buffer for serial input
494 557
 #define MAX_CMD_SIZE 96
495 558
 #define BUFSIZE 4
496 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
+
497 575
 // Bad Serial-connections can miss a received command by sending an 'ok'
498 576
 // Therefore some clients abort after 30 seconds in a timeout.
499 577
 // Some other clients start sending commands while receiving a 'wait'.
@@ -525,16 +603,30 @@ const unsigned int dropsegments = 5; //everything with less than this number of
525 603
 
526 604
 // Add support for experimental filament exchange support M600; requires display
527 605
 #if ENABLED(ULTIPANEL)
528
-  //#define FILAMENTCHANGEENABLE
529
-  #if ENABLED(FILAMENTCHANGEENABLE)
530
-    #define FILAMENTCHANGE_XPOS 3
531
-    #define FILAMENTCHANGE_YPOS 3
532
-    #define FILAMENTCHANGE_ZADD 10
533
-    #define FILAMENTCHANGE_FIRSTRETRACT -2
534
-    #define FILAMENTCHANGE_FINALRETRACT -100
535
-    #define AUTO_FILAMENT_CHANGE                //This extrude filament until you press the button on LCD
536
-    #define AUTO_FILAMENT_CHANGE_LENGTH 0.04    //Extrusion length on automatic extrusion loop
537
-    #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
538 630
   #endif
539 631
 #endif
540 632
 
@@ -680,9 +772,9 @@ const unsigned int dropsegments = 5; //everything with less than this number of
680 772
  * devices on the bus.
681 773
  *
682 774
  * ; Example #1
683
- * ; 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)
684 776
  * ; It uses multiple M155 commands with one B<base 10> arg
685
- * M155 A63  ; Target slave address
777
+ * M155 A99  ; Target slave address
686 778
  * M155 B77  ; M
687 779
  * M155 B97  ; a
688 780
  * M155 B114 ; r
@@ -692,19 +784,16 @@ const unsigned int dropsegments = 5; //everything with less than this number of
692 784
  * M155 S1   ; Send the current buffer
693 785
  *
694 786
  * ; Example #2
695
- * ; Request 6 bytes from slave device with address 0x63
696
- * M156 A63 B5
787
+ * ; Request 6 bytes from slave device with address 0x63 (99)
788
+ * M156 A99 B5
697 789
  *
698 790
  * ; Example #3
699 791
  * ; Example serial output of a M156 request
700
- * echo:i2c-reply: from:63 bytes:5 data:hello
792
+ * echo:i2c-reply: from:99 bytes:5 data:hello
701 793
  */
702 794
 
703 795
 // @section i2cbus
704 796
 
705 797
 //#define EXPERIMENTAL_I2CBUS
706 798
 
707
-#include "Conditionals.h"
708
-#include "SanityCheck.h"
709
-
710
-#endif //CONFIGURATION_ADV_H
799
+#endif // CONFIGURATION_ADV_H

+ 301
- 162
Marlin/example_configurations/Hephestos_2/Configuration.h Просмотреть файл

@@ -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_RAISE_PROBE_DEPLOY_STOW  5 // Raise to make room for the probe to deploy / stow
541
+#define Z_RAISE_BETWEEN_PROBINGS 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,6 +582,7 @@ 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
585
+
473 586
 #define MIN_Z_HEIGHT_FOR_HOMING 5   // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
474 587
                                     // Be sure you have this distance over your Z_MAX_POS in case.
475 588
 
@@ -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
@@ -535,8 +648,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
535 648
 // @section bedlevel
536 649
 
537 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.
538 655
 //#define DEBUG_LEVELING_FEATURE
539
-#define Z_MIN_PROBE_REPEATABILITY_TEST  // If not commented out, Z Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
540 656
 
541 657
 #if ENABLED(AUTO_BED_LEVELING_FEATURE)
542 658
 
@@ -579,58 +695,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
579 695
     #define ABL_PROBE_PT_3_X ((X_MIN_POS + X_MAX_POS) / 2)
580 696
     #define ABL_PROBE_PT_3_Y Y_MAX_POS - (Y_PROBE_OFFSET_FROM_EXTRUDER)
581 697
 
582
-  #endif // AUTO_BED_LEVELING_GRID
583
-
584
-  // Z Probe to nozzle (X,Y) offset, relative to (0, 0).
585
-  // X and Y offsets must be integers.
586
-  //
587
-  // In the following example the X and Y offsets are both positive:
588
-  // #define X_PROBE_OFFSET_FROM_EXTRUDER 10
589
-  // #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
590
-  //
591
-  //    +-- BACK ---+
592
-  //    |           |
593
-  //  L |    (+) P  | R <-- probe (20,20)
594
-  //  E |           | I
595
-  //  F | (-) N (+) | G <-- nozzle (10,10)
596
-  //  T |           | H
597
-  //    |    (-)    | T
598
-  //    |           |
599
-  //    O-- FRONT --+
600
-  //  (0,0)
601
-  #define X_PROBE_OFFSET_FROM_EXTRUDER 34  // X offset: -left  +right  [of the nozzle]
602
-  #define Y_PROBE_OFFSET_FROM_EXTRUDER 15  // Y offset: -front +behind [the nozzle]
603
-  #define Z_PROBE_OFFSET_FROM_EXTRUDER 0   // Z offset: -below +above  [the nozzle]
604
-
605
-  #define XY_TRAVEL_SPEED 8000         // X and Y axis travel speed between probes, in mm/min.
606
-
607
-  #define Z_RAISE_BEFORE_PROBING   5  // How much the Z axis will be raised before traveling to the first probing point.
608
-  #define Z_RAISE_BETWEEN_PROBINGS 2  // How much the Z axis will be raised when traveling from between next probing points.
609
-  #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
610 699
 
611 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.
612 701
                                                                              // Useful to retract a deployable Z probe.
613 702
 
614
-  // Probes are sensors/switches that need to be activated before they can be used
615
-  // and deactivated after their use.
616
-  // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE
617
-
618
-  // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER
619
-  // when the hardware endstops are active.
620
-  #define FIX_MOUNTED_PROBE
621
-
622
-  // A Servo Probe can be defined in the servo section below.
623
-
624
-  // An Allen Key Probe is currently predefined only in the delta example configurations.
625
-
626
-  // Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
627
-  //#define Z_PROBE_SLED
628
-  //#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.
629
-
630
-  // A Mechanical Probe is any probe that either doesn't deploy or needs manual deployment
631
-  // For example any setup that uses the nozzle itself as a probe.
632
-  //#define MECHANICAL_PROBE
633
-
634 703
   // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing,
635 704
   // it is highly recommended you also enable Z_SAFE_HOMING below!
636 705
 
@@ -639,18 +708,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
639 708
 
640 709
 // @section homing
641 710
 
642
-// The position of the homing switches
643
-//#define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used
644
-//#define BED_CENTER_AT_0_0  // If defined, the center of the bed is at (X=0, Y=0)
645
-
646
-// Manual homing switch locations:
647
-// For deltabots this means top and center of the Cartesian print volume.
648
-#if ENABLED(MANUAL_HOME_POSITIONS)
649
-  #define MANUAL_X_HOME_POS 0
650
-  #define MANUAL_Y_HOME_POS 0
651
-  #define MANUAL_Z_HOME_POS 0
652
-  //#define MANUAL_Z_HOME_POS 402 // For delta: Distance between nozzle and print surface after homing.
653
-#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
654 719
 
655 720
 // Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
656 721
 //
@@ -658,7 +723,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
658 723
 //
659 724
 // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
660 725
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
661
-// - 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).
662 727
 // - Prevent Z homing when the Z probe is outside bed area.
663 728
 #define Z_SAFE_HOMING
664 729
 
@@ -667,47 +732,35 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
667 732
   #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2)    // Y point for Z homing when homing all axis (G28).
668 733
 #endif
669 734
 
735
+// Homing speeds (mm/m)
736
+#define HOMING_FEEDRATE_XY (150*60)
737
+#define HOMING_FEEDRATE_Z  200
670 738
 
671
-// @section movement
672
-
673
-/**
674
- * MOVEMENT SETTINGS
675
- */
676
-
677
-#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
+//
678 743
 
679 744
 // default settings
680 745
 
681
-#define DEFAULT_AXIS_STEPS_PER_UNIT   {160, 160, 8000, 204.146} // default steps per unit for Ultimaker
682
-#define DEFAULT_MAX_FEEDRATE          {200, 200, 3.3, 200}      // (mm/sec)
683
-#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
684 749
 
685 750
 #define DEFAULT_ACCELERATION          1000    // X, Y, Z and E acceleration in mm/s^2 for printing moves
686 751
 #define DEFAULT_RETRACT_ACCELERATION  3000    // E acceleration in mm/s^2 for retracts
687 752
 #define DEFAULT_TRAVEL_ACCELERATION   1000    // X, Y, Z acceleration in mm/s^2 for travel (non printing) moves
688 753
 
689 754
 // The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously)
690
-#define DEFAULT_XYJERK                15.0    // (mm/sec)
691
-#define DEFAULT_ZJERK                 0.4     // (mm/sec)
692
-#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)
693 758
 
694 759
 
695 760
 //=============================================================================
696 761
 //============================= Additional Features ===========================
697 762
 //=============================================================================
698 763
 
699
-// @section more
700
-
701
-// Custom M code points
702
-#define CUSTOM_M_CODES
703
-#if ENABLED(CUSTOM_M_CODES)
704
-  #if ENABLED(AUTO_BED_LEVELING_FEATURE)
705
-    #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851
706
-    #define Z_PROBE_OFFSET_RANGE_MIN -5
707
-    #define Z_PROBE_OFFSET_RANGE_MAX  0
708
-  #endif
709
-#endif
710
-
711 764
 // @section extras
712 765
 
713 766
 //
@@ -739,22 +792,107 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
739 792
 //
740 793
 //#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose
741 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
+
742 805
 // @section temperature
743 806
 
744 807
 // Preheat Constants
745
-#define PLA_PREHEAT_HOTEND_TEMP 210
746
-#define PLA_PREHEAT_HPB_TEMP    70
747
-#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
815
+
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
748 875
 
749
-#define ABS_PREHEAT_HOTEND_TEMP 240
750
-#define ABS_PREHEAT_HPB_TEMP    110
751
-#define ABS_PREHEAT_FAN_SPEED   0   // Insert Value between 0 and 255
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
752 887
 
753 888
 //
754 889
 // Print job timer
755 890
 //
756 891
 // Enable this option to automatically start and stop the
757
-// 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
758 896
 //
759 897
 // In all cases the timer can be started and stopped using
760 898
 // the following commands:
@@ -774,7 +912,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
774 912
 //  - Total time printing
775 913
 //
776 914
 // This information can be viewed by the M78 command.
777
-//#define PRINTCOUNTER
915
+#define PRINTCOUNTER
778 916
 
779 917
 //=============================================================================
780 918
 //============================= LCD and SD support ============================
@@ -787,8 +925,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
787 925
 //
788 926
 // Here you may choose the language used by Marlin on the LCD menus, the following
789 927
 // list of languages are available:
790
-//    en, pl, fr, de, es, ru, bg, it, pt, pt_utf8, pt-br, pt-br_utf8,
791
-//    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'}
792 932
 //
793 933
 #define LCD_LANGUAGE en
794 934
 
@@ -852,7 +992,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
852 992
 //
853 993
 // Use CRC checks and retries on the SD communication.
854 994
 //
855
-//#define SD_CHECK_AND_RETRY
995
+#define SD_CHECK_AND_RETRY
856 996
 
857 997
 //
858 998
 // ENCODER SETTINGS
@@ -936,6 +1076,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
936 1076
 //#define ULTIPANEL
937 1077
 
938 1078
 //
1079
+// Cartesio UI
1080
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1081
+//
1082
+//#define CARTESIO_UI
1083
+
1084
+//
939 1085
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
940 1086
 // http://reprap.org/wiki/PanelOne
941 1087
 //
@@ -948,6 +1094,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
948 1094
 //#define MAKRPANEL
949 1095
 
950 1096
 //
1097
+// ReprapWorld Graphical LCD
1098
+// https://reprapworld.com/?products_details&products_id/1218
1099
+//
1100
+//#define REPRAPWORLD_GRAPHICAL_LCD
1101
+
1102
+//
951 1103
 // Activate one of these if you have a Panucatt Devices
952 1104
 // Viki 2.0 or mini Viki with Graphic LCD
953 1105
 // http://panucatt.com
@@ -997,7 +1149,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
997 1149
 // is pressed, a value of 10.0 means 10mm per click.
998 1150
 //
999 1151
 //#define REPRAPWORLD_KEYPAD
1000
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1152
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1001 1153
 
1002 1154
 //
1003 1155
 // RigidBot Panel V1.0
@@ -1057,7 +1209,9 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1057 1209
 //
1058 1210
 //#define U8GLIB_SSD1306
1059 1211
 
1212
+//
1060 1213
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1214
+//
1061 1215
 //#define SAV_3DGLCD
1062 1216
 #if ENABLED(SAV_3DGLCD)
1063 1217
   //#define U8GLIB_SSD1306
@@ -1092,7 +1246,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1092 1246
 // at zero value, there are 128 effective control positions.
1093 1247
 #define SOFT_PWM_SCALE 0
1094 1248
 
1095
-// Temperature status LEDs that display the hotend and bet temperature.
1249
+// Temperature status LEDs that display the hotend and bed temperature.
1096 1250
 // If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
1097 1251
 // Otherwise the RED led is on. There is 1C hysteresis.
1098 1252
 //#define TEMP_STAT_LEDS
@@ -1124,28 +1278,16 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1124 1278
 //
1125 1279
 //#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
1126 1280
 
1127
-// Servo Endstops
1128
-//
1129
-// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes.
1130
-// Use M851 to set the Z probe vertical offset from the nozzle. Store that setting with M500.
1131
-//
1132
-//#define X_ENDSTOP_SERVO_NR 1
1133
-//#define Y_ENDSTOP_SERVO_NR 2
1134
-//#define Z_ENDSTOP_SERVO_NR 0
1135
-//#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
1136 1285
 
1137 1286
 // Servo deactivation
1138 1287
 //
1139 1288
 // With this option servos are powered only during movement, then turned off to prevent jitter.
1140 1289
 //#define DEACTIVATE_SERVOS_AFTER_MOVE
1141 1290
 
1142
-#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE)
1143
-  // Delay (in microseconds) before turning the servo off. This depends on the servo speed.
1144
-  // 300ms is a good value but you can try less delay.
1145
-  // If the servo can't reach the requested position, increase it.
1146
-  #define SERVO_DEACTIVATION_DELAY 300
1147
-#endif
1148
-
1149 1291
 /**********************************************************************\
1150 1292
  * Support for a filament diameter sensor
1151 1293
  * Also allows adjustment of diameter at print time (vs  at slicing)
@@ -1176,7 +1318,4 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1176 1318
   //#define FILAMENT_LCD_DISPLAY
1177 1319
 #endif
1178 1320
 
1179
-#include "Configuration_adv.h"
1180
-#include "thermistortables.h"
1181
-
1182
-#endif //CONFIGURATION_H
1321
+#endif // CONFIGURATION_H

+ 144
- 55
Marlin/example_configurations/Hephestos_2/Configuration_adv.h Просмотреть файл

@@ -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,15 @@
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
+
448 511
 // @section leveling
449 512
 
450 513
 // Default mesh area is an area with an inset margin on the print area.
@@ -488,12 +551,27 @@ const unsigned int dropsegments = 5; //everything with less than this number of
488 551
   #define BLOCK_BUFFER_SIZE 16 // maximize block buffer
489 552
 #endif
490 553
 
491
-// @section more
554
+// @section serial
492 555
 
493
-//The ASCII buffer for receiving from the serial:
556
+// The ASCII buffer for serial input
494 557
 #define MAX_CMD_SIZE 96
495 558
 #define BUFSIZE 4
496 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
+
497 575
 // Bad Serial-connections can miss a received command by sending an 'ok'
498 576
 // Therefore some clients abort after 30 seconds in a timeout.
499 577
 // Some other clients start sending commands while receiving a 'wait'.
@@ -525,16 +603,30 @@ const unsigned int dropsegments = 5; //everything with less than this number of
525 603
 
526 604
 // Add support for experimental filament exchange support M600; requires display
527 605
 #if ENABLED(ULTIPANEL)
528
-  //#define FILAMENTCHANGEENABLE
529
-  #if ENABLED(FILAMENTCHANGEENABLE)
530
-    #define FILAMENTCHANGE_XPOS 3
531
-    #define FILAMENTCHANGE_YPOS 3
532
-    #define FILAMENTCHANGE_ZADD 10
533
-    #define FILAMENTCHANGE_FIRSTRETRACT -2
534
-    #define FILAMENTCHANGE_FINALRETRACT -100
535
-    #define AUTO_FILAMENT_CHANGE                //This extrude filament until you press the button on LCD
536
-    #define AUTO_FILAMENT_CHANGE_LENGTH 0.04    //Extrusion length on automatic extrusion loop
537
-    #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
538 630
   #endif
539 631
 #endif
540 632
 
@@ -680,9 +772,9 @@ const unsigned int dropsegments = 5; //everything with less than this number of
680 772
  * devices on the bus.
681 773
  *
682 774
  * ; Example #1
683
- * ; 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)
684 776
  * ; It uses multiple M155 commands with one B<base 10> arg
685
- * M155 A63  ; Target slave address
777
+ * M155 A99  ; Target slave address
686 778
  * M155 B77  ; M
687 779
  * M155 B97  ; a
688 780
  * M155 B114 ; r
@@ -692,19 +784,16 @@ const unsigned int dropsegments = 5; //everything with less than this number of
692 784
  * M155 S1   ; Send the current buffer
693 785
  *
694 786
  * ; Example #2
695
- * ; Request 6 bytes from slave device with address 0x63
696
- * M156 A63 B5
787
+ * ; Request 6 bytes from slave device with address 0x63 (99)
788
+ * M156 A99 B5
697 789
  *
698 790
  * ; Example #3
699 791
  * ; Example serial output of a M156 request
700
- * echo:i2c-reply: from:63 bytes:5 data:hello
792
+ * echo:i2c-reply: from:99 bytes:5 data:hello
701 793
  */
702 794
 
703 795
 // @section i2cbus
704 796
 
705 797
 //#define EXPERIMENTAL_I2CBUS
706 798
 
707
-#include "Conditionals.h"
708
-#include "SanityCheck.h"
709
-
710
-#endif //CONFIGURATION_ADV_H
799
+#endif // CONFIGURATION_ADV_H

Marlin/example_configurations/Hephestos_2/readme.md → Marlin/example_configurations/Hephestos_2/README.md Просмотреть файл

@@ -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 Просмотреть файл

@@ -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
+};

+ 280
- 141
Marlin/example_configurations/K8200/Configuration.h Просмотреть файл

@@ -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_RAISE_PROBE_DEPLOY_STOW 15 // Raise to make room for the probe to deploy / stow
564
+#define Z_RAISE_BETWEEN_PROBINGS 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,6 +605,7 @@ 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
608
+
496 609
 //#define MIN_Z_HEIGHT_FOR_HOMING 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
497 610
                                     // Be sure you have this distance over your Z_MAX_POS in case.
498 611
 
@@ -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
@@ -558,8 +671,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
558 671
 // @section bedlevel
559 672
 
560 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.
561 678
 //#define DEBUG_LEVELING_FEATURE
562
-#define Z_MIN_PROBE_REPEATABILITY_TEST  // If not commented out, Z Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
563 679
 
564 680
 #if ENABLED(AUTO_BED_LEVELING_FEATURE)
565 681
 
@@ -602,58 +718,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
602 718
     #define ABL_PROBE_PT_3_X 170
603 719
     #define ABL_PROBE_PT_3_Y 20
604 720
 
605
-  #endif // AUTO_BED_LEVELING_GRID
606
-
607
-  // Z Probe to nozzle (X,Y) offset, relative to (0, 0).
608
-  // X and Y offsets must be integers.
609
-  //
610
-  // In the following example the X and Y offsets are both positive:
611
-  // #define X_PROBE_OFFSET_FROM_EXTRUDER 10
612
-  // #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
613
-  //
614
-  //    +-- BACK ---+
615
-  //    |           |
616
-  //  L |    (+) P  | R <-- probe (20,20)
617
-  //  E |           | I
618
-  //  F | (-) N (+) | G <-- nozzle (10,10)
619
-  //  T |           | H
620
-  //    |    (-)    | T
621
-  //    |           |
622
-  //    O-- FRONT --+
623
-  //  (0,0)
624
-  #define X_PROBE_OFFSET_FROM_EXTRUDER -25     // X offset: -left  +right  [of the nozzle]
625
-  #define Y_PROBE_OFFSET_FROM_EXTRUDER -29     // Y offset: -front +behind [the nozzle]
626
-  #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35  // Z offset: -below +above  [the nozzle]
627
-
628
-  #define XY_TRAVEL_SPEED 8000         // X and Y axis travel speed between probes, in mm/min.
629
-
630
-  #define Z_RAISE_BEFORE_PROBING 15   // How much the Z axis will be raised before traveling to the first probing point.
631
-  #define Z_RAISE_BETWEEN_PROBINGS 5  // How much the Z axis will be raised when traveling from between next probing points.
632
-  #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
633 722
 
634 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.
635 724
                                                                              // Useful to retract a deployable Z probe.
636 725
 
637
-  // Probes are sensors/switches that need to be activated before they can be used
638
-  // and deactivated after their use.
639
-  // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE
640
-
641
-  // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER
642
-  // when the hardware endstops are active.
643
-  //#define FIX_MOUNTED_PROBE
644
-
645
-  // A Servo Probe can be defined in the servo section below.
646
-
647
-  // An Allen Key Probe is currently predefined only in the delta example configurations.
648
-
649
-  // Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
650
-  //#define Z_PROBE_SLED
651
-  //#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.
652
-
653
-  // A Mechanical Probe is any probe that either doesn't deploy or needs manual deployment
654
-  // For example any setup that uses the nozzle itself as a probe.
655
-  //#define MECHANICAL_PROBE
656
-
657 726
   // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing,
658 727
   // it is highly recommended you also enable Z_SAFE_HOMING below!
659 728
 
@@ -662,18 +731,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
662 731
 
663 732
 // @section homing
664 733
 
665
-// The position of the homing switches
666
-//#define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used
667
-//#define BED_CENTER_AT_0_0  // If defined, the center of the bed is at (X=0, Y=0)
668
-
669
-// Manual homing switch locations:
670
-// For deltabots this means top and center of the Cartesian print volume.
671
-#if ENABLED(MANUAL_HOME_POSITIONS)
672
-  #define MANUAL_X_HOME_POS 0
673
-  #define MANUAL_Y_HOME_POS 0
674
-  #define MANUAL_Z_HOME_POS 0
675
-  //#define MANUAL_Z_HOME_POS 402 // For delta: Distance between nozzle and print surface after homing.
676
-#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
677 742
 
678 743
 // Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
679 744
 //
@@ -681,7 +746,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
681 746
 //
682 747
 // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
683 748
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
684
-// - 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).
685 750
 // - Prevent Z homing when the Z probe is outside bed area.
686 751
 //#define Z_SAFE_HOMING
687 752
 
@@ -690,14 +755,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
690 755
   #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2)    // Y point for Z homing when homing all axis (G28).
691 756
 #endif
692 757
 
758
+// Homing speeds (mm/m)
759
+#define HOMING_FEEDRATE_XY (50*60)
760
+#define HOMING_FEEDRATE_Z  (4*60)
693 761
 
694
-// @section movement
695
-
696
-/**
697
- * MOVEMENT SETTINGS
698
- */
699
-
700
-#define HOMING_FEEDRATE {50*60, 50*60, 4*60, 0}  // set the homing speeds (mm/min)
762
+//
763
+// MOVEMENT SETTINGS
764
+// @section motion
765
+//
701 766
 
702 767
 // default settings
703 768
 
@@ -719,18 +784,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
719 784
 //============================= Additional Features ===========================
720 785
 //=============================================================================
721 786
 
722
-// @section more
723
-
724
-// Custom M code points
725
-#define CUSTOM_M_CODES
726
-#if ENABLED(CUSTOM_M_CODES)
727
-  #if ENABLED(AUTO_BED_LEVELING_FEATURE)
728
-    #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851
729
-    #define Z_PROBE_OFFSET_RANGE_MIN -20
730
-    #define Z_PROBE_OFFSET_RANGE_MAX 20
731
-  #endif
732
-#endif
733
-
734 787
 // @section extras
735 788
 
736 789
 //
@@ -762,22 +815,107 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
762 815
 //
763 816
 //#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose
764 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
+
765 828
 // @section temperature
766 829
 
767 830
 // Preheat Constants
768
-#define PLA_PREHEAT_HOTEND_TEMP 190
769
-#define PLA_PREHEAT_HPB_TEMP 50 // K8200: set back to 70 if you have an upgraded heatbed power supply
770
-#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
838
+
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
771 898
 
772
-#define ABS_PREHEAT_HOTEND_TEMP 240
773
-#define ABS_PREHEAT_HPB_TEMP 60 // K8200: set back to 110 if you have an upgraded heatbed power supply
774
-#define ABS_PREHEAT_FAN_SPEED 0   // Insert Value between 0 and 255
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
775 910
 
776 911
 //
777 912
 // Print job timer
778 913
 //
779 914
 // Enable this option to automatically start and stop the
780
-// 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
781 919
 //
782 920
 // In all cases the timer can be started and stopped using
783 921
 // the following commands:
@@ -810,8 +948,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
810 948
 //
811 949
 // Here you may choose the language used by Marlin on the LCD menus, the following
812 950
 // list of languages are available:
813
-//    en, pl, fr, de, es, ru, bg, it, pt, pt_utf8, pt-br, pt-br_utf8,
814
-//    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'}
815 955
 //
816 956
 #define LCD_LANGUAGE en
817 957
 
@@ -959,6 +1099,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
959 1099
 //#define ULTIPANEL
960 1100
 
961 1101
 //
1102
+// Cartesio UI
1103
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1104
+//
1105
+//#define CARTESIO_UI
1106
+
1107
+//
962 1108
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
963 1109
 // http://reprap.org/wiki/PanelOne
964 1110
 //
@@ -971,6 +1117,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
971 1117
 //#define MAKRPANEL
972 1118
 
973 1119
 //
1120
+// ReprapWorld Graphical LCD
1121
+// https://reprapworld.com/?products_details&products_id/1218
1122
+//
1123
+//#define REPRAPWORLD_GRAPHICAL_LCD
1124
+
1125
+//
974 1126
 // Activate one of these if you have a Panucatt Devices
975 1127
 // Viki 2.0 or mini Viki with Graphic LCD
976 1128
 // http://panucatt.com
@@ -1020,7 +1172,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1020 1172
 // is pressed, a value of 10.0 means 10mm per click.
1021 1173
 //
1022 1174
 //#define REPRAPWORLD_KEYPAD
1023
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1175
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1024 1176
 
1025 1177
 //
1026 1178
 // RigidBot Panel V1.0
@@ -1080,7 +1232,9 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1080 1232
 //
1081 1233
 //#define U8GLIB_SSD1306
1082 1234
 
1235
+//
1083 1236
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1237
+//
1084 1238
 //#define SAV_3DGLCD
1085 1239
 #if ENABLED(SAV_3DGLCD)
1086 1240
   //#define U8GLIB_SSD1306
@@ -1115,7 +1269,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1115 1269
 // at zero value, there are 128 effective control positions.
1116 1270
 #define SOFT_PWM_SCALE 0
1117 1271
 
1118
-// Temperature status LEDs that display the hotend and bet temperature.
1272
+// Temperature status LEDs that display the hotend and bed temperature.
1119 1273
 // If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
1120 1274
 // Otherwise the RED led is on. There is 1C hysteresis.
1121 1275
 //#define TEMP_STAT_LEDS
@@ -1147,28 +1301,16 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1147 1301
 //
1148 1302
 //#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
1149 1303
 
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
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
1159 1308
 
1160 1309
 // Servo deactivation
1161 1310
 //
1162 1311
 // With this option servos are powered only during movement, then turned off to prevent jitter.
1163 1312
 //#define DEACTIVATE_SERVOS_AFTER_MOVE
1164 1313
 
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 1314
 /**********************************************************************\
1173 1315
  * Support for a filament diameter sensor
1174 1316
  * Also allows adjustment of diameter at print time (vs  at slicing)
@@ -1199,7 +1341,4 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1199 1341
   //#define FILAMENT_LCD_DISPLAY
1200 1342
 #endif
1201 1343
 
1202
-#include "Configuration_adv.h"
1203
-#include "thermistortables.h"
1204
-
1205
-#endif //CONFIGURATION_H
1344
+#endif // CONFIGURATION_H

+ 136
- 47
Marlin/example_configurations/K8200/Configuration_adv.h Просмотреть файл

@@ -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,15 @@
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
+
454 517
 // @section leveling
455 518
 
456 519
 // Default mesh area is an area with an inset margin on the print area.
@@ -494,12 +557,27 @@ const unsigned int dropsegments = 2; //everything with less than this number of
494 557
   #define BLOCK_BUFFER_SIZE 32 // maximize block buffer
495 558
 #endif
496 559
 
497
-// @section more
560
+// @section serial
498 561
 
499
-//The ASCII buffer for receiving from the serial:
562
+// The ASCII buffer for serial input
500 563
 #define MAX_CMD_SIZE 96
501 564
 #define BUFSIZE 4
502 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
+
503 581
 // Bad Serial-connections can miss a received command by sending an 'ok'
504 582
 // Therefore some clients abort after 30 seconds in a timeout.
505 583
 // Some other clients start sending commands while receiving a 'wait'.
@@ -531,16 +609,30 @@ const unsigned int dropsegments = 2; //everything with less than this number of
531 609
 
532 610
 // Add support for experimental filament exchange support M600; requires display
533 611
 #if ENABLED(ULTIPANEL)
534
-  //#define FILAMENTCHANGEENABLE
535
-  #if ENABLED(FILAMENTCHANGEENABLE)
536
-    #define FILAMENTCHANGE_XPOS 3
537
-    #define FILAMENTCHANGE_YPOS 3
538
-    #define FILAMENTCHANGE_ZADD 10
539
-    #define FILAMENTCHANGE_FIRSTRETRACT -2
540
-    #define FILAMENTCHANGE_FINALRETRACT -100
541
-    #define AUTO_FILAMENT_CHANGE                //This extrude filament until you press the button on LCD
542
-    #define AUTO_FILAMENT_CHANGE_LENGTH 0.04    //Extrusion length on automatic extrusion loop
543
-    #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
544 636
   #endif
545 637
 #endif
546 638
 
@@ -686,9 +778,9 @@ const unsigned int dropsegments = 2; //everything with less than this number of
686 778
  * devices on the bus.
687 779
  *
688 780
  * ; Example #1
689
- * ; 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)
690 782
  * ; It uses multiple M155 commands with one B<base 10> arg
691
- * M155 A63  ; Target slave address
783
+ * M155 A99  ; Target slave address
692 784
  * M155 B77  ; M
693 785
  * M155 B97  ; a
694 786
  * M155 B114 ; r
@@ -698,19 +790,16 @@ const unsigned int dropsegments = 2; //everything with less than this number of
698 790
  * M155 S1   ; Send the current buffer
699 791
  *
700 792
  * ; Example #2
701
- * ; Request 6 bytes from slave device with address 0x63
702
- * M156 A63 B5
793
+ * ; Request 6 bytes from slave device with address 0x63 (99)
794
+ * M156 A99 B5
703 795
  *
704 796
  * ; Example #3
705 797
  * ; Example serial output of a M156 request
706
- * echo:i2c-reply: from:63 bytes:5 data:hello
798
+ * echo:i2c-reply: from:99 bytes:5 data:hello
707 799
  */
708 800
 
709 801
 // @section i2cbus
710 802
 
711 803
 //#define EXPERIMENTAL_I2CBUS
712 804
 
713
-#include "Conditionals.h"
714
-#include "SanityCheck.h"
715
-
716
-#endif //CONFIGURATION_ADV_H
805
+#endif // CONFIGURATION_ADV_H

Marlin/example_configurations/K8200/readme.md → Marlin/example_configurations/K8200/README.md Просмотреть файл


+ 1327
- 0
Marlin/example_configurations/K8400/Configuration.h
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 799
- 0
Marlin/example_configurations/K8400/Configuration_adv.h Просмотреть файл

@@ -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
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 15
- 0
Marlin/example_configurations/K8400/README.md Просмотреть файл

@@ -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

+ 280
- 141
Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h Просмотреть файл

@@ -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_RAISE_PROBE_DEPLOY_STOW 15 // Raise to make room for the probe to deploy / stow
547
+#define Z_RAISE_BETWEEN_PROBINGS 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,6 +588,7 @@ 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
591
+
479 592
 //#define MIN_Z_HEIGHT_FOR_HOMING 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
480 593
                                     // Be sure you have this distance over your Z_MAX_POS in case.
481 594
 
@@ -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
@@ -541,8 +654,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
541 654
 // @section bedlevel
542 655
 
543 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.
544 661
 //#define DEBUG_LEVELING_FEATURE
545
-#define Z_MIN_PROBE_REPEATABILITY_TEST  // If not commented out, Z Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
546 662
 
547 663
 #if ENABLED(AUTO_BED_LEVELING_FEATURE)
548 664
 
@@ -585,58 +701,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
585 701
     #define ABL_PROBE_PT_3_X 170
586 702
     #define ABL_PROBE_PT_3_Y 20
587 703
 
588
-  #endif // AUTO_BED_LEVELING_GRID
589
-
590
-  // Z Probe to nozzle (X,Y) offset, relative to (0, 0).
591
-  // X and Y offsets must be integers.
592
-  //
593
-  // In the following example the X and Y offsets are both positive:
594
-  // #define X_PROBE_OFFSET_FROM_EXTRUDER 10
595
-  // #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
596
-  //
597
-  //    +-- BACK ---+
598
-  //    |           |
599
-  //  L |    (+) P  | R <-- probe (20,20)
600
-  //  E |           | I
601
-  //  F | (-) N (+) | G <-- nozzle (10,10)
602
-  //  T |           | H
603
-  //    |    (-)    | T
604
-  //    |           |
605
-  //    O-- FRONT --+
606
-  //  (0,0)
607
-  #define X_PROBE_OFFSET_FROM_EXTRUDER -25     // X offset: -left  +right  [of the nozzle]
608
-  #define Y_PROBE_OFFSET_FROM_EXTRUDER -29     // Y offset: -front +behind [the nozzle]
609
-  #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35  // Z offset: -below +above  [the nozzle]
610
-
611
-  #define XY_TRAVEL_SPEED 8000         // X and Y axis travel speed between probes, in mm/min.
612
-
613
-  #define Z_RAISE_BEFORE_PROBING 15   // How much the Z axis will be raised before traveling to the first probing point.
614
-  #define Z_RAISE_BETWEEN_PROBINGS 5  // How much the Z axis will be raised when traveling from between next probing points.
615
-  #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
616 705
 
617 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.
618 707
                                                                              // Useful to retract a deployable Z probe.
619 708
 
620
-  // Probes are sensors/switches that need to be activated before they can be used
621
-  // and deactivated after their use.
622
-  // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE
623
-
624
-  // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER
625
-  // when the hardware endstops are active.
626
-  //#define FIX_MOUNTED_PROBE
627
-
628
-  // A Servo Probe can be defined in the servo section below.
629
-
630
-  // An Allen Key Probe is currently predefined only in the delta example configurations.
631
-
632
-  // Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
633
-  //#define Z_PROBE_SLED
634
-  //#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.
635
-
636
-  // A Mechanical Probe is any probe that either doesn't deploy or needs manual deployment
637
-  // For example any setup that uses the nozzle itself as a probe.
638
-  //#define MECHANICAL_PROBE
639
-
640 709
   // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing,
641 710
   // it is highly recommended you also enable Z_SAFE_HOMING below!
642 711
 
@@ -645,18 +714,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
645 714
 
646 715
 // @section homing
647 716
 
648
-// The position of the homing switches
649
-//#define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used
650
-//#define BED_CENTER_AT_0_0  // If defined, the center of the bed is at (X=0, Y=0)
651
-
652
-// Manual homing switch locations:
653
-// For deltabots this means top and center of the Cartesian print volume.
654
-#if ENABLED(MANUAL_HOME_POSITIONS)
655
-  #define MANUAL_X_HOME_POS 0
656
-  #define MANUAL_Y_HOME_POS 0
657
-  #define MANUAL_Z_HOME_POS 0
658
-  //#define MANUAL_Z_HOME_POS 402 // For delta: Distance between nozzle and print surface after homing.
659
-#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
660 725
 
661 726
 // Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
662 727
 //
@@ -664,7 +729,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
664 729
 //
665 730
 // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
666 731
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
667
-// - 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).
668 733
 // - Prevent Z homing when the Z probe is outside bed area.
669 734
 //#define Z_SAFE_HOMING
670 735
 
@@ -673,14 +738,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
673 738
   #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2)    // Y point for Z homing when homing all axis (G28).
674 739
 #endif
675 740
 
741
+// Homing speeds (mm/m)
742
+#define HOMING_FEEDRATE_XY (50*60)
743
+#define HOMING_FEEDRATE_Z  (4*60)
676 744
 
677
-// @section movement
678
-
679
-/**
680
- * MOVEMENT SETTINGS
681
- */
682
-
683
-#define HOMING_FEEDRATE {50*60, 50*60, 4*60, 0}  // set the homing speeds (mm/min)
745
+//
746
+// MOVEMENT SETTINGS
747
+// @section motion
748
+//
684 749
 
685 750
 // default settings
686 751
 
@@ -702,18 +767,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
702 767
 //============================= Additional Features ===========================
703 768
 //=============================================================================
704 769
 
705
-// @section more
706
-
707
-// Custom M code points
708
-#define CUSTOM_M_CODES
709
-#if ENABLED(CUSTOM_M_CODES)
710
-  #if ENABLED(AUTO_BED_LEVELING_FEATURE)
711
-    #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851
712
-    #define Z_PROBE_OFFSET_RANGE_MIN -20
713
-    #define Z_PROBE_OFFSET_RANGE_MAX 20
714
-  #endif
715
-#endif
716
-
717 770
 // @section extras
718 771
 
719 772
 //
@@ -745,22 +798,107 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
745 798
 //
746 799
 //#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose
747 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
+
748 811
 // @section temperature
749 812
 
750 813
 // Preheat Constants
751
-#define PLA_PREHEAT_HOTEND_TEMP 180
752
-#define PLA_PREHEAT_HPB_TEMP 70
753
-#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
821
+
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
754 881
 
755
-#define ABS_PREHEAT_HOTEND_TEMP 240
756
-#define ABS_PREHEAT_HPB_TEMP 110
757
-#define ABS_PREHEAT_FAN_SPEED 0   // Insert Value between 0 and 255
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
758 893
 
759 894
 //
760 895
 // Print job timer
761 896
 //
762 897
 // Enable this option to automatically start and stop the
763
-// 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
764 902
 //
765 903
 // In all cases the timer can be started and stopped using
766 904
 // the following commands:
@@ -793,8 +931,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
793 931
 //
794 932
 // Here you may choose the language used by Marlin on the LCD menus, the following
795 933
 // list of languages are available:
796
-//    en, pl, fr, de, es, ru, bg, it, pt, pt_utf8, pt-br, pt-br_utf8,
797
-//    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'}
798 938
 //
799 939
 #define LCD_LANGUAGE en
800 940
 
@@ -942,6 +1082,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
942 1082
 //#define ULTIPANEL
943 1083
 
944 1084
 //
1085
+// Cartesio UI
1086
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1087
+//
1088
+//#define CARTESIO_UI
1089
+
1090
+//
945 1091
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
946 1092
 // http://reprap.org/wiki/PanelOne
947 1093
 //
@@ -954,6 +1100,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
954 1100
 //#define MAKRPANEL
955 1101
 
956 1102
 //
1103
+// ReprapWorld Graphical LCD
1104
+// https://reprapworld.com/?products_details&products_id/1218
1105
+//
1106
+//#define REPRAPWORLD_GRAPHICAL_LCD
1107
+
1108
+//
957 1109
 // Activate one of these if you have a Panucatt Devices
958 1110
 // Viki 2.0 or mini Viki with Graphic LCD
959 1111
 // 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
@@ -1063,7 +1215,9 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1063 1215
 //
1064 1216
 //#define U8GLIB_SSD1306
1065 1217
 
1218
+//
1066 1219
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1220
+//
1067 1221
 //#define SAV_3DGLCD
1068 1222
 #if ENABLED(SAV_3DGLCD)
1069 1223
   //#define U8GLIB_SSD1306
@@ -1098,7 +1252,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1098 1252
 // at zero value, there are 128 effective control positions.
1099 1253
 #define SOFT_PWM_SCALE 0
1100 1254
 
1101
-// Temperature status LEDs that display the hotend and bet temperature.
1255
+// Temperature status LEDs that display the hotend and bed temperature.
1102 1256
 // If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
1103 1257
 // Otherwise the RED led is on. There is 1C hysteresis.
1104 1258
 //#define TEMP_STAT_LEDS
@@ -1130,28 +1284,16 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1130 1284
 //
1131 1285
 //#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
1132 1286
 
1133
-// Servo Endstops
1134
-//
1135
-// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes.
1136
-// Use M851 to set the Z probe vertical offset from the nozzle. Store that setting with M500.
1137
-//
1138
-//#define X_ENDSTOP_SERVO_NR 1
1139
-//#define Y_ENDSTOP_SERVO_NR 2
1140
-//#define Z_ENDSTOP_SERVO_NR 0
1141
-//#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
1142 1291
 
1143 1292
 // Servo deactivation
1144 1293
 //
1145 1294
 // With this option servos are powered only during movement, then turned off to prevent jitter.
1146 1295
 //#define DEACTIVATE_SERVOS_AFTER_MOVE
1147 1296
 
1148
-#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE)
1149
-  // Delay (in microseconds) before turning the servo off. This depends on the servo speed.
1150
-  // 300ms is a good value but you can try less delay.
1151
-  // If the servo can't reach the requested position, increase it.
1152
-  #define SERVO_DEACTIVATION_DELAY 300
1153
-#endif
1154
-
1155 1297
 /**********************************************************************\
1156 1298
  * Support for a filament diameter sensor
1157 1299
  * Also allows adjustment of diameter at print time (vs  at slicing)
@@ -1182,7 +1324,4 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1182 1324
   //#define FILAMENT_LCD_DISPLAY
1183 1325
 #endif
1184 1326
 
1185
-#include "Configuration_adv.h"
1186
-#include "thermistortables.h"
1187
-
1188
-#endif //CONFIGURATION_H
1327
+#endif // CONFIGURATION_H

+ 284
- 142
Marlin/example_configurations/RigidBot/Configuration.h Просмотреть файл

@@ -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_RAISE_PROBE_DEPLOY_STOW 15 // Raise to make room for the probe to deploy / stow
544
+#define Z_RAISE_BETWEEN_PROBINGS 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,6 +585,7 @@ 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
588
+
473 589
 //#define MIN_Z_HEIGHT_FOR_HOMING 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
474 590
                                     // Be sure you have this distance over your Z_MAX_POS in case.
475 591
 
@@ -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
@@ -535,8 +651,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
535 651
 // @section bedlevel
536 652
 
537 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.
538 658
 //#define DEBUG_LEVELING_FEATURE
539
-//#define Z_MIN_PROBE_REPEATABILITY_TEST  // If not commented out, Z Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
540 659
 
541 660
 #if ENABLED(AUTO_BED_LEVELING_FEATURE)
542 661
 
@@ -579,58 +698,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
579 698
     #define ABL_PROBE_PT_3_X 170
580 699
     #define ABL_PROBE_PT_3_Y 20
581 700
 
582
-  #endif // AUTO_BED_LEVELING_GRID
583
-
584
-  // Z Probe to nozzle (X,Y) offset, relative to (0, 0).
585
-  // X and Y offsets must be integers.
586
-  //
587
-  // In the following example the X and Y offsets are both positive:
588
-  // #define X_PROBE_OFFSET_FROM_EXTRUDER 10
589
-  // #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
590
-  //
591
-  //    +-- BACK ---+
592
-  //    |           |
593
-  //  L |    (+) P  | R <-- probe (20,20)
594
-  //  E |           | I
595
-  //  F | (-) N (+) | G <-- nozzle (10,10)
596
-  //  T |           | H
597
-  //    |    (-)    | T
598
-  //    |           |
599
-  //    O-- FRONT --+
600
-  //  (0,0)
601
-  #define X_PROBE_OFFSET_FROM_EXTRUDER -25     // X offset: -left  +right  [of the nozzle]
602
-  #define Y_PROBE_OFFSET_FROM_EXTRUDER -29     // Y offset: -front +behind [the nozzle]
603
-  #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35  // Z offset: -below +above  [the nozzle]
604
-
605
-  #define XY_TRAVEL_SPEED 8000         // X and Y axis travel speed between probes, in mm/min.
606
-
607
-  #define Z_RAISE_BEFORE_PROBING 15   // How much the Z axis will be raised before traveling to the first probing point.
608
-  #define Z_RAISE_BETWEEN_PROBINGS 5  // How much the Z axis will be raised when traveling from between next probing points.
609
-  #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
610 702
 
611 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.
612 704
                                                                              // Useful to retract a deployable Z probe.
613 705
 
614
-  // Probes are sensors/switches that need to be activated before they can be used
615
-  // and deactivated after their use.
616
-  // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE
617
-
618
-  // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER
619
-  // when the hardware endstops are active.
620
-  //#define FIX_MOUNTED_PROBE
621
-
622
-  // A Servo Probe can be defined in the servo section below.
623
-
624
-  // An Allen Key Probe is currently predefined only in the delta example configurations.
625
-
626
-  // Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
627
-  //#define Z_PROBE_SLED
628
-  //#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.
629
-
630
-  // A Mechanical Probe is any probe that either doesn't deploy or needs manual deployment
631
-  // For example any setup that uses the nozzle itself as a probe.
632
-  //#define MECHANICAL_PROBE
633
-
634 706
   // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing,
635 707
   // it is highly recommended you also enable Z_SAFE_HOMING below!
636 708
 
@@ -639,18 +711,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
639 711
 
640 712
 // @section homing
641 713
 
642
-// The position of the homing switches
643
-//#define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used
644
-//#define BED_CENTER_AT_0_0  // If defined, the center of the bed is at (X=0, Y=0)
645
-
646
-// Manual homing switch locations:
647
-// For deltabots this means top and center of the Cartesian print volume.
648
-#if ENABLED(MANUAL_HOME_POSITIONS)
649
-  #define MANUAL_X_HOME_POS 0
650
-  #define MANUAL_Y_HOME_POS 0
651
-  #define MANUAL_Z_HOME_POS 0
652
-  //#define MANUAL_Z_HOME_POS 402 // For delta: Distance between nozzle and print surface after homing.
653
-#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
654 722
 
655 723
 // Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
656 724
 //
@@ -658,7 +726,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
658 726
 //
659 727
 // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
660 728
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
661
-// - 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).
662 730
 // - Prevent Z homing when the Z probe is outside bed area.
663 731
 //#define Z_SAFE_HOMING
664 732
 
@@ -667,14 +735,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
667 735
   #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2)    // Y point for Z homing when homing all axis (G28).
668 736
 #endif
669 737
 
738
+// Homing speeds (mm/m)
739
+#define HOMING_FEEDRATE_XY (50*60)
740
+#define HOMING_FEEDRATE_Z  (15*60)
670 741
 
671
-// @section movement
672
-
673
-/**
674
- * MOVEMENT SETTINGS
675
- */
676
-
677
-#define HOMING_FEEDRATE {50*60, 50*60, 15*60, 0}  // set the homing speeds (mm/min)
742
+//
743
+// MOVEMENT SETTINGS
744
+// @section motion
745
+//
678 746
 
679 747
 // default settings
680 748
 
@@ -697,18 +765,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
697 765
 //============================= Additional Features ===========================
698 766
 //=============================================================================
699 767
 
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 768
 // @section extras
713 769
 
714 770
 //
@@ -740,22 +796,107 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
740 796
 //
741 797
 //#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose
742 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
+
743 809
 // @section temperature
744 810
 
745 811
 // Preheat Constants
746
-#define PLA_PREHEAT_HOTEND_TEMP 180
747
-#define PLA_PREHEAT_HPB_TEMP 70
748
-#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
749 815
 
750
-#define ABS_PREHEAT_HOTEND_TEMP 240
751
-#define ABS_PREHEAT_HPB_TEMP 110
752
-#define ABS_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
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
883
+
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
753 891
 
754 892
 //
755 893
 // Print job timer
756 894
 //
757 895
 // Enable this option to automatically start and stop the
758
-// 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
759 900
 //
760 901
 // In all cases the timer can be started and stopped using
761 902
 // the following commands:
@@ -788,8 +929,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
788 929
 //
789 930
 // Here you may choose the language used by Marlin on the LCD menus, the following
790 931
 // 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
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'}
793 936
 //
794 937
 #define LCD_LANGUAGE en
795 938
 
@@ -937,6 +1080,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
937 1080
 //#define ULTIPANEL
938 1081
 
939 1082
 //
1083
+// Cartesio UI
1084
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1085
+//
1086
+//#define CARTESIO_UI
1087
+
1088
+//
940 1089
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
941 1090
 // http://reprap.org/wiki/PanelOne
942 1091
 //
@@ -949,6 +1098,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
949 1098
 //#define MAKRPANEL
950 1099
 
951 1100
 //
1101
+// ReprapWorld Graphical LCD
1102
+// https://reprapworld.com/?products_details&products_id/1218
1103
+//
1104
+//#define REPRAPWORLD_GRAPHICAL_LCD
1105
+
1106
+//
952 1107
 // Activate one of these if you have a Panucatt Devices
953 1108
 // Viki 2.0 or mini Viki with Graphic LCD
954 1109
 // http://panucatt.com
@@ -1000,7 +1155,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1000 1155
 // is pressed, a value of 10.0 means 10mm per click.
1001 1156
 //
1002 1157
 //#define REPRAPWORLD_KEYPAD
1003
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1158
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1004 1159
 
1005 1160
 //
1006 1161
 // RigidBot Panel V1.0
@@ -1060,7 +1215,9 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1060 1215
 //
1061 1216
 //#define U8GLIB_SSD1306
1062 1217
 
1218
+//
1063 1219
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1220
+//
1064 1221
 //#define SAV_3DGLCD
1065 1222
 #if ENABLED(SAV_3DGLCD)
1066 1223
   //#define U8GLIB_SSD1306
@@ -1095,7 +1252,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1095 1252
 // at zero value, there are 128 effective control positions.
1096 1253
 #define SOFT_PWM_SCALE 0
1097 1254
 
1098
-// Temperature status LEDs that display the hotend and bet temperature.
1255
+// Temperature status LEDs that display the hotend and bed temperature.
1099 1256
 // If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
1100 1257
 // Otherwise the RED led is on. There is 1C hysteresis.
1101 1258
 //#define TEMP_STAT_LEDS
@@ -1127,28 +1284,16 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1127 1284
 //
1128 1285
 #define NUM_SERVOS 0 // DGlass3D - Servo index starts with 0 for M280 command
1129 1286
 
1130
-// Servo Endstops
1131
-//
1132
-// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes.
1133
-// Use M851 to set the Z probe vertical offset from the nozzle. Store that setting with M500.
1134
-//
1135
-//#define X_ENDSTOP_SERVO_NR 1
1136
-//#define Y_ENDSTOP_SERVO_NR 2
1137
-//#define Z_ENDSTOP_SERVO_NR 0
1138
-//#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
1139 1291
 
1140 1292
 // Servo deactivation
1141 1293
 //
1142 1294
 // With this option servos are powered only during movement, then turned off to prevent jitter.
1143 1295
 //#define DEACTIVATE_SERVOS_AFTER_MOVE
1144 1296
 
1145
-#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE)
1146
-  // Delay (in microseconds) before turning the servo off. This depends on the servo speed.
1147
-  // 300ms is a good value but you can try less delay.
1148
-  // If the servo can't reach the requested position, increase it.
1149
-  #define SERVO_DEACTIVATION_DELAY 300
1150
-#endif
1151
-
1152 1297
 /**********************************************************************\
1153 1298
  * Support for a filament diameter sensor
1154 1299
  * Also allows adjustment of diameter at print time (vs  at slicing)
@@ -1179,7 +1324,4 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1179 1324
   //#define FILAMENT_LCD_DISPLAY
1180 1325
 #endif
1181 1326
 
1182
-#include "Configuration_adv.h"
1183
-#include "thermistortables.h"
1184
-
1185
-#endif //CONFIGURATION_H
1327
+#endif // CONFIGURATION_H

+ 136
- 47
Marlin/example_configurations/RigidBot/Configuration_adv.h Просмотреть файл

@@ -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,15 @@
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
+
448 511
 // @section leveling
449 512
 
450 513
 // Default mesh area is an area with an inset margin on the print area.
@@ -488,12 +551,27 @@ const unsigned int dropsegments = 5; //everything with less than this number of
488 551
   #define BLOCK_BUFFER_SIZE 16 // maximize block buffer
489 552
 #endif
490 553
 
491
-// @section more
554
+// @section serial
492 555
 
493
-//The ASCII buffer for receiving from the serial:
556
+// The ASCII buffer for serial input
494 557
 #define MAX_CMD_SIZE 96
495 558
 #define BUFSIZE 8
496 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
+
497 575
 // Bad Serial-connections can miss a received command by sending an 'ok'
498 576
 // Therefore some clients abort after 30 seconds in a timeout.
499 577
 // Some other clients start sending commands while receiving a 'wait'.
@@ -525,16 +603,30 @@ const unsigned int dropsegments = 5; //everything with less than this number of
525 603
 
526 604
 // Add support for experimental filament exchange support M600; requires display
527 605
 #if ENABLED(ULTIPANEL)
528
-  //#define FILAMENTCHANGEENABLE
529
-  #if ENABLED(FILAMENTCHANGEENABLE)
530
-    #define FILAMENTCHANGE_XPOS 3
531
-    #define FILAMENTCHANGE_YPOS 3
532
-    #define FILAMENTCHANGE_ZADD 10
533
-    #define FILAMENTCHANGE_FIRSTRETRACT -2
534
-    #define FILAMENTCHANGE_FINALRETRACT -100
535
-    #define AUTO_FILAMENT_CHANGE                //This extrude filament until you press the button on LCD
536
-    #define AUTO_FILAMENT_CHANGE_LENGTH 0.04    //Extrusion length on automatic extrusion loop
537
-    #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
538 630
   #endif
539 631
 #endif
540 632
 
@@ -680,9 +772,9 @@ const unsigned int dropsegments = 5; //everything with less than this number of
680 772
  * devices on the bus.
681 773
  *
682 774
  * ; Example #1
683
- * ; 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)
684 776
  * ; It uses multiple M155 commands with one B<base 10> arg
685
- * M155 A63  ; Target slave address
777
+ * M155 A99  ; Target slave address
686 778
  * M155 B77  ; M
687 779
  * M155 B97  ; a
688 780
  * M155 B114 ; r
@@ -692,19 +784,16 @@ const unsigned int dropsegments = 5; //everything with less than this number of
692 784
  * M155 S1   ; Send the current buffer
693 785
  *
694 786
  * ; Example #2
695
- * ; Request 6 bytes from slave device with address 0x63
696
- * M156 A63 B5
787
+ * ; Request 6 bytes from slave device with address 0x63 (99)
788
+ * M156 A99 B5
697 789
  *
698 790
  * ; Example #3
699 791
  * ; Example serial output of a M156 request
700
- * echo:i2c-reply: from:63 bytes:5 data:hello
792
+ * echo:i2c-reply: from:99 bytes:5 data:hello
701 793
  */
702 794
 
703 795
 // @section i2cbus
704 796
 
705 797
 //#define EXPERIMENTAL_I2CBUS
706 798
 
707
-#include "Conditionals.h"
708
-#include "SanityCheck.h"
709
-
710
-#endif //CONFIGURATION_ADV_H
799
+#endif // CONFIGURATION_ADV_H

+ 280
- 141
Marlin/example_configurations/SCARA/Configuration.h Просмотреть файл

@@ -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_RAISE_PROBE_DEPLOY_STOW 15 // Raise to make room for the probe to deploy / stow
555
+#define Z_RAISE_BETWEEN_PROBINGS 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,6 +596,7 @@ 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
599
+
487 600
 //#define MIN_Z_HEIGHT_FOR_HOMING 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
488 601
                                     // Be sure you have this distance over your Z_MAX_POS in case.
489 602
 
@@ -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
@@ -549,8 +662,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
549 662
 // @section bedlevel
550 663
 
551 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.
552 669
 //#define DEBUG_LEVELING_FEATURE
553
-//#define Z_MIN_PROBE_REPEATABILITY_TEST  // If not commented out, Z Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
554 670
 
555 671
 #if ENABLED(AUTO_BED_LEVELING_FEATURE)
556 672
 
@@ -593,58 +709,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
593 709
     #define ABL_PROBE_PT_3_X 170
594 710
     #define ABL_PROBE_PT_3_Y 20
595 711
 
596
-  #endif // AUTO_BED_LEVELING_GRID
597
-
598
-  // Z Probe to nozzle (X,Y) offset, relative to (0, 0).
599
-  // X and Y offsets must be integers.
600
-  //
601
-  // In the following example the X and Y offsets are both positive:
602
-  // #define X_PROBE_OFFSET_FROM_EXTRUDER 10
603
-  // #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
604
-  //
605
-  //    +-- BACK ---+
606
-  //    |           |
607
-  //  L |    (+) P  | R <-- probe (20,20)
608
-  //  E |           | I
609
-  //  F | (-) N (+) | G <-- nozzle (10,10)
610
-  //  T |           | H
611
-  //    |    (-)    | T
612
-  //    |           |
613
-  //    O-- FRONT --+
614
-  //  (0,0)
615
-  #define X_PROBE_OFFSET_FROM_EXTRUDER -25     // X offset: -left  +right  [of the nozzle]
616
-  #define Y_PROBE_OFFSET_FROM_EXTRUDER -29     // Y offset: -front +behind [the nozzle]
617
-  #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35  // Z offset: -below +above  [the nozzle]
618
-
619
-  #define XY_TRAVEL_SPEED 8000         // X and Y axis travel speed between probes, in mm/min.
620
-
621
-  #define Z_RAISE_BEFORE_PROBING 15   // How much the Z axis will be raised before traveling to the first probing point.
622
-  #define Z_RAISE_BETWEEN_PROBINGS 5  // How much the Z axis will be raised when traveling from between next probing points.
623
-  #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
624 713
 
625 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.
626 715
                                                                              // Useful to retract a deployable Z probe.
627 716
 
628
-  // Probes are sensors/switches that need to be activated before they can be used
629
-  // and deactivated after their use.
630
-  // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE
631
-
632
-  // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER
633
-  // when the hardware endstops are active.
634
-  //#define FIX_MOUNTED_PROBE
635
-
636
-  // A Servo Probe can be defined in the servo section below.
637
-
638
-  // An Allen Key Probe is currently predefined only in the delta example configurations.
639
-
640
-  // Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
641
-  //#define Z_PROBE_SLED
642
-  //#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.
643
-
644
-  // A Mechanical Probe is any probe that either doesn't deploy or needs manual deployment
645
-  // For example any setup that uses the nozzle itself as a probe.
646
-  //#define MECHANICAL_PROBE
647
-
648 717
   // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing,
649 718
   // it is highly recommended you also enable Z_SAFE_HOMING below!
650 719
 
@@ -653,18 +722,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
653 722
 
654 723
 // @section homing
655 724
 
656
-// The position of the homing switches
657
-#define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used
658
-//#define BED_CENTER_AT_0_0  // If defined, the center of the bed is at (X=0, Y=0)
659
-
660
-// Manual homing switch locations:
661
-// For deltabots this means top and center of the Cartesian print volume.
662
-#if ENABLED(MANUAL_HOME_POSITIONS)
663
-  // For SCARA: Offset between HomingPosition and Bed X=0 / Y=0
664
-  #define MANUAL_X_HOME_POS -22.
665
-  #define MANUAL_Y_HOME_POS -52.
666
-  #define MANUAL_Z_HOME_POS 0.1  // Distance between nozzle and print surface after homing.
667
-#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
668 733
 
669 734
 // Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
670 735
 //
@@ -672,7 +737,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
672 737
 //
673 738
 // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
674 739
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
675
-// - 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).
676 741
 // - Prevent Z homing when the Z probe is outside bed area.
677 742
 //#define Z_SAFE_HOMING
678 743
 
@@ -681,14 +746,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
681 746
   #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2)    // Y point for Z homing when homing all axis (G28).
682 747
 #endif
683 748
 
749
+// Homing speeds (mm/m)
750
+#define HOMING_FEEDRATE_XY (40*60)
751
+#define HOMING_FEEDRATE_Z  (10*60)
684 752
 
685
-// @section movement
686
-
687
-/**
688
- * MOVEMENT SETTINGS
689
- */
690
-
691
-#define HOMING_FEEDRATE {40*60, 40*60, 10*60, 0}  // set the homing speeds (mm/min)
753
+//
754
+// MOVEMENT SETTINGS
755
+// @section motion
756
+//
692 757
 
693 758
 // default settings
694 759
 
@@ -710,18 +775,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
710 775
 //============================= Additional Features ===========================
711 776
 //=============================================================================
712 777
 
713
-// @section more
714
-
715
-// Custom M code points
716
-//#define CUSTOM_M_CODES
717
-#if ENABLED(CUSTOM_M_CODES)
718
-  #if ENABLED(AUTO_BED_LEVELING_FEATURE)
719
-    #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851
720
-    #define Z_PROBE_OFFSET_RANGE_MIN -20
721
-    #define Z_PROBE_OFFSET_RANGE_MAX 20
722
-  #endif
723
-#endif
724
-
725 778
 // @section extras
726 779
 
727 780
 //
@@ -753,22 +806,107 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
753 806
 //
754 807
 //#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose
755 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
+
756 819
 // @section temperature
757 820
 
758 821
 // Preheat Constants
759
-#define PLA_PREHEAT_HOTEND_TEMP 180
760
-#define PLA_PREHEAT_HPB_TEMP 70
761
-#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
829
+
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
762 889
 
763
-#define ABS_PREHEAT_HOTEND_TEMP 240
764
-#define ABS_PREHEAT_HPB_TEMP 100
765
-#define ABS_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
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
766 901
 
767 902
 //
768 903
 // Print job timer
769 904
 //
770 905
 // Enable this option to automatically start and stop the
771
-// 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
772 910
 //
773 911
 // In all cases the timer can be started and stopped using
774 912
 // the following commands:
@@ -801,8 +939,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
801 939
 //
802 940
 // Here you may choose the language used by Marlin on the LCD menus, the following
803 941
 // list of languages are available:
804
-//    en, pl, fr, de, es, ru, bg, it, pt, pt_utf8, pt-br, pt-br_utf8,
805
-//    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'}
806 946
 //
807 947
 //#define LCD_LANGUAGE en
808 948
 
@@ -950,6 +1090,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
950 1090
 //#define ULTIPANEL
951 1091
 
952 1092
 //
1093
+// Cartesio UI
1094
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1095
+//
1096
+//#define CARTESIO_UI
1097
+
1098
+//
953 1099
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
954 1100
 // http://reprap.org/wiki/PanelOne
955 1101
 //
@@ -962,6 +1108,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
962 1108
 //#define MAKRPANEL
963 1109
 
964 1110
 //
1111
+// ReprapWorld Graphical LCD
1112
+// https://reprapworld.com/?products_details&products_id/1218
1113
+//
1114
+//#define REPRAPWORLD_GRAPHICAL_LCD
1115
+
1116
+//
965 1117
 // Activate one of these if you have a Panucatt Devices
966 1118
 // Viki 2.0 or mini Viki with Graphic LCD
967 1119
 // http://panucatt.com
@@ -1011,7 +1163,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1011 1163
 // is pressed, a value of 10.0 means 10mm per click.
1012 1164
 //
1013 1165
 //#define REPRAPWORLD_KEYPAD
1014
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1166
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1015 1167
 
1016 1168
 //
1017 1169
 // RigidBot Panel V1.0
@@ -1071,7 +1223,9 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1071 1223
 //
1072 1224
 //#define U8GLIB_SSD1306
1073 1225
 
1226
+//
1074 1227
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1228
+//
1075 1229
 //#define SAV_3DGLCD
1076 1230
 #if ENABLED(SAV_3DGLCD)
1077 1231
   //#define U8GLIB_SSD1306
@@ -1106,7 +1260,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1106 1260
 // at zero value, there are 128 effective control positions.
1107 1261
 #define SOFT_PWM_SCALE 0
1108 1262
 
1109
-// Temperature status LEDs that display the hotend and bet temperature.
1263
+// Temperature status LEDs that display the hotend and bed temperature.
1110 1264
 // If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
1111 1265
 // Otherwise the RED led is on. There is 1C hysteresis.
1112 1266
 //#define TEMP_STAT_LEDS
@@ -1138,28 +1292,16 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1138 1292
 //
1139 1293
 //#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
1140 1294
 
1141
-// Servo Endstops
1142
-//
1143
-// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes.
1144
-// Use M851 to set the Z probe vertical offset from the nozzle. Store that setting with M500.
1145
-//
1146
-//#define X_ENDSTOP_SERVO_NR 1
1147
-//#define Y_ENDSTOP_SERVO_NR 2
1148
-//#define Z_ENDSTOP_SERVO_NR 0
1149
-//#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
1150 1299
 
1151 1300
 // Servo deactivation
1152 1301
 //
1153 1302
 // With this option servos are powered only during movement, then turned off to prevent jitter.
1154 1303
 //#define DEACTIVATE_SERVOS_AFTER_MOVE
1155 1304
 
1156
-#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE)
1157
-  // Delay (in microseconds) before turning the servo off. This depends on the servo speed.
1158
-  // 300ms is a good value but you can try less delay.
1159
-  // If the servo can't reach the requested position, increase it.
1160
-  #define SERVO_DEACTIVATION_DELAY 300
1161
-#endif
1162
-
1163 1305
 /**********************************************************************\
1164 1306
  * Support for a filament diameter sensor
1165 1307
  * Also allows adjustment of diameter at print time (vs  at slicing)
@@ -1190,7 +1332,4 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1190 1332
   //#define FILAMENT_LCD_DISPLAY
1191 1333
 #endif
1192 1334
 
1193
-#include "Configuration_adv.h"
1194
-#include "thermistortables.h"
1195
-
1196
-#endif //CONFIGURATION_H
1335
+#endif // CONFIGURATION_H

+ 136
- 47
Marlin/example_configurations/SCARA/Configuration_adv.h Просмотреть файл

@@ -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,15 @@
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
+
448 511
 // @section leveling
449 512
 
450 513
 // Default mesh area is an area with an inset margin on the print area.
@@ -488,12 +551,27 @@ const unsigned int dropsegments = 5; //everything with less than this number of
488 551
   #define BLOCK_BUFFER_SIZE 16 // maximize block buffer
489 552
 #endif
490 553
 
491
-// @section more
554
+// @section serial
492 555
 
493
-//The ASCII buffer for receiving from the serial:
556
+// The ASCII buffer for serial input
494 557
 #define MAX_CMD_SIZE 96
495 558
 #define BUFSIZE 4
496 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
+
497 575
 // Bad Serial-connections can miss a received command by sending an 'ok'
498 576
 // Therefore some clients abort after 30 seconds in a timeout.
499 577
 // Some other clients start sending commands while receiving a 'wait'.
@@ -525,16 +603,30 @@ const unsigned int dropsegments = 5; //everything with less than this number of
525 603
 
526 604
 // Add support for experimental filament exchange support M600; requires display
527 605
 #if ENABLED(ULTIPANEL)
528
-  //#define FILAMENTCHANGEENABLE
529
-  #if ENABLED(FILAMENTCHANGEENABLE)
530
-    #define FILAMENTCHANGE_XPOS 3
531
-    #define FILAMENTCHANGE_YPOS 3
532
-    #define FILAMENTCHANGE_ZADD 10
533
-    #define FILAMENTCHANGE_FIRSTRETRACT -2
534
-    #define FILAMENTCHANGE_FINALRETRACT -100
535
-    #define AUTO_FILAMENT_CHANGE                //This extrude filament until you press the button on LCD
536
-    #define AUTO_FILAMENT_CHANGE_LENGTH 0.04    //Extrusion length on automatic extrusion loop
537
-    #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
538 630
   #endif
539 631
 #endif
540 632
 
@@ -680,9 +772,9 @@ const unsigned int dropsegments = 5; //everything with less than this number of
680 772
  * devices on the bus.
681 773
  *
682 774
  * ; Example #1
683
- * ; 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)
684 776
  * ; It uses multiple M155 commands with one B<base 10> arg
685
- * M155 A63  ; Target slave address
777
+ * M155 A99  ; Target slave address
686 778
  * M155 B77  ; M
687 779
  * M155 B97  ; a
688 780
  * M155 B114 ; r
@@ -692,19 +784,16 @@ const unsigned int dropsegments = 5; //everything with less than this number of
692 784
  * M155 S1   ; Send the current buffer
693 785
  *
694 786
  * ; Example #2
695
- * ; Request 6 bytes from slave device with address 0x63
696
- * M156 A63 B5
787
+ * ; Request 6 bytes from slave device with address 0x63 (99)
788
+ * M156 A99 B5
697 789
  *
698 790
  * ; Example #3
699 791
  * ; Example serial output of a M156 request
700
- * echo:i2c-reply: from:63 bytes:5 data:hello
792
+ * echo:i2c-reply: from:99 bytes:5 data:hello
701 793
  */
702 794
 
703 795
 // @section i2cbus
704 796
 
705 797
 //#define EXPERIMENTAL_I2CBUS
706 798
 
707
-#include "Conditionals.h"
708
-#include "SanityCheck.h"
709
-
710
-#endif //CONFIGURATION_ADV_H
799
+#endif // CONFIGURATION_ADV_H

+ 280
- 141
Marlin/example_configurations/TAZ4/Configuration.h Просмотреть файл

@@ -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_RAISE_PROBE_DEPLOY_STOW 15 // Raise to make room for the probe to deploy / stow
568
+#define Z_RAISE_BETWEEN_PROBINGS 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,6 +609,7 @@ 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
612
+
500 613
 //#define MIN_Z_HEIGHT_FOR_HOMING 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
501 614
                                     // Be sure you have this distance over your Z_MAX_POS in case.
502 615
 
@@ -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
@@ -562,8 +675,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
562 675
 // @section bedlevel
563 676
 
564 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.
565 682
 //#define DEBUG_LEVELING_FEATURE
566
-#define Z_MIN_PROBE_REPEATABILITY_TEST  // If not commented out, Z Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
567 683
 
568 684
 #if ENABLED(AUTO_BED_LEVELING_FEATURE)
569 685
 
@@ -606,58 +722,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
606 722
     #define ABL_PROBE_PT_3_X 170
607 723
     #define ABL_PROBE_PT_3_Y 20
608 724
 
609
-  #endif // AUTO_BED_LEVELING_GRID
610
-
611
-  // Z Probe to nozzle (X,Y) offset, relative to (0, 0).
612
-  // X and Y offsets must be integers.
613
-  //
614
-  // In the following example the X and Y offsets are both positive:
615
-  // #define X_PROBE_OFFSET_FROM_EXTRUDER 10
616
-  // #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
617
-  //
618
-  //    +-- BACK ---+
619
-  //    |           |
620
-  //  L |    (+) P  | R <-- probe (20,20)
621
-  //  E |           | I
622
-  //  F | (-) N (+) | G <-- nozzle (10,10)
623
-  //  T |           | H
624
-  //    |    (-)    | T
625
-  //    |           |
626
-  //    O-- FRONT --+
627
-  //  (0,0)
628
-  #define X_PROBE_OFFSET_FROM_EXTRUDER -25     // X offset: -left  +right  [of the nozzle]
629
-  #define Y_PROBE_OFFSET_FROM_EXTRUDER -29     // Y offset: -front +behind [the nozzle]
630
-  #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35  // Z offset: -below +above  [the nozzle]
631
-
632
-  #define XY_TRAVEL_SPEED 8000         // X and Y axis travel speed between probes, in mm/min.
633
-
634
-  #define Z_RAISE_BEFORE_PROBING 15   // How much the Z axis will be raised before traveling to the first probing point.
635
-  #define Z_RAISE_BETWEEN_PROBINGS 5  // How much the Z axis will be raised when traveling from between next probing points.
636
-  #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
637 726
 
638 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.
639 728
                                                                              // Useful to retract a deployable Z probe.
640 729
 
641
-  // Probes are sensors/switches that need to be activated before they can be used
642
-  // and deactivated after their use.
643
-  // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE
644
-
645
-  // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER
646
-  // when the hardware endstops are active.
647
-  //#define FIX_MOUNTED_PROBE
648
-
649
-  // A Servo Probe can be defined in the servo section below.
650
-
651
-  // An Allen Key Probe is currently predefined only in the delta example configurations.
652
-
653
-  // Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
654
-  //#define Z_PROBE_SLED
655
-  //#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.
656
-
657
-  // A Mechanical Probe is any probe that either doesn't deploy or needs manual deployment
658
-  // For example any setup that uses the nozzle itself as a probe.
659
-  //#define MECHANICAL_PROBE
660
-
661 730
   // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing,
662 731
   // it is highly recommended you also enable Z_SAFE_HOMING below!
663 732
 
@@ -666,18 +735,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
666 735
 
667 736
 // @section homing
668 737
 
669
-// The position of the homing switches
670
-//#define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used
671
-//#define BED_CENTER_AT_0_0  // If defined, the center of the bed is at (X=0, Y=0)
672
-
673
-// Manual homing switch locations:
674
-// For deltabots this means top and center of the Cartesian print volume.
675
-#if ENABLED(MANUAL_HOME_POSITIONS)
676
-  #define MANUAL_X_HOME_POS 0
677
-  #define MANUAL_Y_HOME_POS 0
678
-  #define MANUAL_Z_HOME_POS 0
679
-  //#define MANUAL_Z_HOME_POS 402 // For delta: Distance between nozzle and print surface after homing.
680
-#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
681 746
 
682 747
 // Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
683 748
 //
@@ -685,7 +750,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
685 750
 //
686 751
 // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
687 752
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
688
-// - 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).
689 754
 // - Prevent Z homing when the Z probe is outside bed area.
690 755
 //#define Z_SAFE_HOMING
691 756
 
@@ -694,14 +759,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
694 759
   #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2)    // Y point for Z homing when homing all axis (G28).
695 760
 #endif
696 761
 
762
+// Homing speeds (mm/m)
763
+#define HOMING_FEEDRATE_XY (50*60)
764
+#define HOMING_FEEDRATE_Z  (8*60)
697 765
 
698
-// @section movement
699
-
700
-/**
701
- * MOVEMENT SETTINGS
702
- */
703
-
704
-#define HOMING_FEEDRATE {50*60, 50*60, 8*60, 0}  // set the homing speeds (mm/min)
766
+//
767
+// MOVEMENT SETTINGS
768
+// @section motion
769
+//
705 770
 
706 771
 // default settings
707 772
 
@@ -723,18 +788,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
723 788
 //============================= Additional Features ===========================
724 789
 //=============================================================================
725 790
 
726
-// @section more
727
-
728
-// Custom M code points
729
-#define CUSTOM_M_CODES
730
-#if ENABLED(CUSTOM_M_CODES)
731
-  #if ENABLED(AUTO_BED_LEVELING_FEATURE)
732
-    #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851
733
-    #define Z_PROBE_OFFSET_RANGE_MIN -20
734
-    #define Z_PROBE_OFFSET_RANGE_MAX 20
735
-  #endif
736
-#endif
737
-
738 791
 // @section extras
739 792
 
740 793
 //
@@ -766,22 +819,107 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
766 819
 //
767 820
 //#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose
768 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
+
769 832
 // @section temperature
770 833
 
771 834
 // Preheat Constants
772
-#define PLA_PREHEAT_HOTEND_TEMP 180
773
-#define PLA_PREHEAT_HPB_TEMP 70
774
-#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
842
+
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
775 902
 
776
-#define ABS_PREHEAT_HOTEND_TEMP 230
777
-#define ABS_PREHEAT_HPB_TEMP 110
778
-#define ABS_PREHEAT_FAN_SPEED 0   // Insert Value between 0 and 255
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
779 914
 
780 915
 //
781 916
 // Print job timer
782 917
 //
783 918
 // Enable this option to automatically start and stop the
784
-// 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
785 923
 //
786 924
 // In all cases the timer can be started and stopped using
787 925
 // the following commands:
@@ -814,8 +952,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
814 952
 //
815 953
 // Here you may choose the language used by Marlin on the LCD menus, the following
816 954
 // list of languages are available:
817
-//    en, pl, fr, de, es, ru, bg, it, pt, pt_utf8, pt-br, pt-br_utf8,
818
-//    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'}
819 959
 //
820 960
 #define LCD_LANGUAGE en
821 961
 
@@ -963,6 +1103,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
963 1103
 //#define ULTIPANEL
964 1104
 
965 1105
 //
1106
+// Cartesio UI
1107
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1108
+//
1109
+//#define CARTESIO_UI
1110
+
1111
+//
966 1112
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
967 1113
 // http://reprap.org/wiki/PanelOne
968 1114
 //
@@ -975,6 +1121,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
975 1121
 //#define MAKRPANEL
976 1122
 
977 1123
 //
1124
+// ReprapWorld Graphical LCD
1125
+// https://reprapworld.com/?products_details&products_id/1218
1126
+//
1127
+//#define REPRAPWORLD_GRAPHICAL_LCD
1128
+
1129
+//
978 1130
 // Activate one of these if you have a Panucatt Devices
979 1131
 // Viki 2.0 or mini Viki with Graphic LCD
980 1132
 // http://panucatt.com
@@ -1024,7 +1176,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1024 1176
 // is pressed, a value of 10.0 means 10mm per click.
1025 1177
 //
1026 1178
 //#define REPRAPWORLD_KEYPAD
1027
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1179
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1028 1180
 
1029 1181
 //
1030 1182
 // RigidBot Panel V1.0
@@ -1084,7 +1236,9 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1084 1236
 //
1085 1237
 //#define U8GLIB_SSD1306
1086 1238
 
1239
+//
1087 1240
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1241
+//
1088 1242
 //#define SAV_3DGLCD
1089 1243
 #if ENABLED(SAV_3DGLCD)
1090 1244
   //#define U8GLIB_SSD1306
@@ -1119,7 +1273,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1119 1273
 // at zero value, there are 128 effective control positions.
1120 1274
 #define SOFT_PWM_SCALE 0
1121 1275
 
1122
-// Temperature status LEDs that display the hotend and bet temperature.
1276
+// Temperature status LEDs that display the hotend and bed temperature.
1123 1277
 // If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
1124 1278
 // Otherwise the RED led is on. There is 1C hysteresis.
1125 1279
 //#define TEMP_STAT_LEDS
@@ -1151,28 +1305,16 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1151 1305
 //
1152 1306
 //#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
1153 1307
 
1154
-// Servo Endstops
1155
-//
1156
-// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes.
1157
-// Use M851 to set the Z probe vertical offset from the nozzle. Store that setting with M500.
1158
-//
1159
-//#define X_ENDSTOP_SERVO_NR 1
1160
-//#define Y_ENDSTOP_SERVO_NR 2
1161
-//#define Z_ENDSTOP_SERVO_NR 0
1162
-//#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
1163 1312
 
1164 1313
 // Servo deactivation
1165 1314
 //
1166 1315
 // With this option servos are powered only during movement, then turned off to prevent jitter.
1167 1316
 //#define DEACTIVATE_SERVOS_AFTER_MOVE
1168 1317
 
1169
-#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE)
1170
-  // Delay (in microseconds) before turning the servo off. This depends on the servo speed.
1171
-  // 300ms is a good value but you can try less delay.
1172
-  // If the servo can't reach the requested position, increase it.
1173
-  #define SERVO_DEACTIVATION_DELAY 300
1174
-#endif
1175
-
1176 1318
 /**********************************************************************\
1177 1319
  * Support for a filament diameter sensor
1178 1320
  * Also allows adjustment of diameter at print time (vs  at slicing)
@@ -1203,7 +1345,4 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1203 1345
   //#define FILAMENT_LCD_DISPLAY
1204 1346
 #endif
1205 1347
 
1206
-#include "Configuration_adv.h"
1207
-#include "thermistortables.h"
1208
-
1209
-#endif //CONFIGURATION_H
1348
+#endif // CONFIGURATION_H

+ 136
- 47
Marlin/example_configurations/TAZ4/Configuration_adv.h Просмотреть файл

@@ -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,15 @@
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
+
456 519
 // @section leveling
457 520
 
458 521
 // Default mesh area is an area with an inset margin on the print area.
@@ -496,12 +559,27 @@ const unsigned int dropsegments = 5; //everything with less than this number of
496 559
   #define BLOCK_BUFFER_SIZE 16 // maximize block buffer
497 560
 #endif
498 561
 
499
-// @section more
562
+// @section serial
500 563
 
501
-//The ASCII buffer for receiving from the serial:
564
+// The ASCII buffer for serial input
502 565
 #define MAX_CMD_SIZE 96
503 566
 #define BUFSIZE 4
504 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
+
505 583
 // Bad Serial-connections can miss a received command by sending an 'ok'
506 584
 // Therefore some clients abort after 30 seconds in a timeout.
507 585
 // Some other clients start sending commands while receiving a 'wait'.
@@ -533,16 +611,30 @@ const unsigned int dropsegments = 5; //everything with less than this number of
533 611
 
534 612
 // Add support for experimental filament exchange support M600; requires display
535 613
 #if ENABLED(ULTIPANEL)
536
-  #define FILAMENTCHANGEENABLE
537
-  #if ENABLED(FILAMENTCHANGEENABLE)
538
-    #define FILAMENTCHANGE_XPOS 3
539
-    #define FILAMENTCHANGE_YPOS 3
540
-    #define FILAMENTCHANGE_ZADD 10
541
-    #define FILAMENTCHANGE_FIRSTRETRACT -2
542
-    #define FILAMENTCHANGE_FINALRETRACT -100
543
-    //#define AUTO_FILAMENT_CHANGE                //This extrude filament until you press the button on LCD
544
-    //#define AUTO_FILAMENT_CHANGE_LENGTH 0.04    //Extrusion length on automatic extrusion loop
545
-    //#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
546 638
   #endif
547 639
 #endif
548 640
 
@@ -688,9 +780,9 @@ const unsigned int dropsegments = 5; //everything with less than this number of
688 780
  * devices on the bus.
689 781
  *
690 782
  * ; Example #1
691
- * ; 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)
692 784
  * ; It uses multiple M155 commands with one B<base 10> arg
693
- * M155 A63  ; Target slave address
785
+ * M155 A99  ; Target slave address
694 786
  * M155 B77  ; M
695 787
  * M155 B97  ; a
696 788
  * M155 B114 ; r
@@ -700,19 +792,16 @@ const unsigned int dropsegments = 5; //everything with less than this number of
700 792
  * M155 S1   ; Send the current buffer
701 793
  *
702 794
  * ; Example #2
703
- * ; Request 6 bytes from slave device with address 0x63
704
- * M156 A63 B5
795
+ * ; Request 6 bytes from slave device with address 0x63 (99)
796
+ * M156 A99 B5
705 797
  *
706 798
  * ; Example #3
707 799
  * ; Example serial output of a M156 request
708
- * echo:i2c-reply: from:63 bytes:5 data:hello
800
+ * echo:i2c-reply: from:99 bytes:5 data:hello
709 801
  */
710 802
 
711 803
 // @section i2cbus
712 804
 
713 805
 //#define EXPERIMENTAL_I2CBUS
714 806
 
715
-#include "Conditionals.h"
716
-#include "SanityCheck.h"
717
-
718
-#endif //CONFIGURATION_ADV_H
807
+#endif // CONFIGURATION_ADV_H

+ 280
- 141
Marlin/example_configurations/WITBOX/Configuration.h Просмотреть файл

@@ -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_RAISE_PROBE_DEPLOY_STOW 15 // Raise to make room for the probe to deploy / stow
539
+#define Z_RAISE_BETWEEN_PROBINGS 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,6 +580,7 @@ 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
583
+
471 584
 //#define MIN_Z_HEIGHT_FOR_HOMING 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
472 585
                                     // Be sure you have this distance over your Z_MAX_POS in case.
473 586
 
@@ -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
@@ -533,8 +646,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
533 646
 // @section bedlevel
534 647
 
535 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.
536 653
 //#define DEBUG_LEVELING_FEATURE
537
-#define Z_MIN_PROBE_REPEATABILITY_TEST  // If not commented out, Z Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
538 654
 
539 655
 #if ENABLED(AUTO_BED_LEVELING_FEATURE)
540 656
 
@@ -577,58 +693,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
577 693
     #define ABL_PROBE_PT_3_X 170
578 694
     #define ABL_PROBE_PT_3_Y 20
579 695
 
580
-  #endif // AUTO_BED_LEVELING_GRID
581
-
582
-  // Z Probe to nozzle (X,Y) offset, relative to (0, 0).
583
-  // X and Y offsets must be integers.
584
-  //
585
-  // In the following example the X and Y offsets are both positive:
586
-  // #define X_PROBE_OFFSET_FROM_EXTRUDER 10
587
-  // #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
588
-  //
589
-  //    +-- BACK ---+
590
-  //    |           |
591
-  //  L |    (+) P  | R <-- probe (20,20)
592
-  //  E |           | I
593
-  //  F | (-) N (+) | G <-- nozzle (10,10)
594
-  //  T |           | H
595
-  //    |    (-)    | T
596
-  //    |           |
597
-  //    O-- FRONT --+
598
-  //  (0,0)
599
-  #define X_PROBE_OFFSET_FROM_EXTRUDER -25     // X offset: -left  +right  [of the nozzle]
600
-  #define Y_PROBE_OFFSET_FROM_EXTRUDER -29     // Y offset: -front +behind [the nozzle]
601
-  #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35  // Z offset: -below +above  [the nozzle]
602
-
603
-  #define XY_TRAVEL_SPEED 8000         // X and Y axis travel speed between probes, in mm/min.
604
-
605
-  #define Z_RAISE_BEFORE_PROBING 15   // How much the Z axis will be raised before traveling to the first probing point.
606
-  #define Z_RAISE_BETWEEN_PROBINGS 5  // How much the Z axis will be raised when traveling from between next probing points.
607
-  #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
608 697
 
609 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.
610 699
                                                                              // Useful to retract a deployable Z probe.
611 700
 
612
-  // Probes are sensors/switches that need to be activated before they can be used
613
-  // and deactivated after their use.
614
-  // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE
615
-
616
-  // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER
617
-  // when the hardware endstops are active.
618
-  //#define FIX_MOUNTED_PROBE
619
-
620
-  // A Servo Probe can be defined in the servo section below.
621
-
622
-  // An Allen Key Probe is currently predefined only in the delta example configurations.
623
-
624
-  // Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
625
-  //#define Z_PROBE_SLED
626
-  //#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.
627
-
628
-  // A Mechanical Probe is any probe that either doesn't deploy or needs manual deployment
629
-  // For example any setup that uses the nozzle itself as a probe.
630
-  //#define MECHANICAL_PROBE
631
-
632 701
   // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing,
633 702
   // it is highly recommended you also enable Z_SAFE_HOMING below!
634 703
 
@@ -637,18 +706,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
637 706
 
638 707
 // @section homing
639 708
 
640
-// The position of the homing switches
641
-//#define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used
642
-//#define BED_CENTER_AT_0_0  // If defined, the center of the bed is at (X=0, Y=0)
643
-
644
-// Manual homing switch locations:
645
-// For deltabots this means top and center of the Cartesian print volume.
646
-#if ENABLED(MANUAL_HOME_POSITIONS)
647
-  #define MANUAL_X_HOME_POS 0
648
-  #define MANUAL_Y_HOME_POS 0
649
-  #define MANUAL_Z_HOME_POS 0
650
-  //#define MANUAL_Z_HOME_POS 402 // For delta: Distance between nozzle and print surface after homing.
651
-#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
652 717
 
653 718
 // Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
654 719
 //
@@ -656,7 +721,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
656 721
 //
657 722
 // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
658 723
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
659
-// - 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).
660 725
 // - Prevent Z homing when the Z probe is outside bed area.
661 726
 //#define Z_SAFE_HOMING
662 727
 
@@ -665,14 +730,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
665 730
   #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2)    // Y point for Z homing when homing all axis (G28).
666 731
 #endif
667 732
 
733
+// Homing speeds (mm/m)
734
+#define HOMING_FEEDRATE_XY (120*60)
735
+#define HOMING_FEEDRATE_Z  432
668 736
 
669
-// @section movement
670
-
671
-/**
672
- * MOVEMENT SETTINGS
673
- */
674
-
675
-#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
+//
676 741
 
677 742
 // default settings
678 743
 
@@ -694,18 +759,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
694 759
 //============================= Additional Features ===========================
695 760
 //=============================================================================
696 761
 
697
-// @section more
698
-
699
-// Custom M code points
700
-#define CUSTOM_M_CODES
701
-#if ENABLED(CUSTOM_M_CODES)
702
-  #if ENABLED(AUTO_BED_LEVELING_FEATURE)
703
-    #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851
704
-    #define Z_PROBE_OFFSET_RANGE_MIN -20
705
-    #define Z_PROBE_OFFSET_RANGE_MAX 20
706
-  #endif
707
-#endif
708
-
709 762
 // @section extras
710 763
 
711 764
 //
@@ -737,22 +790,107 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
737 790
 //
738 791
 //#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose
739 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
+
740 803
 // @section temperature
741 804
 
742 805
 // Preheat Constants
743
-#define PLA_PREHEAT_HOTEND_TEMP 200
744
-#define PLA_PREHEAT_HPB_TEMP 0
745
-#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
813
+
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
746 873
 
747
-#define ABS_PREHEAT_HOTEND_TEMP 220
748
-#define ABS_PREHEAT_HPB_TEMP 100
749
-#define ABS_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
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
750 885
 
751 886
 //
752 887
 // Print job timer
753 888
 //
754 889
 // Enable this option to automatically start and stop the
755
-// 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
756 894
 //
757 895
 // In all cases the timer can be started and stopped using
758 896
 // the following commands:
@@ -785,8 +923,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
785 923
 //
786 924
 // Here you may choose the language used by Marlin on the LCD menus, the following
787 925
 // list of languages are available:
788
-//    en, pl, fr, de, es, ru, bg, it, pt, pt_utf8, pt-br, pt-br_utf8,
789
-//    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'}
790 930
 //
791 931
 //#define LCD_LANGUAGE en
792 932
 
@@ -934,6 +1074,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
934 1074
 //#define ULTIPANEL
935 1075
 
936 1076
 //
1077
+// Cartesio UI
1078
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1079
+//
1080
+//#define CARTESIO_UI
1081
+
1082
+//
937 1083
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
938 1084
 // http://reprap.org/wiki/PanelOne
939 1085
 //
@@ -946,6 +1092,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
946 1092
 //#define MAKRPANEL
947 1093
 
948 1094
 //
1095
+// ReprapWorld Graphical LCD
1096
+// https://reprapworld.com/?products_details&products_id/1218
1097
+//
1098
+//#define REPRAPWORLD_GRAPHICAL_LCD
1099
+
1100
+//
949 1101
 // Activate one of these if you have a Panucatt Devices
950 1102
 // Viki 2.0 or mini Viki with Graphic LCD
951 1103
 // http://panucatt.com
@@ -995,7 +1147,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
995 1147
 // is pressed, a value of 10.0 means 10mm per click.
996 1148
 //
997 1149
 //#define REPRAPWORLD_KEYPAD
998
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1150
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
999 1151
 
1000 1152
 //
1001 1153
 // RigidBot Panel V1.0
@@ -1055,7 +1207,9 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1055 1207
 //
1056 1208
 //#define U8GLIB_SSD1306
1057 1209
 
1210
+//
1058 1211
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1212
+//
1059 1213
 //#define SAV_3DGLCD
1060 1214
 #if ENABLED(SAV_3DGLCD)
1061 1215
   //#define U8GLIB_SSD1306
@@ -1090,7 +1244,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1090 1244
 // at zero value, there are 128 effective control positions.
1091 1245
 #define SOFT_PWM_SCALE 0
1092 1246
 
1093
-// Temperature status LEDs that display the hotend and bet temperature.
1247
+// Temperature status LEDs that display the hotend and bed temperature.
1094 1248
 // If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
1095 1249
 // Otherwise the RED led is on. There is 1C hysteresis.
1096 1250
 //#define TEMP_STAT_LEDS
@@ -1122,28 +1276,16 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1122 1276
 //
1123 1277
 //#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
1124 1278
 
1125
-// Servo Endstops
1126
-//
1127
-// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes.
1128
-// Use M851 to set the Z probe vertical offset from the nozzle. Store that setting with M500.
1129
-//
1130
-//#define X_ENDSTOP_SERVO_NR 1
1131
-//#define Y_ENDSTOP_SERVO_NR 2
1132
-//#define Z_ENDSTOP_SERVO_NR 0
1133
-//#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
1134 1283
 
1135 1284
 // Servo deactivation
1136 1285
 //
1137 1286
 // With this option servos are powered only during movement, then turned off to prevent jitter.
1138 1287
 //#define DEACTIVATE_SERVOS_AFTER_MOVE
1139 1288
 
1140
-#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE)
1141
-  // Delay (in microseconds) before turning the servo off. This depends on the servo speed.
1142
-  // 300ms is a good value but you can try less delay.
1143
-  // If the servo can't reach the requested position, increase it.
1144
-  #define SERVO_DEACTIVATION_DELAY 300
1145
-#endif
1146
-
1147 1289
 /**********************************************************************\
1148 1290
  * Support for a filament diameter sensor
1149 1291
  * Also allows adjustment of diameter at print time (vs  at slicing)
@@ -1174,7 +1316,4 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1174 1316
   //#define FILAMENT_LCD_DISPLAY
1175 1317
 #endif
1176 1318
 
1177
-#include "Configuration_adv.h"
1178
-#include "thermistortables.h"
1179
-
1180
-#endif //CONFIGURATION_H
1319
+#endif // CONFIGURATION_H

+ 136
- 47
Marlin/example_configurations/WITBOX/Configuration_adv.h Просмотреть файл

@@ -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,15 @@
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
+
448 511
 // @section leveling
449 512
 
450 513
 // Default mesh area is an area with an inset margin on the print area.
@@ -488,12 +551,27 @@ const unsigned int dropsegments = 5; //everything with less than this number of
488 551
   #define BLOCK_BUFFER_SIZE 16 // maximize block buffer
489 552
 #endif
490 553
 
491
-// @section more
554
+// @section serial
492 555
 
493
-//The ASCII buffer for receiving from the serial:
556
+// The ASCII buffer for serial input
494 557
 #define MAX_CMD_SIZE 96
495 558
 #define BUFSIZE 4
496 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
+
497 575
 // Bad Serial-connections can miss a received command by sending an 'ok'
498 576
 // Therefore some clients abort after 30 seconds in a timeout.
499 577
 // Some other clients start sending commands while receiving a 'wait'.
@@ -525,16 +603,30 @@ const unsigned int dropsegments = 5; //everything with less than this number of
525 603
 
526 604
 // Add support for experimental filament exchange support M600; requires display
527 605
 #if ENABLED(ULTIPANEL)
528
-  //#define FILAMENTCHANGEENABLE
529
-  #if ENABLED(FILAMENTCHANGEENABLE)
530
-    #define FILAMENTCHANGE_XPOS 3
531
-    #define FILAMENTCHANGE_YPOS 3
532
-    #define FILAMENTCHANGE_ZADD 10
533
-    #define FILAMENTCHANGE_FIRSTRETRACT -2
534
-    #define FILAMENTCHANGE_FINALRETRACT -100
535
-    #define AUTO_FILAMENT_CHANGE                //This extrude filament until you press the button on LCD
536
-    #define AUTO_FILAMENT_CHANGE_LENGTH 0.04    //Extrusion length on automatic extrusion loop
537
-    #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
538 630
   #endif
539 631
 #endif
540 632
 
@@ -680,9 +772,9 @@ const unsigned int dropsegments = 5; //everything with less than this number of
680 772
  * devices on the bus.
681 773
  *
682 774
  * ; Example #1
683
- * ; 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)
684 776
  * ; It uses multiple M155 commands with one B<base 10> arg
685
- * M155 A63  ; Target slave address
777
+ * M155 A99  ; Target slave address
686 778
  * M155 B77  ; M
687 779
  * M155 B97  ; a
688 780
  * M155 B114 ; r
@@ -692,19 +784,16 @@ const unsigned int dropsegments = 5; //everything with less than this number of
692 784
  * M155 S1   ; Send the current buffer
693 785
  *
694 786
  * ; Example #2
695
- * ; Request 6 bytes from slave device with address 0x63
696
- * M156 A63 B5
787
+ * ; Request 6 bytes from slave device with address 0x63 (99)
788
+ * M156 A99 B5
697 789
  *
698 790
  * ; Example #3
699 791
  * ; Example serial output of a M156 request
700
- * echo:i2c-reply: from:63 bytes:5 data:hello
792
+ * echo:i2c-reply: from:99 bytes:5 data:hello
701 793
  */
702 794
 
703 795
 // @section i2cbus
704 796
 
705 797
 //#define EXPERIMENTAL_I2CBUS
706 798
 
707
-#include "Conditionals.h"
708
-#include "SanityCheck.h"
709
-
710
-#endif //CONFIGURATION_ADV_H
799
+#endif // CONFIGURATION_ADV_H

+ 280
- 141
Marlin/example_configurations/adafruit/ST7565/Configuration.h Просмотреть файл

@@ -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_RAISE_PROBE_DEPLOY_STOW 15 // Raise to make room for the probe to deploy / stow
547
+#define Z_RAISE_BETWEEN_PROBINGS 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,6 +588,7 @@ 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
591
+
479 592
 //#define MIN_Z_HEIGHT_FOR_HOMING 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
480 593
                                     // Be sure you have this distance over your Z_MAX_POS in case.
481 594
 
@@ -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
@@ -541,8 +654,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
541 654
 // @section bedlevel
542 655
 
543 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.
544 661
 //#define DEBUG_LEVELING_FEATURE
545
-#define Z_MIN_PROBE_REPEATABILITY_TEST  // If not commented out, Z Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
546 662
 
547 663
 #if ENABLED(AUTO_BED_LEVELING_FEATURE)
548 664
 
@@ -585,58 +701,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
585 701
     #define ABL_PROBE_PT_3_X 170
586 702
     #define ABL_PROBE_PT_3_Y 20
587 703
 
588
-  #endif // AUTO_BED_LEVELING_GRID
589
-
590
-  // Z Probe to nozzle (X,Y) offset, relative to (0, 0).
591
-  // X and Y offsets must be integers.
592
-  //
593
-  // In the following example the X and Y offsets are both positive:
594
-  // #define X_PROBE_OFFSET_FROM_EXTRUDER 10
595
-  // #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
596
-  //
597
-  //    +-- BACK ---+
598
-  //    |           |
599
-  //  L |    (+) P  | R <-- probe (20,20)
600
-  //  E |           | I
601
-  //  F | (-) N (+) | G <-- nozzle (10,10)
602
-  //  T |           | H
603
-  //    |    (-)    | T
604
-  //    |           |
605
-  //    O-- FRONT --+
606
-  //  (0,0)
607
-  #define X_PROBE_OFFSET_FROM_EXTRUDER -25     // X offset: -left  +right  [of the nozzle]
608
-  #define Y_PROBE_OFFSET_FROM_EXTRUDER -29     // Y offset: -front +behind [the nozzle]
609
-  #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35  // Z offset: -below +above  [the nozzle]
610
-
611
-  #define XY_TRAVEL_SPEED 8000         // X and Y axis travel speed between probes, in mm/min.
612
-
613
-  #define Z_RAISE_BEFORE_PROBING 15   // How much the Z axis will be raised before traveling to the first probing point.
614
-  #define Z_RAISE_BETWEEN_PROBINGS 5  // How much the Z axis will be raised when traveling from between next probing points.
615
-  #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
616 705
 
617 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.
618 707
                                                                              // Useful to retract a deployable Z probe.
619 708
 
620
-  // Probes are sensors/switches that need to be activated before they can be used
621
-  // and deactivated after their use.
622
-  // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE
623
-
624
-  // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER
625
-  // when the hardware endstops are active.
626
-  //#define FIX_MOUNTED_PROBE
627
-
628
-  // A Servo Probe can be defined in the servo section below.
629
-
630
-  // An Allen Key Probe is currently predefined only in the delta example configurations.
631
-
632
-  // Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
633
-  //#define Z_PROBE_SLED
634
-  //#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.
635
-
636
-  // A Mechanical Probe is any probe that either doesn't deploy or needs manual deployment
637
-  // For example any setup that uses the nozzle itself as a probe.
638
-  //#define MECHANICAL_PROBE
639
-
640 709
   // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing,
641 710
   // it is highly recommended you also enable Z_SAFE_HOMING below!
642 711
 
@@ -645,18 +714,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
645 714
 
646 715
 // @section homing
647 716
 
648
-// The position of the homing switches
649
-//#define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used
650
-//#define BED_CENTER_AT_0_0  // If defined, the center of the bed is at (X=0, Y=0)
651
-
652
-// Manual homing switch locations:
653
-// For deltabots this means top and center of the Cartesian print volume.
654
-#if ENABLED(MANUAL_HOME_POSITIONS)
655
-  #define MANUAL_X_HOME_POS 0
656
-  #define MANUAL_Y_HOME_POS 0
657
-  #define MANUAL_Z_HOME_POS 0
658
-  //#define MANUAL_Z_HOME_POS 402 // For delta: Distance between nozzle and print surface after homing.
659
-#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
660 725
 
661 726
 // Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
662 727
 //
@@ -664,7 +729,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
664 729
 //
665 730
 // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
666 731
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
667
-// - 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).
668 733
 // - Prevent Z homing when the Z probe is outside bed area.
669 734
 //#define Z_SAFE_HOMING
670 735
 
@@ -673,14 +738,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
673 738
   #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2)    // Y point for Z homing when homing all axis (G28).
674 739
 #endif
675 740
 
741
+// Homing speeds (mm/m)
742
+#define HOMING_FEEDRATE_XY (50*60)
743
+#define HOMING_FEEDRATE_Z  (4*60)
676 744
 
677
-// @section movement
678
-
679
-/**
680
- * MOVEMENT SETTINGS
681
- */
682
-
683
-#define HOMING_FEEDRATE {50*60, 50*60, 4*60, 0}  // set the homing speeds (mm/min)
745
+//
746
+// MOVEMENT SETTINGS
747
+// @section motion
748
+//
684 749
 
685 750
 // default settings
686 751
 
@@ -702,18 +767,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
702 767
 //============================= Additional Features ===========================
703 768
 //=============================================================================
704 769
 
705
-// @section more
706
-
707
-// Custom M code points
708
-#define CUSTOM_M_CODES
709
-#if ENABLED(CUSTOM_M_CODES)
710
-  #if ENABLED(AUTO_BED_LEVELING_FEATURE)
711
-    #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851
712
-    #define Z_PROBE_OFFSET_RANGE_MIN -20
713
-    #define Z_PROBE_OFFSET_RANGE_MAX 20
714
-  #endif
715
-#endif
716
-
717 770
 // @section extras
718 771
 
719 772
 //
@@ -745,22 +798,107 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
745 798
 //
746 799
 //#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose
747 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
+
748 811
 // @section temperature
749 812
 
750 813
 // Preheat Constants
751
-#define PLA_PREHEAT_HOTEND_TEMP 180
752
-#define PLA_PREHEAT_HPB_TEMP 70
753
-#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
821
+
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
754 881
 
755
-#define ABS_PREHEAT_HOTEND_TEMP 240
756
-#define ABS_PREHEAT_HPB_TEMP 110
757
-#define ABS_PREHEAT_FAN_SPEED 0   // Insert Value between 0 and 255
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
758 893
 
759 894
 //
760 895
 // Print job timer
761 896
 //
762 897
 // Enable this option to automatically start and stop the
763
-// 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
764 902
 //
765 903
 // In all cases the timer can be started and stopped using
766 904
 // the following commands:
@@ -793,8 +931,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
793 931
 //
794 932
 // Here you may choose the language used by Marlin on the LCD menus, the following
795 933
 // list of languages are available:
796
-//    en, pl, fr, de, es, ru, bg, it, pt, pt_utf8, pt-br, pt-br_utf8,
797
-//    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'}
798 938
 //
799 939
 #define LCD_LANGUAGE en
800 940
 
@@ -942,6 +1082,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
942 1082
 //#define ULTIPANEL
943 1083
 
944 1084
 //
1085
+// Cartesio UI
1086
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1087
+//
1088
+//#define CARTESIO_UI
1089
+
1090
+//
945 1091
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
946 1092
 // http://reprap.org/wiki/PanelOne
947 1093
 //
@@ -954,6 +1100,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
954 1100
 //#define MAKRPANEL
955 1101
 
956 1102
 //
1103
+// ReprapWorld Graphical LCD
1104
+// https://reprapworld.com/?products_details&products_id/1218
1105
+//
1106
+//#define REPRAPWORLD_GRAPHICAL_LCD
1107
+
1108
+//
957 1109
 // Activate one of these if you have a Panucatt Devices
958 1110
 // Viki 2.0 or mini Viki with Graphic LCD
959 1111
 // 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
@@ -1063,7 +1215,9 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1063 1215
 //
1064 1216
 //#define U8GLIB_SSD1306
1065 1217
 
1218
+//
1066 1219
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1220
+//
1067 1221
 //#define SAV_3DGLCD
1068 1222
 #if ENABLED(SAV_3DGLCD)
1069 1223
   //#define U8GLIB_SSD1306
@@ -1098,7 +1252,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1098 1252
 // at zero value, there are 128 effective control positions.
1099 1253
 #define SOFT_PWM_SCALE 0
1100 1254
 
1101
-// Temperature status LEDs that display the hotend and bet temperature.
1255
+// Temperature status LEDs that display the hotend and bed temperature.
1102 1256
 // If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
1103 1257
 // Otherwise the RED led is on. There is 1C hysteresis.
1104 1258
 //#define TEMP_STAT_LEDS
@@ -1130,28 +1284,16 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1130 1284
 //
1131 1285
 //#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
1132 1286
 
1133
-// Servo Endstops
1134
-//
1135
-// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes.
1136
-// Use M851 to set the Z probe vertical offset from the nozzle. Store that setting with M500.
1137
-//
1138
-//#define X_ENDSTOP_SERVO_NR 1
1139
-//#define Y_ENDSTOP_SERVO_NR 2
1140
-//#define Z_ENDSTOP_SERVO_NR 0
1141
-//#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
1142 1291
 
1143 1292
 // Servo deactivation
1144 1293
 //
1145 1294
 // With this option servos are powered only during movement, then turned off to prevent jitter.
1146 1295
 //#define DEACTIVATE_SERVOS_AFTER_MOVE
1147 1296
 
1148
-#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE)
1149
-  // Delay (in microseconds) before turning the servo off. This depends on the servo speed.
1150
-  // 300ms is a good value but you can try less delay.
1151
-  // If the servo can't reach the requested position, increase it.
1152
-  #define SERVO_DEACTIVATION_DELAY 300
1153
-#endif
1154
-
1155 1297
 /**********************************************************************\
1156 1298
  * Support for a filament diameter sensor
1157 1299
  * Also allows adjustment of diameter at print time (vs  at slicing)
@@ -1182,7 +1324,4 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1182 1324
   //#define FILAMENT_LCD_DISPLAY
1183 1325
 #endif
1184 1326
 
1185
-#include "Configuration_adv.h"
1186
-#include "thermistortables.h"
1187
-
1188
-#endif //CONFIGURATION_H
1327
+#endif // CONFIGURATION_H

+ 325
- 182
Marlin/example_configurations/delta/biv2.5/Configuration.h Просмотреть файл

@@ -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_RAISE_PROBE_DEPLOY_STOW 50 // Raise to make room for the probe to deploy / stow
636
+#define Z_RAISE_BETWEEN_PROBINGS 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,6 +677,7 @@ 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
680
+
521 681
 //#define MIN_Z_HEIGHT_FOR_HOMING 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
522 682
                                     // Be sure you have this distance over your Z_MAX_POS in case.
523 683
 
@@ -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
@@ -583,8 +743,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
583 743
 // @section bedlevel
584 744
 
585 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.
586 750
 //#define DEBUG_LEVELING_FEATURE
587
-//#define Z_MIN_PROBE_REPEATABILITY_TEST  // If not commented out, Z Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
588 751
 
589 752
 #if ENABLED(AUTO_BED_LEVELING_FEATURE)
590 753
 
@@ -631,99 +794,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
631 794
     #define ABL_PROBE_PT_3_X 170
632 795
     #define ABL_PROBE_PT_3_Y 20
633 796
 
634
-  #endif // AUTO_BED_LEVELING_GRID
635
-
636
-  // Z Probe to nozzle (X,Y) offset, relative to (0, 0).
637
-  // X and Y offsets must be integers.
638
-  //
639
-  // In the following example the X and Y offsets are both positive:
640
-  // #define X_PROBE_OFFSET_FROM_EXTRUDER 10
641
-  // #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
642
-  //
643
-  //    +-- BACK ---+
644
-  //    |           |
645
-  //  L |    (+) P  | R <-- probe (20,20)
646
-  //  E |           | I
647
-  //  F | (-) N (+) | G <-- nozzle (10,10)
648
-  //  T |           | H
649
-  //    |    (-)    | T
650
-  //    |           |
651
-  //    O-- FRONT --+
652
-  //  (0,0)
653
-  #define X_PROBE_OFFSET_FROM_EXTRUDER 0     // X offset: -left  +right  [of the nozzle]
654
-  #define Y_PROBE_OFFSET_FROM_EXTRUDER -10   // Y offset: -front +behind [the nozzle]
655
-  #define Z_PROBE_OFFSET_FROM_EXTRUDER -3.5  // Z offset: -below +above  [the nozzle]
656
-
657
-  #define XY_TRAVEL_SPEED 4000         // X and Y axis travel speed between probes, in mm/min.
658
-
659
-  #define Z_RAISE_BEFORE_PROBING 15   // How much the Z axis will be raised before traveling to the first probing point.
660
-  #define Z_RAISE_BETWEEN_PROBINGS 5  // How much the Z axis will be raised when traveling from between next probing points.
661
-  #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
662 798
 
663 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.
664 800
                                                                              // Useful to retract a deployable Z probe.
665 801
 
666
-  // Probes are sensors/switches that need to be activated before they can be used
667
-  // and deactivated after their use.
668
-  // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE
669
-
670
-  // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER
671
-  // when the hardware endstops are active.
672
-  //#define FIX_MOUNTED_PROBE
673
-
674
-  // A Servo Probe can be defined in the servo section below.
675
-
676
-  // An Allen Key Probe is currently predefined only in the delta example configurations.
677
-
678
-  // Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
679
-  //#define Z_PROBE_SLED
680
-  //#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.
681
-
682
-  // A Mechanical Probe is any probe that either doesn't deploy or needs manual deployment
683
-  // For example any setup that uses the nozzle itself as a probe.
684
-  //#define MECHANICAL_PROBE
685
-
686
-  // Allen key retractable z-probe as seen on many Kossel delta printers - http://reprap.org/wiki/Kossel#Automatic_bed_leveling_probe
687
-  // Deploys by touching z-axis belt. Retracts by pushing the probe down. Uses Z_MIN_PIN.
688
-  //#define Z_PROBE_ALLEN_KEY
689
-
690
-  #if ENABLED(Z_PROBE_ALLEN_KEY)
691
-    // 2 or 3 sets of coordinates for deploying and retracting the spring loaded touch probe on G29,
692
-    // if servo actuated touch probe is not defined. Uncomment as appropriate for your printer/probe.
693
-
694
-    // Just like Kossel Pro
695
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_1_X -105.00 // Move left but not quite so far that we'll bump the belt
696
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_1_Y 0.00
697
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_1_Z 100.0
698
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE HOMING_FEEDRATE_XYZ
699
-
700
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_2_X -110.00 // Move outward to position deploy pin to the left of the arm
701
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_2_Y -125.00
702
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_2_Z 100.0
703
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE HOMING_FEEDRATE_XYZ
704
-
705
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_3_X 45.00 // Move right to trigger deploy pin
706
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_3_Y -125.00
707
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_3_Z 100.0
708
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE (HOMING_FEEDRATE_XYZ)/2
709
-
710
-    #define Z_PROBE_ALLEN_KEY_STOW_1_X 36.00 // Line up with bed retaining clip
711
-    #define Z_PROBE_ALLEN_KEY_STOW_1_Y -122.00
712
-    #define Z_PROBE_ALLEN_KEY_STOW_1_Z 75.0
713
-    #define Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE HOMING_FEEDRATE_XYZ
714
-
715
-    #define Z_PROBE_ALLEN_KEY_STOW_2_X 36.00 // move down to retract probe
716
-    #define Z_PROBE_ALLEN_KEY_STOW_2_Y -122.00
717
-    #define Z_PROBE_ALLEN_KEY_STOW_2_Z 25.0
718
-    #define Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE (HOMING_FEEDRATE_XYZ)/2
719
-
720
-    #define Z_PROBE_ALLEN_KEY_STOW_3_X 0.0  // return to 0,0,100
721
-    #define Z_PROBE_ALLEN_KEY_STOW_3_Y 0.0
722
-    #define Z_PROBE_ALLEN_KEY_STOW_3_Z 100.0
723
-    #define Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE HOMING_FEEDRATE_XYZ
724
-
725
-  #endif // Z_PROBE_ALLEN_KEY
726
-
727 802
   // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing,
728 803
   // it is highly recommended you also enable Z_SAFE_HOMING below!
729 804
 
@@ -732,17 +807,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
732 807
 
733 808
 // @section homing
734 809
 
735
-// The position of the homing switches
736
-#define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used
737
-//#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
738 812
 
739
-// Manual homing switch locations:
740
-// For deltabots this means top and center of the Cartesian print volume.
741
-#if ENABLED(MANUAL_HOME_POSITIONS)
742
-  #define MANUAL_X_HOME_POS 0
743
-  #define MANUAL_Y_HOME_POS 0
744
-  #define MANUAL_Z_HOME_POS 405 // For delta: Distance between nozzle and print surface after homing.
745
-#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
746 818
 
747 819
 // Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
748 820
 //
@@ -750,7 +822,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
750 822
 //
751 823
 // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
752 824
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
753
-// - 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).
754 826
 // - Prevent Z homing when the Z probe is outside bed area.
755 827
 //#define Z_SAFE_HOMING
756 828
 
@@ -760,16 +832,13 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
760 832
 #endif
761 833
 
762 834
 
763
-// @section movement
835
+// Delta only homes to Z
836
+#define HOMING_FEEDRATE_Z  (200*30)
764 837
 
765
-/**
766
- * MOVEMENT SETTINGS
767
- */
768
-
769
-// delta homing speeds must be the same on xyz
770
-#define HOMING_FEEDRATE_XYZ (200*30)
771
-#define HOMING_FEEDRATE_E 0
772
-#define HOMING_FEEDRATE { HOMING_FEEDRATE_XYZ, HOMING_FEEDRATE_XYZ, HOMING_FEEDRATE_XYZ, HOMING_FEEDRATE_E }
838
+//
839
+// MOVEMENT SETTINGS
840
+// @section motion
841
+//
773 842
 
774 843
 // default settings
775 844
 // delta speeds must be the same on xyz
@@ -791,18 +860,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
791 860
 //============================= Additional Features ===========================
792 861
 //=============================================================================
793 862
 
794
-// @section more
795
-
796
-// Custom M code points
797
-#define CUSTOM_M_CODES
798
-#if ENABLED(CUSTOM_M_CODES)
799
-  #if ENABLED(AUTO_BED_LEVELING_FEATURE)
800
-    #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851
801
-    #define Z_PROBE_OFFSET_RANGE_MIN -20
802
-    #define Z_PROBE_OFFSET_RANGE_MAX 20
803
-  #endif
804
-#endif
805
-
806 863
 // @section extras
807 864
 
808 865
 //
@@ -834,22 +891,107 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
834 891
 //
835 892
 //#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose
836 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
+
837 904
 // @section temperature
838 905
 
839 906
 // Preheat Constants
840
-#define PLA_PREHEAT_HOTEND_TEMP 180
841
-#define PLA_PREHEAT_HPB_TEMP 70
842
-#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
843 910
 
844
-#define ABS_PREHEAT_HOTEND_TEMP 240
845
-#define ABS_PREHEAT_HPB_TEMP 100
846
-#define ABS_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
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)}
982
+
983
+  // Moves the nozzle to the initial position
984
+  #define NOZZLE_CLEAN_GOBACK
985
+#endif
847 986
 
848 987
 //
849 988
 // Print job timer
850 989
 //
851 990
 // Enable this option to automatically start and stop the
852
-// 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
853 995
 //
854 996
 // In all cases the timer can be started and stopped using
855 997
 // the following commands:
@@ -882,8 +1024,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
882 1024
 //
883 1025
 // Here you may choose the language used by Marlin on the LCD menus, the following
884 1026
 // list of languages are available:
885
-//    en, pl, fr, de, es, ru, bg, it, pt, pt_utf8, pt-br, pt-br_utf8,
886
-//    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'}
887 1031
 //
888 1032
 #define LCD_LANGUAGE en
889 1033
 
@@ -1031,6 +1175,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1031 1175
 //#define ULTIPANEL
1032 1176
 
1033 1177
 //
1178
+// Cartesio UI
1179
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1180
+//
1181
+//#define CARTESIO_UI
1182
+
1183
+//
1034 1184
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
1035 1185
 // http://reprap.org/wiki/PanelOne
1036 1186
 //
@@ -1043,6 +1193,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1043 1193
 //#define MAKRPANEL
1044 1194
 
1045 1195
 //
1196
+// ReprapWorld Graphical LCD
1197
+// https://reprapworld.com/?products_details&products_id/1218
1198
+//
1199
+//#define REPRAPWORLD_GRAPHICAL_LCD
1200
+
1201
+//
1046 1202
 // Activate one of these if you have a Panucatt Devices
1047 1203
 // Viki 2.0 or mini Viki with Graphic LCD
1048 1204
 // http://panucatt.com
@@ -1092,7 +1248,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1092 1248
 // is pressed, a value of 10.0 means 10mm per click.
1093 1249
 //
1094 1250
 //#define REPRAPWORLD_KEYPAD
1095
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1251
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1096 1252
 
1097 1253
 //
1098 1254
 // RigidBot Panel V1.0
@@ -1152,7 +1308,9 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1152 1308
 //
1153 1309
 //#define U8GLIB_SSD1306
1154 1310
 
1311
+//
1155 1312
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1313
+//
1156 1314
 //#define SAV_3DGLCD
1157 1315
 #if ENABLED(SAV_3DGLCD)
1158 1316
   //#define U8GLIB_SSD1306
@@ -1187,7 +1345,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1187 1345
 // at zero value, there are 128 effective control positions.
1188 1346
 #define SOFT_PWM_SCALE 0
1189 1347
 
1190
-// Temperature status LEDs that display the hotend and bet temperature.
1348
+// Temperature status LEDs that display the hotend and bed temperature.
1191 1349
 // If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
1192 1350
 // Otherwise the RED led is on. There is 1C hysteresis.
1193 1351
 //#define TEMP_STAT_LEDS
@@ -1219,28 +1377,16 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1219 1377
 //
1220 1378
 //#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
1221 1379
 
1222
-// Servo Endstops
1223
-//
1224
-// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes.
1225
-// Use M851 to set the Z probe vertical offset from the nozzle. Store that setting with M500.
1226
-//
1227
-//#define X_ENDSTOP_SERVO_NR 1
1228
-//#define Y_ENDSTOP_SERVO_NR 2
1229
-//#define Z_ENDSTOP_SERVO_NR 0
1230
-//#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
1231 1384
 
1232 1385
 // Servo deactivation
1233 1386
 //
1234 1387
 // With this option servos are powered only during movement, then turned off to prevent jitter.
1235 1388
 //#define DEACTIVATE_SERVOS_AFTER_MOVE
1236 1389
 
1237
-#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE)
1238
-  // Delay (in microseconds) before turning the servo off. This depends on the servo speed.
1239
-  // 300ms is a good value but you can try less delay.
1240
-  // If the servo can't reach the requested position, increase it.
1241
-  #define SERVO_DEACTIVATION_DELAY 300
1242
-#endif
1243
-
1244 1390
 /**********************************************************************\
1245 1391
  * Support for a filament diameter sensor
1246 1392
  * Also allows adjustment of diameter at print time (vs  at slicing)
@@ -1271,7 +1417,4 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1271 1417
   //#define FILAMENT_LCD_DISPLAY
1272 1418
 #endif
1273 1419
 
1274
-#include "Configuration_adv.h"
1275
-#include "thermistortables.h"
1276
-
1277
-#endif //CONFIGURATION_H
1420
+#endif // CONFIGURATION_H

+ 136
- 47
Marlin/example_configurations/delta/biv2.5/Configuration_adv.h Просмотреть файл

@@ -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,15 @@
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
+
450 513
 // @section leveling
451 514
 
452 515
 // Default mesh area is an area with an inset margin on the print area.
@@ -490,12 +553,27 @@ const unsigned int dropsegments = 5; //everything with less than this number of
490 553
   #define BLOCK_BUFFER_SIZE 16 // maximize block buffer
491 554
 #endif
492 555
 
493
-// @section more
556
+// @section serial
494 557
 
495
-//The ASCII buffer for receiving from the serial:
558
+// The ASCII buffer for serial input
496 559
 #define MAX_CMD_SIZE 96
497 560
 #define BUFSIZE 4
498 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
+
499 577
 // Bad Serial-connections can miss a received command by sending an 'ok'
500 578
 // Therefore some clients abort after 30 seconds in a timeout.
501 579
 // Some other clients start sending commands while receiving a 'wait'.
@@ -527,16 +605,30 @@ const unsigned int dropsegments = 5; //everything with less than this number of
527 605
 
528 606
 // Add support for experimental filament exchange support M600; requires display
529 607
 #if ENABLED(ULTIPANEL)
530
-  //#define FILAMENTCHANGEENABLE
531
-  #if ENABLED(FILAMENTCHANGEENABLE)
532
-    #define FILAMENTCHANGE_XPOS 3
533
-    #define FILAMENTCHANGE_YPOS 3
534
-    #define FILAMENTCHANGE_ZADD 10
535
-    #define FILAMENTCHANGE_FIRSTRETRACT -2
536
-    #define FILAMENTCHANGE_FINALRETRACT -100
537
-    #define AUTO_FILAMENT_CHANGE                //This extrude filament until you press the button on LCD
538
-    #define AUTO_FILAMENT_CHANGE_LENGTH 0.04    //Extrusion length on automatic extrusion loop
539
-    #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
540 632
   #endif
541 633
 #endif
542 634
 
@@ -682,9 +774,9 @@ const unsigned int dropsegments = 5; //everything with less than this number of
682 774
  * devices on the bus.
683 775
  *
684 776
  * ; Example #1
685
- * ; 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)
686 778
  * ; It uses multiple M155 commands with one B<base 10> arg
687
- * M155 A63  ; Target slave address
779
+ * M155 A99  ; Target slave address
688 780
  * M155 B77  ; M
689 781
  * M155 B97  ; a
690 782
  * M155 B114 ; r
@@ -694,19 +786,16 @@ const unsigned int dropsegments = 5; //everything with less than this number of
694 786
  * M155 S1   ; Send the current buffer
695 787
  *
696 788
  * ; Example #2
697
- * ; Request 6 bytes from slave device with address 0x63
698
- * M156 A63 B5
789
+ * ; Request 6 bytes from slave device with address 0x63 (99)
790
+ * M156 A99 B5
699 791
  *
700 792
  * ; Example #3
701 793
  * ; Example serial output of a M156 request
702
- * echo:i2c-reply: from:63 bytes:5 data:hello
794
+ * echo:i2c-reply: from:99 bytes:5 data:hello
703 795
  */
704 796
 
705 797
 // @section i2cbus
706 798
 
707 799
 //#define EXPERIMENTAL_I2CBUS
708 800
 
709
-#include "Conditionals.h"
710
-#include "SanityCheck.h"
711
-
712
-#endif //CONFIGURATION_ADV_H
801
+#endif // CONFIGURATION_ADV_H

+ 320
- 177
Marlin/example_configurations/delta/generic/Configuration.h Просмотреть файл

@@ -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_RAISE_PROBE_DEPLOY_STOW 15 // Raise to make room for the probe to deploy / stow
630
+#define Z_RAISE_BETWEEN_PROBINGS 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,6 +671,7 @@ 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
674
+
521 675
 //#define MIN_Z_HEIGHT_FOR_HOMING 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
522 676
                                     // Be sure you have this distance over your Z_MAX_POS in case.
523 677
 
@@ -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
@@ -583,8 +737,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
583 737
 // @section bedlevel
584 738
 
585 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.
586 744
 //#define DEBUG_LEVELING_FEATURE
587
-//#define Z_MIN_PROBE_REPEATABILITY_TEST  // If not commented out, Z Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
588 745
 
589 746
 #if ENABLED(AUTO_BED_LEVELING_FEATURE)
590 747
 
@@ -631,93 +788,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
631 788
     #define ABL_PROBE_PT_3_X 170
632 789
     #define ABL_PROBE_PT_3_Y 20
633 790
 
634
-  #endif // AUTO_BED_LEVELING_GRID
635
-
636
-  // Z Probe to nozzle (X,Y) offset, relative to (0, 0).
637
-  // X and Y offsets must be integers.
638
-  //
639
-  // In the following example the X and Y offsets are both positive:
640
-  // #define X_PROBE_OFFSET_FROM_EXTRUDER 10
641
-  // #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
642
-  //
643
-  //    +-- BACK ---+
644
-  //    |           |
645
-  //  L |    (+) P  | R <-- probe (20,20)
646
-  //  E |           | I
647
-  //  F | (-) N (+) | G <-- nozzle (10,10)
648
-  //  T |           | H
649
-  //    |    (-)    | T
650
-  //    |           |
651
-  //    O-- FRONT --+
652
-  //  (0,0)
653
-  #define X_PROBE_OFFSET_FROM_EXTRUDER 0     // X offset: -left  +right  [of the nozzle]
654
-  #define Y_PROBE_OFFSET_FROM_EXTRUDER -10   // Y offset: -front +behind [the nozzle]
655
-  #define Z_PROBE_OFFSET_FROM_EXTRUDER -3.5  // Z offset: -below +above  [the nozzle]
656
-
657
-  #define XY_TRAVEL_SPEED 4000         // X and Y axis travel speed between probes, in mm/min.
658
-
659
-  #define Z_RAISE_BEFORE_PROBING 15   // How much the Z axis will be raised before traveling to the first probing point.
660
-  #define Z_RAISE_BETWEEN_PROBINGS 5  // How much the Z axis will be raised when traveling from between next probing points
661
-  #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
662 792
 
663 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.
664 794
                                                                              // Useful to retract a deployable Z probe.
665 795
 
666
-  // Probes are sensors/switches that need to be activated before they can be used
667
-  // and deactivated after their use.
668
-  // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE
669
-
670
-  // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER
671
-  // when the hardware endstops are active.
672
-  //#define FIX_MOUNTED_PROBE
673
-
674
-  // A Servo Probe can be defined in the servo section below.
675
-
676
-  // An Allen Key Probe is currently predefined only in the delta example configurations.
677
-
678
-  // Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
679
-  //#define Z_PROBE_SLED
680
-  //#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.
681
-
682
-  // A Mechanical Probe is any probe that either doesn't deploy or needs manual deployment
683
-  // For example any setup that uses the nozzle itself as a probe.
684
-  //#define MECHANICAL_PROBE
685
-
686
-  // Allen key retractable z-probe as seen on many Kossel delta printers - http://reprap.org/wiki/Kossel#Automatic_bed_leveling_probe
687
-  // Deploys by touching z-axis belt. Retracts by pushing the probe down. Uses Z_MIN_PIN.
688
-  //#define Z_PROBE_ALLEN_KEY
689
-
690
-  #if ENABLED(Z_PROBE_ALLEN_KEY)
691
-    // 2 or 3 sets of coordinates for deploying and retracting the spring loaded touch probe on G29,
692
-    // if servo actuated touch probe is not defined. Uncomment as appropriate for your printer/probe.
693
-
694
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_1_X 30.0
695
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_1_Y DELTA_PRINTABLE_RADIUS
696
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_1_Z 100.0
697
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE HOMING_FEEDRATE_XYZ
698
-
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
-
709
-    #define Z_PROBE_ALLEN_KEY_STOW_2_X -64.0 // Push it down
710
-    #define Z_PROBE_ALLEN_KEY_STOW_2_Y 56.0
711
-    #define Z_PROBE_ALLEN_KEY_STOW_2_Z 3.0
712
-    #define Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE (HOMING_FEEDRATE_XYZ)/10
713
-
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
-  #endif // Z_PROBE_ALLEN_KEY
720
-
721 796
   // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing,
722 797
   // it is highly recommended you also enable Z_SAFE_HOMING below!
723 798
 
@@ -726,17 +801,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
726 801
 
727 802
 // @section homing
728 803
 
729
-// The position of the homing switches
730
-#define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used
731
-//#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
732 806
 
733
-// Manual homing switch locations:
734
-// For deltabots this means top and center of the Cartesian print volume.
735
-#if ENABLED(MANUAL_HOME_POSITIONS)
736
-  #define MANUAL_X_HOME_POS 0
737
-  #define MANUAL_Y_HOME_POS 0
738
-  #define MANUAL_Z_HOME_POS 250 // For delta: Distance between nozzle and print surface after homing.
739
-#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
740 812
 
741 813
 // Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
742 814
 //
@@ -744,7 +816,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
744 816
 //
745 817
 // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
746 818
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
747
-// - 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).
748 820
 // - Prevent Z homing when the Z probe is outside bed area.
749 821
 //#define Z_SAFE_HOMING
750 822
 
@@ -754,16 +826,13 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
754 826
 #endif
755 827
 
756 828
 
757
-// @section movement
829
+// Delta only homes to Z
830
+#define HOMING_FEEDRATE_Z  (200*60)
758 831
 
759
-/**
760
- * MOVEMENT SETTINGS
761
- */
762
-
763
-// delta homing speeds must be the same on xyz
764
-#define HOMING_FEEDRATE_XYZ (200*60)
765
-#define HOMING_FEEDRATE_E 0
766
-#define HOMING_FEEDRATE { HOMING_FEEDRATE_XYZ, HOMING_FEEDRATE_XYZ, HOMING_FEEDRATE_XYZ, HOMING_FEEDRATE_E }
832
+//
833
+// MOVEMENT SETTINGS
834
+// @section motion
835
+//
767 836
 
768 837
 // default settings
769 838
 // delta speeds must be the same on xyz
@@ -785,18 +854,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
785 854
 //============================= Additional Features ===========================
786 855
 //=============================================================================
787 856
 
788
-// @section more
789
-
790
-// Custom M code points
791
-#define CUSTOM_M_CODES
792
-#if ENABLED(CUSTOM_M_CODES)
793
-  #if ENABLED(AUTO_BED_LEVELING_FEATURE)
794
-    #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851
795
-    #define Z_PROBE_OFFSET_RANGE_MIN -20
796
-    #define Z_PROBE_OFFSET_RANGE_MAX 20
797
-  #endif
798
-#endif
799
-
800 857
 // @section extras
801 858
 
802 859
 //
@@ -828,22 +885,107 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
828 885
 //
829 886
 //#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose
830 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
+
831 898
 // @section temperature
832 899
 
833 900
 // Preheat Constants
834
-#define PLA_PREHEAT_HOTEND_TEMP 180
835
-#define PLA_PREHEAT_HPB_TEMP 70
836
-#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
837 904
 
838
-#define ABS_PREHEAT_HOTEND_TEMP 240
839
-#define ABS_PREHEAT_HPB_TEMP 100
840
-#define ABS_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
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
927
+
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
841 980
 
842 981
 //
843 982
 // Print job timer
844 983
 //
845 984
 // Enable this option to automatically start and stop the
846
-// 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
847 989
 //
848 990
 // In all cases the timer can be started and stopped using
849 991
 // the following commands:
@@ -876,8 +1018,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
876 1018
 //
877 1019
 // Here you may choose the language used by Marlin on the LCD menus, the following
878 1020
 // list of languages are available:
879
-//    en, pl, fr, de, es, ru, bg, it, pt, pt_utf8, pt-br, pt-br_utf8,
880
-//    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'}
881 1025
 //
882 1026
 #define LCD_LANGUAGE en
883 1027
 
@@ -1025,6 +1169,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1025 1169
 //#define ULTIPANEL
1026 1170
 
1027 1171
 //
1172
+// Cartesio UI
1173
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1174
+//
1175
+//#define CARTESIO_UI
1176
+
1177
+//
1028 1178
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
1029 1179
 // http://reprap.org/wiki/PanelOne
1030 1180
 //
@@ -1037,6 +1187,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1037 1187
 //#define MAKRPANEL
1038 1188
 
1039 1189
 //
1190
+// ReprapWorld Graphical LCD
1191
+// https://reprapworld.com/?products_details&products_id/1218
1192
+//
1193
+//#define REPRAPWORLD_GRAPHICAL_LCD
1194
+
1195
+//
1040 1196
 // Activate one of these if you have a Panucatt Devices
1041 1197
 // Viki 2.0 or mini Viki with Graphic LCD
1042 1198
 // http://panucatt.com
@@ -1086,7 +1242,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1086 1242
 // is pressed, a value of 10.0 means 10mm per click.
1087 1243
 //
1088 1244
 //#define REPRAPWORLD_KEYPAD
1089
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1245
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1090 1246
 
1091 1247
 //
1092 1248
 // RigidBot Panel V1.0
@@ -1146,7 +1302,9 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1146 1302
 //
1147 1303
 //#define U8GLIB_SSD1306
1148 1304
 
1305
+//
1149 1306
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1307
+//
1150 1308
 //#define SAV_3DGLCD
1151 1309
 #if ENABLED(SAV_3DGLCD)
1152 1310
   //#define U8GLIB_SSD1306
@@ -1181,7 +1339,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1181 1339
 // at zero value, there are 128 effective control positions.
1182 1340
 #define SOFT_PWM_SCALE 0
1183 1341
 
1184
-// Temperature status LEDs that display the hotend and bet temperature.
1342
+// Temperature status LEDs that display the hotend and bed temperature.
1185 1343
 // If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
1186 1344
 // Otherwise the RED led is on. There is 1C hysteresis.
1187 1345
 //#define TEMP_STAT_LEDS
@@ -1213,28 +1371,16 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1213 1371
 //
1214 1372
 //#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
1215 1373
 
1216
-// Servo Endstops
1217
-//
1218
-// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes.
1219
-// Use M851 to set the Z probe vertical offset from the nozzle. Store that setting with M500.
1220
-//
1221
-//#define X_ENDSTOP_SERVO_NR 1
1222
-//#define Y_ENDSTOP_SERVO_NR 2
1223
-//#define Z_ENDSTOP_SERVO_NR 0
1224
-//#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
1225 1378
 
1226 1379
 // Servo deactivation
1227 1380
 //
1228 1381
 // With this option servos are powered only during movement, then turned off to prevent jitter.
1229 1382
 //#define DEACTIVATE_SERVOS_AFTER_MOVE
1230 1383
 
1231
-#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE)
1232
-  // Delay (in microseconds) before turning the servo off. This depends on the servo speed.
1233
-  // 300ms is a good value but you can try less delay.
1234
-  // If the servo can't reach the requested position, increase it.
1235
-  #define SERVO_DEACTIVATION_DELAY 300
1236
-#endif
1237
-
1238 1384
 /**********************************************************************\
1239 1385
  * Support for a filament diameter sensor
1240 1386
  * Also allows adjustment of diameter at print time (vs  at slicing)
@@ -1265,7 +1411,4 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1265 1411
   //#define FILAMENT_LCD_DISPLAY
1266 1412
 #endif
1267 1413
 
1268
-#include "Configuration_adv.h"
1269
-#include "thermistortables.h"
1270
-
1271
-#endif //CONFIGURATION_H
1414
+#endif // CONFIGURATION_H

+ 136
- 47
Marlin/example_configurations/delta/generic/Configuration_adv.h Просмотреть файл

@@ -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,15 @@
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
+
450 513
 // @section leveling
451 514
 
452 515
 // Default mesh area is an area with an inset margin on the print area.
@@ -490,12 +553,27 @@ const unsigned int dropsegments = 5; //everything with less than this number of
490 553
   #define BLOCK_BUFFER_SIZE 16 // maximize block buffer
491 554
 #endif
492 555
 
493
-// @section more
556
+// @section serial
494 557
 
495
-//The ASCII buffer for receiving from the serial:
558
+// The ASCII buffer for serial input
496 559
 #define MAX_CMD_SIZE 96
497 560
 #define BUFSIZE 4
498 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
+
499 577
 // Bad Serial-connections can miss a received command by sending an 'ok'
500 578
 // Therefore some clients abort after 30 seconds in a timeout.
501 579
 // Some other clients start sending commands while receiving a 'wait'.
@@ -527,16 +605,30 @@ const unsigned int dropsegments = 5; //everything with less than this number of
527 605
 
528 606
 // Add support for experimental filament exchange support M600; requires display
529 607
 #if ENABLED(ULTIPANEL)
530
-  //#define FILAMENTCHANGEENABLE
531
-  #if ENABLED(FILAMENTCHANGEENABLE)
532
-    #define FILAMENTCHANGE_XPOS 3
533
-    #define FILAMENTCHANGE_YPOS 3
534
-    #define FILAMENTCHANGE_ZADD 10
535
-    #define FILAMENTCHANGE_FIRSTRETRACT -2
536
-    #define FILAMENTCHANGE_FINALRETRACT -100
537
-    #define AUTO_FILAMENT_CHANGE                //This extrude filament until you press the button on LCD
538
-    #define AUTO_FILAMENT_CHANGE_LENGTH 0.04    //Extrusion length on automatic extrusion loop
539
-    #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
540 632
   #endif
541 633
 #endif
542 634
 
@@ -682,9 +774,9 @@ const unsigned int dropsegments = 5; //everything with less than this number of
682 774
  * devices on the bus.
683 775
  *
684 776
  * ; Example #1
685
- * ; 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)
686 778
  * ; It uses multiple M155 commands with one B<base 10> arg
687
- * M155 A63  ; Target slave address
779
+ * M155 A99  ; Target slave address
688 780
  * M155 B77  ; M
689 781
  * M155 B97  ; a
690 782
  * M155 B114 ; r
@@ -694,19 +786,16 @@ const unsigned int dropsegments = 5; //everything with less than this number of
694 786
  * M155 S1   ; Send the current buffer
695 787
  *
696 788
  * ; Example #2
697
- * ; Request 6 bytes from slave device with address 0x63
698
- * M156 A63 B5
789
+ * ; Request 6 bytes from slave device with address 0x63 (99)
790
+ * M156 A99 B5
699 791
  *
700 792
  * ; Example #3
701 793
  * ; Example serial output of a M156 request
702
- * echo:i2c-reply: from:63 bytes:5 data:hello
794
+ * echo:i2c-reply: from:99 bytes:5 data:hello
703 795
  */
704 796
 
705 797
 // @section i2cbus
706 798
 
707 799
 //#define EXPERIMENTAL_I2CBUS
708 800
 
709
-#include "Conditionals.h"
710
-#include "SanityCheck.h"
711
-
712
-#endif //CONFIGURATION_ADV_H
801
+#endif // CONFIGURATION_ADV_H

+ 323
- 180
Marlin/example_configurations/delta/kossel_mini/Configuration.h Просмотреть файл

@@ -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_RAISE_PROBE_DEPLOY_STOW 50 // Raise to make room for the probe to deploy / stow
633
+#define Z_RAISE_BETWEEN_PROBINGS 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,6 +674,7 @@ 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
677
+
521 678
 //#define MIN_Z_HEIGHT_FOR_HOMING 15// (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
522 679
                                     // Be sure you have this distance over your Z_MAX_POS in case.
523 680
 
@@ -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
@@ -583,8 +740,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
583 740
 // @section bedlevel
584 741
 
585 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.
586 747
 //#define DEBUG_LEVELING_FEATURE
587
-//#define Z_MIN_PROBE_REPEATABILITY_TEST  // If not commented out, Z Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
588 748
 
589 749
 #if ENABLED(AUTO_BED_LEVELING_FEATURE)
590 750
 
@@ -631,96 +791,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
631 791
     #define ABL_PROBE_PT_3_X 170
632 792
     #define ABL_PROBE_PT_3_Y 20
633 793
 
634
-  #endif // AUTO_BED_LEVELING_GRID
635
-
636
-  // Z Probe to nozzle (X,Y) offset, relative to (0, 0).
637
-  // X and Y offsets must be integers.
638
-  //
639
-  // In the following example the X and Y offsets are both positive:
640
-  // #define X_PROBE_OFFSET_FROM_EXTRUDER 10
641
-  // #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
642
-  //
643
-  //    +-- BACK ---+
644
-  //    |           |
645
-  //  L |    (+) P  | R <-- probe (20,20)
646
-  //  E |           | I
647
-  //  F | (-) N (+) | G <-- nozzle (10,10)
648
-  //  T |           | H
649
-  //    |    (-)    | T
650
-  //    |           |
651
-  //    O-- FRONT --+
652
-  //  (0,0)
653
-  #define X_PROBE_OFFSET_FROM_EXTRUDER 0     // X offset: -left  +right  [of the nozzle]
654
-  #define Y_PROBE_OFFSET_FROM_EXTRUDER -10   // Y offset: -front +behind [the nozzle]
655
-  #define Z_PROBE_OFFSET_FROM_EXTRUDER -3.5  // Z offset: -below +above  [the nozzle]
656
-
657
-  #define XY_TRAVEL_SPEED 4000         // X and Y axis travel speed between probes, in mm/min.
658
-
659
-  #define Z_RAISE_BEFORE_PROBING 15   // How much the Z axis will be raised before traveling to the first probing point.
660
-  #define Z_RAISE_BETWEEN_PROBINGS 5  // How much the Z axis will be raised when traveling from between next probing points
661
-  #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
662 795
 
663 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.
664 797
                                                                              // Useful to retract a deployable Z probe.
665 798
 
666
-  // Probes are sensors/switches that need to be activated before they can be used
667
-  // and deactivated after their use.
668
-  // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE
669
-
670
-  // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER
671
-  // when the hardware endstops are active.
672
-  //#define FIX_MOUNTED_PROBE
673
-
674
-  // A Servo Probe can be defined in the servo section below.
675
-
676
-  // An Allen Key Probe is currently predefined only in the delta example configurations.
677
-
678
-  // Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
679
-  //#define Z_PROBE_SLED
680
-  //#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.
681
-
682
-  // A Mechanical Probe is any probe that either doesn't deploy or needs manual deployment
683
-  // For example any setup that uses the nozzle itself as a probe.
684
-  //#define MECHANICAL_PROBE
685
-
686
-  // Allen key retractable z-probe as seen on many Kossel delta printers - http://reprap.org/wiki/Kossel#Automatic_bed_leveling_probe
687
-  // Deploys by touching z-axis belt. Retracts by pushing the probe down. Uses Z_MIN_PIN.
688
-  #define Z_PROBE_ALLEN_KEY
689
-
690
-  #if ENABLED(Z_PROBE_ALLEN_KEY)
691
-    // 2 or 3 sets of coordinates for deploying and retracting the spring loaded touch probe on G29,
692
-    // if servo actuated touch probe is not defined. Uncomment as appropriate for your printer/probe.
693
-
694
-    // Kossel Mini
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 XY_TRAVEL_SPEED
699
-
700
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_2_X 0.0
701
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_2_Y DELTA_PRINTABLE_RADIUS
702
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_2_Z 100.0
703
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE (XY_TRAVEL_SPEED/10)
704
-
705
-    #define Z_PROBE_ALLEN_KEY_STOW_DEPTH 20
706
-    // Move the probe into position
707
-    #define Z_PROBE_ALLEN_KEY_STOW_1_X -64.0
708
-    #define Z_PROBE_ALLEN_KEY_STOW_1_Y 56.0
709
-    #define Z_PROBE_ALLEN_KEY_STOW_1_Z 23.0
710
-    #define Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE XY_TRAVEL_SPEED
711
-    // Move the nozzle down further to push the probe into retracted position.
712
-    #define Z_PROBE_ALLEN_KEY_STOW_2_X  Z_PROBE_ALLEN_KEY_STOW_1_X
713
-    #define Z_PROBE_ALLEN_KEY_STOW_2_Y  Z_PROBE_ALLEN_KEY_STOW_1_Y
714
-    #define Z_PROBE_ALLEN_KEY_STOW_2_Z  (Z_PROBE_ALLEN_KEY_STOW_1_Z-Z_PROBE_ALLEN_KEY_STOW_DEPTH)
715
-    #define Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE (XY_TRAVEL_SPEED/10)
716
-    // Raise things back up slightly so we don't bump into anything
717
-    #define Z_PROBE_ALLEN_KEY_STOW_3_X  Z_PROBE_ALLEN_KEY_STOW_2_X
718
-    #define Z_PROBE_ALLEN_KEY_STOW_3_Y  Z_PROBE_ALLEN_KEY_STOW_2_Y
719
-    #define Z_PROBE_ALLEN_KEY_STOW_3_Z  (Z_PROBE_ALLEN_KEY_STOW_1_Z+Z_PROBE_ALLEN_KEY_STOW_DEPTH)
720
-    #define Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE (XY_TRAVEL_SPEED/2)
721
-
722
-  #endif // Z_PROBE_ALLEN_KEY
723
-
724 799
   // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing,
725 800
   // it is highly recommended you also enable Z_SAFE_HOMING below!
726 801
 
@@ -729,17 +804,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
729 804
 
730 805
 // @section homing
731 806
 
732
-// The position of the homing switches
733
-#define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used
734
-#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
735 809
 
736
-// Manual homing switch locations:
737
-// For deltabots this means top and center of the Cartesian print volume.
738
-#if ENABLED(MANUAL_HOME_POSITIONS)
739
-  #define MANUAL_X_HOME_POS 0
740
-  #define MANUAL_Y_HOME_POS 0
741
-  #define MANUAL_Z_HOME_POS 250 // For delta: Distance between nozzle and print surface after homing.
742
-#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
743 815
 
744 816
 // Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
745 817
 //
@@ -747,7 +819,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
747 819
 //
748 820
 // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
749 821
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
750
-// - 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).
751 823
 // - Prevent Z homing when the Z probe is outside bed area.
752 824
 //#define Z_SAFE_HOMING
753 825
 
@@ -757,16 +829,13 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
757 829
 #endif
758 830
 
759 831
 
760
-// @section movement
832
+// Delta only homes to Z
833
+#define HOMING_FEEDRATE_Z  (200*60)
761 834
 
762
-/**
763
- * MOVEMENT SETTINGS
764
- */
765
-
766
-// delta homing speeds must be the same on xyz
767
-#define HOMING_FEEDRATE_XYZ (200*60)
768
-#define HOMING_FEEDRATE_E 0
769
-#define HOMING_FEEDRATE { HOMING_FEEDRATE_XYZ, HOMING_FEEDRATE_XYZ, HOMING_FEEDRATE_XYZ, HOMING_FEEDRATE_E }
835
+//
836
+// MOVEMENT SETTINGS
837
+// @section motion
838
+//
770 839
 
771 840
 // default settings
772 841
 // delta speeds must be the same on xyz
@@ -788,18 +857,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
788 857
 //============================= Additional Features ===========================
789 858
 //=============================================================================
790 859
 
791
-// @section more
792
-
793
-// Custom M code points
794
-#define CUSTOM_M_CODES
795
-#if ENABLED(CUSTOM_M_CODES)
796
-  #if ENABLED(AUTO_BED_LEVELING_FEATURE)
797
-    #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851
798
-    #define Z_PROBE_OFFSET_RANGE_MIN -20
799
-    #define Z_PROBE_OFFSET_RANGE_MAX 20
800
-  #endif
801
-#endif
802
-
803 860
 // @section extras
804 861
 
805 862
 //
@@ -831,22 +888,107 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
831 888
 //
832 889
 //#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose
833 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
+
834 901
 // @section temperature
835 902
 
836 903
 // Preheat Constants
837
-#define PLA_PREHEAT_HOTEND_TEMP 180
838
-#define PLA_PREHEAT_HPB_TEMP 70
839
-#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
840 975
 
841
-#define ABS_PREHEAT_HOTEND_TEMP 240
842
-#define ABS_PREHEAT_HPB_TEMP 100
843
-#define ABS_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
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
844 983
 
845 984
 //
846 985
 // Print job timer
847 986
 //
848 987
 // Enable this option to automatically start and stop the
849
-// 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
850 992
 //
851 993
 // In all cases the timer can be started and stopped using
852 994
 // the following commands:
@@ -879,8 +1021,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
879 1021
 //
880 1022
 // Here you may choose the language used by Marlin on the LCD menus, the following
881 1023
 // list of languages are available:
882
-//    en, pl, fr, de, es, ru, bg, it, pt, pt_utf8, pt-br, pt-br_utf8,
883
-//    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'}
884 1028
 //
885 1029
 #define LCD_LANGUAGE en
886 1030
 
@@ -1028,6 +1172,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1028 1172
 //#define ULTIPANEL
1029 1173
 
1030 1174
 //
1175
+// Cartesio UI
1176
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1177
+//
1178
+//#define CARTESIO_UI
1179
+
1180
+//
1031 1181
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
1032 1182
 // http://reprap.org/wiki/PanelOne
1033 1183
 //
@@ -1040,6 +1190,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1040 1190
 //#define MAKRPANEL
1041 1191
 
1042 1192
 //
1193
+// ReprapWorld Graphical LCD
1194
+// https://reprapworld.com/?products_details&products_id/1218
1195
+//
1196
+//#define REPRAPWORLD_GRAPHICAL_LCD
1197
+
1198
+//
1043 1199
 // Activate one of these if you have a Panucatt Devices
1044 1200
 // Viki 2.0 or mini Viki with Graphic LCD
1045 1201
 // http://panucatt.com
@@ -1089,7 +1245,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1089 1245
 // is pressed, a value of 10.0 means 10mm per click.
1090 1246
 //
1091 1247
 //#define REPRAPWORLD_KEYPAD
1092
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1248
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1093 1249
 
1094 1250
 //
1095 1251
 // RigidBot Panel V1.0
@@ -1149,7 +1305,9 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1149 1305
 //
1150 1306
 //#define U8GLIB_SSD1306
1151 1307
 
1308
+//
1152 1309
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1310
+//
1153 1311
 //#define SAV_3DGLCD
1154 1312
 #if ENABLED(SAV_3DGLCD)
1155 1313
   //#define U8GLIB_SSD1306
@@ -1184,7 +1342,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1184 1342
 // at zero value, there are 128 effective control positions.
1185 1343
 #define SOFT_PWM_SCALE 0
1186 1344
 
1187
-// Temperature status LEDs that display the hotend and bet temperature.
1345
+// Temperature status LEDs that display the hotend and bed temperature.
1188 1346
 // If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
1189 1347
 // Otherwise the RED led is on. There is 1C hysteresis.
1190 1348
 //#define TEMP_STAT_LEDS
@@ -1216,28 +1374,16 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1216 1374
 //
1217 1375
 //#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
1218 1376
 
1219
-// Servo Endstops
1220
-//
1221
-// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes.
1222
-// Use M851 to set the Z probe vertical offset from the nozzle. Store that setting with M500.
1223
-//
1224
-//#define X_ENDSTOP_SERVO_NR 1
1225
-//#define Y_ENDSTOP_SERVO_NR 2
1226
-//#define Z_ENDSTOP_SERVO_NR 0
1227
-//#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
1228 1381
 
1229 1382
 // Servo deactivation
1230 1383
 //
1231 1384
 // With this option servos are powered only during movement, then turned off to prevent jitter.
1232 1385
 //#define DEACTIVATE_SERVOS_AFTER_MOVE
1233 1386
 
1234
-#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE)
1235
-  // Delay (in microseconds) before turning the servo off. This depends on the servo speed.
1236
-  // 300ms is a good value but you can try less delay.
1237
-  // If the servo can't reach the requested position, increase it.
1238
-  #define SERVO_DEACTIVATION_DELAY 300
1239
-#endif
1240
-
1241 1387
 /**********************************************************************\
1242 1388
  * Support for a filament diameter sensor
1243 1389
  * Also allows adjustment of diameter at print time (vs  at slicing)
@@ -1268,7 +1414,4 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1268 1414
   //#define FILAMENT_LCD_DISPLAY
1269 1415
 #endif
1270 1416
 
1271
-#include "Configuration_adv.h"
1272
-#include "thermistortables.h"
1273
-
1274
-#endif //CONFIGURATION_H
1417
+#endif // CONFIGURATION_H

+ 136
- 47
Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h Просмотреть файл

@@ -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,15 @@
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
+
449 512
 // @section leveling
450 513
 
451 514
 // Default mesh area is an area with an inset margin on the print area.
@@ -489,12 +552,27 @@ const unsigned int dropsegments = 5; //everything with less than this number of
489 552
   #define BLOCK_BUFFER_SIZE 16 // maximize block buffer
490 553
 #endif
491 554
 
492
-// @section more
555
+// @section serial
493 556
 
494
-//The ASCII buffer for receiving from the serial:
557
+// The ASCII buffer for serial input
495 558
 #define MAX_CMD_SIZE 96
496 559
 #define BUFSIZE 4
497 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
+
498 576
 // Bad Serial-connections can miss a received command by sending an 'ok'
499 577
 // Therefore some clients abort after 30 seconds in a timeout.
500 578
 // Some other clients start sending commands while receiving a 'wait'.
@@ -526,16 +604,30 @@ const unsigned int dropsegments = 5; //everything with less than this number of
526 604
 
527 605
 // Add support for experimental filament exchange support M600; requires display
528 606
 #if ENABLED(ULTIPANEL)
529
-  //#define FILAMENTCHANGEENABLE
530
-  #if ENABLED(FILAMENTCHANGEENABLE)
531
-    #define FILAMENTCHANGE_XPOS 3
532
-    #define FILAMENTCHANGE_YPOS 3
533
-    #define FILAMENTCHANGE_ZADD 10
534
-    #define FILAMENTCHANGE_FIRSTRETRACT -2
535
-    #define FILAMENTCHANGE_FINALRETRACT -100
536
-    #define AUTO_FILAMENT_CHANGE                //This extrude filament until you press the button on LCD
537
-    #define AUTO_FILAMENT_CHANGE_LENGTH 0.04    //Extrusion length on automatic extrusion loop
538
-    #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
539 631
   #endif
540 632
 #endif
541 633
 
@@ -681,9 +773,9 @@ const unsigned int dropsegments = 5; //everything with less than this number of
681 773
  * devices on the bus.
682 774
  *
683 775
  * ; Example #1
684
- * ; 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)
685 777
  * ; It uses multiple M155 commands with one B<base 10> arg
686
- * M155 A63  ; Target slave address
778
+ * M155 A99  ; Target slave address
687 779
  * M155 B77  ; M
688 780
  * M155 B97  ; a
689 781
  * M155 B114 ; r
@@ -693,19 +785,16 @@ const unsigned int dropsegments = 5; //everything with less than this number of
693 785
  * M155 S1   ; Send the current buffer
694 786
  *
695 787
  * ; Example #2
696
- * ; Request 6 bytes from slave device with address 0x63
697
- * M156 A63 B5
788
+ * ; Request 6 bytes from slave device with address 0x63 (99)
789
+ * M156 A99 B5
698 790
  *
699 791
  * ; Example #3
700 792
  * ; Example serial output of a M156 request
701
- * echo:i2c-reply: from:63 bytes:5 data:hello
793
+ * echo:i2c-reply: from:99 bytes:5 data:hello
702 794
  */
703 795
 
704 796
 // @section i2cbus
705 797
 
706 798
 //#define EXPERIMENTAL_I2CBUS
707 799
 
708
-#include "Conditionals.h"
709
-#include "SanityCheck.h"
710
-
711
-#endif //CONFIGURATION_ADV_H
800
+#endif // CONFIGURATION_ADV_H

+ 327
- 184
Marlin/example_configurations/delta/kossel_pro/Configuration.h Просмотреть файл

@@ -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_RAISE_PROBE_DEPLOY_STOW 100 // Raise to make room for the probe to deploy / stow
627
+#define Z_RAISE_BETWEEN_PROBINGS 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,6 +668,7 @@ 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
671
+
510 672
 //#define MIN_Z_HEIGHT_FOR_HOMING 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
511 673
                                     // Be sure you have this distance over your Z_MAX_POS in case.
512 674
 
@@ -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
@@ -572,8 +734,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
572 734
 // @section bedlevel
573 735
 
574 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.
575 741
 //#define DEBUG_LEVELING_FEATURE
576
-//#define Z_MIN_PROBE_REPEATABILITY_TEST  // If not commented out, Z Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
577 742
 
578 743
 #if ENABLED(AUTO_BED_LEVELING_FEATURE)
579 744
 
@@ -620,101 +785,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
620 785
     #define ABL_PROBE_PT_3_X 170
621 786
     #define ABL_PROBE_PT_3_Y 20
622 787
 
623
-  #endif // AUTO_BED_LEVELING_GRID
624
-
625
-  // Z Probe to nozzle (X,Y) offset, relative to (0, 0).
626
-  // X and Y offsets must be integers.
627
-  //
628
-  // In the following example the X and Y offsets are both positive:
629
-  // #define X_PROBE_OFFSET_FROM_EXTRUDER 10
630
-  // #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
631
-  //
632
-  //    +-- BACK ---+
633
-  //    |           |
634
-  //  L |    (+) P  | R <-- probe (20,20)
635
-  //  E |           | I
636
-  //  F | (-) N (+) | G <-- nozzle (10,10)
637
-  //  T |           | H
638
-  //    |    (-)    | T
639
-  //    |           |
640
-  //    O-- FRONT --+
641
-  //  (0,0)
642
-  #define X_PROBE_OFFSET_FROM_EXTRUDER -23 // KosselPro actual: -22.919
643
-  #define Y_PROBE_OFFSET_FROM_EXTRUDER -6  // KosselPro actual: -6.304
644
-  // Kossel Pro note: The correct value is likely -17.45 but I'd rather err on the side of
645
-  // not giving someone a head crash. Use something like G29 Z-0.2 to adjust as needed.
646
-  #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).
647
-
648
-  #define XY_TRAVEL_SPEED 8000         // X and Y axis travel speed between probes, in mm/min.
649
-
650
-  #define Z_RAISE_BEFORE_PROBING 100  // How much the Z axis will be raised before traveling to the first probing point.
651
-  #define Z_RAISE_BETWEEN_PROBINGS 5  // How much the Z axis will be raised when traveling from between next probing points.
652
-  #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
653 789
 
654 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.
655 791
                                                                              // Useful to retract a deployable Z probe.
656 792
 
657
-  // Probes are sensors/switches that need to be activated before they can be used
658
-  // and deactivated after their use.
659
-  // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE
660
-
661
-  // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER
662
-  // when the hardware endstops are active.
663
-  //#define FIX_MOUNTED_PROBE
664
-
665
-  // A Servo Probe can be defined in the servo section below.
666
-
667
-  // An Allen Key Probe is currently predefined only in the delta example configurations.
668
-
669
-  // Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
670
-  //#define Z_PROBE_SLED
671
-  //#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.
672
-
673
-  // A Mechanical Probe is any probe that either doesn't deploy or needs manual deployment
674
-  // For example any setup that uses the nozzle itself as a probe.
675
-  //#define MECHANICAL_PROBE
676
-
677
-  // Allen key retractable z-probe as seen on many Kossel delta printers - http://reprap.org/wiki/Kossel#Automatic_bed_leveling_probe
678
-  // Deploys by touching z-axis belt. Retracts by pushing the probe down. Uses Z_MIN_PIN.
679
-  #define Z_PROBE_ALLEN_KEY
680
-
681
-  #if ENABLED(Z_PROBE_ALLEN_KEY)
682
-    // 2 or 3 sets of coordinates for deploying and retracting the spring loaded touch probe on G29,
683
-    // if servo actuated touch probe is not defined. Uncomment as appropriate for your printer/probe.
684
-
685
-    // Kossel Pro
686
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_1_X -105.00 // Move left but not quite so far that we'll bump the belt
687
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_1_Y 0.00
688
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_1_Z 100.0
689
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE HOMING_FEEDRATE_XYZ
690
-
691
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_2_X -110.00 // Move outward to position deploy pin to the left of the arm
692
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_2_Y -125.00
693
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_2_Z Z_PROBE_ALLEN_KEY_DEPLOY_1_Z
694
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE HOMING_FEEDRATE_XYZ
695
-
696
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_3_X 45.00 // Move right to trigger deploy pin
697
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_3_Y -125.00
698
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_3_Z Z_PROBE_ALLEN_KEY_DEPLOY_2_Z
699
-    #define Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE (HOMING_FEEDRATE_XYZ)/2
700
-
701
-    #define Z_PROBE_ALLEN_KEY_STOW_1_X 36.00 // Line up with bed retaining clip
702
-    #define Z_PROBE_ALLEN_KEY_STOW_1_Y -125.00
703
-    #define Z_PROBE_ALLEN_KEY_STOW_1_Z 75.0
704
-    #define Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE HOMING_FEEDRATE_XYZ
705
-
706
-    #define Z_PROBE_ALLEN_KEY_STOW_2_X Z_PROBE_ALLEN_KEY_STOW_1_X // move down to retract probe
707
-    #define Z_PROBE_ALLEN_KEY_STOW_2_Y Z_PROBE_ALLEN_KEY_STOW_1_Y
708
-    #define Z_PROBE_ALLEN_KEY_STOW_2_Z 0.0
709
-    #define Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE (HOMING_FEEDRATE_XYZ)/2
710
-
711
-    #define Z_PROBE_ALLEN_KEY_STOW_3_X 0.0  // return to 0,0,100
712
-    #define Z_PROBE_ALLEN_KEY_STOW_3_Y 0.0
713
-    #define Z_PROBE_ALLEN_KEY_STOW_3_Z 100.0
714
-    #define Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE HOMING_FEEDRATE_XYZ
715
-
716
-  #endif // Z_PROBE_ALLEN_KEY
717
-
718 793
   // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing,
719 794
   // it is highly recommended you also enable Z_SAFE_HOMING below!
720 795
 
@@ -723,17 +798,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
723 798
 
724 799
 // @section homing
725 800
 
726
-// The position of the homing switches
727
-#define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used
728
-#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
729 803
 
730
-// Manual homing switch locations:
731
-// For deltabots this means top and center of the Cartesian print volume.
732
-#if ENABLED(MANUAL_HOME_POSITIONS)
733
-  #define MANUAL_X_HOME_POS 0
734
-  #define MANUAL_Y_HOME_POS 0
735
-  #define MANUAL_Z_HOME_POS 277 // For delta: Distance between nozzle and print surface after homing.
736
-#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
737 809
 
738 810
 // Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
739 811
 //
@@ -741,7 +813,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
741 813
 //
742 814
 // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
743 815
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
744
-// - 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).
745 817
 // - Prevent Z homing when the Z probe is outside bed area.
746 818
 #define Z_SAFE_HOMING
747 819
 
@@ -751,16 +823,13 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
751 823
 #endif
752 824
 
753 825
 
754
-// @section movement
826
+// Delta only homes to Z
827
+#define HOMING_FEEDRATE_Z  (200*60)
755 828
 
756
-/**
757
- * MOVEMENT SETTINGS
758
- */
759
-
760
-// delta homing speeds must be the same on xyz
761
-#define HOMING_FEEDRATE_XYZ (200*60)
762
-#define HOMING_FEEDRATE_E 0
763
-#define HOMING_FEEDRATE { HOMING_FEEDRATE_XYZ, HOMING_FEEDRATE_XYZ, HOMING_FEEDRATE_XYZ, HOMING_FEEDRATE_E }
829
+//
830
+// MOVEMENT SETTINGS
831
+// @section motion
832
+//
764 833
 
765 834
 #define XYZ_FULL_STEPS_PER_ROTATION 200
766 835
 #define XYZ_MICROSTEPS 32
@@ -788,18 +857,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
788 857
 //============================= Additional Features ===========================
789 858
 //=============================================================================
790 859
 
791
-// @section more
792
-
793
-// Custom M code points
794
-#define CUSTOM_M_CODES
795
-#if ENABLED(CUSTOM_M_CODES)
796
-  #if ENABLED(AUTO_BED_LEVELING_FEATURE)
797
-    #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851
798
-    #define Z_PROBE_OFFSET_RANGE_MIN -15
799
-    #define Z_PROBE_OFFSET_RANGE_MAX -5
800
-  #endif
801
-#endif
802
-
803 860
 // @section extras
804 861
 
805 862
 //
@@ -831,22 +888,107 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
831 888
 //
832 889
 //#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose
833 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
+
834 901
 // @section temperature
835 902
 
836 903
 // Preheat Constants
837
-#define PLA_PREHEAT_HOTEND_TEMP 180
838
-#define PLA_PREHEAT_HPB_TEMP 70
839
-#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
840 935
 
841
-#define ABS_PREHEAT_HOTEND_TEMP 240
842
-#define ABS_PREHEAT_HPB_TEMP 100
843
-#define ABS_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
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
844 983
 
845 984
 //
846 985
 // Print job timer
847 986
 //
848 987
 // Enable this option to automatically start and stop the
849
-// 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
850 992
 //
851 993
 // In all cases the timer can be started and stopped using
852 994
 // the following commands:
@@ -879,8 +1021,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
879 1021
 //
880 1022
 // Here you may choose the language used by Marlin on the LCD menus, the following
881 1023
 // list of languages are available:
882
-//    en, pl, fr, de, es, ru, bg, it, pt, pt_utf8, pt-br, pt-br_utf8,
883
-//    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'}
884 1028
 //
885 1029
 #define LCD_LANGUAGE en
886 1030
 
@@ -1028,6 +1172,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1028 1172
 //#define ULTIPANEL
1029 1173
 
1030 1174
 //
1175
+// Cartesio UI
1176
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1177
+//
1178
+//#define CARTESIO_UI
1179
+
1180
+//
1031 1181
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
1032 1182
 // http://reprap.org/wiki/PanelOne
1033 1183
 //
@@ -1040,6 +1190,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1040 1190
 //#define MAKRPANEL
1041 1191
 
1042 1192
 //
1193
+// ReprapWorld Graphical LCD
1194
+// https://reprapworld.com/?products_details&products_id/1218
1195
+//
1196
+//#define REPRAPWORLD_GRAPHICAL_LCD
1197
+
1198
+//
1043 1199
 // Activate one of these if you have a Panucatt Devices
1044 1200
 // Viki 2.0 or mini Viki with Graphic LCD
1045 1201
 // http://panucatt.com
@@ -1089,7 +1245,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1089 1245
 // is pressed, a value of 10.0 means 10mm per click.
1090 1246
 //
1091 1247
 //#define REPRAPWORLD_KEYPAD
1092
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1248
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1093 1249
 
1094 1250
 //
1095 1251
 // RigidBot Panel V1.0
@@ -1149,7 +1305,9 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1149 1305
 //
1150 1306
 //#define U8GLIB_SSD1306
1151 1307
 
1308
+//
1152 1309
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1310
+//
1153 1311
 //#define SAV_3DGLCD
1154 1312
 #if ENABLED(SAV_3DGLCD)
1155 1313
   //#define U8GLIB_SSD1306
@@ -1184,7 +1342,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1184 1342
 // at zero value, there are 128 effective control positions.
1185 1343
 #define SOFT_PWM_SCALE 0
1186 1344
 
1187
-// Temperature status LEDs that display the hotend and bet temperature.
1345
+// Temperature status LEDs that display the hotend and bed temperature.
1188 1346
 // If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
1189 1347
 // Otherwise the RED led is on. There is 1C hysteresis.
1190 1348
 //#define TEMP_STAT_LEDS
@@ -1216,28 +1374,16 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1216 1374
 //
1217 1375
 //#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
1218 1376
 
1219
-// Servo Endstops
1220
-//
1221
-// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes.
1222
-// Use M851 to set the Z probe vertical offset from the nozzle. Store that setting with M500.
1223
-//
1224
-//#define X_ENDSTOP_SERVO_NR 1
1225
-//#define Y_ENDSTOP_SERVO_NR 2
1226
-//#define Z_ENDSTOP_SERVO_NR 0
1227
-//#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
1228 1381
 
1229 1382
 // Servo deactivation
1230 1383
 //
1231 1384
 // With this option servos are powered only during movement, then turned off to prevent jitter.
1232 1385
 //#define DEACTIVATE_SERVOS_AFTER_MOVE
1233 1386
 
1234
-#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE)
1235
-  // Delay (in microseconds) before turning the servo off. This depends on the servo speed.
1236
-  // 300ms is a good value but you can try less delay.
1237
-  // If the servo can't reach the requested position, increase it.
1238
-  #define SERVO_DEACTIVATION_DELAY 300
1239
-#endif
1240
-
1241 1387
 /**********************************************************************\
1242 1388
  * Support for a filament diameter sensor
1243 1389
  * Also allows adjustment of diameter at print time (vs  at slicing)
@@ -1268,7 +1414,4 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1268 1414
   //#define FILAMENT_LCD_DISPLAY
1269 1415
 #endif
1270 1416
 
1271
-#include "Configuration_adv.h"
1272
-#include "thermistortables.h"
1273
-
1274
-#endif //CONFIGURATION_H
1417
+#endif // CONFIGURATION_H

+ 136
- 47
Marlin/example_configurations/delta/kossel_pro/Configuration_adv.h Просмотреть файл

@@ -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,15 @@
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
+
454 517
 // @section leveling
455 518
 
456 519
 // Default mesh area is an area with an inset margin on the print area.
@@ -494,12 +557,27 @@ const unsigned int dropsegments = 5; //everything with less than this number of
494 557
   #define BLOCK_BUFFER_SIZE 16 // maximize block buffer
495 558
 #endif
496 559
 
497
-// @section more
560
+// @section serial
498 561
 
499
-//The ASCII buffer for receiving from the serial:
562
+// The ASCII buffer for serial input
500 563
 #define MAX_CMD_SIZE 96
501 564
 #define BUFSIZE 4
502 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
+
503 581
 // Bad Serial-connections can miss a received command by sending an 'ok'
504 582
 // Therefore some clients abort after 30 seconds in a timeout.
505 583
 // Some other clients start sending commands while receiving a 'wait'.
@@ -531,16 +609,30 @@ const unsigned int dropsegments = 5; //everything with less than this number of
531 609
 
532 610
 // Add support for experimental filament exchange support M600; requires display
533 611
 #if ENABLED(ULTIPANEL)
534
-  //#define FILAMENTCHANGEENABLE
535
-  #if ENABLED(FILAMENTCHANGEENABLE)
536
-    #define FILAMENTCHANGE_XPOS 3
537
-    #define FILAMENTCHANGE_YPOS 3
538
-    #define FILAMENTCHANGE_ZADD 10
539
-    #define FILAMENTCHANGE_FIRSTRETRACT -2
540
-    #define FILAMENTCHANGE_FINALRETRACT -100
541
-    #define AUTO_FILAMENT_CHANGE                //This extrude filament until you press the button on LCD
542
-    #define AUTO_FILAMENT_CHANGE_LENGTH 0.04    //Extrusion length on automatic extrusion loop
543
-    #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
544 636
   #endif
545 637
 #endif
546 638
 
@@ -686,9 +778,9 @@ const unsigned int dropsegments = 5; //everything with less than this number of
686 778
  * devices on the bus.
687 779
  *
688 780
  * ; Example #1
689
- * ; 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)
690 782
  * ; It uses multiple M155 commands with one B<base 10> arg
691
- * M155 A63  ; Target slave address
783
+ * M155 A99  ; Target slave address
692 784
  * M155 B77  ; M
693 785
  * M155 B97  ; a
694 786
  * M155 B114 ; r
@@ -698,19 +790,16 @@ const unsigned int dropsegments = 5; //everything with less than this number of
698 790
  * M155 S1   ; Send the current buffer
699 791
  *
700 792
  * ; Example #2
701
- * ; Request 6 bytes from slave device with address 0x63
702
- * M156 A63 B5
793
+ * ; Request 6 bytes from slave device with address 0x63 (99)
794
+ * M156 A99 B5
703 795
  *
704 796
  * ; Example #3
705 797
  * ; Example serial output of a M156 request
706
- * echo:i2c-reply: from:63 bytes:5 data:hello
798
+ * echo:i2c-reply: from:99 bytes:5 data:hello
707 799
  */
708 800
 
709 801
 // @section i2cbus
710 802
 
711 803
 //#define EXPERIMENTAL_I2CBUS
712 804
 
713
-#include "Conditionals.h"
714
-#include "SanityCheck.h"
715
-
716
-#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 Просмотреть файл


+ 321
- 177
Marlin/example_configurations/delta/kossel_xl/Configuration.h Просмотреть файл

@@ -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_RAISE_PROBE_DEPLOY_STOW 20 // Raise to make room for the probe to deploy / stow
628
+#define Z_RAISE_BETWEEN_PROBINGS 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,6 +669,7 @@ 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
672
+
519 673
 //#define MIN_Z_HEIGHT_FOR_HOMING 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
520 674
                                     // Be sure you have this distance over your Z_MAX_POS in case.
521 675
 
@@ -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
@@ -581,8 +735,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
581 735
 // @section bedlevel
582 736
 
583 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.
584 742
 //#define DEBUG_LEVELING_FEATURE
585
-//#define Z_MIN_PROBE_REPEATABILITY_TEST  // If not commented out, Z Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
586 743
 
587 744
 #if ENABLED(AUTO_BED_LEVELING_FEATURE)
588 745
 
@@ -629,93 +786,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
629 786
     #define ABL_PROBE_PT_3_X 170
630 787
     #define ABL_PROBE_PT_3_Y 20
631 788
 
632
-  #endif // AUTO_BED_LEVELING_GRID
633
-
634
-  // Z Probe to nozzle (X,Y) offset, relative to (0, 0).
635
-  // X and Y offsets must be integers.
636
-  //
637
-  // In the following example the X and Y offsets are both positive:
638
-  // #define X_PROBE_OFFSET_FROM_EXTRUDER 10
639
-  // #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
640
-  //
641
-  //    +-- BACK ---+
642
-  //    |           |
643
-  //  L |    (+) P  | R <-- probe (20,20)
644
-  //  E |           | I
645
-  //  F | (-) N (+) | G <-- nozzle (10,10)
646
-  //  T |           | H
647
-  //    |    (-)    | T
648
-  //    |           |
649
-  //    O-- FRONT --+
650
-  //  (0,0)
651
-  #define X_PROBE_OFFSET_FROM_EXTRUDER 0.0     // Z probe to nozzle X offset: -left  +right
652
-  #define Y_PROBE_OFFSET_FROM_EXTRUDER 0.0     // Z probe to nozzle Y offset: -front +behind
653
-  #define Z_PROBE_OFFSET_FROM_EXTRUDER 0.3     // Z probe to nozzle Z offset: -below (always!)
654
-
655
-  #define XY_TRAVEL_SPEED 8000         // X and Y axis travel speed between probes, in mm/min.
656
-
657
-  #define Z_RAISE_BEFORE_PROBING 20   // How much the Z axis will be raised before traveling to the first probing point.
658
-  #define Z_RAISE_BETWEEN_PROBINGS 10 // How much the Z axis will be raised when traveling from between next probing points.
659
-  #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
660 790
 
661 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.
662 792
                                                                              // Useful to retract a deployable Z probe.
663 793
 
664
-  // Probes are sensors/switches that need to be activated before they can be used
665
-  // and deactivated after their use.
666
-  // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE
667
-
668
-  // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER
669
-  // when the hardware endstops are active.
670
-  #define FIX_MOUNTED_PROBE
671
-
672
-  // A Servo Probe can be defined in the servo section below.
673
-
674
-  // An Allen Key Probe is currently predefined only in the delta example configurations.
675
-
676
-  // Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
677
-  //#define Z_PROBE_SLED
678
-  //#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.
679
-
680
-  // A Mechanical Probe is any probe that either doesn't deploy or needs manual deployment
681
-  // For example any setup that uses the nozzle itself as a probe.
682
-  //#define MECHANICAL_PROBE
683
-
684
-  // Allen key retractable z-probe as seen on many Kossel delta printers - http://reprap.org/wiki/Kossel#Automatic_bed_leveling_probe
685
-  // Deploys by touching z-axis belt. Retracts by pushing the probe down. Uses Z_MIN_PIN.
686
-  //#define Z_PROBE_ALLEN_KEY
687
-
688
-  #if ENABLED(Z_PROBE_ALLEN_KEY)
689
-    // 2 or 3 sets of coordinates for deploying and retracting the spring loaded touch probe on G29,
690
-    // if servo actuated touch probe is not defined. Uncomment as appropriate for your printer/probe.
691
-
692
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_X 30.0
693
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_Y DELTA_PRINTABLE_RADIUS
694
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_Z 100.0
695
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE HOMING_FEEDRATE_XYZ
696
-
697
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_X 0.0
698
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_Y DELTA_PRINTABLE_RADIUS
699
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_Z 100.0
700
-    //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE (HOMING_FEEDRATE_XYZ)/10
701
-
702
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_X -64.0 // Move the probe into position
703
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_Y 56.0
704
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_Z 23.0
705
-    //#define Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE HOMING_FEEDRATE_XYZ
706
-
707
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_X -64.0 // Push it down
708
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_Y 56.0
709
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_Z 3.0
710
-    //#define Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE (HOMING_FEEDRATE_XYZ)/10
711
-
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
-  #endif // Z_PROBE_ALLEN_KEY
718
-
719 794
   // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing,
720 795
   // it is highly recommended you also enable Z_SAFE_HOMING below!
721 796
 
@@ -724,17 +799,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
724 799
 
725 800
 // @section homing
726 801
 
727
-// The position of the homing switches
728
-#define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used
729
-#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
730 804
 
731
-// Manual homing switch locations:
732
-// For deltabots this means top and center of the Cartesian print volume.
733
-#if ENABLED(MANUAL_HOME_POSITIONS)
734
-  #define MANUAL_X_HOME_POS 0
735
-  #define MANUAL_Y_HOME_POS 0
736
-  #define MANUAL_Z_HOME_POS 381.4 // For delta: Distance between nozzle and print surface after homing.
737
-#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
738 810
 
739 811
 // Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
740 812
 //
@@ -742,7 +814,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
742 814
 //
743 815
 // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
744 816
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
745
-// - 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).
746 818
 // - Prevent Z homing when the Z probe is outside bed area.
747 819
 //#define Z_SAFE_HOMING
748 820
 
@@ -751,17 +823,13 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
751 823
   #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2)    // Y point for Z homing when homing all axis (G28).
752 824
 #endif
753 825
 
826
+// Delta only homes to Z
827
+#define HOMING_FEEDRATE_Z  (60*60)
754 828
 
755
-// @section movement
756
-
757
-/**
758
- * MOVEMENT SETTINGS
759
- */
760
-
761
-// delta homing speeds must be the same on xyz
762
-#define HOMING_FEEDRATE_XYZ (60*60)
763
-#define HOMING_FEEDRATE_E 0
764
-#define HOMING_FEEDRATE { HOMING_FEEDRATE_XYZ, HOMING_FEEDRATE_XYZ, HOMING_FEEDRATE_XYZ, HOMING_FEEDRATE_E }
829
+//
830
+// MOVEMENT SETTINGS
831
+// @section motion
832
+//
765 833
 
766 834
 // variables to calculate steps
767 835
 #define XYZ_FULL_STEPS_PER_ROTATION 200
@@ -772,6 +840,8 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
772 840
 // delta speeds must be the same on xyz
773 841
 #define XYZ_STEPS (XYZ_FULL_STEPS_PER_ROTATION * XYZ_MICROSTEPS / double(XYZ_BELT_PITCH) / double(XYZ_PULLEY_TEETH))
774 842
 
843
+// default settings
844
+
775 845
 #define DEFAULT_AXIS_STEPS_PER_UNIT   {XYZ_STEPS, XYZ_STEPS, XYZ_STEPS, 158}   // default steps per unit for PowerWasp
776 846
 #define DEFAULT_MAX_FEEDRATE          {200, 200, 200, 25}    // (mm/sec)
777 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.
@@ -790,18 +860,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
790 860
 //============================= Additional Features ===========================
791 861
 //=============================================================================
792 862
 
793
-// @section more
794
-
795
-// Custom M code points
796
-#define CUSTOM_M_CODES
797
-#if ENABLED(CUSTOM_M_CODES)
798
-  #if ENABLED(AUTO_BED_LEVELING_FEATURE)
799
-    #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851
800
-    #define Z_PROBE_OFFSET_RANGE_MIN -20
801
-    #define Z_PROBE_OFFSET_RANGE_MAX 20
802
-  #endif
803
-#endif
804
-
805 863
 // @section extras
806 864
 
807 865
 //
@@ -833,22 +891,107 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
833 891
 //
834 892
 //#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose
835 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
+
836 904
 // @section temperature
837 905
 
838 906
 // Preheat Constants
839
-#define PLA_PREHEAT_HOTEND_TEMP 180
840
-#define PLA_PREHEAT_HPB_TEMP 70
841
-#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
842 938
 
843
-#define ABS_PREHEAT_HOTEND_TEMP 240
844
-#define ABS_PREHEAT_HPB_TEMP 100
845
-#define ABS_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
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
846 986
 
847 987
 //
848 988
 // Print job timer
849 989
 //
850 990
 // Enable this option to automatically start and stop the
851
-// 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
852 995
 //
853 996
 // In all cases the timer can be started and stopped using
854 997
 // the following commands:
@@ -881,8 +1024,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
881 1024
 //
882 1025
 // Here you may choose the language used by Marlin on the LCD menus, the following
883 1026
 // list of languages are available:
884
-//    en, pl, fr, de, es, ru, bg, it, pt, pt_utf8, pt-br, pt-br_utf8,
885
-//    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'}
886 1031
 //
887 1032
 #define LCD_LANGUAGE en
888 1033
 
@@ -1030,6 +1175,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1030 1175
 //#define ULTIPANEL
1031 1176
 
1032 1177
 //
1178
+// Cartesio UI
1179
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1180
+//
1181
+//#define CARTESIO_UI
1182
+
1183
+//
1033 1184
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
1034 1185
 // http://reprap.org/wiki/PanelOne
1035 1186
 //
@@ -1042,6 +1193,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1042 1193
 //#define MAKRPANEL
1043 1194
 
1044 1195
 //
1196
+// ReprapWorld Graphical LCD
1197
+// https://reprapworld.com/?products_details&products_id/1218
1198
+//
1199
+//#define REPRAPWORLD_GRAPHICAL_LCD
1200
+
1201
+//
1045 1202
 // Activate one of these if you have a Panucatt Devices
1046 1203
 // Viki 2.0 or mini Viki with Graphic LCD
1047 1204
 // http://panucatt.com
@@ -1091,7 +1248,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1091 1248
 // is pressed, a value of 10.0 means 10mm per click.
1092 1249
 //
1093 1250
 //#define REPRAPWORLD_KEYPAD
1094
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1251
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1095 1252
 
1096 1253
 //
1097 1254
 // RigidBot Panel V1.0
@@ -1151,7 +1308,9 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1151 1308
 //
1152 1309
 //#define U8GLIB_SSD1306
1153 1310
 
1311
+//
1154 1312
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1313
+//
1155 1314
 //#define SAV_3DGLCD
1156 1315
 #if ENABLED(SAV_3DGLCD)
1157 1316
   //#define U8GLIB_SSD1306
@@ -1186,7 +1345,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1186 1345
 // at zero value, there are 128 effective control positions.
1187 1346
 #define SOFT_PWM_SCALE 0
1188 1347
 
1189
-// Temperature status LEDs that display the hotend and bet temperature.
1348
+// Temperature status LEDs that display the hotend and bed temperature.
1190 1349
 // If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
1191 1350
 // Otherwise the RED led is on. There is 1C hysteresis.
1192 1351
 //#define TEMP_STAT_LEDS
@@ -1218,28 +1377,16 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1218 1377
 //
1219 1378
 //#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
1220 1379
 
1221
-// Servo Endstops
1222
-//
1223
-// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes.
1224
-// Use M851 to set the Z probe vertical offset from the nozzle. Store that setting with M500.
1225
-//
1226
-//#define X_ENDSTOP_SERVO_NR 1
1227
-//#define Y_ENDSTOP_SERVO_NR 2
1228
-//#define Z_ENDSTOP_SERVO_NR 0
1229
-//#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
1230 1384
 
1231 1385
 // Servo deactivation
1232 1386
 //
1233 1387
 // With this option servos are powered only during movement, then turned off to prevent jitter.
1234 1388
 //#define DEACTIVATE_SERVOS_AFTER_MOVE
1235 1389
 
1236
-#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE)
1237
-  // Delay (in microseconds) before turning the servo off. This depends on the servo speed.
1238
-  // 300ms is a good value but you can try less delay.
1239
-  // If the servo can't reach the requested position, increase it.
1240
-  #define SERVO_DEACTIVATION_DELAY 300
1241
-#endif
1242
-
1243 1390
 /**********************************************************************\
1244 1391
  * Support for a filament diameter sensor
1245 1392
  * Also allows adjustment of diameter at print time (vs  at slicing)
@@ -1270,7 +1417,4 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1270 1417
   //#define FILAMENT_LCD_DISPLAY
1271 1418
 #endif
1272 1419
 
1273
-#include "Configuration_adv.h"
1274
-#include "thermistortables.h"
1275
-
1276
-#endif //CONFIGURATION_H
1420
+#endif // CONFIGURATION_H

+ 136
- 47
Marlin/example_configurations/delta/kossel_xl/Configuration_adv.h Просмотреть файл

@@ -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,15 @@
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
+
450 513
 // @section leveling
451 514
 
452 515
 // Default mesh area is an area with an inset margin on the print area.
@@ -490,12 +553,27 @@ const unsigned int dropsegments = 5; //everything with less than this number of
490 553
   #define BLOCK_BUFFER_SIZE 16 // maximize block buffer
491 554
 #endif
492 555
 
493
-// @section more
556
+// @section serial
494 557
 
495
-//The ASCII buffer for receiving from the serial:
558
+// The ASCII buffer for serial input
496 559
 #define MAX_CMD_SIZE 96
497 560
 #define BUFSIZE 4
498 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
+
499 577
 // Bad Serial-connections can miss a received command by sending an 'ok'
500 578
 // Therefore some clients abort after 30 seconds in a timeout.
501 579
 // Some other clients start sending commands while receiving a 'wait'.
@@ -527,16 +605,30 @@ const unsigned int dropsegments = 5; //everything with less than this number of
527 605
 
528 606
 // Add support for experimental filament exchange support M600; requires display
529 607
 #if ENABLED(ULTIPANEL)
530
-  //#define FILAMENTCHANGEENABLE
531
-  #if ENABLED(FILAMENTCHANGEENABLE)
532
-    #define FILAMENTCHANGE_XPOS 3
533
-    #define FILAMENTCHANGE_YPOS 3
534
-    #define FILAMENTCHANGE_ZADD 10
535
-    #define FILAMENTCHANGE_FIRSTRETRACT -2
536
-    #define FILAMENTCHANGE_FINALRETRACT -100
537
-    #define AUTO_FILAMENT_CHANGE                //This extrude filament until you press the button on LCD
538
-    #define AUTO_FILAMENT_CHANGE_LENGTH 0.04    //Extrusion length on automatic extrusion loop
539
-    #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
540 632
   #endif
541 633
 #endif
542 634
 
@@ -682,9 +774,9 @@ const unsigned int dropsegments = 5; //everything with less than this number of
682 774
  * devices on the bus.
683 775
  *
684 776
  * ; Example #1
685
- * ; 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)
686 778
  * ; It uses multiple M155 commands with one B<base 10> arg
687
- * M155 A63  ; Target slave address
779
+ * M155 A99  ; Target slave address
688 780
  * M155 B77  ; M
689 781
  * M155 B97  ; a
690 782
  * M155 B114 ; r
@@ -694,19 +786,16 @@ const unsigned int dropsegments = 5; //everything with less than this number of
694 786
  * M155 S1   ; Send the current buffer
695 787
  *
696 788
  * ; Example #2
697
- * ; Request 6 bytes from slave device with address 0x63
698
- * M156 A63 B5
789
+ * ; Request 6 bytes from slave device with address 0x63 (99)
790
+ * M156 A99 B5
699 791
  *
700 792
  * ; Example #3
701 793
  * ; Example serial output of a M156 request
702
- * echo:i2c-reply: from:63 bytes:5 data:hello
794
+ * echo:i2c-reply: from:99 bytes:5 data:hello
703 795
  */
704 796
 
705 797
 // @section i2cbus
706 798
 
707 799
 //#define EXPERIMENTAL_I2CBUS
708 800
 
709
-#include "Conditionals.h"
710
-#include "SanityCheck.h"
711
-
712
-#endif //CONFIGURATION_ADV_H
801
+#endif // CONFIGURATION_ADV_H

+ 280
- 141
Marlin/example_configurations/makibox/Configuration.h Просмотреть файл

@@ -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_RAISE_PROBE_DEPLOY_STOW 15 // Raise to make room for the probe to deploy / stow
550
+#define Z_RAISE_BETWEEN_PROBINGS 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,6 +591,7 @@ 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
594
+
482 595
 //#define MIN_Z_HEIGHT_FOR_HOMING 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
483 596
                                     // Be sure you have this distance over your Z_MAX_POS in case.
484 597
 
@@ -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
@@ -544,8 +657,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
544 657
 // @section bedlevel
545 658
 
546 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.
547 664
 //#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 665
 
550 666
 #if ENABLED(AUTO_BED_LEVELING_FEATURE)
551 667
 
@@ -588,58 +704,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
588 704
     #define ABL_PROBE_PT_3_X 170
589 705
     #define ABL_PROBE_PT_3_Y 20
590 706
 
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.
707
+  #endif // !AUTO_BED_LEVELING_GRID
619 708
 
620 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.
621 710
                                                                              // Useful to retract a deployable Z probe.
622 711
 
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 712
   // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing,
644 713
   // it is highly recommended you also enable Z_SAFE_HOMING below!
645 714
 
@@ -648,18 +717,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
648 717
 
649 718
 // @section homing
650 719
 
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
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
663 728
 
664 729
 // Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
665 730
 //
@@ -667,7 +732,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
667 732
 //
668 733
 // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
669 734
 // - 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).
735
+// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
671 736
 // - Prevent Z homing when the Z probe is outside bed area.
672 737
 //#define Z_SAFE_HOMING
673 738
 
@@ -676,14 +741,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
676 741
   #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2)    // Y point for Z homing when homing all axis (G28).
677 742
 #endif
678 743
 
744
+// Homing speeds (mm/m)
745
+#define HOMING_FEEDRATE_XY 1500
746
+#define HOMING_FEEDRATE_Z  (2*60)
679 747
 
680
-// @section movement
681
-
682
-/**
683
- * MOVEMENT SETTINGS
684
- */
685
-
686
-#define HOMING_FEEDRATE {1500, 1500, 120, 0}  // set the homing speeds (mm/min)   ***** MakiBox A6 *****
748
+//
749
+// MOVEMENT SETTINGS
750
+// @section motion
751
+//
687 752
 
688 753
 // default settings
689 754
 
@@ -705,18 +770,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
705 770
 //============================= Additional Features ===========================
706 771
 //=============================================================================
707 772
 
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 773
 // @section extras
721 774
 
722 775
 //
@@ -748,22 +801,107 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
748 801
 //
749 802
 //#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose
750 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
+
751 814
 // @section temperature
752 815
 
753 816
 // Preheat Constants
754
-#define PLA_PREHEAT_HOTEND_TEMP 180
755
-#define PLA_PREHEAT_HPB_TEMP 70
756
-#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
824
+
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
757 884
 
758
-#define ABS_PREHEAT_HOTEND_TEMP 240
759
-#define ABS_PREHEAT_HPB_TEMP 100
760
-#define ABS_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
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
761 896
 
762 897
 //
763 898
 // Print job timer
764 899
 //
765 900
 // Enable this option to automatically start and stop the
766
-// 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
767 905
 //
768 906
 // In all cases the timer can be started and stopped using
769 907
 // the following commands:
@@ -796,8 +934,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
796 934
 //
797 935
 // Here you may choose the language used by Marlin on the LCD menus, the following
798 936
 // 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
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'}
801 941
 //
802 942
 //#define LCD_LANGUAGE en
803 943
 
@@ -945,6 +1085,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
945 1085
 //#define ULTIPANEL
946 1086
 
947 1087
 //
1088
+// Cartesio UI
1089
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1090
+//
1091
+//#define CARTESIO_UI
1092
+
1093
+//
948 1094
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
949 1095
 // http://reprap.org/wiki/PanelOne
950 1096
 //
@@ -957,6 +1103,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
957 1103
 //#define MAKRPANEL
958 1104
 
959 1105
 //
1106
+// ReprapWorld Graphical LCD
1107
+// https://reprapworld.com/?products_details&products_id/1218
1108
+//
1109
+//#define REPRAPWORLD_GRAPHICAL_LCD
1110
+
1111
+//
960 1112
 // Activate one of these if you have a Panucatt Devices
961 1113
 // Viki 2.0 or mini Viki with Graphic LCD
962 1114
 // http://panucatt.com
@@ -1006,7 +1158,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1006 1158
 // is pressed, a value of 10.0 means 10mm per click.
1007 1159
 //
1008 1160
 //#define REPRAPWORLD_KEYPAD
1009
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1161
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1010 1162
 
1011 1163
 //
1012 1164
 // RigidBot Panel V1.0
@@ -1066,7 +1218,9 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1066 1218
 //
1067 1219
 //#define U8GLIB_SSD1306
1068 1220
 
1221
+//
1069 1222
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1223
+//
1070 1224
 //#define SAV_3DGLCD
1071 1225
 #if ENABLED(SAV_3DGLCD)
1072 1226
   //#define U8GLIB_SSD1306
@@ -1101,7 +1255,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1101 1255
 // at zero value, there are 128 effective control positions.
1102 1256
 #define SOFT_PWM_SCALE 0
1103 1257
 
1104
-// Temperature status LEDs that display the hotend and bet temperature.
1258
+// Temperature status LEDs that display the hotend and bed temperature.
1105 1259
 // If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
1106 1260
 // Otherwise the RED led is on. There is 1C hysteresis.
1107 1261
 //#define TEMP_STAT_LEDS
@@ -1133,28 +1287,16 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1133 1287
 //
1134 1288
 //#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
1135 1289
 
1136
-// Servo Endstops
1137
-//
1138
-// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes.
1139
-// Use M851 to set the Z probe vertical offset from the nozzle. Store that setting with M500.
1140
-//
1141
-//#define X_ENDSTOP_SERVO_NR 1
1142
-//#define Y_ENDSTOP_SERVO_NR 2
1143
-//#define Z_ENDSTOP_SERVO_NR 0
1144
-//#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
1145 1294
 
1146 1295
 // Servo deactivation
1147 1296
 //
1148 1297
 // With this option servos are powered only during movement, then turned off to prevent jitter.
1149 1298
 //#define DEACTIVATE_SERVOS_AFTER_MOVE
1150 1299
 
1151
-#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE)
1152
-  // Delay (in microseconds) before turning the servo off. This depends on the servo speed.
1153
-  // 300ms is a good value but you can try less delay.
1154
-  // If the servo can't reach the requested position, increase it.
1155
-  #define SERVO_DEACTIVATION_DELAY 300
1156
-#endif
1157
-
1158 1300
 /**********************************************************************\
1159 1301
  * Support for a filament diameter sensor
1160 1302
  * Also allows adjustment of diameter at print time (vs  at slicing)
@@ -1185,7 +1327,4 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
1185 1327
   //#define FILAMENT_LCD_DISPLAY
1186 1328
 #endif
1187 1329
 
1188
-#include "Configuration_adv.h"
1189
-#include "thermistortables.h"
1190
-
1191
-#endif //CONFIGURATION_H
1330
+#endif // CONFIGURATION_H

+ 136
- 47
Marlin/example_configurations/makibox/Configuration_adv.h Просмотреть файл

@@ -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,15 @@
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
+
448 511
 // @section leveling
449 512
 
450 513
 // Default mesh area is an area with an inset margin on the print area.
@@ -488,12 +551,27 @@ const unsigned int dropsegments = 5; //everything with less than this number of
488 551
   #define BLOCK_BUFFER_SIZE 16 // maximize block buffer
489 552
 #endif
490 553
 
491
-// @section more
554
+// @section serial
492 555
 
493
-//The ASCII buffer for receiving from the serial:
556
+// The ASCII buffer for serial input
494 557
 #define MAX_CMD_SIZE 96
495 558
 #define BUFSIZE 4
496 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
+
497 575
 // Bad Serial-connections can miss a received command by sending an 'ok'
498 576
 // Therefore some clients abort after 30 seconds in a timeout.
499 577
 // Some other clients start sending commands while receiving a 'wait'.
@@ -525,16 +603,30 @@ const unsigned int dropsegments = 5; //everything with less than this number of
525 603
 
526 604
 // Add support for experimental filament exchange support M600; requires display
527 605
 #if ENABLED(ULTIPANEL)
528
-  //#define FILAMENTCHANGEENABLE
529
-  #if ENABLED(FILAMENTCHANGEENABLE)
530
-    #define FILAMENTCHANGE_XPOS 3
531
-    #define FILAMENTCHANGE_YPOS 3
532
-    #define FILAMENTCHANGE_ZADD 10
533
-    #define FILAMENTCHANGE_FIRSTRETRACT -2
534
-    #define FILAMENTCHANGE_FINALRETRACT -100
535
-    #define AUTO_FILAMENT_CHANGE                //This extrude filament until you press the button on LCD
536
-    #define AUTO_FILAMENT_CHANGE_LENGTH 0.04    //Extrusion length on automatic extrusion loop
537
-    #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
538 630
   #endif
539 631
 #endif
540 632
 
@@ -680,9 +772,9 @@ const unsigned int dropsegments = 5; //everything with less than this number of
680 772
  * devices on the bus.
681 773
  *
682 774
  * ; Example #1
683
- * ; 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)
684 776
  * ; It uses multiple M155 commands with one B<base 10> arg
685
- * M155 A63  ; Target slave address
777
+ * M155 A99  ; Target slave address
686 778
  * M155 B77  ; M
687 779
  * M155 B97  ; a
688 780
  * M155 B114 ; r
@@ -692,19 +784,16 @@ const unsigned int dropsegments = 5; //everything with less than this number of
692 784
  * M155 S1   ; Send the current buffer
693 785
  *
694 786
  * ; Example #2
695
- * ; Request 6 bytes from slave device with address 0x63
696
- * M156 A63 B5
787
+ * ; Request 6 bytes from slave device with address 0x63 (99)
788
+ * M156 A99 B5
697 789
  *
698 790
  * ; Example #3
699 791
  * ; Example serial output of a M156 request
700
- * echo:i2c-reply: from:63 bytes:5 data:hello
792
+ * echo:i2c-reply: from:99 bytes:5 data:hello
701 793
  */
702 794
 
703 795
 // @section i2cbus
704 796
 
705 797
 //#define EXPERIMENTAL_I2CBUS
706 798
 
707
-#include "Conditionals.h"
708
-#include "SanityCheck.h"
709
-
710
-#endif //CONFIGURATION_ADV_H
799
+#endif // CONFIGURATION_ADV_H

+ 280
- 141
Marlin/example_configurations/tvrrug/Round2/Configuration.h Просмотреть файл

@@ -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_RAISE_PROBE_DEPLOY_STOW 15 // Raise to make room for the probe to deploy / stow
537
+#define Z_RAISE_BETWEEN_PROBINGS 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,6 +578,7 @@ 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
581
+
469 582
 //#define MIN_Z_HEIGHT_FOR_HOMING 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
470 583
                                     // Be sure you have this distance over your Z_MAX_POS in case.
471 584
 
@@ -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
@@ -531,8 +644,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
531 644
 // @section bedlevel
532 645
 
533 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.
534 651
 //#define DEBUG_LEVELING_FEATURE
535
-#define Z_MIN_PROBE_REPEATABILITY_TEST  // If not commented out, Z Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
536 652
 
537 653
 #if ENABLED(AUTO_BED_LEVELING_FEATURE)
538 654
 
@@ -575,58 +691,11 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
575 691
     #define ABL_PROBE_PT_3_X 170
576 692
     #define ABL_PROBE_PT_3_Y 20
577 693
 
578
-  #endif // AUTO_BED_LEVELING_GRID
579
-
580
-  // Z Probe to nozzle (X,Y) offset, relative to (0, 0).
581
-  // X and Y offsets must be integers.
582
-  //
583
-  // In the following example the X and Y offsets are both positive:
584
-  // #define X_PROBE_OFFSET_FROM_EXTRUDER 10
585
-  // #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
586
-  //
587
-  //    +-- BACK ---+
588
-  //    |           |
589
-  //  L |    (+) P  | R <-- probe (20,20)
590
-  //  E |           | I
591
-  //  F | (-) N (+) | G <-- nozzle (10,10)
592
-  //  T |           | H
593
-  //    |    (-)    | T
594
-  //    |           |
595
-  //    O-- FRONT --+
596
-  //  (0,0)
597
-  #define X_PROBE_OFFSET_FROM_EXTRUDER -25     // X offset: -left  +right  [of the nozzle]
598
-  #define Y_PROBE_OFFSET_FROM_EXTRUDER -29     // Y offset: -front +behind [the nozzle]
599
-  #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35  // Z offset: -below +above  [the nozzle]
600
-
601
-  #define XY_TRAVEL_SPEED 8000         // X and Y axis travel speed between probes, in mm/min.
602
-
603
-  #define Z_RAISE_BEFORE_PROBING 15   // How much the Z axis will be raised before traveling to the first probing point.
604
-  #define Z_RAISE_BETWEEN_PROBINGS 5  // How much the Z axis will be raised when traveling from between next probing points.
605
-  #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
606 695
 
607 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.
608 697
                                                                              // Useful to retract a deployable Z probe.
609 698
 
610
-  // Probes are sensors/switches that need to be activated before they can be used
611
-  // and deactivated after their use.
612
-  // Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, ... . You have to activate one of these for the AUTO_BED_LEVELING_FEATURE
613
-
614
-  // A fix mounted probe, like the normal inductive probe, must be deactivated to go below Z_PROBE_OFFSET_FROM_EXTRUDER
615
-  // when the hardware endstops are active.
616
-  //#define FIX_MOUNTED_PROBE
617
-
618
-  // A Servo Probe can be defined in the servo section below.
619
-
620
-  // An Allen Key Probe is currently predefined only in the delta example configurations.
621
-
622
-  // Enable if you have a Z probe mounted on a sled like those designed by Charles Bell.
623
-  //#define Z_PROBE_SLED
624
-  //#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.
625
-
626
-  // A Mechanical Probe is any probe that either doesn't deploy or needs manual deployment
627
-  // For example any setup that uses the nozzle itself as a probe.
628
-  //#define MECHANICAL_PROBE
629
-
630 699
   // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing,
631 700
   // it is highly recommended you also enable Z_SAFE_HOMING below!
632 701
 
@@ -635,18 +704,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
635 704
 
636 705
 // @section homing
637 706
 
638
-// The position of the homing switches
639
-//#define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used
640
-//#define BED_CENTER_AT_0_0  // If defined, the center of the bed is at (X=0, Y=0)
641
-
642
-// Manual homing switch locations:
643
-// For deltabots this means top and center of the Cartesian print volume.
644
-#if ENABLED(MANUAL_HOME_POSITIONS)
645
-  #define MANUAL_X_HOME_POS 0
646
-  #define MANUAL_Y_HOME_POS 0
647
-  #define MANUAL_Z_HOME_POS 0
648
-  //#define MANUAL_Z_HOME_POS 402 // For delta: Distance between nozzle and print surface after homing.
649
-#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
650 715
 
651 716
 // Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
652 717
 //
@@ -654,7 +719,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
654 719
 //
655 720
 // - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
656 721
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
657
-// - 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).
658 723
 // - Prevent Z homing when the Z probe is outside bed area.
659 724
 //#define Z_SAFE_HOMING
660 725
 
@@ -663,14 +728,14 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
663 728
   #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2)    // Y point for Z homing when homing all axis (G28).
664 729
 #endif
665 730
 
731
+// Homing speeds (mm/m)
732
+#define HOMING_FEEDRATE_XY (50*60)
733
+#define HOMING_FEEDRATE_Z  (4*60)
666 734
 
667
-// @section movement
668
-
669
-/**
670
- * MOVEMENT SETTINGS
671
- */
672
-
673
-#define HOMING_FEEDRATE {50*60, 50*60, 4*60, 0}  // set the homing speeds (mm/min)
735
+//
736
+// MOVEMENT SETTINGS
737
+// @section motion
738
+//
674 739
 
675 740
 // default settings
676 741
 
@@ -696,18 +761,6 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
696 761
 //============================= Additional Features ===========================
697 762
 //=============================================================================
698 763
 
699
-// @section more
700
-
701
-// Custom M code points
702
-#define CUSTOM_M_CODES
703
-#if ENABLED(CUSTOM_M_CODES)
704
-  #if ENABLED(AUTO_BED_LEVELING_FEATURE)
705
-    #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851
706
-    #define Z_PROBE_OFFSET_RANGE_MIN -20
707
-    #define Z_PROBE_OFFSET_RANGE_MAX 20
708
-  #endif
709
-#endif
710
-
711 764
 // @section extras
712 765
 
713 766
 //
@@ -739,22 +792,107 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
739 792
 //
740 793
 //#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose
741 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
+
742 805
 // @section temperature
743 806
 
744 807
 // Preheat Constants
745
-#define PLA_PREHEAT_HOTEND_TEMP 180
746
-#define PLA_PREHEAT_HPB_TEMP 70
747
-#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
815
+
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
748 875
 
749
-#define ABS_PREHEAT_HOTEND_TEMP 240
750
-#define ABS_PREHEAT_HPB_TEMP 100
751
-#define ABS_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
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
752 887
 
753 888
 //
754 889
 // Print job timer
755 890
 //
756 891
 // Enable this option to automatically start and stop the
757
-// 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
758 896
 //
759 897
 // In all cases the timer can be started and stopped using
760 898
 // the following commands:
@@ -787,8 +925,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
787 925
 //
788 926
 // Here you may choose the language used by Marlin on the LCD menus, the following
789 927
 // list of languages are available:
790
-//    en, pl, fr, de, es, ru, bg, it, pt, pt_utf8, pt-br, pt-br_utf8,
791
-//    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'}
792 932
 //
793 933
 //#define LCD_LANGUAGE en
794 934
 
@@ -936,6 +1076,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
936 1076
 //#define ULTIPANEL
937 1077
 
938 1078
 //
1079
+// Cartesio UI
1080
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1081
+//
1082
+//#define CARTESIO_UI
1083
+
1084
+//
939 1085
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
940 1086
 // http://reprap.org/wiki/PanelOne
941 1087
 //
@@ -948,6 +1094,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
948 1094
 //#define MAKRPANEL
949 1095
 
950 1096
 //
1097
+// ReprapWorld Graphical LCD
1098
+// https://reprapworld.com/?products_details&products_id/1218
1099
+//
1100
+//#define REPRAPWORLD_GRAPHICAL_LCD
1101
+
1102
+//
951 1103
 // Activate one of these if you have a Panucatt Devices
952 1104
 // Viki 2.0 or mini Viki with Graphic LCD
953 1105
 // http://panucatt.com
@@ -997,7 +1149,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
997 1149
 // is pressed, a value of 10.0 means 10mm per click.
998 1150
 //
999 1151
 //#define REPRAPWORLD_KEYPAD
1000
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1152
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1001 1153
 
1002 1154
 //
1003 1155
 // RigidBot Panel V1.0
@@ -1057,7 +1209,9 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1057 1209
 //
1058 1210
 //#define U8GLIB_SSD1306
1059 1211
 
1212
+//
1060 1213
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1214
+//
1061 1215
 //#define SAV_3DGLCD
1062 1216
 #if ENABLED(SAV_3DGLCD)
1063 1217
   //#define U8GLIB_SSD1306
@@ -1092,7 +1246,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1092 1246
 // at zero value, there are 128 effective control positions.
1093 1247
 #define SOFT_PWM_SCALE 0
1094 1248
 
1095
-// Temperature status LEDs that display the hotend and bet temperature.
1249
+// Temperature status LEDs that display the hotend and bed temperature.
1096 1250
 // If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
1097 1251
 // Otherwise the RED led is on. There is 1C hysteresis.
1098 1252
 //#define TEMP_STAT_LEDS
@@ -1124,28 +1278,16 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1124 1278
 //
1125 1279
 //#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
1126 1280
 
1127
-// Servo Endstops
1128
-//
1129
-// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes.
1130
-// Use M851 to set the Z probe vertical offset from the nozzle. Store that setting with M500.
1131
-//
1132
-//#define X_ENDSTOP_SERVO_NR 1
1133
-//#define Y_ENDSTOP_SERVO_NR 2
1134
-//#define Z_ENDSTOP_SERVO_NR 0
1135
-//#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
1136 1285
 
1137 1286
 // Servo deactivation
1138 1287
 //
1139 1288
 // With this option servos are powered only during movement, then turned off to prevent jitter.
1140 1289
 //#define DEACTIVATE_SERVOS_AFTER_MOVE
1141 1290
 
1142
-#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE)
1143
-  // Delay (in microseconds) before turning the servo off. This depends on the servo speed.
1144
-  // 300ms is a good value but you can try less delay.
1145
-  // If the servo can't reach the requested position, increase it.
1146
-  #define SERVO_DEACTIVATION_DELAY 300
1147
-#endif
1148
-
1149 1291
 /**********************************************************************\
1150 1292
  * Support for a filament diameter sensor
1151 1293
  * Also allows adjustment of diameter at print time (vs  at slicing)
@@ -1176,7 +1318,4 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
1176 1318
   //#define FILAMENT_LCD_DISPLAY
1177 1319
 #endif
1178 1320
 
1179
-#include "Configuration_adv.h"
1180
-#include "thermistortables.h"
1181
-
1182
-#endif //CONFIGURATION_H
1321
+#endif // CONFIGURATION_H

+ 136
- 47
Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h Просмотреть файл

@@ -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,15 @@
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
+
448 511
 // @section leveling
449 512
 
450 513
 // Default mesh area is an area with an inset margin on the print area.
@@ -488,12 +551,27 @@ const unsigned int dropsegments = 5; //everything with less than this number of
488 551
   #define BLOCK_BUFFER_SIZE 16 // maximize block buffer
489 552
 #endif
490 553
 
491
-// @section more
554
+// @section serial
492 555
 
493
-//The ASCII buffer for receiving from the serial:
556
+// The ASCII buffer for serial input
494 557
 #define MAX_CMD_SIZE 96
495 558
 #define BUFSIZE 4
496 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
+
497 575
 // Bad Serial-connections can miss a received command by sending an 'ok'
498 576
 // Therefore some clients abort after 30 seconds in a timeout.
499 577
 // Some other clients start sending commands while receiving a 'wait'.
@@ -525,16 +603,30 @@ const unsigned int dropsegments = 5; //everything with less than this number of
525 603
 
526 604
 // Add support for experimental filament exchange support M600; requires display
527 605
 #if ENABLED(ULTIPANEL)
528
-  //#define FILAMENTCHANGEENABLE
529
-  #if ENABLED(FILAMENTCHANGEENABLE)
530
-    #define FILAMENTCHANGE_XPOS 3
531
-    #define FILAMENTCHANGE_YPOS 3
532
-    #define FILAMENTCHANGE_ZADD 10
533
-    #define FILAMENTCHANGE_FIRSTRETRACT -2
534
-    #define FILAMENTCHANGE_FINALRETRACT -100
535
-    #define AUTO_FILAMENT_CHANGE                //This extrude filament until you press the button on LCD
536
-    #define AUTO_FILAMENT_CHANGE_LENGTH 0.04    //Extrusion length on automatic extrusion loop
537
-    #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
538 630
   #endif
539 631
 #endif
540 632
 
@@ -680,9 +772,9 @@ const unsigned int dropsegments = 5; //everything with less than this number of
680 772
  * devices on the bus.
681 773
  *
682 774
  * ; Example #1
683
- * ; 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)
684 776
  * ; It uses multiple M155 commands with one B<base 10> arg
685
- * M155 A63  ; Target slave address
777
+ * M155 A99  ; Target slave address
686 778
  * M155 B77  ; M
687 779
  * M155 B97  ; a
688 780
  * M155 B114 ; r
@@ -692,19 +784,16 @@ const unsigned int dropsegments = 5; //everything with less than this number of
692 784
  * M155 S1   ; Send the current buffer
693 785
  *
694 786
  * ; Example #2
695
- * ; Request 6 bytes from slave device with address 0x63
696
- * M156 A63 B5
787
+ * ; Request 6 bytes from slave device with address 0x63 (99)
788
+ * M156 A99 B5
697 789
  *
698 790
  * ; Example #3
699 791
  * ; Example serial output of a M156 request
700
- * echo:i2c-reply: from:63 bytes:5 data:hello
792
+ * echo:i2c-reply: from:99 bytes:5 data:hello
701 793
  */
702 794
 
703 795
 // @section i2cbus
704 796
 
705 797
 //#define EXPERIMENTAL_I2CBUS
706 798
 
707
-#include "Conditionals.h"
708
-#include "SanityCheck.h"
709
-
710
-#endif //CONFIGURATION_ADV_H
799
+#endif // CONFIGURATION_ADV_H

+ 12
- 5
Marlin/fastio.h Просмотреть файл

@@ -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 Просмотреть файл

@@ -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
-```

Двоичные данные
Marlin/fonts/bdf2u8g.exe Просмотреть файл


+ 25
- 25
Marlin/language.h Просмотреть файл

@@ -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 Просмотреть файл

@@ -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 Просмотреть файл

@@ -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 Просмотреть файл

@@ -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 Просмотреть файл

@@ -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 Просмотреть файл

@@ -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

+ 19
- 22
Marlin/language_da.h Просмотреть файл

@@ -54,16 +54,16 @@
54 54
 #define MSG_SET_HOME_OFFSETS                "Sæt forskyding af home"
55 55
 #define MSG_HOME_OFFSETS_APPLIED            "Forskydninger af home pos. er tilføjet"
56 56
 #define MSG_SET_ORIGIN                      "Sæt origin"
57
-#define MSG_PREHEAT_PLA                     "Forvarm PLA"
58
-#define MSG_PREHEAT_PLA_N                   "Forvarm PLA "
59
-#define MSG_PREHEAT_PLA_ALL                 "Forvarm PLA Alle"
60
-#define MSG_PREHEAT_PLA_BEDONLY             "Forvarm PLA Bed"
61
-#define MSG_PREHEAT_PLA_SETTINGS            "Forvarm PLA conf"
62
-#define MSG_PREHEAT_ABS                     "Forvarm ABS"
63
-#define MSG_PREHEAT_ABS_N                   "Forvarm ABS "
64
-#define MSG_PREHEAT_ABS_ALL                 "Forvarm ABS Alle"
65
-#define MSG_PREHEAT_ABS_BEDONLY             "Forvarm ABS Bed"
66
-#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 67
 #define MSG_H1                              "1"
68 68
 #define MSG_H2                              "2"
69 69
 #define MSG_H3                              "3"
@@ -83,7 +83,6 @@
83 83
 #define MSG_MOVE_E2                         "2"
84 84
 #define MSG_MOVE_E3                         "3"
85 85
 #define MSG_MOVE_E4                         "4"
86
-
87 86
 #define MSG_MOVE_01MM                       "Flyt 0.1mm"
88 87
 #define MSG_MOVE_1MM                        "Flyt 1mm"
89 88
 #define MSG_MOVE_10MM                       "Flyt 10mm"
@@ -171,7 +170,8 @@
171 170
 #define MSG_INIT_SDCARD                     "Init. SD card"
172 171
 #define MSG_CNG_SDCARD                      "Skift SD kort"
173 172
 #define MSG_ZPROBE_OUT                      "Probe udenfor plade"
174
-#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"
175 175
 #define MSG_ZPROBE_ZOFFSET                  "Z Offset"
176 176
 #define MSG_BABYSTEP_X                      "Babystep X"
177 177
 #define MSG_BABYSTEP_Y                      "Babystep Y"
@@ -182,19 +182,16 @@
182 182
 #define MSG_THERMAL_RUNAWAY                 "Temp løber løbsk"
183 183
 #define MSG_ERR_MAXTEMP                     "Fejl: Maks temp"
184 184
 #define MSG_ERR_MINTEMP                     "Fejl: Min temp"
185
-#define MSG_ERR_MAXTEMP_BED                 "Fejl: Maks P temp"
186
-#define MSG_ERR_MINTEMP_BED                 "Fejl: Min P temp"
187
-#define MSG_END_HOUR                        "Timer"
188
-#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"
189 187
 #define MSG_HEATING                         "Opvarmer..."
190 188
 #define MSG_HEATING_COMPLETE                "Opvarmet"
191 189
 #define MSG_BED_HEATING                     "Opvarmer plade"
192 190
 #define MSG_BED_DONE                        "Plade opvarmet"
193
-
194
-#define MSG_DELTA_CALIBRATE               "Delta Kalibrering"
195
-#define MSG_DELTA_CALIBRATE_X             "Kalibrer X"
196
-#define MSG_DELTA_CALIBRATE_Y             "Kalibrer Y"
197
-#define MSG_DELTA_CALIBRATE_Z             "Kalibrer Z"
198
-#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"
199 196
 
200 197
 #endif // LANGUAGE_DA_H

+ 67
- 14
Marlin/language_de.h Просмотреть файл

@@ -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 Просмотреть файл

@@ -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 Просмотреть файл

@@ -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 Просмотреть файл

@@ -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 Просмотреть файл

@@ -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 Просмотреть файл

@@ -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 Просмотреть файл

@@ -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 Просмотреть файл

@@ -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 Просмотреть файл


Некоторые файлы не были показаны из-за большого количества измененных файлов

Загрузка…
Отмена
Сохранить