Scott Lahteine 7 лет назад
Родитель
Сommit
700549ee5d
100 измененных файлов: 20305 добавлений и 3849 удалений
  1. 36
    0
      .github/issue_template.md
  2. 45
    124
      .travis.yml
  3. 82
    47
      Marlin/Conditionals_LCD.h
  4. 1
    0
      Marlin/Conditionals_post.h
  5. 64
    21
      Marlin/Configuration.h
  6. 117
    21
      Marlin/Configuration_adv.h
  7. 139
    91
      Marlin/G26_Mesh_Validation_Tool.cpp
  8. 1132
    0
      Marlin/I2CPositionEncoder.cpp
  9. 359
    0
      Marlin/I2CPositionEncoder.h
  10. 13
    15
      Marlin/M100_Free_Mem_Chk.cpp
  11. 2
    2
      Marlin/Makefile
  12. 5
    5
      Marlin/Marlin.h
  13. 2
    1
      Marlin/MarlinSerial.cpp
  14. 1259
    899
      Marlin/Marlin_main.cpp
  15. 265
    191
      Marlin/SanityCheck.h
  16. 1
    1
      Marlin/Sd2Card.h
  17. 1
    1
      Marlin/SdFatStructs.h
  18. 2
    1
      Marlin/boards.h
  19. 1
    1
      Marlin/buzzer.h
  20. 16
    16
      Marlin/cardreader.cpp
  21. 164
    94
      Marlin/configuration_store.cpp
  22. 1
    1
      Marlin/configuration_store.h
  23. 2
    2
      Marlin/dac_mcp4728.cpp
  24. 2
    2
      Marlin/dac_mcp4728.h
  25. 39
    24
      Marlin/digipot_mcp4018.cpp
  26. 7
    7
      Marlin/digipot_mcp4451.cpp
  27. 192
    0
      Marlin/dogm_font_data_ISO10646_CZ.h
  28. 2
    2
      Marlin/endstops.cpp
  29. 34
    17
      Marlin/enum.h
  30. 1786
    0
      Marlin/example_configurations/Anet/A6/Configuration.h
  31. 1361
    0
      Marlin/example_configurations/Anet/A6/Configuration_adv.h
  32. 1636
    0
      Marlin/example_configurations/Anet/A8/Configuration.h
  33. 1361
    0
      Marlin/example_configurations/Anet/A8/Configuration_adv.h
  34. 1625
    0
      Marlin/example_configurations/CL-260/Configuration.h
  35. 15
    0
      Marlin/example_configurations/CL-260/README.txt
  36. 70
    30
      Marlin/example_configurations/Cartesio/Configuration.h
  37. 111
    14
      Marlin/example_configurations/Cartesio/Configuration_adv.h
  38. 70
    30
      Marlin/example_configurations/Felix/Configuration.h
  39. 111
    14
      Marlin/example_configurations/Felix/Configuration_adv.h
  40. 70
    30
      Marlin/example_configurations/Felix/DUAL/Configuration.h
  41. 72
    32
      Marlin/example_configurations/FolgerTech-i3-2020/Configuration.h
  42. 113
    16
      Marlin/example_configurations/FolgerTech-i3-2020/Configuration_adv.h
  43. 70
    30
      Marlin/example_configurations/Hephestos/Configuration.h
  44. 111
    14
      Marlin/example_configurations/Hephestos/Configuration_adv.h
  45. 70
    30
      Marlin/example_configurations/Hephestos_2/Configuration.h
  46. 111
    15
      Marlin/example_configurations/Hephestos_2/Configuration_adv.h
  47. 1594
    0
      Marlin/example_configurations/Infitary-i3-M508/Configuration.h
  48. 1260
    0
      Marlin/example_configurations/Infitary-i3-M508/Configuration_adv.h
  49. 70
    25
      Marlin/example_configurations/K8200/Configuration.h
  50. 111
    14
      Marlin/example_configurations/K8200/Configuration_adv.h
  51. 70
    30
      Marlin/example_configurations/K8400/Configuration.h
  52. 111
    14
      Marlin/example_configurations/K8400/Configuration_adv.h
  53. 70
    30
      Marlin/example_configurations/K8400/Dual-head/Configuration.h
  54. 1
    1
      Marlin/example_configurations/K8400/README.md
  55. 72
    32
      Marlin/example_configurations/M150/Configuration.h
  56. 111
    14
      Marlin/example_configurations/M150/Configuration_adv.h
  57. 70
    30
      Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h
  58. 70
    30
      Marlin/example_configurations/RigidBot/Configuration.h
  59. 111
    14
      Marlin/example_configurations/RigidBot/Configuration_adv.h
  60. 75
    38
      Marlin/example_configurations/SCARA/Configuration.h
  61. 111
    14
      Marlin/example_configurations/SCARA/Configuration_adv.h
  62. 70
    30
      Marlin/example_configurations/TAZ4/Configuration.h
  63. 111
    14
      Marlin/example_configurations/TAZ4/Configuration_adv.h
  64. 70
    25
      Marlin/example_configurations/TinyBoy2/Configuration.h
  65. 109
    12
      Marlin/example_configurations/TinyBoy2/Configuration_adv.h
  66. 70
    30
      Marlin/example_configurations/WITBOX/Configuration.h
  67. 111
    14
      Marlin/example_configurations/WITBOX/Configuration_adv.h
  68. 70
    30
      Marlin/example_configurations/adafruit/ST7565/Configuration.h
  69. 104
    58
      Marlin/example_configurations/delta/FLSUN/auto_calibrate/Configuration.h
  70. 111
    14
      Marlin/example_configurations/delta/FLSUN/auto_calibrate/Configuration_adv.h
  71. 104
    65
      Marlin/example_configurations/delta/FLSUN/kossel_mini/Configuration.h
  72. 111
    14
      Marlin/example_configurations/delta/FLSUN/kossel_mini/Configuration_adv.h
  73. 105
    65
      Marlin/example_configurations/delta/generic/Configuration.h
  74. 111
    14
      Marlin/example_configurations/delta/generic/Configuration_adv.h
  75. 105
    65
      Marlin/example_configurations/delta/kossel_mini/Configuration.h
  76. 111
    14
      Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h
  77. 105
    65
      Marlin/example_configurations/delta/kossel_pro/Configuration.h
  78. 111
    14
      Marlin/example_configurations/delta/kossel_pro/Configuration_adv.h
  79. 105
    65
      Marlin/example_configurations/delta/kossel_xl/Configuration.h
  80. 111
    14
      Marlin/example_configurations/delta/kossel_xl/Configuration_adv.h
  81. 74
    34
      Marlin/example_configurations/gCreate_gMax1.5+/Configuration.h
  82. 111
    14
      Marlin/example_configurations/gCreate_gMax1.5+/Configuration_adv.h
  83. 70
    30
      Marlin/example_configurations/makibox/Configuration.h
  84. 110
    13
      Marlin/example_configurations/makibox/Configuration_adv.h
  85. 70
    30
      Marlin/example_configurations/tvrrug/Round2/Configuration.h
  86. 111
    14
      Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h
  87. 90
    33
      Marlin/example_configurations/wt150/Configuration.h
  88. 201
    17
      Marlin/example_configurations/wt150/Configuration_adv.h
  89. 12
    23
      Marlin/fastio.h
  90. 0
    681
      Marlin/fastio_AT90USB-Marlin.h
  91. 18
    2
      Marlin/fastio_AT90USB.h
  92. 7
    7
      Marlin/gcode.cpp
  93. 62
    22
      Marlin/gcode.h
  94. 4
    2
      Marlin/language.h
  95. 77
    1
      Marlin/language_cz.h
  96. 351
    0
      Marlin/language_cz_utf8.h
  97. 85
    14
      Marlin/language_de.h
  98. 192
    137
      Marlin/language_en.h
  99. 100
    26
      Marlin/language_fr.h
  100. 0
    0
      Marlin/language_it.h

+ 36
- 0
.github/issue_template.md Просмотреть файл

@@ -0,0 +1,36 @@
1
+Thank you for submitting your feedback to the Marlin project.
2
+Please use one of the templates below to fill out this box.
3
+
4
+------------------------------------------------------------
5
+### Feature Request
6
+Please put [FR] in the issue title: `[FR] Add-on that goes 'ping'`
7
+
8
+------------------------------------------------------------
9
+### Compile Error
10
+When I compile with `FEATURE_X` I get an error:
11
+```
12
+Paste_the_error_text_here
13
+```
14
+
15
+------------------------------------------------------------
16
+### Bug Report
17
+- Description: ---
18
+- Expected behaviour: ---
19
+- Actual behaviour: ---
20
+- Steps to reproduce:
21
+  - Do this
22
+  - Do that
23
+
24
+Attach a ZIP of `Configuration.h` and `Configuration_adv.h` by dropping here.
25
+
26
+------------------------------------------------------------
27
+### Bug Report Tips
28
+- When troubleshooting, use `M502` followed by `M500` to reset EEPROM to defaults.
29
+- Use `DEBUG_LEVELING_FEATURE` with `M111 S247` for detailed logging of homing/leveling.
30
+- Format text with: **bold**, _italic_, `code`.
31
+- Format C++ with three backticks, plus "cpp":
32
+```cpp
33
+void my_function(bool do_it) {
34
+  // Hold this spot
35
+}
36
+```

+ 45
- 124
.travis.yml Просмотреть файл

@@ -71,48 +71,15 @@ script:
71 71
   #
72 72
   - build_marlin
73 73
   #
74
-  # Test heated bed temperature sensor
75
-  #
76
-  - opt_set TEMP_SENSOR_BED 1
77
-  - build_marlin
78
-  #
79
-  # Test 2 extruders on basic RAMPS 1.4
74
+  # Test 2 extruders (one MAX6675) and heated bed on basic RAMPS 1.4
75
+  #  plus a "Fix Mounted" Probe with Safe Homing and some arc options
80 76
   #
81 77
   - opt_set MOTHERBOARD BOARD_RAMPS_14_EEB
82 78
   - opt_set EXTRUDERS 2
79
+  - opt_set TEMP_SENSOR_0 -2
83 80
   - opt_set TEMP_SENSOR_1 1
84
-  - build_marlin
85
-  #
86
-  # Test 5 extruders on AZTEEG_X3_PRO (can use any board with >=5 extruders defined)
87
-  # Include a test for LIN_ADVANCE here also
88
-  #
89
-  - opt_set MOTHERBOARD BOARD_AZTEEG_X3_PRO
90
-  - opt_set EXTRUDERS 5
91
-  - opt_set TEMP_SENSOR_1 1
92
-  - opt_set TEMP_SENSOR_2 5
93
-  - opt_set TEMP_SENSOR_3 20
94
-  - opt_set TEMP_SENSOR_4 999
95 81
   - opt_set TEMP_SENSOR_BED 1
96
-  - opt_enable_adv LIN_ADVANCE
97
-  - build_marlin
98
-  #
99
-  # Test PIDTEMPBED
100
-  #
101
-  - restore_configs
102
-  - opt_set TEMP_SENSOR_BED 1
103
-  - opt_enable PIDTEMPBED
104
-  - build_marlin
105
-  #
106
-  # Test MAX6675
107
-  #
108
-  - restore_configs
109
-  - opt_set TEMP_SENSOR_0 -2
110
-  - build_marlin
111
-  #
112
-  # Test a "Fix Mounted" Probe along with Safe Homing
113
-  #
114
-  - restore_configs
115
-  - opt_enable FIX_MOUNTED_PROBE Z_SAFE_HOMING
82
+  - opt_enable PIDTEMPBED FIX_MOUNTED_PROBE Z_SAFE_HOMING ARC_P_CIRCLES CNC_WORKSPACE_PLANES
116 83
   - build_marlin
117 84
   #
118 85
   # ...with AUTO_BED_LEVELING_LINEAR, Z_MIN_PROBE_REPEATABILITY_TEST, and DEBUG_LEVELING_FEATURE
@@ -126,7 +93,7 @@ script:
126 93
   #
127 94
   - restore_configs
128 95
   - opt_enable AUTO_BED_LEVELING_UBL UBL_G26_MESH_EDITING ENABLE_LEVELING_FADE_HEIGHT FIX_MOUNTED_PROBE EEPROM_SETTINGS G3D_PANEL
129
-  - opt_enable_adv CUSTOM_USER_MENUS
96
+  - opt_enable_adv CUSTOM_USER_MENUS I2C_POSITION_ENCODERS BABYSTEPPING
130 97
   - build_marlin
131 98
   #
132 99
   # Test a Sled Z Probe
@@ -151,17 +118,27 @@ script:
151 118
   - opt_enable MESH_BED_LEVELING MESH_G28_REST_ORIGIN LCD_BED_LEVELING ULTIMAKERCONTROLLER
152 119
   - build_marlin
153 120
   #
154
-  # Test PROBE_MANUALLY feature, with LCD support
121
+  # Test PROBE_MANUALLY feature, with LCD support,
122
+  #      EEPROM_SETTINGS, EEPROM_CHITCHAT, M100_FREE_MEMORY_WATCHER,
123
+  #      INCH_MODE_SUPPORT, TEMPERATURE_UNITS_SUPPORT
155 124
   #
156 125
   - restore_configs
126
+  - opt_set MOTHERBOARD BOARD_MINIRAMBO
157 127
   - opt_enable PROBE_MANUALLY AUTO_BED_LEVELING_BILINEAR LCD_BED_LEVELING ULTIMAKERCONTROLLER
128
+  - opt_enable EEPROM_SETTINGS EEPROM_CHITCHAT M100_FREE_MEMORY_WATCHER M100_FREE_MEMORY_DUMPER M100_FREE_MEMORY_CORRUPTOR INCH_MODE_SUPPORT TEMPERATURE_UNITS_SUPPORT
158 129
   - build_marlin
159 130
   #
160
-  # Test EEPROM_SETTINGS, EEPROM_CHITCHAT, M100_FREE_MEMORY_WATCHER,
161
-  #   INCH_MODE_SUPPORT, TEMPERATURE_UNITS_SUPPORT
131
+  # Test 5 extruders on AZTEEG_X3_PRO (can use any board with >=5 extruders defined)
132
+  # Include a test for LIN_ADVANCE here also
162 133
   #
163
-  - restore_configs
164
-  - opt_enable EEPROM_SETTINGS EEPROM_CHITCHAT M100_FREE_MEMORY_WATCHER M100_FREE_MEMORY_DUMPER M100_FREE_MEMORY_CORRUPTOR INCH_MODE_SUPPORT TEMPERATURE_UNITS_SUPPORT
134
+  - opt_set MOTHERBOARD BOARD_AZTEEG_X3_PRO
135
+  - opt_set EXTRUDERS 5
136
+  - opt_set TEMP_SENSOR_1 1
137
+  - opt_set TEMP_SENSOR_2 5
138
+  - opt_set TEMP_SENSOR_3 20
139
+  - opt_set TEMP_SENSOR_4 999
140
+  - opt_set TEMP_SENSOR_BED 1
141
+  - opt_enable_adv LIN_ADVANCE
165 142
   - build_marlin
166 143
   #
167 144
   # Mixing Extruder with 5 steppers
@@ -202,34 +179,19 @@ script:
202 179
   - build_marlin
203 180
   #
204 181
   # Test MINIRAMBO for PWM_MOTOR_CURRENT
182
+  #      ULTIMAKERCONTROLLER, FILAMENT_LCD_DISPLAY, FILAMENT_WIDTH_SENSOR,
183
+  #      PRINTCOUNTER, NOZZLE_PARK_FEATURE, NOZZLE_CLEAN_FEATURE, PCA9632,
184
+  #      Z_DUAL_STEPPER_DRIVERS, Z_DUAL_ENDSTOPS, BEZIER_CURVE_SUPPORT, EXPERIMENTAL_I2CBUS,
185
+  #      FILAMENT_CHANGE_FEATURE, PARK_HEAD_ON_PAUSE, LCD_INFO_MENU,
205 186
   #
206 187
   - restore_configs
207
-  - opt_set MOTHERBOARD BOARD_MINIRAMBO
208
-  - build_marlin
209
-  #
210
-  # Test FILAMENT_CHANGE_FEATURE, PARK_HEAD_ON_PAUSE, and LCD_INFO_MENU
211
-  #
212
-  - restore_configs
213
-  - opt_enable ULTIMAKERCONTROLLER
214
-  - opt_enable_adv FILAMENT_CHANGE_FEATURE PARK_HEAD_ON_PAUSE LCD_INFO_MENU
215
-  - build_marlin
216
-  #
217
-  # Enable filament sensor
218
-  #
219
-  - restore_configs
220
-  - opt_enable FILAMENT_WIDTH_SENSOR
221
-  - build_marlin
222
-  #
223
-  # Enable filament sensor with LCD display
224
-  #
225
-  - opt_enable ULTIMAKERCONTROLLER FILAMENT_LCD_DISPLAY
226
-  - build_marlin
227
-  #
228
-  # Enable BEZIER_CURVE_SUPPORT, EXPERIMENTAL_I2CBUS, and I2C_SLAVE_ADDRESS
229
-  #
230
-  - restore_configs
231
-  - opt_enable_adv BEZIER_CURVE_SUPPORT EXPERIMENTAL_I2CBUS
188
+  - opt_enable ULTIMAKERCONTROLLER FILAMENT_LCD_DISPLAY FILAMENT_WIDTH_SENSOR SDSUPPORT
189
+  - opt_enable PRINTCOUNTER NOZZLE_PARK_FEATURE NOZZLE_CLEAN_FEATURE PCA9632
190
+  - opt_enable_adv Z_DUAL_STEPPER_DRIVERS Z_DUAL_ENDSTOPS BEZIER_CURVE_SUPPORT EXPERIMENTAL_I2CBUS
232 191
   - opt_set_adv I2C_SLAVE_ADDRESS 63
192
+  - opt_enable_adv FILAMENT_CHANGE_FEATURE PARK_HEAD_ON_PAUSE LCD_INFO_MENU
193
+  - pins_set RAMPS X_MAX_PIN -1
194
+  - opt_set_adv Z2_MAX_PIN 2
233 195
   - build_marlin
234 196
   #
235 197
   # Enable COREXY
@@ -240,38 +202,12 @@ script:
240 202
   #
241 203
   # Enable COREYX (swapped)
242 204
   #
243
-  - restore_configs
244
-  - opt_enable COREYX
245
-  - build_marlin
246
-  #
247
-  # Enable Z_DUAL_STEPPER_DRIVERS, Z_DUAL_ENDSTOPS
248
-  #
249
-  - restore_configs
250
-  - opt_enable_adv Z_DUAL_STEPPER_DRIVERS Z_DUAL_ENDSTOPS
251
-  - pins_set RAMPS X_MAX_PIN -1
252
-  - opt_set_adv Z2_MAX_PIN 2
253
-  - build_marlin
254
-  #
255
-  # Test PRINTCOUNTER
256
-  #
257
-  - restore_configs
258
-  - opt_enable PRINTCOUNTER
259
-  - build_marlin
260
-  #
261
-  # Test NOZZLE_PARK_FEATURE
262
-  #
263
-  - restore_configs
264
-  - opt_enable NOZZLE_PARK_FEATURE
265
-  - build_marlin
266
-  #
267
-  # Test NOZZLE_CLEAN_FEATURE
268
-  #
269
-  - restore_configs
270
-  - opt_enable NOZZLE_CLEAN_FEATURE
271
-  - build_marlin
205
+  #- restore_configs
206
+  #- opt_enable COREYX
207
+  #- build_marlin
272 208
   #
273 209
   #
274
-  ######## STANDARD LCD/PANELS ##############
210
+  ######## Other Standard LCD/Panels ##############
275 211
   #
276 212
   # ULTRA_LCD
277 213
   #
@@ -285,12 +221,6 @@ script:
285 221
   - opt_enable DOGLCD
286 222
   - build_marlin
287 223
   #
288
-  # ULTIMAKERCONTROLLER
289
-  #
290
-  - restore_configs
291
-  - opt_enable ULTIMAKERCONTROLLER
292
-  - build_marlin
293
-  #
294 224
   # MAKRPANEL
295 225
   # Needs to use Melzi and Sanguino hardware
296 226
   #
@@ -298,31 +228,29 @@ script:
298 228
   #- opt_enable MAKRPANEL
299 229
   #- build_marlin
300 230
   #
301
-  # REPRAP_DISCOUNT_SMART_CONTROLLER, SDSUPPORT, and BABYSTEPPING
231
+  # REPRAP_DISCOUNT_SMART_CONTROLLER, SDSUPPORT, BABYSTEPPING, RIGIDBOARD_V2, and DAC_MOTOR_CURRENT_DEFAULT
302 232
   #
303 233
   - restore_configs
304
-  - opt_enable REPRAP_DISCOUNT_SMART_CONTROLLER SDSUPPORT BABYSTEPPING
234
+  - opt_set MOTHERBOARD BOARD_RIGIDBOARD_V2
235
+  - opt_enable REPRAP_DISCOUNT_SMART_CONTROLLER SDSUPPORT BABYSTEPPING DAC_MOTOR_CURRENT_DEFAULT
305 236
   - build_marlin
306 237
   #
307
-  # G3D_PANEL
238
+  # G3D_PANEL with SDCARD_SORT_ALPHA and STATUS_MESSAGE_SCROLLING
308 239
   #
309 240
   - restore_configs
310 241
   - opt_enable G3D_PANEL SDSUPPORT
311
-  - build_marlin
312
-  #
313
-  # Add SDCARD_SORT_ALPHA, test G3D_PANEL again
314
-  #
315
-  - opt_enable_adv SDCARD_SORT_ALPHA
242
+  - opt_enable_adv SDCARD_SORT_ALPHA STATUS_MESSAGE_SCROLLING
316 243
   - opt_set_adv SDSORT_GCODE true
317 244
   - opt_set_adv SDSORT_USES_RAM true
318 245
   - opt_set_adv SDSORT_USES_STACK true
319 246
   - opt_set_adv SDSORT_CACHE_NAMES true
320 247
   - build_marlin
321 248
   #
322
-  # REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
249
+  # REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER with SDCARD_SORT_ALPHA and STATUS_MESSAGE_SCROLLING
323 250
   #
324 251
   - restore_configs
325 252
   - opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER SDSUPPORT
253
+  - opt_enable_adv SDCARD_SORT_ALPHA STATUS_MESSAGE_SCROLLING
326 254
   - build_marlin
327 255
   #
328 256
   # REPRAPWORLD_KEYPAD
@@ -372,12 +300,11 @@ script:
372 300
   ######## Example Configurations ##############
373 301
   #
374 302
   # BQ Hephestos 2
375
-  - restore_configs
376
-  - use_example_configs Hephestos_2
377
-  - build_marlin
303
+  #- restore_configs
304
+  #- use_example_configs Hephestos_2
305
+  #- build_marlin
378 306
   #
379 307
   # Delta Config (generic) + ABL bilinear + PROBE_MANUALLY
380
-  - restore_configs
381 308
   - use_example_configs delta/generic
382 309
   - opt_enable REPRAP_DISCOUNT_SMART_CONTROLLER DELTA_CALIBRATION_MENU AUTO_BED_LEVELING_BILINEAR PROBE_MANUALLY
383 310
   - build_marlin
@@ -399,17 +326,11 @@ script:
399 326
   #- use_example_configs makibox
400 327
   #- build_marlin
401 328
   #
402
-  # SCARA Config
329
+  # SCARA with TMC2130
403 330
   #
404 331
   - use_example_configs SCARA
405 332
   - opt_enable AUTO_BED_LEVELING_BILINEAR FIX_MOUNTED_PROBE USE_ZMIN_PLUG EEPROM_SETTINGS EEPROM_CHITCHAT ULTIMAKERCONTROLLER
406
-  - build_marlin
407
-  #
408
-  # TMC2130 Config
409
-  #
410
-  - restore_configs
411 333
   - opt_enable_adv HAVE_TMC2130 X_IS_TMC2130 Y_IS_TMC2130 Z_IS_TMC2130
412
-  - build_marlin
413 334
   - opt_enable_adv AUTOMATIC_CURRENT_CONTROL STEALTHCHOP HYBRID_THRESHOLD SENSORLESS_HOMING
414 335
   - build_marlin
415 336
   #

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

@@ -31,22 +31,43 @@
31 31
   #define LCD_HAS_DIRECTIONAL_BUTTONS (BUTTON_EXISTS(UP) || BUTTON_EXISTS(DWN) || BUTTON_EXISTS(LFT) || BUTTON_EXISTS(RT))
32 32
 
33 33
   #if ENABLED(CARTESIO_UI)
34
+
34 35
     #define DOGLCD
35 36
     #define ULTIPANEL
36 37
     #define NEWPANEL
37 38
     #define DEFAULT_LCD_CONTRAST 90
38 39
     #define LCD_CONTRAST_MIN 60
39 40
     #define LCD_CONTRAST_MAX 140
40
-  #endif
41 41
 
42
-  #if ENABLED(MAKRPANEL) || ENABLED(MINIPANEL)
42
+  #elif ENABLED(MAKRPANEL) || ENABLED(MINIPANEL)
43
+
43 44
     #define DOGLCD
44 45
     #define ULTIPANEL
45 46
     #define NEWPANEL
46 47
     #define DEFAULT_LCD_CONTRAST 17
47
-  #endif
48 48
 
49
-  #if ENABLED(miniVIKI) || ENABLED(VIKI2) || ENABLED(ELB_FULL_GRAPHIC_CONTROLLER)
49
+  #elif ENABLED(ANET_KEYPAD_LCD)
50
+
51
+    #define REPRAPWORLD_KEYPAD
52
+    #define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
53
+    #define ADC_KEYPAD
54
+    #define ADC_KEY_NUM 8
55
+    #define ULTIPANEL
56
+    // this helps to implement ADC_KEYPAD menus
57
+    #define ENCODER_STEPS_PER_MENU_ITEM 1
58
+    #define REVERSE_MENU_DIRECTION
59
+
60
+  #elif ENABLED(ANET_FULL_GRAPHICS_LCD)
61
+
62
+    #define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
63
+
64
+  #elif ENABLED(BQ_LCD_SMART_CONTROLLER)
65
+
66
+    #define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
67
+    #define LONG_FILENAME_HOST_SUPPORT
68
+
69
+  #elif ENABLED(miniVIKI) || ENABLED(VIKI2) || ENABLED(ELB_FULL_GRAPHIC_CONTROLLER)
70
+
50 71
     #define ULTRA_LCD  //general LCD support, also 16x2
51 72
     #define DOGLCD  // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)
52 73
     #define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
@@ -65,14 +86,28 @@
65 86
       #define SD_DETECT_INVERTED
66 87
     #endif
67 88
 
68
-  #endif
89
+  #elif ENABLED(OLED_PANEL_TINYBOY2)
69 90
 
70
-  #if ENABLED(OLED_PANEL_TINYBOY2)
71 91
     #define U8GLIB_SSD1306
72 92
     #define ULTIPANEL
73 93
     #define NEWPANEL
74 94
     #define REVERSE_ENCODER_DIRECTION
75 95
     #define REVERSE_MENU_DIRECTION
96
+
97
+  #elif ENABLED(RA_CONTROL_PANEL)
98
+
99
+    #define LCD_I2C_TYPE_PCA8574
100
+    #define LCD_I2C_ADDRESS 0x27   // I2C Address of the port expander
101
+    #define ULTIPANEL
102
+    #define NEWPANEL
103
+
104
+  #elif ENABLED(REPRAPWORLD_GRAPHICAL_LCD)
105
+
106
+    #define DOGLCD
107
+    #define U8GLIB_ST7920
108
+    #define ULTIPANEL
109
+    #define NEWPANEL
110
+
76 111
   #endif
77 112
 
78 113
   // Generic support for SSD1306 / SH1106 OLED based LCDs.
@@ -85,14 +120,7 @@
85 120
     #define ULTIMAKERCONTROLLER
86 121
   #endif
87 122
 
88
-  #if ENABLED(BQ_LCD_SMART_CONTROLLER)
89
-    #define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
90
-    #ifndef LONG_FILENAME_HOST_SUPPORT
91
-      #define LONG_FILENAME_HOST_SUPPORT
92
-    #endif
93
-  #endif
94
-
95
-  #if ENABLED(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
123
+  #if ENABLED(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) || ENABLED(LCD_FOR_MELZI)
96 124
     #define DOGLCD
97 125
     #define U8GLIB_ST7920
98 126
     #define REPRAP_DISCOUNT_SMART_CONTROLLER
@@ -108,20 +136,9 @@
108 136
 
109 137
   #if ENABLED(REPRAPWORLD_KEYPAD)
110 138
     #define NEWPANEL
111
-  #endif
112
-
113
-  #if ENABLED(RA_CONTROL_PANEL)
114
-    #define LCD_I2C_TYPE_PCA8574
115
-    #define LCD_I2C_ADDRESS 0x27   // I2C Address of the port expander
116
-    #define ULTIPANEL
117
-    #define NEWPANEL
118
-  #endif
119
-
120
-  #if ENABLED(REPRAPWORLD_GRAPHICAL_LCD)
121
-    #define DOGLCD
122
-    #define U8GLIB_ST7920
123
-    #define ULTIPANEL
124
-    #define NEWPANEL
139
+    #if ENABLED(ULTIPANEL) && !defined(REPRAPWORLD_KEYPAD_MOVE_STEP)
140
+      #define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
141
+    #endif
125 142
   #endif
126 143
 
127 144
   /**
@@ -129,29 +146,35 @@
129 146
    */
130 147
 
131 148
   #if ENABLED(LCD_I2C_SAINSMART_YWROBOT)
132
-    // This uses the LiquidCrystal_I2C library ( https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home )
133
-    // Make sure it is placed in the Arduino libraries directory.
149
+
150
+    // Note: This controller requires F.Malpartida's LiquidCrystal_I2C library
151
+    // https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
152
+
134 153
     #define LCD_I2C_TYPE_PCF8575
135 154
     #define LCD_I2C_ADDRESS 0x27   // I2C Address of the port expander
136 155
     #define ULTIPANEL
137 156
     #define NEWPANEL
138
-  #endif
139 157
 
140
-  // PANELOLU2 LCD with status LEDs, separate encoder and click inputs
141
-  #if ENABLED(LCD_I2C_PANELOLU2)
158
+  #elif ENABLED(LCD_I2C_PANELOLU2)
159
+
160
+    // PANELOLU2 LCD with status LEDs, separate encoder and click inputs
161
+
142 162
     #define LCD_I2C_TYPE_MCP23017
143 163
     #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
144 164
     #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD
145 165
     #define ULTIPANEL
146 166
     #define NEWPANEL
147
-  #endif
148 167
 
149
-  // Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs
150
-  #if ENABLED(LCD_I2C_VIKI)
151
-    // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 )
152
-    // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory.
153
-    // Note: The pause/stop/resume LCD button pin should be connected to the Arduino
154
-    //       BTN_ENC pin (or set BTN_ENC to -1 if not used)
168
+  #elif ENABLED(LCD_I2C_VIKI)
169
+
170
+    /**
171
+     * Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs
172
+     *
173
+     * This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 )
174
+     * Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory.
175
+     * Note: The pause/stop/resume LCD button pin should be connected to the Arduino
176
+     *       BTN_ENC pin (or set BTN_ENC to -1 if not used)
177
+     */
155 178
     #define LCD_I2C_TYPE_MCP23017
156 179
     #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
157 180
     #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD (requires LiquidTWI2 v1.2.3 or later)
@@ -241,15 +264,21 @@
241 264
     #define LCD_STR_FILAM_MUL   "\xa4"
242 265
   #else
243 266
     /* Custom characters defined in the first 8 characters of the LCD */
244
-    #define LCD_STR_BEDTEMP     "\x00"  // Print only as a char. This will have 'unexpected' results when used in a string!
245
-    #define LCD_STR_DEGREE      "\x01"
246
-    #define LCD_STR_THERMOMETER "\x02"
247
-    #define LCD_STR_UPLEVEL     "\x03"
267
+    #define LCD_BEDTEMP_CHAR     0x00  // Print only as a char. This will have 'unexpected' results when used in a string!
268
+    #define LCD_DEGREE_CHAR      0x01
269
+    #define LCD_STR_THERMOMETER "\x02" // Still used with string concatenation
270
+    #define LCD_UPLEVEL_CHAR     0x03
248 271
     #define LCD_STR_REFRESH     "\x04"
249 272
     #define LCD_STR_FOLDER      "\x05"
250
-    #define LCD_STR_FEEDRATE    "\x06"
251
-    #define LCD_STR_CLOCK       "\x07"
273
+    #define LCD_FEEDRATE_CHAR    0x06
274
+    #define LCD_CLOCK_CHAR       0x07
252 275
     #define LCD_STR_ARROW_RIGHT ">"  /* from the default character set */
276
+
277
+    #if ENABLED(AUTO_BED_LEVELING_UBL)
278
+      #define LCD_UBL_BOXTOP_CHAR 0x01
279
+      #define LCD_UBL_BOXBOT_CHAR 0x02
280
+    #endif
281
+
253 282
   #endif
254 283
 
255 284
   /**
@@ -284,6 +313,11 @@
284 313
 
285 314
   #define HAS_DEBUG_MENU ENABLED(LCD_PROGRESS_BAR_TEST)
286 315
 
316
+  // MK2 Multiplexer forces SINGLENOZZLE to be enabled
317
+  #if ENABLED(MK2_MULTIPLEXER)
318
+    #define SINGLENOZZLE
319
+  #endif
320
+
287 321
   /**
288 322
    * Extruders have some combination of stepper motors and hotends
289 323
    * so we separate these concepts into the defines:
@@ -291,6 +325,7 @@
291 325
    *  EXTRUDERS    - Number of Selectable Tools
292 326
    *  HOTENDS      - Number of hotends, whether connected or separate
293 327
    *  E_STEPPERS   - Number of actual E stepper motors
328
+   *  E_MANUAL     - Number of E steppers for LCD move options
294 329
    *  TOOL_E_INDEX - Index to use when getting/setting the tool state
295 330
    *
296 331
    */
@@ -398,6 +433,6 @@
398 433
 
399 434
   #define HAS_SOFTWARE_ENDSTOPS (ENABLED(MIN_SOFTWARE_ENDSTOPS) || ENABLED(MAX_SOFTWARE_ENDSTOPS))
400 435
   #define HAS_RESUME_CONTINUE (ENABLED(NEWPANEL) || ENABLED(EMERGENCY_PARSER))
401
-  #define HAS_COLOR_LEDS (ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED))
436
+  #define HAS_COLOR_LEDS (ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED) || ENABLED(PCA9632))
402 437
 
403 438
 #endif // CONDITIONALS_LCD_H

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

@@ -653,6 +653,7 @@
653 653
     #undef PROBING_FANS_OFF
654 654
   #endif
655 655
   #define QUIET_PROBING (HAS_BED_PROBE && (ENABLED(PROBING_HEATERS_OFF) || ENABLED(PROBING_FANS_OFF)))
656
+  #define HEATER_IDLE_HANDLER (ENABLED(ADVANCED_PAUSE_FEATURE) || ENABLED(PROBING_HEATERS_OFF))
656 657
 
657 658
   /**
658 659
    * Servos and probes

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

@@ -58,15 +58,15 @@
58 58
 //===========================================================================
59 59
 //============================= DELTA Printer ===============================
60 60
 //===========================================================================
61
-// For a Delta printer replace the configuration files with the files in the
62
-// example_configurations/delta directory.
61
+// For a Delta printer start with one of the configuration files in the
62
+// example_configurations/delta directory and customize for your machine.
63 63
 //
64 64
 
65 65
 //===========================================================================
66 66
 //============================= SCARA Printer ===============================
67 67
 //===========================================================================
68
-// For a Scara printer replace the configuration files with the files in the
69
-// example_configurations/SCARA directory.
68
+// For a SCARA printer start with the configuration files in
69
+// example_configurations/SCARA and customize for your machine.
70 70
 //
71 71
 
72 72
 // @section info
@@ -138,11 +138,33 @@
138 138
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
139 139
 //#define SINGLENOZZLE
140 140
 
141
+/**
142
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
143
+ *
144
+ * This device allows one stepper driver on a control board to drive
145
+ * two to eight stepper motors, one at a time, in a manner suitable
146
+ * for extruders.
147
+ *
148
+ * This option only allows the multiplexer to switch on tool-change.
149
+ * Additional options to configure custom E moves are pending.
150
+ */
151
+//#define MK2_MULTIPLEXER
152
+#if ENABLED(MK2_MULTIPLEXER)
153
+  // Override the default DIO selector pins here, if needed.
154
+  // Some pins files may provide defaults for these pins.
155
+  //#define E_MUX0_PIN 40  // Always Required
156
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
157
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
158
+#endif
159
+
141 160
 // A dual extruder that uses a single stepper motor
142 161
 //#define SWITCHING_EXTRUDER
143 162
 #if ENABLED(SWITCHING_EXTRUDER)
144 163
   #define SWITCHING_EXTRUDER_SERVO_NR 0
145
-  #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1
164
+  #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1[, E2, E3]
165
+  #if EXTRUDERS > 3
166
+    #define SWITCHING_EXTRUDER_E23_SERVO_NR 1
167
+  #endif
146 168
 #endif
147 169
 
148 170
 // A dual-nozzle that uses a servomotor to raise/lower one of the nozzles
@@ -566,7 +588,6 @@
566 588
  *
567 589
  */
568 590
 //#define Z_MIN_PROBE_ENDSTOP
569
-//#define Z_MIN_PROBE_PIN Z_MAX_PIN
570 591
 
571 592
 /**
572 593
  * Probe Type
@@ -881,12 +902,14 @@
881 902
   #define UBL_MESH_INSET 1          // Mesh inset margin on print area
882 903
   #define GRID_MAX_POINTS_X 10      // Don't use more than 15 points per axis, implementation limited.
883 904
   #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
884
-  #define UBL_PROBE_PT_1_X 39       // These set the probe locations for when UBL does a 3-Point leveling
885
-  #define UBL_PROBE_PT_1_Y 180      // of the mesh.
905
+
906
+  #define UBL_PROBE_PT_1_X 39       // Probing points for 3-Point leveling of the mesh
907
+  #define UBL_PROBE_PT_1_Y 180
886 908
   #define UBL_PROBE_PT_2_X 39
887 909
   #define UBL_PROBE_PT_2_Y 20
888 910
   #define UBL_PROBE_PT_3_X 180
889 911
   #define UBL_PROBE_PT_3_Y 20
912
+
890 913
   #define UBL_G26_MESH_VALIDATION   // Enable G26 mesh validation
891 914
   #define UBL_MESH_EDIT_MOVES_Z     // Sophisticated users prefer no movement of nozzle
892 915
 
@@ -941,6 +964,7 @@
941 964
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
942 965
 // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
943 966
 // - Prevent Z homing when the Z probe is outside bed area.
967
+//
944 968
 //#define Z_SAFE_HOMING
945 969
 
946 970
 #if ENABLED(Z_SAFE_HOMING)
@@ -965,13 +989,10 @@
965 989
 // M500 - stores parameters in EEPROM
966 990
 // M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).
967 991
 // M502 - reverts to the default "factory settings".  You still need to store them in EEPROM afterwards if you want to.
968
-//define this to enable EEPROM support
969
-//#define EEPROM_SETTINGS
970
-
971
-#if ENABLED(EEPROM_SETTINGS)
972
-  // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out:
973
-  #define EEPROM_CHITCHAT // Please keep turned on if you can.
974
-#endif
992
+//
993
+//#define EEPROM_SETTINGS // Enable for M500 and M501 commands
994
+//#define DISABLE_M503    // Saves ~2700 bytes of PROGMEM. Disable for release!
995
+#define EEPROM_CHITCHAT   // Give feedback on EEPROM commands. Disable to save PROGMEM.
975 996
 
976 997
 //
977 998
 // Host Keepalive
@@ -1130,10 +1151,11 @@
1130 1151
  *
1131 1152
  * Select the language to display on the LCD. These languages are available:
1132 1153
  *
1133
- *    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
1134
- *    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk, test
1154
+ *    en, an, bg, ca, cn, cz, cz_utf8, de, el, el-gr, es, eu, fi, fr, gl, hr,
1155
+ *    it, kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk,
1156
+ *    zh_CN, zh_TW, test
1135 1157
  *
1136
- * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'test':'TEST' }
1158
+ * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'cz_utf8':'Czech (UTF8)', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'zh_CN':'Chinese (Simplified)', 'zh_TW':'Chinese (Taiwan)', test':'TEST' }
1137 1159
  */
1138 1160
 #define LCD_LANGUAGE en
1139 1161
 
@@ -1370,6 +1392,21 @@
1370 1392
 //#define BQ_LCD_SMART_CONTROLLER
1371 1393
 
1372 1394
 //
1395
+// ANET_10 Controller supported displays.
1396
+//
1397
+//#define ANET_KEYPAD_LCD         // Requires ADC_KEYPAD_PIN to be assigned to an analog pin.
1398
+                                  // This LCD is known to be susceptible to electrical interference
1399
+                                  // which scrambles the display.  Pressing any button clears it up.
1400
+//#define ANET_FULL_GRAPHICS_LCD  // Anet 128x64 full graphics lcd with rotary encoder as used on Anet A6
1401
+                                  // A clone of the RepRapDiscount full graphics display but with
1402
+                                  // different pins/wiring (see pins_ANET_10.h).
1403
+
1404
+//
1405
+// LCD for Melzi Card with Graphical LCD
1406
+//
1407
+//#define LCD_FOR_MELZI
1408
+
1409
+//
1373 1410
 // CONTROLLER TYPE: I2C
1374 1411
 //
1375 1412
 // Note: These controllers require the installation of Arduino's LiquidCrystal_I2C
@@ -1385,6 +1422,9 @@
1385 1422
 //
1386 1423
 // Sainsmart YW Robot (LCM1602) LCD Display
1387 1424
 //
1425
+// Note: This controller requires F.Malpartida's LiquidCrystal_I2C library
1426
+// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
1427
+//
1388 1428
 //#define LCD_I2C_SAINSMART_YWROBOT
1389 1429
 
1390 1430
 //
@@ -1475,12 +1515,15 @@
1475 1515
 // SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure
1476 1516
 //#define SF_ARC_FIX
1477 1517
 
1478
-// Support for the BariCUDA Paste Extruder.
1518
+// Support for the BariCUDA Paste Extruder
1479 1519
 //#define BARICUDA
1480 1520
 
1481
-//define BlinkM/CyzRgb Support
1521
+// Support for BlinkM/CyzRgb
1482 1522
 //#define BLINKM
1483 1523
 
1524
+// Support for PCA9632 PWM LED driver
1525
+//#define PCA9632
1526
+
1484 1527
 /**
1485 1528
  * RGB LED / LED Strip Control
1486 1529
  *
@@ -1518,7 +1561,7 @@
1518 1561
  *  - Change to green once print has finished
1519 1562
  *  - Turn off after the print has finished and the user has pushed a button
1520 1563
  */
1521
-#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED)
1564
+#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED) || ENABLED(PCA9632)
1522 1565
   #define PRINTER_EVENT_LEDS
1523 1566
 #endif
1524 1567
 

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

@@ -123,8 +123,8 @@
123 123
   #define AUTOTEMP_OLDWEIGHT 0.98
124 124
 #endif
125 125
 
126
-//Show Temperature ADC value
127
-//The M105 command return, besides traditional information, the ADC value read from temperature sensors.
126
+// Show Temperature ADC value
127
+// Enable for M105 to include ADC values read from temperature sensors.
128 128
 //#define SHOW_TEMP_ADC_VALUES
129 129
 
130 130
 /**
@@ -225,13 +225,11 @@
225 225
  */
226 226
 //#define CASE_LIGHT_ENABLE
227 227
 #if ENABLED(CASE_LIGHT_ENABLE)
228
-  #define CASE_LIGHT_PIN 4          // can be defined here or in the pins_XXX.h file for your board
229
-                                    //  pins_XXX.h file overrides this one
230
-  #define INVERT_CASE_LIGHT false             // set to true if case light is ON when pin is at 0
231
-  #define CASE_LIGHT_DEFAULT_ON true          // set default power up state to on or off
232
-  #define CASE_LIGHT_DEFAULT_BRIGHTNESS 105   // set power up brightness 0-255 ( only used if on PWM
233
-                                              // and if CASE_LIGHT_DEFAULT is set to on
234
-  //#define MENU_ITEM_CASE_LIGHT              // Uncomment to have a Case Light entry in main menu
228
+  //#define CASE_LIGHT_PIN 4                  // Override the default pin if needed
229
+  #define INVERT_CASE_LIGHT false             // Set true if Case Light is ON when pin is LOW
230
+  #define CASE_LIGHT_DEFAULT_ON true          // Set default power-up state on
231
+  #define CASE_LIGHT_DEFAULT_BRIGHTNESS 105   // Set default power-up brightness (0-255, requires PWM pin)
232
+  //#define MENU_ITEM_CASE_LIGHT              // Add a Case Light option to the LCD main menu
235 233
 #endif
236 234
 
237 235
 //===========================================================================
@@ -421,16 +419,16 @@
421 419
  *    M908 - BQ_ZUM_MEGA_3D, RAMBO, PRINTRBOARD_REVF, RIGIDBOARD_V2 & SCOOVO_X9H
422 420
  *    M909, M910 & LCD - only PRINTRBOARD_REVF & RIGIDBOARD_V2
423 421
  */
424
-//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps
425
-//#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
426
-//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 } // Default drive percent - X, Y, Z, E axis
422
+//#define PWM_MOTOR_CURRENT { 1300, 1300, 1250 }          // Values in milliamps
423
+//#define DIGIPOT_MOTOR_CURRENT { 135,135,135,135,135 }   // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
424
+//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 }    // Default drive percent - X, Y, Z, E axis
427 425
 
428 426
 // Uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro
429 427
 //#define DIGIPOT_I2C
430
-//#define DIGIPOT_MCP4018
428
+//#define DIGIPOT_MCP4018          // Requires library from https://github.com/stawel/SlowSoftI2CMaster
431 429
 #define DIGIPOT_I2C_NUM_CHANNELS 8 // 5DPRINT: 4     AZTEEG_X3_PRO: 8
432 430
 // Actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS
433
-#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0}  //  AZTEEG_X3_PRO
431
+#define DIGIPOT_I2C_MOTOR_CURRENTS { 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 }  //  AZTEEG_X3_PRO
434 432
 
435 433
 //===========================================================================
436 434
 //=============================Additional Features===========================
@@ -650,7 +648,7 @@
650 648
    *
651 649
    * Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
652 650
    *
653
-   * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
651
+   * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
654 652
    * Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
655 653
    */
656 654
   #define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
@@ -680,10 +678,16 @@
680 678
 
681 679
 // @section extras
682 680
 
683
-// Arc interpretation settings:
684
-#define ARC_SUPPORT  // Disabling this saves ~2738 bytes
685
-#define MM_PER_ARC_SEGMENT 1
686
-#define N_ARC_CORRECTION 25
681
+//
682
+// G2/G3 Arc Support
683
+//
684
+#define ARC_SUPPORT               // Disable this feature to save ~3226 bytes
685
+#if ENABLED(ARC_SUPPORT)
686
+  #define MM_PER_ARC_SEGMENT  1   // Length of each arc segment
687
+  #define N_ARC_CORRECTION   25   // Number of intertpolated segments between corrections
688
+  //#define ARC_P_CIRCLES         // Enable the 'P' parameter to specify complete circles
689
+  //#define CNC_WORKSPACE_PLANES  // Allow G2/G3 to operate in XY, ZX, or YZ planes
690
+#endif
687 691
 
688 692
 // Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
689 693
 //#define BEZIER_CURVE_SUPPORT
@@ -809,6 +813,7 @@
809 813
   #define PAUSE_PARK_NO_STEPPER_TIMEOUT       // Enable to have stepper motors hold position during filament change
810 814
                                               // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
811 815
   //#define PARK_HEAD_ON_PAUSE                // Go to filament change position on pause, return to print position on resume
816
+  //#define HOME_BEFORE_FILAMENT_CHANGE       // Ensure homing has been completed prior to parking for filament change
812 817
 #endif
813 818
 
814 819
 // @section tmc
@@ -1201,12 +1206,12 @@
1201 1206
 /**
1202 1207
  * Auto-report temperatures with M155 S<seconds>
1203 1208
  */
1204
-//#define AUTO_REPORT_TEMPERATURES
1209
+#define AUTO_REPORT_TEMPERATURES
1205 1210
 
1206 1211
 /**
1207 1212
  * Include capabilities in M115 output
1208 1213
  */
1209
-//#define EXTENDED_CAPABILITIES_REPORT
1214
+#define EXTENDED_CAPABILITIES_REPORT
1210 1215
 
1211 1216
 /**
1212 1217
  * Volumetric extrusion default state
@@ -1263,4 +1268,95 @@
1263 1268
   #define USER_GCODE_5 "G28\nM503"
1264 1269
 #endif
1265 1270
 
1271
+/**
1272
+ * Specify an action command to send to the host when the printer is killed.
1273
+ * Will be sent in the form '//action:ACTION_ON_KILL', e.g. '//action:poweroff'.
1274
+ * The host must be configured to handle the action command.
1275
+ */
1276
+//#define ACTION_ON_KILL "poweroff"
1277
+
1278
+//===========================================================================
1279
+//====================== I2C Position Encoder Settings ======================
1280
+//===========================================================================
1281
+
1282
+/**
1283
+ *  I2C position encoders for closed loop control.
1284
+ *  Developed by Chris Barr at Aus3D.
1285
+ *
1286
+ *  Wiki: http://wiki.aus3d.com.au/Magnetic_Encoder
1287
+ *  Github: https://github.com/Aus3D/MagneticEncoder
1288
+ *
1289
+ *  Supplier: http://aus3d.com.au/magnetic-encoder-module
1290
+ *  Alternative Supplier: http://reliabuild3d.com/
1291
+ *
1292
+ *  Reilabuild encoders have been modified to improve reliability.
1293
+ */
1294
+
1295
+//#define I2C_POSITION_ENCODERS
1296
+#if ENABLED(I2C_POSITION_ENCODERS)
1297
+
1298
+  #define I2CPE_ENCODER_CNT         1                       // The number of encoders installed; max of 5
1299
+                                                            // encoders supported currently.
1300
+
1301
+  #define I2CPE_ENC_1_ADDR          I2CPE_PRESET_ADDR_X     // I2C address of the encoder. 30-200.
1302
+  #define I2CPE_ENC_1_AXIS          X_AXIS                  // Axis the encoder module is installed on.  <X|Y|Z|E>_AXIS.
1303
+  #define I2CPE_ENC_1_TYPE          I2CPE_ENC_TYPE_LINEAR   // Type of encoder:  I2CPE_ENC_TYPE_LINEAR -or-
1304
+                                                            // I2CPE_ENC_TYPE_ROTARY.
1305
+  #define I2CPE_ENC_1_TICKS_UNIT    2048                    // 1024 for magnetic strips with 2mm poles; 2048 for
1306
+                                                            // 1mm poles. For linear encoders this is ticks / mm,
1307
+                                                            // for rotary encoders this is ticks / revolution.
1308
+  //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1309
+                                                            // steps per full revolution (motor steps/rev * microstepping)
1310
+  //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1311
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1312
+  #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1313
+                                                            // printer will attempt to correct the error; errors
1314
+                                                            // smaller than this are ignored to minimize effects of
1315
+                                                            // measurement noise / latency (filter).
1316
+
1317
+  #define I2CPE_ENC_2_ADDR          I2CPE_PRESET_ADDR_Y     // Same as above, but for encoder 2.
1318
+  #define I2CPE_ENC_2_AXIS          Y_AXIS
1319
+  #define I2CPE_ENC_2_TYPE          I2CPE_ENC_TYPE_LINEAR
1320
+  #define I2CPE_ENC_2_TICKS_UNIT    2048
1321
+  //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1322
+  //#define I2CPE_ENC_2_INVERT
1323
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1324
+  #define I2CPE_ENC_2_EC_THRESH     0.10
1325
+
1326
+  #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
1327
+  #define I2CPE_ENC_3_AXIS          Z_AXIS                  // as above, or use defaults below.
1328
+
1329
+  #define I2CPE_ENC_4_ADDR          I2CPE_PRESET_ADDR_E     // Encoder 4.
1330
+  #define I2CPE_ENC_4_AXIS          E_AXIS
1331
+
1332
+  #define I2CPE_ENC_5_ADDR          34                      // Encoder 5.
1333
+  #define I2CPE_ENC_5_AXIS          E_AXIS
1334
+
1335
+  // Default settings for encoders which are enabled, but without settings configured above.
1336
+  #define I2CPE_DEF_TYPE            I2CPE_ENC_TYPE_LINEAR
1337
+  #define I2CPE_DEF_ENC_TICKS_UNIT  2048
1338
+  #define I2CPE_DEF_TICKS_REV       (16 * 200)
1339
+  #define I2CPE_DEF_EC_METHOD       I2CPE_ECM_NONE
1340
+  #define I2CPE_DEF_EC_THRESH       0.1
1341
+
1342
+  //#define I2CPE_ERR_THRESH_ABORT  100.0                   // Threshold size for error (in mm) error on any given
1343
+                                                            // axis after which the printer will abort. Comment out to
1344
+                                                            // disable abort behaviour.
1345
+
1346
+  #define I2CPE_TIME_TRUSTED        10000                   // After an encoder fault, there must be no further fault
1347
+                                                            // for this amount of time (in ms) before the encoder
1348
+                                                            // is trusted again.
1349
+
1350
+  /**
1351
+   * Position is checked every time a new command is executed from the buffer but during long moves,
1352
+   * this setting determines the minimum update time between checks. A value of 100 works well with
1353
+   * error rolling average when attempting to correct only for skips and not for vibration.
1354
+   */
1355
+  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1356
+
1357
+  // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1358
+  #define I2CPE_ERR_ROLLING_AVERAGE
1359
+
1360
+#endif // I2C_POSITION_ENCODERS
1361
+
1266 1362
 #endif // CONFIGURATION_ADV_H

+ 139
- 91
Marlin/G26_Mesh_Validation_Tool.cpp Просмотреть файл

@@ -99,7 +99,8 @@
99 99
    *                    will be purged before continuing.  If no amount is specified the command will start
100 100
    *                    purging filament until the user provides an LCD Click and then it will continue with
101 101
    *                    printing the Mesh.  You can carefully remove the spent filament with a needle nose
102
-   *                    pliers while holding the LCD Click wheel in a depressed state.
102
+   *                    pliers while holding the LCD Click wheel in a depressed state.  If you do not have
103
+   *                    an LCD, you must specify a value if you use P.
103 104
    *
104 105
    *   Q #  Multiplier  Retraction Multiplier.  Normally not needed.  Retraction defaults to 1.0mm and
105 106
    *                    un-retraction is at 1.2mm   These numbers will be scaled by the specified amount
@@ -108,6 +109,11 @@
108 109
    *                    If a parameter isn't given, every point will be printed unless G26 is interrupted.
109 110
    *                    This works the same way that the UBL G29 P4 R parameter works.
110 111
    *
112
+   *                    NOTE:  If you do not have an LCD, you -must- specify R.  This is to ensure that you are
113
+   *                    aware that there's some risk associated with printing without the ability to abort in
114
+   *                    cases where mesh point Z value may be inaccurate.  As above, if you do not include a
115
+   *                    parameter, every point will be printed.
116
+   *
111 117
    *   S #  Nozzle      Used to control the size of nozzle diameter.  If not specified, a .4mm nozzle is assumed.
112 118
    *
113 119
    *   U #  Random      Randomize the order that the circles are drawn on the bed.  The search for the closest
@@ -129,11 +135,18 @@
129 135
   #endif
130 136
   extern float destination[XYZE];
131 137
   void set_destination_to_current();
132
-  void set_current_to_destination();
133 138
   void prepare_move_to_destination();
134
-  void lcd_setstatusPGM(const char* const message, const int8_t level);
135
-  void sync_plan_position_e();
136
-  void chirp_at_user();
139
+  #if AVR_AT90USB1286_FAMILY  // Teensyduino & Printrboard IDE extensions have compile errors without this
140
+    inline void sync_plan_position_e() { planner.set_e_position_mm(current_position[E_AXIS]); }
141
+    inline void set_current_to_destination() { COPY(current_position, destination); }
142
+  #else
143
+    void sync_plan_position_e();
144
+    void set_current_to_destination();
145
+  #endif
146
+  #if ENABLED(NEWPANEL)
147
+    void lcd_setstatusPGM(const char* const message, const int8_t level);
148
+    void chirp_at_user();
149
+  #endif
137 150
 
138 151
   // Private functions
139 152
 
@@ -173,28 +186,30 @@
173 186
     feedrate_mm_s = save_feedrate;  // restore global feed rate
174 187
   }
175 188
 
176
-  /**
177
-   * Detect ubl_lcd_clicked, debounce it, and return true for cancel
178
-   */
179
-  bool user_canceled() {
180
-    if (!ubl_lcd_clicked()) return false;
181
-    safe_delay(10);                       // Wait for click to settle
189
+  #if ENABLED(NEWPANEL)
190
+    /**
191
+     * Detect ubl_lcd_clicked, debounce it, and return true for cancel
192
+     */
193
+    bool user_canceled() {
194
+      if (!ubl_lcd_clicked()) return false;
195
+      safe_delay(10);                       // Wait for click to settle
182 196
 
183
-    #if ENABLED(ULTRA_LCD)
184
-      lcd_setstatusPGM(PSTR("Mesh Validation Stopped."), 99);
185
-      lcd_quick_feedback();
186
-    #endif
197
+      #if ENABLED(ULTRA_LCD)
198
+        lcd_setstatusPGM(PSTR("Mesh Validation Stopped."), 99);
199
+        lcd_quick_feedback();
200
+      #endif
187 201
 
188
-    while (!ubl_lcd_clicked()) idle();    // Wait for button release
202
+      while (!ubl_lcd_clicked()) idle();    // Wait for button release
189 203
 
190
-    // If the button is suddenly pressed again,
191
-    // ask the user to resolve the issue
192
-    lcd_setstatusPGM(PSTR("Release button"), 99); // will never appear...
193
-    while (ubl_lcd_clicked()) idle();             // unless this loop happens
194
-    lcd_reset_status();
204
+      // If the button is suddenly pressed again,
205
+      // ask the user to resolve the issue
206
+      lcd_setstatusPGM(PSTR("Release button"), 99); // will never appear...
207
+      while (ubl_lcd_clicked()) idle();             // unless this loop happens
208
+      lcd_reset_status();
195 209
 
196
-    return true;
197
-  }
210
+      return true;
211
+    }
212
+  #endif
198 213
 
199 214
   /**
200 215
    * G26: Mesh Validation Pattern generation.
@@ -242,8 +257,8 @@
242 257
     // Move nozzle to the specified height for the first layer
243 258
     set_destination_to_current();
244 259
     destination[Z_AXIS] = g26_layer_height;
245
-    move_to(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], 0.0);
246
-    move_to(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], g26_ooze_amount);
260
+    move_to(destination, 0.0);
261
+    move_to(destination, g26_ooze_amount);
247 262
 
248 263
     has_control_of_lcd_panel = true;
249 264
     //debug_current_and_destination(PSTR("Starting G26 Mesh Validation Pattern."));
@@ -278,7 +293,7 @@
278 293
           SERIAL_ECHOPAIR("   Doing circle at: (xi=", xi);
279 294
           SERIAL_ECHOPAIR(", yi=", yi);
280 295
           SERIAL_CHAR(')');
281
-          SERIAL_EOL;
296
+          SERIAL_EOL();
282 297
         }
283 298
 
284 299
         start_angle = 0.0;    // assume it is going to be a full circle
@@ -310,7 +325,9 @@
310 325
 
311 326
         for (tmp = start_angle; tmp < end_angle - 0.1; tmp += 30.0) {
312 327
 
313
-          if (user_canceled()) goto LEAVE;              // Check if the user wants to stop the Mesh Validation
328
+          #if ENABLED(NEWPANEL)
329
+            if (user_canceled()) goto LEAVE;              // Check if the user wants to stop the Mesh Validation
330
+          #endif
314 331
 
315 332
           int tmp_div_30 = tmp / 30.0;
316 333
           if (tmp_div_30 < 0) tmp_div_30 += 360 / 30;
@@ -356,14 +373,14 @@
356 373
     destination[Z_AXIS] = Z_CLEARANCE_BETWEEN_PROBES;
357 374
 
358 375
     //debug_current_and_destination(PSTR("ready to do Z-Raise."));
359
-    move_to(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], 0); // Raise the nozzle
376
+    move_to(destination, 0); // Raise the nozzle
360 377
     //debug_current_and_destination(PSTR("done doing Z-Raise."));
361 378
 
362 379
     destination[X_AXIS] = g26_x_pos;                                               // Move back to the starting position
363 380
     destination[Y_AXIS] = g26_y_pos;
364 381
     //destination[Z_AXIS] = Z_CLEARANCE_BETWEEN_PROBES;                        // Keep the nozzle where it is
365 382
 
366
-    move_to(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], 0); // Move back to the starting position
383
+    move_to(destination, 0); // Move back to the starting position
367 384
     //debug_current_and_destination(PSTR("done doing X/Y move."));
368 385
 
369 386
     has_control_of_lcd_panel = false;     // Give back control of the LCD Panel!
@@ -426,7 +443,9 @@
426 443
     for (uint8_t i = 0; i < GRID_MAX_POINTS_X; i++) {
427 444
       for (uint8_t j = 0; j < GRID_MAX_POINTS_Y; j++) {
428 445
 
429
-        if (user_canceled()) return true;     // Check if the user wants to stop the Mesh Validation
446
+        #if ENABLED(NEWPANEL)
447
+          if (user_canceled()) return true;     // Check if the user wants to stop the Mesh Validation
448
+        #endif
430 449
 
431 450
         if (i < GRID_MAX_POINTS_X) { // We can't connect to anything to the right than GRID_MAX_POINTS_X.
432 451
                                      // This is already a half circle because we are at the edge of the bed.
@@ -453,7 +472,7 @@
453 472
                   SERIAL_ECHOPAIR(") -> (ex=", ex);
454 473
                   SERIAL_ECHOPAIR(", ey=", ey);
455 474
                   SERIAL_CHAR(')');
456
-                  SERIAL_EOL;
475
+                  SERIAL_EOL();
457 476
                   //debug_current_and_destination(PSTR("Connecting horizontal line."));
458 477
                 }
459 478
 
@@ -487,7 +506,7 @@
487 506
                     SERIAL_ECHOPAIR(") -> (ex=", ex);
488 507
                     SERIAL_ECHOPAIR(", ey=", ey);
489 508
                     SERIAL_CHAR(')');
490
-                    SERIAL_EOL;
509
+                    SERIAL_EOL();
491 510
                     debug_current_and_destination(PSTR("Connecting vertical line."));
492 511
                   }
493 512
                   print_line_from_here_to_there(LOGICAL_X_POSITION(sx), LOGICAL_Y_POSITION(sy), g26_layer_height, LOGICAL_X_POSITION(ex), LOGICAL_Y_POSITION(ey), g26_layer_height);
@@ -540,16 +559,16 @@
540 559
 
541 560
   }
542 561
 
543
-  void unified_bed_leveling::retract_filament(float where[XYZE]) {
562
+  void unified_bed_leveling::retract_filament(const float where[XYZE]) {
544 563
     if (!g26_retracted) { // Only retract if we are not already retracted!
545 564
       g26_retracted = true;
546
-      move_to(where[X_AXIS], where[Y_AXIS], where[Z_AXIS], -1.0 * g26_retraction_multiplier);
565
+      move_to(where, -1.0 * g26_retraction_multiplier);
547 566
     }
548 567
   }
549 568
 
550
-  void unified_bed_leveling::recover_filament(float where[XYZE]) {
569
+  void unified_bed_leveling::recover_filament(const float where[XYZE]) {
551 570
     if (g26_retracted) { // Only un-retract if we are retracted.
552
-      move_to(where[X_AXIS], where[Y_AXIS], where[Z_AXIS], 1.2 * g26_retraction_multiplier);
571
+      move_to(where, 1.2 * g26_retraction_multiplier);
553 572
       g26_retracted = false;
554 573
     }
555 574
   }
@@ -582,7 +601,7 @@
582 601
 
583 602
     // If the end point of the line is closer to the nozzle, flip the direction,
584 603
     // moving from the end to the start. On very small lines the optimization isn't worth it.
585
-    if (dist_end < dist_start && (SIZE_OF_INTERSECTION_CIRCLES) < abs(line_length)) {
604
+    if (dist_end < dist_start && (SIZE_OF_INTERSECTION_CIRCLES) < FABS(line_length)) {
586 605
       return print_line_from_here_to_there(ex, ey, ez, sx, sy, sz);
587 606
     }
588 607
 
@@ -620,11 +639,11 @@
620 639
     g26_hotend_temp           = HOTEND_TEMP;
621 640
     g26_prime_flag            = 0;
622 641
 
623
-    g26_ooze_amount           = parser.seen('O') && parser.has_value() ? parser.value_linear_units() : OOZE_AMOUNT;
624
-    g26_keep_heaters_on       = parser.seen('K') && parser.value_bool();
625
-    g26_continue_with_closest = parser.seen('C') && parser.value_bool();
642
+    g26_ooze_amount           = parser.linearval('O', OOZE_AMOUNT);
643
+    g26_keep_heaters_on       = parser.boolval('K');
644
+    g26_continue_with_closest = parser.boolval('C');
626 645
 
627
-    if (parser.seen('B')) {
646
+    if (parser.seenval('B')) {
628 647
       g26_bed_temp = parser.value_celsius();
629 648
       if (!WITHIN(g26_bed_temp, 15, 140)) {
630 649
         SERIAL_PROTOCOLLNPGM("?Specified bed temperature not plausible.");
@@ -632,7 +651,7 @@
632 651
       }
633 652
     }
634 653
 
635
-    if (parser.seen('L')) {
654
+    if (parser.seenval('L')) {
636 655
       g26_layer_height = parser.value_linear_units();
637 656
       if (!WITHIN(g26_layer_height, 0.0, 2.0)) {
638 657
         SERIAL_PROTOCOLLNPGM("?Specified layer height not plausible.");
@@ -654,7 +673,7 @@
654 673
       }
655 674
     }
656 675
 
657
-    if (parser.seen('S')) {
676
+    if (parser.seenval('S')) {
658 677
       g26_nozzle = parser.value_float();
659 678
       if (!WITHIN(g26_nozzle, 0.1, 1.0)) {
660 679
         SERIAL_PROTOCOLLNPGM("?Specified nozzle size not plausible.");
@@ -663,8 +682,14 @@
663 682
     }
664 683
 
665 684
     if (parser.seen('P')) {
666
-      if (!parser.has_value())
667
-        g26_prime_flag = -1;
685
+      if (!parser.has_value()) {
686
+        #if ENABLED(NEWPANEL)
687
+          g26_prime_flag = -1;
688
+        #else
689
+          SERIAL_PROTOCOLLNPGM("?Prime length must be specified when not using an LCD.");
690
+          return UBL_ERR;
691
+        #endif
692
+      }
668 693
       else {
669 694
         g26_prime_flag++;
670 695
         g26_prime_length = parser.value_linear_units();
@@ -675,20 +700,20 @@
675 700
       }
676 701
     }
677 702
 
678
-    if (parser.seen('F')) {
703
+    if (parser.seenval('F')) {
679 704
       g26_filament_diameter = parser.value_linear_units();
680 705
       if (!WITHIN(g26_filament_diameter, 1.0, 4.0)) {
681 706
         SERIAL_PROTOCOLLNPGM("?Specified filament size not plausible.");
682 707
         return UBL_ERR;
683 708
       }
684 709
     }
685
-    g26_extrusion_multiplier *= sq(1.75) / sq(g26_filament_diameter);         // If we aren't using 1.75mm filament, we need to
710
+    g26_extrusion_multiplier *= sq(1.75) / sq(g26_filament_diameter); // If we aren't using 1.75mm filament, we need to
686 711
                                                                       // scale up or down the length needed to get the
687 712
                                                                       // same volume of filament
688 713
 
689 714
     g26_extrusion_multiplier *= g26_filament_diameter * sq(g26_nozzle) / sq(0.3); // Scale up by nozzle size
690 715
 
691
-    if (parser.seen('H')) {
716
+    if (parser.seenval('H')) {
692 717
       g26_hotend_temp = parser.value_celsius();
693 718
       if (!WITHIN(g26_hotend_temp, 165, 280)) {
694 719
         SERIAL_PROTOCOLLNPGM("?Specified nozzle temperature not plausible.");
@@ -702,14 +727,23 @@
702 727
       random_deviation = parser.has_value() ? parser.value_float() : 50.0;
703 728
     }
704 729
 
705
-    g26_repeats = parser.seen('R') ? (parser.has_value() ? parser.value_int() : GRID_MAX_POINTS + 1) : GRID_MAX_POINTS + 1;
730
+    #if ENABLED(NEWPANEL)
731
+      g26_repeats = parser.intval('R', GRID_MAX_POINTS + 1);
732
+    #else
733
+      if (!parser.seen('R')) {
734
+        SERIAL_PROTOCOLLNPGM("?(R)epeat must be specified when not using an LCD.");
735
+        return UBL_ERR;
736
+      }
737
+      else
738
+        g26_repeats = parser.has_value() ? parser.value_int() : GRID_MAX_POINTS + 1;
739
+    #endif
706 740
     if (g26_repeats < 1) {
707 741
       SERIAL_PROTOCOLLNPGM("?(R)epeat value not plausible; must be at least 1.");
708 742
       return UBL_ERR;
709 743
     }
710 744
 
711
-    g26_x_pos = parser.seen('X') ? parser.value_linear_units() : current_position[X_AXIS];
712
-    g26_y_pos = parser.seen('Y') ? parser.value_linear_units() : current_position[Y_AXIS];
745
+    g26_x_pos = parser.linearval('X', current_position[X_AXIS]);
746
+    g26_y_pos = parser.linearval('Y', current_position[Y_AXIS]);
713 747
     if (!position_is_reachable_xy(g26_x_pos, g26_y_pos)) {
714 748
       SERIAL_PROTOCOLLNPGM("?Specified X,Y coordinate out of bounds.");
715 749
       return UBL_ERR;
@@ -723,11 +757,13 @@
723 757
     return UBL_OK;
724 758
   }
725 759
 
726
-  bool unified_bed_leveling::exit_from_g26() {
727
-    lcd_setstatusPGM(PSTR("Leaving G26"), -1);
728
-    while (ubl_lcd_clicked()) idle();
729
-    return UBL_ERR;
730
-  }
760
+  #if ENABLED(NEWPANEL)
761
+    bool unified_bed_leveling::exit_from_g26() {
762
+      lcd_setstatusPGM(PSTR("Leaving G26"), -1);
763
+      while (ubl_lcd_clicked()) idle();
764
+      return UBL_ERR;
765
+    }
766
+  #endif
731 767
 
732 768
   /**
733 769
    * Turn on the bed and nozzle heat and
@@ -744,7 +780,11 @@
744 780
           has_control_of_lcd_panel = true;
745 781
           thermalManager.setTargetBed(g26_bed_temp);
746 782
           while (abs(thermalManager.degBed() - g26_bed_temp) > 3) {
747
-            if (ubl_lcd_clicked()) return exit_from_g26();
783
+
784
+            #if ENABLED(NEWPANEL)
785
+              if (ubl_lcd_clicked()) return exit_from_g26();
786
+            #endif
787
+
748 788
             if (PENDING(millis(), next)) {
749 789
               next = millis() + 5000UL;
750 790
               print_heaterstates();
@@ -761,7 +801,11 @@
761 801
     // Start heating the nozzle and wait for it to reach temperature.
762 802
     thermalManager.setTargetHotend(g26_hotend_temp, 0);
763 803
     while (abs(thermalManager.degHotend(0) - g26_hotend_temp) > 3) {
764
-      if (ubl_lcd_clicked()) return exit_from_g26();
804
+
805
+      #if ENABLED(NEWPANEL)
806
+        if (ubl_lcd_clicked()) return exit_from_g26();
807
+      #endif
808
+
765 809
       if (PENDING(millis(), next)) {
766 810
         next = millis() + 5000UL;
767 811
         print_heaterstates();
@@ -781,49 +825,53 @@
781 825
    * Prime the nozzle if needed. Return true on error.
782 826
    */
783 827
   bool unified_bed_leveling::prime_nozzle() {
784
-    float Total_Prime = 0.0;
785
-
786
-    if (g26_prime_flag == -1) {  // The user wants to control how much filament gets purged
787 828
 
788
-      has_control_of_lcd_panel = true;
829
+    #if ENABLED(NEWPANEL)
830
+      float Total_Prime = 0.0;
789 831
 
790
-      lcd_setstatusPGM(PSTR("User-Controlled Prime"), 99);
791
-      chirp_at_user();
792
-
793
-      set_destination_to_current();
832
+      if (g26_prime_flag == -1) {  // The user wants to control how much filament gets purged
794 833
 
795
-      recover_filament(destination); // Make sure G26 doesn't think the filament is retracted().
796
-
797
-      while (!ubl_lcd_clicked()) {
834
+        has_control_of_lcd_panel = true;
835
+        lcd_setstatusPGM(PSTR("User-Controlled Prime"), 99);
798 836
         chirp_at_user();
799
-        destination[E_AXIS] += 0.25;
800
-        #ifdef PREVENT_LENGTHY_EXTRUDE
801
-          Total_Prime += 0.25;
802
-          if (Total_Prime >= EXTRUDE_MAXLENGTH) return UBL_ERR;
803
-        #endif
804
-        G26_line_to_destination(planner.max_feedrate_mm_s[E_AXIS] / 15.0);
805 837
 
806
-        stepper.synchronize();    // Without this synchronize, the purge is more consistent,
807
-                                  // but because the planner has a buffer, we won't be able
808
-                                  // to stop as quickly.  So we put up with the less smooth
809
-                                  // action to give the user a more responsive 'Stop'.
810 838
         set_destination_to_current();
811
-        idle();
812
-      }
813 839
 
814
-      while (ubl_lcd_clicked()) idle();           // Debounce Encoder Wheel
840
+        recover_filament(destination); // Make sure G26 doesn't think the filament is retracted().
815 841
 
816
-      #if ENABLED(ULTRA_LCD)
817
-        strcpy_P(lcd_status_message, PSTR("Done Priming")); // We can't do lcd_setstatusPGM() without having it continue;
818
-                                                            // So...  We cheat to get a message up.
819
-        lcd_setstatusPGM(PSTR("Done Priming"), 99);
820
-        lcd_quick_feedback();
821
-      #endif
842
+        while (!ubl_lcd_clicked()) {
843
+          chirp_at_user();
844
+          destination[E_AXIS] += 0.25;
845
+          #ifdef PREVENT_LENGTHY_EXTRUDE
846
+            Total_Prime += 0.25;
847
+            if (Total_Prime >= EXTRUDE_MAXLENGTH) return UBL_ERR;
848
+          #endif
849
+          G26_line_to_destination(planner.max_feedrate_mm_s[E_AXIS] / 15.0);
850
+
851
+          stepper.synchronize();    // Without this synchronize, the purge is more consistent,
852
+                                    // but because the planner has a buffer, we won't be able
853
+                                    // to stop as quickly.  So we put up with the less smooth
854
+                                    // action to give the user a more responsive 'Stop'.
855
+          set_destination_to_current();
856
+          idle();
857
+        }
822 858
 
823
-      has_control_of_lcd_panel = false;
859
+        while (ubl_lcd_clicked()) idle();           // Debounce Encoder Wheel
824 860
 
825
-    }
826
-    else {
861
+        #if ENABLED(ULTRA_LCD)
862
+          strcpy_P(lcd_status_message, PSTR("Done Priming")); // We can't do lcd_setstatusPGM() without having it continue;
863
+                                                              // So...  We cheat to get a message up.
864
+          lcd_setstatusPGM(PSTR("Done Priming"), 99);
865
+          lcd_quick_feedback();
866
+        #endif
867
+
868
+        has_control_of_lcd_panel = false;
869
+
870
+      }
871
+      else {
872
+    #else
873
+    {
874
+    #endif
827 875
       #if ENABLED(ULTRA_LCD)
828 876
         lcd_setstatusPGM(PSTR("Fixed Length Prime."), 99);
829 877
         lcd_quick_feedback();

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


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

@@ -0,0 +1,359 @@
1
+/**
2
+ * Marlin 3D Printer Firmware
3
+ * Copyright (C) 2016, 2017 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 I2CPOSENC_H
24
+#define I2CPOSENC_H
25
+
26
+#include "MarlinConfig.h"
27
+
28
+#if ENABLED(I2C_POSITION_ENCODERS)
29
+
30
+  #include "enum.h"
31
+  #include "macros.h"
32
+  #include "types.h"
33
+  #include <Wire.h>
34
+
35
+  //=========== Advanced / Less-Common Encoder Configuration Settings ==========
36
+
37
+  #define I2CPE_EC_THRESH_PROPORTIONAL                    // if enabled adjusts the error correction threshold
38
+                                                          // proportional to the current speed of the axis allows
39
+                                                          // for very small error margin at low speeds without
40
+                                                          // stuttering due to reading latency at high speeds
41
+
42
+  #define I2CPE_DEBUG                                     // enable encoder-related debug serial echos
43
+
44
+  #define I2CPE_REBOOT_TIME             5000              // time we wait for an encoder module to reboot
45
+                                                          // after changing address.
46
+
47
+  #define I2CPE_MAG_SIG_GOOD            0
48
+  #define I2CPE_MAG_SIG_MID             1
49
+  #define I2CPE_MAG_SIG_BAD             2
50
+  #define I2CPE_MAG_SIG_NF              255
51
+
52
+  #define I2CPE_REQ_REPORT              0
53
+  #define I2CPE_RESET_COUNT             1
54
+  #define I2CPE_SET_ADDR                2
55
+  #define I2CPE_SET_REPORT_MODE         3
56
+  #define I2CPE_CLEAR_EEPROM            4
57
+
58
+  #define I2CPE_LED_PAR_MODE            10
59
+  #define I2CPE_LED_PAR_BRT             11
60
+  #define I2CPE_LED_PAR_RATE            14
61
+
62
+  #define I2CPE_REPORT_DISTANCE         0
63
+  #define I2CPE_REPORT_STRENGTH         1
64
+  #define I2CPE_REPORT_VERSION          2
65
+
66
+  // Default I2C addresses
67
+  #define I2CPE_PRESET_ADDR_X           30
68
+  #define I2CPE_PRESET_ADDR_Y           31
69
+  #define I2CPE_PRESET_ADDR_Z           32
70
+  #define I2CPE_PRESET_ADDR_E           33
71
+
72
+  #define I2CPE_DEF_AXIS                X_AXIS
73
+  #define I2CPE_DEF_ADDR                I2CPE_PRESET_ADDR_X
74
+
75
+  // Error event counter; tracks how many times there is an error exceeding a certain threshold
76
+  #define I2CPE_ERR_CNT_THRESH          3.00
77
+  #define I2CPE_ERR_CNT_DEBOUNCE_MS     2000
78
+
79
+  #if ENABLED(I2CPE_ERR_ROLLING_AVERAGE)
80
+    #define I2CPE_ERR_ARRAY_SIZE        32
81
+  #endif
82
+
83
+  // Error Correction Methods
84
+  #define I2CPE_ECM_NONE                0
85
+  #define I2CPE_ECM_MICROSTEP           1
86
+  #define I2CPE_ECM_PLANNER             2
87
+  #define I2CPE_ECM_STALLDETECT         3
88
+
89
+  // Encoder types
90
+  #define I2CPE_ENC_TYPE_ROTARY         0
91
+  #define I2CPE_ENC_TYPE_LINEAR         1
92
+
93
+  // Parser
94
+  #define I2CPE_PARSE_ERR               1
95
+  #define I2CPE_PARSE_OK                0
96
+
97
+  #define LOOP_PE(VAR) LOOP_L_N(VAR, I2CPE_ENCODER_CNT)
98
+  #define CHECK_IDX() do{ if (!WITHIN(idx, 0, I2CPE_ENCODER_CNT - 1)) return; }while(0)
99
+
100
+  extern const char axis_codes[XYZE];
101
+
102
+  typedef union {
103
+    volatile int32_t val = 0;
104
+    uint8_t          bval[4];
105
+  } i2cLong;
106
+
107
+  class I2CPositionEncoder {
108
+  private:
109
+    AxisEnum  encoderAxis         = I2CPE_DEF_AXIS;
110
+
111
+    uint8_t   i2cAddress          = I2CPE_DEF_ADDR,
112
+              ecMethod            = I2CPE_DEF_EC_METHOD,
113
+              type                = I2CPE_DEF_TYPE,
114
+              H                   = I2CPE_MAG_SIG_NF;    // Magnetic field strength
115
+
116
+    int       encoderTicksPerUnit = I2CPE_DEF_ENC_TICKS_UNIT,
117
+              stepperTicks        = I2CPE_DEF_TICKS_REV,
118
+              errorCount          = 0,
119
+              errorPrev           = 0;
120
+
121
+    float     ecThreshold         = I2CPE_DEF_EC_THRESH;
122
+
123
+    bool      homed               = false,
124
+              trusted             = false,
125
+              initialised         = false,
126
+              active              = false,
127
+              invert              = false,
128
+              ec                  = true;
129
+
130
+    float     axisOffset          = 0;
131
+
132
+    int32_t   axisOffsetTicks     = 0,
133
+              zeroOffset          = 0,
134
+              lastPosition        = 0,
135
+              position;
136
+
137
+    millis_t  lastPositionTime    = 0,
138
+              nextErrorCountTime  = 0,
139
+              lastErrorTime;
140
+
141
+    //double        positionMm; //calculate
142
+
143
+    #if ENABLED(I2CPE_ERR_ROLLING_AVERAGE)
144
+      uint8_t errIdx = 0;
145
+      int     err[I2CPE_ERR_ARRAY_SIZE] = { 0 };
146
+    #endif
147
+
148
+    //float        positionMm; //calculate
149
+
150
+  public:
151
+    void init(const uint8_t address, const AxisEnum axis);
152
+    void reset();
153
+
154
+    void update();
155
+
156
+    void set_homed();
157
+
158
+    int32_t get_raw_count();
159
+
160
+    FORCE_INLINE float mm_from_count(const int32_t count) {
161
+      switch (type) {
162
+        default: return -1;
163
+        case I2CPE_ENC_TYPE_LINEAR:
164
+          return count / encoderTicksPerUnit;
165
+        case I2CPE_ENC_TYPE_ROTARY:
166
+          return (count * stepperTicks) / (encoderTicksPerUnit * planner.axis_steps_per_mm[encoderAxis]);
167
+      }
168
+    }
169
+
170
+    FORCE_INLINE float get_position_mm() { return mm_from_count(get_position()); }
171
+    FORCE_INLINE int32_t get_position() { return get_raw_count() - zeroOffset - axisOffsetTicks; }
172
+
173
+    int32_t get_axis_error_steps(const bool report);
174
+    float get_axis_error_mm(const bool report);
175
+
176
+    void calibrate_steps_mm(const uint8_t iter);
177
+
178
+    bool passes_test(const bool report);
179
+
180
+    bool test_axis(void);
181
+
182
+    FORCE_INLINE int get_error_count(void) { return errorCount; }
183
+    FORCE_INLINE void set_error_count(const int newCount) { errorCount = newCount; }
184
+
185
+    FORCE_INLINE uint8_t get_address() { return i2cAddress; }
186
+    FORCE_INLINE void set_address(const uint8_t addr) { i2cAddress = addr; }
187
+
188
+    FORCE_INLINE bool get_active(void) { return active; }
189
+    FORCE_INLINE void set_active(const bool a) { active = a; }
190
+
191
+    FORCE_INLINE void set_inverted(const bool i) { invert = i; }
192
+
193
+    FORCE_INLINE AxisEnum get_axis() { return encoderAxis; }
194
+
195
+    FORCE_INLINE bool get_ec_enabled() { return ec; }
196
+    FORCE_INLINE void set_ec_enabled(const bool enabled) { ec = enabled; }
197
+
198
+    FORCE_INLINE uint8_t get_ec_method() { return ecMethod; }
199
+    FORCE_INLINE void set_ec_method(const byte method) { ecMethod = method; }
200
+
201
+    FORCE_INLINE float get_ec_threshold() { return ecThreshold; }
202
+    FORCE_INLINE void set_ec_threshold(const float newThreshold) { ecThreshold = newThreshold; }
203
+
204
+    FORCE_INLINE int get_encoder_ticks_mm() {
205
+      switch (type) {
206
+        default: return 0;
207
+        case I2CPE_ENC_TYPE_LINEAR:
208
+          return encoderTicksPerUnit;
209
+        case I2CPE_ENC_TYPE_ROTARY:
210
+          return (int)((encoderTicksPerUnit / stepperTicks) * planner.axis_steps_per_mm[encoderAxis]);
211
+      }
212
+    }
213
+
214
+    FORCE_INLINE int get_ticks_unit() { return encoderTicksPerUnit; }
215
+    FORCE_INLINE void set_ticks_unit(const int ticks) { encoderTicksPerUnit = ticks; }
216
+
217
+    FORCE_INLINE uint8_t get_type() { return type; }
218
+    FORCE_INLINE void set_type(const byte newType) { type = newType; }
219
+
220
+    FORCE_INLINE int get_stepper_ticks() { return stepperTicks; }
221
+    FORCE_INLINE void set_stepper_ticks(const int ticks) { stepperTicks = ticks; }
222
+
223
+    FORCE_INLINE float get_axis_offset() { return axisOffset; }
224
+    FORCE_INLINE void set_axis_offset(const float newOffset) {
225
+      axisOffset = newOffset;
226
+      axisOffsetTicks = int32_t(axisOffset * get_encoder_ticks_mm());
227
+    }
228
+
229
+    FORCE_INLINE void set_current_position(const float newPositionMm) {
230
+      set_axis_offset(get_position_mm() - newPositionMm + axisOffset);
231
+    }
232
+  };
233
+
234
+  class I2CPositionEncodersMgr {
235
+  private:
236
+    static bool I2CPE_anyaxis;
237
+    static uint8_t I2CPE_addr, I2CPE_idx;
238
+
239
+  public:
240
+
241
+    static void init(void);
242
+
243
+    // consider only updating one endoder per call / tick if encoders become too time intensive
244
+    static void update(void) { LOOP_PE(i) encoders[i].update(); }
245
+
246
+    static void homed(const AxisEnum axis) {
247
+      LOOP_PE(i)
248
+        if (encoders[i].get_axis() == axis) encoders[i].set_homed();
249
+    }
250
+
251
+    static void report_position(const int8_t idx, const bool units, const bool noOffset);
252
+
253
+    static void report_status(const int8_t idx) {
254
+      CHECK_IDX();
255
+      SERIAL_ECHOPAIR("Encoder ",idx);
256
+      SERIAL_ECHOPGM(": ");
257
+      encoders[idx].get_raw_count();
258
+      encoders[idx].passes_test(true);
259
+    }
260
+
261
+    static void report_error(const int8_t idx) {
262
+      CHECK_IDX();
263
+      encoders[idx].get_axis_error_steps(true);
264
+    }
265
+
266
+    static void test_axis(const int8_t idx) {
267
+      CHECK_IDX();
268
+      encoders[idx].test_axis();
269
+    }
270
+
271
+    static void calibrate_steps_mm(const int8_t idx, const int iterations) {
272
+      CHECK_IDX();
273
+      encoders[idx].calibrate_steps_mm(iterations);
274
+    }
275
+
276
+    static void change_module_address(const uint8_t oldaddr, const uint8_t newaddr);
277
+    static void report_module_firmware(const uint8_t address);
278
+
279
+    static void report_error_count(const int8_t idx, const AxisEnum axis) {
280
+      CHECK_IDX();
281
+      SERIAL_ECHOPAIR("Error count on ", axis_codes[axis]);
282
+      SERIAL_ECHOLNPAIR(" axis is ", encoders[idx].get_error_count());
283
+    }
284
+
285
+    static void reset_error_count(const int8_t idx, const AxisEnum axis) {
286
+      CHECK_IDX();
287
+      encoders[idx].set_error_count(0);
288
+      SERIAL_ECHOPAIR("Error count on ", axis_codes[axis]);
289
+      SERIAL_ECHOLNPGM(" axis has been reset.");
290
+    }
291
+
292
+    static void enable_ec(const int8_t idx, const bool enabled, const AxisEnum axis) {
293
+      CHECK_IDX();
294
+      encoders[idx].set_ec_enabled(enabled);
295
+      SERIAL_ECHOPAIR("Error correction on ", axis_codes[axis]);
296
+      SERIAL_ECHOPGM(" axis is ");
297
+      serialprintPGM(encoders[idx].get_ec_enabled() ? PSTR("en") : PSTR("dis"));
298
+      SERIAL_ECHOLNPGM("abled.");
299
+    }
300
+
301
+    static void set_ec_threshold(const int8_t idx, const float newThreshold, const AxisEnum axis) {
302
+      CHECK_IDX();
303
+      encoders[idx].set_ec_threshold(newThreshold);
304
+      SERIAL_ECHOPAIR("Error correct threshold for ", axis_codes[axis]);
305
+      SERIAL_ECHOPAIR_F(" axis set to ", newThreshold);
306
+      SERIAL_ECHOLNPGM("mm.");
307
+    }
308
+
309
+    static void get_ec_threshold(const int8_t idx, const AxisEnum axis) {
310
+      CHECK_IDX();
311
+      const float threshold = encoders[idx].get_ec_threshold();
312
+      SERIAL_ECHOPAIR("Error correct threshold for ", axis_codes[axis]);
313
+      SERIAL_ECHOPAIR_F(" axis is ", threshold);
314
+      SERIAL_ECHOLNPGM("mm.");
315
+    }
316
+
317
+    static int8_t idx_from_axis(const AxisEnum axis) {
318
+      LOOP_PE(i)
319
+        if (encoders[i].get_axis() == axis) return i;
320
+      return -1;
321
+    }
322
+
323
+    static int8_t idx_from_addr(const uint8_t addr) {
324
+      LOOP_PE(i)
325
+        if (encoders[i].get_address() == addr) return i;
326
+      return -1;
327
+    }
328
+
329
+    static int8_t parse();
330
+
331
+    static void M860();
332
+    static void M861();
333
+    static void M862();
334
+    static void M863();
335
+    static void M864();
336
+    static void M865();
337
+    static void M866();
338
+    static void M867();
339
+    static void M868();
340
+    static void M869();
341
+
342
+    static I2CPositionEncoder encoders[I2CPE_ENCODER_CNT];
343
+  };
344
+
345
+  extern I2CPositionEncodersMgr I2CPEM;
346
+
347
+  FORCE_INLINE static void gcode_M860() { I2CPEM.M860(); }
348
+  FORCE_INLINE static void gcode_M861() { I2CPEM.M861(); }
349
+  FORCE_INLINE static void gcode_M862() { I2CPEM.M862(); }
350
+  FORCE_INLINE static void gcode_M863() { I2CPEM.M863(); }
351
+  FORCE_INLINE static void gcode_M864() { I2CPEM.M864(); }
352
+  FORCE_INLINE static void gcode_M865() { I2CPEM.M865(); }
353
+  FORCE_INLINE static void gcode_M866() { I2CPEM.M866(); }
354
+  FORCE_INLINE static void gcode_M867() { I2CPEM.M867(); }
355
+  FORCE_INLINE static void gcode_M868() { I2CPEM.M868(); }
356
+  FORCE_INLINE static void gcode_M869() { I2CPEM.M869(); }
357
+
358
+#endif //I2C_POSITION_ENCODERS
359
+#endif //I2CPOSENC_H

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

@@ -130,7 +130,7 @@ int16_t count_test_bytes(const char * const ptr) {
130 130
         }
131 131
         SERIAL_CHAR(ccc);
132 132
       }
133
-      SERIAL_EOL;
133
+      SERIAL_EOL();
134 134
       ptr += 16;
135 135
       safe_delay(25);
136 136
       idle();
@@ -189,19 +189,17 @@ void free_memory_pool_report(char * const ptr, const int16_t size) {
189 189
    *  This is useful to check the correctness of the M100 D and the M100 F commands.
190 190
    */
191 191
   void corrupt_free_memory(char *ptr, const uint16_t size) {
192
-    if (parser.seen('C')) {
193
-      ptr += 8;
194
-      const uint16_t near_top = top_of_stack() - ptr - 250, // -250 to avoid interrupt activity that's altered the stack.
195
-                     j = near_top / (size + 1);
196
-
197
-      SERIAL_ECHOLNPGM("Corrupting free memory block.\n");
198
-      for (uint16_t i = 1; i <= size; i++) {
199
-        char * const addr = ptr + i * j;
200
-        *addr = i;
201
-        SERIAL_ECHOPAIR("\nCorrupting address: ", hex_address(addr));
202
-      }
203
-      SERIAL_EOL;
192
+    ptr += 8;
193
+    const uint16_t near_top = top_of_stack() - ptr - 250, // -250 to avoid interrupt activity that's altered the stack.
194
+                   j = near_top / (size + 1);
195
+
196
+    SERIAL_ECHOLNPGM("Corrupting free memory block.\n");
197
+    for (uint16_t i = 1; i <= size; i++) {
198
+      char * const addr = ptr + i * j;
199
+      *addr = i;
200
+      SERIAL_ECHOPAIR("\nCorrupting address: ", hex_address(addr));
204 201
     }
202
+    SERIAL_EOL();
205 203
   }
206 204
 #endif // M100_FREE_MEMORY_CORRUPTOR
207 205
 
@@ -229,7 +227,7 @@ void init_free_memory(char *ptr, int16_t size) {
229 227
     if (ptr[i] != TEST_BYTE) {
230 228
       SERIAL_ECHOPAIR("? address : ", hex_address(ptr + i));
231 229
       SERIAL_ECHOLNPAIR("=", hex_byte(ptr[i]));
232
-      SERIAL_EOL;
230
+      SERIAL_EOL();
233 231
     }
234 232
   }
235 233
 }
@@ -323,7 +321,7 @@ int check_for_free_memory_corruption(const char * const title) {
323 321
   SERIAL_ECHOPGM(" return=");
324 322
   if (block_cnt == 1) {
325 323
     SERIAL_CHAR('0');       // if the block_cnt is 1, nothing has broken up the free memory
326
-    SERIAL_EOL;             // area and it is appropriate to say 'no corruption'.
324
+    SERIAL_EOL();             // area and it is appropriate to say 'no corruption'.
327 325
     return 0;
328 326
   }
329 327
   SERIAL_ECHOLNPGM("true");

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

@@ -290,8 +290,8 @@ ifeq ($(HARDWARE_VARIANT), Teensy)
290 290
 SRC = wiring.c
291 291
 VPATH += $(ARDUINO_INSTALL_DIR)/hardware/teensy/cores/teensy
292 292
 endif
293
-CXXSRC = WMath.cpp WString.cpp Print.cpp Marlin_main.cpp	\
294
-	MarlinSerial.cpp Sd2Card.cpp SdBaseFile.cpp SdFatUtil.cpp	\
293
+CXXSRC = WMath.cpp WString.cpp Print.cpp Marlin_main.cpp \
294
+	MarlinSerial.cpp Sd2Card.cpp SdBaseFile.cpp SdFatUtil.cpp \
295 295
 	SdFile.cpp SdVolume.cpp planner.cpp stepper.cpp \
296 296
 	temperature.cpp cardreader.cpp configuration_store.cpp \
297 297
 	watchdog.cpp SPI.cpp servo.cpp Tone.cpp ultralcd.cpp digipot_mcp4451.cpp \

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

@@ -210,7 +210,7 @@ inline void refresh_cmd_timeout() { previous_cmd_ms = millis(); }
210 210
 /**
211 211
  * Feedrate scaling and conversion
212 212
  */
213
-extern int feedrate_percentage;
213
+extern int16_t feedrate_percentage;
214 214
 
215 215
 #define MMM_TO_MMS(MM_M) ((MM_M)/60.0)
216 216
 #define MMS_TO_MMM(MM_S) ((MM_S)*60.0)
@@ -218,7 +218,7 @@ extern int feedrate_percentage;
218 218
 
219 219
 extern bool axis_relative_modes[];
220 220
 extern bool volumetric_enabled;
221
-extern int flow_percentage[EXTRUDERS]; // Extrusion factor for each extruder
221
+extern int16_t flow_percentage[EXTRUDERS]; // Extrusion factor for each extruder
222 222
 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.
223 223
 extern float volumetric_multiplier[EXTRUDERS]; // reciprocal of cross-sectional area of filament (in square millimeters), stored this way to reduce computational burden in planner
224 224
 extern bool axis_known_position[XYZ];
@@ -370,9 +370,9 @@ extern float soft_endstop_min[XYZ], soft_endstop_max[XYZ];
370 370
   extern bool filament_sensor;         // Flag that filament sensor readings should control extrusion
371 371
   extern float filament_width_nominal, // Theoretical filament diameter i.e., 3.00 or 1.75
372 372
                filament_width_meas;    // Measured filament diameter
373
-  extern int8_t measurement_delay[];   // Ring buffer to delay measurement
374
-  extern int filwidth_delay_index[2];  // Ring buffer indexes. Used by planner, temperature, and main code
375
-  extern int meas_delay_cm;            // Delay distance
373
+  extern uint8_t meas_delay_cm,        // Delay distance
374
+                 measurement_delay[];  // Ring buffer to delay measurement
375
+  extern int8_t filwidth_delay_index[2]; // Ring buffer indexes. Used by planner, temperature, and main code
376 376
 #endif
377 377
 
378 378
 #if ENABLED(ADVANCED_PAUSE_FEATURE)

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

@@ -320,7 +320,8 @@
320 320
           // space for us.
321 321
           if (TEST(M_UCSRxA, M_UDREx))
322 322
             _tx_udr_empty_irq();
323
-        } else {
323
+        }
324
+        else {
324 325
           // nop, the interrupt handler will free up space for us
325 326
         }
326 327
       }

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


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

@@ -271,19 +271,13 @@
271 271
 #endif
272 272
 
273 273
 /**
274
- * Delta requirements
274
+ * I2C Position Encoders
275 275
  */
276
-#if ENABLED(DELTA)
277
-  #if DISABLED(USE_XMAX_PLUG) && DISABLED(USE_YMAX_PLUG) && DISABLED(USE_ZMAX_PLUG)
278
-    #error "You probably want to use Max Endstops for DELTA!"
279
-  #elif ENABLED(ENABLE_LEVELING_FADE_HEIGHT) && DISABLED(AUTO_BED_LEVELING_BILINEAR) && !UBL_DELTA
280
-    #error "ENABLE_LEVELING_FADE_HEIGHT on DELTA requires AUTO_BED_LEVELING_BILINEAR or AUTO_BED_LEVELING_UBL."
281
-  #elif ABL_GRID
282
-    #if (GRID_MAX_POINTS_X & 1) == 0 || (GRID_MAX_POINTS_Y & 1) == 0
283
-      #error "DELTA requires GRID_MAX_POINTS_X and GRID_MAX_POINTS_Y to be odd numbers."
284
-    #elif GRID_MAX_POINTS_X < 3
285
-      #error "DELTA requires GRID_MAX_POINTS_X and GRID_MAX_POINTS_Y to be 3 or higher."
286
-    #endif
276
+#if ENABLED(I2C_POSITION_ENCODERS)
277
+  #if DISABLED(BABYSTEPPING)
278
+    #error "I2C_POSITION_ENCODERS requires BABYSTEPPING."
279
+  #elif !WITHIN(I2CPE_ENCODER_CNT, 1, 5)
280
+    #error "I2CPE_ENCODER_CNT must be between 1 and 5."
287 281
   #endif
288 282
 #endif
289 283
 
@@ -291,12 +285,14 @@
291 285
  * Babystepping
292 286
  */
293 287
 #if ENABLED(BABYSTEPPING)
294
-  #if DISABLED(ULTRA_LCD)
288
+  #if DISABLED(ULTRA_LCD) && DISABLED(I2C_POSITION_ENCODERS)
295 289
     #error "BABYSTEPPING requires an LCD controller."
296 290
   #elif ENABLED(SCARA)
297 291
     #error "BABYSTEPPING is not implemented for SCARA yet."
298 292
   #elif ENABLED(DELTA) && ENABLED(BABYSTEP_XY)
299 293
     #error "BABYSTEPPING only implemented for Z axis on deltabots."
294
+  #elif ENABLED(BABYSTEP_ZPROBE_OFFSET) &&  ENABLED(MESH_BED_LEVELING)
295
+    #error "MESH_BED_LEVELING and BABYSTEP_ZPROBE_OFFSET is not a valid combination"
300 296
   #elif ENABLED(BABYSTEP_ZPROBE_OFFSET) && !HAS_BED_PROBE
301 297
     #error "BABYSTEP_ZPROBE_OFFSET requires a probe."
302 298
   #endif
@@ -325,6 +321,8 @@
325 321
     #error "EXTRUDER_RUNOUT_PREVENT is incompatible with ADVANCED_PAUSE_FEATURE."
326 322
   #elif ENABLED(PARK_HEAD_ON_PAUSE) && DISABLED(SDSUPPORT) && DISABLED(NEWPANEL) && DISABLED(EMERGENCY_PARSER)
327 323
     #error "PARK_HEAD_ON_PAUSE requires SDSUPPORT, EMERGENCY_PARSER, or an LCD controller."
324
+  #elif ENABLED(HOME_BEFORE_FILAMENT_CHANGE) && DISABLED(PAUSE_PARK_NO_STEPPER_TIMEOUT)
325
+    #error "HOME_BEFORE_FILAMENT_CHANGE requires PAUSE_PARK_NO_STEPPER_TIMEOUT"
328 326
   #endif
329 327
 #endif
330 328
 
@@ -352,17 +350,30 @@
352 350
     #error "EXTRUDERS must be 1 with HEATERS_PARALLEL."
353 351
   #endif
354 352
 
353
+#elif ENABLED(MK2_MULTIPLEXER)
354
+  #error "MK2_MULTIPLEXER requires 2 or more EXTRUDERS."
355 355
 #elif ENABLED(SINGLENOZZLE)
356 356
   #error "SINGLENOZZLE requires 2 or more EXTRUDERS."
357 357
 #endif
358 358
 
359 359
 /**
360
- * A dual nozzle x-carriage with switching servo
360
+ * Sanity checking for the Průša MK2 Multiplexer
361
+ */
362
+#ifdef SNMM
363
+  #error "SNMM is now MK2_MULTIPLEXER. Please update your configuration."
364
+#elif ENABLED(MK2_MULTIPLEXER) && DISABLED(ADVANCED_PAUSE_FEATURE)
365
+  #error "ADVANCED_PAUSE_FEATURE is required with MK2_MULTIPLEXER."
366
+#endif
367
+
368
+/**
369
+ * A Dual Nozzle carriage with switching servo
361 370
  */
362 371
 #if ENABLED(SWITCHING_NOZZLE)
363
-  #if ENABLED(SINGLENOZZLE)
372
+  #if ENABLED(DUAL_X_CARRIAGE)
373
+    #error "SWITCHING_NOZZLE and DUAL_X_CARRIAGE are incompatible."
374
+  #elif ENABLED(SINGLENOZZLE)
364 375
     #error "SWITCHING_NOZZLE and SINGLENOZZLE are incompatible."
365
-  #elif EXTRUDERS < 2
376
+  #elif EXTRUDERS != 2
366 377
     #error "SWITCHING_NOZZLE requires exactly 2 EXTRUDERS."
367 378
   #elif NUM_SERVOS < 1
368 379
     #error "SWITCHING_NOZZLE requires NUM_SERVOS >= 1."
@@ -372,14 +383,8 @@
372 383
 /**
373 384
  * Single Stepper Dual Extruder with switching servo
374 385
  */
375
-#if ENABLED(SWITCHING_EXTRUDER)
376
-  #if ENABLED(DUAL_X_CARRIAGE)
377
-    #error "SWITCHING_EXTRUDER and DUAL_X_CARRIAGE are incompatible."
378
-  #elif EXTRUDERS != 2
379
-    #error "SWITCHING_EXTRUDER requires exactly 2 EXTRUDERS."
380
-  #elif NUM_SERVOS < 1
381
-    #error "SWITCHING_EXTRUDER requires NUM_SERVOS >= 1."
382
-  #endif
386
+#if ENABLED(SWITCHING_EXTRUDER) && NUM_SERVOS < 1
387
+  #error "SWITCHING_EXTRUDER requires NUM_SERVOS >= 1."
383 388
 #endif
384 389
 
385 390
 /**
@@ -430,46 +435,61 @@
430 435
 #endif
431 436
 
432 437
 /**
433
- * Allow only one bed leveling option to be defined
438
+ * Kinematics
439
+ */
440
+
441
+/**
442
+ * Allow only one kinematic type to be defined
434 443
  */
435 444
 static_assert(1 >= 0
436
-  #if ENABLED(AUTO_BED_LEVELING_LINEAR)
445
+  #if ENABLED(DELTA)
437 446
     + 1
438 447
   #endif
439
-  #if ENABLED(AUTO_BED_LEVELING_3POINT)
448
+  #if ENABLED(MORGAN_SCARA)
440 449
     + 1
441 450
   #endif
442
-  #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
451
+  #if ENABLED(MAKERARM_SCARA)
443 452
     + 1
444 453
   #endif
445
-  #if ENABLED(AUTO_BED_LEVELING_UBL)
454
+  #if ENABLED(COREXY)
446 455
     + 1
447 456
   #endif
448
-  #if ENABLED(MESH_BED_LEVELING)
457
+  #if ENABLED(COREXZ)
449 458
     + 1
450 459
   #endif
451
-  , "Select only one of: MESH_BED_LEVELING, AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_3POINT, AUTO_BED_LEVELING_BILINEAR or AUTO_BED_LEVELING_UBL."
452
-);
453
-
454
-/**
455
- * Mesh Bed Leveling
456
- */
457
-#if ENABLED(MESH_BED_LEVELING)
458
-  #if ENABLED(DELTA)
459
-    #error "MESH_BED_LEVELING does not yet support DELTA printers."
460
-  #elif GRID_MAX_POINTS_X > 9 || GRID_MAX_POINTS_Y > 9
461
-    #error "GRID_MAX_POINTS_X and GRID_MAX_POINTS_Y must be less than 10 for MBL."
460
+  #if ENABLED(COREYZ)
461
+    + 1
462 462
   #endif
463
-#endif
463
+  #if ENABLED(COREYX)
464
+    + 1
465
+  #endif
466
+  #if ENABLED(COREZX)
467
+    + 1
468
+  #endif
469
+  #if ENABLED(COREZY)
470
+    + 1
471
+  #endif
472
+  , "Please enable only one of DELTA, MORGAN_SCARA, MAKERARM_SCARA, COREXY, COREYX, COREXZ, COREZX, COREYZ, or COREZY."
473
+);
464 474
 
465 475
 /**
466
- * Unified Bed Leveling
476
+ * Delta requirements
467 477
  */
468
-#if ENABLED(AUTO_BED_LEVELING_UBL)
469
-  #if IS_SCARA
470
-    #error "AUTO_BED_LEVELING_UBL does not yet support SCARA printers."
471
-  #elif DISABLED(NEWPANEL)
472
-    #error "AUTO_BED_LEVELING_UBL requires an LCD controller."
478
+#if ENABLED(DELTA)
479
+  #if DISABLED(USE_XMAX_PLUG) && DISABLED(USE_YMAX_PLUG) && DISABLED(USE_ZMAX_PLUG)
480
+    #error "You probably want to use Max Endstops for DELTA!"
481
+  #elif ENABLED(ENABLE_LEVELING_FADE_HEIGHT) && DISABLED(AUTO_BED_LEVELING_BILINEAR) && !UBL_DELTA
482
+    #error "ENABLE_LEVELING_FADE_HEIGHT on DELTA requires AUTO_BED_LEVELING_BILINEAR or AUTO_BED_LEVELING_UBL."
483
+  #elif ENABLED(DELTA_AUTO_CALIBRATION) && !PROBE_SELECTED
484
+    #error "DELTA_AUTO_CALIBRATION requires a probe: PROBE_MANUALLY, FIX_MOUNTED_PROBE, BLTOUCH, SOLENOID_PROBE, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, Z Servo."
485
+  #elif ENABLED(DELTA_AUTO_CALIBRATION) && ENABLED(PROBE_MANUALLY) && DISABLED(ULTIPANEL)
486
+    #error "DELTA_AUTO_CALIBRATION requires an LCD controller with PROBE_MANUALLY."
487
+  #elif ABL_GRID
488
+    #if (GRID_MAX_POINTS_X & 1) == 0 || (GRID_MAX_POINTS_Y & 1) == 0
489
+      #error "DELTA requires GRID_MAX_POINTS_X and GRID_MAX_POINTS_Y to be odd numbers."
490
+    #elif GRID_MAX_POINTS_X < 3
491
+      #error "DELTA requires GRID_MAX_POINTS_X and GRID_MAX_POINTS_Y to be 3 or higher."
492
+    #endif
473 493
   #endif
474 494
 #endif
475 495
 
@@ -505,7 +525,6 @@ static_assert(1 >= 0
505 525
   , "Please enable only one probe option: PROBE_MANUALLY, FIX_MOUNTED_PROBE, BLTOUCH, SOLENOID_PROBE, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or Z Servo."
506 526
 );
507 527
 
508
-
509 528
 #if PROBE_SELECTED
510 529
 
511 530
   /**
@@ -571,13 +590,6 @@ static_assert(1 >= 0
571 590
     #error "Probes need Z_CLEARANCE_BETWEEN_PROBES >= 0."
572 591
   #endif
573 592
 
574
-   /**
575
-    * Advanced Pause is required in order to turn the heaters off during probing
576
-    */
577
-   #if (ENABLED(PROBING_HEATERS_OFF) && DISABLED(ADVANCED_PAUSE_FEATURE))
578
-     #error "PROBING_HEATERS_OFF requires ADVANCED_PAUSE_FEATURE"
579
-   #endif
580
-
581 593
 #else
582 594
 
583 595
   /**
@@ -589,8 +601,118 @@ static_assert(1 >= 0
589 601
     #else
590 602
       #error "Auto Bed Leveling requires one of these: PROBE_MANUALLY, FIX_MOUNTED_PROBE, BLTOUCH, SOLENOID_PROBE, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or a Z Servo."
591 603
     #endif
592
-  #elif ENABLED(Z_MIN_PROBE_REPEATABILITY_TEST)
593
-    #error "Z_MIN_PROBE_REPEATABILITY_TEST requires a probe: FIX_MOUNTED_PROBE, BLTOUCH, SOLENOID_PROBE, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or Z Servo."
604
+  #endif
605
+
606
+#endif
607
+
608
+#if ENABLED(Z_MIN_PROBE_REPEATABILITY_TEST) && !HAS_BED_PROBE
609
+  #error "Z_MIN_PROBE_REPEATABILITY_TEST requires a probe: FIX_MOUNTED_PROBE, BLTOUCH, SOLENOID_PROBE, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or Z Servo."
610
+#endif
611
+
612
+/**
613
+ * Allow only one bed leveling option to be defined
614
+ */
615
+static_assert(1 >= 0
616
+  #if ENABLED(AUTO_BED_LEVELING_LINEAR)
617
+    + 1
618
+  #endif
619
+  #if ENABLED(AUTO_BED_LEVELING_3POINT)
620
+    + 1
621
+  #endif
622
+  #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
623
+    + 1
624
+  #endif
625
+  #if ENABLED(AUTO_BED_LEVELING_UBL)
626
+    + 1
627
+  #endif
628
+  #if ENABLED(MESH_BED_LEVELING)
629
+    + 1
630
+  #endif
631
+  , "Select only one of: MESH_BED_LEVELING, AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_3POINT, AUTO_BED_LEVELING_BILINEAR or AUTO_BED_LEVELING_UBL."
632
+);
633
+
634
+/**
635
+ * Bed Leveling Requirements
636
+ */
637
+
638
+#if ENABLED(AUTO_BED_LEVELING_UBL)
639
+
640
+  /**
641
+   * Unified Bed Leveling
642
+   */
643
+
644
+  #if IS_SCARA
645
+    #error "AUTO_BED_LEVELING_UBL does not yet support SCARA printers."
646
+  #elif DISABLED(EEPROM_SETTINGS)
647
+    #error "AUTO_BED_LEVELING_UBL requires EEPROM_SETTINGS. Please update your configuration."
648
+  #elif !WITHIN(GRID_MAX_POINTS_X, 3, 15) || !WITHIN(GRID_MAX_POINTS_Y, 3, 15)
649
+    #error "GRID_MAX_POINTS_[XY] must be a whole number between 3 and 15."
650
+  #else
651
+    static_assert(WITHIN(UBL_PROBE_PT_1_X, MIN_PROBE_X, MAX_PROBE_X), "UBL_PROBE_PT_1_X can't be reached by the Z probe.");
652
+    static_assert(WITHIN(UBL_PROBE_PT_2_X, MIN_PROBE_X, MAX_PROBE_X), "UBL_PROBE_PT_2_X can't be reached by the Z probe.");
653
+    static_assert(WITHIN(UBL_PROBE_PT_3_X, MIN_PROBE_X, MAX_PROBE_X), "UBL_PROBE_PT_3_X can't be reached by the Z probe.");
654
+    static_assert(WITHIN(UBL_PROBE_PT_1_Y, MIN_PROBE_Y, MAX_PROBE_Y), "UBL_PROBE_PT_1_Y can't be reached by the Z probe.");
655
+    static_assert(WITHIN(UBL_PROBE_PT_2_Y, MIN_PROBE_Y, MAX_PROBE_Y), "UBL_PROBE_PT_2_Y can't be reached by the Z probe.");
656
+    static_assert(WITHIN(UBL_PROBE_PT_3_Y, MIN_PROBE_Y, MAX_PROBE_Y), "UBL_PROBE_PT_3_Y can't be reached by the Z probe.");
657
+  #endif
658
+
659
+#elif HAS_ABL
660
+
661
+  /**
662
+   * Auto Bed Leveling
663
+   */
664
+
665
+  #if ENABLED(USE_RAW_KINEMATICS)
666
+    #error "USE_RAW_KINEMATICS is not compatible with AUTO_BED_LEVELING"
667
+  #endif
668
+
669
+  /**
670
+   * Delta and SCARA have limited bed leveling options
671
+   */
672
+  #if IS_SCARA && DISABLED(AUTO_BED_LEVELING_BILINEAR)
673
+    #error "Only AUTO_BED_LEVELING_BILINEAR currently supports SCARA bed leveling."
674
+  #endif
675
+
676
+  /**
677
+   * Check auto bed leveling probe points
678
+   */
679
+  #if ABL_GRID
680
+
681
+    #ifdef DELTA_PROBEABLE_RADIUS
682
+      static_assert(LEFT_PROBE_BED_POSITION >= -DELTA_PROBEABLE_RADIUS, "LEFT_PROBE_BED_POSITION must be within DELTA_PROBEABLE_RADIUS.");
683
+      static_assert(RIGHT_PROBE_BED_POSITION <= DELTA_PROBEABLE_RADIUS, "RIGHT_PROBE_BED_POSITION must be within DELTA_PROBEABLE_RADIUS.");
684
+      static_assert(FRONT_PROBE_BED_POSITION >= -DELTA_PROBEABLE_RADIUS, "FRONT_PROBE_BED_POSITION must be within DELTA_PROBEABLE_RADIUS.");
685
+      static_assert(BACK_PROBE_BED_POSITION <= DELTA_PROBEABLE_RADIUS, "BACK_PROBE_BED_POSITION must be within DELTA_PROBEABLE_RADIUS.");
686
+    #else
687
+      static_assert(LEFT_PROBE_BED_POSITION < RIGHT_PROBE_BED_POSITION, "LEFT_PROBE_BED_POSITION must be less than RIGHT_PROBE_BED_POSITION.");
688
+      static_assert(FRONT_PROBE_BED_POSITION < BACK_PROBE_BED_POSITION, "FRONT_PROBE_BED_POSITION must be less than BACK_PROBE_BED_POSITION.");
689
+      static_assert(LEFT_PROBE_BED_POSITION >= MIN_PROBE_X, "LEFT_PROBE_BED_POSITION can't be reached by the Z probe.");
690
+      static_assert(RIGHT_PROBE_BED_POSITION <= MAX_PROBE_X, "RIGHT_PROBE_BED_POSITION can't be reached by the Z probe.");
691
+      static_assert(FRONT_PROBE_BED_POSITION >= MIN_PROBE_Y, "FRONT_PROBE_BED_POSITION can't be reached by the Z probe.");
692
+      static_assert(BACK_PROBE_BED_POSITION <= MAX_PROBE_Y, "BACK_PROBE_BED_POSITION can't be reached by the Z probe.");
693
+    #endif
694
+
695
+  #else // AUTO_BED_LEVELING_3POINT
696
+
697
+    static_assert(WITHIN(ABL_PROBE_PT_1_X, MIN_PROBE_X, MAX_PROBE_X), "ABL_PROBE_PT_1_X can't be reached by the Z probe.");
698
+    static_assert(WITHIN(ABL_PROBE_PT_2_X, MIN_PROBE_X, MAX_PROBE_X), "ABL_PROBE_PT_2_X can't be reached by the Z probe.");
699
+    static_assert(WITHIN(ABL_PROBE_PT_3_X, MIN_PROBE_X, MAX_PROBE_X), "ABL_PROBE_PT_3_X can't be reached by the Z probe.");
700
+    static_assert(WITHIN(ABL_PROBE_PT_1_Y, MIN_PROBE_Y, MAX_PROBE_Y), "ABL_PROBE_PT_1_Y can't be reached by the Z probe.");
701
+    static_assert(WITHIN(ABL_PROBE_PT_2_Y, MIN_PROBE_Y, MAX_PROBE_Y), "ABL_PROBE_PT_2_Y can't be reached by the Z probe.");
702
+    static_assert(WITHIN(ABL_PROBE_PT_3_Y, MIN_PROBE_Y, MAX_PROBE_Y), "ABL_PROBE_PT_3_Y can't be reached by the Z probe.");
703
+
704
+  #endif // AUTO_BED_LEVELING_3POINT
705
+
706
+#elif ENABLED(MESH_BED_LEVELING)
707
+
708
+  /**
709
+   * Mesh Bed Leveling
710
+   */
711
+
712
+  #if ENABLED(DELTA)
713
+    #error "MESH_BED_LEVELING does not yet support DELTA printers."
714
+  #elif GRID_MAX_POINTS_X > 9 || GRID_MAX_POINTS_Y > 9
715
+    #error "GRID_MAX_POINTS_X and GRID_MAX_POINTS_Y must be less than 10 for MBL."
594 716
   #endif
595 717
 
596 718
 #endif
@@ -633,81 +755,13 @@ static_assert(1 >= 0
633 755
 #endif // Z_SAFE_HOMING
634 756
 
635 757
 /**
636
- * Auto Bed Leveling
758
+ * Make sure DISABLE_[XYZ] compatible with selected homing options
637 759
  */
638
-#if HAS_ABL
639
-
640
-  #if ENABLED(USE_RAW_KINEMATICS)
641
-    #error "USE_RAW_KINEMATICS is not compatible with AUTO_BED_LEVELING"
642
-  #endif
643
-
644
-  /**
645
-   * Delta and SCARA have limited bed leveling options
646
-   */
647
-  #if IS_SCARA && DISABLED(AUTO_BED_LEVELING_BILINEAR)
648
-    #error "Only AUTO_BED_LEVELING_BILINEAR currently supports SCARA bed leveling."
760
+#if ENABLED(DISABLE_X) || ENABLED(DISABLE_Y) || ENABLED(DISABLE_Z)
761
+  #if ENABLED(HOME_AFTER_DEACTIVATE) || ENABLED(Z_SAFE_HOMING)
762
+    #error "DISABLE_[XYZ] not compatible with HOME_AFTER_DEACTIVATE or Z_SAFE_HOMING."
649 763
   #endif
650
-
651
-  /**
652
-   * Check auto bed leveling sub-options, especially probe points
653
-   */
654
-  #if ABL_GRID
655
-    #ifndef DELTA_PROBEABLE_RADIUS
656
-      #if LEFT_PROBE_BED_POSITION > RIGHT_PROBE_BED_POSITION
657
-        #error "LEFT_PROBE_BED_POSITION must be less than RIGHT_PROBE_BED_POSITION."
658
-      #elif FRONT_PROBE_BED_POSITION > BACK_PROBE_BED_POSITION
659
-        #error "FRONT_PROBE_BED_POSITION must be less than BACK_PROBE_BED_POSITION."
660
-      #endif
661
-      #if LEFT_PROBE_BED_POSITION < MIN_PROBE_X
662
-        #error "The given LEFT_PROBE_BED_POSITION can't be reached by the Z probe."
663
-      #elif RIGHT_PROBE_BED_POSITION > MAX_PROBE_X
664
-        #error "The given RIGHT_PROBE_BED_POSITION can't be reached by the Z probe."
665
-      #elif FRONT_PROBE_BED_POSITION < MIN_PROBE_Y
666
-        #error "The given FRONT_PROBE_BED_POSITION can't be reached by the Z probe."
667
-      #elif BACK_PROBE_BED_POSITION > MAX_PROBE_Y
668
-        #error "The given BACK_PROBE_BED_POSITION can't be reached by the Z probe."
669
-      #endif
670
-    #endif
671
-  #elif ENABLED(AUTO_BED_LEVELING_UBL)
672
-    #if DISABLED(EEPROM_SETTINGS)
673
-      #error "AUTO_BED_LEVELING_UBL requires EEPROM_SETTINGS. Please update your configuration."
674
-    #elif !WITHIN(GRID_MAX_POINTS_X, 3, 15) || !WITHIN(GRID_MAX_POINTS_Y, 3, 15)
675
-      #error "GRID_MAX_POINTS_[XY] must be a whole number between 3 and 15."
676
-    #endif
677
-    #if IS_CARTESIAN
678
-      #if !WITHIN(GRID_MAX_POINTS_X, 3, 15) || !WITHIN(GRID_MAX_POINTS_Y, 3, 15)
679
-        #error "GRID_MAX_POINTS_[XY] must be a whole number between 3 and 15."
680
-      #elif !WITHIN(UBL_PROBE_PT_1_X, MIN_PROBE_X, MAX_PROBE_X)
681
-        #error "The given UBL_PROBE_PT_1_X can't be reached by the Z probe."
682
-      #elif !WITHIN(UBL_PROBE_PT_2_X, MIN_PROBE_X, MAX_PROBE_X)
683
-        #error "The given UBL_PROBE_PT_2_X can't be reached by the Z probe."
684
-      #elif !WITHIN(UBL_PROBE_PT_3_X, MIN_PROBE_X, MAX_PROBE_X)
685
-        #error "The given UBL_PROBE_PT_3_X can't be reached by the Z probe."
686
-      #elif !WITHIN(UBL_PROBE_PT_1_Y, MIN_PROBE_Y, MAX_PROBE_Y)
687
-        #error "The given UBL_PROBE_PT_1_Y can't be reached by the Z probe."
688
-      #elif !WITHIN(UBL_PROBE_PT_2_Y, MIN_PROBE_Y, MAX_PROBE_Y)
689
-        #error "The given UBL_PROBE_PT_2_Y can't be reached by the Z probe."
690
-      #elif !WITHIN(UBL_PROBE_PT_3_Y, MIN_PROBE_Y, MAX_PROBE_Y)
691
-        #error "The given UBL_PROBE_PT_3_Y can't be reached by the Z probe."
692
-      #endif
693
-    #endif
694
-  #else // AUTO_BED_LEVELING_3POINT
695
-    #if !WITHIN(ABL_PROBE_PT_1_X, MIN_PROBE_X, MAX_PROBE_X)
696
-      #error "The given ABL_PROBE_PT_1_X can't be reached by the Z probe."
697
-    #elif !WITHIN(ABL_PROBE_PT_2_X, MIN_PROBE_X, MAX_PROBE_X)
698
-      #error "The given ABL_PROBE_PT_2_X can't be reached by the Z probe."
699
-    #elif !WITHIN(ABL_PROBE_PT_3_X, MIN_PROBE_X, MAX_PROBE_X)
700
-      #error "The given ABL_PROBE_PT_3_X can't be reached by the Z probe."
701
-    #elif !WITHIN(ABL_PROBE_PT_1_Y, MIN_PROBE_Y, MAX_PROBE_Y)
702
-      #error "The given ABL_PROBE_PT_1_Y can't be reached by the Z probe."
703
-    #elif !WITHIN(ABL_PROBE_PT_2_Y, MIN_PROBE_Y, MAX_PROBE_Y)
704
-      #error "The given ABL_PROBE_PT_2_Y can't be reached by the Z probe."
705
-    #elif !WITHIN(ABL_PROBE_PT_3_Y, MIN_PROBE_Y, MAX_PROBE_Y)
706
-      #error "The given ABL_PROBE_PT_3_Y can't be reached by the Z probe."
707
-    #endif
708
-  #endif // AUTO_BED_LEVELING_3POINT
709
-
710
-#endif // HAS_ABL
764
+#endif // DISABLE_[XYZ]
711 765
 
712 766
 /**
713 767
  * Advance Extrusion
@@ -742,40 +796,6 @@ static_assert(1 >= 0
742 796
 #endif
743 797
 
744 798
 /**
745
- * Don't set more than one kinematic type
746
- */
747
-static_assert(1 >= 0
748
-  #if ENABLED(DELTA)
749
-    + 1
750
-  #endif
751
-  #if ENABLED(MORGAN_SCARA)
752
-    + 1
753
-  #endif
754
-  #if ENABLED(MAKERARM_SCARA)
755
-    + 1
756
-  #endif
757
-  #if ENABLED(COREXY)
758
-    + 1
759
-  #endif
760
-  #if ENABLED(COREXZ)
761
-    + 1
762
-  #endif
763
-  #if ENABLED(COREYZ)
764
-    + 1
765
-  #endif
766
-  #if ENABLED(COREYX)
767
-    + 1
768
-  #endif
769
-  #if ENABLED(COREZX)
770
-    + 1
771
-  #endif
772
-  #if ENABLED(COREZY)
773
-    + 1
774
-  #endif
775
-  , "Please enable only one of DELTA, MORGAN_SCARA, MAKERARM_SCARA, COREXY, COREYX, COREXZ, COREZX, COREYZ, or COREZY."
776
-);
777
-
778
-/**
779 799
  * Allen Key
780 800
  * Deploying the Allen Key probe uses big moves in z direction. Too dangerous for an unhomed z-axis.
781 801
  */
@@ -940,21 +960,21 @@ static_assert(1 >= 0
940 960
 #endif
941 961
 
942 962
 /**
943
- * Test Extruder Pins
963
+ * Test Extruder Stepper Pins
944 964
  */
945
-#if EXTRUDERS > 4
965
+#if E_STEPPERS > 4
946 966
   #if !PIN_EXISTS(E4_STEP) || !PIN_EXISTS(E4_DIR) || !PIN_EXISTS(E4_ENABLE)
947 967
     #error "E4_STEP_PIN, E4_DIR_PIN, or E4_ENABLE_PIN not defined for this board."
948 968
   #endif
949
-#elif EXTRUDERS > 3
969
+#elif E_STEPPERS > 3
950 970
   #if !PIN_EXISTS(E3_STEP) || !PIN_EXISTS(E3_DIR) || !PIN_EXISTS(E3_ENABLE)
951 971
     #error "E3_STEP_PIN, E3_DIR_PIN, or E3_ENABLE_PIN not defined for this board."
952 972
   #endif
953
-#elif EXTRUDERS > 2
973
+#elif E_STEPPERS > 2
954 974
   #if !PIN_EXISTS(E2_STEP) || !PIN_EXISTS(E2_DIR) || !PIN_EXISTS(E2_ENABLE)
955 975
     #error "E2_STEP_PIN, E2_DIR_PIN, or E2_ENABLE_PIN not defined for this board."
956 976
   #endif
957
-#elif EXTRUDERS > 1
977
+#elif E_STEPPERS > 1
958 978
   #if !PIN_EXISTS(E1_STEP) || !PIN_EXISTS(E1_DIR) || !PIN_EXISTS(E1_ENABLE)
959 979
     #error "E1_STEP_PIN, E1_DIR_PIN, or E1_ENABLE_PIN not defined for this board."
960 980
   #endif
@@ -1031,17 +1051,13 @@ static_assert(1 >= 0
1031 1051
     #error "RGB_LED requires RGB_LED_R_PIN, RGB_LED_G_PIN, and RGB_LED_B_PIN."
1032 1052
   #elif ENABLED(RGBW_LED)
1033 1053
     #error "Please enable only one of RGB_LED and RGBW_LED."
1034
-  #elif ENABLED(BLINKM)
1035
-    #error "RGB_LED and BLINKM are currently incompatible (both use M150)."
1036 1054
   #endif
1037 1055
 #elif ENABLED(RGBW_LED)
1038 1056
   #if !(_RGB_TEST && PIN_EXISTS(RGB_LED_W))
1039 1057
     #error "RGBW_LED requires RGB_LED_R_PIN, RGB_LED_G_PIN, RGB_LED_B_PIN, and RGB_LED_W_PIN."
1040
-  #elif ENABLED(BLINKM)
1041
-    #error "RGBW_LED and BLINKM are currently incompatible (both use M150)."
1042 1058
   #endif
1043
-#elif DISABLED(BLINKM) && ENABLED(PRINTER_EVENT_LEDS)
1044
-  #error "PRINTER_EVENT_LEDS requires BLINKM, RGB_LED, or RGBW_LED."
1059
+#elif ENABLED(PRINTER_EVENT_LEDS) && DISABLED(BLINKM) && DISABLED(PCA9632)
1060
+  #error "PRINTER_EVENT_LEDS requires BLINKM, PCA9632, RGB_LED, or RGBW_LED."
1045 1061
 #endif
1046 1062
 
1047 1063
 /**
@@ -1083,6 +1099,9 @@ static_assert(1 >= 0
1083 1099
   #if ENABLED(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) && DISABLED(BQ_LCD_SMART_CONTROLLER)
1084 1100
     + 1
1085 1101
   #endif
1102
+  #if ENABLED(LCD_FOR_MELZI)
1103
+    + 1
1104
+  #endif
1086 1105
   #if ENABLED(CARTESIO_UI)
1087 1106
     + 1
1088 1107
   #endif
@@ -1110,7 +1129,7 @@ static_assert(1 >= 0
1110 1129
   #if ENABLED(MINIPANEL)
1111 1130
     + 1
1112 1131
   #endif
1113
-  #if ENABLED(REPRAPWORLD_KEYPAD) && DISABLED(CARTESIO_UI)
1132
+  #if ENABLED(REPRAPWORLD_KEYPAD) && DISABLED(CARTESIO_UI) && DISABLED(ANET_KEYPAD_LCD)
1114 1133
     + 1
1115 1134
   #endif
1116 1135
   #if ENABLED(RIGIDBOT_PANEL)
@@ -1146,25 +1165,80 @@ static_assert(1 >= 0
1146 1165
   #if ENABLED(OLED_PANEL_TINYBOY2)
1147 1166
     + 1
1148 1167
   #endif
1168
+  #if ENABLED(ANET_KEYPAD_LCD)
1169
+    + 1
1170
+  #endif
1149 1171
   , "Please select no more than one LCD controller option."
1150 1172
 );
1151 1173
 
1152
-#if ENABLED(HAVE_TMC2130) && !( \
1153
-       ENABLED(  X_IS_TMC2130 ) \
1154
-    || ENABLED( X2_IS_TMC2130 ) \
1155
-    || ENABLED(  Y_IS_TMC2130 ) \
1156
-    || ENABLED( Y2_IS_TMC2130 ) \
1157
-    || ENABLED(  Z_IS_TMC2130 ) \
1158
-    || ENABLED( Z2_IS_TMC2130 ) \
1159
-    || ENABLED( E0_IS_TMC2130 ) \
1160
-    || ENABLED( E1_IS_TMC2130 ) \
1161
-    || ENABLED( E2_IS_TMC2130 ) \
1162
-    || ENABLED( E3_IS_TMC2130 ) )
1163
-  #error "Choose at least one TMC2130 stepper."
1174
+/**
1175
+ * Make sure HAVE_TMCDRIVER is warranted
1176
+ */
1177
+#if ENABLED(HAVE_TMCDRIVER) && !( \
1178
+         ENABLED(  X_IS_TMC ) \
1179
+      || ENABLED( X2_IS_TMC ) \
1180
+      || ENABLED(  Y_IS_TMC ) \
1181
+      || ENABLED( Y2_IS_TMC ) \
1182
+      || ENABLED(  Z_IS_TMC ) \
1183
+      || ENABLED( Z2_IS_TMC ) \
1184
+      || ENABLED( E0_IS_TMC ) \
1185
+      || ENABLED( E1_IS_TMC ) \
1186
+      || ENABLED( E2_IS_TMC ) \
1187
+      || ENABLED( E3_IS_TMC ) \
1188
+      || ENABLED( E4_IS_TMC ) \
1189
+  )
1190
+  #error "HAVE_TMCDRIVER requires at least one TMC stepper to be set."
1191
+#endif
1192
+
1193
+/**
1194
+ * Make sure HAVE_TMC2130 is warranted
1195
+ */
1196
+#if ENABLED(HAVE_TMC2130)
1197
+  #if !( ENABLED(  X_IS_TMC2130 ) \
1198
+      || ENABLED( X2_IS_TMC2130 ) \
1199
+      || ENABLED(  Y_IS_TMC2130 ) \
1200
+      || ENABLED( Y2_IS_TMC2130 ) \
1201
+      || ENABLED(  Z_IS_TMC2130 ) \
1202
+      || ENABLED( Z2_IS_TMC2130 ) \
1203
+      || ENABLED( E0_IS_TMC2130 ) \
1204
+      || ENABLED( E1_IS_TMC2130 ) \
1205
+      || ENABLED( E2_IS_TMC2130 ) \
1206
+      || ENABLED( E3_IS_TMC2130 ) \
1207
+      || ENABLED( E4_IS_TMC2130 ) \
1208
+  )
1209
+    #error "HAVE_TMC2130 requires at least one TMC2130 stepper to be set."
1210
+  #elif ENABLED(HYBRID_THRESHOLD) && DISABLED(STEALTHCHOP)
1211
+    #error "Enable STEALTHCHOP to use HYBRID_THRESHOLD."
1212
+  #endif
1164 1213
 #endif
1165 1214
 
1166
-#if ENABLED(HYBRID_THRESHOLD) && DISABLED(STEALTHCHOP)
1167
-  #error "Enable STEALTHCHOP to use HYBRID_THRESHOLD."
1215
+/**
1216
+ * Make sure HAVE_L6470DRIVER is warranted
1217
+ */
1218
+#if ENABLED(HAVE_L6470DRIVER) && !( \
1219
+         ENABLED(  X_IS_L6470 ) \
1220
+      || ENABLED( X2_IS_L6470 ) \
1221
+      || ENABLED(  Y_IS_L6470 ) \
1222
+      || ENABLED( Y2_IS_L6470 ) \
1223
+      || ENABLED(  Z_IS_L6470 ) \
1224
+      || ENABLED( Z2_IS_L6470 ) \
1225
+      || ENABLED( E0_IS_L6470 ) \
1226
+      || ENABLED( E1_IS_L6470 ) \
1227
+      || ENABLED( E2_IS_L6470 ) \
1228
+      || ENABLED( E3_IS_L6470 ) \
1229
+      || ENABLED( E4_IS_L6470 ) \
1230
+  )
1231
+  #error "HAVE_L6470DRIVER requires at least one L6470 stepper to be set."
1232
+#endif
1233
+
1234
+/**
1235
+ * Digipot requirement
1236
+ */
1237
+#if ENABLED(DIGIPOT_MCP4018)
1238
+  #if !defined(DIGIPOTS_I2C_SDA_X) || !defined(DIGIPOTS_I2C_SDA_Y) || !defined(DIGIPOTS_I2C_SDA_Z) \
1239
+    || !defined(DIGIPOTS_I2C_SDA_E0) || !defined(DIGIPOTS_I2C_SDA_E1)
1240
+      #error "DIGIPOT_MCP4018 requires DIGIPOTS_I2C_SDA_* pins to be defined."
1241
+  #endif
1168 1242
 #endif
1169 1243
 
1170 1244
 /**

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

@@ -125,7 +125,7 @@ uint8_t const SD_CARD_TYPE_SDHC = 3;
125 125
  * define SOFTWARE_SPI to use bit-bang SPI
126 126
  */
127 127
 //------------------------------------------------------------------------------
128
-#if MEGA_SOFT_SPI && (defined(__AVR_ATmega1280__)||defined(__AVR_ATmega2560__))
128
+#if MEGA_SOFT_SPI
129 129
   #define SOFTWARE_SPI
130 130
 #elif USE_SOFTWARE_SPI
131 131
   #define SOFTWARE_SPI

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

@@ -523,7 +523,7 @@ struct directoryEntry {
523 523
   uint8_t  reservedNT;
524 524
           /**
525 525
            * The granularity of the seconds part of creationTime is 2 seconds
526
-           * so this field is a count of tenths of a second and its valid
526
+           * so this field is a count of tenths of a second and it's valid
527 527
            * value range is 0-199 inclusive. (WHG note - seems to be hundredths)
528 528
            */
529 529
   uint8_t  creationTimeTenths;

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

@@ -59,6 +59,7 @@
59 59
 #define BOARD_MELZI_MAKR3D      66   // Melzi with ATmega1284 (MaKr3d version)
60 60
 #define BOARD_AZTEEG_X3         67   // Azteeg X3
61 61
 #define BOARD_AZTEEG_X3_PRO     68   // Azteeg X3 Pro
62
+#define BOARD_ANET_10           69   // Anet 1.0 (Melzi clone)
62 63
 #define BOARD_ULTIMAKER         7    // Ultimaker
63 64
 #define BOARD_ULTIMAKER_OLD     71   // Ultimaker (Older electronics. Pre 1.5.4. This is rare)
64 65
 #define BOARD_ULTIMAIN_2        72   // Ultimainboard 2.x (Uses TEMP_SENSOR 20)
@@ -71,7 +72,7 @@
71 72
 #define BOARD_PRINTRBOARD_REVF  811  // Printrboard Revision F (AT90USB1286)
72 73
 #define BOARD_BRAINWAVE         82   // Brainwave (AT90USB646)
73 74
 #define BOARD_SAV_MKI           83   // SAV Mk-I (AT90USB1286)
74
-#define BOARD_TEENSY2           84   // Teensy++2.0 (AT90USB1286) - CLI compile: DEFINES=AT90USBxx_TEENSYPP_ASSIGNMENTS HARDWARE_MOTHERBOARD=84  make
75
+#define BOARD_TEENSY2           84   // Teensy++2.0 (AT90USB1286) - CLI compile: HARDWARE_MOTHERBOARD=84  make
75 76
 #define BOARD_BRAINWAVE_PRO     85   // Brainwave Pro (AT90USB1286)
76 77
 #define BOARD_GEN3_PLUS         9    // Gen3+
77 78
 #define BOARD_GEN3_MONOLITHIC   22   // Gen3 Monolithic Electronics

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

@@ -104,7 +104,7 @@ class Buzzer {
104 104
      * @param duration Duration of the tone in milliseconds
105 105
      * @param frequency Frequency of the tone in hertz
106 106
      */
107
-    void tone(uint16_t const &duration, uint16_t const &frequency = 0) {
107
+    void tone(const uint16_t &duration, const uint16_t &frequency = 0) {
108 108
       while (buffer.isFull()) {
109 109
         this->tick();
110 110
         thermalManager.manage_heater();

+ 16
- 16
Marlin/cardreader.cpp Просмотреть файл

@@ -109,7 +109,7 @@ void CardReader::lsDive(const char *prepend, SdFile parent, const char * const m
109 109
       SdFile dir;
110 110
       if (!dir.open(parent, lfilename, O_READ)) {
111 111
         if (lsAction == LS_SerialPrint) {
112
-          SERIAL_ECHO_START;
112
+          SERIAL_ECHO_START();
113 113
           SERIAL_ECHOPGM(MSG_SD_CANT_OPEN_SUBDIR);
114 114
           SERIAL_ECHOLN(lfilename);
115 115
         }
@@ -208,8 +208,8 @@ void CardReader::ls() {
208 208
       // Open the sub-item as the new dive parent
209 209
       SdFile dir;
210 210
       if (!dir.open(diveDir, segment, O_READ)) {
211
-        SERIAL_EOL;
212
-        SERIAL_ECHO_START;
211
+        SERIAL_EOL();
212
+        SERIAL_ECHO_START();
213 213
         SERIAL_ECHOPGM(MSG_SD_CANT_OPEN_SUBDIR);
214 214
         SERIAL_ECHO(segment);
215 215
         break;
@@ -220,7 +220,7 @@ void CardReader::ls() {
220 220
 
221 221
     } // while i<pathLen
222 222
 
223
-    SERIAL_EOL;
223
+    SERIAL_EOL();
224 224
   }
225 225
 
226 226
 #endif // LONG_FILENAME_HOST_SUPPORT
@@ -239,20 +239,20 @@ void CardReader::initsd() {
239 239
     #endif
240 240
   ) {
241 241
     //if (!card.init(SPI_HALF_SPEED,SDSS))
242
-    SERIAL_ECHO_START;
242
+    SERIAL_ECHO_START();
243 243
     SERIAL_ECHOLNPGM(MSG_SD_INIT_FAIL);
244 244
   }
245 245
   else if (!volume.init(&card)) {
246
-    SERIAL_ERROR_START;
246
+    SERIAL_ERROR_START();
247 247
     SERIAL_ERRORLNPGM(MSG_SD_VOL_INIT_FAIL);
248 248
   }
249 249
   else if (!root.openRoot(&volume)) {
250
-    SERIAL_ERROR_START;
250
+    SERIAL_ERROR_START();
251 251
     SERIAL_ERRORLNPGM(MSG_SD_OPENROOT_FAIL);
252 252
   }
253 253
   else {
254 254
     cardOK = true;
255
-    SERIAL_ECHO_START;
255
+    SERIAL_ECHO_START();
256 256
     SERIAL_ECHOLNPGM(MSG_SD_CARD_OK);
257 257
   }
258 258
   workDir = root;
@@ -331,7 +331,7 @@ void CardReader::openFile(char* name, bool read, bool push_current/*=false*/) {
331 331
   if (isFileOpen()) { //replacing current file by new file, or subfile call
332 332
     if (push_current) {
333 333
       if (file_subcall_ctr > SD_PROCEDURE_DEPTH - 1) {
334
-        SERIAL_ERROR_START;
334
+        SERIAL_ERROR_START();
335 335
         SERIAL_ERRORPGM("trying to call sub-gcode files with too many levels. MAX level is:");
336 336
         SERIAL_ERRORLN(SD_PROCEDURE_DEPTH);
337 337
         kill(PSTR(MSG_KILLED));
@@ -341,7 +341,7 @@ void CardReader::openFile(char* name, bool read, bool push_current/*=false*/) {
341 341
       // Store current filename and position
342 342
       getAbsFilename(proc_filenames[file_subcall_ctr]);
343 343
 
344
-      SERIAL_ECHO_START;
344
+      SERIAL_ECHO_START();
345 345
       SERIAL_ECHOPAIR("SUBROUTINE CALL target:\"", name);
346 346
       SERIAL_ECHOPAIR("\" parent:\"", proc_filenames[file_subcall_ctr]);
347 347
       SERIAL_ECHOLNPAIR("\" pos", sdpos);
@@ -358,7 +358,7 @@ void CardReader::openFile(char* name, bool read, bool push_current/*=false*/) {
358 358
   }
359 359
 
360 360
   if (doing) {
361
-    SERIAL_ECHO_START;
361
+    SERIAL_ECHO_START();
362 362
     SERIAL_ECHOPGM("Now ");
363 363
     SERIAL_ECHO(doing == 1 ? "doing" : "fresh");
364 364
     SERIAL_ECHOLNPAIR(" file: ", name);
@@ -421,14 +421,14 @@ void CardReader::openFile(char* name, bool read, bool push_current/*=false*/) {
421 421
     else {
422 422
       SERIAL_PROTOCOLPAIR(MSG_SD_OPEN_FILE_FAIL, fname);
423 423
       SERIAL_PROTOCOLCHAR('.');
424
-      SERIAL_EOL;
424
+      SERIAL_EOL();
425 425
     }
426 426
   }
427 427
   else { //write
428 428
     if (!file.open(curDir, fname, O_CREAT | O_APPEND | O_WRITE | O_TRUNC)) {
429 429
       SERIAL_PROTOCOLPAIR(MSG_SD_OPEN_FILE_FAIL, fname);
430 430
       SERIAL_PROTOCOLCHAR('.');
431
-      SERIAL_EOL;
431
+      SERIAL_EOL();
432 432
     }
433 433
     else {
434 434
       saving = true;
@@ -462,7 +462,7 @@ void CardReader::removeFile(char* name) {
462 462
         if (!myDir.open(curDir, subdirname, O_READ)) {
463 463
           SERIAL_PROTOCOLPAIR("open failed, File: ", subdirname);
464 464
           SERIAL_PROTOCOLCHAR('.');
465
-          SERIAL_EOL;
465
+          SERIAL_EOL();
466 466
           return;
467 467
         }
468 468
         else {
@@ -526,7 +526,7 @@ void CardReader::write_command(char *buf) {
526 526
   end[3] = '\0';
527 527
   file.write(begin);
528 528
   if (file.writeError) {
529
-    SERIAL_ERROR_START;
529
+    SERIAL_ERROR_START();
530 530
     SERIAL_ERRORLNPGM(MSG_SD_ERR_WRITE_TO_FILE);
531 531
   }
532 532
 }
@@ -617,7 +617,7 @@ void CardReader::chdir(const char * relpath) {
617 617
   if (workDir.isOpen()) parent = &workDir;
618 618
 
619 619
   if (!newfile.open(*parent, relpath, O_READ)) {
620
-    SERIAL_ECHO_START;
620
+    SERIAL_ECHO_START();
621 621
     SERIAL_ECHOPGM(MSG_SD_CANT_ENTER_SUBDIR);
622 622
     SERIAL_ECHOLN(relpath);
623 623
   }

+ 164
- 94
Marlin/configuration_store.cpp Просмотреть файл

@@ -36,13 +36,13 @@
36 36
  *
37 37
  */
38 38
 
39
-#define EEPROM_VERSION "V38"
39
+#define EEPROM_VERSION "V39"
40 40
 
41 41
 // Change EEPROM version if these are changed:
42 42
 #define EEPROM_OFFSET 100
43 43
 
44 44
 /**
45
- * V38 EEPROM Layout:
45
+ * V39 EEPROM Layout:
46 46
  *
47 47
  *  100  Version                                    (char x4)
48 48
  *  104  EEPROM CRC16                               (uint16_t)
@@ -140,24 +140,29 @@
140 140
  *  534  M200 T D  filament_size                    (float x5) (T0..3)
141 141
  *
142 142
  * HAVE_TMC2130:                                    20 bytes
143
- *  554  M906 X    stepperX current                 (uint16_t)
144
- *  556  M906 Y    stepperY current                 (uint16_t)
145
- *  558  M906 Z    stepperZ current                 (uint16_t)
146
- *  560  M906 X2   stepperX2 current                (uint16_t)
147
- *  562  M906 Y2   stepperY2 current                (uint16_t)
148
- *  564  M906 Z2   stepperZ2 current                (uint16_t)
149
- *  566  M906 E0   stepperE0 current                (uint16_t)
150
- *  568  M906 E1   stepperE1 current                (uint16_t)
151
- *  570  M906 E2   stepperE2 current                (uint16_t)
152
- *  572  M906 E3   stepperE3 current                (uint16_t)
153
- *  576  M906 E4   stepperE4 current                (uint16_t)
143
+ *  554  M906 X    Stepper X current                (uint16_t)
144
+ *  556  M906 Y    Stepper Y current                (uint16_t)
145
+ *  558  M906 Z    Stepper Z current                (uint16_t)
146
+ *  560  M906 X2   Stepper X2 current               (uint16_t)
147
+ *  562  M906 Y2   Stepper Y2 current               (uint16_t)
148
+ *  564  M906 Z2   Stepper Z2 current               (uint16_t)
149
+ *  566  M906 E0   Stepper E0 current               (uint16_t)
150
+ *  568  M906 E1   Stepper E1 current               (uint16_t)
151
+ *  570  M906 E2   Stepper E2 current               (uint16_t)
152
+ *  572  M906 E3   Stepper E3 current               (uint16_t)
153
+ *  576  M906 E4   Stepper E4 current               (uint16_t)
154 154
  *
155 155
  * LIN_ADVANCE:                                     8 bytes
156 156
  *  580  M900 K    extruder_advance_k               (float)
157 157
  *  584  M900 WHD  advance_ed_ratio                 (float)
158 158
  *
159
- *  588                                Minimum end-point
160
- * 1909 (588 + 36 + 9 + 288 + 988)     Maximum end-point
159
+ * HAS_MOTOR_CURRENT_PWM:
160
+ *  588  M907 X    Stepper XY current               (uint32_t)
161
+ *  592  M907 Z    Stepper Z current                (uint32_t)
162
+ *  596  M907 E    Stepper E current                (uint32_t)
163
+ *
164
+ *  600                                Minimum end-point
165
+ * 1921 (600 + 36 + 9 + 288 + 988)     Maximum end-point
161 166
  *
162 167
  * ========================================================================
163 168
  * meshes_begin (between max and min end-point, directly above)
@@ -177,6 +182,7 @@ MarlinSettings settings;
177 182
 #include "planner.h"
178 183
 #include "temperature.h"
179 184
 #include "ultralcd.h"
185
+#include "stepper.h"
180 186
 
181 187
 #if ENABLED(INCH_MODE_SUPPORT) || (ENABLED(ULTIPANEL) && ENABLED(TEMPERATURE_UNITS_SUPPORT))
182 188
   #include "gcode.h"
@@ -238,6 +244,10 @@ void MarlinSettings::postprocess() {
238 244
     refresh_bed_level();
239 245
     //set_bed_leveling_enabled(leveling_is_on);
240 246
   #endif
247
+
248
+  #if HAS_MOTOR_CURRENT_PWM
249
+    stepper.refresh_motor_power();
250
+  #endif
241 251
 }
242 252
 
243 253
 #if ENABLED(EEPROM_SETTINGS)
@@ -247,7 +257,7 @@ void MarlinSettings::postprocess() {
247 257
   #define EEPROM_SKIP(VAR) eeprom_index += sizeof(VAR)
248 258
   #define EEPROM_WRITE(VAR) write_data(eeprom_index, (uint8_t*)&VAR, sizeof(VAR), &working_crc)
249 259
   #define EEPROM_READ(VAR) read_data(eeprom_index, (uint8_t*)&VAR, sizeof(VAR), &working_crc)
250
-  #define EEPROM_ASSERT(TST,ERR) if (!(TST)) do{ SERIAL_ERROR_START; SERIAL_ERRORLNPGM(ERR); eeprom_read_error = true; }while(0)
260
+  #define EEPROM_ASSERT(TST,ERR) if (!(TST)) do{ SERIAL_ERROR_START(); SERIAL_ERRORLNPGM(ERR); eeprom_read_error = true; }while(0)
251 261
 
252 262
   const char version[4] = EEPROM_VERSION;
253 263
 
@@ -267,7 +277,7 @@ void MarlinSettings::postprocess() {
267 277
       if (v != eeprom_read_byte(p)) {
268 278
         eeprom_write_byte(p, v);
269 279
         if (eeprom_read_byte(p) != v) {
270
-          SERIAL_ECHO_START;
280
+          SERIAL_ECHO_START();
271 281
           SERIAL_ECHOLNPGM(MSG_ERR_EEPROM_WRITE);
272 282
           eeprom_error = true;
273 283
           return;
@@ -457,10 +467,10 @@ void MarlinSettings::postprocess() {
457 467
     #endif
458 468
 
459 469
     #if DISABLED(ULTIPANEL)
460
-      const int lcd_preheat_hotend_temp[2] = { PREHEAT_1_TEMP_HOTEND, PREHEAT_2_TEMP_HOTEND },
461
-                lcd_preheat_bed_temp[2] = { PREHEAT_1_TEMP_BED, PREHEAT_2_TEMP_BED },
462
-                lcd_preheat_fan_speed[2] = { PREHEAT_1_FAN_SPEED, PREHEAT_2_FAN_SPEED };
463
-    #endif // !ULTIPANEL
470
+      constexpr int lcd_preheat_hotend_temp[2] = { PREHEAT_1_TEMP_HOTEND, PREHEAT_2_TEMP_HOTEND },
471
+                    lcd_preheat_bed_temp[2] = { PREHEAT_1_TEMP_BED, PREHEAT_2_TEMP_BED },
472
+                    lcd_preheat_fan_speed[2] = { PREHEAT_1_FAN_SPEED, PREHEAT_2_FAN_SPEED };
473
+    #endif
464 474
 
465 475
     EEPROM_WRITE(lcd_preheat_hotend_temp);
466 476
     EEPROM_WRITE(lcd_preheat_bed_temp);
@@ -626,6 +636,13 @@ void MarlinSettings::postprocess() {
626 636
       EEPROM_WRITE(dummy);
627 637
     #endif
628 638
 
639
+    #if HAS_MOTOR_CURRENT_PWM
640
+      for (uint8_t q = 3; q--;) EEPROM_WRITE(stepper.motor_current_setting[q]);
641
+    #else
642
+      const uint32_t dummyui32 = 0;
643
+      for (uint8_t q = 3; q--;) EEPROM_WRITE(dummyui32);
644
+    #endif
645
+
629 646
     if (!eeprom_error) {
630 647
       const int eeprom_size = eeprom_index;
631 648
 
@@ -638,10 +655,12 @@ void MarlinSettings::postprocess() {
638 655
       EEPROM_WRITE(final_crc);
639 656
 
640 657
       // Report storage size
641
-      SERIAL_ECHO_START;
642
-      SERIAL_ECHOPAIR("Settings Stored (", eeprom_size - (EEPROM_OFFSET));
643
-      SERIAL_ECHOPAIR(" bytes; crc ", final_crc);
644
-      SERIAL_ECHOLNPGM(")");
658
+      #if ENABLED(EEPROM_CHITCHAT)
659
+        SERIAL_ECHO_START();
660
+        SERIAL_ECHOPAIR("Settings Stored (", eeprom_size - (EEPROM_OFFSET));
661
+        SERIAL_ECHOPAIR(" bytes; crc ", final_crc);
662
+        SERIAL_ECHOLNPGM(")");
663
+      #endif
645 664
     }
646 665
 
647 666
     #if ENABLED(UBL_SAVE_ACTIVE_ON_M500)
@@ -672,10 +691,12 @@ void MarlinSettings::postprocess() {
672 691
         stored_ver[0] = '?';
673 692
         stored_ver[1] = '\0';
674 693
       }
675
-      SERIAL_ECHO_START;
676
-      SERIAL_ECHOPGM("EEPROM version mismatch ");
677
-      SERIAL_ECHOPAIR("(EEPROM=", stored_ver);
678
-      SERIAL_ECHOLNPGM(" Marlin=" EEPROM_VERSION ")");
694
+      #if ENABLED(EEPROM_CHITCHAT)
695
+        SERIAL_ECHO_START();
696
+        SERIAL_ECHOPGM("EEPROM version mismatch ");
697
+        SERIAL_ECHOPAIR("(EEPROM=", stored_ver);
698
+        SERIAL_ECHOLNPGM(" Marlin=" EEPROM_VERSION ")");
699
+      #endif
679 700
       reset();
680 701
     }
681 702
     else {
@@ -979,21 +1000,32 @@ void MarlinSettings::postprocess() {
979 1000
         EEPROM_READ(dummy);
980 1001
       #endif
981 1002
 
1003
+      #if HAS_MOTOR_CURRENT_PWM
1004
+        for (uint8_t q = 3; q--;) EEPROM_READ(stepper.motor_current_setting[q]);
1005
+      #else
1006
+        uint32_t dummyui32;
1007
+        for (uint8_t q = 3; q--;) EEPROM_READ(dummyui32);
1008
+      #endif
1009
+
982 1010
       if (working_crc == stored_crc) {
983
-          postprocess();
984
-          SERIAL_ECHO_START;
1011
+        postprocess();
1012
+        #if ENABLED(EEPROM_CHITCHAT)
1013
+          SERIAL_ECHO_START();
985 1014
           SERIAL_ECHO(version);
986 1015
           SERIAL_ECHOPAIR(" stored settings retrieved (", eeprom_index - (EEPROM_OFFSET));
987 1016
           SERIAL_ECHOPAIR(" bytes; crc ", working_crc);
988 1017
           SERIAL_ECHOLNPGM(")");
1018
+        #endif
989 1019
       }
990 1020
       else {
991
-        SERIAL_ERROR_START;
992
-        SERIAL_ERRORPGM("EEPROM CRC mismatch - (stored) ");
993
-        SERIAL_ERROR(stored_crc);
994
-        SERIAL_ERRORPGM(" != ");
995
-        SERIAL_ERROR(working_crc);
996
-        SERIAL_ERRORLNPGM(" (calculated)!");
1021
+        #if ENABLED(EEPROM_CHITCHAT)
1022
+          SERIAL_ERROR_START();
1023
+          SERIAL_ERRORPGM("EEPROM CRC mismatch - (stored) ");
1024
+          SERIAL_ERROR(stored_crc);
1025
+          SERIAL_ERRORPGM(" != ");
1026
+          SERIAL_ERROR(working_crc);
1027
+          SERIAL_ERRORLNPGM(" (calculated)!");
1028
+        #endif
997 1029
         reset();
998 1030
       }
999 1031
 
@@ -1004,30 +1036,38 @@ void MarlinSettings::postprocess() {
1004 1036
         ubl.report_state();
1005 1037
 
1006 1038
         if (!ubl.sanity_check()) {
1007
-          SERIAL_EOL;
1008
-          ubl.echo_name();
1009
-          SERIAL_ECHOLNPGM(" initialized.\n");
1039
+          SERIAL_EOL();
1040
+          #if ENABLED(EEPROM_CHITCHAT)
1041
+            ubl.echo_name();
1042
+            SERIAL_ECHOLNPGM(" initialized.\n");
1043
+          #endif
1010 1044
         }
1011 1045
         else {
1012
-          SERIAL_PROTOCOLPGM("?Can't enable ");
1013
-          ubl.echo_name();
1014
-          SERIAL_PROTOCOLLNPGM(".");
1046
+          #if ENABLED(EEPROM_CHITCHAT)
1047
+            SERIAL_PROTOCOLPGM("?Can't enable ");
1048
+            ubl.echo_name();
1049
+            SERIAL_PROTOCOLLNPGM(".");
1050
+          #endif
1015 1051
           ubl.reset();
1016 1052
         }
1017 1053
 
1018 1054
         if (ubl.state.storage_slot >= 0) {
1019 1055
           load_mesh(ubl.state.storage_slot);
1020
-          SERIAL_ECHOPAIR("Mesh ", ubl.state.storage_slot);
1021
-          SERIAL_ECHOLNPGM(" loaded from storage.");
1056
+          #if ENABLED(EEPROM_CHITCHAT)
1057
+            SERIAL_ECHOPAIR("Mesh ", ubl.state.storage_slot);
1058
+            SERIAL_ECHOLNPGM(" loaded from storage.");
1059
+          #endif
1022 1060
         }
1023 1061
         else {
1024 1062
           ubl.reset();
1025
-          SERIAL_ECHOLNPGM("UBL System reset()");
1063
+          #if ENABLED(EEPROM_CHITCHAT)
1064
+            SERIAL_ECHOLNPGM("UBL System reset()");
1065
+          #endif
1026 1066
         }
1027 1067
       #endif
1028 1068
     }
1029 1069
 
1030
-    #if ENABLED(EEPROM_CHITCHAT)
1070
+    #if ENABLED(EEPROM_CHITCHAT) && DISABLED(DISABLE_M503)
1031 1071
       report();
1032 1072
     #endif
1033 1073
 
@@ -1036,11 +1076,13 @@ void MarlinSettings::postprocess() {
1036 1076
 
1037 1077
   #if ENABLED(AUTO_BED_LEVELING_UBL)
1038 1078
 
1039
-    void ubl_invalid_slot(const int s) {
1040
-      SERIAL_PROTOCOLLNPGM("?Invalid slot.");
1041
-      SERIAL_PROTOCOL(s);
1042
-      SERIAL_PROTOCOLLNPGM(" mesh slots available.");
1043
-    }
1079
+    #if ENABLED(EEPROM_CHITCHAT)
1080
+      void ubl_invalid_slot(const int s) {
1081
+        SERIAL_PROTOCOLLNPGM("?Invalid slot.");
1082
+        SERIAL_PROTOCOL(s);
1083
+        SERIAL_PROTOCOLLNPGM(" mesh slots available.");
1084
+      }
1085
+    #endif
1044 1086
 
1045 1087
     int MarlinSettings::calc_num_meshes() {
1046 1088
       //obviously this will get more sophisticated once we've added an actual MAT
@@ -1055,11 +1097,13 @@ void MarlinSettings::postprocess() {
1055 1097
       #if ENABLED(AUTO_BED_LEVELING_UBL)
1056 1098
         const int a = calc_num_meshes();
1057 1099
         if (!WITHIN(slot, 0, a - 1)) {
1058
-          ubl_invalid_slot(a);
1059
-          SERIAL_PROTOCOLPAIR("E2END=", E2END);
1060
-          SERIAL_PROTOCOLPAIR(" meshes_end=", meshes_end);
1061
-          SERIAL_PROTOCOLLNPAIR(" slot=", slot);
1062
-          SERIAL_EOL;
1100
+          #if ENABLED(EEPROM_CHITCHAT)
1101
+            ubl_invalid_slot(a);
1102
+            SERIAL_PROTOCOLPAIR("E2END=", E2END);
1103
+            SERIAL_PROTOCOLPAIR(" meshes_end=", meshes_end);
1104
+            SERIAL_PROTOCOLLNPAIR(" slot=", slot);
1105
+            SERIAL_EOL();
1106
+          #endif
1063 1107
           return;
1064 1108
         }
1065 1109
 
@@ -1070,7 +1114,9 @@ void MarlinSettings::postprocess() {
1070 1114
 
1071 1115
         // Write crc to MAT along with other data, or just tack on to the beginning or end
1072 1116
 
1073
-        SERIAL_PROTOCOLLNPAIR("Mesh saved in slot ", slot);
1117
+        #if ENABLED(EEPROM_CHITCHAT)
1118
+          SERIAL_PROTOCOLLNPAIR("Mesh saved in slot ", slot);
1119
+        #endif
1074 1120
 
1075 1121
       #else
1076 1122
 
@@ -1086,7 +1132,9 @@ void MarlinSettings::postprocess() {
1086 1132
         const int16_t a = settings.calc_num_meshes();
1087 1133
 
1088 1134
         if (!WITHIN(slot, 0, a - 1)) {
1089
-          ubl_invalid_slot(a);
1135
+          #if ENABLED(EEPROM_CHITCHAT)
1136
+            ubl_invalid_slot(a);
1137
+          #endif
1090 1138
           return;
1091 1139
         }
1092 1140
 
@@ -1097,7 +1145,9 @@ void MarlinSettings::postprocess() {
1097 1145
 
1098 1146
         // Compare crc with crc from MAT, or read from end
1099 1147
 
1100
-        SERIAL_PROTOCOLLNPAIR("Mesh loaded from slot ", slot);
1148
+        #if ENABLED(EEPROM_CHITCHAT)
1149
+          SERIAL_PROTOCOLLNPAIR("Mesh loaded from slot ", slot);
1150
+        #endif
1101 1151
 
1102 1152
       #else
1103 1153
 
@@ -1114,7 +1164,7 @@ void MarlinSettings::postprocess() {
1114 1164
 #else // !EEPROM_SETTINGS
1115 1165
 
1116 1166
   bool MarlinSettings::save() {
1117
-    SERIAL_ERROR_START;
1167
+    SERIAL_ERROR_START();
1118 1168
     SERIAL_ERRORLNPGM("EEPROM disabled");
1119 1169
     return false;
1120 1170
   }
@@ -1125,12 +1175,12 @@ void MarlinSettings::postprocess() {
1125 1175
  * M502 - Reset Configuration
1126 1176
  */
1127 1177
 void MarlinSettings::reset() {
1128
-  const float tmp1[] = DEFAULT_AXIS_STEPS_PER_UNIT, tmp2[] = DEFAULT_MAX_FEEDRATE;
1129
-  const uint32_t tmp3[] = DEFAULT_MAX_ACCELERATION;
1178
+  static const float tmp1[] PROGMEM = DEFAULT_AXIS_STEPS_PER_UNIT, tmp2[] PROGMEM = DEFAULT_MAX_FEEDRATE;
1179
+  static const uint32_t tmp3[] PROGMEM = DEFAULT_MAX_ACCELERATION;
1130 1180
   LOOP_XYZE_N(i) {
1131
-    planner.axis_steps_per_mm[i]          = tmp1[i < COUNT(tmp1) ? i : COUNT(tmp1) - 1];
1132
-    planner.max_feedrate_mm_s[i]          = tmp2[i < COUNT(tmp2) ? i : COUNT(tmp2) - 1];
1133
-    planner.max_acceleration_mm_per_s2[i] = tmp3[i < COUNT(tmp3) ? i : COUNT(tmp3) - 1];
1181
+    planner.axis_steps_per_mm[i]          = pgm_read_float(&tmp1[i < COUNT(tmp1) ? i : COUNT(tmp1) - 1]);
1182
+    planner.max_feedrate_mm_s[i]          = pgm_read_float(&tmp2[i < COUNT(tmp2) ? i : COUNT(tmp2) - 1]);
1183
+    planner.max_acceleration_mm_per_s2[i] = pgm_read_dword_near(&tmp3[i < COUNT(tmp3) ? i : COUNT(tmp3) - 1]);
1134 1184
   }
1135 1185
 
1136 1186
   planner.acceleration = DEFAULT_ACCELERATION;
@@ -1192,7 +1242,7 @@ void MarlinSettings::reset() {
1192 1242
 
1193 1243
   #elif ENABLED(Z_DUAL_ENDSTOPS)
1194 1244
 
1195
-    float z_endstop_adj =
1245
+    z_endstop_adj =
1196 1246
       #ifdef Z_DUAL_ENDSTOPS_ADJUSTMENT
1197 1247
         Z_DUAL_ENDSTOPS_ADJUSTMENT
1198 1248
       #else
@@ -1265,9 +1315,9 @@ void MarlinSettings::reset() {
1265 1315
 
1266 1316
   endstops.enable_globally(
1267 1317
     #if ENABLED(ENDSTOPS_ALWAYS_ON_DEFAULT)
1268
-      (true)
1318
+      true
1269 1319
     #else
1270
-      (false)
1320
+      false
1271 1321
     #endif
1272 1322
   );
1273 1323
 
@@ -1309,19 +1359,27 @@ void MarlinSettings::reset() {
1309 1359
     planner.advance_ed_ratio = LIN_ADVANCE_E_D_RATIO;
1310 1360
   #endif
1311 1361
 
1362
+  #if HAS_MOTOR_CURRENT_PWM
1363
+    uint32_t tmp_motor_current_setting[3] = PWM_MOTOR_CURRENT;
1364
+    for (uint8_t q = 3; q--;)
1365
+      stepper.digipot_current(q, (stepper.motor_current_setting[q] = tmp_motor_current_setting[q]));
1366
+  #endif
1367
+
1312 1368
   #if ENABLED(AUTO_BED_LEVELING_UBL)
1313 1369
     ubl.reset();
1314 1370
   #endif
1315 1371
 
1316 1372
   postprocess();
1317 1373
 
1318
-  SERIAL_ECHO_START;
1319
-  SERIAL_ECHOLNPGM("Hardcoded Default Settings Loaded");
1374
+  #if ENABLED(EEPROM_CHITCHAT)
1375
+    SERIAL_ECHO_START();
1376
+    SERIAL_ECHOLNPGM("Hardcoded Default Settings Loaded");
1377
+  #endif
1320 1378
 }
1321 1379
 
1322 1380
 #if DISABLED(DISABLE_M503)
1323 1381
 
1324
-  #define CONFIG_ECHO_START do{ if (!forReplay) SERIAL_ECHO_START; }while(0)
1382
+  #define CONFIG_ECHO_START do{ if (!forReplay) SERIAL_ECHO_START(); }while(0)
1325 1383
 
1326 1384
   /**
1327 1385
    * M503 - Report current settings in RAM
@@ -1365,7 +1423,7 @@ void MarlinSettings::reset() {
1365 1423
 
1366 1424
     #endif
1367 1425
 
1368
-    SERIAL_EOL;
1426
+    SERIAL_EOL();
1369 1427
 
1370 1428
     /**
1371 1429
      * Volumetric extrusion M200
@@ -1374,30 +1432,30 @@ void MarlinSettings::reset() {
1374 1432
       CONFIG_ECHO_START;
1375 1433
       SERIAL_ECHOPGM("Filament settings:");
1376 1434
       if (volumetric_enabled)
1377
-        SERIAL_EOL;
1435
+        SERIAL_EOL();
1378 1436
       else
1379 1437
         SERIAL_ECHOLNPGM(" Disabled");
1380 1438
     }
1381 1439
 
1382 1440
     CONFIG_ECHO_START;
1383 1441
     SERIAL_ECHOPAIR("  M200 D", filament_size[0]);
1384
-    SERIAL_EOL;
1442
+    SERIAL_EOL();
1385 1443
     #if EXTRUDERS > 1
1386 1444
       CONFIG_ECHO_START;
1387 1445
       SERIAL_ECHOPAIR("  M200 T1 D", filament_size[1]);
1388
-      SERIAL_EOL;
1446
+      SERIAL_EOL();
1389 1447
       #if EXTRUDERS > 2
1390 1448
         CONFIG_ECHO_START;
1391 1449
         SERIAL_ECHOPAIR("  M200 T2 D", filament_size[2]);
1392
-        SERIAL_EOL;
1450
+        SERIAL_EOL();
1393 1451
         #if EXTRUDERS > 3
1394 1452
           CONFIG_ECHO_START;
1395 1453
           SERIAL_ECHOPAIR("  M200 T3 D", filament_size[3]);
1396
-          SERIAL_EOL;
1454
+          SERIAL_EOL();
1397 1455
           #if EXTRUDERS > 4
1398 1456
             CONFIG_ECHO_START;
1399 1457
             SERIAL_ECHOPAIR("  M200 T4 D", filament_size[4]);
1400
-            SERIAL_EOL;
1458
+            SERIAL_EOL();
1401 1459
           #endif // EXTRUDERS > 4
1402 1460
         #endif // EXTRUDERS > 3
1403 1461
       #endif // EXTRUDERS > 2
@@ -1419,7 +1477,7 @@ void MarlinSettings::reset() {
1419 1477
     #if DISABLED(DISTINCT_E_FACTORS)
1420 1478
       SERIAL_ECHOPAIR(" E", VOLUMETRIC_UNIT(planner.axis_steps_per_mm[E_AXIS]));
1421 1479
     #endif
1422
-    SERIAL_EOL;
1480
+    SERIAL_EOL();
1423 1481
     #if ENABLED(DISTINCT_E_FACTORS)
1424 1482
       CONFIG_ECHO_START;
1425 1483
       for (uint8_t i = 0; i < E_STEPPERS; i++) {
@@ -1439,7 +1497,7 @@ void MarlinSettings::reset() {
1439 1497
     #if DISABLED(DISTINCT_E_FACTORS)
1440 1498
       SERIAL_ECHOPAIR(" E", VOLUMETRIC_UNIT(planner.max_feedrate_mm_s[E_AXIS]));
1441 1499
     #endif
1442
-    SERIAL_EOL;
1500
+    SERIAL_EOL();
1443 1501
     #if ENABLED(DISTINCT_E_FACTORS)
1444 1502
       CONFIG_ECHO_START;
1445 1503
       for (uint8_t i = 0; i < E_STEPPERS; i++) {
@@ -1459,7 +1517,7 @@ void MarlinSettings::reset() {
1459 1517
     #if DISABLED(DISTINCT_E_FACTORS)
1460 1518
       SERIAL_ECHOPAIR(" E", VOLUMETRIC_UNIT(planner.max_acceleration_mm_per_s2[E_AXIS]));
1461 1519
     #endif
1462
-    SERIAL_EOL;
1520
+    SERIAL_EOL();
1463 1521
     #if ENABLED(DISTINCT_E_FACTORS)
1464 1522
       CONFIG_ECHO_START;
1465 1523
       for (uint8_t i = 0; i < E_STEPPERS; i++) {
@@ -1514,7 +1572,7 @@ void MarlinSettings::reset() {
1514 1572
         #if ENABLED(DUAL_X_CARRIAGE) || ENABLED(SWITCHING_NOZZLE)
1515 1573
           SERIAL_ECHOPAIR(" Z", LINEAR_UNIT(hotend_offset[Z_AXIS][e]));
1516 1574
         #endif
1517
-        SERIAL_EOL;
1575
+        SERIAL_EOL();
1518 1576
       }
1519 1577
     #endif
1520 1578
 
@@ -1529,7 +1587,7 @@ void MarlinSettings::reset() {
1529 1587
       #if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
1530 1588
         SERIAL_ECHOPAIR(" Z", LINEAR_UNIT(planner.z_fade_height));
1531 1589
       #endif
1532
-      SERIAL_EOL;
1590
+      SERIAL_EOL();
1533 1591
       for (uint8_t py = 0; py < GRID_MAX_POINTS_Y; py++) {
1534 1592
         for (uint8_t px = 0; px < GRID_MAX_POINTS_X; px++) {
1535 1593
           CONFIG_ECHO_START;
@@ -1537,7 +1595,7 @@ void MarlinSettings::reset() {
1537 1595
           SERIAL_ECHOPAIR(" Y", (int)py + 1);
1538 1596
           SERIAL_ECHOPGM(" Z");
1539 1597
           SERIAL_PROTOCOL_F(LINEAR_UNIT(mbl.z_values[px][py]), 5);
1540
-          SERIAL_EOL;
1598
+          SERIAL_EOL();
1541 1599
         }
1542 1600
       }
1543 1601
 
@@ -1553,17 +1611,17 @@ void MarlinSettings::reset() {
1553 1611
       #if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
1554 1612
         SERIAL_ECHOPAIR(" Z", planner.z_fade_height);
1555 1613
       #endif
1556
-      SERIAL_EOL;
1614
+      SERIAL_EOL();
1557 1615
 
1558 1616
       if (!forReplay) {
1559
-        SERIAL_EOL;
1617
+        SERIAL_EOL();
1560 1618
         ubl.report_state();
1561 1619
 
1562 1620
         SERIAL_ECHOLNPAIR("\nActive Mesh Slot: ", ubl.state.storage_slot);
1563 1621
 
1564 1622
         SERIAL_ECHOPGM("z_offset: ");
1565 1623
         SERIAL_ECHO_F(ubl.state.z_offset, 6);
1566
-        SERIAL_EOL;
1624
+        SERIAL_EOL();
1567 1625
 
1568 1626
         SERIAL_ECHOPAIR("EEPROM can hold ", calc_num_meshes());
1569 1627
         SERIAL_ECHOLNPGM(" meshes.\n");
@@ -1580,7 +1638,7 @@ void MarlinSettings::reset() {
1580 1638
       #if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
1581 1639
         SERIAL_ECHOPAIR(" Z", LINEAR_UNIT(planner.z_fade_height));
1582 1640
       #endif
1583
-      SERIAL_EOL;
1641
+      SERIAL_EOL();
1584 1642
 
1585 1643
     #endif
1586 1644
 
@@ -1606,7 +1664,7 @@ void MarlinSettings::reset() {
1606 1664
       SERIAL_ECHOPAIR(" X", LINEAR_UNIT(delta_tower_angle_trim[A_AXIS]));
1607 1665
       SERIAL_ECHOPAIR(" Y", LINEAR_UNIT(delta_tower_angle_trim[B_AXIS]));
1608 1666
       SERIAL_ECHOPAIR(" Z", 0.00);
1609
-      SERIAL_EOL;
1667
+      SERIAL_EOL();
1610 1668
     #elif ENABLED(Z_DUAL_ENDSTOPS)
1611 1669
       if (!forReplay) {
1612 1670
         CONFIG_ECHO_START;
@@ -1649,7 +1707,7 @@ void MarlinSettings::reset() {
1649 1707
                 SERIAL_ECHOPAIR(" C", PID_PARAM(Kc, e));
1650 1708
                 if (e == 0) SERIAL_ECHOPAIR(" L", lpq_len);
1651 1709
               #endif
1652
-              SERIAL_EOL;
1710
+              SERIAL_EOL();
1653 1711
             }
1654 1712
           }
1655 1713
           else
@@ -1664,7 +1722,7 @@ void MarlinSettings::reset() {
1664 1722
             SERIAL_ECHOPAIR(" C", PID_PARAM(Kc, 0));
1665 1723
             SERIAL_ECHOPAIR(" L", lpq_len);
1666 1724
           #endif
1667
-          SERIAL_EOL;
1725
+          SERIAL_EOL();
1668 1726
         }
1669 1727
       #endif // PIDTEMP
1670 1728
 
@@ -1673,7 +1731,7 @@ void MarlinSettings::reset() {
1673 1731
         SERIAL_ECHOPAIR("  M304 P", thermalManager.bedKp);
1674 1732
         SERIAL_ECHOPAIR(" I", unscalePID_i(thermalManager.bedKi));
1675 1733
         SERIAL_ECHOPAIR(" D", unscalePID_d(thermalManager.bedKd));
1676
-        SERIAL_EOL;
1734
+        SERIAL_EOL();
1677 1735
       #endif
1678 1736
 
1679 1737
     #endif // PIDTEMP || PIDTEMPBED
@@ -1773,7 +1831,7 @@ void MarlinSettings::reset() {
1773 1831
       #if ENABLED(E3_IS_TMC2130)
1774 1832
         SERIAL_ECHOPAIR(" E3", stepperE3.getCurrent());
1775 1833
       #endif
1776
-      SERIAL_EOL;
1834
+      SERIAL_EOL();
1777 1835
     #endif
1778 1836
 
1779 1837
     /**
@@ -1788,6 +1846,18 @@ void MarlinSettings::reset() {
1788 1846
       SERIAL_ECHOPAIR("  M900 K", planner.extruder_advance_k);
1789 1847
       SERIAL_ECHOLNPAIR(" R", planner.advance_ed_ratio);
1790 1848
     #endif
1849
+
1850
+    #if HAS_MOTOR_CURRENT_PWM
1851
+      CONFIG_ECHO_START;
1852
+      if (!forReplay) {
1853
+        SERIAL_ECHOLNPGM("Stepper motor currents:");
1854
+        CONFIG_ECHO_START;
1855
+      }
1856
+      SERIAL_ECHOPAIR("  M907 X", stepper.motor_current_setting[0]);
1857
+      SERIAL_ECHOPAIR(" Z", stepper.motor_current_setting[1]);
1858
+      SERIAL_ECHOPAIR(" E", stepper.motor_current_setting[2]);
1859
+      SERIAL_EOL();
1860
+    #endif
1791 1861
   }
1792 1862
 
1793 1863
 #endif // !DISABLE_M503

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

@@ -55,7 +55,7 @@ class MarlinSettings {
55 55
       static void report(bool forReplay=false);
56 56
     #else
57 57
       FORCE_INLINE
58
-      static void report(bool forReplay=false) { }
58
+      static void report(bool forReplay=false) { UNUSED(forReplay); }
59 59
     #endif
60 60
 
61 61
   private:

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

@@ -114,13 +114,13 @@ uint16_t mcp4728_getVout(uint8_t channel) {
114 114
 /**
115 115
  * Returns DAC values as a 0-100 percentage of drive strength
116 116
  */
117
-uint16_t mcp4728_getDrvPct(uint8_t channel) { return uint16_t(100.0 * mcp4728_values[channel] / (DAC_STEPPER_MAX) + 0.5); }
117
+uint8_t mcp4728_getDrvPct(uint8_t channel) { return uint8_t(100.0 * mcp4728_values[channel] / (DAC_STEPPER_MAX) + 0.5); }
118 118
 
119 119
 /**
120 120
  * Receives all Drive strengths as 0-100 percent values, updates
121 121
  * DAC Values array and calls fastwrite to update the DAC.
122 122
  */
123
-void mcp4728_setDrvPct(uint16_t pct[XYZE]) {
123
+void mcp4728_setDrvPct(uint8_t pct[XYZE]) {
124 124
   LOOP_XYZE(i) mcp4728_values[i] = 0.01 * pct[i] * (DAC_STEPPER_MAX);
125 125
   mcp4728_fastWrite();
126 126
 }

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

@@ -59,8 +59,8 @@ uint8_t mcp4728_setGain_all(uint8_t value);
59 59
 uint16_t mcp4728_getValue(uint8_t channel);
60 60
 uint8_t mcp4728_fastWrite();
61 61
 uint8_t mcp4728_simpleCommand(byte simpleCommand);
62
-uint16_t mcp4728_getDrvPct(uint8_t channel);
63
-void mcp4728_setDrvPct(uint16_t pct[XYZE]);
62
+uint8_t mcp4728_getDrvPct(uint8_t channel);
63
+void mcp4728_setDrvPct(uint8_t pct[XYZE]);
64 64
 
65 65
 #endif
66 66
 #endif // DAC_MCP4728_H

+ 39
- 24
Marlin/digipot_mcp4018.cpp Просмотреть файл

@@ -24,6 +24,7 @@
24 24
 
25 25
 #if ENABLED(DIGIPOT_I2C) && ENABLED(DIGIPOT_MCP4018)
26 26
 
27
+#include "enum.h"
27 28
 #include "Stream.h"
28 29
 #include "utility/twi.h"
29 30
 #include <SlowSoftI2CMaster.h>  //https://github.com/stawel/SlowSoftI2CMaster
@@ -33,36 +34,52 @@
33 34
 #define DIGIPOT_I2C_ADDRESS             0x2F
34 35
 
35 36
 #define DIGIPOT_A4988_Rsx               0.250
36
-#define DIGIPOT_A4988_Vrefmax           5.0
37
+#define DIGIPOT_A4988_Vrefmax           1.666
37 38
 #define DIGIPOT_A4988_MAX_VALUE         127
38 39
 
39 40
 #define DIGIPOT_A4988_Itripmax(Vref)    ((Vref)/(8.0*DIGIPOT_A4988_Rsx))
40 41
 
41
-#define DIGIPOT_A4988_FACTOR            (DIGIPOT_A4988_MAX_VALUE/DIGIPOT_A4988_Itripmax(DIGIPOT_A4988_Vrefmax))
42
-//TODO: MAX_CURRENT -0.5A ?? (currently set to 2A, max possible current 2.5A)
43
-#define DIGIPOT_A4988_MAX_CURRENT       (DIGIPOT_A4988_Itripmax(DIGIPOT_A4988_Vrefmax) - 0.5)
42
+#define DIGIPOT_A4988_FACTOR            ((DIGIPOT_A4988_MAX_VALUE)/DIGIPOT_A4988_Itripmax(DIGIPOT_A4988_Vrefmax))
43
+#define DIGIPOT_A4988_MAX_CURRENT       2.0
44 44
 
45
-static byte current_to_wiper(float current) {
46
-  return byte(ceil(float((DIGIPOT_A4988_FACTOR * current))));
45
+static byte current_to_wiper(const float current) {
46
+  const int16_t value = ceil(float(DIGIPOT_A4988_FACTOR) * current);
47
+  return byte(constrain(value, 0, DIGIPOT_A4988_MAX_VALUE));
47 48
 }
48 49
 
49
-static uint8_t sda_pins[DIGIPOT_I2C_NUM_CHANNELS] = {
50
-  DIGIPOTS_I2C_SDA_X,
51
-  DIGIPOTS_I2C_SDA_Y,
52
-  DIGIPOTS_I2C_SDA_Z,
53
-  DIGIPOTS_I2C_SDA_E0,
54
-  DIGIPOTS_I2C_SDA_E1,
50
+const uint8_t sda_pins[DIGIPOT_I2C_NUM_CHANNELS] = {
51
+  DIGIPOTS_I2C_SDA_X
52
+  #if DIGIPOT_I2C_NUM_CHANNELS > 1
53
+    , DIGIPOTS_I2C_SDA_Y
54
+    #if DIGIPOT_I2C_NUM_CHANNELS > 2
55
+      , DIGIPOTS_I2C_SDA_Z
56
+      #if DIGIPOT_I2C_NUM_CHANNELS > 3
57
+        , DIGIPOTS_I2C_SDA_E0
58
+        #if DIGIPOT_I2C_NUM_CHANNELS > 4
59
+          , DIGIPOTS_I2C_SDA_E1
60
+        #endif
61
+      #endif
62
+    #endif
63
+  #endif
55 64
 };
56 65
 
57 66
 static SlowSoftI2CMaster pots[DIGIPOT_I2C_NUM_CHANNELS] = {
58
-  SlowSoftI2CMaster { sda_pins[0], DIGIPOTS_I2C_SCL },
59
-  SlowSoftI2CMaster { sda_pins[1], DIGIPOTS_I2C_SCL },
60
-  SlowSoftI2CMaster { sda_pins[2], DIGIPOTS_I2C_SCL },
61
-  SlowSoftI2CMaster { sda_pins[3], DIGIPOTS_I2C_SCL },
62
-  SlowSoftI2CMaster { sda_pins[4], DIGIPOTS_I2C_SCL }
67
+  SlowSoftI2CMaster { sda_pins[X_AXIS], DIGIPOTS_I2C_SCL }
68
+  #if DIGIPOT_I2C_NUM_CHANNELS > 1
69
+    , SlowSoftI2CMaster { sda_pins[Y_AXIS], DIGIPOTS_I2C_SCL }
70
+    #if DIGIPOT_I2C_NUM_CHANNELS > 2
71
+      , SlowSoftI2CMaster { sda_pins[Z_AXIS], DIGIPOTS_I2C_SCL }
72
+      #if DIGIPOT_I2C_NUM_CHANNELS > 3
73
+        , SlowSoftI2CMaster { sda_pins[E_AXIS], DIGIPOTS_I2C_SCL }
74
+        #if DIGIPOT_I2C_NUM_CHANNELS > 4
75
+          , SlowSoftI2CMaster { sda_pins[E_AXIS + 1], DIGIPOTS_I2C_SCL }
76
+        #endif
77
+      #endif
78
+    #endif
79
+  #endif
63 80
 };
64 81
 
65
-static void i2c_send(int channel, byte v) {
82
+static void i2c_send(const uint8_t channel, const byte v) {
66 83
   if (WITHIN(channel, 0, DIGIPOT_I2C_NUM_CHANNELS - 1)) {
67 84
     pots[channel].i2c_start(((DIGIPOT_I2C_ADDRESS) << 1) | I2C_WRITE);
68 85
     pots[channel].i2c_write(v);
@@ -71,21 +88,19 @@ static void i2c_send(int channel, byte v) {
71 88
 }
72 89
 
73 90
 // This is for the MCP4018 I2C based digipot
74
-void digipot_i2c_set_current(int channel, float current) {
75
-  current = min(max(current, 0.0f), float(DIGIPOT_A4988_MAX_CURRENT));
76
-
77
-  i2c_send(channel, current_to_wiper(current));
91
+void digipot_i2c_set_current(uint8_t channel, float current) {
92
+  i2c_send(channel, current_to_wiper(min(max(current, 0.0f), float(DIGIPOT_A4988_MAX_CURRENT))));
78 93
 }
79 94
 
80 95
 void digipot_i2c_init() {
81
-  const float digipot_motor_current[] = DIGIPOT_I2C_MOTOR_CURRENTS;
96
+  static const float digipot_motor_current[] PROGMEM = DIGIPOT_I2C_MOTOR_CURRENTS;
82 97
 
83 98
   for (uint8_t i = 0; i < DIGIPOT_I2C_NUM_CHANNELS; i++)
84 99
     pots[i].i2c_init();
85 100
 
86 101
   // setup initial currents as defined in Configuration_adv.h
87 102
   for (uint8_t i = 0; i < COUNT(digipot_motor_current); i++)
88
-    digipot_i2c_set_current(i, digipot_motor_current[i]);
103
+    digipot_i2c_set_current(i, pgm_read_float(&digipot_motor_current[i]));
89 104
 }
90 105
 
91 106
 #endif // DIGIPOT_I2C && DIGIPOT_MCP4018

+ 7
- 7
Marlin/digipot_mcp4451.cpp Просмотреть файл

@@ -37,11 +37,11 @@
37 37
   #define DIGIPOT_I2C_MAX_CURRENT 2.5
38 38
 #endif
39 39
 
40
-static byte current_to_wiper(float current) {
41
-  return byte(ceil(float((DIGIPOT_I2C_FACTOR * current))));
40
+static byte current_to_wiper(const float current) {
41
+  return byte(CEIL(float((DIGIPOT_I2C_FACTOR * current))));
42 42
 }
43 43
 
44
-static void i2c_send(byte addr, byte a, byte b) {
44
+static void i2c_send(const byte addr, const byte a, const byte b) {
45 45
   Wire.beginTransmission(addr);
46 46
   Wire.write(a);
47 47
   Wire.write(b);
@@ -49,7 +49,7 @@ static void i2c_send(byte addr, byte a, byte b) {
49 49
 }
50 50
 
51 51
 // This is for the MCP4451 I2C based digipot
52
-void digipot_i2c_set_current(int channel, float current) {
52
+void digipot_i2c_set_current(uint8_t channel, float current) {
53 53
   current = min((float) max(current, 0.0f), DIGIPOT_I2C_MAX_CURRENT);
54 54
   // these addresses are specific to Azteeg X3 Pro, can be set to others,
55 55
   // In this case first digipot is at address A0=0, A1= 0, second one is at A0=0, A1= 1
@@ -69,11 +69,11 @@ void digipot_i2c_set_current(int channel, float current) {
69 69
 }
70 70
 
71 71
 void digipot_i2c_init() {
72
-  const float digipot_motor_current[] = DIGIPOT_I2C_MOTOR_CURRENTS;
72
+  static const float digipot_motor_current[] PROGMEM = DIGIPOT_I2C_MOTOR_CURRENTS;
73 73
   Wire.begin();
74 74
   // setup initial currents as defined in Configuration_adv.h
75
-  for (int i = 0; i < COUNT(digipot_motor_current); i++)
76
-    digipot_i2c_set_current(i, digipot_motor_current[i]);
75
+  for (uint8_t i = 0; i < COUNT(digipot_motor_current); i++)
76
+    digipot_i2c_set_current(i, pgm_read_float(&digipot_motor_current[i]));
77 77
 }
78 78
 
79 79
 #endif // DIGIPOT_I2C

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

@@ -0,0 +1,192 @@
1
+/*
2
+  Fontname: ISO10646_CZ
3
+  Copyright: A. Hardtung, public domain
4
+  Modified for Czech accents by Petr Zahradnik, http://www.zahradniksebavi.cz
5
+  Capital A Height: 7, '1' Height: 7
6
+  Calculated Max Values w= 6 h= 9 x= 2 y= 7 dx= 6 dy= 0 ascent= 8 len= 9
7
+  Font Bounding box     w= 6 h= 9 x= 0 y=-2
8
+  Calculated Min Values           x= 0 y=-1 dx= 0 dy= 0
9
+  Pure Font   ascent = 7 descent=-1
10
+  X Font      ascent = 7 descent=-1
11
+  Max Font    ascent = 8 descent=-1
12
+*/
13
+#include <U8glib.h>
14
+const u8g_fntpgm_uint8_t ISO10646_CZ[2832] U8G_SECTION(".progmem.ISO10646_CZ") = {
15
+  0,6,9,0,254,7,1,146,3,33,32,255,255,8,255,7,
16
+  255,0,0,0,6,0,0,1,7,7,6,2,0,128,128,128,
17
+  128,128,0,128,3,2,2,6,1,5,160,160,5,7,7,6,
18
+  0,0,80,80,248,80,248,80,80,5,7,7,6,0,0,32,
19
+  120,160,112,40,240,32,5,7,7,6,0,0,192,200,16,32,
20
+  64,152,24,5,7,7,6,0,0,96,144,160,64,168,144,104,
21
+  2,3,3,6,1,4,192,64,128,3,7,7,6,1,0,32,
22
+  64,128,128,128,64,32,3,7,7,6,1,0,128,64,32,32,
23
+  32,64,128,5,5,5,6,0,1,32,168,112,168,32,5,5,
24
+  5,6,0,1,32,32,248,32,32,2,3,3,6,2,255,192,
25
+  64,128,5,1,1,6,0,3,248,2,2,2,6,2,0,192,
26
+  192,5,5,5,6,0,1,8,16,32,64,128,5,7,7,6,
27
+  0,0,112,136,136,136,136,136,112,3,7,7,6,1,0,64,
28
+  192,64,64,64,64,224,5,7,7,6,0,0,112,136,8,112,
29
+  128,128,248,5,7,7,6,0,0,248,16,32,16,8,8,240,
30
+  5,7,7,6,0,0,16,48,80,144,248,16,16,5,7,7,
31
+  6,0,0,248,128,240,8,8,136,112,5,7,7,6,0,0,
32
+  112,128,128,240,136,136,112,5,7,7,6,0,0,248,8,16,
33
+  32,32,32,32,5,7,7,6,0,0,112,136,136,112,136,136,
34
+  112,5,7,7,6,0,0,112,136,136,120,8,8,112,2,5,
35
+  5,6,2,0,192,192,0,192,192,2,6,6,6,2,255,192,
36
+  192,0,192,64,128,4,7,7,6,0,0,16,32,64,128,64,
37
+  32,16,5,3,3,6,0,2,248,0,248,4,7,7,6,1,
38
+  0,128,64,32,16,32,64,128,5,7,7,6,0,0,112,136,
39
+  8,16,32,0,32,5,7,7,6,0,0,112,136,8,104,168,
40
+  168,112,5,7,7,6,0,0,112,136,136,248,136,136,136,5,
41
+  7,7,6,0,0,240,136,136,240,136,136,240,5,7,7,6,
42
+  0,0,112,136,128,128,128,136,112,5,7,7,6,0,0,240,
43
+  136,136,136,136,136,240,5,7,7,6,0,0,248,128,128,240,
44
+  128,128,248,5,7,7,6,0,0,248,128,128,240,128,128,128,
45
+  5,7,7,6,0,0,112,136,128,184,136,136,112,5,7,7,
46
+  6,0,0,136,136,136,248,136,136,136,1,7,7,6,2,0,
47
+  128,128,128,128,128,128,128,5,7,7,6,0,0,56,16,16,
48
+  16,16,144,96,5,7,7,6,0,0,136,144,160,192,160,144,
49
+  136,5,7,7,6,0,0,128,128,128,128,128,128,248,5,7,
50
+  7,6,0,0,136,216,168,136,136,136,136,5,7,7,6,0,
51
+  0,136,136,200,168,152,136,136,5,7,7,6,0,0,112,136,
52
+  136,136,136,136,112,5,7,7,6,0,0,240,136,136,240,128,
53
+  128,128,5,7,7,6,0,0,112,136,136,136,168,144,104,5,
54
+  7,7,6,0,0,240,136,136,240,160,144,136,5,7,7,6,
55
+  0,0,120,128,128,112,8,8,240,5,7,7,6,0,0,248,
56
+  32,32,32,32,32,32,5,7,7,6,0,0,136,136,136,136,
57
+  136,136,112,5,7,7,6,0,0,136,136,136,136,136,80,32,
58
+  5,7,7,6,0,0,136,136,136,136,136,168,80,5,7,7,
59
+  6,0,0,136,136,80,32,80,136,136,5,7,7,6,0,0,
60
+  136,136,136,80,32,32,32,5,7,7,6,0,0,248,8,16,
61
+  32,64,128,248,3,7,7,6,1,0,224,128,128,128,128,128,
62
+  224,5,5,5,6,0,1,128,64,32,16,8,3,7,7,6,
63
+  1,0,224,32,32,32,32,32,224,5,3,3,6,0,4,32,
64
+  80,136,5,1,1,6,0,0,248,2,2,2,6,2,5,128,
65
+  64,5,5,5,6,0,0,112,8,120,136,120,5,7,7,6,
66
+  0,0,128,128,176,200,136,136,240,5,5,5,6,0,0,112,
67
+  128,128,136,112,5,7,7,6,0,0,8,8,104,152,136,136,
68
+  120,5,5,5,6,0,0,112,136,248,128,112,5,7,7,6,
69
+  0,0,48,72,224,64,64,64,64,5,6,6,6,0,255,112,
70
+  136,136,120,8,112,5,7,7,6,0,0,128,128,176,200,136,
71
+  136,136,1,7,7,6,2,0,128,0,128,128,128,128,128,3,
72
+  8,8,6,1,255,32,0,32,32,32,32,160,64,4,7,7,
73
+  6,0,0,128,128,144,160,192,160,144,3,7,7,6,1,0,
74
+  192,64,64,64,64,64,224,5,5,5,6,0,0,208,168,168,
75
+  168,168,5,5,5,6,0,0,176,200,136,136,136,5,5,5,
76
+  6,0,0,112,136,136,136,112,5,6,6,6,0,255,240,136,
77
+  136,240,128,128,5,6,6,6,0,255,120,136,136,120,8,8,
78
+  5,5,5,6,0,0,176,200,128,128,128,5,5,5,6,0,
79
+  0,112,128,112,8,240,4,7,7,6,0,0,64,64,224,64,
80
+  64,64,48,5,5,5,6,0,0,136,136,136,152,104,5,5,
81
+  5,6,0,0,136,136,136,80,32,5,5,5,6,0,0,136,
82
+  136,168,168,80,5,5,5,6,0,0,136,80,32,80,136,5,
83
+  6,6,6,0,255,136,136,136,120,8,112,5,5,5,6,0,
84
+  0,248,16,32,64,248,3,7,7,6,1,0,32,64,64,128,
85
+  64,64,32,1,7,7,6,2,0,128,128,128,128,128,128,128,
86
+  3,7,7,6,1,0,128,64,64,32,64,64,128,5,2,2,
87
+  6,0,2,104,144,0,0,0,6,0,0,5,8,8,6,0,
88
+  0,16,32,112,136,136,248,136,136,5,8,8,6,0,0,8,
89
+  16,248,128,128,240,128,248,3,8,8,6,1,0,32,64,224,
90
+  64,64,64,64,224,5,8,8,6,0,0,16,32,112,136,136,
91
+  136,136,112,5,8,8,6,0,0,16,32,136,136,136,136,136,
92
+  112,5,8,8,6,0,0,16,32,136,136,80,32,32,32,5,
93
+  8,8,6,0,0,16,32,0,112,8,120,136,120,5,8,8,
94
+  6,0,0,16,32,0,112,136,248,128,112,2,8,8,6,2,
95
+  0,64,128,0,128,128,128,128,128,5,8,8,6,0,0,16,
96
+  32,0,112,136,136,136,112,5,8,8,6,0,0,16,32,0,
97
+  136,136,136,152,104,5,9,9,6,0,255,16,32,0,136,136,
98
+  136,120,8,112,5,8,8,6,0,0,80,32,112,136,128,128,
99
+  136,112,5,8,8,6,0,0,80,32,0,112,128,128,136,112,
100
+  5,8,8,6,0,0,80,32,240,136,136,136,136,240,6,8,
101
+  8,6,0,0,4,20,24,112,144,144,144,112,5,8,8,6,
102
+  0,0,80,32,248,128,128,240,128,248,5,8,8,6,0,0,
103
+  80,32,0,112,136,248,128,112,5,8,8,6,0,0,80,32,
104
+  136,200,168,152,136,136,5,8,8,6,0,0,80,32,0,176,
105
+  200,136,136,136,5,8,8,6,0,0,80,32,240,136,240,160,
106
+  144,136,5,8,8,6,0,0,80,32,0,176,200,128,128,128,
107
+  5,8,8,6,0,0,80,32,120,128,128,112,8,240,5,8,
108
+  8,6,0,0,80,32,0,112,128,112,8,240,5,8,8,6,
109
+  0,0,80,32,248,32,32,32,32,32,6,8,8,6,0,0,
110
+  4,68,72,224,64,64,64,48,5,8,8,6,0,0,32,80,
111
+  168,136,136,136,136,112,5,8,8,6,0,0,32,80,32,136,
112
+  136,136,152,104,5,8,8,6,0,0,80,32,248,8,48,64,
113
+  128,248,5,8,8,6,0,0,80,32,0,248,16,32,64,248,
114
+  0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,6,
115
+  0,0,1,7,7,6,2,0,128,0,128,128,128,128,128,5,
116
+  7,7,6,0,0,32,112,168,160,168,112,32,5,7,7,6,
117
+  0,0,48,64,64,224,64,80,168,5,5,5,6,0,0,136,
118
+  112,80,112,136,5,7,7,6,0,0,136,80,32,248,32,248,
119
+  32,1,7,7,6,2,0,128,128,128,0,128,128,128,5,8,
120
+  8,6,0,0,48,72,32,80,80,32,144,96,3,1,1,6,
121
+  1,7,160,5,7,7,6,0,0,248,136,184,184,184,136,248,
122
+  5,7,7,6,0,1,112,8,120,136,120,0,248,5,5,5,
123
+  6,0,1,40,80,160,80,40,5,3,3,6,0,1,248,8,
124
+  8,2,2,2,6,2,6,64,128,5,7,7,6,0,0,248,
125
+  136,168,136,152,168,248,5,1,1,6,0,6,248,4,4,4,
126
+  6,0,3,96,144,144,96,5,7,7,6,0,0,32,32,248,
127
+  32,32,0,248,4,5,5,6,0,3,96,144,32,64,240,3,
128
+  5,5,6,0,3,224,32,224,32,224,2,2,2,6,2,6,
129
+  64,128,5,8,8,6,0,255,136,136,136,136,152,232,128,128,
130
+  5,7,7,6,0,0,120,152,152,120,24,24,24,2,2,2,
131
+  6,2,2,192,192,2,2,2,6,2,255,64,128,3,5,5,
132
+  6,0,3,64,192,64,64,224,5,7,7,6,0,1,112,136,
133
+  136,136,112,0,248,5,5,5,6,0,1,160,80,40,80,160,
134
+  5,7,7,6,0,0,136,144,168,88,184,8,8,5,7,7,
135
+  6,0,0,136,144,184,72,152,32,56,5,8,8,6,0,0,
136
+  192,64,192,72,216,56,8,8,5,7,7,6,0,0,32,0,
137
+  32,64,128,136,112,5,8,8,6,0,0,64,32,0,112,136,
138
+  248,136,136,5,8,8,6,0,0,16,32,0,112,136,248,136,
139
+  136,5,8,8,6,0,0,32,80,0,112,136,248,136,136,5,
140
+  8,8,6,0,0,104,144,0,112,136,248,136,136,5,8,8,
141
+  6,0,0,80,0,112,136,136,248,136,136,5,8,8,6,0,
142
+  0,32,80,32,112,136,248,136,136,5,7,7,6,0,0,56,
143
+  96,160,184,224,160,184,5,8,8,6,0,255,112,136,128,128,
144
+  136,112,32,96,5,8,8,6,0,0,64,32,0,248,128,240,
145
+  128,248,5,8,8,6,0,0,8,16,0,248,128,240,128,248,
146
+  5,8,8,6,0,0,32,80,0,248,128,240,128,248,5,7,
147
+  7,6,0,0,80,0,248,128,240,128,248,3,8,8,6,1,
148
+  0,128,64,0,224,64,64,64,224,3,8,8,6,1,0,32,
149
+  64,0,224,64,64,64,224,3,8,8,6,1,0,64,160,0,
150
+  224,64,64,64,224,3,7,7,6,1,0,160,0,224,64,64,
151
+  64,224,5,9,9,6,0,255,80,32,112,136,128,184,136,136,
152
+  112,5,8,8,6,0,0,104,144,0,136,200,168,152,136,5,
153
+  8,8,6,0,0,64,32,112,136,136,136,136,112,5,8,8,
154
+  6,0,0,16,32,112,136,136,136,136,112,5,8,8,6,0,
155
+  0,32,80,0,112,136,136,136,112,5,8,8,6,0,0,104,
156
+  144,0,112,136,136,136,112,5,8,8,6,0,0,80,0,112,
157
+  136,136,136,136,112,5,5,5,6,0,1,136,80,32,80,136,
158
+  5,8,8,6,0,255,16,112,168,168,168,168,112,64,5,8,
159
+  8,6,0,0,64,32,136,136,136,136,136,112,5,8,8,6,
160
+  0,0,16,32,136,136,136,136,136,112,5,8,8,6,0,0,
161
+  32,80,0,136,136,136,136,112,5,8,8,6,0,0,80,0,
162
+  136,136,136,136,136,112,1,7,7,6,2,0,128,0,128,128,
163
+  128,128,128,5,9,9,6,0,255,120,128,128,112,8,8,240,
164
+  32,96,4,8,8,6,1,255,96,144,144,160,144,144,224,128,
165
+  5,8,8,6,0,0,64,32,0,112,8,120,136,120,5,8,
166
+  8,6,0,0,16,32,0,112,8,120,136,120,5,8,8,6,
167
+  0,0,32,80,0,112,8,120,136,120,5,8,8,6,0,0,
168
+  104,144,0,112,8,120,136,120,5,7,7,6,0,0,80,0,
169
+  112,8,120,136,120,5,8,8,6,0,0,32,80,32,112,8,
170
+  120,136,120,5,6,6,6,0,0,208,40,120,160,168,80,5,
171
+  7,7,6,0,255,112,128,128,136,112,32,96,5,8,8,6,
172
+  0,0,64,32,0,112,136,248,128,112,5,8,8,6,0,0,
173
+  16,32,0,112,136,248,128,112,5,8,8,6,0,0,32,80,
174
+  0,112,136,248,128,112,5,7,7,6,0,0,80,0,112,136,
175
+  248,128,112,3,8,8,6,1,0,128,64,0,64,192,64,64,
176
+  224,3,8,8,6,1,0,32,64,0,64,192,64,64,224,3,
177
+  8,8,6,1,0,64,160,0,64,192,64,64,224,3,7,7,
178
+  6,1,0,160,0,64,192,64,64,224,5,8,8,6,0,255,
179
+  80,32,112,136,136,120,8,112,5,8,8,6,0,0,104,144,
180
+  0,176,200,136,136,136,5,8,8,6,0,0,64,32,0,112,
181
+  136,136,136,112,5,8,8,6,0,0,16,32,0,112,136,136,
182
+  136,112,5,8,8,6,0,0,32,80,0,112,136,136,136,112,
183
+  5,8,8,6,0,0,104,144,0,112,136,136,136,112,5,7,
184
+  7,6,0,0,80,0,112,136,136,136,112,5,5,5,6,0,
185
+  1,32,0,248,0,32,5,7,7,6,0,255,16,112,168,168,
186
+  168,112,64,5,8,8,6,0,0,64,32,0,136,136,136,152,
187
+  104,5,8,8,6,0,0,16,32,0,136,136,136,152,104,5,
188
+  8,8,6,0,0,32,80,0,136,136,136,152,104,5,7,7,
189
+  6,0,0,80,0,136,136,136,152,104,1,5,5,6,2,0,
190
+  128,128,128,128,128,5,7,7,6,0,255,112,128,112,8,240,
191
+  32,96,5,8,8,6,0,255,80,0,136,136,136,120,8,112
192
+  };

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

@@ -161,7 +161,7 @@ void Endstops::report_state() {
161 161
     #define ENDSTOP_HIT_TEST_Y() _ENDSTOP_HIT_TEST(Y,'Y')
162 162
     #define ENDSTOP_HIT_TEST_Z() _ENDSTOP_HIT_TEST(Z,'Z')
163 163
 
164
-    SERIAL_ECHO_START;
164
+    SERIAL_ECHO_START();
165 165
     SERIAL_ECHOPGM(MSG_ENDSTOPS_HIT);
166 166
     ENDSTOP_HIT_TEST_X();
167 167
     ENDSTOP_HIT_TEST_Y();
@@ -171,7 +171,7 @@ void Endstops::report_state() {
171 171
       #define P_AXIS Z_AXIS
172 172
       if (TEST(endstop_hit_bits, Z_MIN_PROBE)) _ENDSTOP_HIT_ECHO(P, 'P');
173 173
     #endif
174
-    SERIAL_EOL;
174
+    SERIAL_EOL();
175 175
 
176 176
     #if ENABLED(ULTRA_LCD)
177 177
       lcd_status_printf_P(0, PSTR(MSG_LCD_ENDSTOPS " %c %c %c %c"), chrX, chrY, chrZ, chrP);

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

@@ -34,23 +34,29 @@
34 34
  *    between X_AXIS and X Head movement, like CoreXY bots
35 35
  */
36 36
 enum AxisEnum {
37
-  NO_AXIS = -1,
38
-  X_AXIS  = 0,
39
-  A_AXIS  = 0,
40
-  Y_AXIS  = 1,
41
-  B_AXIS  = 1,
42
-  Z_AXIS  = 2,
43
-  C_AXIS  = 2,
44
-  E_AXIS  = 3,
45
-  X_HEAD  = 4,
46
-  Y_HEAD  = 5,
47
-  Z_HEAD  = 6,
48
-  ALL_AXES = 100
37
+  NO_AXIS   = -1,
38
+  X_AXIS    = 0,
39
+  A_AXIS    = 0,
40
+  Y_AXIS    = 1,
41
+  B_AXIS    = 1,
42
+  Z_AXIS    = 2,
43
+  C_AXIS    = 2,
44
+  E_AXIS    = 3,
45
+  X_HEAD    = 4,
46
+  Y_HEAD    = 5,
47
+  Z_HEAD    = 6,
48
+  ALL_AXES  = 100
49 49
 };
50 50
 
51
-#define LOOP_XYZ(VAR)  for (uint8_t VAR=X_AXIS; VAR<=Z_AXIS; VAR++)
52
-#define LOOP_XYZE(VAR) for (uint8_t VAR=X_AXIS; VAR<=E_AXIS; VAR++)
53
-#define LOOP_XYZE_N(VAR) for (uint8_t VAR=X_AXIS; VAR<XYZE_N; VAR++)
51
+#define LOOP_S_LE_N(VAR, S, N) for (uint8_t VAR=S; VAR<=N; VAR++)
52
+#define LOOP_S_L_N(VAR, S, N) for (uint8_t VAR=S; VAR<N; VAR++)
53
+#define LOOP_LE_N(VAR, N) LOOP_S_LE_N(VAR, 0, N)
54
+#define LOOP_L_N(VAR, N) LOOP_S_L_N(VAR, 0, N)
55
+
56
+#define LOOP_NA(VAR) LOOP_L_N(VAR, NUM_AXIS)
57
+#define LOOP_XYZ(VAR) LOOP_S_LE_N(VAR, X_AXIS, Z_AXIS)
58
+#define LOOP_XYZE(VAR) LOOP_S_LE_N(VAR, X_AXIS, E_AXIS)
59
+#define LOOP_XYZE_N(VAR) LOOP_S_L_N(VAR, X_AXIS, XYZE_N)
54 60
 
55 61
 typedef enum {
56 62
   LINEARUNIT_MM,
@@ -161,12 +167,23 @@ enum LCDViewAction {
161 167
   LCDVIEW_CALL_NO_REDRAW
162 168
 };
163 169
 
170
+/**
171
+ * Dual X Carriage modes. A Dual Nozzle can also do duplication.
172
+ */
164 173
 #if ENABLED(DUAL_X_CARRIAGE) || ENABLED(DUAL_NOZZLE_DUPLICATION_MODE)
165 174
   enum DualXMode {
166
-    DXC_FULL_CONTROL_MODE,
167
-    DXC_AUTO_PARK_MODE,
175
+    DXC_FULL_CONTROL_MODE,  // DUAL_X_CARRIAGE only
176
+    DXC_AUTO_PARK_MODE,     // DUAL_X_CARRIAGE only
168 177
     DXC_DUPLICATION_MODE
169 178
   };
170 179
 #endif
171 180
 
181
+/**
182
+ * Workspace planes only apply to G2/G3 moves
183
+ * (and "canned cycles" - not a current feature)
184
+ */
185
+#if ENABLED(CNC_WORKSPACE_PLANES)
186
+  enum WorkspacePlane { PLANE_XY, PLANE_ZX, PLANE_YZ };
187
+#endif
188
+
172 189
 #endif // __ENUM_H__

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


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


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


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


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


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

@@ -0,0 +1,15 @@
1
+This is an example configuration for the CL-260.
2
+Change Z_MAX_POS to 300 for the CL-260MAX.
3
+
4
+(The printer is available on AliExpress; be aware that this is not a beginner's
5
+printer -- it needs tweaking and some parts replaced before being decent.)
6
+
7
+The printer comes with a quite old Marlin, the sources are available here:
8
+http://www.thingiverse.com/thing:1635830/ and I recommend replacing them.
9
+
10
+The setting "works" for my printer and the extruder using my calibration value.
11
+You might want to tweak some settings, e.g enable EEPROM, increase default Z speed, adjust homing speeds,...
12
+
13
+Have fun!
14
+--
15
+tobi

+ 70
- 30
Marlin/example_configurations/Cartesio/Configuration.h Просмотреть файл

@@ -58,15 +58,15 @@
58 58
 //===========================================================================
59 59
 //============================= DELTA Printer ===============================
60 60
 //===========================================================================
61
-// For Delta printers start with one of the configuration files in the
61
+// For a Delta printer start with one of the configuration files in the
62 62
 // example_configurations/delta directory and customize for your machine.
63 63
 //
64 64
 
65 65
 //===========================================================================
66 66
 //============================= SCARA Printer ===============================
67 67
 //===========================================================================
68
-// For a Scara printer replace the configuration files with the files in the
69
-// example_configurations/SCARA directory.
68
+// For a SCARA printer start with the configuration files in
69
+// example_configurations/SCARA and customize for your machine.
70 70
 //
71 71
 
72 72
 // @section info
@@ -139,6 +139,25 @@
139 139
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
140 140
 //#define SINGLENOZZLE
141 141
 
142
+/**
143
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
144
+ *
145
+ * This device allows one stepper driver on a control board to drive
146
+ * two to eight stepper motors, one at a time, in a manner suitable
147
+ * for extruders.
148
+ *
149
+ * This option only allows the multiplexer to switch on tool-change.
150
+ * Additional options to configure custom E moves are pending.
151
+ */
152
+//#define MK2_MULTIPLEXER
153
+#if ENABLED(MK2_MULTIPLEXER)
154
+  // Override the default DIO selector pins here, if needed.
155
+  // Some pins files may provide defaults for these pins.
156
+  //#define E_MUX0_PIN 40  // Always Required
157
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
158
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
159
+#endif
160
+
142 161
 // A dual extruder that uses a single stepper motor
143 162
 //#define SWITCHING_EXTRUDER
144 163
 #if ENABLED(SWITCHING_EXTRUDER)
@@ -563,7 +582,6 @@
563 582
  *
564 583
  */
565 584
 //#define Z_MIN_PROBE_ENDSTOP
566
-//#define Z_MIN_PROBE_PIN Z_MAX_PIN
567 585
 
568 586
 /**
569 587
  * Probe Type
@@ -878,12 +896,14 @@
878 896
   #define UBL_MESH_INSET 1          // Mesh inset margin on print area
879 897
   #define GRID_MAX_POINTS_X 10      // Don't use more than 15 points per axis, implementation limited.
880 898
   #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
881
-  #define UBL_PROBE_PT_1_X 39       // These set the probe locations for when UBL does a 3-Point leveling
882
-  #define UBL_PROBE_PT_1_Y 180      // of the mesh.
899
+
900
+  #define UBL_PROBE_PT_1_X 39       // Probing points for 3-Point leveling of the mesh
901
+  #define UBL_PROBE_PT_1_Y 180
883 902
   #define UBL_PROBE_PT_2_X 39
884 903
   #define UBL_PROBE_PT_2_Y 20
885 904
   #define UBL_PROBE_PT_3_X 180
886 905
   #define UBL_PROBE_PT_3_Y 20
906
+
887 907
   #define UBL_G26_MESH_VALIDATION   // Enable G26 mesh validation
888 908
   #define UBL_MESH_EDIT_MOVES_Z     // Sophisticated users prefer no movement of nozzle
889 909
 
@@ -938,6 +958,7 @@
938 958
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
939 959
 // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
940 960
 // - Prevent Z homing when the Z probe is outside bed area.
961
+//
941 962
 //#define Z_SAFE_HOMING
942 963
 
943 964
 #if ENABLED(Z_SAFE_HOMING)
@@ -962,13 +983,10 @@
962 983
 // M500 - stores parameters in EEPROM
963 984
 // M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).
964 985
 // M502 - reverts to the default "factory settings".  You still need to store them in EEPROM afterwards if you want to.
965
-//define this to enable EEPROM support
966
-//#define EEPROM_SETTINGS
967
-
968
-#if ENABLED(EEPROM_SETTINGS)
969
-  // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out:
970
-  #define EEPROM_CHITCHAT // Please keep turned on if you can.
971
-#endif
986
+//
987
+//#define EEPROM_SETTINGS // Enable for M500 and M501 commands
988
+//#define DISABLE_M503    // Saves ~2700 bytes of PROGMEM. Disable for release!
989
+#define EEPROM_CHITCHAT   // Give feedback on EEPROM commands. Disable to save PROGMEM.
972 990
 
973 991
 //
974 992
 // Host Keepalive
@@ -1127,10 +1145,11 @@
1127 1145
  *
1128 1146
  * Select the language to display on the LCD. These languages are available:
1129 1147
  *
1130
- *    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
1131
- *    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk, test
1148
+ *    en, an, bg, ca, cn, cz, cz_utf8, de, el, el-gr, es, eu, fi, fr, gl, hr,
1149
+ *    it, kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk,
1150
+ *    zh_CN, zh_TW, test
1132 1151
  *
1133
- * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'test':'TEST' }
1152
+ * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'cz_utf8':'Czech (UTF8)', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'zh_CN':'Chinese (Simplified)', 'zh_TW':'Chinese (Taiwan)', test':'TEST' }
1134 1153
  */
1135 1154
 #define LCD_LANGUAGE en
1136 1155
 
@@ -1279,12 +1298,6 @@
1279 1298
 //#define ULTIPANEL
1280 1299
 
1281 1300
 //
1282
-// Cartesio UI
1283
-// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1284
-//
1285
-#define CARTESIO_UI
1286
-
1287
-//
1288 1301
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
1289 1302
 // http://reprap.org/wiki/PanelOne
1290 1303
 //
@@ -1367,6 +1380,27 @@
1367 1380
 //#define BQ_LCD_SMART_CONTROLLER
1368 1381
 
1369 1382
 //
1383
+// Cartesio UI
1384
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1385
+//
1386
+#define CARTESIO_UI
1387
+
1388
+//
1389
+// ANET_10 Controller supported displays.
1390
+//
1391
+//#define ANET_KEYPAD_LCD         // Requires ADC_KEYPAD_PIN to be assigned to an analog pin.
1392
+                                  // This LCD is known to be susceptible to electrical interference
1393
+                                  // which scrambles the display.  Pressing any button clears it up.
1394
+//#define ANET_FULL_GRAPHICS_LCD  // Anet 128x64 full graphics lcd with rotary encoder as used on Anet A6
1395
+                                  // A clone of the RepRapDiscount full graphics display but with
1396
+                                  // different pins/wiring (see pins_ANET_10.h).
1397
+
1398
+//
1399
+// LCD for Melzi Card with Graphical LCD
1400
+//
1401
+//#define LCD_FOR_MELZI
1402
+
1403
+//
1370 1404
 // CONTROLLER TYPE: I2C
1371 1405
 //
1372 1406
 // Note: These controllers require the installation of Arduino's LiquidCrystal_I2C
@@ -1382,6 +1416,9 @@
1382 1416
 //
1383 1417
 // Sainsmart YW Robot (LCM1602) LCD Display
1384 1418
 //
1419
+// Note: This controller requires F.Malpartida's LiquidCrystal_I2C library
1420
+// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
1421
+//
1385 1422
 //#define LCD_I2C_SAINSMART_YWROBOT
1386 1423
 
1387 1424
 //
@@ -1413,6 +1450,11 @@
1413 1450
 //#define U8GLIB_SSD1306
1414 1451
 
1415 1452
 //
1453
+// TinyBoy2 128x64 OLED / Encoder Panel
1454
+//
1455
+//#define OLED_PANEL_TINYBOY2
1456
+
1457
+//
1416 1458
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1417 1459
 //
1418 1460
 //#define SAV_3DGLCD
@@ -1429,11 +1471,6 @@
1429 1471
 //
1430 1472
 //#define SAV_3DLCD
1431 1473
 
1432
-//
1433
-// TinyBoy2 128x64 OLED / Encoder Panel
1434
-//
1435
-//#define OLED_PANEL_TINYBOY2
1436
-
1437 1474
 //=============================================================================
1438 1475
 //=============================== Extra Features ==============================
1439 1476
 //=============================================================================
@@ -1472,12 +1509,15 @@
1472 1509
 // SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure
1473 1510
 //#define SF_ARC_FIX
1474 1511
 
1475
-// Support for the BariCUDA Paste Extruder.
1512
+// Support for the BariCUDA Paste Extruder
1476 1513
 //#define BARICUDA
1477 1514
 
1478
-//define BlinkM/CyzRgb Support
1515
+// Support for BlinkM/CyzRgb
1479 1516
 //#define BLINKM
1480 1517
 
1518
+// Support for PCA9632 PWM LED driver
1519
+//#define PCA9632
1520
+
1481 1521
 /**
1482 1522
  * RGB LED / LED Strip Control
1483 1523
  *
@@ -1515,7 +1555,7 @@
1515 1555
  *  - Change to green once print has finished
1516 1556
  *  - Turn off after the print has finished and the user has pushed a button
1517 1557
  */
1518
-#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED)
1558
+#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED) || ENABLED(PCA9632)
1519 1559
   #define PRINTER_EVENT_LEDS
1520 1560
 #endif
1521 1561
 

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

@@ -123,8 +123,8 @@
123 123
   #define AUTOTEMP_OLDWEIGHT 0.98
124 124
 #endif
125 125
 
126
-//Show Temperature ADC value
127
-//The M105 command return, besides traditional information, the ADC value read from temperature sensors.
126
+// Show Temperature ADC value
127
+// Enable for M105 to include ADC values read from temperature sensors.
128 128
 //#define SHOW_TEMP_ADC_VALUES
129 129
 
130 130
 /**
@@ -419,16 +419,16 @@
419 419
  *    M908 - BQ_ZUM_MEGA_3D, RAMBO, PRINTRBOARD_REVF, RIGIDBOARD_V2 & SCOOVO_X9H
420 420
  *    M909, M910 & LCD - only PRINTRBOARD_REVF & RIGIDBOARD_V2
421 421
  */
422
-//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps
423
-//#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
424
-//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 } // Default drive percent - X, Y, Z, E axis
422
+//#define PWM_MOTOR_CURRENT { 1300, 1300, 1250 }          // Values in milliamps
423
+//#define DIGIPOT_MOTOR_CURRENT { 135,135,135,135,135 }   // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
424
+//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 }    // Default drive percent - X, Y, Z, E axis
425 425
 
426 426
 // Uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro
427 427
 //#define DIGIPOT_I2C
428
-//#define DIGIPOT_MCP4018
428
+//#define DIGIPOT_MCP4018          // Requires library from https://github.com/stawel/SlowSoftI2CMaster
429 429
 #define DIGIPOT_I2C_NUM_CHANNELS 8 // 5DPRINT: 4     AZTEEG_X3_PRO: 8
430 430
 // Actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS
431
-#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0}  //  AZTEEG_X3_PRO
431
+#define DIGIPOT_I2C_MOTOR_CURRENTS { 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 }  //  AZTEEG_X3_PRO
432 432
 
433 433
 //===========================================================================
434 434
 //=============================Additional Features===========================
@@ -645,7 +645,7 @@
645 645
    *
646 646
    * Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
647 647
    *
648
-   * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
648
+   * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
649 649
    * Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
650 650
    */
651 651
   #define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
@@ -671,10 +671,16 @@
671 671
 
672 672
 // @section extras
673 673
 
674
-// Arc interpretation settings:
675
-#define ARC_SUPPORT  // Disabling this saves ~2738 bytes
676
-#define MM_PER_ARC_SEGMENT 1
677
-#define N_ARC_CORRECTION 25
674
+//
675
+// G2/G3 Arc Support
676
+//
677
+#define ARC_SUPPORT               // Disable this feature to save ~3226 bytes
678
+#if ENABLED(ARC_SUPPORT)
679
+  #define MM_PER_ARC_SEGMENT  1   // Length of each arc segment
680
+  #define N_ARC_CORRECTION   25   // Number of intertpolated segments between corrections
681
+  //#define ARC_P_CIRCLES         // Enable the 'P' parameter to specify complete circles
682
+  //#define CNC_WORKSPACE_PLANES  // Allow G2/G3 to operate in XY, ZX, or YZ planes
683
+#endif
678 684
 
679 685
 // Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
680 686
 //#define BEZIER_CURVE_SUPPORT
@@ -800,6 +806,7 @@
800 806
   #define PAUSE_PARK_NO_STEPPER_TIMEOUT       // Enable to have stepper motors hold position during filament change
801 807
                                               // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
802 808
   //#define PARK_HEAD_ON_PAUSE                // Go to filament change position on pause, return to print position on resume
809
+  //#define HOME_BEFORE_FILAMENT_CHANGE       // Ensure homing has been completed prior to parking for filament change
803 810
 #endif
804 811
 
805 812
 // @section tmc
@@ -1192,12 +1199,12 @@
1192 1199
 /**
1193 1200
  * Auto-report temperatures with M155 S<seconds>
1194 1201
  */
1195
-//#define AUTO_REPORT_TEMPERATURES
1202
+#define AUTO_REPORT_TEMPERATURES
1196 1203
 
1197 1204
 /**
1198 1205
  * Include capabilities in M115 output
1199 1206
  */
1200
-//#define EXTENDED_CAPABILITIES_REPORT
1207
+#define EXTENDED_CAPABILITIES_REPORT
1201 1208
 
1202 1209
 /**
1203 1210
  * Volumetric extrusion default state
@@ -1254,4 +1261,94 @@
1254 1261
   #define USER_GCODE_5 "G28\nM503"
1255 1262
 #endif
1256 1263
 
1264
+/**
1265
+ * Specify an action command to send to the host when the printer is killed.
1266
+ * Will be sent in the form '//action:ACTION_ON_KILL', e.g. '//action:poweroff'.
1267
+ * The host must be configured to handle the action command.
1268
+ */
1269
+//#define ACTION_ON_KILL "poweroff"
1270
+
1271
+//===========================================================================
1272
+//====================== I2C Position Encoder Settings ======================
1273
+//===========================================================================
1274
+/**
1275
+ *  I2C position encoders for closed loop control.
1276
+ *  Developed by Chris Barr at Aus3D.
1277
+ *
1278
+ *  Wiki: http://wiki.aus3d.com.au/Magnetic_Encoder
1279
+ *  Github: https://github.com/Aus3D/MagneticEncoder
1280
+ *
1281
+ *  Supplier: http://aus3d.com.au/magnetic-encoder-module
1282
+ *  Alternative Supplier: http://reliabuild3d.com/
1283
+ *
1284
+ *  Reilabuild encoders have been modified to improve reliability.
1285
+ */
1286
+
1287
+//#define I2C_POSITION_ENCODERS
1288
+#if ENABLED(I2C_POSITION_ENCODERS)
1289
+
1290
+  #define I2CPE_ENCODER_CNT         1                       // The number of encoders installed; max of 5
1291
+                                                            // encoders supported currently.
1292
+
1293
+  #define I2CPE_ENC_1_ADDR          I2CPE_PRESET_ADDR_X     // I2C address of the encoder. 30-200.
1294
+  #define I2CPE_ENC_1_AXIS          X_AXIS                  // Axis the encoder module is installed on.  <X|Y|Z|E>_AXIS.
1295
+  #define I2CPE_ENC_1_TYPE          I2CPE_ENC_TYPE_LINEAR   // Type of encoder:  I2CPE_ENC_TYPE_LINEAR -or-
1296
+                                                            // I2CPE_ENC_TYPE_ROTARY.
1297
+  #define I2CPE_ENC_1_TICKS_UNIT    2048                    // 1024 for magnetic strips with 2mm poles; 2048 for
1298
+                                                            // 1mm poles. For linear encoders this is ticks / mm,
1299
+                                                            // for rotary encoders this is ticks / revolution.
1300
+  //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1301
+                                                            // steps per full revolution (motor steps/rev * microstepping)
1302
+  //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1303
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1304
+  #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1305
+                                                            // printer will attempt to correct the error; errors
1306
+                                                            // smaller than this are ignored to minimize effects of
1307
+                                                            // measurement noise / latency (filter).
1308
+
1309
+  #define I2CPE_ENC_2_ADDR          I2CPE_PRESET_ADDR_Y     // Same as above, but for encoder 2.
1310
+  #define I2CPE_ENC_2_AXIS          Y_AXIS
1311
+  #define I2CPE_ENC_2_TYPE          I2CPE_ENC_TYPE_LINEAR
1312
+  #define I2CPE_ENC_2_TICKS_UNIT    2048
1313
+  //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1314
+  //#define I2CPE_ENC_2_INVERT
1315
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1316
+  #define I2CPE_ENC_2_EC_THRESH     0.10
1317
+
1318
+  #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
1319
+  #define I2CPE_ENC_3_AXIS          Z_AXIS                  // as above, or use defaults below.
1320
+
1321
+  #define I2CPE_ENC_4_ADDR          I2CPE_PRESET_ADDR_E     // Encoder 4.
1322
+  #define I2CPE_ENC_4_AXIS          E_AXIS
1323
+
1324
+  #define I2CPE_ENC_5_ADDR          34                      // Encoder 5.
1325
+  #define I2CPE_ENC_5_AXIS          E_AXIS
1326
+
1327
+  // Default settings for encoders which are enabled, but without settings configured above.
1328
+  #define I2CPE_DEF_TYPE            I2CPE_ENC_TYPE_LINEAR
1329
+  #define I2CPE_DEF_ENC_TICKS_UNIT  2048
1330
+  #define I2CPE_DEF_TICKS_REV       (16 * 200)
1331
+  #define I2CPE_DEF_EC_METHOD       I2CPE_ECM_NONE
1332
+  #define I2CPE_DEF_EC_THRESH       0.1
1333
+
1334
+  //#define I2CPE_ERR_THRESH_ABORT  100.0                   // Threshold size for error (in mm) error on any given
1335
+                                                            // axis after which the printer will abort. Comment out to
1336
+                                                            // disable abort behaviour.
1337
+
1338
+  #define I2CPE_TIME_TRUSTED        10000                   // After an encoder fault, there must be no further fault
1339
+                                                            // for this amount of time (in ms) before the encoder
1340
+                                                            // is trusted again.
1341
+
1342
+  /**
1343
+   * Position is checked every time a new command is executed from the buffer but during long moves,
1344
+   * this setting determines the minimum update time between checks. A value of 100 works well with
1345
+   * error rolling average when attempting to correct only for skips and not for vibration.
1346
+   */
1347
+  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1348
+
1349
+  // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1350
+  #define I2CPE_ERR_ROLLING_AVERAGE
1351
+
1352
+#endif // I2C_POSITION_ENCODERS
1353
+
1257 1354
 #endif // CONFIGURATION_ADV_H

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

@@ -58,15 +58,15 @@
58 58
 //===========================================================================
59 59
 //============================= DELTA Printer ===============================
60 60
 //===========================================================================
61
-// For Delta printers start with one of the configuration files in the
61
+// For a Delta printer start with one of the configuration files in the
62 62
 // example_configurations/delta directory and customize for your machine.
63 63
 //
64 64
 
65 65
 //===========================================================================
66 66
 //============================= SCARA Printer ===============================
67 67
 //===========================================================================
68
-// For a Scara printer replace the configuration files with the files in the
69
-// example_configurations/SCARA directory.
68
+// For a SCARA printer start with the configuration files in
69
+// example_configurations/SCARA and customize for your machine.
70 70
 //
71 71
 
72 72
 // @section info
@@ -138,6 +138,25 @@
138 138
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
139 139
 //#define SINGLENOZZLE
140 140
 
141
+/**
142
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
143
+ *
144
+ * This device allows one stepper driver on a control board to drive
145
+ * two to eight stepper motors, one at a time, in a manner suitable
146
+ * for extruders.
147
+ *
148
+ * This option only allows the multiplexer to switch on tool-change.
149
+ * Additional options to configure custom E moves are pending.
150
+ */
151
+//#define MK2_MULTIPLEXER
152
+#if ENABLED(MK2_MULTIPLEXER)
153
+  // Override the default DIO selector pins here, if needed.
154
+  // Some pins files may provide defaults for these pins.
155
+  //#define E_MUX0_PIN 40  // Always Required
156
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
157
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
158
+#endif
159
+
141 160
 // A dual extruder that uses a single stepper motor
142 161
 //#define SWITCHING_EXTRUDER
143 162
 #if ENABLED(SWITCHING_EXTRUDER)
@@ -547,7 +566,6 @@
547 566
  *
548 567
  */
549 568
 //#define Z_MIN_PROBE_ENDSTOP
550
-//#define Z_MIN_PROBE_PIN Z_MAX_PIN
551 569
 
552 570
 /**
553 571
  * Probe Type
@@ -862,12 +880,14 @@
862 880
   #define UBL_MESH_INSET 1          // Mesh inset margin on print area
863 881
   #define GRID_MAX_POINTS_X 10      // Don't use more than 15 points per axis, implementation limited.
864 882
   #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
865
-  #define UBL_PROBE_PT_1_X 39       // These set the probe locations for when UBL does a 3-Point leveling
866
-  #define UBL_PROBE_PT_1_Y 180      // of the mesh.
883
+
884
+  #define UBL_PROBE_PT_1_X 39       // Probing points for 3-Point leveling of the mesh
885
+  #define UBL_PROBE_PT_1_Y 180
867 886
   #define UBL_PROBE_PT_2_X 39
868 887
   #define UBL_PROBE_PT_2_Y 20
869 888
   #define UBL_PROBE_PT_3_X 180
870 889
   #define UBL_PROBE_PT_3_Y 20
890
+
871 891
   #define UBL_G26_MESH_VALIDATION   // Enable G26 mesh validation
872 892
   #define UBL_MESH_EDIT_MOVES_Z     // Sophisticated users prefer no movement of nozzle
873 893
 
@@ -922,6 +942,7 @@
922 942
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
923 943
 // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
924 944
 // - Prevent Z homing when the Z probe is outside bed area.
945
+//
925 946
 //#define Z_SAFE_HOMING
926 947
 
927 948
 #if ENABLED(Z_SAFE_HOMING)
@@ -946,13 +967,10 @@
946 967
 // M500 - stores parameters in EEPROM
947 968
 // M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).
948 969
 // M502 - reverts to the default "factory settings".  You still need to store them in EEPROM afterwards if you want to.
949
-//define this to enable EEPROM support
950
-//#define EEPROM_SETTINGS
951
-
952
-#if ENABLED(EEPROM_SETTINGS)
953
-  // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out:
954
-  #define EEPROM_CHITCHAT // Please keep turned on if you can.
955
-#endif
970
+//
971
+//#define EEPROM_SETTINGS // Enable for M500 and M501 commands
972
+//#define DISABLE_M503    // Saves ~2700 bytes of PROGMEM. Disable for release!
973
+#define EEPROM_CHITCHAT   // Give feedback on EEPROM commands. Disable to save PROGMEM.
956 974
 
957 975
 //
958 976
 // Host Keepalive
@@ -1111,10 +1129,11 @@
1111 1129
  *
1112 1130
  * Select the language to display on the LCD. These languages are available:
1113 1131
  *
1114
- *    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
1115
- *    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk, test
1132
+ *    en, an, bg, ca, cn, cz, cz_utf8, de, el, el-gr, es, eu, fi, fr, gl, hr,
1133
+ *    it, kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk,
1134
+ *    zh_CN, zh_TW, test
1116 1135
  *
1117
- * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'test':'TEST' }
1136
+ * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'cz_utf8':'Czech (UTF8)', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'zh_CN':'Chinese (Simplified)', 'zh_TW':'Chinese (Taiwan)', test':'TEST' }
1118 1137
  */
1119 1138
 //#define LCD_LANGUAGE en
1120 1139
 
@@ -1263,12 +1282,6 @@
1263 1282
 //#define ULTIPANEL
1264 1283
 
1265 1284
 //
1266
-// Cartesio UI
1267
-// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1268
-//
1269
-//#define CARTESIO_UI
1270
-
1271
-//
1272 1285
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
1273 1286
 // http://reprap.org/wiki/PanelOne
1274 1287
 //
@@ -1351,6 +1364,27 @@
1351 1364
 //#define BQ_LCD_SMART_CONTROLLER
1352 1365
 
1353 1366
 //
1367
+// Cartesio UI
1368
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1369
+//
1370
+//#define CARTESIO_UI
1371
+
1372
+//
1373
+// ANET_10 Controller supported displays.
1374
+//
1375
+//#define ANET_KEYPAD_LCD         // Requires ADC_KEYPAD_PIN to be assigned to an analog pin.
1376
+                                  // This LCD is known to be susceptible to electrical interference
1377
+                                  // which scrambles the display.  Pressing any button clears it up.
1378
+//#define ANET_FULL_GRAPHICS_LCD  // Anet 128x64 full graphics lcd with rotary encoder as used on Anet A6
1379
+                                  // A clone of the RepRapDiscount full graphics display but with
1380
+                                  // different pins/wiring (see pins_ANET_10.h).
1381
+
1382
+//
1383
+// LCD for Melzi Card with Graphical LCD
1384
+//
1385
+//#define LCD_FOR_MELZI
1386
+
1387
+//
1354 1388
 // CONTROLLER TYPE: I2C
1355 1389
 //
1356 1390
 // Note: These controllers require the installation of Arduino's LiquidCrystal_I2C
@@ -1366,6 +1400,9 @@
1366 1400
 //
1367 1401
 // Sainsmart YW Robot (LCM1602) LCD Display
1368 1402
 //
1403
+// Note: This controller requires F.Malpartida's LiquidCrystal_I2C library
1404
+// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
1405
+//
1369 1406
 //#define LCD_I2C_SAINSMART_YWROBOT
1370 1407
 
1371 1408
 //
@@ -1397,6 +1434,11 @@
1397 1434
 //#define U8GLIB_SSD1306
1398 1435
 
1399 1436
 //
1437
+// TinyBoy2 128x64 OLED / Encoder Panel
1438
+//
1439
+//#define OLED_PANEL_TINYBOY2
1440
+
1441
+//
1400 1442
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1401 1443
 //
1402 1444
 //#define SAV_3DGLCD
@@ -1413,11 +1455,6 @@
1413 1455
 //
1414 1456
 //#define SAV_3DLCD
1415 1457
 
1416
-//
1417
-// TinyBoy2 128x64 OLED / Encoder Panel
1418
-//
1419
-//#define OLED_PANEL_TINYBOY2
1420
-
1421 1458
 //=============================================================================
1422 1459
 //=============================== Extra Features ==============================
1423 1460
 //=============================================================================
@@ -1456,12 +1493,15 @@
1456 1493
 // SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure
1457 1494
 //#define SF_ARC_FIX
1458 1495
 
1459
-// Support for the BariCUDA Paste Extruder.
1496
+// Support for the BariCUDA Paste Extruder
1460 1497
 //#define BARICUDA
1461 1498
 
1462
-//define BlinkM/CyzRgb Support
1499
+// Support for BlinkM/CyzRgb
1463 1500
 //#define BLINKM
1464 1501
 
1502
+// Support for PCA9632 PWM LED driver
1503
+//#define PCA9632
1504
+
1465 1505
 /**
1466 1506
  * RGB LED / LED Strip Control
1467 1507
  *
@@ -1499,7 +1539,7 @@
1499 1539
  *  - Change to green once print has finished
1500 1540
  *  - Turn off after the print has finished and the user has pushed a button
1501 1541
  */
1502
-#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED)
1542
+#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED) || ENABLED(PCA9632)
1503 1543
   #define PRINTER_EVENT_LEDS
1504 1544
 #endif
1505 1545
 

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

@@ -123,8 +123,8 @@
123 123
   #define AUTOTEMP_OLDWEIGHT 0.98
124 124
 #endif
125 125
 
126
-//Show Temperature ADC value
127
-//The M105 command return, besides traditional information, the ADC value read from temperature sensors.
126
+// Show Temperature ADC value
127
+// Enable for M105 to include ADC values read from temperature sensors.
128 128
 //#define SHOW_TEMP_ADC_VALUES
129 129
 
130 130
 /**
@@ -419,16 +419,16 @@
419 419
  *    M908 - BQ_ZUM_MEGA_3D, RAMBO, PRINTRBOARD_REVF, RIGIDBOARD_V2 & SCOOVO_X9H
420 420
  *    M909, M910 & LCD - only PRINTRBOARD_REVF & RIGIDBOARD_V2
421 421
  */
422
-//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps
423
-//#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
424
-//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 } // Default drive percent - X, Y, Z, E axis
422
+//#define PWM_MOTOR_CURRENT { 1300, 1300, 1250 }          // Values in milliamps
423
+//#define DIGIPOT_MOTOR_CURRENT { 135,135,135,135,135 }   // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
424
+//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 }    // Default drive percent - X, Y, Z, E axis
425 425
 
426 426
 // Uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro
427 427
 //#define DIGIPOT_I2C
428
-//#define DIGIPOT_MCP4018
428
+//#define DIGIPOT_MCP4018          // Requires library from https://github.com/stawel/SlowSoftI2CMaster
429 429
 #define DIGIPOT_I2C_NUM_CHANNELS 8 // 5DPRINT: 4     AZTEEG_X3_PRO: 8
430 430
 // Actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS
431
-#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0}  //  AZTEEG_X3_PRO
431
+#define DIGIPOT_I2C_MOTOR_CURRENTS { 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 }  //  AZTEEG_X3_PRO
432 432
 
433 433
 //===========================================================================
434 434
 //=============================Additional Features===========================
@@ -645,7 +645,7 @@
645 645
    *
646 646
    * Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
647 647
    *
648
-   * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
648
+   * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
649 649
    * Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
650 650
    */
651 651
   #define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
@@ -671,10 +671,16 @@
671 671
 
672 672
 // @section extras
673 673
 
674
-// Arc interpretation settings:
675
-#define ARC_SUPPORT  // Disabling this saves ~2738 bytes
676
-#define MM_PER_ARC_SEGMENT 1
677
-#define N_ARC_CORRECTION 25
674
+//
675
+// G2/G3 Arc Support
676
+//
677
+#define ARC_SUPPORT               // Disable this feature to save ~3226 bytes
678
+#if ENABLED(ARC_SUPPORT)
679
+  #define MM_PER_ARC_SEGMENT  1   // Length of each arc segment
680
+  #define N_ARC_CORRECTION   25   // Number of intertpolated segments between corrections
681
+  //#define ARC_P_CIRCLES         // Enable the 'P' parameter to specify complete circles
682
+  //#define CNC_WORKSPACE_PLANES  // Allow G2/G3 to operate in XY, ZX, or YZ planes
683
+#endif
678 684
 
679 685
 // Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
680 686
 //#define BEZIER_CURVE_SUPPORT
@@ -800,6 +806,7 @@
800 806
   #define PAUSE_PARK_NO_STEPPER_TIMEOUT       // Enable to have stepper motors hold position during filament change
801 807
                                               // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
802 808
   //#define PARK_HEAD_ON_PAUSE                // Go to filament change position on pause, return to print position on resume
809
+  //#define HOME_BEFORE_FILAMENT_CHANGE       // Ensure homing has been completed prior to parking for filament change
803 810
 #endif
804 811
 
805 812
 // @section tmc
@@ -1192,12 +1199,12 @@
1192 1199
 /**
1193 1200
  * Auto-report temperatures with M155 S<seconds>
1194 1201
  */
1195
-//#define AUTO_REPORT_TEMPERATURES
1202
+#define AUTO_REPORT_TEMPERATURES
1196 1203
 
1197 1204
 /**
1198 1205
  * Include capabilities in M115 output
1199 1206
  */
1200
-//#define EXTENDED_CAPABILITIES_REPORT
1207
+#define EXTENDED_CAPABILITIES_REPORT
1201 1208
 
1202 1209
 /**
1203 1210
  * Volumetric extrusion default state
@@ -1254,4 +1261,94 @@
1254 1261
   //#define USER_GCODE_5 "G28\nM503"
1255 1262
 #endif
1256 1263
 
1264
+/**
1265
+ * Specify an action command to send to the host when the printer is killed.
1266
+ * Will be sent in the form '//action:ACTION_ON_KILL', e.g. '//action:poweroff'.
1267
+ * The host must be configured to handle the action command.
1268
+ */
1269
+//#define ACTION_ON_KILL "poweroff"
1270
+
1271
+//===========================================================================
1272
+//====================== I2C Position Encoder Settings ======================
1273
+//===========================================================================
1274
+/**
1275
+ *  I2C position encoders for closed loop control.
1276
+ *  Developed by Chris Barr at Aus3D.
1277
+ *
1278
+ *  Wiki: http://wiki.aus3d.com.au/Magnetic_Encoder
1279
+ *  Github: https://github.com/Aus3D/MagneticEncoder
1280
+ *
1281
+ *  Supplier: http://aus3d.com.au/magnetic-encoder-module
1282
+ *  Alternative Supplier: http://reliabuild3d.com/
1283
+ *
1284
+ *  Reilabuild encoders have been modified to improve reliability.
1285
+ */
1286
+
1287
+//#define I2C_POSITION_ENCODERS
1288
+#if ENABLED(I2C_POSITION_ENCODERS)
1289
+
1290
+  #define I2CPE_ENCODER_CNT         1                       // The number of encoders installed; max of 5
1291
+                                                            // encoders supported currently.
1292
+
1293
+  #define I2CPE_ENC_1_ADDR          I2CPE_PRESET_ADDR_X     // I2C address of the encoder. 30-200.
1294
+  #define I2CPE_ENC_1_AXIS          X_AXIS                  // Axis the encoder module is installed on.  <X|Y|Z|E>_AXIS.
1295
+  #define I2CPE_ENC_1_TYPE          I2CPE_ENC_TYPE_LINEAR   // Type of encoder:  I2CPE_ENC_TYPE_LINEAR -or-
1296
+                                                            // I2CPE_ENC_TYPE_ROTARY.
1297
+  #define I2CPE_ENC_1_TICKS_UNIT    2048                    // 1024 for magnetic strips with 2mm poles; 2048 for
1298
+                                                            // 1mm poles. For linear encoders this is ticks / mm,
1299
+                                                            // for rotary encoders this is ticks / revolution.
1300
+  //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1301
+                                                            // steps per full revolution (motor steps/rev * microstepping)
1302
+  //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1303
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1304
+  #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1305
+                                                            // printer will attempt to correct the error; errors
1306
+                                                            // smaller than this are ignored to minimize effects of
1307
+                                                            // measurement noise / latency (filter).
1308
+
1309
+  #define I2CPE_ENC_2_ADDR          I2CPE_PRESET_ADDR_Y     // Same as above, but for encoder 2.
1310
+  #define I2CPE_ENC_2_AXIS          Y_AXIS
1311
+  #define I2CPE_ENC_2_TYPE          I2CPE_ENC_TYPE_LINEAR
1312
+  #define I2CPE_ENC_2_TICKS_UNIT    2048
1313
+  //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1314
+  //#define I2CPE_ENC_2_INVERT
1315
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1316
+  #define I2CPE_ENC_2_EC_THRESH     0.10
1317
+
1318
+  #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
1319
+  #define I2CPE_ENC_3_AXIS          Z_AXIS                  // as above, or use defaults below.
1320
+
1321
+  #define I2CPE_ENC_4_ADDR          I2CPE_PRESET_ADDR_E     // Encoder 4.
1322
+  #define I2CPE_ENC_4_AXIS          E_AXIS
1323
+
1324
+  #define I2CPE_ENC_5_ADDR          34                      // Encoder 5.
1325
+  #define I2CPE_ENC_5_AXIS          E_AXIS
1326
+
1327
+  // Default settings for encoders which are enabled, but without settings configured above.
1328
+  #define I2CPE_DEF_TYPE            I2CPE_ENC_TYPE_LINEAR
1329
+  #define I2CPE_DEF_ENC_TICKS_UNIT  2048
1330
+  #define I2CPE_DEF_TICKS_REV       (16 * 200)
1331
+  #define I2CPE_DEF_EC_METHOD       I2CPE_ECM_NONE
1332
+  #define I2CPE_DEF_EC_THRESH       0.1
1333
+
1334
+  //#define I2CPE_ERR_THRESH_ABORT  100.0                   // Threshold size for error (in mm) error on any given
1335
+                                                            // axis after which the printer will abort. Comment out to
1336
+                                                            // disable abort behaviour.
1337
+
1338
+  #define I2CPE_TIME_TRUSTED        10000                   // After an encoder fault, there must be no further fault
1339
+                                                            // for this amount of time (in ms) before the encoder
1340
+                                                            // is trusted again.
1341
+
1342
+  /**
1343
+   * Position is checked every time a new command is executed from the buffer but during long moves,
1344
+   * this setting determines the minimum update time between checks. A value of 100 works well with
1345
+   * error rolling average when attempting to correct only for skips and not for vibration.
1346
+   */
1347
+  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1348
+
1349
+  // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1350
+  #define I2CPE_ERR_ROLLING_AVERAGE
1351
+
1352
+#endif // I2C_POSITION_ENCODERS
1353
+
1257 1354
 #endif // CONFIGURATION_ADV_H

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

@@ -58,15 +58,15 @@
58 58
 //===========================================================================
59 59
 //============================= DELTA Printer ===============================
60 60
 //===========================================================================
61
-// For Delta printers start with one of the configuration files in the
61
+// For a Delta printer start with one of the configuration files in the
62 62
 // example_configurations/delta directory and customize for your machine.
63 63
 //
64 64
 
65 65
 //===========================================================================
66 66
 //============================= SCARA Printer ===============================
67 67
 //===========================================================================
68
-// For a Scara printer replace the configuration files with the files in the
69
-// example_configurations/SCARA directory.
68
+// For a SCARA printer start with the configuration files in
69
+// example_configurations/SCARA and customize for your machine.
70 70
 //
71 71
 
72 72
 // @section info
@@ -138,6 +138,25 @@
138 138
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
139 139
 //#define SINGLENOZZLE
140 140
 
141
+/**
142
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
143
+ *
144
+ * This device allows one stepper driver on a control board to drive
145
+ * two to eight stepper motors, one at a time, in a manner suitable
146
+ * for extruders.
147
+ *
148
+ * This option only allows the multiplexer to switch on tool-change.
149
+ * Additional options to configure custom E moves are pending.
150
+ */
151
+//#define MK2_MULTIPLEXER
152
+#if ENABLED(MK2_MULTIPLEXER)
153
+  // Override the default DIO selector pins here, if needed.
154
+  // Some pins files may provide defaults for these pins.
155
+  //#define E_MUX0_PIN 40  // Always Required
156
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
157
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
158
+#endif
159
+
141 160
 // A dual extruder that uses a single stepper motor
142 161
 //#define SWITCHING_EXTRUDER
143 162
 #if ENABLED(SWITCHING_EXTRUDER)
@@ -547,7 +566,6 @@
547 566
  *
548 567
  */
549 568
 //#define Z_MIN_PROBE_ENDSTOP
550
-//#define Z_MIN_PROBE_PIN Z_MAX_PIN
551 569
 
552 570
 /**
553 571
  * Probe Type
@@ -862,12 +880,14 @@
862 880
   #define UBL_MESH_INSET 1          // Mesh inset margin on print area
863 881
   #define GRID_MAX_POINTS_X 10      // Don't use more than 15 points per axis, implementation limited.
864 882
   #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
865
-  #define UBL_PROBE_PT_1_X 39       // These set the probe locations for when UBL does a 3-Point leveling
866
-  #define UBL_PROBE_PT_1_Y 180      // of the mesh.
883
+
884
+  #define UBL_PROBE_PT_1_X 39       // Probing points for 3-Point leveling of the mesh
885
+  #define UBL_PROBE_PT_1_Y 180
867 886
   #define UBL_PROBE_PT_2_X 39
868 887
   #define UBL_PROBE_PT_2_Y 20
869 888
   #define UBL_PROBE_PT_3_X 180
870 889
   #define UBL_PROBE_PT_3_Y 20
890
+
871 891
   #define UBL_G26_MESH_VALIDATION   // Enable G26 mesh validation
872 892
   #define UBL_MESH_EDIT_MOVES_Z     // Sophisticated users prefer no movement of nozzle
873 893
 
@@ -922,6 +942,7 @@
922 942
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
923 943
 // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
924 944
 // - Prevent Z homing when the Z probe is outside bed area.
945
+//
925 946
 //#define Z_SAFE_HOMING
926 947
 
927 948
 #if ENABLED(Z_SAFE_HOMING)
@@ -946,13 +967,10 @@
946 967
 // M500 - stores parameters in EEPROM
947 968
 // M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).
948 969
 // M502 - reverts to the default "factory settings".  You still need to store them in EEPROM afterwards if you want to.
949
-//define this to enable EEPROM support
950
-//#define EEPROM_SETTINGS
951
-
952
-#if ENABLED(EEPROM_SETTINGS)
953
-  // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out:
954
-  #define EEPROM_CHITCHAT // Please keep turned on if you can.
955
-#endif
970
+//
971
+//#define EEPROM_SETTINGS // Enable for M500 and M501 commands
972
+//#define DISABLE_M503    // Saves ~2700 bytes of PROGMEM. Disable for release!
973
+#define EEPROM_CHITCHAT   // Give feedback on EEPROM commands. Disable to save PROGMEM.
956 974
 
957 975
 //
958 976
 // Host Keepalive
@@ -1111,10 +1129,11 @@
1111 1129
  *
1112 1130
  * Select the language to display on the LCD. These languages are available:
1113 1131
  *
1114
- *    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
1115
- *    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk, test
1132
+ *    en, an, bg, ca, cn, cz, cz_utf8, de, el, el-gr, es, eu, fi, fr, gl, hr,
1133
+ *    it, kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk,
1134
+ *    zh_CN, zh_TW, test
1116 1135
  *
1117
- * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'test':'TEST' }
1136
+ * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'cz_utf8':'Czech (UTF8)', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'zh_CN':'Chinese (Simplified)', 'zh_TW':'Chinese (Taiwan)', test':'TEST' }
1118 1137
  */
1119 1138
 //#define LCD_LANGUAGE en
1120 1139
 
@@ -1263,12 +1282,6 @@
1263 1282
 //#define ULTIPANEL
1264 1283
 
1265 1284
 //
1266
-// Cartesio UI
1267
-// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1268
-//
1269
-//#define CARTESIO_UI
1270
-
1271
-//
1272 1285
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
1273 1286
 // http://reprap.org/wiki/PanelOne
1274 1287
 //
@@ -1351,6 +1364,27 @@
1351 1364
 //#define BQ_LCD_SMART_CONTROLLER
1352 1365
 
1353 1366
 //
1367
+// Cartesio UI
1368
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1369
+//
1370
+//#define CARTESIO_UI
1371
+
1372
+//
1373
+// ANET_10 Controller supported displays.
1374
+//
1375
+//#define ANET_KEYPAD_LCD         // Requires ADC_KEYPAD_PIN to be assigned to an analog pin.
1376
+                                  // This LCD is known to be susceptible to electrical interference
1377
+                                  // which scrambles the display.  Pressing any button clears it up.
1378
+//#define ANET_FULL_GRAPHICS_LCD  // Anet 128x64 full graphics lcd with rotary encoder as used on Anet A6
1379
+                                  // A clone of the RepRapDiscount full graphics display but with
1380
+                                  // different pins/wiring (see pins_ANET_10.h).
1381
+
1382
+//
1383
+// LCD for Melzi Card with Graphical LCD
1384
+//
1385
+//#define LCD_FOR_MELZI
1386
+
1387
+//
1354 1388
 // CONTROLLER TYPE: I2C
1355 1389
 //
1356 1390
 // Note: These controllers require the installation of Arduino's LiquidCrystal_I2C
@@ -1366,6 +1400,9 @@
1366 1400
 //
1367 1401
 // Sainsmart YW Robot (LCM1602) LCD Display
1368 1402
 //
1403
+// Note: This controller requires F.Malpartida's LiquidCrystal_I2C library
1404
+// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
1405
+//
1369 1406
 //#define LCD_I2C_SAINSMART_YWROBOT
1370 1407
 
1371 1408
 //
@@ -1397,6 +1434,11 @@
1397 1434
 //#define U8GLIB_SSD1306
1398 1435
 
1399 1436
 //
1437
+// TinyBoy2 128x64 OLED / Encoder Panel
1438
+//
1439
+//#define OLED_PANEL_TINYBOY2
1440
+
1441
+//
1400 1442
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1401 1443
 //
1402 1444
 //#define SAV_3DGLCD
@@ -1413,11 +1455,6 @@
1413 1455
 //
1414 1456
 //#define SAV_3DLCD
1415 1457
 
1416
-//
1417
-// TinyBoy2 128x64 OLED / Encoder Panel
1418
-//
1419
-//#define OLED_PANEL_TINYBOY2
1420
-
1421 1458
 //=============================================================================
1422 1459
 //=============================== Extra Features ==============================
1423 1460
 //=============================================================================
@@ -1456,12 +1493,15 @@
1456 1493
 // SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure
1457 1494
 //#define SF_ARC_FIX
1458 1495
 
1459
-// Support for the BariCUDA Paste Extruder.
1496
+// Support for the BariCUDA Paste Extruder
1460 1497
 //#define BARICUDA
1461 1498
 
1462
-//define BlinkM/CyzRgb Support
1499
+// Support for BlinkM/CyzRgb
1463 1500
 //#define BLINKM
1464 1501
 
1502
+// Support for PCA9632 PWM LED driver
1503
+//#define PCA9632
1504
+
1465 1505
 /**
1466 1506
  * RGB LED / LED Strip Control
1467 1507
  *
@@ -1499,7 +1539,7 @@
1499 1539
  *  - Change to green once print has finished
1500 1540
  *  - Turn off after the print has finished and the user has pushed a button
1501 1541
  */
1502
-#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED)
1542
+#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED) || ENABLED(PCA9632)
1503 1543
   #define PRINTER_EVENT_LEDS
1504 1544
 #endif
1505 1545
 

+ 72
- 32
Marlin/example_configurations/FolgerTech-i3-2020/Configuration.h Просмотреть файл

@@ -58,15 +58,15 @@
58 58
 //===========================================================================
59 59
 //============================= DELTA Printer ===============================
60 60
 //===========================================================================
61
-// For a Delta printer replace the configuration files with the files in the
62
-// example_configurations/delta directory.
61
+// For a Delta printer start with one of the configuration files in the
62
+// example_configurations/delta directory and customize for your machine.
63 63
 //
64 64
 
65 65
 //===========================================================================
66 66
 //============================= SCARA Printer ===============================
67 67
 //===========================================================================
68
-// For a Scara printer replace the configuration files with the files in the
69
-// example_configurations/SCARA directory.
68
+// For a SCARA printer start with the configuration files in
69
+// example_configurations/SCARA and customize for your machine.
70 70
 //
71 71
 
72 72
 // @section info
@@ -138,6 +138,25 @@
138 138
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
139 139
 //#define SINGLENOZZLE
140 140
 
141
+/**
142
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
143
+ *
144
+ * This device allows one stepper driver on a control board to drive
145
+ * two to eight stepper motors, one at a time, in a manner suitable
146
+ * for extruders.
147
+ *
148
+ * This option only allows the multiplexer to switch on tool-change.
149
+ * Additional options to configure custom E moves are pending.
150
+ */
151
+//#define MK2_MULTIPLEXER
152
+#if ENABLED(MK2_MULTIPLEXER)
153
+  // Override the default DIO selector pins here, if needed.
154
+  // Some pins files may provide defaults for these pins.
155
+  //#define E_MUX0_PIN 40  // Always Required
156
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
157
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
158
+#endif
159
+
141 160
 // A dual extruder that uses a single stepper motor
142 161
 //#define SWITCHING_EXTRUDER
143 162
 #if ENABLED(SWITCHING_EXTRUDER)
@@ -571,7 +590,6 @@
571 590
  *
572 591
  */
573 592
 //#define Z_MIN_PROBE_ENDSTOP
574
-//#define Z_MIN_PROBE_PIN Z_MAX_PIN
575 593
 
576 594
 /**
577 595
  * Probe Type
@@ -649,7 +667,7 @@
649 667
  */
650 668
 #define X_PROBE_OFFSET_FROM_EXTRUDER 38     // X offset: -left  +right  [of the nozzle]
651 669
 #define Y_PROBE_OFFSET_FROM_EXTRUDER -7     // Y offset: -front +behind [the nozzle]
652
-#define Z_PROBE_OFFSET_FROM_EXTRUDER -10.1  // Z offset: -below +above  [the nozzle]
670
+#define Z_PROBE_OFFSET_FROM_EXTRUDER -10.4  // Z offset: -below +above  [the nozzle]
653 671
 
654 672
 // X and Y axis travel speed (mm/m) between probes
655 673
 #define XY_PROBE_SPEED 7500
@@ -884,12 +902,14 @@
884 902
   #define UBL_MESH_INSET 1          // Mesh inset margin on print area
885 903
   #define GRID_MAX_POINTS_X 10      // Don't use more than 15 points per axis, implementation limited.
886 904
   #define GRID_MAX_POINTS_Y 10
887
-  #define UBL_PROBE_PT_1_X 45       // These set the probe locations for when UBL does a 3-Point leveling
888
-  #define UBL_PROBE_PT_1_Y 170      // of the mesh.
905
+
906
+  #define UBL_PROBE_PT_1_X 45       // Probing points for 3-Point leveling of the mesh
907
+  #define UBL_PROBE_PT_1_Y 170
889 908
   #define UBL_PROBE_PT_2_X 45
890 909
   #define UBL_PROBE_PT_2_Y 25
891 910
   #define UBL_PROBE_PT_3_X 180
892 911
   #define UBL_PROBE_PT_3_Y 25
912
+
893 913
   #define UBL_G26_MESH_VALIDATION   // Enable G26 mesh validation
894 914
   #define UBL_MESH_EDIT_MOVES_Z     // Sophisticated users prefer no movement of nozzle
895 915
 
@@ -944,6 +964,7 @@
944 964
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
945 965
 // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
946 966
 // - Prevent Z homing when the Z probe is outside bed area.
967
+//
947 968
 #define Z_SAFE_HOMING
948 969
 
949 970
 #if ENABLED(Z_SAFE_HOMING)
@@ -968,13 +989,10 @@
968 989
 // M500 - stores parameters in EEPROM
969 990
 // M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).
970 991
 // M502 - reverts to the default "factory settings".  You still need to store them in EEPROM afterwards if you want to.
971
-//define this to enable EEPROM support
972
-#define EEPROM_SETTINGS
973
-
974
-#if ENABLED(EEPROM_SETTINGS)
975
-  // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out:
976
-  #define EEPROM_CHITCHAT // Please keep turned on if you can.
977
-#endif
992
+//
993
+#define EEPROM_SETTINGS   // Enable for M500 and M501 commands
994
+//#define DISABLE_M503    // Saves ~2700 bytes of PROGMEM. Disable for release!
995
+#define EEPROM_CHITCHAT   // Give feedback on EEPROM commands. Disable to save PROGMEM.
978 996
 
979 997
 //
980 998
 // Host Keepalive
@@ -1133,10 +1151,11 @@
1133 1151
  *
1134 1152
  * Select the language to display on the LCD. These languages are available:
1135 1153
  *
1136
- *    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
1137
- *    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk, test
1154
+ *    en, an, bg, ca, cn, cz, cz_utf8, de, el, el-gr, es, eu, fi, fr, gl, hr,
1155
+ *    it, kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk,
1156
+ *    zh_CN, zh_TW, test
1138 1157
  *
1139
- * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'test':'TEST' }
1158
+ * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'cz_utf8':'Czech (UTF8)', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'zh_CN':'Chinese (Simplified)', 'zh_TW':'Chinese (Taiwan)', test':'TEST' }
1140 1159
  */
1141 1160
 #define LCD_LANGUAGE en
1142 1161
 
@@ -1285,12 +1304,6 @@
1285 1304
 //#define ULTIPANEL
1286 1305
 
1287 1306
 //
1288
-// Cartesio UI
1289
-// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1290
-//
1291
-//#define CARTESIO_UI
1292
-
1293
-//
1294 1307
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
1295 1308
 // http://reprap.org/wiki/PanelOne
1296 1309
 //
@@ -1373,6 +1386,27 @@
1373 1386
 //#define BQ_LCD_SMART_CONTROLLER
1374 1387
 
1375 1388
 //
1389
+// Cartesio UI
1390
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1391
+//
1392
+//#define CARTESIO_UI
1393
+
1394
+//
1395
+// ANET_10 Controller supported displays.
1396
+//
1397
+//#define ANET_KEYPAD_LCD         // Requires ADC_KEYPAD_PIN to be assigned to an analog pin.
1398
+                                  // This LCD is known to be susceptible to electrical interference
1399
+                                  // which scrambles the display.  Pressing any button clears it up.
1400
+//#define ANET_FULL_GRAPHICS_LCD  // Anet 128x64 full graphics lcd with rotary encoder as used on Anet A6
1401
+                                  // A clone of the RepRapDiscount full graphics display but with
1402
+                                  // different pins/wiring (see pins_ANET_10.h).
1403
+
1404
+//
1405
+// LCD for Melzi Card with Graphical LCD
1406
+//
1407
+//#define LCD_FOR_MELZI
1408
+
1409
+//
1376 1410
 // CONTROLLER TYPE: I2C
1377 1411
 //
1378 1412
 // Note: These controllers require the installation of Arduino's LiquidCrystal_I2C
@@ -1388,6 +1422,9 @@
1388 1422
 //
1389 1423
 // Sainsmart YW Robot (LCM1602) LCD Display
1390 1424
 //
1425
+// Note: This controller requires F.Malpartida's LiquidCrystal_I2C library
1426
+// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
1427
+//
1391 1428
 //#define LCD_I2C_SAINSMART_YWROBOT
1392 1429
 
1393 1430
 //
@@ -1419,6 +1456,11 @@
1419 1456
 //#define U8GLIB_SSD1306
1420 1457
 
1421 1458
 //
1459
+// TinyBoy2 128x64 OLED / Encoder Panel
1460
+//
1461
+//#define OLED_PANEL_TINYBOY2
1462
+
1463
+//
1422 1464
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1423 1465
 //
1424 1466
 //#define SAV_3DGLCD
@@ -1435,11 +1477,6 @@
1435 1477
 //
1436 1478
 //#define SAV_3DLCD
1437 1479
 
1438
-//
1439
-// TinyBoy2 128x64 OLED / Encoder Panel
1440
-//
1441
-//#define OLED_PANEL_TINYBOY2
1442
-
1443 1480
 //=============================================================================
1444 1481
 //=============================== Extra Features ==============================
1445 1482
 //=============================================================================
@@ -1478,12 +1515,15 @@
1478 1515
 // SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure
1479 1516
 //#define SF_ARC_FIX
1480 1517
 
1481
-// Support for the BariCUDA Paste Extruder.
1518
+// Support for the BariCUDA Paste Extruder
1482 1519
 //#define BARICUDA
1483 1520
 
1484
-//define BlinkM/CyzRgb Support
1521
+// Support for BlinkM/CyzRgb
1485 1522
 //#define BLINKM
1486 1523
 
1524
+// Support for PCA9632 PWM LED driver
1525
+//#define PCA9632
1526
+
1487 1527
 /**
1488 1528
  * RGB LED / LED Strip Control
1489 1529
  *
@@ -1521,7 +1561,7 @@
1521 1561
  *  - Change to green once print has finished
1522 1562
  *  - Turn off after the print has finished and the user has pushed a button
1523 1563
  */
1524
-#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED)
1564
+#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED) || ENABLED(PCA9632)
1525 1565
   #define PRINTER_EVENT_LEDS
1526 1566
 #endif
1527 1567
 

+ 113
- 16
Marlin/example_configurations/FolgerTech-i3-2020/Configuration_adv.h Просмотреть файл

@@ -123,8 +123,8 @@
123 123
   #define AUTOTEMP_OLDWEIGHT 0.98
124 124
 #endif
125 125
 
126
-//Show Temperature ADC value
127
-//The M105 command return, besides traditional information, the ADC value read from temperature sensors.
126
+// Show Temperature ADC value
127
+// Enable for M105 to include ADC values read from temperature sensors.
128 128
 //#define SHOW_TEMP_ADC_VALUES
129 129
 
130 130
 /**
@@ -419,16 +419,16 @@
419 419
  *    M908 - BQ_ZUM_MEGA_3D, RAMBO, PRINTRBOARD_REVF, RIGIDBOARD_V2 & SCOOVO_X9H
420 420
  *    M909, M910 & LCD - only PRINTRBOARD_REVF & RIGIDBOARD_V2
421 421
  */
422
-//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps
423
-//#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
424
-//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 } // Default drive percent - X, Y, Z, E axis
422
+//#define PWM_MOTOR_CURRENT { 1300, 1300, 1250 }          // Values in milliamps
423
+//#define DIGIPOT_MOTOR_CURRENT { 135,135,135,135,135 }   // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
424
+//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 }    // Default drive percent - X, Y, Z, E axis
425 425
 
426 426
 // Uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro
427 427
 //#define DIGIPOT_I2C
428
-//#define DIGIPOT_MCP4018
428
+//#define DIGIPOT_MCP4018          // Requires library from https://github.com/stawel/SlowSoftI2CMaster
429 429
 #define DIGIPOT_I2C_NUM_CHANNELS 8 // 5DPRINT: 4     AZTEEG_X3_PRO: 8
430 430
 // Actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS
431
-#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0}  //  AZTEEG_X3_PRO
431
+#define DIGIPOT_I2C_MOTOR_CURRENTS { 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 }  //  AZTEEG_X3_PRO
432 432
 
433 433
 //===========================================================================
434 434
 //=============================Additional Features===========================
@@ -509,7 +509,7 @@
509 509
   #endif
510 510
 
511 511
   // Show a progress bar on HD44780 LCDs for SD printing
512
-  //#define LCD_PROGRESS_BAR
512
+  #define LCD_PROGRESS_BAR
513 513
 
514 514
   #if ENABLED(LCD_PROGRESS_BAR)
515 515
     // Amount of time (ms) to show the bar
@@ -648,7 +648,7 @@
648 648
    *
649 649
    * Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
650 650
    *
651
-   * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
651
+   * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
652 652
    * Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
653 653
    */
654 654
   #define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
@@ -678,10 +678,16 @@
678 678
 
679 679
 // @section extras
680 680
 
681
-// Arc interpretation settings:
682
-#define ARC_SUPPORT  // Disabling this saves ~2738 bytes
683
-#define MM_PER_ARC_SEGMENT 1
684
-#define N_ARC_CORRECTION 25
681
+//
682
+// G2/G3 Arc Support
683
+//
684
+#define ARC_SUPPORT               // Disable this feature to save ~3226 bytes
685
+#if ENABLED(ARC_SUPPORT)
686
+  #define MM_PER_ARC_SEGMENT  1   // Length of each arc segment
687
+  #define N_ARC_CORRECTION   25   // Number of intertpolated segments between corrections
688
+  //#define ARC_P_CIRCLES         // Enable the 'P' parameter to specify complete circles
689
+  //#define CNC_WORKSPACE_PLANES  // Allow G2/G3 to operate in XY, ZX, or YZ planes
690
+#endif
685 691
 
686 692
 // Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
687 693
 //#define BEZIER_CURVE_SUPPORT
@@ -809,6 +815,7 @@
809 815
   #define PAUSE_PARK_NO_STEPPER_TIMEOUT       // Enable to have stepper motors hold position during filament change
810 816
                                               // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
811 817
   #define PARK_HEAD_ON_PAUSE                  // Go to filament change position on pause, return to print position on resume
818
+  //#define HOME_BEFORE_FILAMENT_CHANGE       // Ensure homing has been completed prior to parking for filament change
812 819
 #endif
813 820
 
814 821
 // @section tmc
@@ -1205,12 +1212,12 @@
1205 1212
 /**
1206 1213
  * Auto-report temperatures with M155 S<seconds>
1207 1214
  */
1208
-//#define AUTO_REPORT_TEMPERATURES
1215
+#define AUTO_REPORT_TEMPERATURES
1209 1216
 
1210 1217
 /**
1211 1218
  * Include capabilities in M115 output
1212 1219
  */
1213
-//#define EXTENDED_CAPABILITIES_REPORT
1220
+#define EXTENDED_CAPABILITIES_REPORT
1214 1221
 
1215 1222
 /**
1216 1223
  * Volumetric extrusion default state
@@ -1228,7 +1235,7 @@
1228 1235
  *  - M206 and M428 are disabled.
1229 1236
  *  - G92 will revert to its behavior from Marlin 1.0.
1230 1237
  */
1231
-//#define NO_WORKSPACE_OFFSETS
1238
+#define NO_WORKSPACE_OFFSETS
1232 1239
 
1233 1240
 /**
1234 1241
  * Set the number of proportional font spaces required to fill up a typical character space.
@@ -1267,4 +1274,94 @@
1267 1274
   //#define USER_GCODE_5 "G28\nM503"
1268 1275
 #endif
1269 1276
 
1277
+/**
1278
+ * Specify an action command to send to the host when the printer is killed.
1279
+ * Will be sent in the form '//action:ACTION_ON_KILL', e.g. '//action:poweroff'.
1280
+ * The host must be configured to handle the action command.
1281
+ */
1282
+//#define ACTION_ON_KILL "poweroff"
1283
+
1284
+//===========================================================================
1285
+//====================== I2C Position Encoder Settings ======================
1286
+//===========================================================================
1287
+/**
1288
+ *  I2C position encoders for closed loop control.
1289
+ *  Developed by Chris Barr at Aus3D.
1290
+ *
1291
+ *  Wiki: http://wiki.aus3d.com.au/Magnetic_Encoder
1292
+ *  Github: https://github.com/Aus3D/MagneticEncoder
1293
+ *
1294
+ *  Supplier: http://aus3d.com.au/magnetic-encoder-module
1295
+ *  Alternative Supplier: http://reliabuild3d.com/
1296
+ *
1297
+ *  Reilabuild encoders have been modified to improve reliability.
1298
+ */
1299
+
1300
+//#define I2C_POSITION_ENCODERS
1301
+#if ENABLED(I2C_POSITION_ENCODERS)
1302
+
1303
+  #define I2CPE_ENCODER_CNT         1                       // The number of encoders installed; max of 5
1304
+                                                            // encoders supported currently.
1305
+
1306
+  #define I2CPE_ENC_1_ADDR          I2CPE_PRESET_ADDR_X     // I2C address of the encoder. 30-200.
1307
+  #define I2CPE_ENC_1_AXIS          X_AXIS                  // Axis the encoder module is installed on.  <X|Y|Z|E>_AXIS.
1308
+  #define I2CPE_ENC_1_TYPE          I2CPE_ENC_TYPE_LINEAR   // Type of encoder:  I2CPE_ENC_TYPE_LINEAR -or-
1309
+                                                            // I2CPE_ENC_TYPE_ROTARY.
1310
+  #define I2CPE_ENC_1_TICKS_UNIT    2048                    // 1024 for magnetic strips with 2mm poles; 2048 for
1311
+                                                            // 1mm poles. For linear encoders this is ticks / mm,
1312
+                                                            // for rotary encoders this is ticks / revolution.
1313
+  //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1314
+                                                            // steps per full revolution (motor steps/rev * microstepping)
1315
+  //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1316
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1317
+  #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1318
+                                                            // printer will attempt to correct the error; errors
1319
+                                                            // smaller than this are ignored to minimize effects of
1320
+                                                            // measurement noise / latency (filter).
1321
+
1322
+  #define I2CPE_ENC_2_ADDR          I2CPE_PRESET_ADDR_Y     // Same as above, but for encoder 2.
1323
+  #define I2CPE_ENC_2_AXIS          Y_AXIS
1324
+  #define I2CPE_ENC_2_TYPE          I2CPE_ENC_TYPE_LINEAR
1325
+  #define I2CPE_ENC_2_TICKS_UNIT    2048
1326
+  //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1327
+  //#define I2CPE_ENC_2_INVERT
1328
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1329
+  #define I2CPE_ENC_2_EC_THRESH     0.10
1330
+
1331
+  #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
1332
+  #define I2CPE_ENC_3_AXIS          Z_AXIS                  // as above, or use defaults below.
1333
+
1334
+  #define I2CPE_ENC_4_ADDR          I2CPE_PRESET_ADDR_E     // Encoder 4.
1335
+  #define I2CPE_ENC_4_AXIS          E_AXIS
1336
+
1337
+  #define I2CPE_ENC_5_ADDR          34                      // Encoder 5.
1338
+  #define I2CPE_ENC_5_AXIS          E_AXIS
1339
+
1340
+  // Default settings for encoders which are enabled, but without settings configured above.
1341
+  #define I2CPE_DEF_TYPE            I2CPE_ENC_TYPE_LINEAR
1342
+  #define I2CPE_DEF_ENC_TICKS_UNIT  2048
1343
+  #define I2CPE_DEF_TICKS_REV       (16 * 200)
1344
+  #define I2CPE_DEF_EC_METHOD       I2CPE_ECM_NONE
1345
+  #define I2CPE_DEF_EC_THRESH       0.1
1346
+
1347
+  //#define I2CPE_ERR_THRESH_ABORT  100.0                   // Threshold size for error (in mm) error on any given
1348
+                                                            // axis after which the printer will abort. Comment out to
1349
+                                                            // disable abort behaviour.
1350
+
1351
+  #define I2CPE_TIME_TRUSTED        10000                   // After an encoder fault, there must be no further fault
1352
+                                                            // for this amount of time (in ms) before the encoder
1353
+                                                            // is trusted again.
1354
+
1355
+  /**
1356
+   * Position is checked every time a new command is executed from the buffer but during long moves,
1357
+   * this setting determines the minimum update time between checks. A value of 100 works well with
1358
+   * error rolling average when attempting to correct only for skips and not for vibration.
1359
+   */
1360
+  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1361
+
1362
+  // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1363
+  #define I2CPE_ERR_ROLLING_AVERAGE
1364
+
1365
+#endif // I2C_POSITION_ENCODERS
1366
+
1270 1367
 #endif // CONFIGURATION_ADV_H

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

@@ -58,15 +58,15 @@
58 58
 //===========================================================================
59 59
 //============================= DELTA Printer ===============================
60 60
 //===========================================================================
61
-// For Delta printers start with one of the configuration files in the
61
+// For a Delta printer start with one of the configuration files in the
62 62
 // example_configurations/delta directory and customize for your machine.
63 63
 //
64 64
 
65 65
 //===========================================================================
66 66
 //============================= SCARA Printer ===============================
67 67
 //===========================================================================
68
-// For a Scara printer replace the configuration files with the files in the
69
-// example_configurations/SCARA directory.
68
+// For a SCARA printer start with the configuration files in
69
+// example_configurations/SCARA and customize for your machine.
70 70
 //
71 71
 
72 72
 // @section info
@@ -141,6 +141,25 @@
141 141
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
142 142
 //#define SINGLENOZZLE
143 143
 
144
+/**
145
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
146
+ *
147
+ * This device allows one stepper driver on a control board to drive
148
+ * two to eight stepper motors, one at a time, in a manner suitable
149
+ * for extruders.
150
+ *
151
+ * This option only allows the multiplexer to switch on tool-change.
152
+ * Additional options to configure custom E moves are pending.
153
+ */
154
+//#define MK2_MULTIPLEXER
155
+#if ENABLED(MK2_MULTIPLEXER)
156
+  // Override the default DIO selector pins here, if needed.
157
+  // Some pins files may provide defaults for these pins.
158
+  //#define E_MUX0_PIN 40  // Always Required
159
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
160
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
161
+#endif
162
+
144 163
 // A dual extruder that uses a single stepper motor
145 164
 //#define SWITCHING_EXTRUDER
146 165
 #if ENABLED(SWITCHING_EXTRUDER)
@@ -555,7 +574,6 @@
555 574
  *
556 575
  */
557 576
 #define Z_MIN_PROBE_ENDSTOP
558
-//#define Z_MIN_PROBE_PIN Z_MAX_PIN
559 577
 
560 578
 /**
561 579
  * Probe Type
@@ -870,12 +888,14 @@
870 888
   #define UBL_MESH_INSET 1          // Mesh inset margin on print area
871 889
   #define GRID_MAX_POINTS_X 10      // Don't use more than 15 points per axis, implementation limited.
872 890
   #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
873
-  #define UBL_PROBE_PT_1_X 39       // These set the probe locations for when UBL does a 3-Point leveling
874
-  #define UBL_PROBE_PT_1_Y 180      // of the mesh.
891
+
892
+  #define UBL_PROBE_PT_1_X 39       // Probing points for 3-Point leveling of the mesh
893
+  #define UBL_PROBE_PT_1_Y 180
875 894
   #define UBL_PROBE_PT_2_X 39
876 895
   #define UBL_PROBE_PT_2_Y 20
877 896
   #define UBL_PROBE_PT_3_X 180
878 897
   #define UBL_PROBE_PT_3_Y 20
898
+
879 899
   #define UBL_G26_MESH_VALIDATION   // Enable G26 mesh validation
880 900
   #define UBL_MESH_EDIT_MOVES_Z     // Sophisticated users prefer no movement of nozzle
881 901
 
@@ -930,6 +950,7 @@
930 950
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
931 951
 // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
932 952
 // - Prevent Z homing when the Z probe is outside bed area.
953
+//
933 954
 //#define Z_SAFE_HOMING
934 955
 
935 956
 #if ENABLED(Z_SAFE_HOMING)
@@ -954,13 +975,10 @@
954 975
 // M500 - stores parameters in EEPROM
955 976
 // M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).
956 977
 // M502 - reverts to the default "factory settings".  You still need to store them in EEPROM afterwards if you want to.
957
-//define this to enable EEPROM support
958
-//#define EEPROM_SETTINGS
959
-
960
-#if ENABLED(EEPROM_SETTINGS)
961
-  // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out:
962
-  #define EEPROM_CHITCHAT // Please keep turned on if you can.
963
-#endif
978
+//
979
+//#define EEPROM_SETTINGS // Enable for M500 and M501 commands
980
+//#define DISABLE_M503    // Saves ~2700 bytes of PROGMEM. Disable for release!
981
+#define EEPROM_CHITCHAT   // Give feedback on EEPROM commands. Disable to save PROGMEM.
964 982
 
965 983
 //
966 984
 // Host Keepalive
@@ -1119,10 +1137,11 @@
1119 1137
  *
1120 1138
  * Select the language to display on the LCD. These languages are available:
1121 1139
  *
1122
- *    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
1123
- *    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk, test
1140
+ *    en, an, bg, ca, cn, cz, cz_utf8, de, el, el-gr, es, eu, fi, fr, gl, hr,
1141
+ *    it, kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk,
1142
+ *    zh_CN, zh_TW, test
1124 1143
  *
1125
- * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'test':'TEST' }
1144
+ * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'cz_utf8':'Czech (UTF8)', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'zh_CN':'Chinese (Simplified)', 'zh_TW':'Chinese (Taiwan)', test':'TEST' }
1126 1145
  */
1127 1146
 //#define LCD_LANGUAGE en
1128 1147
 
@@ -1271,12 +1290,6 @@
1271 1290
 //#define ULTIPANEL
1272 1291
 
1273 1292
 //
1274
-// Cartesio UI
1275
-// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1276
-//
1277
-//#define CARTESIO_UI
1278
-
1279
-//
1280 1293
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
1281 1294
 // http://reprap.org/wiki/PanelOne
1282 1295
 //
@@ -1359,6 +1372,27 @@
1359 1372
 //#define BQ_LCD_SMART_CONTROLLER
1360 1373
 
1361 1374
 //
1375
+// Cartesio UI
1376
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1377
+//
1378
+//#define CARTESIO_UI
1379
+
1380
+//
1381
+// ANET_10 Controller supported displays.
1382
+//
1383
+//#define ANET_KEYPAD_LCD         // Requires ADC_KEYPAD_PIN to be assigned to an analog pin.
1384
+                                  // This LCD is known to be susceptible to electrical interference
1385
+                                  // which scrambles the display.  Pressing any button clears it up.
1386
+//#define ANET_FULL_GRAPHICS_LCD  // Anet 128x64 full graphics lcd with rotary encoder as used on Anet A6
1387
+                                  // A clone of the RepRapDiscount full graphics display but with
1388
+                                  // different pins/wiring (see pins_ANET_10.h).
1389
+
1390
+//
1391
+// LCD for Melzi Card with Graphical LCD
1392
+//
1393
+//#define LCD_FOR_MELZI
1394
+
1395
+//
1362 1396
 // CONTROLLER TYPE: I2C
1363 1397
 //
1364 1398
 // Note: These controllers require the installation of Arduino's LiquidCrystal_I2C
@@ -1374,6 +1408,9 @@
1374 1408
 //
1375 1409
 // Sainsmart YW Robot (LCM1602) LCD Display
1376 1410
 //
1411
+// Note: This controller requires F.Malpartida's LiquidCrystal_I2C library
1412
+// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
1413
+//
1377 1414
 //#define LCD_I2C_SAINSMART_YWROBOT
1378 1415
 
1379 1416
 //
@@ -1405,6 +1442,11 @@
1405 1442
 //#define U8GLIB_SSD1306
1406 1443
 
1407 1444
 //
1445
+// TinyBoy2 128x64 OLED / Encoder Panel
1446
+//
1447
+//#define OLED_PANEL_TINYBOY2
1448
+
1449
+//
1408 1450
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1409 1451
 //
1410 1452
 //#define SAV_3DGLCD
@@ -1421,11 +1463,6 @@
1421 1463
 //
1422 1464
 //#define SAV_3DLCD
1423 1465
 
1424
-//
1425
-// TinyBoy2 128x64 OLED / Encoder Panel
1426
-//
1427
-//#define OLED_PANEL_TINYBOY2
1428
-
1429 1466
 //=============================================================================
1430 1467
 //=============================== Extra Features ==============================
1431 1468
 //=============================================================================
@@ -1464,12 +1501,15 @@
1464 1501
 // SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure
1465 1502
 //#define SF_ARC_FIX
1466 1503
 
1467
-// Support for the BariCUDA Paste Extruder.
1504
+// Support for the BariCUDA Paste Extruder
1468 1505
 //#define BARICUDA
1469 1506
 
1470
-//define BlinkM/CyzRgb Support
1507
+// Support for BlinkM/CyzRgb
1471 1508
 //#define BLINKM
1472 1509
 
1510
+// Support for PCA9632 PWM LED driver
1511
+//#define PCA9632
1512
+
1473 1513
 /**
1474 1514
  * RGB LED / LED Strip Control
1475 1515
  *
@@ -1507,7 +1547,7 @@
1507 1547
  *  - Change to green once print has finished
1508 1548
  *  - Turn off after the print has finished and the user has pushed a button
1509 1549
  */
1510
-#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED)
1550
+#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED) || ENABLED(PCA9632)
1511 1551
   #define PRINTER_EVENT_LEDS
1512 1552
 #endif
1513 1553
 

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

@@ -123,8 +123,8 @@
123 123
   #define AUTOTEMP_OLDWEIGHT 0.98
124 124
 #endif
125 125
 
126
-//Show Temperature ADC value
127
-//The M105 command return, besides traditional information, the ADC value read from temperature sensors.
126
+// Show Temperature ADC value
127
+// Enable for M105 to include ADC values read from temperature sensors.
128 128
 //#define SHOW_TEMP_ADC_VALUES
129 129
 
130 130
 /**
@@ -419,16 +419,16 @@
419 419
  *    M908 - BQ_ZUM_MEGA_3D, RAMBO, PRINTRBOARD_REVF, RIGIDBOARD_V2 & SCOOVO_X9H
420 420
  *    M909, M910 & LCD - only PRINTRBOARD_REVF & RIGIDBOARD_V2
421 421
  */
422
-//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps
423
-//#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
424
-//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 } // Default drive percent - X, Y, Z, E axis
422
+//#define PWM_MOTOR_CURRENT { 1300, 1300, 1250 }          // Values in milliamps
423
+//#define DIGIPOT_MOTOR_CURRENT { 135,135,135,135,135 }   // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
424
+//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 }    // Default drive percent - X, Y, Z, E axis
425 425
 
426 426
 // Uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro
427 427
 //#define DIGIPOT_I2C
428
-//#define DIGIPOT_MCP4018
428
+//#define DIGIPOT_MCP4018          // Requires library from https://github.com/stawel/SlowSoftI2CMaster
429 429
 #define DIGIPOT_I2C_NUM_CHANNELS 8 // 5DPRINT: 4     AZTEEG_X3_PRO: 8
430 430
 // Actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS
431
-#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0}  //  AZTEEG_X3_PRO
431
+#define DIGIPOT_I2C_MOTOR_CURRENTS { 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 }  //  AZTEEG_X3_PRO
432 432
 
433 433
 //===========================================================================
434 434
 //=============================Additional Features===========================
@@ -645,7 +645,7 @@
645 645
    *
646 646
    * Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
647 647
    *
648
-   * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
648
+   * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
649 649
    * Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
650 650
    */
651 651
   #define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
@@ -671,10 +671,16 @@
671 671
 
672 672
 // @section extras
673 673
 
674
-// Arc interpretation settings:
675
-#define ARC_SUPPORT  // Disabling this saves ~2738 bytes
676
-#define MM_PER_ARC_SEGMENT 1
677
-#define N_ARC_CORRECTION 25
674
+//
675
+// G2/G3 Arc Support
676
+//
677
+#define ARC_SUPPORT               // Disable this feature to save ~3226 bytes
678
+#if ENABLED(ARC_SUPPORT)
679
+  #define MM_PER_ARC_SEGMENT  1   // Length of each arc segment
680
+  #define N_ARC_CORRECTION   25   // Number of intertpolated segments between corrections
681
+  //#define ARC_P_CIRCLES         // Enable the 'P' parameter to specify complete circles
682
+  //#define CNC_WORKSPACE_PLANES  // Allow G2/G3 to operate in XY, ZX, or YZ planes
683
+#endif
678 684
 
679 685
 // Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
680 686
 //#define BEZIER_CURVE_SUPPORT
@@ -800,6 +806,7 @@
800 806
   #define PAUSE_PARK_NO_STEPPER_TIMEOUT       // Enable to have stepper motors hold position during filament change
801 807
                                               // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
802 808
   //#define PARK_HEAD_ON_PAUSE                // Go to filament change position on pause, return to print position on resume
809
+  //#define HOME_BEFORE_FILAMENT_CHANGE       // Ensure homing has been completed prior to parking for filament change
803 810
 #endif
804 811
 
805 812
 // @section tmc
@@ -1192,12 +1199,12 @@
1192 1199
 /**
1193 1200
  * Auto-report temperatures with M155 S<seconds>
1194 1201
  */
1195
-//#define AUTO_REPORT_TEMPERATURES
1202
+#define AUTO_REPORT_TEMPERATURES
1196 1203
 
1197 1204
 /**
1198 1205
  * Include capabilities in M115 output
1199 1206
  */
1200
-//#define EXTENDED_CAPABILITIES_REPORT
1207
+#define EXTENDED_CAPABILITIES_REPORT
1201 1208
 
1202 1209
 /**
1203 1210
  * Volumetric extrusion default state
@@ -1254,4 +1261,94 @@
1254 1261
   //#define USER_GCODE_5 "G28\nM503"
1255 1262
 #endif
1256 1263
 
1264
+/**
1265
+ * Specify an action command to send to the host when the printer is killed.
1266
+ * Will be sent in the form '//action:ACTION_ON_KILL', e.g. '//action:poweroff'.
1267
+ * The host must be configured to handle the action command.
1268
+ */
1269
+//#define ACTION_ON_KILL "poweroff"
1270
+
1271
+//===========================================================================
1272
+//====================== I2C Position Encoder Settings ======================
1273
+//===========================================================================
1274
+/**
1275
+ *  I2C position encoders for closed loop control.
1276
+ *  Developed by Chris Barr at Aus3D.
1277
+ *
1278
+ *  Wiki: http://wiki.aus3d.com.au/Magnetic_Encoder
1279
+ *  Github: https://github.com/Aus3D/MagneticEncoder
1280
+ *
1281
+ *  Supplier: http://aus3d.com.au/magnetic-encoder-module
1282
+ *  Alternative Supplier: http://reliabuild3d.com/
1283
+ *
1284
+ *  Reilabuild encoders have been modified to improve reliability.
1285
+ */
1286
+
1287
+//#define I2C_POSITION_ENCODERS
1288
+#if ENABLED(I2C_POSITION_ENCODERS)
1289
+
1290
+  #define I2CPE_ENCODER_CNT         1                       // The number of encoders installed; max of 5
1291
+                                                            // encoders supported currently.
1292
+
1293
+  #define I2CPE_ENC_1_ADDR          I2CPE_PRESET_ADDR_X     // I2C address of the encoder. 30-200.
1294
+  #define I2CPE_ENC_1_AXIS          X_AXIS                  // Axis the encoder module is installed on.  <X|Y|Z|E>_AXIS.
1295
+  #define I2CPE_ENC_1_TYPE          I2CPE_ENC_TYPE_LINEAR   // Type of encoder:  I2CPE_ENC_TYPE_LINEAR -or-
1296
+                                                            // I2CPE_ENC_TYPE_ROTARY.
1297
+  #define I2CPE_ENC_1_TICKS_UNIT    2048                    // 1024 for magnetic strips with 2mm poles; 2048 for
1298
+                                                            // 1mm poles. For linear encoders this is ticks / mm,
1299
+                                                            // for rotary encoders this is ticks / revolution.
1300
+  //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1301
+                                                            // steps per full revolution (motor steps/rev * microstepping)
1302
+  //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1303
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1304
+  #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1305
+                                                            // printer will attempt to correct the error; errors
1306
+                                                            // smaller than this are ignored to minimize effects of
1307
+                                                            // measurement noise / latency (filter).
1308
+
1309
+  #define I2CPE_ENC_2_ADDR          I2CPE_PRESET_ADDR_Y     // Same as above, but for encoder 2.
1310
+  #define I2CPE_ENC_2_AXIS          Y_AXIS
1311
+  #define I2CPE_ENC_2_TYPE          I2CPE_ENC_TYPE_LINEAR
1312
+  #define I2CPE_ENC_2_TICKS_UNIT    2048
1313
+  //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1314
+  //#define I2CPE_ENC_2_INVERT
1315
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1316
+  #define I2CPE_ENC_2_EC_THRESH     0.10
1317
+
1318
+  #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
1319
+  #define I2CPE_ENC_3_AXIS          Z_AXIS                  // as above, or use defaults below.
1320
+
1321
+  #define I2CPE_ENC_4_ADDR          I2CPE_PRESET_ADDR_E     // Encoder 4.
1322
+  #define I2CPE_ENC_4_AXIS          E_AXIS
1323
+
1324
+  #define I2CPE_ENC_5_ADDR          34                      // Encoder 5.
1325
+  #define I2CPE_ENC_5_AXIS          E_AXIS
1326
+
1327
+  // Default settings for encoders which are enabled, but without settings configured above.
1328
+  #define I2CPE_DEF_TYPE            I2CPE_ENC_TYPE_LINEAR
1329
+  #define I2CPE_DEF_ENC_TICKS_UNIT  2048
1330
+  #define I2CPE_DEF_TICKS_REV       (16 * 200)
1331
+  #define I2CPE_DEF_EC_METHOD       I2CPE_ECM_NONE
1332
+  #define I2CPE_DEF_EC_THRESH       0.1
1333
+
1334
+  //#define I2CPE_ERR_THRESH_ABORT  100.0                   // Threshold size for error (in mm) error on any given
1335
+                                                            // axis after which the printer will abort. Comment out to
1336
+                                                            // disable abort behaviour.
1337
+
1338
+  #define I2CPE_TIME_TRUSTED        10000                   // After an encoder fault, there must be no further fault
1339
+                                                            // for this amount of time (in ms) before the encoder
1340
+                                                            // is trusted again.
1341
+
1342
+  /**
1343
+   * Position is checked every time a new command is executed from the buffer but during long moves,
1344
+   * this setting determines the minimum update time between checks. A value of 100 works well with
1345
+   * error rolling average when attempting to correct only for skips and not for vibration.
1346
+   */
1347
+  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1348
+
1349
+  // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1350
+  #define I2CPE_ERR_ROLLING_AVERAGE
1351
+
1352
+#endif // I2C_POSITION_ENCODERS
1353
+
1257 1354
 #endif // CONFIGURATION_ADV_H

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

@@ -58,15 +58,15 @@
58 58
 //===========================================================================
59 59
 //============================= DELTA Printer ===============================
60 60
 //===========================================================================
61
-// For Delta printers start with one of the configuration files in the
61
+// For a Delta printer start with one of the configuration files in the
62 62
 // example_configurations/delta directory and customize for your machine.
63 63
 //
64 64
 
65 65
 //===========================================================================
66 66
 //============================= SCARA Printer ===============================
67 67
 //===========================================================================
68
-// For a Scara printer replace the configuration files with the files in the
69
-// example_configurations/SCARA directory.
68
+// For a SCARA printer start with the configuration files in
69
+// example_configurations/SCARA and customize for your machine.
70 70
 //
71 71
 
72 72
 // @section info
@@ -138,6 +138,25 @@
138 138
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
139 139
 //#define SINGLENOZZLE
140 140
 
141
+/**
142
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
143
+ *
144
+ * This device allows one stepper driver on a control board to drive
145
+ * two to eight stepper motors, one at a time, in a manner suitable
146
+ * for extruders.
147
+ *
148
+ * This option only allows the multiplexer to switch on tool-change.
149
+ * Additional options to configure custom E moves are pending.
150
+ */
151
+//#define MK2_MULTIPLEXER
152
+#if ENABLED(MK2_MULTIPLEXER)
153
+  // Override the default DIO selector pins here, if needed.
154
+  // Some pins files may provide defaults for these pins.
155
+  //#define E_MUX0_PIN 40  // Always Required
156
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
157
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
158
+#endif
159
+
141 160
 // A dual extruder that uses a single stepper motor
142 161
 //#define SWITCHING_EXTRUDER
143 162
 #if ENABLED(SWITCHING_EXTRUDER)
@@ -558,7 +577,6 @@
558 577
  *
559 578
  */
560 579
 //#define Z_MIN_PROBE_ENDSTOP
561
-//#define Z_MIN_PROBE_PIN Z_MAX_PIN
562 580
 
563 581
 /**
564 582
  * Probe Type
@@ -873,12 +891,14 @@
873 891
   #define UBL_MESH_INSET 1          // Mesh inset margin on print area
874 892
   #define GRID_MAX_POINTS_X 10      // Don't use more than 15 points per axis, implementation limited.
875 893
   #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
876
-  #define UBL_PROBE_PT_1_X 39       // These set the probe locations for when UBL does a 3-Point leveling
877
-  #define UBL_PROBE_PT_1_Y 180      // of the mesh.
894
+
895
+  #define UBL_PROBE_PT_1_X 39       // Probing points for 3-Point leveling of the mesh
896
+  #define UBL_PROBE_PT_1_Y 180
878 897
   #define UBL_PROBE_PT_2_X 39
879 898
   #define UBL_PROBE_PT_2_Y 20
880 899
   #define UBL_PROBE_PT_3_X 180
881 900
   #define UBL_PROBE_PT_3_Y 20
901
+
882 902
   #define UBL_G26_MESH_VALIDATION   // Enable G26 mesh validation
883 903
   #define UBL_MESH_EDIT_MOVES_Z     // Sophisticated users prefer no movement of nozzle
884 904
 
@@ -933,6 +953,7 @@
933 953
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
934 954
 // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
935 955
 // - Prevent Z homing when the Z probe is outside bed area.
956
+//
936 957
 #define Z_SAFE_HOMING
937 958
 
938 959
 #if ENABLED(Z_SAFE_HOMING)
@@ -957,13 +978,10 @@
957 978
 // M500 - stores parameters in EEPROM
958 979
 // M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).
959 980
 // M502 - reverts to the default "factory settings".  You still need to store them in EEPROM afterwards if you want to.
960
-//define this to enable EEPROM support
961
-#define EEPROM_SETTINGS
962
-
963
-#if ENABLED(EEPROM_SETTINGS)
964
-  // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out:
965
-  #define EEPROM_CHITCHAT // Please keep turned on if you can.
966
-#endif
981
+//
982
+#define EEPROM_SETTINGS   // Enable for M500 and M501 commands
983
+//#define DISABLE_M503    // Saves ~2700 bytes of PROGMEM. Disable for release!
984
+#define EEPROM_CHITCHAT   // Give feedback on EEPROM commands. Disable to save PROGMEM.
967 985
 
968 986
 //
969 987
 // Host Keepalive
@@ -1122,10 +1140,11 @@
1122 1140
  *
1123 1141
  * Select the language to display on the LCD. These languages are available:
1124 1142
  *
1125
- *    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
1126
- *    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk, test
1143
+ *    en, an, bg, ca, cn, cz, cz_utf8, de, el, el-gr, es, eu, fi, fr, gl, hr,
1144
+ *    it, kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk,
1145
+ *    zh_CN, zh_TW, test
1127 1146
  *
1128
- * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'test':'TEST' }
1147
+ * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'cz_utf8':'Czech (UTF8)', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'zh_CN':'Chinese (Simplified)', 'zh_TW':'Chinese (Taiwan)', test':'TEST' }
1129 1148
  */
1130 1149
 #define LCD_LANGUAGE en
1131 1150
 
@@ -1274,12 +1293,6 @@
1274 1293
 //#define ULTIPANEL
1275 1294
 
1276 1295
 //
1277
-// Cartesio UI
1278
-// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1279
-//
1280
-//#define CARTESIO_UI
1281
-
1282
-//
1283 1296
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
1284 1297
 // http://reprap.org/wiki/PanelOne
1285 1298
 //
@@ -1362,6 +1375,27 @@
1362 1375
 #define BQ_LCD_SMART_CONTROLLER
1363 1376
 
1364 1377
 //
1378
+// Cartesio UI
1379
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1380
+//
1381
+//#define CARTESIO_UI
1382
+
1383
+//
1384
+// ANET_10 Controller supported displays.
1385
+//
1386
+//#define ANET_KEYPAD_LCD         // Requires ADC_KEYPAD_PIN to be assigned to an analog pin.
1387
+                                  // This LCD is known to be susceptible to electrical interference
1388
+                                  // which scrambles the display.  Pressing any button clears it up.
1389
+//#define ANET_FULL_GRAPHICS_LCD  // Anet 128x64 full graphics lcd with rotary encoder as used on Anet A6
1390
+                                  // A clone of the RepRapDiscount full graphics display but with
1391
+                                  // different pins/wiring (see pins_ANET_10.h).
1392
+
1393
+//
1394
+// LCD for Melzi Card with Graphical LCD
1395
+//
1396
+//#define LCD_FOR_MELZI
1397
+
1398
+//
1365 1399
 // CONTROLLER TYPE: I2C
1366 1400
 //
1367 1401
 // Note: These controllers require the installation of Arduino's LiquidCrystal_I2C
@@ -1377,6 +1411,9 @@
1377 1411
 //
1378 1412
 // Sainsmart YW Robot (LCM1602) LCD Display
1379 1413
 //
1414
+// Note: This controller requires F.Malpartida's LiquidCrystal_I2C library
1415
+// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
1416
+//
1380 1417
 //#define LCD_I2C_SAINSMART_YWROBOT
1381 1418
 
1382 1419
 //
@@ -1408,6 +1445,11 @@
1408 1445
 //#define U8GLIB_SSD1306
1409 1446
 
1410 1447
 //
1448
+// TinyBoy2 128x64 OLED / Encoder Panel
1449
+//
1450
+//#define OLED_PANEL_TINYBOY2
1451
+
1452
+//
1411 1453
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1412 1454
 //
1413 1455
 //#define SAV_3DGLCD
@@ -1424,11 +1466,6 @@
1424 1466
 //
1425 1467
 //#define SAV_3DLCD
1426 1468
 
1427
-//
1428
-// TinyBoy2 128x64 OLED / Encoder Panel
1429
-//
1430
-//#define OLED_PANEL_TINYBOY2
1431
-
1432 1469
 //=============================================================================
1433 1470
 //=============================== Extra Features ==============================
1434 1471
 //=============================================================================
@@ -1467,12 +1504,15 @@
1467 1504
 // SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure
1468 1505
 //#define SF_ARC_FIX
1469 1506
 
1470
-// Support for the BariCUDA Paste Extruder.
1507
+// Support for the BariCUDA Paste Extruder
1471 1508
 //#define BARICUDA
1472 1509
 
1473
-//define BlinkM/CyzRgb Support
1510
+// Support for BlinkM/CyzRgb
1474 1511
 //#define BLINKM
1475 1512
 
1513
+// Support for PCA9632 PWM LED driver
1514
+//#define PCA9632
1515
+
1476 1516
 /**
1477 1517
  * RGB LED / LED Strip Control
1478 1518
  *
@@ -1510,7 +1550,7 @@
1510 1550
  *  - Change to green once print has finished
1511 1551
  *  - Turn off after the print has finished and the user has pushed a button
1512 1552
  */
1513
-#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED)
1553
+#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED) || ENABLED(PCA9632)
1514 1554
   #define PRINTER_EVENT_LEDS
1515 1555
 #endif
1516 1556
 

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

@@ -123,8 +123,8 @@
123 123
   #define AUTOTEMP_OLDWEIGHT 0.98
124 124
 #endif
125 125
 
126
-//Show Temperature ADC value
127
-//The M105 command return, besides traditional information, the ADC value read from temperature sensors.
126
+// Show Temperature ADC value
127
+// Enable for M105 to include ADC values read from temperature sensors.
128 128
 //#define SHOW_TEMP_ADC_VALUES
129 129
 
130 130
 /**
@@ -419,17 +419,16 @@
419 419
  *    M908 - BQ_ZUM_MEGA_3D, RAMBO, PRINTRBOARD_REVF, RIGIDBOARD_V2 & SCOOVO_X9H
420 420
  *    M909, M910 & LCD - only PRINTRBOARD_REVF & RIGIDBOARD_V2
421 421
  */
422
-//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps
423
-#define DIGIPOT_MOTOR_CURRENT {150, 170, 180, 190, 180} // Values 0-255 (bq ZUM Mega 3D (default): X = 150 [~1.17A]; Y = 170 [~1.33A]; Z = 180 [~1.41A]; E0 = 190 [~1.49A])
424
-
425
-//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 } // Default drive percent - X, Y, Z, E axis
422
+//#define PWM_MOTOR_CURRENT { 1300, 1300, 1250 }            // Values in milliamps
423
+#define DIGIPOT_MOTOR_CURRENT { 150, 170, 180, 190, 180 }   // Values 0-255 (bq ZUM Mega 3D (default): X = 150 [~1.17A]; Y = 170 [~1.33A]; Z = 180 [~1.41A]; E0 = 190 [~1.49A])
424
+//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 }      // Default drive percent - X, Y, Z, E axis
426 425
 
427 426
 // Uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro
428 427
 //#define DIGIPOT_I2C
429
-//#define DIGIPOT_MCP4018
428
+//#define DIGIPOT_MCP4018          // Requires library from https://github.com/stawel/SlowSoftI2CMaster
430 429
 #define DIGIPOT_I2C_NUM_CHANNELS 8 // 5DPRINT: 4     AZTEEG_X3_PRO: 8
431 430
 // Actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS
432
-#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0}  //  AZTEEG_X3_PRO
431
+#define DIGIPOT_I2C_MOTOR_CURRENTS { 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 }  //  AZTEEG_X3_PRO
433 432
 
434 433
 //===========================================================================
435 434
 //=============================Additional Features===========================
@@ -629,7 +628,7 @@
629 628
    *
630 629
    * Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
631 630
    *
632
-   * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
631
+   * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
633 632
    * Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
634 633
    */
635 634
   #define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
@@ -655,10 +654,16 @@
655 654
 
656 655
 // @section extras
657 656
 
658
-// Arc interpretation settings:
659
-#define ARC_SUPPORT  // Disabling this saves ~2738 bytes
660
-#define MM_PER_ARC_SEGMENT 1
661
-#define N_ARC_CORRECTION 25
657
+//
658
+// G2/G3 Arc Support
659
+//
660
+#define ARC_SUPPORT               // Disable this feature to save ~3226 bytes
661
+#if ENABLED(ARC_SUPPORT)
662
+  #define MM_PER_ARC_SEGMENT  1   // Length of each arc segment
663
+  #define N_ARC_CORRECTION   25   // Number of intertpolated segments between corrections
664
+  //#define ARC_P_CIRCLES         // Enable the 'P' parameter to specify complete circles
665
+  //#define CNC_WORKSPACE_PLANES  // Allow G2/G3 to operate in XY, ZX, or YZ planes
666
+#endif
662 667
 
663 668
 // Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
664 669
 //#define BEZIER_CURVE_SUPPORT
@@ -784,6 +789,7 @@
784 789
   #define PAUSE_PARK_NO_STEPPER_TIMEOUT       // Enable to have stepper motors hold position during filament change
785 790
                                               // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
786 791
   //#define PARK_HEAD_ON_PAUSE                // Go to filament change position on pause, return to print position on resume
792
+  //#define HOME_BEFORE_FILAMENT_CHANGE       // Ensure homing has been completed prior to parking for filament change
787 793
 #endif
788 794
 
789 795
 // @section tmc
@@ -1176,12 +1182,12 @@
1176 1182
 /**
1177 1183
  * Auto-report temperatures with M155 S<seconds>
1178 1184
  */
1179
-//#define AUTO_REPORT_TEMPERATURES
1185
+#define AUTO_REPORT_TEMPERATURES
1180 1186
 
1181 1187
 /**
1182 1188
  * Include capabilities in M115 output
1183 1189
  */
1184
-//#define EXTENDED_CAPABILITIES_REPORT
1190
+#define EXTENDED_CAPABILITIES_REPORT
1185 1191
 
1186 1192
 /**
1187 1193
  * Volumetric extrusion default state
@@ -1238,4 +1244,94 @@
1238 1244
   //#define USER_GCODE_5 "G28\nM503"
1239 1245
 #endif
1240 1246
 
1247
+/**
1248
+ * Specify an action command to send to the host when the printer is killed.
1249
+ * Will be sent in the form '//action:ACTION_ON_KILL', e.g. '//action:poweroff'.
1250
+ * The host must be configured to handle the action command.
1251
+ */
1252
+//#define ACTION_ON_KILL "poweroff"
1253
+
1254
+//===========================================================================
1255
+//====================== I2C Position Encoder Settings ======================
1256
+//===========================================================================
1257
+/**
1258
+ *  I2C position encoders for closed loop control.
1259
+ *  Developed by Chris Barr at Aus3D.
1260
+ *
1261
+ *  Wiki: http://wiki.aus3d.com.au/Magnetic_Encoder
1262
+ *  Github: https://github.com/Aus3D/MagneticEncoder
1263
+ *
1264
+ *  Supplier: http://aus3d.com.au/magnetic-encoder-module
1265
+ *  Alternative Supplier: http://reliabuild3d.com/
1266
+ *
1267
+ *  Reilabuild encoders have been modified to improve reliability.
1268
+ */
1269
+
1270
+//#define I2C_POSITION_ENCODERS
1271
+#if ENABLED(I2C_POSITION_ENCODERS)
1272
+
1273
+  #define I2CPE_ENCODER_CNT         1                       // The number of encoders installed; max of 5
1274
+                                                            // encoders supported currently.
1275
+
1276
+  #define I2CPE_ENC_1_ADDR          I2CPE_PRESET_ADDR_X     // I2C address of the encoder. 30-200.
1277
+  #define I2CPE_ENC_1_AXIS          X_AXIS                  // Axis the encoder module is installed on.  <X|Y|Z|E>_AXIS.
1278
+  #define I2CPE_ENC_1_TYPE          I2CPE_ENC_TYPE_LINEAR   // Type of encoder:  I2CPE_ENC_TYPE_LINEAR -or-
1279
+                                                            // I2CPE_ENC_TYPE_ROTARY.
1280
+  #define I2CPE_ENC_1_TICKS_UNIT    2048                    // 1024 for magnetic strips with 2mm poles; 2048 for
1281
+                                                            // 1mm poles. For linear encoders this is ticks / mm,
1282
+                                                            // for rotary encoders this is ticks / revolution.
1283
+  //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1284
+                                                            // steps per full revolution (motor steps/rev * microstepping)
1285
+  //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1286
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1287
+  #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1288
+                                                            // printer will attempt to correct the error; errors
1289
+                                                            // smaller than this are ignored to minimize effects of
1290
+                                                            // measurement noise / latency (filter).
1291
+
1292
+  #define I2CPE_ENC_2_ADDR          I2CPE_PRESET_ADDR_Y     // Same as above, but for encoder 2.
1293
+  #define I2CPE_ENC_2_AXIS          Y_AXIS
1294
+  #define I2CPE_ENC_2_TYPE          I2CPE_ENC_TYPE_LINEAR
1295
+  #define I2CPE_ENC_2_TICKS_UNIT    2048
1296
+  //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1297
+  //#define I2CPE_ENC_2_INVERT
1298
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1299
+  #define I2CPE_ENC_2_EC_THRESH     0.10
1300
+
1301
+  #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
1302
+  #define I2CPE_ENC_3_AXIS          Z_AXIS                  // as above, or use defaults below.
1303
+
1304
+  #define I2CPE_ENC_4_ADDR          I2CPE_PRESET_ADDR_E     // Encoder 4.
1305
+  #define I2CPE_ENC_4_AXIS          E_AXIS
1306
+
1307
+  #define I2CPE_ENC_5_ADDR          34                      // Encoder 5.
1308
+  #define I2CPE_ENC_5_AXIS          E_AXIS
1309
+
1310
+  // Default settings for encoders which are enabled, but without settings configured above.
1311
+  #define I2CPE_DEF_TYPE            I2CPE_ENC_TYPE_LINEAR
1312
+  #define I2CPE_DEF_ENC_TICKS_UNIT  2048
1313
+  #define I2CPE_DEF_TICKS_REV       (16 * 200)
1314
+  #define I2CPE_DEF_EC_METHOD       I2CPE_ECM_NONE
1315
+  #define I2CPE_DEF_EC_THRESH       0.1
1316
+
1317
+  //#define I2CPE_ERR_THRESH_ABORT  100.0                   // Threshold size for error (in mm) error on any given
1318
+                                                            // axis after which the printer will abort. Comment out to
1319
+                                                            // disable abort behaviour.
1320
+
1321
+  #define I2CPE_TIME_TRUSTED        10000                   // After an encoder fault, there must be no further fault
1322
+                                                            // for this amount of time (in ms) before the encoder
1323
+                                                            // is trusted again.
1324
+
1325
+  /**
1326
+   * Position is checked every time a new command is executed from the buffer but during long moves,
1327
+   * this setting determines the minimum update time between checks. A value of 100 works well with
1328
+   * error rolling average when attempting to correct only for skips and not for vibration.
1329
+   */
1330
+  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1331
+
1332
+  // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1333
+  #define I2CPE_ERR_ROLLING_AVERAGE
1334
+
1335
+#endif // I2C_POSITION_ENCODERS
1336
+
1241 1337
 #endif // CONFIGURATION_ADV_H

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


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


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

@@ -74,15 +74,15 @@
74 74
 //===========================================================================
75 75
 //============================= DELTA Printer ===============================
76 76
 //===========================================================================
77
-// For Delta printers start with one of the configuration files in the
77
+// For a Delta printer start with one of the configuration files in the
78 78
 // example_configurations/delta directory and customize for your machine.
79 79
 //
80 80
 
81 81
 //===========================================================================
82 82
 //============================= SCARA Printer ===============================
83 83
 //===========================================================================
84
-// For a Scara printer replace the configuration files with the files in the
85
-// example_configurations/SCARA directory.
84
+// For a SCARA printer start with the configuration files in
85
+// example_configurations/SCARA and customize for your machine.
86 86
 //
87 87
 
88 88
 // @section info
@@ -158,6 +158,25 @@
158 158
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
159 159
 //#define SINGLENOZZLE
160 160
 
161
+/**
162
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
163
+ *
164
+ * This device allows one stepper driver on a control board to drive
165
+ * two to eight stepper motors, one at a time, in a manner suitable
166
+ * for extruders.
167
+ *
168
+ * This option only allows the multiplexer to switch on tool-change.
169
+ * Additional options to configure custom E moves are pending.
170
+ */
171
+//#define MK2_MULTIPLEXER
172
+#if ENABLED(MK2_MULTIPLEXER)
173
+  // Override the default DIO selector pins here, if needed.
174
+  // Some pins files may provide defaults for these pins.
175
+  //#define E_MUX0_PIN 40  // Always Required
176
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
177
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
178
+#endif
179
+
161 180
 // A dual extruder that uses a single stepper motor
162 181
 //#define SWITCHING_EXTRUDER
163 182
 #if ENABLED(SWITCHING_EXTRUDER)
@@ -594,7 +613,6 @@
594 613
  *
595 614
  */
596 615
 //#define Z_MIN_PROBE_ENDSTOP
597
-//#define Z_MIN_PROBE_PIN Z_MAX_PIN
598 616
 
599 617
 /**
600 618
  * Probe Type
@@ -909,12 +927,14 @@
909 927
   #define UBL_MESH_INSET 1          // Mesh inset margin on print area
910 928
   #define GRID_MAX_POINTS_X 10      // Don't use more than 15 points per axis, implementation limited.
911 929
   #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
912
-  #define UBL_PROBE_PT_1_X 39       // These set the probe locations for when UBL does a 3-Point leveling
913
-  #define UBL_PROBE_PT_1_Y 180      // of the mesh.
930
+
931
+  #define UBL_PROBE_PT_1_X 39       // Probing points for 3-Point leveling of the mesh
932
+  #define UBL_PROBE_PT_1_Y 180
914 933
   #define UBL_PROBE_PT_2_X 39
915 934
   #define UBL_PROBE_PT_2_Y 20
916 935
   #define UBL_PROBE_PT_3_X 180
917 936
   #define UBL_PROBE_PT_3_Y 20
937
+
918 938
   #define UBL_G26_MESH_VALIDATION   // Enable G26 mesh validation
919 939
   #define UBL_MESH_EDIT_MOVES_Z     // Sophisticated users prefer no movement of nozzle
920 940
 
@@ -969,6 +989,7 @@
969 989
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
970 990
 // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
971 991
 // - Prevent Z homing when the Z probe is outside bed area.
992
+//
972 993
 //#define Z_SAFE_HOMING
973 994
 
974 995
 #if ENABLED(Z_SAFE_HOMING)
@@ -993,13 +1014,10 @@
993 1014
 // M500 - stores parameters in EEPROM
994 1015
 // M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).
995 1016
 // M502 - reverts to the default "factory settings".  You still need to store them in EEPROM afterwards if you want to.
996
-//define this to enable EEPROM support
997
-#define EEPROM_SETTINGS // K8200: uses EEPROM by default
998
-
999
-#if ENABLED(EEPROM_SETTINGS)
1000
-  // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out:
1001
-  #define EEPROM_CHITCHAT // Please keep turned on if you can.
1002
-#endif
1017
+//
1018
+#define EEPROM_SETTINGS   // Enable for M500 and M501 commands
1019
+//#define DISABLE_M503    // Saves ~2700 bytes of PROGMEM. Disable for release!
1020
+#define EEPROM_CHITCHAT   // Give feedback on EEPROM commands. Disable to save PROGMEM.
1003 1021
 
1004 1022
 //
1005 1023
 // Host Keepalive
@@ -1161,10 +1179,11 @@
1161 1179
  *
1162 1180
  * Select the language to display on the LCD. These languages are available:
1163 1181
  *
1164
- *    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
1165
- *    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk, test
1182
+ *    en, an, bg, ca, cn, cz, cz_utf8, de, el, el-gr, es, eu, fi, fr, gl, hr,
1183
+ *    it, kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk,
1184
+ *    zh_CN, zh_TW, test
1166 1185
  *
1167
- * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'test':'TEST' }
1186
+ * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'cz_utf8':'Czech (UTF8)', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'zh_CN':'Chinese (Simplified)', 'zh_TW':'Chinese (Taiwan)', test':'TEST' }
1168 1187
  */
1169 1188
 #define LCD_LANGUAGE en
1170 1189
 
@@ -1313,12 +1332,6 @@
1313 1332
 //#define ULTIPANEL
1314 1333
 
1315 1334
 //
1316
-// Cartesio UI
1317
-// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1318
-//
1319
-//#define CARTESIO_UI
1320
-
1321
-//
1322 1335
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
1323 1336
 // http://reprap.org/wiki/PanelOne
1324 1337
 //
@@ -1401,6 +1414,27 @@
1401 1414
 //#define BQ_LCD_SMART_CONTROLLER
1402 1415
 
1403 1416
 //
1417
+// Cartesio UI
1418
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1419
+//
1420
+//#define CARTESIO_UI
1421
+
1422
+//
1423
+// ANET_10 Controller supported displays.
1424
+//
1425
+//#define ANET_KEYPAD_LCD         // Requires ADC_KEYPAD_PIN to be assigned to an analog pin.
1426
+                                  // This LCD is known to be susceptible to electrical interference
1427
+                                  // which scrambles the display.  Pressing any button clears it up.
1428
+//#define ANET_FULL_GRAPHICS_LCD  // Anet 128x64 full graphics lcd with rotary encoder as used on Anet A6
1429
+                                  // A clone of the RepRapDiscount full graphics display but with
1430
+                                  // different pins/wiring (see pins_ANET_10.h).
1431
+
1432
+//
1433
+// LCD for Melzi Card with Graphical LCD
1434
+//
1435
+//#define LCD_FOR_MELZI
1436
+
1437
+//
1404 1438
 // CONTROLLER TYPE: I2C
1405 1439
 //
1406 1440
 // Note: These controllers require the installation of Arduino's LiquidCrystal_I2C
@@ -1416,6 +1450,9 @@
1416 1450
 //
1417 1451
 // Sainsmart YW Robot (LCM1602) LCD Display
1418 1452
 //
1453
+// Note: This controller requires F.Malpartida's LiquidCrystal_I2C library
1454
+// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
1455
+//
1419 1456
 //#define LCD_I2C_SAINSMART_YWROBOT
1420 1457
 
1421 1458
 //
@@ -1447,6 +1484,11 @@
1447 1484
 //#define U8GLIB_SSD1306
1448 1485
 
1449 1486
 //
1487
+// TinyBoy2 128x64 OLED / Encoder Panel
1488
+//
1489
+//#define OLED_PANEL_TINYBOY2
1490
+
1491
+//
1450 1492
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1451 1493
 //
1452 1494
 //#define SAV_3DGLCD
@@ -1508,12 +1550,15 @@
1508 1550
 // SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure
1509 1551
 //#define SF_ARC_FIX
1510 1552
 
1511
-// Support for the BariCUDA Paste Extruder.
1553
+// Support for the BariCUDA Paste Extruder
1512 1554
 //#define BARICUDA
1513 1555
 
1514
-//define BlinkM/CyzRgb Support
1556
+// Support for BlinkM/CyzRgb
1515 1557
 //#define BLINKM
1516 1558
 
1559
+// Support for PCA9632 PWM LED driver
1560
+//#define PCA9632
1561
+
1517 1562
 /**
1518 1563
  * RGB LED / LED Strip Control
1519 1564
  *
@@ -1551,7 +1596,7 @@
1551 1596
  *  - Change to green once print has finished
1552 1597
  *  - Turn off after the print has finished and the user has pushed a button
1553 1598
  */
1554
-#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED)
1599
+#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED) || ENABLED(PCA9632)
1555 1600
   #define PRINTER_EVENT_LEDS
1556 1601
 #endif
1557 1602
 

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

@@ -136,8 +136,8 @@
136 136
   #define AUTOTEMP_OLDWEIGHT 0.98
137 137
 #endif
138 138
 
139
-//Show Temperature ADC value
140
-//The M105 command return, besides traditional information, the ADC value read from temperature sensors.
139
+// Show Temperature ADC value
140
+// Enable for M105 to include ADC values read from temperature sensors.
141 141
 //#define SHOW_TEMP_ADC_VALUES
142 142
 
143 143
 /**
@@ -432,16 +432,16 @@
432 432
  *    M908 - BQ_ZUM_MEGA_3D, RAMBO, PRINTRBOARD_REVF, RIGIDBOARD_V2 & SCOOVO_X9H
433 433
  *    M909, M910 & LCD - only PRINTRBOARD_REVF & RIGIDBOARD_V2
434 434
  */
435
-//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps
436
-//#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
437
-//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 } // Default drive percent - X, Y, Z, E axis
435
+//#define PWM_MOTOR_CURRENT { 1300, 1300, 1250 }          // Values in milliamps
436
+//#define DIGIPOT_MOTOR_CURRENT { 135,135,135,135,135 }   // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
437
+//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 }    // Default drive percent - X, Y, Z, E axis
438 438
 
439 439
 // Uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro
440 440
 //#define DIGIPOT_I2C
441
-//#define DIGIPOT_MCP4018
441
+//#define DIGIPOT_MCP4018          // Requires library from https://github.com/stawel/SlowSoftI2CMaster
442 442
 #define DIGIPOT_I2C_NUM_CHANNELS 8 // 5DPRINT: 4     AZTEEG_X3_PRO: 8
443 443
 // Actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS
444
-#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0}  //  AZTEEG_X3_PRO
444
+#define DIGIPOT_I2C_MOTOR_CURRENTS { 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 }  //  AZTEEG_X3_PRO
445 445
 
446 446
 //===========================================================================
447 447
 //=============================Additional Features===========================
@@ -658,7 +658,7 @@
658 658
    *
659 659
    * Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
660 660
    *
661
-   * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
661
+   * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
662 662
    * Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
663 663
    */
664 664
   #define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
@@ -684,10 +684,16 @@
684 684
 
685 685
 // @section extras
686 686
 
687
-// Arc interpretation settings:
688
-#define ARC_SUPPORT  // Disabling this saves ~2738 bytes
689
-#define MM_PER_ARC_SEGMENT 1
690
-#define N_ARC_CORRECTION 25
687
+//
688
+// G2/G3 Arc Support
689
+//
690
+#define ARC_SUPPORT               // Disable this feature to save ~3226 bytes
691
+#if ENABLED(ARC_SUPPORT)
692
+  #define MM_PER_ARC_SEGMENT  1   // Length of each arc segment
693
+  #define N_ARC_CORRECTION   25   // Number of intertpolated segments between corrections
694
+  //#define ARC_P_CIRCLES         // Enable the 'P' parameter to specify complete circles
695
+  //#define CNC_WORKSPACE_PLANES  // Allow G2/G3 to operate in XY, ZX, or YZ planes
696
+#endif
691 697
 
692 698
 // Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
693 699
 //#define BEZIER_CURVE_SUPPORT
@@ -813,6 +819,7 @@
813 819
   #define PAUSE_PARK_NO_STEPPER_TIMEOUT       // Enable to have stepper motors hold position during filament change
814 820
                                               // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
815 821
   //#define PARK_HEAD_ON_PAUSE                // Go to filament change position on pause, return to print position on resume
822
+  //#define HOME_BEFORE_FILAMENT_CHANGE       // Ensure homing has been completed prior to parking for filament change
816 823
 #endif
817 824
 
818 825
 // @section tmc
@@ -1205,12 +1212,12 @@
1205 1212
 /**
1206 1213
  * Auto-report temperatures with M155 S<seconds>
1207 1214
  */
1208
-//#define AUTO_REPORT_TEMPERATURES
1215
+#define AUTO_REPORT_TEMPERATURES
1209 1216
 
1210 1217
 /**
1211 1218
  * Include capabilities in M115 output
1212 1219
  */
1213
-//#define EXTENDED_CAPABILITIES_REPORT
1220
+#define EXTENDED_CAPABILITIES_REPORT
1214 1221
 
1215 1222
 /**
1216 1223
  * Volumetric extrusion default state
@@ -1267,4 +1274,94 @@
1267 1274
   //#define USER_GCODE_5 "G28\nM503"
1268 1275
 #endif
1269 1276
 
1277
+/**
1278
+ * Specify an action command to send to the host when the printer is killed.
1279
+ * Will be sent in the form '//action:ACTION_ON_KILL', e.g. '//action:poweroff'.
1280
+ * The host must be configured to handle the action command.
1281
+ */
1282
+//#define ACTION_ON_KILL "poweroff"
1283
+
1284
+//===========================================================================
1285
+//====================== I2C Position Encoder Settings ======================
1286
+//===========================================================================
1287
+/**
1288
+ *  I2C position encoders for closed loop control.
1289
+ *  Developed by Chris Barr at Aus3D.
1290
+ *
1291
+ *  Wiki: http://wiki.aus3d.com.au/Magnetic_Encoder
1292
+ *  Github: https://github.com/Aus3D/MagneticEncoder
1293
+ *
1294
+ *  Supplier: http://aus3d.com.au/magnetic-encoder-module
1295
+ *  Alternative Supplier: http://reliabuild3d.com/
1296
+ *
1297
+ *  Reilabuild encoders have been modified to improve reliability.
1298
+ */
1299
+
1300
+//#define I2C_POSITION_ENCODERS
1301
+#if ENABLED(I2C_POSITION_ENCODERS)
1302
+
1303
+  #define I2CPE_ENCODER_CNT         1                       // The number of encoders installed; max of 5
1304
+                                                            // encoders supported currently.
1305
+
1306
+  #define I2CPE_ENC_1_ADDR          I2CPE_PRESET_ADDR_X     // I2C address of the encoder. 30-200.
1307
+  #define I2CPE_ENC_1_AXIS          X_AXIS                  // Axis the encoder module is installed on.  <X|Y|Z|E>_AXIS.
1308
+  #define I2CPE_ENC_1_TYPE          I2CPE_ENC_TYPE_LINEAR   // Type of encoder:  I2CPE_ENC_TYPE_LINEAR -or-
1309
+                                                            // I2CPE_ENC_TYPE_ROTARY.
1310
+  #define I2CPE_ENC_1_TICKS_UNIT    2048                    // 1024 for magnetic strips with 2mm poles; 2048 for
1311
+                                                            // 1mm poles. For linear encoders this is ticks / mm,
1312
+                                                            // for rotary encoders this is ticks / revolution.
1313
+  //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1314
+                                                            // steps per full revolution (motor steps/rev * microstepping)
1315
+  //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1316
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1317
+  #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1318
+                                                            // printer will attempt to correct the error; errors
1319
+                                                            // smaller than this are ignored to minimize effects of
1320
+                                                            // measurement noise / latency (filter).
1321
+
1322
+  #define I2CPE_ENC_2_ADDR          I2CPE_PRESET_ADDR_Y     // Same as above, but for encoder 2.
1323
+  #define I2CPE_ENC_2_AXIS          Y_AXIS
1324
+  #define I2CPE_ENC_2_TYPE          I2CPE_ENC_TYPE_LINEAR
1325
+  #define I2CPE_ENC_2_TICKS_UNIT    2048
1326
+  //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1327
+  //#define I2CPE_ENC_2_INVERT
1328
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1329
+  #define I2CPE_ENC_2_EC_THRESH     0.10
1330
+
1331
+  #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
1332
+  #define I2CPE_ENC_3_AXIS          Z_AXIS                  // as above, or use defaults below.
1333
+
1334
+  #define I2CPE_ENC_4_ADDR          I2CPE_PRESET_ADDR_E     // Encoder 4.
1335
+  #define I2CPE_ENC_4_AXIS          E_AXIS
1336
+
1337
+  #define I2CPE_ENC_5_ADDR          34                      // Encoder 5.
1338
+  #define I2CPE_ENC_5_AXIS          E_AXIS
1339
+
1340
+  // Default settings for encoders which are enabled, but without settings configured above.
1341
+  #define I2CPE_DEF_TYPE            I2CPE_ENC_TYPE_LINEAR
1342
+  #define I2CPE_DEF_ENC_TICKS_UNIT  2048
1343
+  #define I2CPE_DEF_TICKS_REV       (16 * 200)
1344
+  #define I2CPE_DEF_EC_METHOD       I2CPE_ECM_NONE
1345
+  #define I2CPE_DEF_EC_THRESH       0.1
1346
+
1347
+  //#define I2CPE_ERR_THRESH_ABORT  100.0                   // Threshold size for error (in mm) error on any given
1348
+                                                            // axis after which the printer will abort. Comment out to
1349
+                                                            // disable abort behaviour.
1350
+
1351
+  #define I2CPE_TIME_TRUSTED        10000                   // After an encoder fault, there must be no further fault
1352
+                                                            // for this amount of time (in ms) before the encoder
1353
+                                                            // is trusted again.
1354
+
1355
+  /**
1356
+   * Position is checked every time a new command is executed from the buffer but during long moves,
1357
+   * this setting determines the minimum update time between checks. A value of 100 works well with
1358
+   * error rolling average when attempting to correct only for skips and not for vibration.
1359
+   */
1360
+  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1361
+
1362
+  // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1363
+  #define I2CPE_ERR_ROLLING_AVERAGE
1364
+
1365
+#endif // I2C_POSITION_ENCODERS
1366
+
1270 1367
 #endif // CONFIGURATION_ADV_H

+ 70
- 30
Marlin/example_configurations/K8400/Configuration.h Просмотреть файл

@@ -58,15 +58,15 @@
58 58
 //===========================================================================
59 59
 //============================= DELTA Printer ===============================
60 60
 //===========================================================================
61
-// For Delta printers start with one of the configuration files in the
61
+// For a Delta printer start with one of the configuration files in the
62 62
 // example_configurations/delta directory and customize for your machine.
63 63
 //
64 64
 
65 65
 //===========================================================================
66 66
 //============================= SCARA Printer ===============================
67 67
 //===========================================================================
68
-// For a Scara printer replace the configuration files with the files in the
69
-// example_configurations/SCARA directory.
68
+// For a SCARA printer start with the configuration files in
69
+// example_configurations/SCARA and customize for your machine.
70 70
 //
71 71
 
72 72
 // @section info
@@ -138,6 +138,25 @@
138 138
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
139 139
 //#define SINGLENOZZLE
140 140
 
141
+/**
142
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
143
+ *
144
+ * This device allows one stepper driver on a control board to drive
145
+ * two to eight stepper motors, one at a time, in a manner suitable
146
+ * for extruders.
147
+ *
148
+ * This option only allows the multiplexer to switch on tool-change.
149
+ * Additional options to configure custom E moves are pending.
150
+ */
151
+//#define MK2_MULTIPLEXER
152
+#if ENABLED(MK2_MULTIPLEXER)
153
+  // Override the default DIO selector pins here, if needed.
154
+  // Some pins files may provide defaults for these pins.
155
+  //#define E_MUX0_PIN 40  // Always Required
156
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
157
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
158
+#endif
159
+
141 160
 // A dual extruder that uses a single stepper motor
142 161
 //#define SWITCHING_EXTRUDER
143 162
 #if ENABLED(SWITCHING_EXTRUDER)
@@ -565,7 +584,6 @@
565 584
  *
566 585
  */
567 586
 //#define Z_MIN_PROBE_ENDSTOP
568
-//#define Z_MIN_PROBE_PIN Z_MAX_PIN
569 587
 
570 588
 /**
571 589
  * Probe Type
@@ -880,12 +898,14 @@
880 898
   #define UBL_MESH_INSET 1          // Mesh inset margin on print area
881 899
   #define GRID_MAX_POINTS_X 10      // Don't use more than 15 points per axis, implementation limited.
882 900
   #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
883
-  #define UBL_PROBE_PT_1_X 39       // These set the probe locations for when UBL does a 3-Point leveling
884
-  #define UBL_PROBE_PT_1_Y 180      // of the mesh.
901
+
902
+  #define UBL_PROBE_PT_1_X 39       // Probing points for 3-Point leveling of the mesh
903
+  #define UBL_PROBE_PT_1_Y 180
885 904
   #define UBL_PROBE_PT_2_X 39
886 905
   #define UBL_PROBE_PT_2_Y 20
887 906
   #define UBL_PROBE_PT_3_X 180
888 907
   #define UBL_PROBE_PT_3_Y 20
908
+
889 909
   #define UBL_G26_MESH_VALIDATION   // Enable G26 mesh validation
890 910
   #define UBL_MESH_EDIT_MOVES_Z     // Sophisticated users prefer no movement of nozzle
891 911
 
@@ -940,6 +960,7 @@
940 960
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
941 961
 // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
942 962
 // - Prevent Z homing when the Z probe is outside bed area.
963
+//
943 964
 //#define Z_SAFE_HOMING
944 965
 
945 966
 #if ENABLED(Z_SAFE_HOMING)
@@ -964,13 +985,10 @@
964 985
 // M500 - stores parameters in EEPROM
965 986
 // M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).
966 987
 // M502 - reverts to the default "factory settings".  You still need to store them in EEPROM afterwards if you want to.
967
-//define this to enable EEPROM support
968
-#define EEPROM_SETTINGS
969
-
970
-#if ENABLED(EEPROM_SETTINGS)
971
-  // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out:
972
-  #define EEPROM_CHITCHAT // Please keep turned on if you can.
973
-#endif
988
+//
989
+#define EEPROM_SETTINGS   // Enable for M500 and M501 commands
990
+//#define DISABLE_M503    // Saves ~2700 bytes of PROGMEM. Disable for release!
991
+#define EEPROM_CHITCHAT   // Give feedback on EEPROM commands. Disable to save PROGMEM.
974 992
 
975 993
 //
976 994
 // Host Keepalive
@@ -1129,10 +1147,11 @@
1129 1147
  *
1130 1148
  * Select the language to display on the LCD. These languages are available:
1131 1149
  *
1132
- *    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
1133
- *    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk, test
1150
+ *    en, an, bg, ca, cn, cz, cz_utf8, de, el, el-gr, es, eu, fi, fr, gl, hr,
1151
+ *    it, kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk,
1152
+ *    zh_CN, zh_TW, test
1134 1153
  *
1135
- * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'test':'TEST' }
1154
+ * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'cz_utf8':'Czech (UTF8)', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'zh_CN':'Chinese (Simplified)', 'zh_TW':'Chinese (Taiwan)', test':'TEST' }
1136 1155
  */
1137 1156
 #define LCD_LANGUAGE en
1138 1157
 
@@ -1281,12 +1300,6 @@
1281 1300
 //#define ULTIPANEL
1282 1301
 
1283 1302
 //
1284
-// Cartesio UI
1285
-// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1286
-//
1287
-//#define CARTESIO_UI
1288
-
1289
-//
1290 1303
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
1291 1304
 // http://reprap.org/wiki/PanelOne
1292 1305
 //
@@ -1369,6 +1382,27 @@
1369 1382
 //#define BQ_LCD_SMART_CONTROLLER
1370 1383
 
1371 1384
 //
1385
+// Cartesio UI
1386
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1387
+//
1388
+//#define CARTESIO_UI
1389
+
1390
+//
1391
+// ANET_10 Controller supported displays.
1392
+//
1393
+//#define ANET_KEYPAD_LCD         // Requires ADC_KEYPAD_PIN to be assigned to an analog pin.
1394
+                                  // This LCD is known to be susceptible to electrical interference
1395
+                                  // which scrambles the display.  Pressing any button clears it up.
1396
+//#define ANET_FULL_GRAPHICS_LCD  // Anet 128x64 full graphics lcd with rotary encoder as used on Anet A6
1397
+                                  // A clone of the RepRapDiscount full graphics display but with
1398
+                                  // different pins/wiring (see pins_ANET_10.h).
1399
+
1400
+//
1401
+// LCD for Melzi Card with Graphical LCD
1402
+//
1403
+//#define LCD_FOR_MELZI
1404
+
1405
+//
1372 1406
 // CONTROLLER TYPE: I2C
1373 1407
 //
1374 1408
 // Note: These controllers require the installation of Arduino's LiquidCrystal_I2C
@@ -1384,6 +1418,9 @@
1384 1418
 //
1385 1419
 // Sainsmart YW Robot (LCM1602) LCD Display
1386 1420
 //
1421
+// Note: This controller requires F.Malpartida's LiquidCrystal_I2C library
1422
+// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
1423
+//
1387 1424
 //#define LCD_I2C_SAINSMART_YWROBOT
1388 1425
 
1389 1426
 //
@@ -1415,6 +1452,11 @@
1415 1452
 //#define U8GLIB_SSD1306
1416 1453
 
1417 1454
 //
1455
+// TinyBoy2 128x64 OLED / Encoder Panel
1456
+//
1457
+//#define OLED_PANEL_TINYBOY2
1458
+
1459
+//
1418 1460
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1419 1461
 //
1420 1462
 //#define SAV_3DGLCD
@@ -1431,11 +1473,6 @@
1431 1473
 //
1432 1474
 //#define SAV_3DLCD
1433 1475
 
1434
-//
1435
-// TinyBoy2 128x64 OLED / Encoder Panel
1436
-//
1437
-//#define OLED_PANEL_TINYBOY2
1438
-
1439 1476
 //=============================================================================
1440 1477
 //=============================== Extra Features ==============================
1441 1478
 //=============================================================================
@@ -1474,12 +1511,15 @@
1474 1511
 // SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure
1475 1512
 //#define SF_ARC_FIX
1476 1513
 
1477
-// Support for the BariCUDA Paste Extruder.
1514
+// Support for the BariCUDA Paste Extruder
1478 1515
 //#define BARICUDA
1479 1516
 
1480
-//define BlinkM/CyzRgb Support
1517
+// Support for BlinkM/CyzRgb
1481 1518
 //#define BLINKM
1482 1519
 
1520
+// Support for PCA9632 PWM LED driver
1521
+//#define PCA9632
1522
+
1483 1523
 /**
1484 1524
  * RGB LED / LED Strip Control
1485 1525
  *
@@ -1517,7 +1557,7 @@
1517 1557
  *  - Change to green once print has finished
1518 1558
  *  - Turn off after the print has finished and the user has pushed a button
1519 1559
  */
1520
-#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED)
1560
+#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED) || ENABLED(PCA9632)
1521 1561
   #define PRINTER_EVENT_LEDS
1522 1562
 #endif
1523 1563
 

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

@@ -123,8 +123,8 @@
123 123
   #define AUTOTEMP_OLDWEIGHT 0.98
124 124
 #endif
125 125
 
126
-//Show Temperature ADC value
127
-//The M105 command return, besides traditional information, the ADC value read from temperature sensors.
126
+// Show Temperature ADC value
127
+// Enable for M105 to include ADC values read from temperature sensors.
128 128
 //#define SHOW_TEMP_ADC_VALUES
129 129
 
130 130
 /**
@@ -419,16 +419,16 @@
419 419
  *    M908 - BQ_ZUM_MEGA_3D, RAMBO, PRINTRBOARD_REVF, RIGIDBOARD_V2 & SCOOVO_X9H
420 420
  *    M909, M910 & LCD - only PRINTRBOARD_REVF & RIGIDBOARD_V2
421 421
  */
422
-//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps
423
-//#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
424
-//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 } // Default drive percent - X, Y, Z, E axis
422
+//#define PWM_MOTOR_CURRENT { 1300, 1300, 1250 }          // Values in milliamps
423
+//#define DIGIPOT_MOTOR_CURRENT { 135,135,135,135,135 }   // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
424
+//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 }    // Default drive percent - X, Y, Z, E axis
425 425
 
426 426
 // Uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro
427 427
 //#define DIGIPOT_I2C
428
-//#define DIGIPOT_MCP4018
428
+//#define DIGIPOT_MCP4018          // Requires library from https://github.com/stawel/SlowSoftI2CMaster
429 429
 #define DIGIPOT_I2C_NUM_CHANNELS 8 // 5DPRINT: 4     AZTEEG_X3_PRO: 8
430 430
 // Actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS
431
-#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0}  //  AZTEEG_X3_PRO
431
+#define DIGIPOT_I2C_MOTOR_CURRENTS { 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 }  //  AZTEEG_X3_PRO
432 432
 
433 433
 //===========================================================================
434 434
 //=============================Additional Features===========================
@@ -645,7 +645,7 @@
645 645
    *
646 646
    * Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
647 647
    *
648
-   * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
648
+   * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
649 649
    * Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
650 650
    */
651 651
   #define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
@@ -671,10 +671,16 @@
671 671
 
672 672
 // @section extras
673 673
 
674
-// Arc interpretation settings:
675
-#define ARC_SUPPORT  // Disabling this saves ~2738 bytes
676
-#define MM_PER_ARC_SEGMENT 1
677
-#define N_ARC_CORRECTION 25
674
+//
675
+// G2/G3 Arc Support
676
+//
677
+#define ARC_SUPPORT               // Disable this feature to save ~3226 bytes
678
+#if ENABLED(ARC_SUPPORT)
679
+  #define MM_PER_ARC_SEGMENT  1   // Length of each arc segment
680
+  #define N_ARC_CORRECTION   25   // Number of intertpolated segments between corrections
681
+  //#define ARC_P_CIRCLES         // Enable the 'P' parameter to specify complete circles
682
+  //#define CNC_WORKSPACE_PLANES  // Allow G2/G3 to operate in XY, ZX, or YZ planes
683
+#endif
678 684
 
679 685
 // Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
680 686
 //#define BEZIER_CURVE_SUPPORT
@@ -800,6 +806,7 @@
800 806
   #define PAUSE_PARK_NO_STEPPER_TIMEOUT       // Enable to have stepper motors hold position during filament change
801 807
                                               // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
802 808
   //#define PARK_HEAD_ON_PAUSE                // Go to filament change position on pause, return to print position on resume
809
+  //#define HOME_BEFORE_FILAMENT_CHANGE       // Ensure homing has been completed prior to parking for filament change
803 810
 #endif
804 811
 
805 812
 // @section tmc
@@ -1192,12 +1199,12 @@
1192 1199
 /**
1193 1200
  * Auto-report temperatures with M155 S<seconds>
1194 1201
  */
1195
-//#define AUTO_REPORT_TEMPERATURES
1202
+#define AUTO_REPORT_TEMPERATURES
1196 1203
 
1197 1204
 /**
1198 1205
  * Include capabilities in M115 output
1199 1206
  */
1200
-//#define EXTENDED_CAPABILITIES_REPORT
1207
+#define EXTENDED_CAPABILITIES_REPORT
1201 1208
 
1202 1209
 /**
1203 1210
  * Volumetric extrusion default state
@@ -1254,4 +1261,94 @@
1254 1261
   //#define USER_GCODE_5 "G28\nM503"
1255 1262
 #endif
1256 1263
 
1264
+/**
1265
+ * Specify an action command to send to the host when the printer is killed.
1266
+ * Will be sent in the form '//action:ACTION_ON_KILL', e.g. '//action:poweroff'.
1267
+ * The host must be configured to handle the action command.
1268
+ */
1269
+//#define ACTION_ON_KILL "poweroff"
1270
+
1271
+//===========================================================================
1272
+//====================== I2C Position Encoder Settings ======================
1273
+//===========================================================================
1274
+/**
1275
+ *  I2C position encoders for closed loop control.
1276
+ *  Developed by Chris Barr at Aus3D.
1277
+ *
1278
+ *  Wiki: http://wiki.aus3d.com.au/Magnetic_Encoder
1279
+ *  Github: https://github.com/Aus3D/MagneticEncoder
1280
+ *
1281
+ *  Supplier: http://aus3d.com.au/magnetic-encoder-module
1282
+ *  Alternative Supplier: http://reliabuild3d.com/
1283
+ *
1284
+ *  Reilabuild encoders have been modified to improve reliability.
1285
+ */
1286
+
1287
+//#define I2C_POSITION_ENCODERS
1288
+#if ENABLED(I2C_POSITION_ENCODERS)
1289
+
1290
+  #define I2CPE_ENCODER_CNT         1                       // The number of encoders installed; max of 5
1291
+                                                            // encoders supported currently.
1292
+
1293
+  #define I2CPE_ENC_1_ADDR          I2CPE_PRESET_ADDR_X     // I2C address of the encoder. 30-200.
1294
+  #define I2CPE_ENC_1_AXIS          X_AXIS                  // Axis the encoder module is installed on.  <X|Y|Z|E>_AXIS.
1295
+  #define I2CPE_ENC_1_TYPE          I2CPE_ENC_TYPE_LINEAR   // Type of encoder:  I2CPE_ENC_TYPE_LINEAR -or-
1296
+                                                            // I2CPE_ENC_TYPE_ROTARY.
1297
+  #define I2CPE_ENC_1_TICKS_UNIT    2048                    // 1024 for magnetic strips with 2mm poles; 2048 for
1298
+                                                            // 1mm poles. For linear encoders this is ticks / mm,
1299
+                                                            // for rotary encoders this is ticks / revolution.
1300
+  //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1301
+                                                            // steps per full revolution (motor steps/rev * microstepping)
1302
+  //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1303
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1304
+  #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1305
+                                                            // printer will attempt to correct the error; errors
1306
+                                                            // smaller than this are ignored to minimize effects of
1307
+                                                            // measurement noise / latency (filter).
1308
+
1309
+  #define I2CPE_ENC_2_ADDR          I2CPE_PRESET_ADDR_Y     // Same as above, but for encoder 2.
1310
+  #define I2CPE_ENC_2_AXIS          Y_AXIS
1311
+  #define I2CPE_ENC_2_TYPE          I2CPE_ENC_TYPE_LINEAR
1312
+  #define I2CPE_ENC_2_TICKS_UNIT    2048
1313
+  //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1314
+  //#define I2CPE_ENC_2_INVERT
1315
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1316
+  #define I2CPE_ENC_2_EC_THRESH     0.10
1317
+
1318
+  #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
1319
+  #define I2CPE_ENC_3_AXIS          Z_AXIS                  // as above, or use defaults below.
1320
+
1321
+  #define I2CPE_ENC_4_ADDR          I2CPE_PRESET_ADDR_E     // Encoder 4.
1322
+  #define I2CPE_ENC_4_AXIS          E_AXIS
1323
+
1324
+  #define I2CPE_ENC_5_ADDR          34                      // Encoder 5.
1325
+  #define I2CPE_ENC_5_AXIS          E_AXIS
1326
+
1327
+  // Default settings for encoders which are enabled, but without settings configured above.
1328
+  #define I2CPE_DEF_TYPE            I2CPE_ENC_TYPE_LINEAR
1329
+  #define I2CPE_DEF_ENC_TICKS_UNIT  2048
1330
+  #define I2CPE_DEF_TICKS_REV       (16 * 200)
1331
+  #define I2CPE_DEF_EC_METHOD       I2CPE_ECM_NONE
1332
+  #define I2CPE_DEF_EC_THRESH       0.1
1333
+
1334
+  //#define I2CPE_ERR_THRESH_ABORT  100.0                   // Threshold size for error (in mm) error on any given
1335
+                                                            // axis after which the printer will abort. Comment out to
1336
+                                                            // disable abort behaviour.
1337
+
1338
+  #define I2CPE_TIME_TRUSTED        10000                   // After an encoder fault, there must be no further fault
1339
+                                                            // for this amount of time (in ms) before the encoder
1340
+                                                            // is trusted again.
1341
+
1342
+  /**
1343
+   * Position is checked every time a new command is executed from the buffer but during long moves,
1344
+   * this setting determines the minimum update time between checks. A value of 100 works well with
1345
+   * error rolling average when attempting to correct only for skips and not for vibration.
1346
+   */
1347
+  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1348
+
1349
+  // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1350
+  #define I2CPE_ERR_ROLLING_AVERAGE
1351
+
1352
+#endif // I2C_POSITION_ENCODERS
1353
+
1257 1354
 #endif // CONFIGURATION_ADV_H

+ 70
- 30
Marlin/example_configurations/K8400/Dual-head/Configuration.h Просмотреть файл

@@ -58,15 +58,15 @@
58 58
 //===========================================================================
59 59
 //============================= DELTA Printer ===============================
60 60
 //===========================================================================
61
-// For Delta printers start with one of the configuration files in the
61
+// For a Delta printer start with one of the configuration files in the
62 62
 // example_configurations/delta directory and customize for your machine.
63 63
 //
64 64
 
65 65
 //===========================================================================
66 66
 //============================= SCARA Printer ===============================
67 67
 //===========================================================================
68
-// For a Scara printer replace the configuration files with the files in the
69
-// example_configurations/SCARA directory.
68
+// For a SCARA printer start with the configuration files in
69
+// example_configurations/SCARA and customize for your machine.
70 70
 //
71 71
 
72 72
 // @section info
@@ -138,6 +138,25 @@
138 138
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
139 139
 //#define SINGLENOZZLE
140 140
 
141
+/**
142
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
143
+ *
144
+ * This device allows one stepper driver on a control board to drive
145
+ * two to eight stepper motors, one at a time, in a manner suitable
146
+ * for extruders.
147
+ *
148
+ * This option only allows the multiplexer to switch on tool-change.
149
+ * Additional options to configure custom E moves are pending.
150
+ */
151
+//#define MK2_MULTIPLEXER
152
+#if ENABLED(MK2_MULTIPLEXER)
153
+  // Override the default DIO selector pins here, if needed.
154
+  // Some pins files may provide defaults for these pins.
155
+  //#define E_MUX0_PIN 40  // Always Required
156
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
157
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
158
+#endif
159
+
141 160
 // A dual extruder that uses a single stepper motor
142 161
 //#define SWITCHING_EXTRUDER
143 162
 #if ENABLED(SWITCHING_EXTRUDER)
@@ -565,7 +584,6 @@
565 584
  *
566 585
  */
567 586
 //#define Z_MIN_PROBE_ENDSTOP
568
-//#define Z_MIN_PROBE_PIN Z_MAX_PIN
569 587
 
570 588
 /**
571 589
  * Probe Type
@@ -880,12 +898,14 @@
880 898
   #define UBL_MESH_INSET 1          // Mesh inset margin on print area
881 899
   #define GRID_MAX_POINTS_X 10      // Don't use more than 15 points per axis, implementation limited.
882 900
   #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
883
-  #define UBL_PROBE_PT_1_X 39       // These set the probe locations for when UBL does a 3-Point leveling
884
-  #define UBL_PROBE_PT_1_Y 180      // of the mesh.
901
+
902
+  #define UBL_PROBE_PT_1_X 39       // Probing points for 3-Point leveling of the mesh
903
+  #define UBL_PROBE_PT_1_Y 180
885 904
   #define UBL_PROBE_PT_2_X 39
886 905
   #define UBL_PROBE_PT_2_Y 20
887 906
   #define UBL_PROBE_PT_3_X 180
888 907
   #define UBL_PROBE_PT_3_Y 20
908
+
889 909
   #define UBL_G26_MESH_VALIDATION   // Enable G26 mesh validation
890 910
   #define UBL_MESH_EDIT_MOVES_Z     // Sophisticated users prefer no movement of nozzle
891 911
 
@@ -940,6 +960,7 @@
940 960
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
941 961
 // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
942 962
 // - Prevent Z homing when the Z probe is outside bed area.
963
+//
943 964
 //#define Z_SAFE_HOMING
944 965
 
945 966
 #if ENABLED(Z_SAFE_HOMING)
@@ -964,13 +985,10 @@
964 985
 // M500 - stores parameters in EEPROM
965 986
 // M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).
966 987
 // M502 - reverts to the default "factory settings".  You still need to store them in EEPROM afterwards if you want to.
967
-//define this to enable EEPROM support
968
-#define EEPROM_SETTINGS
969
-
970
-#if ENABLED(EEPROM_SETTINGS)
971
-  // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out:
972
-  #define EEPROM_CHITCHAT // Please keep turned on if you can.
973
-#endif
988
+//
989
+#define EEPROM_SETTINGS   // Enable for M500 and M501 commands
990
+//#define DISABLE_M503    // Saves ~2700 bytes of PROGMEM. Disable for release!
991
+#define EEPROM_CHITCHAT   // Give feedback on EEPROM commands. Disable to save PROGMEM.
974 992
 
975 993
 //
976 994
 // Host Keepalive
@@ -1129,10 +1147,11 @@
1129 1147
  *
1130 1148
  * Select the language to display on the LCD. These languages are available:
1131 1149
  *
1132
- *    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
1133
- *    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk, test
1150
+ *    en, an, bg, ca, cn, cz, cz_utf8, de, el, el-gr, es, eu, fi, fr, gl, hr,
1151
+ *    it, kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk,
1152
+ *    zh_CN, zh_TW, test
1134 1153
  *
1135
- * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'test':'TEST' }
1154
+ * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'cz_utf8':'Czech (UTF8)', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'zh_CN':'Chinese (Simplified)', 'zh_TW':'Chinese (Taiwan)', test':'TEST' }
1136 1155
  */
1137 1156
 #define LCD_LANGUAGE en
1138 1157
 
@@ -1281,12 +1300,6 @@
1281 1300
 //#define ULTIPANEL
1282 1301
 
1283 1302
 //
1284
-// Cartesio UI
1285
-// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1286
-//
1287
-//#define CARTESIO_UI
1288
-
1289
-//
1290 1303
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
1291 1304
 // http://reprap.org/wiki/PanelOne
1292 1305
 //
@@ -1369,6 +1382,27 @@
1369 1382
 //#define BQ_LCD_SMART_CONTROLLER
1370 1383
 
1371 1384
 //
1385
+// Cartesio UI
1386
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1387
+//
1388
+//#define CARTESIO_UI
1389
+
1390
+//
1391
+// ANET_10 Controller supported displays.
1392
+//
1393
+//#define ANET_KEYPAD_LCD         // Requires ADC_KEYPAD_PIN to be assigned to an analog pin.
1394
+                                  // This LCD is known to be susceptible to electrical interference
1395
+                                  // which scrambles the display.  Pressing any button clears it up.
1396
+//#define ANET_FULL_GRAPHICS_LCD  // Anet 128x64 full graphics lcd with rotary encoder as used on Anet A6
1397
+                                  // A clone of the RepRapDiscount full graphics display but with
1398
+                                  // different pins/wiring (see pins_ANET_10.h).
1399
+
1400
+//
1401
+// LCD for Melzi Card with Graphical LCD
1402
+//
1403
+//#define LCD_FOR_MELZI
1404
+
1405
+//
1372 1406
 // CONTROLLER TYPE: I2C
1373 1407
 //
1374 1408
 // Note: These controllers require the installation of Arduino's LiquidCrystal_I2C
@@ -1384,6 +1418,9 @@
1384 1418
 //
1385 1419
 // Sainsmart YW Robot (LCM1602) LCD Display
1386 1420
 //
1421
+// Note: This controller requires F.Malpartida's LiquidCrystal_I2C library
1422
+// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
1423
+//
1387 1424
 //#define LCD_I2C_SAINSMART_YWROBOT
1388 1425
 
1389 1426
 //
@@ -1415,6 +1452,11 @@
1415 1452
 //#define U8GLIB_SSD1306
1416 1453
 
1417 1454
 //
1455
+// TinyBoy2 128x64 OLED / Encoder Panel
1456
+//
1457
+//#define OLED_PANEL_TINYBOY2
1458
+
1459
+//
1418 1460
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1419 1461
 //
1420 1462
 //#define SAV_3DGLCD
@@ -1431,11 +1473,6 @@
1431 1473
 //
1432 1474
 //#define SAV_3DLCD
1433 1475
 
1434
-//
1435
-// TinyBoy2 128x64 OLED / Encoder Panel
1436
-//
1437
-//#define OLED_PANEL_TINYBOY2
1438
-
1439 1476
 //=============================================================================
1440 1477
 //=============================== Extra Features ==============================
1441 1478
 //=============================================================================
@@ -1474,12 +1511,15 @@
1474 1511
 // SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure
1475 1512
 //#define SF_ARC_FIX
1476 1513
 
1477
-// Support for the BariCUDA Paste Extruder.
1514
+// Support for the BariCUDA Paste Extruder
1478 1515
 //#define BARICUDA
1479 1516
 
1480
-//define BlinkM/CyzRgb Support
1517
+// Support for BlinkM/CyzRgb
1481 1518
 //#define BLINKM
1482 1519
 
1520
+// Support for PCA9632 PWM LED driver
1521
+//#define PCA9632
1522
+
1483 1523
 /**
1484 1524
  * RGB LED / LED Strip Control
1485 1525
  *
@@ -1517,7 +1557,7 @@
1517 1557
  *  - Change to green once print has finished
1518 1558
  *  - Turn off after the print has finished and the user has pushed a button
1519 1559
  */
1520
-#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED)
1560
+#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED) || ENABLED(PCA9632)
1521 1561
   #define PRINTER_EVENT_LEDS
1522 1562
 #endif
1523 1563
 

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

@@ -2,7 +2,7 @@
2 2
 http://www.k8400.eu/
3 3
 
4 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.
5
+Like its predecessor, (K8200), the K8400 is a 3Drag clone. There are some minor differences, documented in pins_K8400.h.
6 6
 
7 7
 Single and dual head configurations provided. Copy the correct Configuration.h and Configuration_adv.h to the /Marlin/ directory.
8 8
 

+ 72
- 32
Marlin/example_configurations/M150/Configuration.h Просмотреть файл

@@ -63,15 +63,15 @@
63 63
 //===========================================================================
64 64
 //============================= DELTA Printer ===============================
65 65
 //===========================================================================
66
-// For a Delta printer replace the configuration files with the files in the
67
-// example_configurations/delta directory.
66
+// For a Delta printer start with one of the configuration files in the
67
+// example_configurations/delta directory and customize for your machine.
68 68
 //
69 69
 
70 70
 //===========================================================================
71 71
 //============================= SCARA Printer ===============================
72 72
 //===========================================================================
73
-// For a Scara printer replace the configuration files with the files in the
74
-// example_configurations/SCARA directory.
73
+// For a SCARA printer start with the configuration files in
74
+// example_configurations/SCARA and customize for your machine.
75 75
 //
76 76
 
77 77
 // @section info
@@ -143,6 +143,25 @@
143 143
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
144 144
 //#define SINGLENOZZLE
145 145
 
146
+/**
147
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
148
+ *
149
+ * This device allows one stepper driver on a control board to drive
150
+ * two to eight stepper motors, one at a time, in a manner suitable
151
+ * for extruders.
152
+ *
153
+ * This option only allows the multiplexer to switch on tool-change.
154
+ * Additional options to configure custom E moves are pending.
155
+ */
156
+//#define MK2_MULTIPLEXER
157
+#if ENABLED(MK2_MULTIPLEXER)
158
+  // Override the default DIO selector pins here, if needed.
159
+  // Some pins files may provide defaults for these pins.
160
+  //#define E_MUX0_PIN 40  // Always Required
161
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
162
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
163
+#endif
164
+
146 165
 // A dual extruder that uses a single stepper motor
147 166
 //#define SWITCHING_EXTRUDER
148 167
 #if ENABLED(SWITCHING_EXTRUDER)
@@ -584,13 +603,12 @@
584 603
  *
585 604
  */
586 605
 //#define Z_MIN_PROBE_ENDSTOP
587
-//#define Z_MIN_PROBE_PIN Z_MAX_PIN
588 606
 
589 607
 /**
590 608
  * Probe Type
591 609
  *
592 610
  * Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc.
593
- * You must activate one of these to use Auto Bed Leveling below.
611
+ * Activate one of these to use Auto Bed Leveling below.
594 612
  */
595 613
 
596 614
 /**
@@ -907,12 +925,14 @@
907 925
   #define UBL_MESH_INSET 1          // Mesh inset margin on print area
908 926
   #define GRID_MAX_POINTS_X 10      // Don't use more than 15 points per axis, implementation limited.
909 927
   #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
910
-  #define UBL_PROBE_PT_1_X 39       // These set the probe locations for when UBL does a 3-Point leveling
911
-  #define UBL_PROBE_PT_1_Y 180      // of the mesh.
928
+
929
+  #define UBL_PROBE_PT_1_X 39       // Probing points for 3-Point leveling of the mesh
930
+  #define UBL_PROBE_PT_1_Y 180
912 931
   #define UBL_PROBE_PT_2_X 39
913 932
   #define UBL_PROBE_PT_2_Y 20
914 933
   #define UBL_PROBE_PT_3_X 180
915 934
   #define UBL_PROBE_PT_3_Y 20
935
+
916 936
   #define UBL_G26_MESH_VALIDATION   // Enable G26 mesh validation
917 937
   #define UBL_MESH_EDIT_MOVES_Z     // Sophisticated users prefer no movement of nozzle
918 938
 
@@ -967,6 +987,7 @@
967 987
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
968 988
 // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
969 989
 // - Prevent Z homing when the Z probe is outside bed area.
990
+//
970 991
 //#define Z_SAFE_HOMING
971 992
 
972 993
 #if ENABLED(Z_SAFE_HOMING)
@@ -991,13 +1012,10 @@
991 1012
 // M500 - stores parameters in EEPROM
992 1013
 // M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).
993 1014
 // M502 - reverts to the default "factory settings".  You still need to store them in EEPROM afterwards if you want to.
994
-//define this to enable EEPROM support
995
-#define EEPROM_SETTINGS
996
-
997
-#if ENABLED(EEPROM_SETTINGS)
998
-  // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out:
999
-  #define EEPROM_CHITCHAT // Please keep turned on if you can.
1000
-#endif
1015
+//
1016
+#define EEPROM_SETTINGS   // Enable for M500 and M501 commands
1017
+//#define DISABLE_M503    // Saves ~2700 bytes of PROGMEM. Disable for release!
1018
+#define EEPROM_CHITCHAT   // Give feedback on EEPROM commands. Disable to save PROGMEM.
1001 1019
 
1002 1020
 //
1003 1021
 // Host Keepalive
@@ -1156,10 +1174,11 @@
1156 1174
  *
1157 1175
  * Select the language to display on the LCD. These languages are available:
1158 1176
  *
1159
- *    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
1160
- *    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk, test
1177
+ *    en, an, bg, ca, cn, cz, cz_utf8, de, el, el-gr, es, eu, fi, fr, gl, hr,
1178
+ *    it, kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk,
1179
+ *    zh_CN, zh_TW, test
1161 1180
  *
1162
- * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'test':'TEST' }
1181
+ * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'cz_utf8':'Czech (UTF8)', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'zh_CN':'Chinese (Simplified)', 'zh_TW':'Chinese (Taiwan)', test':'TEST' }
1163 1182
  */
1164 1183
 #define LCD_LANGUAGE en
1165 1184
 
@@ -1308,12 +1327,6 @@
1308 1327
 //#define ULTIPANEL
1309 1328
 
1310 1329
 //
1311
-// Cartesio UI
1312
-// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1313
-//
1314
-//#define CARTESIO_UI
1315
-
1316
-//
1317 1330
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
1318 1331
 // http://reprap.org/wiki/PanelOne
1319 1332
 //
@@ -1396,6 +1409,27 @@
1396 1409
 //#define BQ_LCD_SMART_CONTROLLER
1397 1410
 
1398 1411
 //
1412
+// Cartesio UI
1413
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1414
+//
1415
+//#define CARTESIO_UI
1416
+
1417
+//
1418
+// ANET_10 Controller supported displays.
1419
+//
1420
+//#define ANET_KEYPAD_LCD         // Requires ADC_KEYPAD_PIN to be assigned to an analog pin.
1421
+                                  // This LCD is known to be susceptible to electrical interference
1422
+                                  // which scrambles the display.  Pressing any button clears it up.
1423
+//#define ANET_FULL_GRAPHICS_LCD  // Anet 128x64 full graphics lcd with rotary encoder as used on Anet A6
1424
+                                  // A clone of the RepRapDiscount full graphics display but with
1425
+                                  // different pins/wiring (see pins_ANET_10.h).
1426
+
1427
+//
1428
+// LCD for Melzi Card with Graphical LCD
1429
+//
1430
+//#define LCD_FOR_MELZI
1431
+
1432
+//
1399 1433
 // CONTROLLER TYPE: I2C
1400 1434
 //
1401 1435
 // Note: These controllers require the installation of Arduino's LiquidCrystal_I2C
@@ -1411,6 +1445,9 @@
1411 1445
 //
1412 1446
 // Sainsmart YW Robot (LCM1602) LCD Display
1413 1447
 //
1448
+// Note: This controller requires F.Malpartida's LiquidCrystal_I2C library
1449
+// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
1450
+//
1414 1451
 //#define LCD_I2C_SAINSMART_YWROBOT
1415 1452
 
1416 1453
 //
@@ -1442,6 +1479,11 @@
1442 1479
 //#define U8GLIB_SSD1306
1443 1480
 
1444 1481
 //
1482
+// TinyBoy2 128x64 OLED / Encoder Panel
1483
+//
1484
+//#define OLED_PANEL_TINYBOY2
1485
+
1486
+//
1445 1487
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1446 1488
 //
1447 1489
 //#define SAV_3DGLCD
@@ -1458,11 +1500,6 @@
1458 1500
 //
1459 1501
 //#define SAV_3DLCD
1460 1502
 
1461
-//
1462
-// TinyBoy2 128x64 OLED / Encoder Panel
1463
-//
1464
-//#define OLED_PANEL_TINYBOY2
1465
-
1466 1503
 //=============================================================================
1467 1504
 //=============================== Extra Features ==============================
1468 1505
 //=============================================================================
@@ -1501,12 +1538,15 @@
1501 1538
 // SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure
1502 1539
 //#define SF_ARC_FIX
1503 1540
 
1504
-// Support for the BariCUDA Paste Extruder.
1541
+// Support for the BariCUDA Paste Extruder
1505 1542
 //#define BARICUDA
1506 1543
 
1507
-//define BlinkM/CyzRgb Support
1544
+// Support for BlinkM/CyzRgb
1508 1545
 //#define BLINKM
1509 1546
 
1547
+// Support for PCA9632 PWM LED driver
1548
+//#define PCA9632
1549
+
1510 1550
 /**
1511 1551
  * RGB LED / LED Strip Control
1512 1552
  *
@@ -1544,7 +1584,7 @@
1544 1584
  *  - Change to green once print has finished
1545 1585
  *  - Turn off after the print has finished and the user has pushed a button
1546 1586
  */
1547
-#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED)
1587
+#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED) || ENABLED(PCA9632)
1548 1588
   #define PRINTER_EVENT_LEDS
1549 1589
 #endif
1550 1590
 

+ 111
- 14
Marlin/example_configurations/M150/Configuration_adv.h Просмотреть файл

@@ -123,8 +123,8 @@
123 123
   #define AUTOTEMP_OLDWEIGHT 0.98
124 124
 #endif
125 125
 
126
-//Show Temperature ADC value
127
-//The M105 command return, besides traditional information, the ADC value read from temperature sensors.
126
+// Show Temperature ADC value
127
+// Enable for M105 to include ADC values read from temperature sensors.
128 128
 //#define SHOW_TEMP_ADC_VALUES
129 129
 
130 130
 /**
@@ -419,16 +419,16 @@
419 419
  *    M908 - BQ_ZUM_MEGA_3D, RAMBO, PRINTRBOARD_REVF, RIGIDBOARD_V2 & SCOOVO_X9H
420 420
  *    M909, M910 & LCD - only PRINTRBOARD_REVF & RIGIDBOARD_V2
421 421
  */
422
-//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps
423
-//#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
424
-//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 } // Default drive percent - X, Y, Z, E axis
422
+//#define PWM_MOTOR_CURRENT { 1300, 1300, 1250 }          // Values in milliamps
423
+//#define DIGIPOT_MOTOR_CURRENT { 135,135,135,135,135 }   // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
424
+//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 }    // Default drive percent - X, Y, Z, E axis
425 425
 
426 426
 // Uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro
427 427
 //#define DIGIPOT_I2C
428
-//#define DIGIPOT_MCP4018
428
+//#define DIGIPOT_MCP4018          // Requires library from https://github.com/stawel/SlowSoftI2CMaster
429 429
 #define DIGIPOT_I2C_NUM_CHANNELS 8 // 5DPRINT: 4     AZTEEG_X3_PRO: 8
430 430
 // Actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS
431
-#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0}  //  AZTEEG_X3_PRO
431
+#define DIGIPOT_I2C_MOTOR_CURRENTS { 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 }  //  AZTEEG_X3_PRO
432 432
 
433 433
 //===========================================================================
434 434
 //=============================Additional Features===========================
@@ -648,7 +648,7 @@
648 648
    *
649 649
    * Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
650 650
    *
651
-   * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
651
+   * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
652 652
    * Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
653 653
    */
654 654
   #define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
@@ -678,10 +678,16 @@
678 678
 
679 679
 // @section extras
680 680
 
681
-// Arc interpretation settings:
682
-#define ARC_SUPPORT  // Disabling this saves ~2738 bytes
683
-#define MM_PER_ARC_SEGMENT 1
684
-#define N_ARC_CORRECTION 25
681
+//
682
+// G2/G3 Arc Support
683
+//
684
+#define ARC_SUPPORT               // Disable this feature to save ~3226 bytes
685
+#if ENABLED(ARC_SUPPORT)
686
+  #define MM_PER_ARC_SEGMENT  1   // Length of each arc segment
687
+  #define N_ARC_CORRECTION   25   // Number of intertpolated segments between corrections
688
+  //#define ARC_P_CIRCLES         // Enable the 'P' parameter to specify complete circles
689
+  //#define CNC_WORKSPACE_PLANES  // Allow G2/G3 to operate in XY, ZX, or YZ planes
690
+#endif
685 691
 
686 692
 // Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
687 693
 //#define BEZIER_CURVE_SUPPORT
@@ -807,6 +813,7 @@
807 813
   #define PAUSE_PARK_NO_STEPPER_TIMEOUT       // Enable to have stepper motors hold position during filament change
808 814
                                               // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
809 815
   //#define PARK_HEAD_ON_PAUSE                // Go to filament change position on pause, return to print position on resume
816
+  //#define HOME_BEFORE_FILAMENT_CHANGE       // Ensure homing has been completed prior to parking for filament change
810 817
 #endif
811 818
 
812 819
 // @section tmc
@@ -1199,12 +1206,12 @@
1199 1206
 /**
1200 1207
  * Auto-report temperatures with M155 S<seconds>
1201 1208
  */
1202
-//#define AUTO_REPORT_TEMPERATURES
1209
+#define AUTO_REPORT_TEMPERATURES
1203 1210
 
1204 1211
 /**
1205 1212
  * Include capabilities in M115 output
1206 1213
  */
1207
-//#define EXTENDED_CAPABILITIES_REPORT
1214
+#define EXTENDED_CAPABILITIES_REPORT
1208 1215
 
1209 1216
 /**
1210 1217
  * Volumetric extrusion default state
@@ -1261,4 +1268,94 @@
1261 1268
   #define USER_GCODE_5 "G28\nM503"
1262 1269
 #endif
1263 1270
 
1271
+/**
1272
+ * Specify an action command to send to the host when the printer is killed.
1273
+ * Will be sent in the form '//action:ACTION_ON_KILL', e.g. '//action:poweroff'.
1274
+ * The host must be configured to handle the action command.
1275
+ */
1276
+//#define ACTION_ON_KILL "poweroff"
1277
+
1278
+//===========================================================================
1279
+//====================== I2C Position Encoder Settings ======================
1280
+//===========================================================================
1281
+/**
1282
+ *  I2C position encoders for closed loop control.
1283
+ *  Developed by Chris Barr at Aus3D.
1284
+ *
1285
+ *  Wiki: http://wiki.aus3d.com.au/Magnetic_Encoder
1286
+ *  Github: https://github.com/Aus3D/MagneticEncoder
1287
+ *
1288
+ *  Supplier: http://aus3d.com.au/magnetic-encoder-module
1289
+ *  Alternative Supplier: http://reliabuild3d.com/
1290
+ *
1291
+ *  Reilabuild encoders have been modified to improve reliability.
1292
+ */
1293
+
1294
+//#define I2C_POSITION_ENCODERS
1295
+#if ENABLED(I2C_POSITION_ENCODERS)
1296
+
1297
+  #define I2CPE_ENCODER_CNT         1                       // The number of encoders installed; max of 5
1298
+                                                            // encoders supported currently.
1299
+
1300
+  #define I2CPE_ENC_1_ADDR          I2CPE_PRESET_ADDR_X     // I2C address of the encoder. 30-200.
1301
+  #define I2CPE_ENC_1_AXIS          X_AXIS                  // Axis the encoder module is installed on.  <X|Y|Z|E>_AXIS.
1302
+  #define I2CPE_ENC_1_TYPE          I2CPE_ENC_TYPE_LINEAR   // Type of encoder:  I2CPE_ENC_TYPE_LINEAR -or-
1303
+                                                            // I2CPE_ENC_TYPE_ROTARY.
1304
+  #define I2CPE_ENC_1_TICKS_UNIT    2048                    // 1024 for magnetic strips with 2mm poles; 2048 for
1305
+                                                            // 1mm poles. For linear encoders this is ticks / mm,
1306
+                                                            // for rotary encoders this is ticks / revolution.
1307
+  //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1308
+                                                            // steps per full revolution (motor steps/rev * microstepping)
1309
+  //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1310
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1311
+  #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1312
+                                                            // printer will attempt to correct the error; errors
1313
+                                                            // smaller than this are ignored to minimize effects of
1314
+                                                            // measurement noise / latency (filter).
1315
+
1316
+  #define I2CPE_ENC_2_ADDR          I2CPE_PRESET_ADDR_Y     // Same as above, but for encoder 2.
1317
+  #define I2CPE_ENC_2_AXIS          Y_AXIS
1318
+  #define I2CPE_ENC_2_TYPE          I2CPE_ENC_TYPE_LINEAR
1319
+  #define I2CPE_ENC_2_TICKS_UNIT    2048
1320
+  //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1321
+  //#define I2CPE_ENC_2_INVERT
1322
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1323
+  #define I2CPE_ENC_2_EC_THRESH     0.10
1324
+
1325
+  #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
1326
+  #define I2CPE_ENC_3_AXIS          Z_AXIS                  // as above, or use defaults below.
1327
+
1328
+  #define I2CPE_ENC_4_ADDR          I2CPE_PRESET_ADDR_E     // Encoder 4.
1329
+  #define I2CPE_ENC_4_AXIS          E_AXIS
1330
+
1331
+  #define I2CPE_ENC_5_ADDR          34                      // Encoder 5.
1332
+  #define I2CPE_ENC_5_AXIS          E_AXIS
1333
+
1334
+  // Default settings for encoders which are enabled, but without settings configured above.
1335
+  #define I2CPE_DEF_TYPE            I2CPE_ENC_TYPE_LINEAR
1336
+  #define I2CPE_DEF_ENC_TICKS_UNIT  2048
1337
+  #define I2CPE_DEF_TICKS_REV       (16 * 200)
1338
+  #define I2CPE_DEF_EC_METHOD       I2CPE_ECM_NONE
1339
+  #define I2CPE_DEF_EC_THRESH       0.1
1340
+
1341
+  //#define I2CPE_ERR_THRESH_ABORT  100.0                   // Threshold size for error (in mm) error on any given
1342
+                                                            // axis after which the printer will abort. Comment out to
1343
+                                                            // disable abort behaviour.
1344
+
1345
+  #define I2CPE_TIME_TRUSTED        10000                   // After an encoder fault, there must be no further fault
1346
+                                                            // for this amount of time (in ms) before the encoder
1347
+                                                            // is trusted again.
1348
+
1349
+  /**
1350
+   * Position is checked every time a new command is executed from the buffer but during long moves,
1351
+   * this setting determines the minimum update time between checks. A value of 100 works well with
1352
+   * error rolling average when attempting to correct only for skips and not for vibration.
1353
+   */
1354
+  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1355
+
1356
+  // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1357
+  #define I2CPE_ERR_ROLLING_AVERAGE
1358
+
1359
+#endif // I2C_POSITION_ENCODERS
1360
+
1264 1361
 #endif // CONFIGURATION_ADV_H

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

@@ -58,15 +58,15 @@
58 58
 //===========================================================================
59 59
 //============================= DELTA Printer ===============================
60 60
 //===========================================================================
61
-// For Delta printers start with one of the configuration files in the
61
+// For a Delta printer start with one of the configuration files in the
62 62
 // example_configurations/delta directory and customize for your machine.
63 63
 //
64 64
 
65 65
 //===========================================================================
66 66
 //============================= SCARA Printer ===============================
67 67
 //===========================================================================
68
-// For a Scara printer replace the configuration files with the files in the
69
-// example_configurations/SCARA directory.
68
+// For a SCARA printer start with the configuration files in
69
+// example_configurations/SCARA and customize for your machine.
70 70
 //
71 71
 
72 72
 // @section info
@@ -138,6 +138,25 @@
138 138
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
139 139
 //#define SINGLENOZZLE
140 140
 
141
+/**
142
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
143
+ *
144
+ * This device allows one stepper driver on a control board to drive
145
+ * two to eight stepper motors, one at a time, in a manner suitable
146
+ * for extruders.
147
+ *
148
+ * This option only allows the multiplexer to switch on tool-change.
149
+ * Additional options to configure custom E moves are pending.
150
+ */
151
+//#define MK2_MULTIPLEXER
152
+#if ENABLED(MK2_MULTIPLEXER)
153
+  // Override the default DIO selector pins here, if needed.
154
+  // Some pins files may provide defaults for these pins.
155
+  //#define E_MUX0_PIN 40  // Always Required
156
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
157
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
158
+#endif
159
+
141 160
 // A dual extruder that uses a single stepper motor
142 161
 //#define SWITCHING_EXTRUDER
143 162
 #if ENABLED(SWITCHING_EXTRUDER)
@@ -565,7 +584,6 @@
565 584
  *
566 585
  */
567 586
 //#define Z_MIN_PROBE_ENDSTOP
568
-//#define Z_MIN_PROBE_PIN Z_MAX_PIN
569 587
 
570 588
 /**
571 589
  * Probe Type
@@ -880,12 +898,14 @@
880 898
   #define UBL_MESH_INSET 1          // Mesh inset margin on print area
881 899
   #define GRID_MAX_POINTS_X 10      // Don't use more than 15 points per axis, implementation limited.
882 900
   #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
883
-  #define UBL_PROBE_PT_1_X 39       // These set the probe locations for when UBL does a 3-Point leveling
884
-  #define UBL_PROBE_PT_1_Y 180      // of the mesh.
901
+
902
+  #define UBL_PROBE_PT_1_X 39       // Probing points for 3-Point leveling of the mesh
903
+  #define UBL_PROBE_PT_1_Y 180
885 904
   #define UBL_PROBE_PT_2_X 39
886 905
   #define UBL_PROBE_PT_2_Y 20
887 906
   #define UBL_PROBE_PT_3_X 180
888 907
   #define UBL_PROBE_PT_3_Y 20
908
+
889 909
   #define UBL_G26_MESH_VALIDATION   // Enable G26 mesh validation
890 910
   #define UBL_MESH_EDIT_MOVES_Z     // Sophisticated users prefer no movement of nozzle
891 911
 
@@ -940,6 +960,7 @@
940 960
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
941 961
 // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
942 962
 // - Prevent Z homing when the Z probe is outside bed area.
963
+//
943 964
 //#define Z_SAFE_HOMING
944 965
 
945 966
 #if ENABLED(Z_SAFE_HOMING)
@@ -964,13 +985,10 @@
964 985
 // M500 - stores parameters in EEPROM
965 986
 // M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).
966 987
 // M502 - reverts to the default "factory settings".  You still need to store them in EEPROM afterwards if you want to.
967
-//define this to enable EEPROM support
968
-//#define EEPROM_SETTINGS
969
-
970
-#if ENABLED(EEPROM_SETTINGS)
971
-  // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out:
972
-  #define EEPROM_CHITCHAT // Please keep turned on if you can.
973
-#endif
988
+//
989
+//#define EEPROM_SETTINGS // Enable for M500 and M501 commands
990
+//#define DISABLE_M503    // Saves ~2700 bytes of PROGMEM. Disable for release!
991
+#define EEPROM_CHITCHAT   // Give feedback on EEPROM commands. Disable to save PROGMEM.
974 992
 
975 993
 //
976 994
 // Host Keepalive
@@ -1129,10 +1147,11 @@
1129 1147
  *
1130 1148
  * Select the language to display on the LCD. These languages are available:
1131 1149
  *
1132
- *    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
1133
- *    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk, test
1150
+ *    en, an, bg, ca, cn, cz, cz_utf8, de, el, el-gr, es, eu, fi, fr, gl, hr,
1151
+ *    it, kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk,
1152
+ *    zh_CN, zh_TW, test
1134 1153
  *
1135
- * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'test':'TEST' }
1154
+ * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'cz_utf8':'Czech (UTF8)', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'zh_CN':'Chinese (Simplified)', 'zh_TW':'Chinese (Taiwan)', test':'TEST' }
1136 1155
  */
1137 1156
 #define LCD_LANGUAGE en
1138 1157
 
@@ -1281,12 +1300,6 @@
1281 1300
 //#define ULTIPANEL
1282 1301
 
1283 1302
 //
1284
-// Cartesio UI
1285
-// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1286
-//
1287
-//#define CARTESIO_UI
1288
-
1289
-//
1290 1303
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
1291 1304
 // http://reprap.org/wiki/PanelOne
1292 1305
 //
@@ -1369,6 +1382,27 @@
1369 1382
 //#define BQ_LCD_SMART_CONTROLLER
1370 1383
 
1371 1384
 //
1385
+// Cartesio UI
1386
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1387
+//
1388
+//#define CARTESIO_UI
1389
+
1390
+//
1391
+// ANET_10 Controller supported displays.
1392
+//
1393
+//#define ANET_KEYPAD_LCD         // Requires ADC_KEYPAD_PIN to be assigned to an analog pin.
1394
+                                  // This LCD is known to be susceptible to electrical interference
1395
+                                  // which scrambles the display.  Pressing any button clears it up.
1396
+//#define ANET_FULL_GRAPHICS_LCD  // Anet 128x64 full graphics lcd with rotary encoder as used on Anet A6
1397
+                                  // A clone of the RepRapDiscount full graphics display but with
1398
+                                  // different pins/wiring (see pins_ANET_10.h).
1399
+
1400
+//
1401
+// LCD for Melzi Card with Graphical LCD
1402
+//
1403
+//#define LCD_FOR_MELZI
1404
+
1405
+//
1372 1406
 // CONTROLLER TYPE: I2C
1373 1407
 //
1374 1408
 // Note: These controllers require the installation of Arduino's LiquidCrystal_I2C
@@ -1384,6 +1418,9 @@
1384 1418
 //
1385 1419
 // Sainsmart YW Robot (LCM1602) LCD Display
1386 1420
 //
1421
+// Note: This controller requires F.Malpartida's LiquidCrystal_I2C library
1422
+// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
1423
+//
1387 1424
 //#define LCD_I2C_SAINSMART_YWROBOT
1388 1425
 
1389 1426
 //
@@ -1415,6 +1452,11 @@
1415 1452
 //#define U8GLIB_SSD1306
1416 1453
 
1417 1454
 //
1455
+// TinyBoy2 128x64 OLED / Encoder Panel
1456
+//
1457
+//#define OLED_PANEL_TINYBOY2
1458
+
1459
+//
1418 1460
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1419 1461
 //
1420 1462
 //#define SAV_3DGLCD
@@ -1431,11 +1473,6 @@
1431 1473
 //
1432 1474
 //#define SAV_3DLCD
1433 1475
 
1434
-//
1435
-// TinyBoy2 128x64 OLED / Encoder Panel
1436
-//
1437
-//#define OLED_PANEL_TINYBOY2
1438
-
1439 1476
 //=============================================================================
1440 1477
 //=============================== Extra Features ==============================
1441 1478
 //=============================================================================
@@ -1474,12 +1511,15 @@
1474 1511
 // SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure
1475 1512
 //#define SF_ARC_FIX
1476 1513
 
1477
-// Support for the BariCUDA Paste Extruder.
1514
+// Support for the BariCUDA Paste Extruder
1478 1515
 //#define BARICUDA
1479 1516
 
1480
-//define BlinkM/CyzRgb Support
1517
+// Support for BlinkM/CyzRgb
1481 1518
 //#define BLINKM
1482 1519
 
1520
+// Support for PCA9632 PWM LED driver
1521
+//#define PCA9632
1522
+
1483 1523
 /**
1484 1524
  * RGB LED / LED Strip Control
1485 1525
  *
@@ -1517,7 +1557,7 @@
1517 1557
  *  - Change to green once print has finished
1518 1558
  *  - Turn off after the print has finished and the user has pushed a button
1519 1559
  */
1520
-#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED)
1560
+#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED) || ENABLED(PCA9632)
1521 1561
   #define PRINTER_EVENT_LEDS
1522 1562
 #endif
1523 1563
 

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

@@ -58,15 +58,15 @@
58 58
 //===========================================================================
59 59
 //============================= DELTA Printer ===============================
60 60
 //===========================================================================
61
-// For Delta printers start with one of the configuration files in the
61
+// For a Delta printer start with one of the configuration files in the
62 62
 // example_configurations/delta directory and customize for your machine.
63 63
 //
64 64
 
65 65
 //===========================================================================
66 66
 //============================= SCARA Printer ===============================
67 67
 //===========================================================================
68
-// For a Scara printer replace the configuration files with the files in the
69
-// example_configurations/SCARA directory.
68
+// For a SCARA printer start with the configuration files in
69
+// example_configurations/SCARA and customize for your machine.
70 70
 //
71 71
 
72 72
 // @section info
@@ -141,6 +141,25 @@
141 141
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
142 142
 //#define SINGLENOZZLE
143 143
 
144
+/**
145
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
146
+ *
147
+ * This device allows one stepper driver on a control board to drive
148
+ * two to eight stepper motors, one at a time, in a manner suitable
149
+ * for extruders.
150
+ *
151
+ * This option only allows the multiplexer to switch on tool-change.
152
+ * Additional options to configure custom E moves are pending.
153
+ */
154
+//#define MK2_MULTIPLEXER
155
+#if ENABLED(MK2_MULTIPLEXER)
156
+  // Override the default DIO selector pins here, if needed.
157
+  // Some pins files may provide defaults for these pins.
158
+  //#define E_MUX0_PIN 40  // Always Required
159
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
160
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
161
+#endif
162
+
144 163
 // A dual extruder that uses a single stepper motor
145 164
 //#define SWITCHING_EXTRUDER
146 165
 #if ENABLED(SWITCHING_EXTRUDER)
@@ -563,7 +582,6 @@
563 582
  *
564 583
  */
565 584
 //#define Z_MIN_PROBE_ENDSTOP
566
-//#define Z_MIN_PROBE_PIN Z_MAX_PIN
567 585
 
568 586
 /**
569 587
  * Probe Type
@@ -878,12 +896,14 @@
878 896
   #define UBL_MESH_INSET 1          // Mesh inset margin on print area
879 897
   #define GRID_MAX_POINTS_X 10      // Don't use more than 15 points per axis, implementation limited.
880 898
   #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
881
-  #define UBL_PROBE_PT_1_X 39       // These set the probe locations for when UBL does a 3-Point leveling
882
-  #define UBL_PROBE_PT_1_Y 180      // of the mesh.
899
+
900
+  #define UBL_PROBE_PT_1_X 39       // Probing points for 3-Point leveling of the mesh
901
+  #define UBL_PROBE_PT_1_Y 180
883 902
   #define UBL_PROBE_PT_2_X 39
884 903
   #define UBL_PROBE_PT_2_Y 20
885 904
   #define UBL_PROBE_PT_3_X 180
886 905
   #define UBL_PROBE_PT_3_Y 20
906
+
887 907
   #define UBL_G26_MESH_VALIDATION   // Enable G26 mesh validation
888 908
   #define UBL_MESH_EDIT_MOVES_Z     // Sophisticated users prefer no movement of nozzle
889 909
 
@@ -938,6 +958,7 @@
938 958
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
939 959
 // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
940 960
 // - Prevent Z homing when the Z probe is outside bed area.
961
+//
941 962
 //#define Z_SAFE_HOMING
942 963
 
943 964
 #if ENABLED(Z_SAFE_HOMING)
@@ -962,13 +983,10 @@
962 983
 // M500 - stores parameters in EEPROM
963 984
 // M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).
964 985
 // M502 - reverts to the default "factory settings".  You still need to store them in EEPROM afterwards if you want to.
965
-//define this to enable EEPROM support
966
-#define EEPROM_SETTINGS
967
-
968
-#if ENABLED(EEPROM_SETTINGS)
969
-  // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out:
970
-  #define EEPROM_CHITCHAT // Please keep turned on if you can.
971
-#endif
986
+//
987
+#define EEPROM_SETTINGS   // Enable for M500 and M501 commands
988
+//#define DISABLE_M503    // Saves ~2700 bytes of PROGMEM. Disable for release!
989
+#define EEPROM_CHITCHAT   // Give feedback on EEPROM commands. Disable to save PROGMEM.
972 990
 
973 991
 //
974 992
 // Host Keepalive
@@ -1127,10 +1145,11 @@
1127 1145
  *
1128 1146
  * Select the language to display on the LCD. These languages are available:
1129 1147
  *
1130
- *    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
1131
- *    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk, test
1148
+ *    en, an, bg, ca, cn, cz, cz_utf8, de, el, el-gr, es, eu, fi, fr, gl, hr,
1149
+ *    it, kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk,
1150
+ *    zh_CN, zh_TW, test
1132 1151
  *
1133
- * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'test':'TEST' }
1152
+ * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'cz_utf8':'Czech (UTF8)', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'zh_CN':'Chinese (Simplified)', 'zh_TW':'Chinese (Taiwan)', test':'TEST' }
1134 1153
  */
1135 1154
 #define LCD_LANGUAGE en
1136 1155
 
@@ -1279,12 +1298,6 @@
1279 1298
 //#define ULTIPANEL
1280 1299
 
1281 1300
 //
1282
-// Cartesio UI
1283
-// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1284
-//
1285
-//#define CARTESIO_UI
1286
-
1287
-//
1288 1301
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
1289 1302
 // http://reprap.org/wiki/PanelOne
1290 1303
 //
@@ -1369,6 +1382,27 @@
1369 1382
 //#define BQ_LCD_SMART_CONTROLLER
1370 1383
 
1371 1384
 //
1385
+// Cartesio UI
1386
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1387
+//
1388
+//#define CARTESIO_UI
1389
+
1390
+//
1391
+// ANET_10 Controller supported displays.
1392
+//
1393
+//#define ANET_KEYPAD_LCD         // Requires ADC_KEYPAD_PIN to be assigned to an analog pin.
1394
+                                  // This LCD is known to be susceptible to electrical interference
1395
+                                  // which scrambles the display.  Pressing any button clears it up.
1396
+//#define ANET_FULL_GRAPHICS_LCD  // Anet 128x64 full graphics lcd with rotary encoder as used on Anet A6
1397
+                                  // A clone of the RepRapDiscount full graphics display but with
1398
+                                  // different pins/wiring (see pins_ANET_10.h).
1399
+
1400
+//
1401
+// LCD for Melzi Card with Graphical LCD
1402
+//
1403
+//#define LCD_FOR_MELZI
1404
+
1405
+//
1372 1406
 // CONTROLLER TYPE: I2C
1373 1407
 //
1374 1408
 // Note: These controllers require the installation of Arduino's LiquidCrystal_I2C
@@ -1384,6 +1418,9 @@
1384 1418
 //
1385 1419
 // Sainsmart YW Robot (LCM1602) LCD Display
1386 1420
 //
1421
+// Note: This controller requires F.Malpartida's LiquidCrystal_I2C library
1422
+// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
1423
+//
1387 1424
 //#define LCD_I2C_SAINSMART_YWROBOT
1388 1425
 
1389 1426
 //
@@ -1415,6 +1452,11 @@
1415 1452
 //#define U8GLIB_SSD1306
1416 1453
 
1417 1454
 //
1455
+// TinyBoy2 128x64 OLED / Encoder Panel
1456
+//
1457
+//#define OLED_PANEL_TINYBOY2
1458
+
1459
+//
1418 1460
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1419 1461
 //
1420 1462
 //#define SAV_3DGLCD
@@ -1431,11 +1473,6 @@
1431 1473
 //
1432 1474
 //#define SAV_3DLCD
1433 1475
 
1434
-//
1435
-// TinyBoy2 128x64 OLED / Encoder Panel
1436
-//
1437
-//#define OLED_PANEL_TINYBOY2
1438
-
1439 1476
 //=============================================================================
1440 1477
 //=============================== Extra Features ==============================
1441 1478
 //=============================================================================
@@ -1474,12 +1511,15 @@
1474 1511
 // SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure
1475 1512
 //#define SF_ARC_FIX
1476 1513
 
1477
-// Support for the BariCUDA Paste Extruder.
1514
+// Support for the BariCUDA Paste Extruder
1478 1515
 //#define BARICUDA
1479 1516
 
1480
-//define BlinkM/CyzRgb Support
1517
+// Support for BlinkM/CyzRgb
1481 1518
 //#define BLINKM
1482 1519
 
1520
+// Support for PCA9632 PWM LED driver
1521
+//#define PCA9632
1522
+
1483 1523
 /**
1484 1524
  * RGB LED / LED Strip Control
1485 1525
  *
@@ -1517,7 +1557,7 @@
1517 1557
  *  - Change to green once print has finished
1518 1558
  *  - Turn off after the print has finished and the user has pushed a button
1519 1559
  */
1520
-#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED)
1560
+#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED) || ENABLED(PCA9632)
1521 1561
   #define PRINTER_EVENT_LEDS
1522 1562
 #endif
1523 1563
 

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

@@ -123,8 +123,8 @@
123 123
   #define AUTOTEMP_OLDWEIGHT 0.98
124 124
 #endif
125 125
 
126
-//Show Temperature ADC value
127
-//The M105 command return, besides traditional information, the ADC value read from temperature sensors.
126
+// Show Temperature ADC value
127
+// Enable for M105 to include ADC values read from temperature sensors.
128 128
 //#define SHOW_TEMP_ADC_VALUES
129 129
 
130 130
 /**
@@ -419,16 +419,16 @@
419 419
  *    M908 - BQ_ZUM_MEGA_3D, RAMBO, PRINTRBOARD_REVF, RIGIDBOARD_V2 & SCOOVO_X9H
420 420
  *    M909, M910 & LCD - only PRINTRBOARD_REVF & RIGIDBOARD_V2
421 421
  */
422
-//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps
423
-//#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
424
-//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 } // Default drive percent - X, Y, Z, E axis
422
+//#define PWM_MOTOR_CURRENT { 1300, 1300, 1250 }          // Values in milliamps
423
+//#define DIGIPOT_MOTOR_CURRENT { 135,135,135,135,135 }   // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
424
+//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 }    // Default drive percent - X, Y, Z, E axis
425 425
 
426 426
 // Uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro
427 427
 //#define DIGIPOT_I2C
428
-//#define DIGIPOT_MCP4018
428
+//#define DIGIPOT_MCP4018          // Requires library from https://github.com/stawel/SlowSoftI2CMaster
429 429
 #define DIGIPOT_I2C_NUM_CHANNELS 8 // 5DPRINT: 4     AZTEEG_X3_PRO: 8
430 430
 // Actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS
431
-#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0}  //  AZTEEG_X3_PRO
431
+#define DIGIPOT_I2C_MOTOR_CURRENTS { 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 }  //  AZTEEG_X3_PRO
432 432
 
433 433
 //===========================================================================
434 434
 //=============================Additional Features===========================
@@ -645,7 +645,7 @@
645 645
    *
646 646
    * Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
647 647
    *
648
-   * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
648
+   * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
649 649
    * Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
650 650
    */
651 651
   #define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
@@ -671,10 +671,16 @@
671 671
 
672 672
 // @section extras
673 673
 
674
-// Arc interpretation settings:
675
-#define ARC_SUPPORT  // Disabling this saves ~2738 bytes
676
-#define MM_PER_ARC_SEGMENT 1
677
-#define N_ARC_CORRECTION 25
674
+//
675
+// G2/G3 Arc Support
676
+//
677
+#define ARC_SUPPORT               // Disable this feature to save ~3226 bytes
678
+#if ENABLED(ARC_SUPPORT)
679
+  #define MM_PER_ARC_SEGMENT  1   // Length of each arc segment
680
+  #define N_ARC_CORRECTION   25   // Number of intertpolated segments between corrections
681
+  //#define ARC_P_CIRCLES         // Enable the 'P' parameter to specify complete circles
682
+  //#define CNC_WORKSPACE_PLANES  // Allow G2/G3 to operate in XY, ZX, or YZ planes
683
+#endif
678 684
 
679 685
 // Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
680 686
 //#define BEZIER_CURVE_SUPPORT
@@ -800,6 +806,7 @@
800 806
   #define PAUSE_PARK_NO_STEPPER_TIMEOUT       // Enable to have stepper motors hold position during filament change
801 807
                                               // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
802 808
   //#define PARK_HEAD_ON_PAUSE                // Go to filament change position on pause, return to print position on resume
809
+  //#define HOME_BEFORE_FILAMENT_CHANGE       // Ensure homing has been completed prior to parking for filament change
803 810
 #endif
804 811
 
805 812
 // @section tmc
@@ -1192,12 +1199,12 @@
1192 1199
 /**
1193 1200
  * Auto-report temperatures with M155 S<seconds>
1194 1201
  */
1195
-//#define AUTO_REPORT_TEMPERATURES
1202
+#define AUTO_REPORT_TEMPERATURES
1196 1203
 
1197 1204
 /**
1198 1205
  * Include capabilities in M115 output
1199 1206
  */
1200
-//#define EXTENDED_CAPABILITIES_REPORT
1207
+#define EXTENDED_CAPABILITIES_REPORT
1201 1208
 
1202 1209
 /**
1203 1210
  * Volumetric extrusion default state
@@ -1254,4 +1261,94 @@
1254 1261
   //#define USER_GCODE_5 "G28\nM503"
1255 1262
 #endif
1256 1263
 
1264
+/**
1265
+ * Specify an action command to send to the host when the printer is killed.
1266
+ * Will be sent in the form '//action:ACTION_ON_KILL', e.g. '//action:poweroff'.
1267
+ * The host must be configured to handle the action command.
1268
+ */
1269
+//#define ACTION_ON_KILL "poweroff"
1270
+
1271
+//===========================================================================
1272
+//====================== I2C Position Encoder Settings ======================
1273
+//===========================================================================
1274
+/**
1275
+ *  I2C position encoders for closed loop control.
1276
+ *  Developed by Chris Barr at Aus3D.
1277
+ *
1278
+ *  Wiki: http://wiki.aus3d.com.au/Magnetic_Encoder
1279
+ *  Github: https://github.com/Aus3D/MagneticEncoder
1280
+ *
1281
+ *  Supplier: http://aus3d.com.au/magnetic-encoder-module
1282
+ *  Alternative Supplier: http://reliabuild3d.com/
1283
+ *
1284
+ *  Reilabuild encoders have been modified to improve reliability.
1285
+ */
1286
+
1287
+//#define I2C_POSITION_ENCODERS
1288
+#if ENABLED(I2C_POSITION_ENCODERS)
1289
+
1290
+  #define I2CPE_ENCODER_CNT         1                       // The number of encoders installed; max of 5
1291
+                                                            // encoders supported currently.
1292
+
1293
+  #define I2CPE_ENC_1_ADDR          I2CPE_PRESET_ADDR_X     // I2C address of the encoder. 30-200.
1294
+  #define I2CPE_ENC_1_AXIS          X_AXIS                  // Axis the encoder module is installed on.  <X|Y|Z|E>_AXIS.
1295
+  #define I2CPE_ENC_1_TYPE          I2CPE_ENC_TYPE_LINEAR   // Type of encoder:  I2CPE_ENC_TYPE_LINEAR -or-
1296
+                                                            // I2CPE_ENC_TYPE_ROTARY.
1297
+  #define I2CPE_ENC_1_TICKS_UNIT    2048                    // 1024 for magnetic strips with 2mm poles; 2048 for
1298
+                                                            // 1mm poles. For linear encoders this is ticks / mm,
1299
+                                                            // for rotary encoders this is ticks / revolution.
1300
+  //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1301
+                                                            // steps per full revolution (motor steps/rev * microstepping)
1302
+  //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1303
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1304
+  #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1305
+                                                            // printer will attempt to correct the error; errors
1306
+                                                            // smaller than this are ignored to minimize effects of
1307
+                                                            // measurement noise / latency (filter).
1308
+
1309
+  #define I2CPE_ENC_2_ADDR          I2CPE_PRESET_ADDR_Y     // Same as above, but for encoder 2.
1310
+  #define I2CPE_ENC_2_AXIS          Y_AXIS
1311
+  #define I2CPE_ENC_2_TYPE          I2CPE_ENC_TYPE_LINEAR
1312
+  #define I2CPE_ENC_2_TICKS_UNIT    2048
1313
+  //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1314
+  //#define I2CPE_ENC_2_INVERT
1315
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1316
+  #define I2CPE_ENC_2_EC_THRESH     0.10
1317
+
1318
+  #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
1319
+  #define I2CPE_ENC_3_AXIS          Z_AXIS                  // as above, or use defaults below.
1320
+
1321
+  #define I2CPE_ENC_4_ADDR          I2CPE_PRESET_ADDR_E     // Encoder 4.
1322
+  #define I2CPE_ENC_4_AXIS          E_AXIS
1323
+
1324
+  #define I2CPE_ENC_5_ADDR          34                      // Encoder 5.
1325
+  #define I2CPE_ENC_5_AXIS          E_AXIS
1326
+
1327
+  // Default settings for encoders which are enabled, but without settings configured above.
1328
+  #define I2CPE_DEF_TYPE            I2CPE_ENC_TYPE_LINEAR
1329
+  #define I2CPE_DEF_ENC_TICKS_UNIT  2048
1330
+  #define I2CPE_DEF_TICKS_REV       (16 * 200)
1331
+  #define I2CPE_DEF_EC_METHOD       I2CPE_ECM_NONE
1332
+  #define I2CPE_DEF_EC_THRESH       0.1
1333
+
1334
+  //#define I2CPE_ERR_THRESH_ABORT  100.0                   // Threshold size for error (in mm) error on any given
1335
+                                                            // axis after which the printer will abort. Comment out to
1336
+                                                            // disable abort behaviour.
1337
+
1338
+  #define I2CPE_TIME_TRUSTED        10000                   // After an encoder fault, there must be no further fault
1339
+                                                            // for this amount of time (in ms) before the encoder
1340
+                                                            // is trusted again.
1341
+
1342
+  /**
1343
+   * Position is checked every time a new command is executed from the buffer but during long moves,
1344
+   * this setting determines the minimum update time between checks. A value of 100 works well with
1345
+   * error rolling average when attempting to correct only for skips and not for vibration.
1346
+   */
1347
+  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1348
+
1349
+  // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1350
+  #define I2CPE_ERR_ROLLING_AVERAGE
1351
+
1352
+#endif // I2C_POSITION_ENCODERS
1353
+
1257 1354
 #endif // CONFIGURATION_ADV_H

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

@@ -56,19 +56,16 @@
56 56
  */
57 57
 
58 58
 //===========================================================================
59
-//============================= DELTA Printer ===============================
60
-//===========================================================================
61
-// For Delta printers start with one of the configuration files in the
62
-// example_configurations/delta directory and customize for your machine.
63
-//
64
-
65
-//===========================================================================
66 59
 //============================= SCARA Printer ===============================
67 60
 //===========================================================================
68
-// MORGAN_SCARA for Marlin was developed by QHARLEY in ZA in 2012/2013. Implemented
69
-// and slightly reworked by JCERNY in 06/2014 with the goal to bring it into Master-Branch
70
-// QHARLEYS Autobedlevelling has not been ported, because Marlin has now Bed-levelling
71
-// You might need Z-Min endstop on SCARA-Printer to use this feature. Actually untested!
61
+
62
+/**
63
+ * MORGAN_SCARA was developed by QHARLEY in South Africa in 2012-2013.
64
+ * Implemented and slightly reworked by JCERNY in June, 2014.
65
+ *
66
+ * MAKERARM_SCARA is in development, included as an alternate example.
67
+ * Other SCARA models may be added, or SCARA may be unified in the future.
68
+ */
72 69
 
73 70
 // Specify the specific SCARA model
74 71
 #define MORGAN_SCARA
@@ -171,6 +168,25 @@
171 168
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
172 169
 //#define SINGLENOZZLE
173 170
 
171
+/**
172
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
173
+ *
174
+ * This device allows one stepper driver on a control board to drive
175
+ * two to eight stepper motors, one at a time, in a manner suitable
176
+ * for extruders.
177
+ *
178
+ * This option only allows the multiplexer to switch on tool-change.
179
+ * Additional options to configure custom E moves are pending.
180
+ */
181
+//#define MK2_MULTIPLEXER
182
+#if ENABLED(MK2_MULTIPLEXER)
183
+  // Override the default DIO selector pins here, if needed.
184
+  // Some pins files may provide defaults for these pins.
185
+  //#define E_MUX0_PIN 40  // Always Required
186
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
187
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
188
+#endif
189
+
174 190
 // A dual extruder that uses a single stepper motor
175 191
 //#define SWITCHING_EXTRUDER
176 192
 #if ENABLED(SWITCHING_EXTRUDER)
@@ -580,7 +596,6 @@
580 596
  *
581 597
  */
582 598
 //#define Z_MIN_PROBE_ENDSTOP
583
-//#define Z_MIN_PROBE_PIN Z_MAX_PIN
584 599
 
585 600
 /**
586 601
  * Probe Type
@@ -895,12 +910,14 @@
895 910
   #define UBL_MESH_INSET 1          // Mesh inset margin on print area
896 911
   #define GRID_MAX_POINTS_X 10      // Don't use more than 15 points per axis, implementation limited.
897 912
   #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
898
-  #define UBL_PROBE_PT_1_X 39       // These set the probe locations for when UBL does a 3-Point leveling
899
-  #define UBL_PROBE_PT_1_Y 180      // of the mesh.
913
+
914
+  #define UBL_PROBE_PT_1_X 39       // Probing points for 3-Point leveling of the mesh
915
+  #define UBL_PROBE_PT_1_Y 180
900 916
   #define UBL_PROBE_PT_2_X 39
901 917
   #define UBL_PROBE_PT_2_Y 20
902 918
   #define UBL_PROBE_PT_3_X 180
903 919
   #define UBL_PROBE_PT_3_Y 20
920
+
904 921
   #define UBL_G26_MESH_VALIDATION   // Enable G26 mesh validation
905 922
   #define UBL_MESH_EDIT_MOVES_Z     // Sophisticated users prefer no movement of nozzle
906 923
 
@@ -955,6 +972,7 @@
955 972
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
956 973
 // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
957 974
 // - Prevent Z homing when the Z probe is outside bed area.
975
+//
958 976
 //#define Z_SAFE_HOMING
959 977
 
960 978
 #if ENABLED(Z_SAFE_HOMING)
@@ -979,13 +997,10 @@
979 997
 // M500 - stores parameters in EEPROM
980 998
 // M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).
981 999
 // M502 - reverts to the default "factory settings".  You still need to store them in EEPROM afterwards if you want to.
982
-//define this to enable EEPROM support
983
-//#define EEPROM_SETTINGS
984
-
985
-#if ENABLED(EEPROM_SETTINGS)
986
-  // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out:
987
-  #define EEPROM_CHITCHAT // Please keep turned on if you can.
988
-#endif
1000
+//
1001
+//#define EEPROM_SETTINGS // Enable for M500 and M501 commands
1002
+//#define DISABLE_M503    // Saves ~2700 bytes of PROGMEM. Disable for release!
1003
+#define EEPROM_CHITCHAT   // Give feedback on EEPROM commands. Disable to save PROGMEM.
989 1004
 
990 1005
 //
991 1006
 // Host Keepalive
@@ -1144,10 +1159,11 @@
1144 1159
  *
1145 1160
  * Select the language to display on the LCD. These languages are available:
1146 1161
  *
1147
- *    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
1148
- *    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk, test
1162
+ *    en, an, bg, ca, cn, cz, cz_utf8, de, el, el-gr, es, eu, fi, fr, gl, hr,
1163
+ *    it, kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk,
1164
+ *    zh_CN, zh_TW, test
1149 1165
  *
1150
- * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'test':'TEST' }
1166
+ * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'cz_utf8':'Czech (UTF8)', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'zh_CN':'Chinese (Simplified)', 'zh_TW':'Chinese (Taiwan)', test':'TEST' }
1151 1167
  */
1152 1168
 //#define LCD_LANGUAGE en
1153 1169
 
@@ -1296,12 +1312,6 @@
1296 1312
 //#define ULTIPANEL
1297 1313
 
1298 1314
 //
1299
-// Cartesio UI
1300
-// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1301
-//
1302
-//#define CARTESIO_UI
1303
-
1304
-//
1305 1315
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
1306 1316
 // http://reprap.org/wiki/PanelOne
1307 1317
 //
@@ -1384,6 +1394,27 @@
1384 1394
 //#define BQ_LCD_SMART_CONTROLLER
1385 1395
 
1386 1396
 //
1397
+// Cartesio UI
1398
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1399
+//
1400
+//#define CARTESIO_UI
1401
+
1402
+//
1403
+// ANET_10 Controller supported displays.
1404
+//
1405
+//#define ANET_KEYPAD_LCD         // Requires ADC_KEYPAD_PIN to be assigned to an analog pin.
1406
+                                  // This LCD is known to be susceptible to electrical interference
1407
+                                  // which scrambles the display.  Pressing any button clears it up.
1408
+//#define ANET_FULL_GRAPHICS_LCD  // Anet 128x64 full graphics lcd with rotary encoder as used on Anet A6
1409
+                                  // A clone of the RepRapDiscount full graphics display but with
1410
+                                  // different pins/wiring (see pins_ANET_10.h).
1411
+
1412
+//
1413
+// LCD for Melzi Card with Graphical LCD
1414
+//
1415
+//#define LCD_FOR_MELZI
1416
+
1417
+//
1387 1418
 // CONTROLLER TYPE: I2C
1388 1419
 //
1389 1420
 // Note: These controllers require the installation of Arduino's LiquidCrystal_I2C
@@ -1399,6 +1430,9 @@
1399 1430
 //
1400 1431
 // Sainsmart YW Robot (LCM1602) LCD Display
1401 1432
 //
1433
+// Note: This controller requires F.Malpartida's LiquidCrystal_I2C library
1434
+// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
1435
+//
1402 1436
 //#define LCD_I2C_SAINSMART_YWROBOT
1403 1437
 
1404 1438
 //
@@ -1430,6 +1464,11 @@
1430 1464
 //#define U8GLIB_SSD1306
1431 1465
 
1432 1466
 //
1467
+// TinyBoy2 128x64 OLED / Encoder Panel
1468
+//
1469
+//#define OLED_PANEL_TINYBOY2
1470
+
1471
+//
1433 1472
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1434 1473
 //
1435 1474
 //#define SAV_3DGLCD
@@ -1446,11 +1485,6 @@
1446 1485
 //
1447 1486
 //#define SAV_3DLCD
1448 1487
 
1449
-//
1450
-// TinyBoy2 128x64 OLED / Encoder Panel
1451
-//
1452
-//#define OLED_PANEL_TINYBOY2
1453
-
1454 1488
 //=============================================================================
1455 1489
 //=============================== Extra Features ==============================
1456 1490
 //=============================================================================
@@ -1489,12 +1523,15 @@
1489 1523
 // SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure
1490 1524
 //#define SF_ARC_FIX
1491 1525
 
1492
-// Support for the BariCUDA Paste Extruder.
1526
+// Support for the BariCUDA Paste Extruder
1493 1527
 //#define BARICUDA
1494 1528
 
1495
-//define BlinkM/CyzRgb Support
1529
+// Support for BlinkM/CyzRgb
1496 1530
 //#define BLINKM
1497 1531
 
1532
+// Support for PCA9632 PWM LED driver
1533
+//#define PCA9632
1534
+
1498 1535
 /**
1499 1536
  * RGB LED / LED Strip Control
1500 1537
  *
@@ -1532,7 +1569,7 @@
1532 1569
  *  - Change to green once print has finished
1533 1570
  *  - Turn off after the print has finished and the user has pushed a button
1534 1571
  */
1535
-#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED)
1572
+#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED) || ENABLED(PCA9632)
1536 1573
   #define PRINTER_EVENT_LEDS
1537 1574
 #endif
1538 1575
 

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

@@ -123,8 +123,8 @@
123 123
   #define AUTOTEMP_OLDWEIGHT 0.98
124 124
 #endif
125 125
 
126
-//Show Temperature ADC value
127
-//The M105 command return, besides traditional information, the ADC value read from temperature sensors.
126
+// Show Temperature ADC value
127
+// Enable for M105 to include ADC values read from temperature sensors.
128 128
 //#define SHOW_TEMP_ADC_VALUES
129 129
 
130 130
 /**
@@ -419,16 +419,16 @@
419 419
  *    M908 - BQ_ZUM_MEGA_3D, RAMBO, PRINTRBOARD_REVF, RIGIDBOARD_V2 & SCOOVO_X9H
420 420
  *    M909, M910 & LCD - only PRINTRBOARD_REVF & RIGIDBOARD_V2
421 421
  */
422
-//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps
423
-//#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
424
-//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 } // Default drive percent - X, Y, Z, E axis
422
+//#define PWM_MOTOR_CURRENT { 1300, 1300, 1250 }          // Values in milliamps
423
+//#define DIGIPOT_MOTOR_CURRENT { 135,135,135,135,135 }   // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
424
+//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 }    // Default drive percent - X, Y, Z, E axis
425 425
 
426 426
 // Uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro
427 427
 //#define DIGIPOT_I2C
428
-//#define DIGIPOT_MCP4018
428
+//#define DIGIPOT_MCP4018          // Requires library from https://github.com/stawel/SlowSoftI2CMaster
429 429
 #define DIGIPOT_I2C_NUM_CHANNELS 8 // 5DPRINT: 4     AZTEEG_X3_PRO: 8
430 430
 // Actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS
431
-#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0}  //  AZTEEG_X3_PRO
431
+#define DIGIPOT_I2C_MOTOR_CURRENTS { 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 }  //  AZTEEG_X3_PRO
432 432
 
433 433
 //===========================================================================
434 434
 //=============================Additional Features===========================
@@ -645,7 +645,7 @@
645 645
    *
646 646
    * Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
647 647
    *
648
-   * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
648
+   * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
649 649
    * Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
650 650
    */
651 651
   #define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
@@ -671,10 +671,16 @@
671 671
 
672 672
 // @section extras
673 673
 
674
-// Arc interpretation settings:
675
-#define ARC_SUPPORT  // Disabling this saves ~2738 bytes
676
-#define MM_PER_ARC_SEGMENT 1
677
-#define N_ARC_CORRECTION 25
674
+//
675
+// G2/G3 Arc Support
676
+//
677
+#define ARC_SUPPORT               // Disable this feature to save ~3226 bytes
678
+#if ENABLED(ARC_SUPPORT)
679
+  #define MM_PER_ARC_SEGMENT  1   // Length of each arc segment
680
+  #define N_ARC_CORRECTION   25   // Number of intertpolated segments between corrections
681
+  //#define ARC_P_CIRCLES         // Enable the 'P' parameter to specify complete circles
682
+  //#define CNC_WORKSPACE_PLANES  // Allow G2/G3 to operate in XY, ZX, or YZ planes
683
+#endif
678 684
 
679 685
 // Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
680 686
 //#define BEZIER_CURVE_SUPPORT
@@ -800,6 +806,7 @@
800 806
   #define PAUSE_PARK_NO_STEPPER_TIMEOUT       // Enable to have stepper motors hold position during filament change
801 807
                                               // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
802 808
   //#define PARK_HEAD_ON_PAUSE                // Go to filament change position on pause, return to print position on resume
809
+  //#define HOME_BEFORE_FILAMENT_CHANGE       // Ensure homing has been completed prior to parking for filament change
803 810
 #endif
804 811
 
805 812
 // @section tmc
@@ -1192,12 +1199,12 @@
1192 1199
 /**
1193 1200
  * Auto-report temperatures with M155 S<seconds>
1194 1201
  */
1195
-//#define AUTO_REPORT_TEMPERATURES
1202
+#define AUTO_REPORT_TEMPERATURES
1196 1203
 
1197 1204
 /**
1198 1205
  * Include capabilities in M115 output
1199 1206
  */
1200
-//#define EXTENDED_CAPABILITIES_REPORT
1207
+#define EXTENDED_CAPABILITIES_REPORT
1201 1208
 
1202 1209
 /**
1203 1210
  * Volumetric extrusion default state
@@ -1254,4 +1261,94 @@
1254 1261
   //#define USER_GCODE_5 "G28\nM503"
1255 1262
 #endif
1256 1263
 
1264
+/**
1265
+ * Specify an action command to send to the host when the printer is killed.
1266
+ * Will be sent in the form '//action:ACTION_ON_KILL', e.g. '//action:poweroff'.
1267
+ * The host must be configured to handle the action command.
1268
+ */
1269
+//#define ACTION_ON_KILL "poweroff"
1270
+
1271
+//===========================================================================
1272
+//====================== I2C Position Encoder Settings ======================
1273
+//===========================================================================
1274
+/**
1275
+ *  I2C position encoders for closed loop control.
1276
+ *  Developed by Chris Barr at Aus3D.
1277
+ *
1278
+ *  Wiki: http://wiki.aus3d.com.au/Magnetic_Encoder
1279
+ *  Github: https://github.com/Aus3D/MagneticEncoder
1280
+ *
1281
+ *  Supplier: http://aus3d.com.au/magnetic-encoder-module
1282
+ *  Alternative Supplier: http://reliabuild3d.com/
1283
+ *
1284
+ *  Reilabuild encoders have been modified to improve reliability.
1285
+ */
1286
+
1287
+//#define I2C_POSITION_ENCODERS
1288
+#if ENABLED(I2C_POSITION_ENCODERS)
1289
+
1290
+  #define I2CPE_ENCODER_CNT         1                       // The number of encoders installed; max of 5
1291
+                                                            // encoders supported currently.
1292
+
1293
+  #define I2CPE_ENC_1_ADDR          I2CPE_PRESET_ADDR_X     // I2C address of the encoder. 30-200.
1294
+  #define I2CPE_ENC_1_AXIS          X_AXIS                  // Axis the encoder module is installed on.  <X|Y|Z|E>_AXIS.
1295
+  #define I2CPE_ENC_1_TYPE          I2CPE_ENC_TYPE_LINEAR   // Type of encoder:  I2CPE_ENC_TYPE_LINEAR -or-
1296
+                                                            // I2CPE_ENC_TYPE_ROTARY.
1297
+  #define I2CPE_ENC_1_TICKS_UNIT    2048                    // 1024 for magnetic strips with 2mm poles; 2048 for
1298
+                                                            // 1mm poles. For linear encoders this is ticks / mm,
1299
+                                                            // for rotary encoders this is ticks / revolution.
1300
+  //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1301
+                                                            // steps per full revolution (motor steps/rev * microstepping)
1302
+  //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1303
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1304
+  #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1305
+                                                            // printer will attempt to correct the error; errors
1306
+                                                            // smaller than this are ignored to minimize effects of
1307
+                                                            // measurement noise / latency (filter).
1308
+
1309
+  #define I2CPE_ENC_2_ADDR          I2CPE_PRESET_ADDR_Y     // Same as above, but for encoder 2.
1310
+  #define I2CPE_ENC_2_AXIS          Y_AXIS
1311
+  #define I2CPE_ENC_2_TYPE          I2CPE_ENC_TYPE_LINEAR
1312
+  #define I2CPE_ENC_2_TICKS_UNIT    2048
1313
+  //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1314
+  //#define I2CPE_ENC_2_INVERT
1315
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1316
+  #define I2CPE_ENC_2_EC_THRESH     0.10
1317
+
1318
+  #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
1319
+  #define I2CPE_ENC_3_AXIS          Z_AXIS                  // as above, or use defaults below.
1320
+
1321
+  #define I2CPE_ENC_4_ADDR          I2CPE_PRESET_ADDR_E     // Encoder 4.
1322
+  #define I2CPE_ENC_4_AXIS          E_AXIS
1323
+
1324
+  #define I2CPE_ENC_5_ADDR          34                      // Encoder 5.
1325
+  #define I2CPE_ENC_5_AXIS          E_AXIS
1326
+
1327
+  // Default settings for encoders which are enabled, but without settings configured above.
1328
+  #define I2CPE_DEF_TYPE            I2CPE_ENC_TYPE_LINEAR
1329
+  #define I2CPE_DEF_ENC_TICKS_UNIT  2048
1330
+  #define I2CPE_DEF_TICKS_REV       (16 * 200)
1331
+  #define I2CPE_DEF_EC_METHOD       I2CPE_ECM_NONE
1332
+  #define I2CPE_DEF_EC_THRESH       0.1
1333
+
1334
+  //#define I2CPE_ERR_THRESH_ABORT  100.0                   // Threshold size for error (in mm) error on any given
1335
+                                                            // axis after which the printer will abort. Comment out to
1336
+                                                            // disable abort behaviour.
1337
+
1338
+  #define I2CPE_TIME_TRUSTED        10000                   // After an encoder fault, there must be no further fault
1339
+                                                            // for this amount of time (in ms) before the encoder
1340
+                                                            // is trusted again.
1341
+
1342
+  /**
1343
+   * Position is checked every time a new command is executed from the buffer but during long moves,
1344
+   * this setting determines the minimum update time between checks. A value of 100 works well with
1345
+   * error rolling average when attempting to correct only for skips and not for vibration.
1346
+   */
1347
+  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1348
+
1349
+  // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1350
+  #define I2CPE_ERR_ROLLING_AVERAGE
1351
+
1352
+#endif // I2C_POSITION_ENCODERS
1353
+
1257 1354
 #endif // CONFIGURATION_ADV_H

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

@@ -58,15 +58,15 @@
58 58
 //===========================================================================
59 59
 //============================= DELTA Printer ===============================
60 60
 //===========================================================================
61
-// For Delta printers start with one of the configuration files in the
61
+// For a Delta printer start with one of the configuration files in the
62 62
 // example_configurations/delta directory and customize for your machine.
63 63
 //
64 64
 
65 65
 //===========================================================================
66 66
 //============================= SCARA Printer ===============================
67 67
 //===========================================================================
68
-// For a Scara printer replace the configuration files with the files in the
69
-// example_configurations/SCARA directory.
68
+// For a SCARA printer start with the configuration files in
69
+// example_configurations/SCARA and customize for your machine.
70 70
 //
71 71
 
72 72
 // @section info
@@ -138,6 +138,25 @@
138 138
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
139 139
 //#define SINGLENOZZLE
140 140
 
141
+/**
142
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
143
+ *
144
+ * This device allows one stepper driver on a control board to drive
145
+ * two to eight stepper motors, one at a time, in a manner suitable
146
+ * for extruders.
147
+ *
148
+ * This option only allows the multiplexer to switch on tool-change.
149
+ * Additional options to configure custom E moves are pending.
150
+ */
151
+//#define MK2_MULTIPLEXER
152
+#if ENABLED(MK2_MULTIPLEXER)
153
+  // Override the default DIO selector pins here, if needed.
154
+  // Some pins files may provide defaults for these pins.
155
+  //#define E_MUX0_PIN 40  // Always Required
156
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
157
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
158
+#endif
159
+
141 160
 // A dual extruder that uses a single stepper motor
142 161
 //#define SWITCHING_EXTRUDER
143 162
 #if ENABLED(SWITCHING_EXTRUDER)
@@ -584,7 +603,6 @@
584 603
  *
585 604
  */
586 605
 //#define Z_MIN_PROBE_ENDSTOP
587
-//#define Z_MIN_PROBE_PIN Z_MAX_PIN
588 606
 
589 607
 /**
590 608
  * Probe Type
@@ -899,12 +917,14 @@
899 917
   #define UBL_MESH_INSET 1          // Mesh inset margin on print area
900 918
   #define GRID_MAX_POINTS_X 10      // Don't use more than 15 points per axis, implementation limited.
901 919
   #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
902
-  #define UBL_PROBE_PT_1_X 39       // These set the probe locations for when UBL does a 3-Point leveling
903
-  #define UBL_PROBE_PT_1_Y 180      // of the mesh.
920
+
921
+  #define UBL_PROBE_PT_1_X 39       // Probing points for 3-Point leveling of the mesh
922
+  #define UBL_PROBE_PT_1_Y 180
904 923
   #define UBL_PROBE_PT_2_X 39
905 924
   #define UBL_PROBE_PT_2_Y 20
906 925
   #define UBL_PROBE_PT_3_X 180
907 926
   #define UBL_PROBE_PT_3_Y 20
927
+
908 928
   #define UBL_G26_MESH_VALIDATION   // Enable G26 mesh validation
909 929
   #define UBL_MESH_EDIT_MOVES_Z     // Sophisticated users prefer no movement of nozzle
910 930
 
@@ -959,6 +979,7 @@
959 979
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
960 980
 // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
961 981
 // - Prevent Z homing when the Z probe is outside bed area.
982
+//
962 983
 //#define Z_SAFE_HOMING
963 984
 
964 985
 #if ENABLED(Z_SAFE_HOMING)
@@ -983,13 +1004,10 @@
983 1004
 // M500 - stores parameters in EEPROM
984 1005
 // M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).
985 1006
 // M502 - reverts to the default "factory settings".  You still need to store them in EEPROM afterwards if you want to.
986
-//define this to enable EEPROM support
987
-#define EEPROM_SETTINGS
988
-
989
-#if ENABLED(EEPROM_SETTINGS)
990
-  // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out:
991
-  #define EEPROM_CHITCHAT // Please keep turned on if you can.
992
-#endif
1007
+//
1008
+#define EEPROM_SETTINGS   // Enable for M500 and M501 commands
1009
+//#define DISABLE_M503    // Saves ~2700 bytes of PROGMEM. Disable for release!
1010
+#define EEPROM_CHITCHAT   // Give feedback on EEPROM commands. Disable to save PROGMEM.
993 1011
 
994 1012
 //
995 1013
 // Host Keepalive
@@ -1148,10 +1166,11 @@
1148 1166
  *
1149 1167
  * Select the language to display on the LCD. These languages are available:
1150 1168
  *
1151
- *    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
1152
- *    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk, test
1169
+ *    en, an, bg, ca, cn, cz, cz_utf8, de, el, el-gr, es, eu, fi, fr, gl, hr,
1170
+ *    it, kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk,
1171
+ *    zh_CN, zh_TW, test
1153 1172
  *
1154
- * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'test':'TEST' }
1173
+ * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'cz_utf8':'Czech (UTF8)', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'zh_CN':'Chinese (Simplified)', 'zh_TW':'Chinese (Taiwan)', test':'TEST' }
1155 1174
  */
1156 1175
 #define LCD_LANGUAGE en
1157 1176
 
@@ -1300,12 +1319,6 @@
1300 1319
 //#define ULTIPANEL
1301 1320
 
1302 1321
 //
1303
-// Cartesio UI
1304
-// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1305
-//
1306
-//#define CARTESIO_UI
1307
-
1308
-//
1309 1322
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
1310 1323
 // http://reprap.org/wiki/PanelOne
1311 1324
 //
@@ -1388,6 +1401,27 @@
1388 1401
 //#define BQ_LCD_SMART_CONTROLLER
1389 1402
 
1390 1403
 //
1404
+// Cartesio UI
1405
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1406
+//
1407
+//#define CARTESIO_UI
1408
+
1409
+//
1410
+// ANET_10 Controller supported displays.
1411
+//
1412
+//#define ANET_KEYPAD_LCD         // Requires ADC_KEYPAD_PIN to be assigned to an analog pin.
1413
+                                  // This LCD is known to be susceptible to electrical interference
1414
+                                  // which scrambles the display.  Pressing any button clears it up.
1415
+//#define ANET_FULL_GRAPHICS_LCD  // Anet 128x64 full graphics lcd with rotary encoder as used on Anet A6
1416
+                                  // A clone of the RepRapDiscount full graphics display but with
1417
+                                  // different pins/wiring (see pins_ANET_10.h).
1418
+
1419
+//
1420
+// LCD for Melzi Card with Graphical LCD
1421
+//
1422
+//#define LCD_FOR_MELZI
1423
+
1424
+//
1391 1425
 // CONTROLLER TYPE: I2C
1392 1426
 //
1393 1427
 // Note: These controllers require the installation of Arduino's LiquidCrystal_I2C
@@ -1403,6 +1437,9 @@
1403 1437
 //
1404 1438
 // Sainsmart YW Robot (LCM1602) LCD Display
1405 1439
 //
1440
+// Note: This controller requires F.Malpartida's LiquidCrystal_I2C library
1441
+// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
1442
+//
1406 1443
 //#define LCD_I2C_SAINSMART_YWROBOT
1407 1444
 
1408 1445
 //
@@ -1434,6 +1471,11 @@
1434 1471
 //#define U8GLIB_SSD1306
1435 1472
 
1436 1473
 //
1474
+// TinyBoy2 128x64 OLED / Encoder Panel
1475
+//
1476
+//#define OLED_PANEL_TINYBOY2
1477
+
1478
+//
1437 1479
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1438 1480
 //
1439 1481
 //#define SAV_3DGLCD
@@ -1450,11 +1492,6 @@
1450 1492
 //
1451 1493
 //#define SAV_3DLCD
1452 1494
 
1453
-//
1454
-// TinyBoy2 128x64 OLED / Encoder Panel
1455
-//
1456
-//#define OLED_PANEL_TINYBOY2
1457
-
1458 1495
 //=============================================================================
1459 1496
 //=============================== Extra Features ==============================
1460 1497
 //=============================================================================
@@ -1493,12 +1530,15 @@
1493 1530
 // SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure
1494 1531
 //#define SF_ARC_FIX
1495 1532
 
1496
-// Support for the BariCUDA Paste Extruder.
1533
+// Support for the BariCUDA Paste Extruder
1497 1534
 //#define BARICUDA
1498 1535
 
1499
-//define BlinkM/CyzRgb Support
1536
+// Support for BlinkM/CyzRgb
1500 1537
 //#define BLINKM
1501 1538
 
1539
+// Support for PCA9632 PWM LED driver
1540
+//#define PCA9632
1541
+
1502 1542
 /**
1503 1543
  * RGB LED / LED Strip Control
1504 1544
  *
@@ -1536,7 +1576,7 @@
1536 1576
  *  - Change to green once print has finished
1537 1577
  *  - Turn off after the print has finished and the user has pushed a button
1538 1578
  */
1539
-#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED)
1579
+#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED) || ENABLED(PCA9632)
1540 1580
   #define PRINTER_EVENT_LEDS
1541 1581
 #endif
1542 1582
 

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

@@ -123,8 +123,8 @@
123 123
   #define AUTOTEMP_OLDWEIGHT 0.98
124 124
 #endif
125 125
 
126
-//Show Temperature ADC value
127
-//The M105 command return, besides traditional information, the ADC value read from temperature sensors.
126
+// Show Temperature ADC value
127
+// Enable for M105 to include ADC values read from temperature sensors.
128 128
 //#define SHOW_TEMP_ADC_VALUES
129 129
 
130 130
 /**
@@ -419,16 +419,16 @@
419 419
  *    M908 - BQ_ZUM_MEGA_3D, RAMBO, PRINTRBOARD_REVF, RIGIDBOARD_V2 & SCOOVO_X9H
420 420
  *    M909, M910 & LCD - only PRINTRBOARD_REVF & RIGIDBOARD_V2
421 421
  */
422
-//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps
423
-//#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
424
-//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 } // Default drive percent - X, Y, Z, E axis
422
+//#define PWM_MOTOR_CURRENT { 1300, 1300, 1250 }          // Values in milliamps
423
+//#define DIGIPOT_MOTOR_CURRENT { 135,135,135,135,135 }   // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
424
+//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 }    // Default drive percent - X, Y, Z, E axis
425 425
 
426 426
 // Uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro
427 427
 //#define DIGIPOT_I2C
428
-//#define DIGIPOT_MCP4018
428
+//#define DIGIPOT_MCP4018          // Requires library from https://github.com/stawel/SlowSoftI2CMaster
429 429
 #define DIGIPOT_I2C_NUM_CHANNELS 8 // 5DPRINT: 4     AZTEEG_X3_PRO: 8
430 430
 // Actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS
431
-#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0}  //  AZTEEG_X3_PRO
431
+#define DIGIPOT_I2C_MOTOR_CURRENTS { 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 }  //  AZTEEG_X3_PRO
432 432
 
433 433
 //===========================================================================
434 434
 //=============================Additional Features===========================
@@ -645,7 +645,7 @@
645 645
    *
646 646
    * Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
647 647
    *
648
-   * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
648
+   * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
649 649
    * Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
650 650
    */
651 651
   #define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
@@ -671,10 +671,16 @@
671 671
 
672 672
 // @section extras
673 673
 
674
-// Arc interpretation settings:
675
-#define ARC_SUPPORT  // Disabling this saves ~2738 bytes
676
-#define MM_PER_ARC_SEGMENT 1
677
-#define N_ARC_CORRECTION 25
674
+//
675
+// G2/G3 Arc Support
676
+//
677
+#define ARC_SUPPORT               // Disable this feature to save ~3226 bytes
678
+#if ENABLED(ARC_SUPPORT)
679
+  #define MM_PER_ARC_SEGMENT  1   // Length of each arc segment
680
+  #define N_ARC_CORRECTION   25   // Number of intertpolated segments between corrections
681
+  //#define ARC_P_CIRCLES         // Enable the 'P' parameter to specify complete circles
682
+  //#define CNC_WORKSPACE_PLANES  // Allow G2/G3 to operate in XY, ZX, or YZ planes
683
+#endif
678 684
 
679 685
 // Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
680 686
 //#define BEZIER_CURVE_SUPPORT
@@ -800,6 +806,7 @@
800 806
   #define PAUSE_PARK_NO_STEPPER_TIMEOUT       // Enable to have stepper motors hold position during filament change
801 807
                                               // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
802 808
   //#define PARK_HEAD_ON_PAUSE                // Go to filament change position on pause, return to print position on resume
809
+  //#define HOME_BEFORE_FILAMENT_CHANGE       // Ensure homing has been completed prior to parking for filament change
803 810
 #endif
804 811
 
805 812
 // @section tmc
@@ -1192,12 +1199,12 @@
1192 1199
 /**
1193 1200
  * Auto-report temperatures with M155 S<seconds>
1194 1201
  */
1195
-//#define AUTO_REPORT_TEMPERATURES
1202
+#define AUTO_REPORT_TEMPERATURES
1196 1203
 
1197 1204
 /**
1198 1205
  * Include capabilities in M115 output
1199 1206
  */
1200
-//#define EXTENDED_CAPABILITIES_REPORT
1207
+#define EXTENDED_CAPABILITIES_REPORT
1201 1208
 
1202 1209
 /**
1203 1210
  * Volumetric extrusion default state
@@ -1254,4 +1261,94 @@
1254 1261
   //#define USER_GCODE_5 "G28\nM503"
1255 1262
 #endif
1256 1263
 
1264
+/**
1265
+ * Specify an action command to send to the host when the printer is killed.
1266
+ * Will be sent in the form '//action:ACTION_ON_KILL', e.g. '//action:poweroff'.
1267
+ * The host must be configured to handle the action command.
1268
+ */
1269
+//#define ACTION_ON_KILL "poweroff"
1270
+
1271
+//===========================================================================
1272
+//====================== I2C Position Encoder Settings ======================
1273
+//===========================================================================
1274
+/**
1275
+ *  I2C position encoders for closed loop control.
1276
+ *  Developed by Chris Barr at Aus3D.
1277
+ *
1278
+ *  Wiki: http://wiki.aus3d.com.au/Magnetic_Encoder
1279
+ *  Github: https://github.com/Aus3D/MagneticEncoder
1280
+ *
1281
+ *  Supplier: http://aus3d.com.au/magnetic-encoder-module
1282
+ *  Alternative Supplier: http://reliabuild3d.com/
1283
+ *
1284
+ *  Reilabuild encoders have been modified to improve reliability.
1285
+ */
1286
+
1287
+//#define I2C_POSITION_ENCODERS
1288
+#if ENABLED(I2C_POSITION_ENCODERS)
1289
+
1290
+  #define I2CPE_ENCODER_CNT         1                       // The number of encoders installed; max of 5
1291
+                                                            // encoders supported currently.
1292
+
1293
+  #define I2CPE_ENC_1_ADDR          I2CPE_PRESET_ADDR_X     // I2C address of the encoder. 30-200.
1294
+  #define I2CPE_ENC_1_AXIS          X_AXIS                  // Axis the encoder module is installed on.  <X|Y|Z|E>_AXIS.
1295
+  #define I2CPE_ENC_1_TYPE          I2CPE_ENC_TYPE_LINEAR   // Type of encoder:  I2CPE_ENC_TYPE_LINEAR -or-
1296
+                                                            // I2CPE_ENC_TYPE_ROTARY.
1297
+  #define I2CPE_ENC_1_TICKS_UNIT    2048                    // 1024 for magnetic strips with 2mm poles; 2048 for
1298
+                                                            // 1mm poles. For linear encoders this is ticks / mm,
1299
+                                                            // for rotary encoders this is ticks / revolution.
1300
+  //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1301
+                                                            // steps per full revolution (motor steps/rev * microstepping)
1302
+  //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1303
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1304
+  #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1305
+                                                            // printer will attempt to correct the error; errors
1306
+                                                            // smaller than this are ignored to minimize effects of
1307
+                                                            // measurement noise / latency (filter).
1308
+
1309
+  #define I2CPE_ENC_2_ADDR          I2CPE_PRESET_ADDR_Y     // Same as above, but for encoder 2.
1310
+  #define I2CPE_ENC_2_AXIS          Y_AXIS
1311
+  #define I2CPE_ENC_2_TYPE          I2CPE_ENC_TYPE_LINEAR
1312
+  #define I2CPE_ENC_2_TICKS_UNIT    2048
1313
+  //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1314
+  //#define I2CPE_ENC_2_INVERT
1315
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1316
+  #define I2CPE_ENC_2_EC_THRESH     0.10
1317
+
1318
+  #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
1319
+  #define I2CPE_ENC_3_AXIS          Z_AXIS                  // as above, or use defaults below.
1320
+
1321
+  #define I2CPE_ENC_4_ADDR          I2CPE_PRESET_ADDR_E     // Encoder 4.
1322
+  #define I2CPE_ENC_4_AXIS          E_AXIS
1323
+
1324
+  #define I2CPE_ENC_5_ADDR          34                      // Encoder 5.
1325
+  #define I2CPE_ENC_5_AXIS          E_AXIS
1326
+
1327
+  // Default settings for encoders which are enabled, but without settings configured above.
1328
+  #define I2CPE_DEF_TYPE            I2CPE_ENC_TYPE_LINEAR
1329
+  #define I2CPE_DEF_ENC_TICKS_UNIT  2048
1330
+  #define I2CPE_DEF_TICKS_REV       (16 * 200)
1331
+  #define I2CPE_DEF_EC_METHOD       I2CPE_ECM_NONE
1332
+  #define I2CPE_DEF_EC_THRESH       0.1
1333
+
1334
+  //#define I2CPE_ERR_THRESH_ABORT  100.0                   // Threshold size for error (in mm) error on any given
1335
+                                                            // axis after which the printer will abort. Comment out to
1336
+                                                            // disable abort behaviour.
1337
+
1338
+  #define I2CPE_TIME_TRUSTED        10000                   // After an encoder fault, there must be no further fault
1339
+                                                            // for this amount of time (in ms) before the encoder
1340
+                                                            // is trusted again.
1341
+
1342
+  /**
1343
+   * Position is checked every time a new command is executed from the buffer but during long moves,
1344
+   * this setting determines the minimum update time between checks. A value of 100 works well with
1345
+   * error rolling average when attempting to correct only for skips and not for vibration.
1346
+   */
1347
+  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1348
+
1349
+  // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1350
+  #define I2CPE_ERR_ROLLING_AVERAGE
1351
+
1352
+#endif // I2C_POSITION_ENCODERS
1353
+
1257 1354
 #endif // CONFIGURATION_ADV_H

+ 70
- 25
Marlin/example_configurations/TinyBoy2/Configuration.h Просмотреть файл

@@ -74,15 +74,15 @@
74 74
 //===========================================================================
75 75
 //============================= DELTA Printer ===============================
76 76
 //===========================================================================
77
-// For Delta printers start with one of the configuration files in the
77
+// For a Delta printer start with one of the configuration files in the
78 78
 // example_configurations/delta directory and customize for your machine.
79 79
 //
80 80
 
81 81
 //===========================================================================
82 82
 //============================= SCARA Printer ===============================
83 83
 //===========================================================================
84
-// For a Scara printer replace the configuration files with the files in the
85
-// example_configurations/SCARA directory.
84
+// For a SCARA printer start with the configuration files in
85
+// example_configurations/SCARA and customize for your machine.
86 86
 //
87 87
 
88 88
 // @section info
@@ -160,6 +160,25 @@
160 160
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
161 161
 //#define SINGLENOZZLE
162 162
 
163
+/**
164
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
165
+ *
166
+ * This device allows one stepper driver on a control board to drive
167
+ * two to eight stepper motors, one at a time, in a manner suitable
168
+ * for extruders.
169
+ *
170
+ * This option only allows the multiplexer to switch on tool-change.
171
+ * Additional options to configure custom E moves are pending.
172
+ */
173
+//#define MK2_MULTIPLEXER
174
+#if ENABLED(MK2_MULTIPLEXER)
175
+  // Override the default DIO selector pins here, if needed.
176
+  // Some pins files may provide defaults for these pins.
177
+  //#define E_MUX0_PIN 40  // Always Required
178
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
179
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
180
+#endif
181
+
163 182
 // A dual extruder that uses a single stepper motor
164 183
 //#define SWITCHING_EXTRUDER
165 184
 #if ENABLED(SWITCHING_EXTRUDER)
@@ -616,7 +635,6 @@
616 635
  *
617 636
  */
618 637
 //#define Z_MIN_PROBE_ENDSTOP
619
-//#define Z_MIN_PROBE_PIN Z_MAX_PIN
620 638
 
621 639
 /**
622 640
  * Probe Type
@@ -936,12 +954,14 @@
936 954
   #define UBL_MESH_INSET 1          // Mesh inset margin on print area
937 955
   #define GRID_MAX_POINTS_X 10      // Don't use more than 15 points per axis, implementation limited.
938 956
   #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
939
-  #define UBL_PROBE_PT_1_X 39       // These set the probe locations for when UBL does a 3-Point leveling
940
-  #define UBL_PROBE_PT_1_Y 180      // of the mesh.
957
+
958
+  #define UBL_PROBE_PT_1_X 39       // Probing points for 3-Point leveling of the mesh
959
+  #define UBL_PROBE_PT_1_Y 180
941 960
   #define UBL_PROBE_PT_2_X 39
942 961
   #define UBL_PROBE_PT_2_Y 20
943 962
   #define UBL_PROBE_PT_3_X 180
944 963
   #define UBL_PROBE_PT_3_Y 20
964
+
945 965
   #define UBL_G26_MESH_VALIDATION   // Enable G26 mesh validation
946 966
   #define UBL_MESH_EDIT_MOVES_Z     // Sophisticated users prefer no movement of nozzle
947 967
 
@@ -996,6 +1016,7 @@
996 1016
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
997 1017
 // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
998 1018
 // - Prevent Z homing when the Z probe is outside bed area.
1019
+//
999 1020
 //#define Z_SAFE_HOMING
1000 1021
 
1001 1022
 #if ENABLED(Z_SAFE_HOMING)
@@ -1020,13 +1041,10 @@
1020 1041
 // M500 - stores parameters in EEPROM
1021 1042
 // M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).
1022 1043
 // M502 - reverts to the default "factory settings".  You still need to store them in EEPROM afterwards if you want to.
1023
-//define this to enable EEPROM support
1024
-#define EEPROM_SETTINGS
1025
-
1026
-#if ENABLED(EEPROM_SETTINGS)
1027
-  // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out:
1028
-  #define EEPROM_CHITCHAT // Please keep turned on if you can.
1029
-#endif
1044
+//
1045
+#define EEPROM_SETTINGS   // Enable for M500 and M501 commands
1046
+//#define DISABLE_M503    // Saves ~2700 bytes of PROGMEM. Disable for release!
1047
+#define EEPROM_CHITCHAT   // Give feedback on EEPROM commands. Disable to save PROGMEM.
1030 1048
 
1031 1049
 //
1032 1050
 // Host Keepalive
@@ -1185,10 +1203,11 @@
1185 1203
  *
1186 1204
  * Select the language to display on the LCD. These languages are available:
1187 1205
  *
1188
- *    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
1189
- *    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk, test
1206
+ *    en, an, bg, ca, cn, cz, cz_utf8, de, el, el-gr, es, eu, fi, fr, gl, hr,
1207
+ *    it, kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk,
1208
+ *    zh_CN, zh_TW, test
1190 1209
  *
1191
- * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'test':'TEST' }
1210
+ * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'cz_utf8':'Czech (UTF8)', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'zh_CN':'Chinese (Simplified)', 'zh_TW':'Chinese (Taiwan)', test':'TEST' }
1192 1211
  */
1193 1212
 #define LCD_LANGUAGE en
1194 1213
 
@@ -1337,12 +1356,6 @@
1337 1356
 //#define ULTIPANEL
1338 1357
 
1339 1358
 //
1340
-// Cartesio UI
1341
-// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1342
-//
1343
-//#define CARTESIO_UI
1344
-
1345
-//
1346 1359
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
1347 1360
 // http://reprap.org/wiki/PanelOne
1348 1361
 //
@@ -1425,6 +1438,27 @@
1425 1438
 //#define BQ_LCD_SMART_CONTROLLER
1426 1439
 
1427 1440
 //
1441
+// Cartesio UI
1442
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1443
+//
1444
+//#define CARTESIO_UI
1445
+
1446
+//
1447
+// ANET_10 Controller supported displays.
1448
+//
1449
+//#define ANET_KEYPAD_LCD         // Requires ADC_KEYPAD_PIN to be assigned to an analog pin.
1450
+                                  // This LCD is known to be susceptible to electrical interference
1451
+                                  // which scrambles the display.  Pressing any button clears it up.
1452
+//#define ANET_FULL_GRAPHICS_LCD  // Anet 128x64 full graphics lcd with rotary encoder as used on Anet A6
1453
+                                  // A clone of the RepRapDiscount full graphics display but with
1454
+                                  // different pins/wiring (see pins_ANET_10.h).
1455
+
1456
+//
1457
+// LCD for Melzi Card with Graphical LCD
1458
+//
1459
+//#define LCD_FOR_MELZI
1460
+
1461
+//
1428 1462
 // CONTROLLER TYPE: I2C
1429 1463
 //
1430 1464
 // Note: These controllers require the installation of Arduino's LiquidCrystal_I2C
@@ -1440,6 +1474,9 @@
1440 1474
 //
1441 1475
 // Sainsmart YW Robot (LCM1602) LCD Display
1442 1476
 //
1477
+// Note: This controller requires F.Malpartida's LiquidCrystal_I2C library
1478
+// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
1479
+//
1443 1480
 //#define LCD_I2C_SAINSMART_YWROBOT
1444 1481
 
1445 1482
 //
@@ -1471,6 +1508,11 @@
1471 1508
 //#define U8GLIB_SSD1306
1472 1509
 
1473 1510
 //
1511
+// TinyBoy2 128x64 OLED / Encoder Panel
1512
+//
1513
+//#define OLED_PANEL_TINYBOY2
1514
+
1515
+//
1474 1516
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1475 1517
 //
1476 1518
 //#define SAV_3DGLCD
@@ -1530,12 +1572,15 @@
1530 1572
 // SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure
1531 1573
 //#define SF_ARC_FIX
1532 1574
 
1533
-// Support for the BariCUDA Paste Extruder.
1575
+// Support for the BariCUDA Paste Extruder
1534 1576
 //#define BARICUDA
1535 1577
 
1536
-//define BlinkM/CyzRgb Support
1578
+// Support for BlinkM/CyzRgb
1537 1579
 //#define BLINKM
1538 1580
 
1581
+// Support for PCA9632 PWM LED driver
1582
+//#define PCA9632
1583
+
1539 1584
 /**
1540 1585
  * RGB LED / LED Strip Control
1541 1586
  *
@@ -1573,7 +1618,7 @@
1573 1618
  *  - Change to green once print has finished
1574 1619
  *  - Turn off after the print has finished and the user has pushed a button
1575 1620
  */
1576
-#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED)
1621
+#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED) || ENABLED(PCA9632)
1577 1622
   #define PRINTER_EVENT_LEDS
1578 1623
 #endif
1579 1624
 

+ 109
- 12
Marlin/example_configurations/TinyBoy2/Configuration_adv.h Просмотреть файл

@@ -123,8 +123,8 @@
123 123
   #define AUTOTEMP_OLDWEIGHT 0.98
124 124
 #endif
125 125
 
126
-//Show Temperature ADC value
127
-//The M105 command return, besides traditional information, the ADC value read from temperature sensors.
126
+// Show Temperature ADC value
127
+// Enable for M105 to include ADC values read from temperature sensors.
128 128
 //#define SHOW_TEMP_ADC_VALUES
129 129
 
130 130
 /**
@@ -419,16 +419,16 @@
419 419
  *    M908 - BQ_ZUM_MEGA_3D, RAMBO, PRINTRBOARD_REVF, RIGIDBOARD_V2 & SCOOVO_X9H
420 420
  *    M909, M910 & LCD - only PRINTRBOARD_REVF & RIGIDBOARD_V2
421 421
  */
422
-//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps
423
-//#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
424
-//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 } // Default drive percent - X, Y, Z, E axis
422
+//#define PWM_MOTOR_CURRENT { 1300, 1300, 1250 }          // Values in milliamps
423
+//#define DIGIPOT_MOTOR_CURRENT { 135,135,135,135,135 }   // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
424
+//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 }    // Default drive percent - X, Y, Z, E axis
425 425
 
426 426
 // Uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro
427 427
 //#define DIGIPOT_I2C
428
-//#define DIGIPOT_MCP4018
428
+//#define DIGIPOT_MCP4018          // Requires library from https://github.com/stawel/SlowSoftI2CMaster
429 429
 #define DIGIPOT_I2C_NUM_CHANNELS 8 // 5DPRINT: 4     AZTEEG_X3_PRO: 8
430 430
 // Actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS
431
-#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0}  //  AZTEEG_X3_PRO
431
+#define DIGIPOT_I2C_MOTOR_CURRENTS { 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 }  //  AZTEEG_X3_PRO
432 432
 
433 433
 //===========================================================================
434 434
 //=============================Additional Features===========================
@@ -648,7 +648,7 @@
648 648
    *
649 649
    * Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
650 650
    *
651
-   * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
651
+   * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
652 652
    * Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
653 653
    */
654 654
   #define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
@@ -674,10 +674,16 @@
674 674
 
675 675
 // @section extras
676 676
 
677
-// Arc interpretation settings:
678
-#define ARC_SUPPORT  // Disabling this saves ~2738 bytes
679
-#define MM_PER_ARC_SEGMENT 1
680
-#define N_ARC_CORRECTION 25
677
+//
678
+// G2/G3 Arc Support
679
+//
680
+#define ARC_SUPPORT               // Disable this feature to save ~3226 bytes
681
+#if ENABLED(ARC_SUPPORT)
682
+  #define MM_PER_ARC_SEGMENT  1   // Length of each arc segment
683
+  #define N_ARC_CORRECTION   25   // Number of intertpolated segments between corrections
684
+  //#define ARC_P_CIRCLES         // Enable the 'P' parameter to specify complete circles
685
+  //#define CNC_WORKSPACE_PLANES  // Allow G2/G3 to operate in XY, ZX, or YZ planes
686
+#endif
681 687
 
682 688
 // Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
683 689
 //#define BEZIER_CURVE_SUPPORT
@@ -803,6 +809,7 @@
803 809
   #define PAUSE_PARK_NO_STEPPER_TIMEOUT       // Enable to have stepper motors hold position during filament change
804 810
                                               // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
805 811
   //#define PARK_HEAD_ON_PAUSE                // Go to filament change position on pause, return to print position on resume
812
+  //#define HOME_BEFORE_FILAMENT_CHANGE       // Ensure homing has been completed prior to parking for filament change
806 813
 #endif
807 814
 
808 815
 // @section tmc
@@ -1257,4 +1264,94 @@
1257 1264
   //#define USER_GCODE_5 "G28\nM503"
1258 1265
 #endif
1259 1266
 
1267
+/**
1268
+ * Specify an action command to send to the host when the printer is killed.
1269
+ * Will be sent in the form '//action:ACTION_ON_KILL', e.g. '//action:poweroff'.
1270
+ * The host must be configured to handle the action command.
1271
+ */
1272
+//#define ACTION_ON_KILL "poweroff"
1273
+
1274
+//===========================================================================
1275
+//====================== I2C Position Encoder Settings ======================
1276
+//===========================================================================
1277
+/**
1278
+ *  I2C position encoders for closed loop control.
1279
+ *  Developed by Chris Barr at Aus3D.
1280
+ *
1281
+ *  Wiki: http://wiki.aus3d.com.au/Magnetic_Encoder
1282
+ *  Github: https://github.com/Aus3D/MagneticEncoder
1283
+ *
1284
+ *  Supplier: http://aus3d.com.au/magnetic-encoder-module
1285
+ *  Alternative Supplier: http://reliabuild3d.com/
1286
+ *
1287
+ *  Reilabuild encoders have been modified to improve reliability.
1288
+ */
1289
+
1290
+//#define I2C_POSITION_ENCODERS
1291
+#if ENABLED(I2C_POSITION_ENCODERS)
1292
+
1293
+  #define I2CPE_ENCODER_CNT         1                       // The number of encoders installed; max of 5
1294
+                                                            // encoders supported currently.
1295
+
1296
+  #define I2CPE_ENC_1_ADDR          I2CPE_PRESET_ADDR_X     // I2C address of the encoder. 30-200.
1297
+  #define I2CPE_ENC_1_AXIS          X_AXIS                  // Axis the encoder module is installed on.  <X|Y|Z|E>_AXIS.
1298
+  #define I2CPE_ENC_1_TYPE          I2CPE_ENC_TYPE_LINEAR   // Type of encoder:  I2CPE_ENC_TYPE_LINEAR -or-
1299
+                                                            // I2CPE_ENC_TYPE_ROTARY.
1300
+  #define I2CPE_ENC_1_TICKS_UNIT    2048                    // 1024 for magnetic strips with 2mm poles; 2048 for
1301
+                                                            // 1mm poles. For linear encoders this is ticks / mm,
1302
+                                                            // for rotary encoders this is ticks / revolution.
1303
+  //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1304
+                                                            // steps per full revolution (motor steps/rev * microstepping)
1305
+  //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1306
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1307
+  #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1308
+                                                            // printer will attempt to correct the error; errors
1309
+                                                            // smaller than this are ignored to minimize effects of
1310
+                                                            // measurement noise / latency (filter).
1311
+
1312
+  #define I2CPE_ENC_2_ADDR          I2CPE_PRESET_ADDR_Y     // Same as above, but for encoder 2.
1313
+  #define I2CPE_ENC_2_AXIS          Y_AXIS
1314
+  #define I2CPE_ENC_2_TYPE          I2CPE_ENC_TYPE_LINEAR
1315
+  #define I2CPE_ENC_2_TICKS_UNIT    2048
1316
+  //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1317
+  //#define I2CPE_ENC_2_INVERT
1318
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1319
+  #define I2CPE_ENC_2_EC_THRESH     0.10
1320
+
1321
+  #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
1322
+  #define I2CPE_ENC_3_AXIS          Z_AXIS                  // as above, or use defaults below.
1323
+
1324
+  #define I2CPE_ENC_4_ADDR          I2CPE_PRESET_ADDR_E     // Encoder 4.
1325
+  #define I2CPE_ENC_4_AXIS          E_AXIS
1326
+
1327
+  #define I2CPE_ENC_5_ADDR          34                      // Encoder 5.
1328
+  #define I2CPE_ENC_5_AXIS          E_AXIS
1329
+
1330
+  // Default settings for encoders which are enabled, but without settings configured above.
1331
+  #define I2CPE_DEF_TYPE            I2CPE_ENC_TYPE_LINEAR
1332
+  #define I2CPE_DEF_ENC_TICKS_UNIT  2048
1333
+  #define I2CPE_DEF_TICKS_REV       (16 * 200)
1334
+  #define I2CPE_DEF_EC_METHOD       I2CPE_ECM_NONE
1335
+  #define I2CPE_DEF_EC_THRESH       0.1
1336
+
1337
+  //#define I2CPE_ERR_THRESH_ABORT  100.0                   // Threshold size for error (in mm) error on any given
1338
+                                                            // axis after which the printer will abort. Comment out to
1339
+                                                            // disable abort behaviour.
1340
+
1341
+  #define I2CPE_TIME_TRUSTED        10000                   // After an encoder fault, there must be no further fault
1342
+                                                            // for this amount of time (in ms) before the encoder
1343
+                                                            // is trusted again.
1344
+
1345
+  /**
1346
+   * Position is checked every time a new command is executed from the buffer but during long moves,
1347
+   * this setting determines the minimum update time between checks. A value of 100 works well with
1348
+   * error rolling average when attempting to correct only for skips and not for vibration.
1349
+   */
1350
+  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1351
+
1352
+  // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1353
+  #define I2CPE_ERR_ROLLING_AVERAGE
1354
+
1355
+#endif // I2C_POSITION_ENCODERS
1356
+
1260 1357
 #endif // CONFIGURATION_ADV_H

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

@@ -58,15 +58,15 @@
58 58
 //===========================================================================
59 59
 //============================= DELTA Printer ===============================
60 60
 //===========================================================================
61
-// For Delta printers start with one of the configuration files in the
61
+// For a Delta printer start with one of the configuration files in the
62 62
 // example_configurations/delta directory and customize for your machine.
63 63
 //
64 64
 
65 65
 //===========================================================================
66 66
 //============================= SCARA Printer ===============================
67 67
 //===========================================================================
68
-// For a Scara printer replace the configuration files with the files in the
69
-// example_configurations/SCARA directory.
68
+// For a SCARA printer start with the configuration files in
69
+// example_configurations/SCARA and customize for your machine.
70 70
 //
71 71
 
72 72
 // @section info
@@ -141,6 +141,25 @@
141 141
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
142 142
 //#define SINGLENOZZLE
143 143
 
144
+/**
145
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
146
+ *
147
+ * This device allows one stepper driver on a control board to drive
148
+ * two to eight stepper motors, one at a time, in a manner suitable
149
+ * for extruders.
150
+ *
151
+ * This option only allows the multiplexer to switch on tool-change.
152
+ * Additional options to configure custom E moves are pending.
153
+ */
154
+//#define MK2_MULTIPLEXER
155
+#if ENABLED(MK2_MULTIPLEXER)
156
+  // Override the default DIO selector pins here, if needed.
157
+  // Some pins files may provide defaults for these pins.
158
+  //#define E_MUX0_PIN 40  // Always Required
159
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
160
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
161
+#endif
162
+
144 163
 // A dual extruder that uses a single stepper motor
145 164
 //#define SWITCHING_EXTRUDER
146 165
 #if ENABLED(SWITCHING_EXTRUDER)
@@ -555,7 +574,6 @@
555 574
  *
556 575
  */
557 576
 //#define Z_MIN_PROBE_ENDSTOP
558
-//#define Z_MIN_PROBE_PIN Z_MAX_PIN
559 577
 
560 578
 /**
561 579
  * Probe Type
@@ -870,12 +888,14 @@
870 888
   #define UBL_MESH_INSET 1          // Mesh inset margin on print area
871 889
   #define GRID_MAX_POINTS_X 10      // Don't use more than 15 points per axis, implementation limited.
872 890
   #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
873
-  #define UBL_PROBE_PT_1_X 39       // These set the probe locations for when UBL does a 3-Point leveling
874
-  #define UBL_PROBE_PT_1_Y 180      // of the mesh.
891
+
892
+  #define UBL_PROBE_PT_1_X 39       // Probing points for 3-Point leveling of the mesh
893
+  #define UBL_PROBE_PT_1_Y 180
875 894
   #define UBL_PROBE_PT_2_X 39
876 895
   #define UBL_PROBE_PT_2_Y 20
877 896
   #define UBL_PROBE_PT_3_X 180
878 897
   #define UBL_PROBE_PT_3_Y 20
898
+
879 899
   #define UBL_G26_MESH_VALIDATION   // Enable G26 mesh validation
880 900
   #define UBL_MESH_EDIT_MOVES_Z     // Sophisticated users prefer no movement of nozzle
881 901
 
@@ -930,6 +950,7 @@
930 950
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
931 951
 // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
932 952
 // - Prevent Z homing when the Z probe is outside bed area.
953
+//
933 954
 //#define Z_SAFE_HOMING
934 955
 
935 956
 #if ENABLED(Z_SAFE_HOMING)
@@ -954,13 +975,10 @@
954 975
 // M500 - stores parameters in EEPROM
955 976
 // M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).
956 977
 // M502 - reverts to the default "factory settings".  You still need to store them in EEPROM afterwards if you want to.
957
-//define this to enable EEPROM support
958
-//#define EEPROM_SETTINGS
959
-
960
-#if ENABLED(EEPROM_SETTINGS)
961
-  // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out:
962
-  #define EEPROM_CHITCHAT // Please keep turned on if you can.
963
-#endif
978
+//
979
+//#define EEPROM_SETTINGS // Enable for M500 and M501 commands
980
+//#define DISABLE_M503    // Saves ~2700 bytes of PROGMEM. Disable for release!
981
+#define EEPROM_CHITCHAT   // Give feedback on EEPROM commands. Disable to save PROGMEM.
964 982
 
965 983
 //
966 984
 // Host Keepalive
@@ -1119,10 +1137,11 @@
1119 1137
  *
1120 1138
  * Select the language to display on the LCD. These languages are available:
1121 1139
  *
1122
- *    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
1123
- *    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk, test
1140
+ *    en, an, bg, ca, cn, cz, cz_utf8, de, el, el-gr, es, eu, fi, fr, gl, hr,
1141
+ *    it, kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk,
1142
+ *    zh_CN, zh_TW, test
1124 1143
  *
1125
- * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'test':'TEST' }
1144
+ * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'cz_utf8':'Czech (UTF8)', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'zh_CN':'Chinese (Simplified)', 'zh_TW':'Chinese (Taiwan)', test':'TEST' }
1126 1145
  */
1127 1146
 //#define LCD_LANGUAGE en
1128 1147
 
@@ -1271,12 +1290,6 @@
1271 1290
 //#define ULTIPANEL
1272 1291
 
1273 1292
 //
1274
-// Cartesio UI
1275
-// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1276
-//
1277
-//#define CARTESIO_UI
1278
-
1279
-//
1280 1293
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
1281 1294
 // http://reprap.org/wiki/PanelOne
1282 1295
 //
@@ -1359,6 +1372,27 @@
1359 1372
 //#define BQ_LCD_SMART_CONTROLLER
1360 1373
 
1361 1374
 //
1375
+// Cartesio UI
1376
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1377
+//
1378
+//#define CARTESIO_UI
1379
+
1380
+//
1381
+// ANET_10 Controller supported displays.
1382
+//
1383
+//#define ANET_KEYPAD_LCD         // Requires ADC_KEYPAD_PIN to be assigned to an analog pin.
1384
+                                  // This LCD is known to be susceptible to electrical interference
1385
+                                  // which scrambles the display.  Pressing any button clears it up.
1386
+//#define ANET_FULL_GRAPHICS_LCD  // Anet 128x64 full graphics lcd with rotary encoder as used on Anet A6
1387
+                                  // A clone of the RepRapDiscount full graphics display but with
1388
+                                  // different pins/wiring (see pins_ANET_10.h).
1389
+
1390
+//
1391
+// LCD for Melzi Card with Graphical LCD
1392
+//
1393
+//#define LCD_FOR_MELZI
1394
+
1395
+//
1362 1396
 // CONTROLLER TYPE: I2C
1363 1397
 //
1364 1398
 // Note: These controllers require the installation of Arduino's LiquidCrystal_I2C
@@ -1374,6 +1408,9 @@
1374 1408
 //
1375 1409
 // Sainsmart YW Robot (LCM1602) LCD Display
1376 1410
 //
1411
+// Note: This controller requires F.Malpartida's LiquidCrystal_I2C library
1412
+// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
1413
+//
1377 1414
 //#define LCD_I2C_SAINSMART_YWROBOT
1378 1415
 
1379 1416
 //
@@ -1405,6 +1442,11 @@
1405 1442
 //#define U8GLIB_SSD1306
1406 1443
 
1407 1444
 //
1445
+// TinyBoy2 128x64 OLED / Encoder Panel
1446
+//
1447
+//#define OLED_PANEL_TINYBOY2
1448
+
1449
+//
1408 1450
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1409 1451
 //
1410 1452
 //#define SAV_3DGLCD
@@ -1421,11 +1463,6 @@
1421 1463
 //
1422 1464
 //#define SAV_3DLCD
1423 1465
 
1424
-//
1425
-// TinyBoy2 128x64 OLED / Encoder Panel
1426
-//
1427
-//#define OLED_PANEL_TINYBOY2
1428
-
1429 1466
 //=============================================================================
1430 1467
 //=============================== Extra Features ==============================
1431 1468
 //=============================================================================
@@ -1464,12 +1501,15 @@
1464 1501
 // SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure
1465 1502
 //#define SF_ARC_FIX
1466 1503
 
1467
-// Support for the BariCUDA Paste Extruder.
1504
+// Support for the BariCUDA Paste Extruder
1468 1505
 //#define BARICUDA
1469 1506
 
1470
-//define BlinkM/CyzRgb Support
1507
+// Support for BlinkM/CyzRgb
1471 1508
 //#define BLINKM
1472 1509
 
1510
+// Support for PCA9632 PWM LED driver
1511
+//#define PCA9632
1512
+
1473 1513
 /**
1474 1514
  * RGB LED / LED Strip Control
1475 1515
  *
@@ -1507,7 +1547,7 @@
1507 1547
  *  - Change to green once print has finished
1508 1548
  *  - Turn off after the print has finished and the user has pushed a button
1509 1549
  */
1510
-#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED)
1550
+#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED) || ENABLED(PCA9632)
1511 1551
   #define PRINTER_EVENT_LEDS
1512 1552
 #endif
1513 1553
 

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

@@ -123,8 +123,8 @@
123 123
   #define AUTOTEMP_OLDWEIGHT 0.98
124 124
 #endif
125 125
 
126
-//Show Temperature ADC value
127
-//The M105 command return, besides traditional information, the ADC value read from temperature sensors.
126
+// Show Temperature ADC value
127
+// Enable for M105 to include ADC values read from temperature sensors.
128 128
 //#define SHOW_TEMP_ADC_VALUES
129 129
 
130 130
 /**
@@ -419,16 +419,16 @@
419 419
  *    M908 - BQ_ZUM_MEGA_3D, RAMBO, PRINTRBOARD_REVF, RIGIDBOARD_V2 & SCOOVO_X9H
420 420
  *    M909, M910 & LCD - only PRINTRBOARD_REVF & RIGIDBOARD_V2
421 421
  */
422
-//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps
423
-//#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
424
-//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 } // Default drive percent - X, Y, Z, E axis
422
+//#define PWM_MOTOR_CURRENT { 1300, 1300, 1250 }          // Values in milliamps
423
+//#define DIGIPOT_MOTOR_CURRENT { 135,135,135,135,135 }   // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
424
+//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 }    // Default drive percent - X, Y, Z, E axis
425 425
 
426 426
 // Uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro
427 427
 //#define DIGIPOT_I2C
428
-//#define DIGIPOT_MCP4018
428
+//#define DIGIPOT_MCP4018          // Requires library from https://github.com/stawel/SlowSoftI2CMaster
429 429
 #define DIGIPOT_I2C_NUM_CHANNELS 8 // 5DPRINT: 4     AZTEEG_X3_PRO: 8
430 430
 // Actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS
431
-#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0}  //  AZTEEG_X3_PRO
431
+#define DIGIPOT_I2C_MOTOR_CURRENTS { 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 }  //  AZTEEG_X3_PRO
432 432
 
433 433
 //===========================================================================
434 434
 //=============================Additional Features===========================
@@ -645,7 +645,7 @@
645 645
    *
646 646
    * Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
647 647
    *
648
-   * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
648
+   * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
649 649
    * Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
650 650
    */
651 651
   #define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
@@ -671,10 +671,16 @@
671 671
 
672 672
 // @section extras
673 673
 
674
-// Arc interpretation settings:
675
-#define ARC_SUPPORT  // Disabling this saves ~2738 bytes
676
-#define MM_PER_ARC_SEGMENT 1
677
-#define N_ARC_CORRECTION 25
674
+//
675
+// G2/G3 Arc Support
676
+//
677
+#define ARC_SUPPORT               // Disable this feature to save ~3226 bytes
678
+#if ENABLED(ARC_SUPPORT)
679
+  #define MM_PER_ARC_SEGMENT  1   // Length of each arc segment
680
+  #define N_ARC_CORRECTION   25   // Number of intertpolated segments between corrections
681
+  //#define ARC_P_CIRCLES         // Enable the 'P' parameter to specify complete circles
682
+  //#define CNC_WORKSPACE_PLANES  // Allow G2/G3 to operate in XY, ZX, or YZ planes
683
+#endif
678 684
 
679 685
 // Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
680 686
 //#define BEZIER_CURVE_SUPPORT
@@ -800,6 +806,7 @@
800 806
   #define PAUSE_PARK_NO_STEPPER_TIMEOUT       // Enable to have stepper motors hold position during filament change
801 807
                                               // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
802 808
   //#define PARK_HEAD_ON_PAUSE                // Go to filament change position on pause, return to print position on resume
809
+  //#define HOME_BEFORE_FILAMENT_CHANGE       // Ensure homing has been completed prior to parking for filament change
803 810
 #endif
804 811
 
805 812
 // @section tmc
@@ -1192,12 +1199,12 @@
1192 1199
 /**
1193 1200
  * Auto-report temperatures with M155 S<seconds>
1194 1201
  */
1195
-//#define AUTO_REPORT_TEMPERATURES
1202
+#define AUTO_REPORT_TEMPERATURES
1196 1203
 
1197 1204
 /**
1198 1205
  * Include capabilities in M115 output
1199 1206
  */
1200
-//#define EXTENDED_CAPABILITIES_REPORT
1207
+#define EXTENDED_CAPABILITIES_REPORT
1201 1208
 
1202 1209
 /**
1203 1210
  * Volumetric extrusion default state
@@ -1254,4 +1261,94 @@
1254 1261
   //#define USER_GCODE_5 "G28\nM503"
1255 1262
 #endif
1256 1263
 
1264
+/**
1265
+ * Specify an action command to send to the host when the printer is killed.
1266
+ * Will be sent in the form '//action:ACTION_ON_KILL', e.g. '//action:poweroff'.
1267
+ * The host must be configured to handle the action command.
1268
+ */
1269
+//#define ACTION_ON_KILL "poweroff"
1270
+
1271
+//===========================================================================
1272
+//====================== I2C Position Encoder Settings ======================
1273
+//===========================================================================
1274
+/**
1275
+ *  I2C position encoders for closed loop control.
1276
+ *  Developed by Chris Barr at Aus3D.
1277
+ *
1278
+ *  Wiki: http://wiki.aus3d.com.au/Magnetic_Encoder
1279
+ *  Github: https://github.com/Aus3D/MagneticEncoder
1280
+ *
1281
+ *  Supplier: http://aus3d.com.au/magnetic-encoder-module
1282
+ *  Alternative Supplier: http://reliabuild3d.com/
1283
+ *
1284
+ *  Reilabuild encoders have been modified to improve reliability.
1285
+ */
1286
+
1287
+//#define I2C_POSITION_ENCODERS
1288
+#if ENABLED(I2C_POSITION_ENCODERS)
1289
+
1290
+  #define I2CPE_ENCODER_CNT         1                       // The number of encoders installed; max of 5
1291
+                                                            // encoders supported currently.
1292
+
1293
+  #define I2CPE_ENC_1_ADDR          I2CPE_PRESET_ADDR_X     // I2C address of the encoder. 30-200.
1294
+  #define I2CPE_ENC_1_AXIS          X_AXIS                  // Axis the encoder module is installed on.  <X|Y|Z|E>_AXIS.
1295
+  #define I2CPE_ENC_1_TYPE          I2CPE_ENC_TYPE_LINEAR   // Type of encoder:  I2CPE_ENC_TYPE_LINEAR -or-
1296
+                                                            // I2CPE_ENC_TYPE_ROTARY.
1297
+  #define I2CPE_ENC_1_TICKS_UNIT    2048                    // 1024 for magnetic strips with 2mm poles; 2048 for
1298
+                                                            // 1mm poles. For linear encoders this is ticks / mm,
1299
+                                                            // for rotary encoders this is ticks / revolution.
1300
+  //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1301
+                                                            // steps per full revolution (motor steps/rev * microstepping)
1302
+  //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1303
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1304
+  #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1305
+                                                            // printer will attempt to correct the error; errors
1306
+                                                            // smaller than this are ignored to minimize effects of
1307
+                                                            // measurement noise / latency (filter).
1308
+
1309
+  #define I2CPE_ENC_2_ADDR          I2CPE_PRESET_ADDR_Y     // Same as above, but for encoder 2.
1310
+  #define I2CPE_ENC_2_AXIS          Y_AXIS
1311
+  #define I2CPE_ENC_2_TYPE          I2CPE_ENC_TYPE_LINEAR
1312
+  #define I2CPE_ENC_2_TICKS_UNIT    2048
1313
+  //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1314
+  //#define I2CPE_ENC_2_INVERT
1315
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1316
+  #define I2CPE_ENC_2_EC_THRESH     0.10
1317
+
1318
+  #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
1319
+  #define I2CPE_ENC_3_AXIS          Z_AXIS                  // as above, or use defaults below.
1320
+
1321
+  #define I2CPE_ENC_4_ADDR          I2CPE_PRESET_ADDR_E     // Encoder 4.
1322
+  #define I2CPE_ENC_4_AXIS          E_AXIS
1323
+
1324
+  #define I2CPE_ENC_5_ADDR          34                      // Encoder 5.
1325
+  #define I2CPE_ENC_5_AXIS          E_AXIS
1326
+
1327
+  // Default settings for encoders which are enabled, but without settings configured above.
1328
+  #define I2CPE_DEF_TYPE            I2CPE_ENC_TYPE_LINEAR
1329
+  #define I2CPE_DEF_ENC_TICKS_UNIT  2048
1330
+  #define I2CPE_DEF_TICKS_REV       (16 * 200)
1331
+  #define I2CPE_DEF_EC_METHOD       I2CPE_ECM_NONE
1332
+  #define I2CPE_DEF_EC_THRESH       0.1
1333
+
1334
+  //#define I2CPE_ERR_THRESH_ABORT  100.0                   // Threshold size for error (in mm) error on any given
1335
+                                                            // axis after which the printer will abort. Comment out to
1336
+                                                            // disable abort behaviour.
1337
+
1338
+  #define I2CPE_TIME_TRUSTED        10000                   // After an encoder fault, there must be no further fault
1339
+                                                            // for this amount of time (in ms) before the encoder
1340
+                                                            // is trusted again.
1341
+
1342
+  /**
1343
+   * Position is checked every time a new command is executed from the buffer but during long moves,
1344
+   * this setting determines the minimum update time between checks. A value of 100 works well with
1345
+   * error rolling average when attempting to correct only for skips and not for vibration.
1346
+   */
1347
+  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1348
+
1349
+  // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1350
+  #define I2CPE_ERR_ROLLING_AVERAGE
1351
+
1352
+#endif // I2C_POSITION_ENCODERS
1353
+
1257 1354
 #endif // CONFIGURATION_ADV_H

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

@@ -58,15 +58,15 @@
58 58
 //===========================================================================
59 59
 //============================= DELTA Printer ===============================
60 60
 //===========================================================================
61
-// For Delta printers start with one of the configuration files in the
61
+// For a Delta printer start with one of the configuration files in the
62 62
 // example_configurations/delta directory and customize for your machine.
63 63
 //
64 64
 
65 65
 //===========================================================================
66 66
 //============================= SCARA Printer ===============================
67 67
 //===========================================================================
68
-// For a Scara printer replace the configuration files with the files in the
69
-// example_configurations/SCARA directory.
68
+// For a SCARA printer start with the configuration files in
69
+// example_configurations/SCARA and customize for your machine.
70 70
 //
71 71
 
72 72
 // @section info
@@ -138,6 +138,25 @@
138 138
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
139 139
 //#define SINGLENOZZLE
140 140
 
141
+/**
142
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
143
+ *
144
+ * This device allows one stepper driver on a control board to drive
145
+ * two to eight stepper motors, one at a time, in a manner suitable
146
+ * for extruders.
147
+ *
148
+ * This option only allows the multiplexer to switch on tool-change.
149
+ * Additional options to configure custom E moves are pending.
150
+ */
151
+//#define MK2_MULTIPLEXER
152
+#if ENABLED(MK2_MULTIPLEXER)
153
+  // Override the default DIO selector pins here, if needed.
154
+  // Some pins files may provide defaults for these pins.
155
+  //#define E_MUX0_PIN 40  // Always Required
156
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
157
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
158
+#endif
159
+
141 160
 // A dual extruder that uses a single stepper motor
142 161
 //#define SWITCHING_EXTRUDER
143 162
 #if ENABLED(SWITCHING_EXTRUDER)
@@ -565,7 +584,6 @@
565 584
  *
566 585
  */
567 586
 //#define Z_MIN_PROBE_ENDSTOP
568
-//#define Z_MIN_PROBE_PIN Z_MAX_PIN
569 587
 
570 588
 /**
571 589
  * Probe Type
@@ -880,12 +898,14 @@
880 898
   #define UBL_MESH_INSET 1          // Mesh inset margin on print area
881 899
   #define GRID_MAX_POINTS_X 10      // Don't use more than 15 points per axis, implementation limited.
882 900
   #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
883
-  #define UBL_PROBE_PT_1_X 39       // These set the probe locations for when UBL does a 3-Point leveling
884
-  #define UBL_PROBE_PT_1_Y 180      // of the mesh.
901
+
902
+  #define UBL_PROBE_PT_1_X 39       // Probing points for 3-Point leveling of the mesh
903
+  #define UBL_PROBE_PT_1_Y 180
885 904
   #define UBL_PROBE_PT_2_X 39
886 905
   #define UBL_PROBE_PT_2_Y 20
887 906
   #define UBL_PROBE_PT_3_X 180
888 907
   #define UBL_PROBE_PT_3_Y 20
908
+
889 909
   #define UBL_G26_MESH_VALIDATION   // Enable G26 mesh validation
890 910
   #define UBL_MESH_EDIT_MOVES_Z     // Sophisticated users prefer no movement of nozzle
891 911
 
@@ -940,6 +960,7 @@
940 960
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
941 961
 // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
942 962
 // - Prevent Z homing when the Z probe is outside bed area.
963
+//
943 964
 //#define Z_SAFE_HOMING
944 965
 
945 966
 #if ENABLED(Z_SAFE_HOMING)
@@ -964,13 +985,10 @@
964 985
 // M500 - stores parameters in EEPROM
965 986
 // M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).
966 987
 // M502 - reverts to the default "factory settings".  You still need to store them in EEPROM afterwards if you want to.
967
-//define this to enable EEPROM support
968
-//#define EEPROM_SETTINGS
969
-
970
-#if ENABLED(EEPROM_SETTINGS)
971
-  // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out:
972
-  #define EEPROM_CHITCHAT // Please keep turned on if you can.
973
-#endif
988
+//
989
+//#define EEPROM_SETTINGS // Enable for M500 and M501 commands
990
+//#define DISABLE_M503    // Saves ~2700 bytes of PROGMEM. Disable for release!
991
+#define EEPROM_CHITCHAT   // Give feedback on EEPROM commands. Disable to save PROGMEM.
974 992
 
975 993
 //
976 994
 // Host Keepalive
@@ -1129,10 +1147,11 @@
1129 1147
  *
1130 1148
  * Select the language to display on the LCD. These languages are available:
1131 1149
  *
1132
- *    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
1133
- *    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk, test
1150
+ *    en, an, bg, ca, cn, cz, cz_utf8, de, el, el-gr, es, eu, fi, fr, gl, hr,
1151
+ *    it, kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk,
1152
+ *    zh_CN, zh_TW, test
1134 1153
  *
1135
- * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'test':'TEST' }
1154
+ * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'cz_utf8':'Czech (UTF8)', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'zh_CN':'Chinese (Simplified)', 'zh_TW':'Chinese (Taiwan)', test':'TEST' }
1136 1155
  */
1137 1156
 #define LCD_LANGUAGE en
1138 1157
 
@@ -1281,12 +1300,6 @@
1281 1300
 //#define ULTIPANEL
1282 1301
 
1283 1302
 //
1284
-// Cartesio UI
1285
-// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1286
-//
1287
-//#define CARTESIO_UI
1288
-
1289
-//
1290 1303
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
1291 1304
 // http://reprap.org/wiki/PanelOne
1292 1305
 //
@@ -1369,6 +1382,27 @@
1369 1382
 //#define BQ_LCD_SMART_CONTROLLER
1370 1383
 
1371 1384
 //
1385
+// Cartesio UI
1386
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1387
+//
1388
+//#define CARTESIO_UI
1389
+
1390
+//
1391
+// ANET_10 Controller supported displays.
1392
+//
1393
+//#define ANET_KEYPAD_LCD         // Requires ADC_KEYPAD_PIN to be assigned to an analog pin.
1394
+                                  // This LCD is known to be susceptible to electrical interference
1395
+                                  // which scrambles the display.  Pressing any button clears it up.
1396
+//#define ANET_FULL_GRAPHICS_LCD  // Anet 128x64 full graphics lcd with rotary encoder as used on Anet A6
1397
+                                  // A clone of the RepRapDiscount full graphics display but with
1398
+                                  // different pins/wiring (see pins_ANET_10.h).
1399
+
1400
+//
1401
+// LCD for Melzi Card with Graphical LCD
1402
+//
1403
+//#define LCD_FOR_MELZI
1404
+
1405
+//
1372 1406
 // CONTROLLER TYPE: I2C
1373 1407
 //
1374 1408
 // Note: These controllers require the installation of Arduino's LiquidCrystal_I2C
@@ -1384,6 +1418,9 @@
1384 1418
 //
1385 1419
 // Sainsmart YW Robot (LCM1602) LCD Display
1386 1420
 //
1421
+// Note: This controller requires F.Malpartida's LiquidCrystal_I2C library
1422
+// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
1423
+//
1387 1424
 //#define LCD_I2C_SAINSMART_YWROBOT
1388 1425
 
1389 1426
 //
@@ -1415,6 +1452,11 @@
1415 1452
 //#define U8GLIB_SSD1306
1416 1453
 
1417 1454
 //
1455
+// TinyBoy2 128x64 OLED / Encoder Panel
1456
+//
1457
+//#define OLED_PANEL_TINYBOY2
1458
+
1459
+//
1418 1460
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1419 1461
 //
1420 1462
 //#define SAV_3DGLCD
@@ -1431,11 +1473,6 @@
1431 1473
 //
1432 1474
 //#define SAV_3DLCD
1433 1475
 
1434
-//
1435
-// TinyBoy2 128x64 OLED / Encoder Panel
1436
-//
1437
-//#define OLED_PANEL_TINYBOY2
1438
-
1439 1476
 //=============================================================================
1440 1477
 //=============================== Extra Features ==============================
1441 1478
 //=============================================================================
@@ -1474,12 +1511,15 @@
1474 1511
 // SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure
1475 1512
 //#define SF_ARC_FIX
1476 1513
 
1477
-// Support for the BariCUDA Paste Extruder.
1514
+// Support for the BariCUDA Paste Extruder
1478 1515
 //#define BARICUDA
1479 1516
 
1480
-//define BlinkM/CyzRgb Support
1517
+// Support for BlinkM/CyzRgb
1481 1518
 //#define BLINKM
1482 1519
 
1520
+// Support for PCA9632 PWM LED driver
1521
+//#define PCA9632
1522
+
1483 1523
 /**
1484 1524
  * RGB LED / LED Strip Control
1485 1525
  *
@@ -1517,7 +1557,7 @@
1517 1557
  *  - Change to green once print has finished
1518 1558
  *  - Turn off after the print has finished and the user has pushed a button
1519 1559
  */
1520
-#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED)
1560
+#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED) || ENABLED(PCA9632)
1521 1561
   #define PRINTER_EVENT_LEDS
1522 1562
 #endif
1523 1563
 

+ 104
- 58
Marlin/example_configurations/delta/FLSUN/auto_calibrate/Configuration.h Просмотреть файл

@@ -58,15 +58,15 @@
58 58
 //===========================================================================
59 59
 //============================= DELTA Printer ===============================
60 60
 //===========================================================================
61
-// For Delta printers start with one of the configuration files in the
61
+// For a Delta printer start with one of the configuration files in the
62 62
 // example_configurations/delta directory and customize for your machine.
63 63
 //
64 64
 
65 65
 //===========================================================================
66 66
 //============================= SCARA Printer ===============================
67 67
 //===========================================================================
68
-// For a Scara printer replace the configuration files with the files in the
69
-// example_configurations/SCARA directory.
68
+// For a SCARA printer start with the configuration files in
69
+// example_configurations/SCARA and customize for your machine.
70 70
 //
71 71
 
72 72
 // @section info
@@ -138,6 +138,25 @@
138 138
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
139 139
 //#define SINGLENOZZLE
140 140
 
141
+/**
142
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
143
+ *
144
+ * This device allows one stepper driver on a control board to drive
145
+ * two to eight stepper motors, one at a time, in a manner suitable
146
+ * for extruders.
147
+ *
148
+ * This option only allows the multiplexer to switch on tool-change.
149
+ * Additional options to configure custom E moves are pending.
150
+ */
151
+//#define MK2_MULTIPLEXER
152
+#if ENABLED(MK2_MULTIPLEXER)
153
+  // Override the default DIO selector pins here, if needed.
154
+  // Some pins files may provide defaults for these pins.
155
+  //#define E_MUX0_PIN 40  // Always Required
156
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
157
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
158
+#endif
159
+
141 160
 // A dual extruder that uses a single stepper motor
142 161
 //#define SWITCHING_EXTRUDER
143 162
 #if ENABLED(SWITCHING_EXTRUDER)
@@ -442,47 +461,51 @@
442 461
   // and processor overload (too many expensive sqrt calls).
443 462
   #define DELTA_SEGMENTS_PER_SECOND 160
444 463
 
445
-  // NOTE NB all values for DELTA_* values MUST be floating point, so always have a decimal point in them
446
-
447
-  // Center-to-center distance of the holes in the diagonal push rods.
448
-  #define DELTA_DIAGONAL_ROD 218.0 // mm
449
-
450
-  // Horizontal distance bridged by diagonal push rods when effector is centered.
451
-  #define DELTA_RADIUS 100.00 //mm  Get this value from auto calibrate
452
-
453
-  // height from z=0 to home position
454
-  #define DELTA_HEIGHT 295.00 // get this value from auto calibrate - use G33 P1 at 1st time calibration
455
-
456
-  // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers).
457
-  #define DELTA_PRINTABLE_RADIUS 85.0
464
+  // After homing move down to a height where XY movement is unconstrained
465
+  //#define DELTA_HOME_TO_SAFE_ZONE
458 466
 
459 467
   // Delta calibration menu
460 468
   // uncomment to add three points calibration menu option.
461 469
   // See http://minow.blogspot.com/index.html#4918805519571907051
462 470
   #define DELTA_CALIBRATION_MENU
463 471
 
464
-  // set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS*0.869 if DELTA_AUTO_CALIBRATION enabled
465
-  #define DELTA_CALIBRATION_RADIUS ((DELTA_PRINTABLE_RADIUS) * 0.869) // mm
466
-
467
-  // G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results)
472
+  // uncomment to add G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results)
468 473
   #define DELTA_AUTO_CALIBRATION
474
+
475
+  // NOTE NB all values for DELTA_* values MUST be floating point, so always have a decimal point in them
476
+
469 477
   #if ENABLED(DELTA_AUTO_CALIBRATION)
470
-    #define DELTA_CALIBRATION_DEFAULT_POINTS 4 // set the default number of probe points : n*n (-7 -> +7)
478
+    // set the default number of probe points : n*n (1 -> 7)
479
+    #define DELTA_CALIBRATION_DEFAULT_POINTS 4
471 480
   #endif
472 481
 
473
-  // After homing move down to a height where XY movement is unconstrained
474
-  #define DELTA_HOME_TO_SAFE_ZONE
482
+  #if ENABLED(DELTA_AUTO_CALIBRATION) || ENABLED(DELTA_CALIBRATION_MENU)
483
+    // Set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS*0.869 for non-eccentric probes
484
+    #define DELTA_CALIBRATION_RADIUS 73.5 // mm
485
+  #endif
475 486
 
476
-  #define DELTA_ENDSTOP_ADJ { 0, 0, 0 } // get these from auto calibrate
487
+  // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers).
488
+  #define DELTA_PRINTABLE_RADIUS 85.0 // mm
477 489
 
490
+  // Center-to-center distance of the holes in the diagonal push rods.
491
+  #define DELTA_DIAGONAL_ROD 218.0 // mm
492
+
493
+  // height from z=0 to home position
494
+  #define DELTA_HEIGHT 295.00 // get this value from auto calibrate
495
+
496
+  #define DELTA_ENDSTOP_ADJ { 0.0, 0.0, 0.0 } // get these from auto calibrate
497
+
498
+  // Horizontal distance bridged by diagonal push rods when effector is centered.
499
+  #define DELTA_RADIUS 101.0 //mm  Get this value from auto calibrate
500
+  
478 501
   // Trim adjustments for individual towers
479 502
   // tower angle corrections for X and Y tower / rotate XYZ so Z tower angle = 0
480 503
   // measured in degrees anticlockwise looking from above the printer
481
-  #define DELTA_TOWER_ANGLE_TRIM { 0, 0, 0 } // get these from auto calibrate
504
+  #define DELTA_TOWER_ANGLE_TRIM { 0.0, 0.0, 0.0 } // get these values from auto calibrate
482 505
 
483 506
   // delta radius and diaginal rod adjustments measured in mm
484
-  //#define DELTA_RADIUS_TRIM_TOWER {0, 0, 0}
485
-  //#define DELTA_DIAGONAL_ROD_TRIM_TOWER {0, 0, 0}
507
+  //#define DELTA_RADIUS_TRIM_TOWER { 0.0, 0.0, 0.0 }
508
+  //#define DELTA_DIAGONAL_ROD_TRIM_TOWER { 0.0, 0.0, 0.0 }
486 509
 
487 510
 #endif
488 511
 
@@ -633,7 +656,6 @@
633 656
  *
634 657
  */
635 658
 //#define Z_MIN_PROBE_ENDSTOP // A3K leave disabled!
636
-//#define Z_MIN_PROBE_PIN Z_MAX_PIN
637 659
 
638 660
 /**
639 661
  * Probe Type
@@ -999,12 +1021,16 @@
999 1021
   #define UBL_MESH_INSET 1          // Mesh inset margin on print area
1000 1022
   #define GRID_MAX_POINTS_X 10      // Don't use more than 15 points per axis, implementation limited.
1001 1023
   #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
1002
-  #define UBL_PROBE_PT_1_X 39       // These set the probe locations for when UBL does a 3-Point leveling
1003
-  #define UBL_PROBE_PT_1_Y 180      // of the mesh.
1004
-  #define UBL_PROBE_PT_2_X 39
1005
-  #define UBL_PROBE_PT_2_Y 20
1006
-  #define UBL_PROBE_PT_3_X 180
1007
-  #define UBL_PROBE_PT_3_Y 20
1024
+
1025
+  #define _PX(R,A) (R) * cos(RADIANS(A))
1026
+  #define _PY(R,A) (R) * sin(RADIANS(A))
1027
+  #define UBL_PROBE_PT_1_X _PX(DELTA_PROBEABLE_RADIUS, 0)   // Probing points for 3-Point leveling of the mesh
1028
+  #define UBL_PROBE_PT_1_Y _PY(DELTA_PROBEABLE_RADIUS, 0)
1029
+  #define UBL_PROBE_PT_2_X _PX(DELTA_PROBEABLE_RADIUS, 120)
1030
+  #define UBL_PROBE_PT_2_Y _PY(DELTA_PROBEABLE_RADIUS, 120)
1031
+  #define UBL_PROBE_PT_3_X _PX(DELTA_PROBEABLE_RADIUS, 240)
1032
+  #define UBL_PROBE_PT_3_Y _PY(DELTA_PROBEABLE_RADIUS, 240)
1033
+
1008 1034
   #define UBL_G26_MESH_VALIDATION   // Enable G26 mesh validation
1009 1035
   #define UBL_MESH_EDIT_MOVES_Z     // Sophisticated users prefer no movement of nozzle
1010 1036
 
@@ -1059,6 +1085,7 @@
1059 1085
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
1060 1086
 // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
1061 1087
 // - Prevent Z homing when the Z probe is outside bed area.
1088
+//
1062 1089
 //#define Z_SAFE_HOMING
1063 1090
 
1064 1091
 #if ENABLED(Z_SAFE_HOMING)
@@ -1082,13 +1109,10 @@
1082 1109
 // M500 - stores parameters in EEPROM
1083 1110
 // M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).
1084 1111
 // M502 - reverts to the default "factory settings".  You still need to store them in EEPROM afterwards if you want to.
1085
-//define this to enable EEPROM support
1086
-#define EEPROM_SETTINGS
1087
-
1088
-#if ENABLED(EEPROM_SETTINGS)
1089
-  // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out:
1090
-  #define EEPROM_CHITCHAT // Please keep turned on if you can.
1091
-#endif
1112
+//
1113
+#define EEPROM_SETTINGS   // Enable for M500 and M501 commands
1114
+//#define DISABLE_M503    // Saves ~2700 bytes of PROGMEM. Disable for release!
1115
+#define EEPROM_CHITCHAT   // Give feedback on EEPROM commands. Disable to save PROGMEM.
1092 1116
 
1093 1117
 //
1094 1118
 // Host Keepalive
@@ -1247,10 +1271,11 @@
1247 1271
  *
1248 1272
  * Select the language to display on the LCD. These languages are available:
1249 1273
  *
1250
- *    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
1251
- *    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk, test
1274
+ *    en, an, bg, ca, cn, cz, cz_utf8, de, el, el-gr, es, eu, fi, fr, gl, hr,
1275
+ *    it, kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk,
1276
+ *    zh_CN, zh_TW, test
1252 1277
  *
1253
- * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'test':'TEST' }
1278
+ * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'cz_utf8':'Czech (UTF8)', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'zh_CN':'Chinese (Simplified)', 'zh_TW':'Chinese (Taiwan)', test':'TEST' }
1254 1279
  */
1255 1280
 #define LCD_LANGUAGE en
1256 1281
 
@@ -1400,12 +1425,6 @@
1400 1425
 //#define ULTIPANEL
1401 1426
 
1402 1427
 //
1403
-// Cartesio UI
1404
-// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1405
-//
1406
-//#define CARTESIO_UI
1407
-
1408
-//
1409 1428
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
1410 1429
 // http://reprap.org/wiki/PanelOne
1411 1430
 //
@@ -1488,6 +1507,27 @@
1488 1507
 //#define BQ_LCD_SMART_CONTROLLER
1489 1508
 
1490 1509
 //
1510
+// Cartesio UI
1511
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1512
+//
1513
+//#define CARTESIO_UI
1514
+
1515
+//
1516
+// ANET_10 Controller supported displays.
1517
+//
1518
+//#define ANET_KEYPAD_LCD         // Requires ADC_KEYPAD_PIN to be assigned to an analog pin.
1519
+                                  // This LCD is known to be susceptible to electrical interference
1520
+                                  // which scrambles the display.  Pressing any button clears it up.
1521
+//#define ANET_FULL_GRAPHICS_LCD  // Anet 128x64 full graphics lcd with rotary encoder as used on Anet A6
1522
+                                  // A clone of the RepRapDiscount full graphics display but with
1523
+                                  // different pins/wiring (see pins_ANET_10.h).
1524
+
1525
+//
1526
+// LCD for Melzi Card with Graphical LCD
1527
+//
1528
+//#define LCD_FOR_MELZI
1529
+
1530
+//
1491 1531
 // CONTROLLER TYPE: I2C
1492 1532
 //
1493 1533
 // Note: These controllers require the installation of Arduino's LiquidCrystal_I2C
@@ -1503,6 +1543,9 @@
1503 1543
 //
1504 1544
 // Sainsmart YW Robot (LCM1602) LCD Display
1505 1545
 //
1546
+// Note: This controller requires F.Malpartida's LiquidCrystal_I2C library
1547
+// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
1548
+//
1506 1549
 //#define LCD_I2C_SAINSMART_YWROBOT
1507 1550
 
1508 1551
 //
@@ -1534,6 +1577,11 @@
1534 1577
 //#define U8GLIB_SSD1306
1535 1578
 
1536 1579
 //
1580
+// TinyBoy2 128x64 OLED / Encoder Panel
1581
+//
1582
+//#define OLED_PANEL_TINYBOY2
1583
+
1584
+//
1537 1585
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1538 1586
 //
1539 1587
 //#define SAV_3DGLCD
@@ -1550,11 +1598,6 @@
1550 1598
 //
1551 1599
 //#define SAV_3DLCD
1552 1600
 
1553
-//
1554
-// TinyBoy2 128x64 OLED / Encoder Panel
1555
-//
1556
-//#define OLED_PANEL_TINYBOY2
1557
-
1558 1601
 //=============================================================================
1559 1602
 //=============================== Extra Features ==============================
1560 1603
 //=============================================================================
@@ -1593,12 +1636,15 @@
1593 1636
 // SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure
1594 1637
 //#define SF_ARC_FIX
1595 1638
 
1596
-// Support for the BariCUDA Paste Extruder.
1639
+// Support for the BariCUDA Paste Extruder
1597 1640
 //#define BARICUDA
1598 1641
 
1599
-//define BlinkM/CyzRgb Support
1642
+// Support for BlinkM/CyzRgb
1600 1643
 //#define BLINKM
1601 1644
 
1645
+// Support for PCA9632 PWM LED driver
1646
+//#define PCA9632
1647
+
1602 1648
 /**
1603 1649
  * RGB LED / LED Strip Control
1604 1650
  *
@@ -1636,7 +1682,7 @@
1636 1682
  *  - Change to green once print has finished
1637 1683
  *  - Turn off after the print has finished and the user has pushed a button
1638 1684
  */
1639
-#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED)
1685
+#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED) || ENABLED(PCA9632)
1640 1686
   #define PRINTER_EVENT_LEDS
1641 1687
 #endif
1642 1688
 

+ 111
- 14
Marlin/example_configurations/delta/FLSUN/auto_calibrate/Configuration_adv.h Просмотреть файл

@@ -123,8 +123,8 @@
123 123
   #define AUTOTEMP_OLDWEIGHT 0.98
124 124
 #endif
125 125
 
126
-//Show Temperature ADC value
127
-//The M105 command return, besides traditional information, the ADC value read from temperature sensors.
126
+// Show Temperature ADC value
127
+// Enable for M105 to include ADC values read from temperature sensors.
128 128
 //#define SHOW_TEMP_ADC_VALUES
129 129
 
130 130
 /**
@@ -421,16 +421,16 @@
421 421
  *    M908 - BQ_ZUM_MEGA_3D, RAMBO, PRINTRBOARD_REVF, RIGIDBOARD_V2 & SCOOVO_X9H
422 422
  *    M909, M910 & LCD - only PRINTRBOARD_REVF & RIGIDBOARD_V2
423 423
  */
424
-//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps
425
-#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
426
-//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 } // Default drive percent - X, Y, Z, E axis
424
+//#define PWM_MOTOR_CURRENT { 1300, 1300, 1250 }          // Values in milliamps
425
+#define DIGIPOT_MOTOR_CURRENT { 135,135,135,135,135 }   // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
426
+//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 }    // Default drive percent - X, Y, Z, E axis
427 427
 
428 428
 // Uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro
429 429
 //#define DIGIPOT_I2C
430
-//#define DIGIPOT_MCP4018
430
+//#define DIGIPOT_MCP4018          // Requires library from https://github.com/stawel/SlowSoftI2CMaster
431 431
 #define DIGIPOT_I2C_NUM_CHANNELS 8 // 5DPRINT: 4     AZTEEG_X3_PRO: 8
432 432
 // Actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS
433
-#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0}  //  AZTEEG_X3_PRO
433
+#define DIGIPOT_I2C_MOTOR_CURRENTS { 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 }  //  AZTEEG_X3_PRO
434 434
 
435 435
 //===========================================================================
436 436
 //=============================Additional Features===========================
@@ -650,7 +650,7 @@
650 650
    *
651 651
    * Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
652 652
    *
653
-   * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
653
+   * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
654 654
    * Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
655 655
    */
656 656
   #define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
@@ -676,10 +676,16 @@
676 676
 
677 677
 // @section extras
678 678
 
679
-// Arc interpretation settings:
680
-#define ARC_SUPPORT  // Disabling this saves ~2738 bytes
681
-#define MM_PER_ARC_SEGMENT 1
682
-#define N_ARC_CORRECTION 25
679
+//
680
+// G2/G3 Arc Support
681
+//
682
+#define ARC_SUPPORT               // Disable this feature to save ~3226 bytes
683
+#if ENABLED(ARC_SUPPORT)
684
+  #define MM_PER_ARC_SEGMENT  1   // Length of each arc segment
685
+  #define N_ARC_CORRECTION   25   // Number of intertpolated segments between corrections
686
+  //#define ARC_P_CIRCLES         // Enable the 'P' parameter to specify complete circles
687
+  //#define CNC_WORKSPACE_PLANES  // Allow G2/G3 to operate in XY, ZX, or YZ planes
688
+#endif
683 689
 
684 690
 // Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
685 691
 //#define BEZIER_CURVE_SUPPORT
@@ -805,6 +811,7 @@
805 811
   #define PAUSE_PARK_NO_STEPPER_TIMEOUT       // Enable to have stepper motors hold position during filament change
806 812
                                               // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
807 813
   //#define PARK_HEAD_ON_PAUSE                // Go to filament change position on pause, return to print position on resume
814
+  //#define HOME_BEFORE_FILAMENT_CHANGE       // Ensure homing has been completed prior to parking for filament change
808 815
 #endif
809 816
 
810 817
 // @section tmc
@@ -1197,12 +1204,12 @@
1197 1204
 /**
1198 1205
  * Auto-report temperatures with M155 S<seconds>
1199 1206
  */
1200
-//#define AUTO_REPORT_TEMPERATURES
1207
+#define AUTO_REPORT_TEMPERATURES
1201 1208
 
1202 1209
 /**
1203 1210
  * Include capabilities in M115 output
1204 1211
  */
1205
-//#define EXTENDED_CAPABILITIES_REPORT
1212
+#define EXTENDED_CAPABILITIES_REPORT
1206 1213
 
1207 1214
 /**
1208 1215
  * Volumetric extrusion default state
@@ -1259,4 +1266,94 @@
1259 1266
   #define USER_GCODE_5 "G28\nM503"
1260 1267
 #endif
1261 1268
 
1269
+/**
1270
+ * Specify an action command to send to the host when the printer is killed.
1271
+ * Will be sent in the form '//action:ACTION_ON_KILL', e.g. '//action:poweroff'.
1272
+ * The host must be configured to handle the action command.
1273
+ */
1274
+//#define ACTION_ON_KILL "poweroff"
1275
+
1276
+//===========================================================================
1277
+//====================== I2C Position Encoder Settings ======================
1278
+//===========================================================================
1279
+/**
1280
+ *  I2C position encoders for closed loop control.
1281
+ *  Developed by Chris Barr at Aus3D.
1282
+ *
1283
+ *  Wiki: http://wiki.aus3d.com.au/Magnetic_Encoder
1284
+ *  Github: https://github.com/Aus3D/MagneticEncoder
1285
+ *
1286
+ *  Supplier: http://aus3d.com.au/magnetic-encoder-module
1287
+ *  Alternative Supplier: http://reliabuild3d.com/
1288
+ *
1289
+ *  Reilabuild encoders have been modified to improve reliability.
1290
+ */
1291
+
1292
+//#define I2C_POSITION_ENCODERS
1293
+#if ENABLED(I2C_POSITION_ENCODERS)
1294
+
1295
+  #define I2CPE_ENCODER_CNT         1                       // The number of encoders installed; max of 5
1296
+                                                            // encoders supported currently.
1297
+
1298
+  #define I2CPE_ENC_1_ADDR          I2CPE_PRESET_ADDR_X     // I2C address of the encoder. 30-200.
1299
+  #define I2CPE_ENC_1_AXIS          X_AXIS                  // Axis the encoder module is installed on.  <X|Y|Z|E>_AXIS.
1300
+  #define I2CPE_ENC_1_TYPE          I2CPE_ENC_TYPE_LINEAR   // Type of encoder:  I2CPE_ENC_TYPE_LINEAR -or-
1301
+                                                            // I2CPE_ENC_TYPE_ROTARY.
1302
+  #define I2CPE_ENC_1_TICKS_UNIT    2048                    // 1024 for magnetic strips with 2mm poles; 2048 for
1303
+                                                            // 1mm poles. For linear encoders this is ticks / mm,
1304
+                                                            // for rotary encoders this is ticks / revolution.
1305
+  //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1306
+                                                            // steps per full revolution (motor steps/rev * microstepping)
1307
+  //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1308
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1309
+  #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1310
+                                                            // printer will attempt to correct the error; errors
1311
+                                                            // smaller than this are ignored to minimize effects of
1312
+                                                            // measurement noise / latency (filter).
1313
+
1314
+  #define I2CPE_ENC_2_ADDR          I2CPE_PRESET_ADDR_Y     // Same as above, but for encoder 2.
1315
+  #define I2CPE_ENC_2_AXIS          Y_AXIS
1316
+  #define I2CPE_ENC_2_TYPE          I2CPE_ENC_TYPE_LINEAR
1317
+  #define I2CPE_ENC_2_TICKS_UNIT    2048
1318
+  //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1319
+  //#define I2CPE_ENC_2_INVERT
1320
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1321
+  #define I2CPE_ENC_2_EC_THRESH     0.10
1322
+
1323
+  #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
1324
+  #define I2CPE_ENC_3_AXIS          Z_AXIS                  // as above, or use defaults below.
1325
+
1326
+  #define I2CPE_ENC_4_ADDR          I2CPE_PRESET_ADDR_E     // Encoder 4.
1327
+  #define I2CPE_ENC_4_AXIS          E_AXIS
1328
+
1329
+  #define I2CPE_ENC_5_ADDR          34                      // Encoder 5.
1330
+  #define I2CPE_ENC_5_AXIS          E_AXIS
1331
+
1332
+  // Default settings for encoders which are enabled, but without settings configured above.
1333
+  #define I2CPE_DEF_TYPE            I2CPE_ENC_TYPE_LINEAR
1334
+  #define I2CPE_DEF_ENC_TICKS_UNIT  2048
1335
+  #define I2CPE_DEF_TICKS_REV       (16 * 200)
1336
+  #define I2CPE_DEF_EC_METHOD       I2CPE_ECM_NONE
1337
+  #define I2CPE_DEF_EC_THRESH       0.1
1338
+
1339
+  //#define I2CPE_ERR_THRESH_ABORT  100.0                   // Threshold size for error (in mm) error on any given
1340
+                                                            // axis after which the printer will abort. Comment out to
1341
+                                                            // disable abort behaviour.
1342
+
1343
+  #define I2CPE_TIME_TRUSTED        10000                   // After an encoder fault, there must be no further fault
1344
+                                                            // for this amount of time (in ms) before the encoder
1345
+                                                            // is trusted again.
1346
+
1347
+  /**
1348
+   * Position is checked every time a new command is executed from the buffer but during long moves,
1349
+   * this setting determines the minimum update time between checks. A value of 100 works well with
1350
+   * error rolling average when attempting to correct only for skips and not for vibration.
1351
+   */
1352
+  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1353
+
1354
+  // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1355
+  #define I2CPE_ERR_ROLLING_AVERAGE
1356
+
1357
+#endif // I2C_POSITION_ENCODERS
1358
+
1262 1359
 #endif // CONFIGURATION_ADV_H

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

@@ -58,15 +58,15 @@
58 58
 //===========================================================================
59 59
 //============================= DELTA Printer ===============================
60 60
 //===========================================================================
61
-// For Delta printers start with one of the configuration files in the
61
+// For a Delta printer start with one of the configuration files in the
62 62
 // example_configurations/delta directory and customize for your machine.
63 63
 //
64 64
 
65 65
 //===========================================================================
66 66
 //============================= SCARA Printer ===============================
67 67
 //===========================================================================
68
-// For a Scara printer replace the configuration files with the files in the
69
-// example_configurations/SCARA directory.
68
+// For a SCARA printer start with the configuration files in
69
+// example_configurations/SCARA and customize for your machine.
70 70
 //
71 71
 
72 72
 // @section info
@@ -138,6 +138,25 @@
138 138
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
139 139
 //#define SINGLENOZZLE
140 140
 
141
+/**
142
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
143
+ *
144
+ * This device allows one stepper driver on a control board to drive
145
+ * two to eight stepper motors, one at a time, in a manner suitable
146
+ * for extruders.
147
+ *
148
+ * This option only allows the multiplexer to switch on tool-change.
149
+ * Additional options to configure custom E moves are pending.
150
+ */
151
+//#define MK2_MULTIPLEXER
152
+#if ENABLED(MK2_MULTIPLEXER)
153
+  // Override the default DIO selector pins here, if needed.
154
+  // Some pins files may provide defaults for these pins.
155
+  //#define E_MUX0_PIN 40  // Always Required
156
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
157
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
158
+#endif
159
+
141 160
 // A dual extruder that uses a single stepper motor
142 161
 //#define SWITCHING_EXTRUDER
143 162
 #if ENABLED(SWITCHING_EXTRUDER)
@@ -442,54 +461,51 @@
442 461
   // and processor overload (too many expensive sqrt calls).
443 462
   #define DELTA_SEGMENTS_PER_SECOND 160
444 463
 
445
-  // Center-to-center distance of the holes in the diagonal push rods.
446
-  #define DELTA_DIAGONAL_ROD 218.0 // mm
447
-
448
-  // Horizontal offset from middle of printer to smooth rod center.
449
-  #define DELTA_SMOOTH_ROD_OFFSET 150.0 // mm
450
-
451
-  // Horizontal offset of the universal joints on the end effector.
452
-  #define DELTA_EFFECTOR_OFFSET 24.0 // mm
453
-
454
-  // Horizontal offset of the universal joints on the carriages.
455
-  #define DELTA_CARRIAGE_OFFSET 22.0 // mm
456
-
457
-  // Horizontal distance bridged by diagonal push rods when effector is centered.
458
-  #define DELTA_RADIUS (DELTA_SMOOTH_ROD_OFFSET - DELTA_EFFECTOR_OFFSET - DELTA_CARRIAGE_OFFSET) //mm  Get this value from auto calibrate
459
-
460
-  // height from z=0.00 to home position
461
-  #define DELTA_HEIGHT 280 // get this value from auto calibrate - use G33 P1 at 1st time calibration
462
-
463
-  // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers).
464
-  #define DELTA_PRINTABLE_RADIUS 85.0
464
+  // After homing move down to a height where XY movement is unconstrained
465
+  //#define DELTA_HOME_TO_SAFE_ZONE
465 466
 
466 467
   // Delta calibration menu
467 468
   // uncomment to add three points calibration menu option.
468 469
   // See http://minow.blogspot.com/index.html#4918805519571907051
469 470
   //#define DELTA_CALIBRATION_MENU
470 471
 
471
-  // set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS*0.869 if DELTA_AUTO_CALIBRATION enabled
472
-  #define DELTA_CALIBRATION_RADIUS ((DELTA_PRINTABLE_RADIUS) * 0.869) // mm
473
-
474
-  // G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results)
472
+  // uncomment to add G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results)
475 473
   //#define DELTA_AUTO_CALIBRATION
474
+
475
+  // NOTE NB all values for DELTA_* values MUST be floating point, so always have a decimal point in them
476
+
476 477
   #if ENABLED(DELTA_AUTO_CALIBRATION)
477
-    #define DELTA_CALIBRATION_DEFAULT_POINTS 3 // set the default number of probe points : n*n (-7 -> +7)
478
+    // set the default number of probe points : n*n (1 -> 7)
479
+    #define DELTA_CALIBRATION_DEFAULT_POINTS 4
478 480
   #endif
479 481
 
480
-  // After homing move down to a height where XY movement is unconstrained
481
-  //#define DELTA_HOME_TO_SAFE_ZONE
482
+  #if ENABLED(DELTA_AUTO_CALIBRATION) || ENABLED(DELTA_CALIBRATION_MENU)
483
+    // Set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS*0.869 for non-eccentric probes
484
+    #define DELTA_CALIBRATION_RADIUS 73.5 // mm
485
+  #endif
482 486
 
483
-  #define DELTA_ENDSTOP_ADJ { 0, 0, 0 } // get these from auto calibrate
487
+  // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers).
488
+  #define DELTA_PRINTABLE_RADIUS 85.0 // mm
484 489
 
490
+  // Center-to-center distance of the holes in the diagonal push rods.
491
+  #define DELTA_DIAGONAL_ROD 218.0 // mm
492
+
493
+  // height from z=0 to home position
494
+  #define DELTA_HEIGHT 280.00 // get this value from auto calibrate
495
+
496
+  #define DELTA_ENDSTOP_ADJ { 0.0, 0.0, 0.0 } // get these from auto calibrate
497
+
498
+  // Horizontal distance bridged by diagonal push rods when effector is centered.
499
+  #define DELTA_RADIUS 101.0 //mm  Get this value from auto calibrate
500
+  
485 501
   // Trim adjustments for individual towers
486 502
   // tower angle corrections for X and Y tower / rotate XYZ so Z tower angle = 0
487 503
   // measured in degrees anticlockwise looking from above the printer
488
-  #define DELTA_TOWER_ANGLE_TRIM { 0, 0, 0 } // get these from auto calibrate
504
+  #define DELTA_TOWER_ANGLE_TRIM { 0.0, 0.0, 0.0 } // get these values from auto calibrate
489 505
 
490 506
   // delta radius and diaginal rod adjustments measured in mm
491
-  //#define DELTA_RADIUS_TRIM_TOWER {0, 0, 0}
492
-  //#define DELTA_DIAGONAL_ROD_TRIM_TOWER {0, 0, 0}
507
+  //#define DELTA_RADIUS_TRIM_TOWER { 0.0, 0.0, 0.0 }
508
+  //#define DELTA_DIAGONAL_ROD_TRIM_TOWER { 0.0, 0.0, 0.0 }
493 509
 
494 510
 #endif
495 511
 
@@ -640,7 +656,6 @@
640 656
  *
641 657
  */
642 658
 //#define Z_MIN_PROBE_ENDSTOP  // A3K leave disabled!
643
-//#define Z_MIN_PROBE_PIN Z_MAX_PIN
644 659
 
645 660
 /**
646 661
  * Probe Type
@@ -1001,12 +1016,16 @@
1001 1016
   #define UBL_MESH_INSET 1          // Mesh inset margin on print area
1002 1017
   #define GRID_MAX_POINTS_X 10      // Don't use more than 15 points per axis, implementation limited.
1003 1018
   #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
1004
-  #define UBL_PROBE_PT_1_X 39       // These set the probe locations for when UBL does a 3-Point leveling
1005
-  #define UBL_PROBE_PT_1_Y 180      // of the mesh.
1006
-  #define UBL_PROBE_PT_2_X 39
1007
-  #define UBL_PROBE_PT_2_Y 20
1008
-  #define UBL_PROBE_PT_3_X 180
1009
-  #define UBL_PROBE_PT_3_Y 20
1019
+
1020
+  #define _PX(R,A) (R) * cos(RADIANS(A))
1021
+  #define _PY(R,A) (R) * sin(RADIANS(A))
1022
+  #define UBL_PROBE_PT_1_X _PX(DELTA_PROBEABLE_RADIUS, 0)   // Probing points for 3-Point leveling of the mesh
1023
+  #define UBL_PROBE_PT_1_Y _PY(DELTA_PROBEABLE_RADIUS, 0)
1024
+  #define UBL_PROBE_PT_2_X _PX(DELTA_PROBEABLE_RADIUS, 120)
1025
+  #define UBL_PROBE_PT_2_Y _PY(DELTA_PROBEABLE_RADIUS, 120)
1026
+  #define UBL_PROBE_PT_3_X _PX(DELTA_PROBEABLE_RADIUS, 240)
1027
+  #define UBL_PROBE_PT_3_Y _PY(DELTA_PROBEABLE_RADIUS, 240)
1028
+
1010 1029
   #define UBL_G26_MESH_VALIDATION   // Enable G26 mesh validation
1011 1030
   #define UBL_MESH_EDIT_MOVES_Z     // Sophisticated users prefer no movement of nozzle
1012 1031
 
@@ -1061,6 +1080,7 @@
1061 1080
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
1062 1081
 // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
1063 1082
 // - Prevent Z homing when the Z probe is outside bed area.
1083
+//
1064 1084
 //#define Z_SAFE_HOMING
1065 1085
 
1066 1086
 #if ENABLED(Z_SAFE_HOMING)
@@ -1084,13 +1104,10 @@
1084 1104
 // M500 - stores parameters in EEPROM
1085 1105
 // M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).
1086 1106
 // M502 - reverts to the default "factory settings".  You still need to store them in EEPROM afterwards if you want to.
1087
-//define this to enable EEPROM support
1088
-#define EEPROM_SETTINGS
1089
-
1090
-#if ENABLED(EEPROM_SETTINGS)
1091
-  // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out:
1092
-  #define EEPROM_CHITCHAT // Please keep turned on if you can.
1093
-#endif
1107
+//
1108
+#define EEPROM_SETTINGS   // Enable for M500 and M501 commands
1109
+//#define DISABLE_M503    // Saves ~2700 bytes of PROGMEM. Disable for release!
1110
+#define EEPROM_CHITCHAT   // Give feedback on EEPROM commands. Disable to save PROGMEM.
1094 1111
 
1095 1112
 //
1096 1113
 // Host Keepalive
@@ -1249,10 +1266,11 @@
1249 1266
  *
1250 1267
  * Select the language to display on the LCD. These languages are available:
1251 1268
  *
1252
- *    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
1253
- *    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk, test
1269
+ *    en, an, bg, ca, cn, cz, cz_utf8, de, el, el-gr, es, eu, fi, fr, gl, hr,
1270
+ *    it, kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk,
1271
+ *    zh_CN, zh_TW, test
1254 1272
  *
1255
- * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'test':'TEST' }
1273
+ * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'cz_utf8':'Czech (UTF8)', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'zh_CN':'Chinese (Simplified)', 'zh_TW':'Chinese (Taiwan)', test':'TEST' }
1256 1274
  */
1257 1275
 #define LCD_LANGUAGE en
1258 1276
 
@@ -1401,12 +1419,6 @@
1401 1419
 //#define ULTIPANEL
1402 1420
 
1403 1421
 //
1404
-// Cartesio UI
1405
-// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1406
-//
1407
-//#define CARTESIO_UI
1408
-
1409
-//
1410 1422
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
1411 1423
 // http://reprap.org/wiki/PanelOne
1412 1424
 //
@@ -1489,6 +1501,27 @@
1489 1501
 //#define BQ_LCD_SMART_CONTROLLER
1490 1502
 
1491 1503
 //
1504
+// Cartesio UI
1505
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1506
+//
1507
+//#define CARTESIO_UI
1508
+
1509
+//
1510
+// ANET_10 Controller supported displays.
1511
+//
1512
+//#define ANET_KEYPAD_LCD         // Requires ADC_KEYPAD_PIN to be assigned to an analog pin.
1513
+                                  // This LCD is known to be susceptible to electrical interference
1514
+                                  // which scrambles the display.  Pressing any button clears it up.
1515
+//#define ANET_FULL_GRAPHICS_LCD  // Anet 128x64 full graphics lcd with rotary encoder as used on Anet A6
1516
+                                  // A clone of the RepRapDiscount full graphics display but with
1517
+                                  // different pins/wiring (see pins_ANET_10.h).
1518
+
1519
+//
1520
+// LCD for Melzi Card with Graphical LCD
1521
+//
1522
+//#define LCD_FOR_MELZI
1523
+
1524
+//
1492 1525
 // CONTROLLER TYPE: I2C
1493 1526
 //
1494 1527
 // Note: These controllers require the installation of Arduino's LiquidCrystal_I2C
@@ -1504,6 +1537,9 @@
1504 1537
 //
1505 1538
 // Sainsmart YW Robot (LCM1602) LCD Display
1506 1539
 //
1540
+// Note: This controller requires F.Malpartida's LiquidCrystal_I2C library
1541
+// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
1542
+//
1507 1543
 //#define LCD_I2C_SAINSMART_YWROBOT
1508 1544
 
1509 1545
 //
@@ -1535,6 +1571,11 @@
1535 1571
 //#define U8GLIB_SSD1306
1536 1572
 
1537 1573
 //
1574
+// TinyBoy2 128x64 OLED / Encoder Panel
1575
+//
1576
+//#define OLED_PANEL_TINYBOY2
1577
+
1578
+//
1538 1579
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1539 1580
 //
1540 1581
 //#define SAV_3DGLCD
@@ -1551,11 +1592,6 @@
1551 1592
 //
1552 1593
 //#define SAV_3DLCD
1553 1594
 
1554
-//
1555
-// TinyBoy2 128x64 OLED / Encoder Panel
1556
-//
1557
-//#define OLED_PANEL_TINYBOY2
1558
-
1559 1595
 //=============================================================================
1560 1596
 //=============================== Extra Features ==============================
1561 1597
 //=============================================================================
@@ -1594,12 +1630,15 @@
1594 1630
 // SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure
1595 1631
 //#define SF_ARC_FIX
1596 1632
 
1597
-// Support for the BariCUDA Paste Extruder.
1633
+// Support for the BariCUDA Paste Extruder
1598 1634
 //#define BARICUDA
1599 1635
 
1600
-//define BlinkM/CyzRgb Support
1636
+// Support for BlinkM/CyzRgb
1601 1637
 //#define BLINKM
1602 1638
 
1639
+// Support for PCA9632 PWM LED driver
1640
+//#define PCA9632
1641
+
1603 1642
 /**
1604 1643
  * RGB LED / LED Strip Control
1605 1644
  *
@@ -1637,7 +1676,7 @@
1637 1676
  *  - Change to green once print has finished
1638 1677
  *  - Turn off after the print has finished and the user has pushed a button
1639 1678
  */
1640
-#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED)
1679
+#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED) || ENABLED(PCA9632)
1641 1680
   #define PRINTER_EVENT_LEDS
1642 1681
 #endif
1643 1682
 

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

@@ -123,8 +123,8 @@
123 123
   #define AUTOTEMP_OLDWEIGHT 0.98
124 124
 #endif
125 125
 
126
-//Show Temperature ADC value
127
-//The M105 command return, besides traditional information, the ADC value read from temperature sensors.
126
+// Show Temperature ADC value
127
+// Enable for M105 to include ADC values read from temperature sensors.
128 128
 //#define SHOW_TEMP_ADC_VALUES
129 129
 
130 130
 /**
@@ -421,16 +421,16 @@
421 421
  *    M908 - BQ_ZUM_MEGA_3D, RAMBO, PRINTRBOARD_REVF, RIGIDBOARD_V2 & SCOOVO_X9H
422 422
  *    M909, M910 & LCD - only PRINTRBOARD_REVF & RIGIDBOARD_V2
423 423
  */
424
-//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps
425
-//#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
426
-//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 } // Default drive percent - X, Y, Z, E axis
424
+//#define PWM_MOTOR_CURRENT { 1300, 1300, 1250 }          // Values in milliamps
425
+//#define DIGIPOT_MOTOR_CURRENT { 135,135,135,135,135 }   // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
426
+//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 }    // Default drive percent - X, Y, Z, E axis
427 427
 
428 428
 // Uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro
429 429
 //#define DIGIPOT_I2C
430
-//#define DIGIPOT_MCP4018
430
+//#define DIGIPOT_MCP4018          // Requires library from https://github.com/stawel/SlowSoftI2CMaster
431 431
 #define DIGIPOT_I2C_NUM_CHANNELS 8 // 5DPRINT: 4     AZTEEG_X3_PRO: 8
432 432
 // Actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS
433
-#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0}  //  AZTEEG_X3_PRO
433
+#define DIGIPOT_I2C_MOTOR_CURRENTS { 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 }  //  AZTEEG_X3_PRO
434 434
 
435 435
 //===========================================================================
436 436
 //=============================Additional Features===========================
@@ -650,7 +650,7 @@
650 650
    *
651 651
    * Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
652 652
    *
653
-   * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
653
+   * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
654 654
    * Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
655 655
    */
656 656
   #define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
@@ -676,10 +676,16 @@
676 676
 
677 677
 // @section extras
678 678
 
679
-// Arc interpretation settings:
680
-#define ARC_SUPPORT  // Disabling this saves ~2738 bytes
681
-#define MM_PER_ARC_SEGMENT 1
682
-#define N_ARC_CORRECTION 25
679
+//
680
+// G2/G3 Arc Support
681
+//
682
+#define ARC_SUPPORT               // Disable this feature to save ~3226 bytes
683
+#if ENABLED(ARC_SUPPORT)
684
+  #define MM_PER_ARC_SEGMENT  1   // Length of each arc segment
685
+  #define N_ARC_CORRECTION   25   // Number of intertpolated segments between corrections
686
+  //#define ARC_P_CIRCLES         // Enable the 'P' parameter to specify complete circles
687
+  //#define CNC_WORKSPACE_PLANES  // Allow G2/G3 to operate in XY, ZX, or YZ planes
688
+#endif
683 689
 
684 690
 // Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
685 691
 //#define BEZIER_CURVE_SUPPORT
@@ -804,6 +810,7 @@
804 810
   #define PAUSE_PARK_NO_STEPPER_TIMEOUT       // Enable to have stepper motors hold position during filament change
805 811
                                               // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
806 812
   //#define PARK_HEAD_ON_PAUSE                // Go to filament change position on pause, return to print position on resume
813
+  //#define HOME_BEFORE_FILAMENT_CHANGE       // Ensure homing has been completed prior to parking for filament change
807 814
 #endif
808 815
 
809 816
 // @section tmc
@@ -1196,12 +1203,12 @@
1196 1203
 /**
1197 1204
  * Auto-report temperatures with M155 S<seconds>
1198 1205
  */
1199
-//#define AUTO_REPORT_TEMPERATURES
1206
+#define AUTO_REPORT_TEMPERATURES
1200 1207
 
1201 1208
 /**
1202 1209
  * Include capabilities in M115 output
1203 1210
  */
1204
-//#define EXTENDED_CAPABILITIES_REPORT
1211
+#define EXTENDED_CAPABILITIES_REPORT
1205 1212
 
1206 1213
 /**
1207 1214
  * Volumetric extrusion default state
@@ -1258,4 +1265,94 @@
1258 1265
   #define USER_GCODE_5 "G28\nM503"
1259 1266
 #endif
1260 1267
 
1268
+/**
1269
+ * Specify an action command to send to the host when the printer is killed.
1270
+ * Will be sent in the form '//action:ACTION_ON_KILL', e.g. '//action:poweroff'.
1271
+ * The host must be configured to handle the action command.
1272
+ */
1273
+//#define ACTION_ON_KILL "poweroff"
1274
+
1275
+//===========================================================================
1276
+//====================== I2C Position Encoder Settings ======================
1277
+//===========================================================================
1278
+/**
1279
+ *  I2C position encoders for closed loop control.
1280
+ *  Developed by Chris Barr at Aus3D.
1281
+ *
1282
+ *  Wiki: http://wiki.aus3d.com.au/Magnetic_Encoder
1283
+ *  Github: https://github.com/Aus3D/MagneticEncoder
1284
+ *
1285
+ *  Supplier: http://aus3d.com.au/magnetic-encoder-module
1286
+ *  Alternative Supplier: http://reliabuild3d.com/
1287
+ *
1288
+ *  Reilabuild encoders have been modified to improve reliability.
1289
+ */
1290
+
1291
+//#define I2C_POSITION_ENCODERS
1292
+#if ENABLED(I2C_POSITION_ENCODERS)
1293
+
1294
+  #define I2CPE_ENCODER_CNT         1                       // The number of encoders installed; max of 5
1295
+                                                            // encoders supported currently.
1296
+
1297
+  #define I2CPE_ENC_1_ADDR          I2CPE_PRESET_ADDR_X     // I2C address of the encoder. 30-200.
1298
+  #define I2CPE_ENC_1_AXIS          X_AXIS                  // Axis the encoder module is installed on.  <X|Y|Z|E>_AXIS.
1299
+  #define I2CPE_ENC_1_TYPE          I2CPE_ENC_TYPE_LINEAR   // Type of encoder:  I2CPE_ENC_TYPE_LINEAR -or-
1300
+                                                            // I2CPE_ENC_TYPE_ROTARY.
1301
+  #define I2CPE_ENC_1_TICKS_UNIT    2048                    // 1024 for magnetic strips with 2mm poles; 2048 for
1302
+                                                            // 1mm poles. For linear encoders this is ticks / mm,
1303
+                                                            // for rotary encoders this is ticks / revolution.
1304
+  //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1305
+                                                            // steps per full revolution (motor steps/rev * microstepping)
1306
+  //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1307
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1308
+  #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1309
+                                                            // printer will attempt to correct the error; errors
1310
+                                                            // smaller than this are ignored to minimize effects of
1311
+                                                            // measurement noise / latency (filter).
1312
+
1313
+  #define I2CPE_ENC_2_ADDR          I2CPE_PRESET_ADDR_Y     // Same as above, but for encoder 2.
1314
+  #define I2CPE_ENC_2_AXIS          Y_AXIS
1315
+  #define I2CPE_ENC_2_TYPE          I2CPE_ENC_TYPE_LINEAR
1316
+  #define I2CPE_ENC_2_TICKS_UNIT    2048
1317
+  //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1318
+  //#define I2CPE_ENC_2_INVERT
1319
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1320
+  #define I2CPE_ENC_2_EC_THRESH     0.10
1321
+
1322
+  #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
1323
+  #define I2CPE_ENC_3_AXIS          Z_AXIS                  // as above, or use defaults below.
1324
+
1325
+  #define I2CPE_ENC_4_ADDR          I2CPE_PRESET_ADDR_E     // Encoder 4.
1326
+  #define I2CPE_ENC_4_AXIS          E_AXIS
1327
+
1328
+  #define I2CPE_ENC_5_ADDR          34                      // Encoder 5.
1329
+  #define I2CPE_ENC_5_AXIS          E_AXIS
1330
+
1331
+  // Default settings for encoders which are enabled, but without settings configured above.
1332
+  #define I2CPE_DEF_TYPE            I2CPE_ENC_TYPE_LINEAR
1333
+  #define I2CPE_DEF_ENC_TICKS_UNIT  2048
1334
+  #define I2CPE_DEF_TICKS_REV       (16 * 200)
1335
+  #define I2CPE_DEF_EC_METHOD       I2CPE_ECM_NONE
1336
+  #define I2CPE_DEF_EC_THRESH       0.1
1337
+
1338
+  //#define I2CPE_ERR_THRESH_ABORT  100.0                   // Threshold size for error (in mm) error on any given
1339
+                                                            // axis after which the printer will abort. Comment out to
1340
+                                                            // disable abort behaviour.
1341
+
1342
+  #define I2CPE_TIME_TRUSTED        10000                   // After an encoder fault, there must be no further fault
1343
+                                                            // for this amount of time (in ms) before the encoder
1344
+                                                            // is trusted again.
1345
+
1346
+  /**
1347
+   * Position is checked every time a new command is executed from the buffer but during long moves,
1348
+   * this setting determines the minimum update time between checks. A value of 100 works well with
1349
+   * error rolling average when attempting to correct only for skips and not for vibration.
1350
+   */
1351
+  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1352
+
1353
+  // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1354
+  #define I2CPE_ERR_ROLLING_AVERAGE
1355
+
1356
+#endif // I2C_POSITION_ENCODERS
1357
+
1261 1358
 #endif // CONFIGURATION_ADV_H

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

@@ -58,15 +58,15 @@
58 58
 //===========================================================================
59 59
 //============================= DELTA Printer ===============================
60 60
 //===========================================================================
61
-// For Delta printers start with one of the configuration files in the
61
+// For a Delta printer start with one of the configuration files in the
62 62
 // example_configurations/delta directory and customize for your machine.
63 63
 //
64 64
 
65 65
 //===========================================================================
66 66
 //============================= SCARA Printer ===============================
67 67
 //===========================================================================
68
-// For a Scara printer replace the configuration files with the files in the
69
-// example_configurations/SCARA directory.
68
+// For a SCARA printer start with the configuration files in
69
+// example_configurations/SCARA and customize for your machine.
70 70
 //
71 71
 
72 72
 // @section info
@@ -138,6 +138,25 @@
138 138
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
139 139
 //#define SINGLENOZZLE
140 140
 
141
+/**
142
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
143
+ *
144
+ * This device allows one stepper driver on a control board to drive
145
+ * two to eight stepper motors, one at a time, in a manner suitable
146
+ * for extruders.
147
+ *
148
+ * This option only allows the multiplexer to switch on tool-change.
149
+ * Additional options to configure custom E moves are pending.
150
+ */
151
+//#define MK2_MULTIPLEXER
152
+#if ENABLED(MK2_MULTIPLEXER)
153
+  // Override the default DIO selector pins here, if needed.
154
+  // Some pins files may provide defaults for these pins.
155
+  //#define E_MUX0_PIN 40  // Always Required
156
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
157
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
158
+#endif
159
+
141 160
 // A dual extruder that uses a single stepper motor
142 161
 //#define SWITCHING_EXTRUDER
143 162
 #if ENABLED(SWITCHING_EXTRUDER)
@@ -432,53 +451,51 @@
432 451
   // and processor overload (too many expensive sqrt calls).
433 452
   #define DELTA_SEGMENTS_PER_SECOND 200
434 453
 
435
-  // Center-to-center distance of the holes in the diagonal push rods.
436
-  #define DELTA_DIAGONAL_ROD 250.0 // mm
437
-
438
-  // Horizontal offset from middle of printer to smooth rod center.
439
-  #define DELTA_SMOOTH_ROD_OFFSET 175.0 // mm
440
-
441
-  // Horizontal offset of the universal joints on the end effector.
442
-  #define DELTA_EFFECTOR_OFFSET 33.0 // mm
443
-
444
-  // Horizontal offset of the universal joints on the carriages.
445
-  #define DELTA_CARRIAGE_OFFSET 18.0 // mm
446
-
447
-  // Horizontal distance bridged by diagonal push rods when effector is centered.
448
-  #define DELTA_RADIUS (DELTA_SMOOTH_ROD_OFFSET - DELTA_EFFECTOR_OFFSET - DELTA_CARRIAGE_OFFSET) //mm  Get this value from auto calibrate
449
-
450
-  // height from z=0.00 to home position
451
-  #define DELTA_HEIGHT 250 // get this value from auto calibrate - use G33 P1 at 1st time calibration
452
-
453
-  // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers).
454
-  #define DELTA_PRINTABLE_RADIUS 140.0
454
+  // After homing move down to a height where XY movement is unconstrained
455
+  //#define DELTA_HOME_TO_SAFE_ZONE
455 456
 
456 457
   // Delta calibration menu
458
+  // uncomment to add three points calibration menu option.
457 459
   // See http://minow.blogspot.com/index.html#4918805519571907051
458 460
   //#define DELTA_CALIBRATION_MENU
459 461
 
460
-  // set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS*0.869 if DELTA_AUTO_CALIBRATION enabled
461
-  #define DELTA_CALIBRATION_RADIUS ((DELTA_PRINTABLE_RADIUS) * 0.869) // mm
462
-
463
-  // G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results)
462
+  // uncomment to add G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results)
464 463
   //#define DELTA_AUTO_CALIBRATION
464
+
465
+  // NOTE NB all values for DELTA_* values MUST be floating point, so always have a decimal point in them
466
+
465 467
   #if ENABLED(DELTA_AUTO_CALIBRATION)
466
-    #define DELTA_CALIBRATION_DEFAULT_POINTS 3 // set the default number of probe points : n*n (-7 -> +7)
468
+    // set the default number of probe points : n*n (1 -> 7)
469
+    #define DELTA_CALIBRATION_DEFAULT_POINTS 4
467 470
   #endif
468 471
 
469
-  // After homing move down to a height where XY movement is unconstrained
470
-  //#define DELTA_HOME_TO_SAFE_ZONE
472
+  #if ENABLED(DELTA_AUTO_CALIBRATION) || ENABLED(DELTA_CALIBRATION_MENU)
473
+    // Set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS*0.869 for non-eccentric probes
474
+    #define DELTA_CALIBRATION_RADIUS 121.5 // mm
475
+  #endif
471 476
 
472
-  #define DELTA_ENDSTOP_ADJ { 0, 0, 0 } // get these from auto calibrate
477
+  // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers).
478
+  #define DELTA_PRINTABLE_RADIUS 140.0 // mm
473 479
 
480
+  // Center-to-center distance of the holes in the diagonal push rods.
481
+  #define DELTA_DIAGONAL_ROD 250.0 // mm
482
+
483
+  // height from z=0 to home position
484
+  #define DELTA_HEIGHT 250.00 // get this value from auto calibrate
485
+
486
+  #define DELTA_ENDSTOP_ADJ { 0.0, 0.0, 0.0 } // get these from auto calibrate
487
+
488
+  // Horizontal distance bridged by diagonal push rods when effector is centered.
489
+  #define DELTA_RADIUS 124.0 //mm  Get this value from auto calibrate
490
+  
474 491
   // Trim adjustments for individual towers
475 492
   // tower angle corrections for X and Y tower / rotate XYZ so Z tower angle = 0
476 493
   // measured in degrees anticlockwise looking from above the printer
477
-  #define DELTA_TOWER_ANGLE_TRIM { 0, 0, 0 } // get these from auto calibrate
494
+  #define DELTA_TOWER_ANGLE_TRIM { 0.0, 0.0, 0.0 } // get these values from auto calibrate
478 495
 
479 496
   // delta radius and diaginal rod adjustments measured in mm
480
-  //#define DELTA_RADIUS_TRIM_TOWER {0, 0, 0}
481
-  //#define DELTA_DIAGONAL_ROD_TRIM_TOWER {0, 0, 0}
497
+  //#define DELTA_RADIUS_TRIM_TOWER { 0.0, 0.0, 0.0 }
498
+  //#define DELTA_DIAGONAL_ROD_TRIM_TOWER { 0.0, 0.0, 0.0 }
482 499
 
483 500
 #endif
484 501
 
@@ -629,7 +646,6 @@
629 646
  *
630 647
  */
631 648
 #define Z_MIN_PROBE_ENDSTOP
632
-//#define Z_MIN_PROBE_PIN Z_MAX_PIN
633 649
 
634 650
 /**
635 651
  * Probe Type
@@ -990,12 +1006,16 @@
990 1006
   #define UBL_MESH_INSET 1          // Mesh inset margin on print area
991 1007
   #define GRID_MAX_POINTS_X 10      // Don't use more than 15 points per axis, implementation limited.
992 1008
   #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
993
-  #define UBL_PROBE_PT_1_X 39       // These set the probe locations for when UBL does a 3-Point leveling
994
-  #define UBL_PROBE_PT_1_Y 180      // of the mesh.
995
-  #define UBL_PROBE_PT_2_X 39
996
-  #define UBL_PROBE_PT_2_Y 20
997
-  #define UBL_PROBE_PT_3_X 180
998
-  #define UBL_PROBE_PT_3_Y 20
1009
+
1010
+  #define _PX(R,A) (R) * cos(RADIANS(A))
1011
+  #define _PY(R,A) (R) * sin(RADIANS(A))
1012
+  #define UBL_PROBE_PT_1_X _PX(DELTA_PROBEABLE_RADIUS, 0)   // Probing points for 3-Point leveling of the mesh
1013
+  #define UBL_PROBE_PT_1_Y _PY(DELTA_PROBEABLE_RADIUS, 0)
1014
+  #define UBL_PROBE_PT_2_X _PX(DELTA_PROBEABLE_RADIUS, 120)
1015
+  #define UBL_PROBE_PT_2_Y _PY(DELTA_PROBEABLE_RADIUS, 120)
1016
+  #define UBL_PROBE_PT_3_X _PX(DELTA_PROBEABLE_RADIUS, 240)
1017
+  #define UBL_PROBE_PT_3_Y _PY(DELTA_PROBEABLE_RADIUS, 240)
1018
+
999 1019
   #define UBL_G26_MESH_VALIDATION   // Enable G26 mesh validation
1000 1020
   #define UBL_MESH_EDIT_MOVES_Z     // Sophisticated users prefer no movement of nozzle
1001 1021
 
@@ -1050,6 +1070,7 @@
1050 1070
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
1051 1071
 // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
1052 1072
 // - Prevent Z homing when the Z probe is outside bed area.
1073
+//
1053 1074
 //#define Z_SAFE_HOMING
1054 1075
 
1055 1076
 #if ENABLED(Z_SAFE_HOMING)
@@ -1073,13 +1094,10 @@
1073 1094
 // M500 - stores parameters in EEPROM
1074 1095
 // M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).
1075 1096
 // M502 - reverts to the default "factory settings".  You still need to store them in EEPROM afterwards if you want to.
1076
-//define this to enable EEPROM support
1077
-//#define EEPROM_SETTINGS
1078
-
1079
-#if ENABLED(EEPROM_SETTINGS)
1080
-  // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out:
1081
-  #define EEPROM_CHITCHAT // Please keep turned on if you can.
1082
-#endif
1097
+//
1098
+//#define EEPROM_SETTINGS // Enable for M500 and M501 commands
1099
+//#define DISABLE_M503    // Saves ~2700 bytes of PROGMEM. Disable for release!
1100
+#define EEPROM_CHITCHAT   // Give feedback on EEPROM commands. Disable to save PROGMEM.
1083 1101
 
1084 1102
 //
1085 1103
 // Host Keepalive
@@ -1238,10 +1256,11 @@
1238 1256
  *
1239 1257
  * Select the language to display on the LCD. These languages are available:
1240 1258
  *
1241
- *    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
1242
- *    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk, test
1259
+ *    en, an, bg, ca, cn, cz, cz_utf8, de, el, el-gr, es, eu, fi, fr, gl, hr,
1260
+ *    it, kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk,
1261
+ *    zh_CN, zh_TW, test
1243 1262
  *
1244
- * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'test':'TEST' }
1263
+ * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'cz_utf8':'Czech (UTF8)', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'zh_CN':'Chinese (Simplified)', 'zh_TW':'Chinese (Taiwan)', test':'TEST' }
1245 1264
  */
1246 1265
 #define LCD_LANGUAGE en
1247 1266
 
@@ -1390,12 +1409,6 @@
1390 1409
 //#define ULTIPANEL
1391 1410
 
1392 1411
 //
1393
-// Cartesio UI
1394
-// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1395
-//
1396
-//#define CARTESIO_UI
1397
-
1398
-//
1399 1412
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
1400 1413
 // http://reprap.org/wiki/PanelOne
1401 1414
 //
@@ -1478,6 +1491,27 @@
1478 1491
 //#define BQ_LCD_SMART_CONTROLLER
1479 1492
 
1480 1493
 //
1494
+// Cartesio UI
1495
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1496
+//
1497
+//#define CARTESIO_UI
1498
+
1499
+//
1500
+// ANET_10 Controller supported displays.
1501
+//
1502
+//#define ANET_KEYPAD_LCD         // Requires ADC_KEYPAD_PIN to be assigned to an analog pin.
1503
+                                  // This LCD is known to be susceptible to electrical interference
1504
+                                  // which scrambles the display.  Pressing any button clears it up.
1505
+//#define ANET_FULL_GRAPHICS_LCD  // Anet 128x64 full graphics lcd with rotary encoder as used on Anet A6
1506
+                                  // A clone of the RepRapDiscount full graphics display but with
1507
+                                  // different pins/wiring (see pins_ANET_10.h).
1508
+
1509
+//
1510
+// LCD for Melzi Card with Graphical LCD
1511
+//
1512
+//#define LCD_FOR_MELZI
1513
+
1514
+//
1481 1515
 // CONTROLLER TYPE: I2C
1482 1516
 //
1483 1517
 // Note: These controllers require the installation of Arduino's LiquidCrystal_I2C
@@ -1493,6 +1527,9 @@
1493 1527
 //
1494 1528
 // Sainsmart YW Robot (LCM1602) LCD Display
1495 1529
 //
1530
+// Note: This controller requires F.Malpartida's LiquidCrystal_I2C library
1531
+// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
1532
+//
1496 1533
 //#define LCD_I2C_SAINSMART_YWROBOT
1497 1534
 
1498 1535
 //
@@ -1524,6 +1561,11 @@
1524 1561
 //#define U8GLIB_SSD1306
1525 1562
 
1526 1563
 //
1564
+// TinyBoy2 128x64 OLED / Encoder Panel
1565
+//
1566
+//#define OLED_PANEL_TINYBOY2
1567
+
1568
+//
1527 1569
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1528 1570
 //
1529 1571
 //#define SAV_3DGLCD
@@ -1540,11 +1582,6 @@
1540 1582
 //
1541 1583
 //#define SAV_3DLCD
1542 1584
 
1543
-//
1544
-// TinyBoy2 128x64 OLED / Encoder Panel
1545
-//
1546
-//#define OLED_PANEL_TINYBOY2
1547
-
1548 1585
 //=============================================================================
1549 1586
 //=============================== Extra Features ==============================
1550 1587
 //=============================================================================
@@ -1583,12 +1620,15 @@
1583 1620
 // SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure
1584 1621
 //#define SF_ARC_FIX
1585 1622
 
1586
-// Support for the BariCUDA Paste Extruder.
1623
+// Support for the BariCUDA Paste Extruder
1587 1624
 //#define BARICUDA
1588 1625
 
1589
-//define BlinkM/CyzRgb Support
1626
+// Support for BlinkM/CyzRgb
1590 1627
 //#define BLINKM
1591 1628
 
1629
+// Support for PCA9632 PWM LED driver
1630
+//#define PCA9632
1631
+
1592 1632
 /**
1593 1633
  * RGB LED / LED Strip Control
1594 1634
  *
@@ -1626,7 +1666,7 @@
1626 1666
  *  - Change to green once print has finished
1627 1667
  *  - Turn off after the print has finished and the user has pushed a button
1628 1668
  */
1629
-#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED)
1669
+#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED) || ENABLED(PCA9632)
1630 1670
   #define PRINTER_EVENT_LEDS
1631 1671
 #endif
1632 1672
 

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

@@ -123,8 +123,8 @@
123 123
   #define AUTOTEMP_OLDWEIGHT 0.98
124 124
 #endif
125 125
 
126
-//Show Temperature ADC value
127
-//The M105 command return, besides traditional information, the ADC value read from temperature sensors.
126
+// Show Temperature ADC value
127
+// Enable for M105 to include ADC values read from temperature sensors.
128 128
 //#define SHOW_TEMP_ADC_VALUES
129 129
 
130 130
 /**
@@ -421,16 +421,16 @@
421 421
  *    M908 - BQ_ZUM_MEGA_3D, RAMBO, PRINTRBOARD_REVF, RIGIDBOARD_V2 & SCOOVO_X9H
422 422
  *    M909, M910 & LCD - only PRINTRBOARD_REVF & RIGIDBOARD_V2
423 423
  */
424
-//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps
425
-//#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
426
-//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 } // Default drive percent - X, Y, Z, E axis
424
+//#define PWM_MOTOR_CURRENT { 1300, 1300, 1250 }          // Values in milliamps
425
+//#define DIGIPOT_MOTOR_CURRENT { 135,135,135,135,135 }   // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
426
+//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 }    // Default drive percent - X, Y, Z, E axis
427 427
 
428 428
 // Uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro
429 429
 //#define DIGIPOT_I2C
430
-//#define DIGIPOT_MCP4018
430
+//#define DIGIPOT_MCP4018          // Requires library from https://github.com/stawel/SlowSoftI2CMaster
431 431
 #define DIGIPOT_I2C_NUM_CHANNELS 8 // 5DPRINT: 4     AZTEEG_X3_PRO: 8
432 432
 // Actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS
433
-#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0}  //  AZTEEG_X3_PRO
433
+#define DIGIPOT_I2C_MOTOR_CURRENTS { 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 }  //  AZTEEG_X3_PRO
434 434
 
435 435
 //===========================================================================
436 436
 //=============================Additional Features===========================
@@ -647,7 +647,7 @@
647 647
    *
648 648
    * Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
649 649
    *
650
-   * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
650
+   * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
651 651
    * Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
652 652
    */
653 653
   #define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
@@ -673,10 +673,16 @@
673 673
 
674 674
 // @section extras
675 675
 
676
-// Arc interpretation settings:
677
-#define ARC_SUPPORT  // Disabling this saves ~2738 bytes
678
-#define MM_PER_ARC_SEGMENT 1
679
-#define N_ARC_CORRECTION 25
676
+//
677
+// G2/G3 Arc Support
678
+//
679
+#define ARC_SUPPORT               // Disable this feature to save ~3226 bytes
680
+#if ENABLED(ARC_SUPPORT)
681
+  #define MM_PER_ARC_SEGMENT  1   // Length of each arc segment
682
+  #define N_ARC_CORRECTION   25   // Number of intertpolated segments between corrections
683
+  //#define ARC_P_CIRCLES         // Enable the 'P' parameter to specify complete circles
684
+  //#define CNC_WORKSPACE_PLANES  // Allow G2/G3 to operate in XY, ZX, or YZ planes
685
+#endif
680 686
 
681 687
 // Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
682 688
 //#define BEZIER_CURVE_SUPPORT
@@ -802,6 +808,7 @@
802 808
   #define PAUSE_PARK_NO_STEPPER_TIMEOUT       // Enable to have stepper motors hold position during filament change
803 809
                                               // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
804 810
   //#define PARK_HEAD_ON_PAUSE                // Go to filament change position on pause, return to print position on resume
811
+  //#define HOME_BEFORE_FILAMENT_CHANGE       // Ensure homing has been completed prior to parking for filament change
805 812
 #endif
806 813
 
807 814
 // @section tmc
@@ -1194,12 +1201,12 @@
1194 1201
 /**
1195 1202
  * Auto-report temperatures with M155 S<seconds>
1196 1203
  */
1197
-//#define AUTO_REPORT_TEMPERATURES
1204
+#define AUTO_REPORT_TEMPERATURES
1198 1205
 
1199 1206
 /**
1200 1207
  * Include capabilities in M115 output
1201 1208
  */
1202
-//#define EXTENDED_CAPABILITIES_REPORT
1209
+#define EXTENDED_CAPABILITIES_REPORT
1203 1210
 
1204 1211
 /**
1205 1212
  * Volumetric extrusion default state
@@ -1256,4 +1263,94 @@
1256 1263
   #define USER_GCODE_5 "G28\nM503"
1257 1264
 #endif
1258 1265
 
1266
+/**
1267
+ * Specify an action command to send to the host when the printer is killed.
1268
+ * Will be sent in the form '//action:ACTION_ON_KILL', e.g. '//action:poweroff'.
1269
+ * The host must be configured to handle the action command.
1270
+ */
1271
+//#define ACTION_ON_KILL "poweroff"
1272
+
1273
+//===========================================================================
1274
+//====================== I2C Position Encoder Settings ======================
1275
+//===========================================================================
1276
+/**
1277
+ *  I2C position encoders for closed loop control.
1278
+ *  Developed by Chris Barr at Aus3D.
1279
+ *
1280
+ *  Wiki: http://wiki.aus3d.com.au/Magnetic_Encoder
1281
+ *  Github: https://github.com/Aus3D/MagneticEncoder
1282
+ *
1283
+ *  Supplier: http://aus3d.com.au/magnetic-encoder-module
1284
+ *  Alternative Supplier: http://reliabuild3d.com/
1285
+ *
1286
+ *  Reilabuild encoders have been modified to improve reliability.
1287
+ */
1288
+
1289
+//#define I2C_POSITION_ENCODERS
1290
+#if ENABLED(I2C_POSITION_ENCODERS)
1291
+
1292
+  #define I2CPE_ENCODER_CNT         1                       // The number of encoders installed; max of 5
1293
+                                                            // encoders supported currently.
1294
+
1295
+  #define I2CPE_ENC_1_ADDR          I2CPE_PRESET_ADDR_X     // I2C address of the encoder. 30-200.
1296
+  #define I2CPE_ENC_1_AXIS          X_AXIS                  // Axis the encoder module is installed on.  <X|Y|Z|E>_AXIS.
1297
+  #define I2CPE_ENC_1_TYPE          I2CPE_ENC_TYPE_LINEAR   // Type of encoder:  I2CPE_ENC_TYPE_LINEAR -or-
1298
+                                                            // I2CPE_ENC_TYPE_ROTARY.
1299
+  #define I2CPE_ENC_1_TICKS_UNIT    2048                    // 1024 for magnetic strips with 2mm poles; 2048 for
1300
+                                                            // 1mm poles. For linear encoders this is ticks / mm,
1301
+                                                            // for rotary encoders this is ticks / revolution.
1302
+  //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1303
+                                                            // steps per full revolution (motor steps/rev * microstepping)
1304
+  //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1305
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1306
+  #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1307
+                                                            // printer will attempt to correct the error; errors
1308
+                                                            // smaller than this are ignored to minimize effects of
1309
+                                                            // measurement noise / latency (filter).
1310
+
1311
+  #define I2CPE_ENC_2_ADDR          I2CPE_PRESET_ADDR_Y     // Same as above, but for encoder 2.
1312
+  #define I2CPE_ENC_2_AXIS          Y_AXIS
1313
+  #define I2CPE_ENC_2_TYPE          I2CPE_ENC_TYPE_LINEAR
1314
+  #define I2CPE_ENC_2_TICKS_UNIT    2048
1315
+  //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1316
+  //#define I2CPE_ENC_2_INVERT
1317
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1318
+  #define I2CPE_ENC_2_EC_THRESH     0.10
1319
+
1320
+  #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
1321
+  #define I2CPE_ENC_3_AXIS          Z_AXIS                  // as above, or use defaults below.
1322
+
1323
+  #define I2CPE_ENC_4_ADDR          I2CPE_PRESET_ADDR_E     // Encoder 4.
1324
+  #define I2CPE_ENC_4_AXIS          E_AXIS
1325
+
1326
+  #define I2CPE_ENC_5_ADDR          34                      // Encoder 5.
1327
+  #define I2CPE_ENC_5_AXIS          E_AXIS
1328
+
1329
+  // Default settings for encoders which are enabled, but without settings configured above.
1330
+  #define I2CPE_DEF_TYPE            I2CPE_ENC_TYPE_LINEAR
1331
+  #define I2CPE_DEF_ENC_TICKS_UNIT  2048
1332
+  #define I2CPE_DEF_TICKS_REV       (16 * 200)
1333
+  #define I2CPE_DEF_EC_METHOD       I2CPE_ECM_NONE
1334
+  #define I2CPE_DEF_EC_THRESH       0.1
1335
+
1336
+  //#define I2CPE_ERR_THRESH_ABORT  100.0                   // Threshold size for error (in mm) error on any given
1337
+                                                            // axis after which the printer will abort. Comment out to
1338
+                                                            // disable abort behaviour.
1339
+
1340
+  #define I2CPE_TIME_TRUSTED        10000                   // After an encoder fault, there must be no further fault
1341
+                                                            // for this amount of time (in ms) before the encoder
1342
+                                                            // is trusted again.
1343
+
1344
+  /**
1345
+   * Position is checked every time a new command is executed from the buffer but during long moves,
1346
+   * this setting determines the minimum update time between checks. A value of 100 works well with
1347
+   * error rolling average when attempting to correct only for skips and not for vibration.
1348
+   */
1349
+  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1350
+
1351
+  // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1352
+  #define I2CPE_ERR_ROLLING_AVERAGE
1353
+
1354
+#endif // I2C_POSITION_ENCODERS
1355
+
1259 1356
 #endif // CONFIGURATION_ADV_H

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

@@ -58,15 +58,15 @@
58 58
 //===========================================================================
59 59
 //============================= DELTA Printer ===============================
60 60
 //===========================================================================
61
-// For Delta printers start with one of the configuration files in the
61
+// For a Delta printer start with one of the configuration files in the
62 62
 // example_configurations/delta directory and customize for your machine.
63 63
 //
64 64
 
65 65
 //===========================================================================
66 66
 //============================= SCARA Printer ===============================
67 67
 //===========================================================================
68
-// For a Scara printer replace the configuration files with the files in the
69
-// example_configurations/SCARA directory.
68
+// For a SCARA printer start with the configuration files in
69
+// example_configurations/SCARA and customize for your machine.
70 70
 //
71 71
 
72 72
 // @section info
@@ -138,6 +138,25 @@
138 138
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
139 139
 //#define SINGLENOZZLE
140 140
 
141
+/**
142
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
143
+ *
144
+ * This device allows one stepper driver on a control board to drive
145
+ * two to eight stepper motors, one at a time, in a manner suitable
146
+ * for extruders.
147
+ *
148
+ * This option only allows the multiplexer to switch on tool-change.
149
+ * Additional options to configure custom E moves are pending.
150
+ */
151
+//#define MK2_MULTIPLEXER
152
+#if ENABLED(MK2_MULTIPLEXER)
153
+  // Override the default DIO selector pins here, if needed.
154
+  // Some pins files may provide defaults for these pins.
155
+  //#define E_MUX0_PIN 40  // Always Required
156
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
157
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
158
+#endif
159
+
141 160
 // A dual extruder that uses a single stepper motor
142 161
 //#define SWITCHING_EXTRUDER
143 162
 #if ENABLED(SWITCHING_EXTRUDER)
@@ -432,53 +451,51 @@
432 451
   // and processor overload (too many expensive sqrt calls).
433 452
   #define DELTA_SEGMENTS_PER_SECOND 200
434 453
 
435
-  // Center-to-center distance of the holes in the diagonal push rods.
436
-  #define DELTA_DIAGONAL_ROD 215.0 // mm
437
-
438
-  // Horizontal offset from middle of printer to smooth rod center.
439
-  #define DELTA_SMOOTH_ROD_OFFSET 145.0 // mm
440
-
441
-  // Horizontal offset of the universal joints on the end effector.
442
-  #define DELTA_EFFECTOR_OFFSET 19.9 // mm
443
-
444
-  // Horizontal offset of the universal joints on the carriages.
445
-  #define DELTA_CARRIAGE_OFFSET 19.5 // mm
446
-
447
-  // Horizontal distance bridged by diagonal push rods when effector is centered.
448
-  #define DELTA_RADIUS (DELTA_SMOOTH_ROD_OFFSET - DELTA_EFFECTOR_OFFSET - DELTA_CARRIAGE_OFFSET) //mm  Get this value from auto calibrate
449
-
450
-  // height from z=0.00 to home position
451
-  #define DELTA_HEIGHT 250 // get this value from auto calibrate - use G33 P1 at 1st time calibration
452
-
453
-  // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers).
454
-  #define DELTA_PRINTABLE_RADIUS 90.0
454
+  // After homing move down to a height where XY movement is unconstrained
455
+  //#define DELTA_HOME_TO_SAFE_ZONE
455 456
 
456 457
   // Delta calibration menu
458
+  // uncomment to add three points calibration menu option.
457 459
   // See http://minow.blogspot.com/index.html#4918805519571907051
458 460
   //#define DELTA_CALIBRATION_MENU
459 461
 
460
-  // set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS*0.869 if DELTA_AUTO_CALIBRATION enabled
461
-  #define DELTA_CALIBRATION_RADIUS ((DELTA_PRINTABLE_RADIUS) * 0.869) // mm
462
-
463
-  // G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results)
462
+  // uncomment to add G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results)
464 463
   //#define DELTA_AUTO_CALIBRATION
464
+
465
+  // NOTE NB all values for DELTA_* values MUST be floating point, so always have a decimal point in them
466
+
465 467
   #if ENABLED(DELTA_AUTO_CALIBRATION)
466
-    #define DELTA_CALIBRATION_DEFAULT_POINTS 3 // set the default number of probe points : n*n (-7 -> +7)
468
+    // set the default number of probe points : n*n (1 -> 7)
469
+    #define DELTA_CALIBRATION_DEFAULT_POINTS 4
467 470
   #endif
468 471
 
469
-  // After homing move down to a height where XY movement is unconstrained
470
-  //#define DELTA_HOME_TO_SAFE_ZONE
472
+  #if ENABLED(DELTA_AUTO_CALIBRATION) || ENABLED(DELTA_CALIBRATION_MENU)
473
+    // Set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS*0.869 for non-eccentric probes
474
+    #define DELTA_CALIBRATION_RADIUS 78.0 // mm
475
+  #endif
471 476
 
472
-  #define DELTA_ENDSTOP_ADJ { 0, 0, 0 } // get these from auto calibrate
477
+  // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers).
478
+  #define DELTA_PRINTABLE_RADIUS 90.0 // mm
473 479
 
480
+  // Center-to-center distance of the holes in the diagonal push rods.
481
+  #define DELTA_DIAGONAL_ROD 215.0 // mm
482
+
483
+  // height from z=0 to home position
484
+  #define DELTA_HEIGHT 250.00 // get this value from auto calibrate
485
+
486
+  #define DELTA_ENDSTOP_ADJ { 0.0, 0.0, 0.0 } // get these from auto calibrate
487
+
488
+  // Horizontal distance bridged by diagonal push rods when effector is centered.
489
+  #define DELTA_RADIUS 105.2 //mm  Get this value from auto calibrate
490
+  
474 491
   // Trim adjustments for individual towers
475 492
   // tower angle corrections for X and Y tower / rotate XYZ so Z tower angle = 0
476 493
   // measured in degrees anticlockwise looking from above the printer
477
-  #define DELTA_TOWER_ANGLE_TRIM { 0, 0, 0 } // get these from auto calibrate
494
+  #define DELTA_TOWER_ANGLE_TRIM { 0.0, 0.0, 0.0 } // get these values from auto calibrate
478 495
 
479 496
   // delta radius and diaginal rod adjustments measured in mm
480
-  //#define DELTA_RADIUS_TRIM_TOWER {0, 0, 0}
481
-  //#define DELTA_DIAGONAL_ROD_TRIM_TOWER {0, 0, 0}
497
+  //#define DELTA_RADIUS_TRIM_TOWER { 0.0, 0.0, 0.0 }
498
+  //#define DELTA_DIAGONAL_ROD_TRIM_TOWER { 0.0, 0.0, 0.0 }
482 499
 
483 500
 #endif
484 501
 
@@ -629,7 +646,6 @@
629 646
  *
630 647
  */
631 648
 //#define Z_MIN_PROBE_ENDSTOP
632
-//#define Z_MIN_PROBE_PIN Z_MAX_PIN
633 649
 
634 650
 /**
635 651
  * Probe Type
@@ -993,12 +1009,16 @@
993 1009
   #define UBL_MESH_INSET 1          // Mesh inset margin on print area
994 1010
   #define GRID_MAX_POINTS_X 10      // Don't use more than 15 points per axis, implementation limited.
995 1011
   #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
996
-  #define UBL_PROBE_PT_1_X 39       // These set the probe locations for when UBL does a 3-Point leveling
997
-  #define UBL_PROBE_PT_1_Y 180      // of the mesh.
998
-  #define UBL_PROBE_PT_2_X 39
999
-  #define UBL_PROBE_PT_2_Y 20
1000
-  #define UBL_PROBE_PT_3_X 180
1001
-  #define UBL_PROBE_PT_3_Y 20
1012
+
1013
+  #define _PX(R,A) (R) * cos(RADIANS(A))
1014
+  #define _PY(R,A) (R) * sin(RADIANS(A))
1015
+  #define UBL_PROBE_PT_1_X _PX(DELTA_PROBEABLE_RADIUS, 0)   // Probing points for 3-Point leveling of the mesh
1016
+  #define UBL_PROBE_PT_1_Y _PY(DELTA_PROBEABLE_RADIUS, 0)
1017
+  #define UBL_PROBE_PT_2_X _PX(DELTA_PROBEABLE_RADIUS, 120)
1018
+  #define UBL_PROBE_PT_2_Y _PY(DELTA_PROBEABLE_RADIUS, 120)
1019
+  #define UBL_PROBE_PT_3_X _PX(DELTA_PROBEABLE_RADIUS, 240)
1020
+  #define UBL_PROBE_PT_3_Y _PY(DELTA_PROBEABLE_RADIUS, 240)
1021
+
1002 1022
   #define UBL_G26_MESH_VALIDATION   // Enable G26 mesh validation
1003 1023
   #define UBL_MESH_EDIT_MOVES_Z     // Sophisticated users prefer no movement of nozzle
1004 1024
 
@@ -1053,6 +1073,7 @@
1053 1073
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
1054 1074
 // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
1055 1075
 // - Prevent Z homing when the Z probe is outside bed area.
1076
+//
1056 1077
 //#define Z_SAFE_HOMING
1057 1078
 
1058 1079
 #if ENABLED(Z_SAFE_HOMING)
@@ -1076,13 +1097,10 @@
1076 1097
 // M500 - stores parameters in EEPROM
1077 1098
 // M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).
1078 1099
 // M502 - reverts to the default "factory settings".  You still need to store them in EEPROM afterwards if you want to.
1079
-//define this to enable EEPROM support
1080
-//#define EEPROM_SETTINGS
1081
-
1082
-#if ENABLED(EEPROM_SETTINGS)
1083
-  // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out:
1084
-  #define EEPROM_CHITCHAT // Please keep turned on if you can.
1085
-#endif
1100
+//
1101
+//#define EEPROM_SETTINGS // Enable for M500 and M501 commands
1102
+//#define DISABLE_M503    // Saves ~2700 bytes of PROGMEM. Disable for release!
1103
+#define EEPROM_CHITCHAT   // Give feedback on EEPROM commands. Disable to save PROGMEM.
1086 1104
 
1087 1105
 //
1088 1106
 // Host Keepalive
@@ -1241,10 +1259,11 @@
1241 1259
  *
1242 1260
  * Select the language to display on the LCD. These languages are available:
1243 1261
  *
1244
- *    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
1245
- *    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk, test
1262
+ *    en, an, bg, ca, cn, cz, cz_utf8, de, el, el-gr, es, eu, fi, fr, gl, hr,
1263
+ *    it, kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk,
1264
+ *    zh_CN, zh_TW, test
1246 1265
  *
1247
- * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'test':'TEST' }
1266
+ * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'cz_utf8':'Czech (UTF8)', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'zh_CN':'Chinese (Simplified)', 'zh_TW':'Chinese (Taiwan)', test':'TEST' }
1248 1267
  */
1249 1268
 #define LCD_LANGUAGE en
1250 1269
 
@@ -1393,12 +1412,6 @@
1393 1412
 //#define ULTIPANEL
1394 1413
 
1395 1414
 //
1396
-// Cartesio UI
1397
-// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1398
-//
1399
-//#define CARTESIO_UI
1400
-
1401
-//
1402 1415
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
1403 1416
 // http://reprap.org/wiki/PanelOne
1404 1417
 //
@@ -1481,6 +1494,27 @@
1481 1494
 //#define BQ_LCD_SMART_CONTROLLER
1482 1495
 
1483 1496
 //
1497
+// Cartesio UI
1498
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1499
+//
1500
+//#define CARTESIO_UI
1501
+
1502
+//
1503
+// ANET_10 Controller supported displays.
1504
+//
1505
+//#define ANET_KEYPAD_LCD         // Requires ADC_KEYPAD_PIN to be assigned to an analog pin.
1506
+                                  // This LCD is known to be susceptible to electrical interference
1507
+                                  // which scrambles the display.  Pressing any button clears it up.
1508
+//#define ANET_FULL_GRAPHICS_LCD  // Anet 128x64 full graphics lcd with rotary encoder as used on Anet A6
1509
+                                  // A clone of the RepRapDiscount full graphics display but with
1510
+                                  // different pins/wiring (see pins_ANET_10.h).
1511
+
1512
+//
1513
+// LCD for Melzi Card with Graphical LCD
1514
+//
1515
+//#define LCD_FOR_MELZI
1516
+
1517
+//
1484 1518
 // CONTROLLER TYPE: I2C
1485 1519
 //
1486 1520
 // Note: These controllers require the installation of Arduino's LiquidCrystal_I2C
@@ -1496,6 +1530,9 @@
1496 1530
 //
1497 1531
 // Sainsmart YW Robot (LCM1602) LCD Display
1498 1532
 //
1533
+// Note: This controller requires F.Malpartida's LiquidCrystal_I2C library
1534
+// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
1535
+//
1499 1536
 //#define LCD_I2C_SAINSMART_YWROBOT
1500 1537
 
1501 1538
 //
@@ -1527,6 +1564,11 @@
1527 1564
 //#define U8GLIB_SSD1306
1528 1565
 
1529 1566
 //
1567
+// TinyBoy2 128x64 OLED / Encoder Panel
1568
+//
1569
+//#define OLED_PANEL_TINYBOY2
1570
+
1571
+//
1530 1572
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1531 1573
 //
1532 1574
 //#define SAV_3DGLCD
@@ -1543,11 +1585,6 @@
1543 1585
 //
1544 1586
 //#define SAV_3DLCD
1545 1587
 
1546
-//
1547
-// TinyBoy2 128x64 OLED / Encoder Panel
1548
-//
1549
-//#define OLED_PANEL_TINYBOY2
1550
-
1551 1588
 //=============================================================================
1552 1589
 //=============================== Extra Features ==============================
1553 1590
 //=============================================================================
@@ -1586,12 +1623,15 @@
1586 1623
 // SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure
1587 1624
 //#define SF_ARC_FIX
1588 1625
 
1589
-// Support for the BariCUDA Paste Extruder.
1626
+// Support for the BariCUDA Paste Extruder
1590 1627
 //#define BARICUDA
1591 1628
 
1592
-//define BlinkM/CyzRgb Support
1629
+// Support for BlinkM/CyzRgb
1593 1630
 //#define BLINKM
1594 1631
 
1632
+// Support for PCA9632 PWM LED driver
1633
+//#define PCA9632
1634
+
1595 1635
 /**
1596 1636
  * RGB LED / LED Strip Control
1597 1637
  *
@@ -1629,7 +1669,7 @@
1629 1669
  *  - Change to green once print has finished
1630 1670
  *  - Turn off after the print has finished and the user has pushed a button
1631 1671
  */
1632
-#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED)
1672
+#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED) || ENABLED(PCA9632)
1633 1673
   #define PRINTER_EVENT_LEDS
1634 1674
 #endif
1635 1675
 

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

@@ -123,8 +123,8 @@
123 123
   #define AUTOTEMP_OLDWEIGHT 0.98
124 124
 #endif
125 125
 
126
-//Show Temperature ADC value
127
-//The M105 command return, besides traditional information, the ADC value read from temperature sensors.
126
+// Show Temperature ADC value
127
+// Enable for M105 to include ADC values read from temperature sensors.
128 128
 //#define SHOW_TEMP_ADC_VALUES
129 129
 
130 130
 /**
@@ -421,16 +421,16 @@
421 421
  *    M908 - BQ_ZUM_MEGA_3D, RAMBO, PRINTRBOARD_REVF, RIGIDBOARD_V2 & SCOOVO_X9H
422 422
  *    M909, M910 & LCD - only PRINTRBOARD_REVF & RIGIDBOARD_V2
423 423
  */
424
-//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps
425
-//#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
426
-//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 } // Default drive percent - X, Y, Z, E axis
424
+//#define PWM_MOTOR_CURRENT { 1300, 1300, 1250 }          // Values in milliamps
425
+//#define DIGIPOT_MOTOR_CURRENT { 135,135,135,135,135 }   // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
426
+//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 }    // Default drive percent - X, Y, Z, E axis
427 427
 
428 428
 // Uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro
429 429
 //#define DIGIPOT_I2C
430
-//#define DIGIPOT_MCP4018
430
+//#define DIGIPOT_MCP4018          // Requires library from https://github.com/stawel/SlowSoftI2CMaster
431 431
 #define DIGIPOT_I2C_NUM_CHANNELS 8 // 5DPRINT: 4     AZTEEG_X3_PRO: 8
432 432
 // Actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS
433
-#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0}  //  AZTEEG_X3_PRO
433
+#define DIGIPOT_I2C_MOTOR_CURRENTS { 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 }  //  AZTEEG_X3_PRO
434 434
 
435 435
 //===========================================================================
436 436
 //=============================Additional Features===========================
@@ -647,7 +647,7 @@
647 647
    *
648 648
    * Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
649 649
    *
650
-   * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
650
+   * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
651 651
    * Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
652 652
    */
653 653
   #define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
@@ -673,10 +673,16 @@
673 673
 
674 674
 // @section extras
675 675
 
676
-// Arc interpretation settings:
677
-#define ARC_SUPPORT  // Disabling this saves ~2738 bytes
678
-#define MM_PER_ARC_SEGMENT 1
679
-#define N_ARC_CORRECTION 25
676
+//
677
+// G2/G3 Arc Support
678
+//
679
+#define ARC_SUPPORT               // Disable this feature to save ~3226 bytes
680
+#if ENABLED(ARC_SUPPORT)
681
+  #define MM_PER_ARC_SEGMENT  1   // Length of each arc segment
682
+  #define N_ARC_CORRECTION   25   // Number of intertpolated segments between corrections
683
+  //#define ARC_P_CIRCLES         // Enable the 'P' parameter to specify complete circles
684
+  //#define CNC_WORKSPACE_PLANES  // Allow G2/G3 to operate in XY, ZX, or YZ planes
685
+#endif
680 686
 
681 687
 // Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
682 688
 //#define BEZIER_CURVE_SUPPORT
@@ -802,6 +808,7 @@
802 808
   #define PAUSE_PARK_NO_STEPPER_TIMEOUT       // Enable to have stepper motors hold position during filament change
803 809
                                               // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
804 810
   //#define PARK_HEAD_ON_PAUSE                // Go to filament change position on pause, return to print position on resume
811
+  //#define HOME_BEFORE_FILAMENT_CHANGE       // Ensure homing has been completed prior to parking for filament change
805 812
 #endif
806 813
 
807 814
 // @section tmc
@@ -1194,12 +1201,12 @@
1194 1201
 /**
1195 1202
  * Auto-report temperatures with M155 S<seconds>
1196 1203
  */
1197
-//#define AUTO_REPORT_TEMPERATURES
1204
+#define AUTO_REPORT_TEMPERATURES
1198 1205
 
1199 1206
 /**
1200 1207
  * Include capabilities in M115 output
1201 1208
  */
1202
-//#define EXTENDED_CAPABILITIES_REPORT
1209
+#define EXTENDED_CAPABILITIES_REPORT
1203 1210
 
1204 1211
 /**
1205 1212
  * Volumetric extrusion default state
@@ -1256,4 +1263,94 @@
1256 1263
   #define USER_GCODE_5 "G28\nM503"
1257 1264
 #endif
1258 1265
 
1266
+/**
1267
+ * Specify an action command to send to the host when the printer is killed.
1268
+ * Will be sent in the form '//action:ACTION_ON_KILL', e.g. '//action:poweroff'.
1269
+ * The host must be configured to handle the action command.
1270
+ */
1271
+//#define ACTION_ON_KILL "poweroff"
1272
+
1273
+//===========================================================================
1274
+//====================== I2C Position Encoder Settings ======================
1275
+//===========================================================================
1276
+/**
1277
+ *  I2C position encoders for closed loop control.
1278
+ *  Developed by Chris Barr at Aus3D.
1279
+ *
1280
+ *  Wiki: http://wiki.aus3d.com.au/Magnetic_Encoder
1281
+ *  Github: https://github.com/Aus3D/MagneticEncoder
1282
+ *
1283
+ *  Supplier: http://aus3d.com.au/magnetic-encoder-module
1284
+ *  Alternative Supplier: http://reliabuild3d.com/
1285
+ *
1286
+ *  Reilabuild encoders have been modified to improve reliability.
1287
+ */
1288
+
1289
+//#define I2C_POSITION_ENCODERS
1290
+#if ENABLED(I2C_POSITION_ENCODERS)
1291
+
1292
+  #define I2CPE_ENCODER_CNT         1                       // The number of encoders installed; max of 5
1293
+                                                            // encoders supported currently.
1294
+
1295
+  #define I2CPE_ENC_1_ADDR          I2CPE_PRESET_ADDR_X     // I2C address of the encoder. 30-200.
1296
+  #define I2CPE_ENC_1_AXIS          X_AXIS                  // Axis the encoder module is installed on.  <X|Y|Z|E>_AXIS.
1297
+  #define I2CPE_ENC_1_TYPE          I2CPE_ENC_TYPE_LINEAR   // Type of encoder:  I2CPE_ENC_TYPE_LINEAR -or-
1298
+                                                            // I2CPE_ENC_TYPE_ROTARY.
1299
+  #define I2CPE_ENC_1_TICKS_UNIT    2048                    // 1024 for magnetic strips with 2mm poles; 2048 for
1300
+                                                            // 1mm poles. For linear encoders this is ticks / mm,
1301
+                                                            // for rotary encoders this is ticks / revolution.
1302
+  //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1303
+                                                            // steps per full revolution (motor steps/rev * microstepping)
1304
+  //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1305
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1306
+  #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1307
+                                                            // printer will attempt to correct the error; errors
1308
+                                                            // smaller than this are ignored to minimize effects of
1309
+                                                            // measurement noise / latency (filter).
1310
+
1311
+  #define I2CPE_ENC_2_ADDR          I2CPE_PRESET_ADDR_Y     // Same as above, but for encoder 2.
1312
+  #define I2CPE_ENC_2_AXIS          Y_AXIS
1313
+  #define I2CPE_ENC_2_TYPE          I2CPE_ENC_TYPE_LINEAR
1314
+  #define I2CPE_ENC_2_TICKS_UNIT    2048
1315
+  //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1316
+  //#define I2CPE_ENC_2_INVERT
1317
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1318
+  #define I2CPE_ENC_2_EC_THRESH     0.10
1319
+
1320
+  #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
1321
+  #define I2CPE_ENC_3_AXIS          Z_AXIS                  // as above, or use defaults below.
1322
+
1323
+  #define I2CPE_ENC_4_ADDR          I2CPE_PRESET_ADDR_E     // Encoder 4.
1324
+  #define I2CPE_ENC_4_AXIS          E_AXIS
1325
+
1326
+  #define I2CPE_ENC_5_ADDR          34                      // Encoder 5.
1327
+  #define I2CPE_ENC_5_AXIS          E_AXIS
1328
+
1329
+  // Default settings for encoders which are enabled, but without settings configured above.
1330
+  #define I2CPE_DEF_TYPE            I2CPE_ENC_TYPE_LINEAR
1331
+  #define I2CPE_DEF_ENC_TICKS_UNIT  2048
1332
+  #define I2CPE_DEF_TICKS_REV       (16 * 200)
1333
+  #define I2CPE_DEF_EC_METHOD       I2CPE_ECM_NONE
1334
+  #define I2CPE_DEF_EC_THRESH       0.1
1335
+
1336
+  //#define I2CPE_ERR_THRESH_ABORT  100.0                   // Threshold size for error (in mm) error on any given
1337
+                                                            // axis after which the printer will abort. Comment out to
1338
+                                                            // disable abort behaviour.
1339
+
1340
+  #define I2CPE_TIME_TRUSTED        10000                   // After an encoder fault, there must be no further fault
1341
+                                                            // for this amount of time (in ms) before the encoder
1342
+                                                            // is trusted again.
1343
+
1344
+  /**
1345
+   * Position is checked every time a new command is executed from the buffer but during long moves,
1346
+   * this setting determines the minimum update time between checks. A value of 100 works well with
1347
+   * error rolling average when attempting to correct only for skips and not for vibration.
1348
+   */
1349
+  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1350
+
1351
+  // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1352
+  #define I2CPE_ERR_ROLLING_AVERAGE
1353
+
1354
+#endif // I2C_POSITION_ENCODERS
1355
+
1259 1356
 #endif // CONFIGURATION_ADV_H

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

@@ -62,15 +62,15 @@
62 62
 //===========================================================================
63 63
 //============================= DELTA Printer ===============================
64 64
 //===========================================================================
65
-// For Delta printers start with one of the configuration files in the
65
+// For a Delta printer start with one of the configuration files in the
66 66
 // example_configurations/delta directory and customize for your machine.
67 67
 //
68 68
 
69 69
 //===========================================================================
70 70
 //============================= SCARA Printer ===============================
71 71
 //===========================================================================
72
-// For a Scara printer replace the configuration files with the files in the
73
-// example_configurations/SCARA directory.
72
+// For a SCARA printer start with the configuration files in
73
+// example_configurations/SCARA and customize for your machine.
74 74
 //
75 75
 
76 76
 // @section info
@@ -142,6 +142,25 @@
142 142
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
143 143
 //#define SINGLENOZZLE
144 144
 
145
+/**
146
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
147
+ *
148
+ * This device allows one stepper driver on a control board to drive
149
+ * two to eight stepper motors, one at a time, in a manner suitable
150
+ * for extruders.
151
+ *
152
+ * This option only allows the multiplexer to switch on tool-change.
153
+ * Additional options to configure custom E moves are pending.
154
+ */
155
+//#define MK2_MULTIPLEXER
156
+#if ENABLED(MK2_MULTIPLEXER)
157
+  // Override the default DIO selector pins here, if needed.
158
+  // Some pins files may provide defaults for these pins.
159
+  //#define E_MUX0_PIN 40  // Always Required
160
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
161
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
162
+#endif
163
+
145 164
 // A dual extruder that uses a single stepper motor
146 165
 //#define SWITCHING_EXTRUDER
147 166
 #if ENABLED(SWITCHING_EXTRUDER)
@@ -418,53 +437,51 @@
418 437
   // and processor overload (too many expensive sqrt calls).
419 438
   #define DELTA_SEGMENTS_PER_SECOND 160
420 439
 
421
-  // Center-to-center distance of the holes in the diagonal push rods.
422
-  #define DELTA_DIAGONAL_ROD 301.0 // mm
423
-
424
-  // Horizontal offset from middle of printer to smooth rod center.
425
-  #define DELTA_SMOOTH_ROD_OFFSET 212.357 // mm
426
-
427
-  // Horizontal offset of the universal joints on the end effector.
428
-  #define DELTA_EFFECTOR_OFFSET 30.0 // mm
429
-
430
-  // Horizontal offset of the universal joints on the carriages.
431
-  #define DELTA_CARRIAGE_OFFSET 30.0 // mm
432
-
433
-  // Horizontal distance bridged by diagonal push rods when effector is centered.
434
-  #define DELTA_RADIUS (DELTA_SMOOTH_ROD_OFFSET - DELTA_EFFECTOR_OFFSET - DELTA_CARRIAGE_OFFSET) //mm  Get this value from auto calibrate
435
-
436
-  // height from z=0.00 to home position
437
-  #define DELTA_HEIGHT 277 // get this value from auto calibrate - use G33 P1 at 1st time calibration
438
-
439
-  // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers).
440
-  #define DELTA_PRINTABLE_RADIUS 127.0
440
+  // After homing move down to a height where XY movement is unconstrained
441
+  //#define DELTA_HOME_TO_SAFE_ZONE
441 442
 
442 443
   // Delta calibration menu
444
+  // uncomment to add three points calibration menu option.
443 445
   // See http://minow.blogspot.com/index.html#4918805519571907051
444 446
   //#define DELTA_CALIBRATION_MENU
445 447
 
446
-  // set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS*0.869 if DELTA_AUTO_CALIBRATION enabled
447
-  #define DELTA_CALIBRATION_RADIUS ((DELTA_PRINTABLE_RADIUS) * 0.869) // mm
448
-
449
-  // G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results)
448
+  // uncomment to add G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results)
450 449
   //#define DELTA_AUTO_CALIBRATION
450
+
451
+  // NOTE NB all values for DELTA_* values MUST be floating point, so always have a decimal point in them
452
+
451 453
   #if ENABLED(DELTA_AUTO_CALIBRATION)
452
-    #define DELTA_CALIBRATION_DEFAULT_POINTS 3 // set the default number of probe points : n*n (-7 -> +7)
454
+    // set the default number of probe points : n*n (1 -> 7)
455
+    #define DELTA_CALIBRATION_DEFAULT_POINTS 4
453 456
   #endif
454 457
 
455
-  // After homing move down to a height where XY movement is unconstrained
456
-  //#define DELTA_HOME_TO_SAFE_ZONE
458
+  #if ENABLED(DELTA_AUTO_CALIBRATION) || ENABLED(DELTA_CALIBRATION_MENU)
459
+    // Set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS*0.869 for non-eccentric probes
460
+    #define DELTA_CALIBRATION_RADIUS 110.0 // mm
461
+  #endif
457 462
 
458
-  #define DELTA_ENDSTOP_ADJ { 0, 0, 0 } // get these from auto calibrate
463
+  // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers).
464
+  #define DELTA_PRINTABLE_RADIUS 127.0 // mm
459 465
 
466
+  // Center-to-center distance of the holes in the diagonal push rods.
467
+  #define DELTA_DIAGONAL_ROD 301.0 // mm
468
+
469
+  // height from z=0 to home position
470
+  #define DELTA_HEIGHT 277.00 // get this value from auto calibrate
471
+
472
+  #define DELTA_ENDSTOP_ADJ { 0.0, 0.0, 0.0 } // get these from auto calibrate
473
+
474
+  // Horizontal distance bridged by diagonal push rods when effector is centered.
475
+  #define DELTA_RADIUS 152.357 //mm  Get this value from auto calibrate
476
+  
460 477
   // Trim adjustments for individual towers
461 478
   // tower angle corrections for X and Y tower / rotate XYZ so Z tower angle = 0
462 479
   // measured in degrees anticlockwise looking from above the printer
463
-  #define DELTA_TOWER_ANGLE_TRIM { 0, 0, 0 } // get these from auto calibrate
480
+  #define DELTA_TOWER_ANGLE_TRIM { 0.0, 0.0, 0.0 } // get these values from auto calibrate
464 481
 
465 482
   // delta radius and diaginal rod adjustments measured in mm
466
-  //#define DELTA_RADIUS_TRIM_TOWER {0, 0, 0}
467
-  //#define DELTA_DIAGONAL_ROD_TRIM_TOWER {0, 0, 0}
483
+  //#define DELTA_RADIUS_TRIM_TOWER { 0.0, 0.0, 0.0 }
484
+  //#define DELTA_DIAGONAL_ROD_TRIM_TOWER { 0.0, 0.0, 0.0 }
468 485
 
469 486
 #endif
470 487
 
@@ -622,7 +639,6 @@
622 639
  *
623 640
  */
624 641
 //#define Z_MIN_PROBE_ENDSTOP
625
-//#define Z_MIN_PROBE_PIN Z_MAX_PIN
626 642
 
627 643
 /**
628 644
  * Probe Type
@@ -998,12 +1014,16 @@
998 1014
   #define UBL_MESH_INSET 1          // Mesh inset margin on print area
999 1015
   #define GRID_MAX_POINTS_X 10      // Don't use more than 15 points per axis, implementation limited.
1000 1016
   #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
1001
-  #define UBL_PROBE_PT_1_X 39       // These set the probe locations for when UBL does a 3-Point leveling
1002
-  #define UBL_PROBE_PT_1_Y 180      // of the mesh.
1003
-  #define UBL_PROBE_PT_2_X 39
1004
-  #define UBL_PROBE_PT_2_Y 20
1005
-  #define UBL_PROBE_PT_3_X 180
1006
-  #define UBL_PROBE_PT_3_Y 20
1017
+
1018
+  #define _PX(R,A) (R) * cos(RADIANS(A))
1019
+  #define _PY(R,A) (R) * sin(RADIANS(A))
1020
+  #define UBL_PROBE_PT_1_X _PX(DELTA_PROBEABLE_RADIUS, 0)   // Probing points for 3-Point leveling of the mesh
1021
+  #define UBL_PROBE_PT_1_Y _PY(DELTA_PROBEABLE_RADIUS, 0)
1022
+  #define UBL_PROBE_PT_2_X _PX(DELTA_PROBEABLE_RADIUS, 120)
1023
+  #define UBL_PROBE_PT_2_Y _PY(DELTA_PROBEABLE_RADIUS, 120)
1024
+  #define UBL_PROBE_PT_3_X _PX(DELTA_PROBEABLE_RADIUS, 240)
1025
+  #define UBL_PROBE_PT_3_Y _PY(DELTA_PROBEABLE_RADIUS, 240)
1026
+
1007 1027
   #define UBL_G26_MESH_VALIDATION   // Enable G26 mesh validation
1008 1028
   #define UBL_MESH_EDIT_MOVES_Z     // Sophisticated users prefer no movement of nozzle
1009 1029
 
@@ -1058,6 +1078,7 @@
1058 1078
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
1059 1079
 // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
1060 1080
 // - Prevent Z homing when the Z probe is outside bed area.
1081
+//
1061 1082
 #define Z_SAFE_HOMING
1062 1083
 
1063 1084
 #if ENABLED(Z_SAFE_HOMING)
@@ -1081,13 +1102,10 @@
1081 1102
 // M500 - stores parameters in EEPROM
1082 1103
 // M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).
1083 1104
 // M502 - reverts to the default "factory settings".  You still need to store them in EEPROM afterwards if you want to.
1084
-//define this to enable EEPROM support
1085
-//#define EEPROM_SETTINGS
1086
-
1087
-#if ENABLED(EEPROM_SETTINGS)
1088
-  // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out:
1089
-  #define EEPROM_CHITCHAT // Please keep turned on if you can.
1090
-#endif
1105
+//
1106
+//#define EEPROM_SETTINGS // Enable for M500 and M501 commands
1107
+//#define DISABLE_M503    // Saves ~2700 bytes of PROGMEM. Disable for release!
1108
+#define EEPROM_CHITCHAT   // Give feedback on EEPROM commands. Disable to save PROGMEM.
1091 1109
 
1092 1110
 //
1093 1111
 // Host Keepalive
@@ -1246,10 +1264,11 @@
1246 1264
  *
1247 1265
  * Select the language to display on the LCD. These languages are available:
1248 1266
  *
1249
- *    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
1250
- *    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk, test
1267
+ *    en, an, bg, ca, cn, cz, cz_utf8, de, el, el-gr, es, eu, fi, fr, gl, hr,
1268
+ *    it, kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk,
1269
+ *    zh_CN, zh_TW, test
1251 1270
  *
1252
- * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'test':'TEST' }
1271
+ * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'cz_utf8':'Czech (UTF8)', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'zh_CN':'Chinese (Simplified)', 'zh_TW':'Chinese (Taiwan)', test':'TEST' }
1253 1272
  */
1254 1273
 #define LCD_LANGUAGE en
1255 1274
 
@@ -1398,12 +1417,6 @@
1398 1417
 //#define ULTIPANEL
1399 1418
 
1400 1419
 //
1401
-// Cartesio UI
1402
-// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1403
-//
1404
-//#define CARTESIO_UI
1405
-
1406
-//
1407 1420
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
1408 1421
 // http://reprap.org/wiki/PanelOne
1409 1422
 //
@@ -1486,6 +1499,27 @@
1486 1499
 //#define BQ_LCD_SMART_CONTROLLER
1487 1500
 
1488 1501
 //
1502
+// Cartesio UI
1503
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1504
+//
1505
+//#define CARTESIO_UI
1506
+
1507
+//
1508
+// ANET_10 Controller supported displays.
1509
+//
1510
+//#define ANET_KEYPAD_LCD         // Requires ADC_KEYPAD_PIN to be assigned to an analog pin.
1511
+                                  // This LCD is known to be susceptible to electrical interference
1512
+                                  // which scrambles the display.  Pressing any button clears it up.
1513
+//#define ANET_FULL_GRAPHICS_LCD  // Anet 128x64 full graphics lcd with rotary encoder as used on Anet A6
1514
+                                  // A clone of the RepRapDiscount full graphics display but with
1515
+                                  // different pins/wiring (see pins_ANET_10.h).
1516
+
1517
+//
1518
+// LCD for Melzi Card with Graphical LCD
1519
+//
1520
+//#define LCD_FOR_MELZI
1521
+
1522
+//
1489 1523
 // CONTROLLER TYPE: I2C
1490 1524
 //
1491 1525
 // Note: These controllers require the installation of Arduino's LiquidCrystal_I2C
@@ -1501,6 +1535,9 @@
1501 1535
 //
1502 1536
 // Sainsmart YW Robot (LCM1602) LCD Display
1503 1537
 //
1538
+// Note: This controller requires F.Malpartida's LiquidCrystal_I2C library
1539
+// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
1540
+//
1504 1541
 //#define LCD_I2C_SAINSMART_YWROBOT
1505 1542
 
1506 1543
 //
@@ -1532,6 +1569,11 @@
1532 1569
 //#define U8GLIB_SSD1306
1533 1570
 
1534 1571
 //
1572
+// TinyBoy2 128x64 OLED / Encoder Panel
1573
+//
1574
+//#define OLED_PANEL_TINYBOY2
1575
+
1576
+//
1535 1577
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1536 1578
 //
1537 1579
 //#define SAV_3DGLCD
@@ -1548,11 +1590,6 @@
1548 1590
 //
1549 1591
 //#define SAV_3DLCD
1550 1592
 
1551
-//
1552
-// TinyBoy2 128x64 OLED / Encoder Panel
1553
-//
1554
-//#define OLED_PANEL_TINYBOY2
1555
-
1556 1593
 //=============================================================================
1557 1594
 //=============================== Extra Features ==============================
1558 1595
 //=============================================================================
@@ -1591,12 +1628,15 @@
1591 1628
 // SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure
1592 1629
 //#define SF_ARC_FIX
1593 1630
 
1594
-// Support for the BariCUDA Paste Extruder.
1631
+// Support for the BariCUDA Paste Extruder
1595 1632
 //#define BARICUDA
1596 1633
 
1597
-//define BlinkM/CyzRgb Support
1634
+// Support for BlinkM/CyzRgb
1598 1635
 //#define BLINKM
1599 1636
 
1637
+// Support for PCA9632 PWM LED driver
1638
+//#define PCA9632
1639
+
1600 1640
 /**
1601 1641
  * RGB LED / LED Strip Control
1602 1642
  *
@@ -1634,7 +1674,7 @@
1634 1674
  *  - Change to green once print has finished
1635 1675
  *  - Turn off after the print has finished and the user has pushed a button
1636 1676
  */
1637
-#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED)
1677
+#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED) || ENABLED(PCA9632)
1638 1678
   #define PRINTER_EVENT_LEDS
1639 1679
 #endif
1640 1680
 

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

@@ -128,8 +128,8 @@
128 128
   #define AUTOTEMP_OLDWEIGHT 0.98
129 129
 #endif
130 130
 
131
-//Show Temperature ADC value
132
-//The M105 command return, besides traditional information, the ADC value read from temperature sensors.
131
+// Show Temperature ADC value
132
+// Enable for M105 to include ADC values read from temperature sensors.
133 133
 //#define SHOW_TEMP_ADC_VALUES
134 134
 
135 135
 /**
@@ -426,16 +426,16 @@
426 426
  *    M908 - BQ_ZUM_MEGA_3D, RAMBO, PRINTRBOARD_REVF, RIGIDBOARD_V2 & SCOOVO_X9H
427 427
  *    M909, M910 & LCD - only PRINTRBOARD_REVF & RIGIDBOARD_V2
428 428
  */
429
-//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps
430
-//#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
431
-//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 } // Default drive percent - X, Y, Z, E axis
429
+//#define PWM_MOTOR_CURRENT { 1300, 1300, 1250 }          // Values in milliamps
430
+//#define DIGIPOT_MOTOR_CURRENT { 135,135,135,135,135 }   // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
431
+//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 }    // Default drive percent - X, Y, Z, E axis
432 432
 
433 433
 // Uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro
434 434
 //#define DIGIPOT_I2C
435
-//#define DIGIPOT_MCP4018
435
+//#define DIGIPOT_MCP4018          // Requires library from https://github.com/stawel/SlowSoftI2CMaster
436 436
 #define DIGIPOT_I2C_NUM_CHANNELS 8 // 5DPRINT: 4     AZTEEG_X3_PRO: 8
437 437
 // Actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS
438
-#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0}  //  AZTEEG_X3_PRO
438
+#define DIGIPOT_I2C_MOTOR_CURRENTS { 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 }  //  AZTEEG_X3_PRO
439 439
 
440 440
 //===========================================================================
441 441
 //=============================Additional Features===========================
@@ -652,7 +652,7 @@
652 652
    *
653 653
    * Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
654 654
    *
655
-   * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
655
+   * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
656 656
    * Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
657 657
    */
658 658
   #define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
@@ -678,10 +678,16 @@
678 678
 
679 679
 // @section extras
680 680
 
681
-// Arc interpretation settings:
682
-#define ARC_SUPPORT  // Disabling this saves ~2738 bytes
683
-#define MM_PER_ARC_SEGMENT 1
684
-#define N_ARC_CORRECTION 25
681
+//
682
+// G2/G3 Arc Support
683
+//
684
+#define ARC_SUPPORT               // Disable this feature to save ~3226 bytes
685
+#if ENABLED(ARC_SUPPORT)
686
+  #define MM_PER_ARC_SEGMENT  1   // Length of each arc segment
687
+  #define N_ARC_CORRECTION   25   // Number of intertpolated segments between corrections
688
+  //#define ARC_P_CIRCLES         // Enable the 'P' parameter to specify complete circles
689
+  //#define CNC_WORKSPACE_PLANES  // Allow G2/G3 to operate in XY, ZX, or YZ planes
690
+#endif
685 691
 
686 692
 // Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
687 693
 //#define BEZIER_CURVE_SUPPORT
@@ -807,6 +813,7 @@
807 813
   #define PAUSE_PARK_NO_STEPPER_TIMEOUT       // Enable to have stepper motors hold position during filament change
808 814
                                               // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
809 815
   //#define PARK_HEAD_ON_PAUSE                // Go to filament change position on pause, return to print position on resume
816
+  //#define HOME_BEFORE_FILAMENT_CHANGE       // Ensure homing has been completed prior to parking for filament change
810 817
 #endif
811 818
 
812 819
 // @section tmc
@@ -1199,12 +1206,12 @@
1199 1206
 /**
1200 1207
  * Auto-report temperatures with M155 S<seconds>
1201 1208
  */
1202
-//#define AUTO_REPORT_TEMPERATURES
1209
+#define AUTO_REPORT_TEMPERATURES
1203 1210
 
1204 1211
 /**
1205 1212
  * Include capabilities in M115 output
1206 1213
  */
1207
-//#define EXTENDED_CAPABILITIES_REPORT
1214
+#define EXTENDED_CAPABILITIES_REPORT
1208 1215
 
1209 1216
 /**
1210 1217
  * Volumetric extrusion default state
@@ -1261,4 +1268,94 @@
1261 1268
   #define USER_GCODE_5 "G28\nM503"
1262 1269
 #endif
1263 1270
 
1271
+/**
1272
+ * Specify an action command to send to the host when the printer is killed.
1273
+ * Will be sent in the form '//action:ACTION_ON_KILL', e.g. '//action:poweroff'.
1274
+ * The host must be configured to handle the action command.
1275
+ */
1276
+//#define ACTION_ON_KILL "poweroff"
1277
+
1278
+//===========================================================================
1279
+//====================== I2C Position Encoder Settings ======================
1280
+//===========================================================================
1281
+/**
1282
+ *  I2C position encoders for closed loop control.
1283
+ *  Developed by Chris Barr at Aus3D.
1284
+ *
1285
+ *  Wiki: http://wiki.aus3d.com.au/Magnetic_Encoder
1286
+ *  Github: https://github.com/Aus3D/MagneticEncoder
1287
+ *
1288
+ *  Supplier: http://aus3d.com.au/magnetic-encoder-module
1289
+ *  Alternative Supplier: http://reliabuild3d.com/
1290
+ *
1291
+ *  Reilabuild encoders have been modified to improve reliability.
1292
+ */
1293
+
1294
+//#define I2C_POSITION_ENCODERS
1295
+#if ENABLED(I2C_POSITION_ENCODERS)
1296
+
1297
+  #define I2CPE_ENCODER_CNT         1                       // The number of encoders installed; max of 5
1298
+                                                            // encoders supported currently.
1299
+
1300
+  #define I2CPE_ENC_1_ADDR          I2CPE_PRESET_ADDR_X     // I2C address of the encoder. 30-200.
1301
+  #define I2CPE_ENC_1_AXIS          X_AXIS                  // Axis the encoder module is installed on.  <X|Y|Z|E>_AXIS.
1302
+  #define I2CPE_ENC_1_TYPE          I2CPE_ENC_TYPE_LINEAR   // Type of encoder:  I2CPE_ENC_TYPE_LINEAR -or-
1303
+                                                            // I2CPE_ENC_TYPE_ROTARY.
1304
+  #define I2CPE_ENC_1_TICKS_UNIT    2048                    // 1024 for magnetic strips with 2mm poles; 2048 for
1305
+                                                            // 1mm poles. For linear encoders this is ticks / mm,
1306
+                                                            // for rotary encoders this is ticks / revolution.
1307
+  //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1308
+                                                            // steps per full revolution (motor steps/rev * microstepping)
1309
+  //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1310
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1311
+  #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1312
+                                                            // printer will attempt to correct the error; errors
1313
+                                                            // smaller than this are ignored to minimize effects of
1314
+                                                            // measurement noise / latency (filter).
1315
+
1316
+  #define I2CPE_ENC_2_ADDR          I2CPE_PRESET_ADDR_Y     // Same as above, but for encoder 2.
1317
+  #define I2CPE_ENC_2_AXIS          Y_AXIS
1318
+  #define I2CPE_ENC_2_TYPE          I2CPE_ENC_TYPE_LINEAR
1319
+  #define I2CPE_ENC_2_TICKS_UNIT    2048
1320
+  //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1321
+  //#define I2CPE_ENC_2_INVERT
1322
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1323
+  #define I2CPE_ENC_2_EC_THRESH     0.10
1324
+
1325
+  #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
1326
+  #define I2CPE_ENC_3_AXIS          Z_AXIS                  // as above, or use defaults below.
1327
+
1328
+  #define I2CPE_ENC_4_ADDR          I2CPE_PRESET_ADDR_E     // Encoder 4.
1329
+  #define I2CPE_ENC_4_AXIS          E_AXIS
1330
+
1331
+  #define I2CPE_ENC_5_ADDR          34                      // Encoder 5.
1332
+  #define I2CPE_ENC_5_AXIS          E_AXIS
1333
+
1334
+  // Default settings for encoders which are enabled, but without settings configured above.
1335
+  #define I2CPE_DEF_TYPE            I2CPE_ENC_TYPE_LINEAR
1336
+  #define I2CPE_DEF_ENC_TICKS_UNIT  2048
1337
+  #define I2CPE_DEF_TICKS_REV       (16 * 200)
1338
+  #define I2CPE_DEF_EC_METHOD       I2CPE_ECM_NONE
1339
+  #define I2CPE_DEF_EC_THRESH       0.1
1340
+
1341
+  //#define I2CPE_ERR_THRESH_ABORT  100.0                   // Threshold size for error (in mm) error on any given
1342
+                                                            // axis after which the printer will abort. Comment out to
1343
+                                                            // disable abort behaviour.
1344
+
1345
+  #define I2CPE_TIME_TRUSTED        10000                   // After an encoder fault, there must be no further fault
1346
+                                                            // for this amount of time (in ms) before the encoder
1347
+                                                            // is trusted again.
1348
+
1349
+  /**
1350
+   * Position is checked every time a new command is executed from the buffer but during long moves,
1351
+   * this setting determines the minimum update time between checks. A value of 100 works well with
1352
+   * error rolling average when attempting to correct only for skips and not for vibration.
1353
+   */
1354
+  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1355
+
1356
+  // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1357
+  #define I2CPE_ERR_ROLLING_AVERAGE
1358
+
1359
+#endif // I2C_POSITION_ENCODERS
1360
+
1264 1361
 #endif // CONFIGURATION_ADV_H

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

@@ -58,15 +58,15 @@
58 58
 //===========================================================================
59 59
 //============================= DELTA Printer ===============================
60 60
 //===========================================================================
61
-// For Delta printers start with one of the configuration files in the
61
+// For a Delta printer start with one of the configuration files in the
62 62
 // example_configurations/delta directory and customize for your machine.
63 63
 //
64 64
 
65 65
 //===========================================================================
66 66
 //============================= SCARA Printer ===============================
67 67
 //===========================================================================
68
-// For a Scara printer replace the configuration files with the files in the
69
-// example_configurations/SCARA directory.
68
+// For a SCARA printer start with the configuration files in
69
+// example_configurations/SCARA and customize for your machine.
70 70
 //
71 71
 
72 72
 // @section info
@@ -138,6 +138,25 @@
138 138
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
139 139
 //#define SINGLENOZZLE
140 140
 
141
+/**
142
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
143
+ *
144
+ * This device allows one stepper driver on a control board to drive
145
+ * two to eight stepper motors, one at a time, in a manner suitable
146
+ * for extruders.
147
+ *
148
+ * This option only allows the multiplexer to switch on tool-change.
149
+ * Additional options to configure custom E moves are pending.
150
+ */
151
+//#define MK2_MULTIPLEXER
152
+#if ENABLED(MK2_MULTIPLEXER)
153
+  // Override the default DIO selector pins here, if needed.
154
+  // Some pins files may provide defaults for these pins.
155
+  //#define E_MUX0_PIN 40  // Always Required
156
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
157
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
158
+#endif
159
+
141 160
 // A dual extruder that uses a single stepper motor
142 161
 //#define SWITCHING_EXTRUDER
143 162
 #if ENABLED(SWITCHING_EXTRUDER)
@@ -436,53 +455,51 @@
436 455
   // and processor overload (too many expensive sqrt calls).
437 456
   #define DELTA_SEGMENTS_PER_SECOND 160
438 457
 
439
-  // Center-to-center distance of the holes in the diagonal push rods.
440
-  #define DELTA_DIAGONAL_ROD 317.3 + 2.5 // mm
441
-
442
-  // Horizontal offset from middle of printer to smooth rod center.
443
-  #define DELTA_SMOOTH_ROD_OFFSET 220.1 // mm
444
-
445
-  // Horizontal offset of the universal joints on the end effector.
446
-  #define DELTA_EFFECTOR_OFFSET 24.0 // mm
447
-
448
-  // Horizontal offset of the universal joints on the carriages.
449
-  #define DELTA_CARRIAGE_OFFSET 22.0 // mm
450
-
451
-  // Horizontal distance bridged by diagonal push rods when effector is centered.
452
-  #define DELTA_RADIUS (DELTA_SMOOTH_ROD_OFFSET - DELTA_EFFECTOR_OFFSET - DELTA_CARRIAGE_OFFSET) //mm  Get this value from auto calibrate
453
-
454
-  // height from z=0.00 to home position
455
-  #define DELTA_HEIGHT 380 // get this value from auto calibrate - use G33 P1 at 1st time calibration
456
-
457
-  // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers).
458
-  #define DELTA_PRINTABLE_RADIUS 140.0
458
+  // After homing move down to a height where XY movement is unconstrained
459
+  //#define DELTA_HOME_TO_SAFE_ZONE
459 460
 
460 461
   // Delta calibration menu
462
+  // uncomment to add three points calibration menu option.
461 463
   // See http://minow.blogspot.com/index.html#4918805519571907051
462 464
   //#define DELTA_CALIBRATION_MENU
463 465
 
464
-  // set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS*0.869 if DELTA_AUTO_CALIBRATION enabled
465
-  #define DELTA_CALIBRATION_RADIUS ((DELTA_PRINTABLE_RADIUS) * 0.869) // mm
466
-
467
-  // G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results)
466
+  // uncomment to add G33 Delta Auto-Calibration (Enable EEPROM_SETTINGS to store results)
468 467
   //#define DELTA_AUTO_CALIBRATION
468
+
469
+  // NOTE NB all values for DELTA_* values MUST be floating point, so always have a decimal point in them
470
+
469 471
   #if ENABLED(DELTA_AUTO_CALIBRATION)
470
-    #define DELTA_CALIBRATION_DEFAULT_POINTS 3 // set the default number of probe points : n*n (-7 -> +7)
472
+    // set the default number of probe points : n*n (1 -> 7)
473
+    #define DELTA_CALIBRATION_DEFAULT_POINTS 4
471 474
   #endif
472 475
 
473
-  // After homing move down to a height where XY movement is unconstrained
474
-  //#define DELTA_HOME_TO_SAFE_ZONE
476
+  #if ENABLED(DELTA_AUTO_CALIBRATION) || ENABLED(DELTA_CALIBRATION_MENU)
477
+    // Set the radius for the calibration probe points - max DELTA_PRINTABLE_RADIUS*0.869 for non-eccentric probes
478
+    #define DELTA_CALIBRATION_RADIUS 121.5 // mm
479
+  #endif
480
+
481
+  // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers).
482
+  #define DELTA_PRINTABLE_RADIUS 140.0 // mm
475 483
 
476
-  #define DELTA_ENDSTOP_ADJ { 0, 0, 0 } // get these from auto calibrate
484
+  // Center-to-center distance of the holes in the diagonal push rods.
485
+  #define DELTA_DIAGONAL_ROD 319.5 // mm
486
+
487
+  // height from z=0 to home position
488
+  #define DELTA_HEIGHT 380.00 // get this value from auto calibrate
477 489
 
490
+  #define DELTA_ENDSTOP_ADJ { 0.0, 0.0, 0.0 } // get these from auto calibrate
491
+
492
+  // Horizontal distance bridged by diagonal push rods when effector is centered.
493
+  #define DELTA_RADIUS 174.1 //mm  Get this value from auto calibrate
494
+  
478 495
   // Trim adjustments for individual towers
479 496
   // tower angle corrections for X and Y tower / rotate XYZ so Z tower angle = 0
480 497
   // measured in degrees anticlockwise looking from above the printer
481
-  #define DELTA_TOWER_ANGLE_TRIM { 0, 0, 0 } // get these from auto calibrate
498
+  #define DELTA_TOWER_ANGLE_TRIM { 0.0, 0.0, 0.0 } // get these values from auto calibrate
482 499
 
483 500
   // delta radius and diaginal rod adjustments measured in mm
484
-  //#define DELTA_RADIUS_TRIM_TOWER {0, 0, 0}
485
-  //#define DELTA_DIAGONAL_ROD_TRIM_TOWER {0, 0, 0}
501
+  //#define DELTA_RADIUS_TRIM_TOWER { 0.0, 0.0, 0.0 }
502
+  //#define DELTA_DIAGONAL_ROD_TRIM_TOWER { 0.0, 0.0, 0.0 }
486 503
 
487 504
 #endif
488 505
 
@@ -641,7 +658,6 @@
641 658
  *
642 659
  */
643 660
 #define Z_MIN_PROBE_ENDSTOP
644
-//#define Z_MIN_PROBE_PIN Z_MAX_PIN
645 661
 
646 662
 /**
647 663
  * Probe Type
@@ -1056,12 +1072,16 @@
1056 1072
   #define UBL_MESH_INSET 1          // Mesh inset margin on print area
1057 1073
   #define GRID_MAX_POINTS_X 10      // Don't use more than 15 points per axis, implementation limited.
1058 1074
   #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
1059
-  #define UBL_PROBE_PT_1_X 39       // These set the probe locations for when UBL does a 3-Point leveling
1060
-  #define UBL_PROBE_PT_1_Y 180      // of the mesh.
1061
-  #define UBL_PROBE_PT_2_X 39
1062
-  #define UBL_PROBE_PT_2_Y 20
1063
-  #define UBL_PROBE_PT_3_X 180
1064
-  #define UBL_PROBE_PT_3_Y 20
1075
+
1076
+  #define _PX(R,A) (R) * cos(RADIANS(A))
1077
+  #define _PY(R,A) (R) * sin(RADIANS(A))
1078
+  #define UBL_PROBE_PT_1_X _PX(DELTA_PROBEABLE_RADIUS, 0)   // Probing points for 3-Point leveling of the mesh
1079
+  #define UBL_PROBE_PT_1_Y _PY(DELTA_PROBEABLE_RADIUS, 0)
1080
+  #define UBL_PROBE_PT_2_X _PX(DELTA_PROBEABLE_RADIUS, 120)
1081
+  #define UBL_PROBE_PT_2_Y _PY(DELTA_PROBEABLE_RADIUS, 120)
1082
+  #define UBL_PROBE_PT_3_X _PX(DELTA_PROBEABLE_RADIUS, 240)
1083
+  #define UBL_PROBE_PT_3_Y _PY(DELTA_PROBEABLE_RADIUS, 240)
1084
+
1065 1085
   #define UBL_G26_MESH_VALIDATION   // Enable G26 mesh validation
1066 1086
   #define UBL_MESH_EDIT_MOVES_Z     // Sophisticated users prefer no movement of nozzle
1067 1087
 
@@ -1116,6 +1136,7 @@
1116 1136
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
1117 1137
 // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
1118 1138
 // - Prevent Z homing when the Z probe is outside bed area.
1139
+//
1119 1140
 //#define Z_SAFE_HOMING
1120 1141
 
1121 1142
 #if ENABLED(Z_SAFE_HOMING)
@@ -1139,13 +1160,10 @@
1139 1160
 // M500 - stores parameters in EEPROM
1140 1161
 // M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).
1141 1162
 // M502 - reverts to the default "factory settings".  You still need to store them in EEPROM afterwards if you want to.
1142
-//define this to enable EEPROM support
1143
-#define EEPROM_SETTINGS
1144
-
1145
-#if ENABLED(EEPROM_SETTINGS)
1146
-  // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out:
1147
-  #define EEPROM_CHITCHAT // Please keep turned on if you can.
1148
-#endif
1163
+//
1164
+#define EEPROM_SETTINGS   // Enable for M500 and M501 commands
1165
+//#define DISABLE_M503    // Saves ~2700 bytes of PROGMEM. Disable for release!
1166
+#define EEPROM_CHITCHAT   // Give feedback on EEPROM commands. Disable to save PROGMEM.
1149 1167
 
1150 1168
 //
1151 1169
 // Host Keepalive
@@ -1304,10 +1322,11 @@
1304 1322
  *
1305 1323
  * Select the language to display on the LCD. These languages are available:
1306 1324
  *
1307
- *    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
1308
- *    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk, test
1325
+ *    en, an, bg, ca, cn, cz, cz_utf8, de, el, el-gr, es, eu, fi, fr, gl, hr,
1326
+ *    it, kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk,
1327
+ *    zh_CN, zh_TW, test
1309 1328
  *
1310
- * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'test':'TEST' }
1329
+ * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'cz_utf8':'Czech (UTF8)', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'zh_CN':'Chinese (Simplified)', 'zh_TW':'Chinese (Taiwan)', test':'TEST' }
1311 1330
  */
1312 1331
 #define LCD_LANGUAGE en
1313 1332
 
@@ -1456,12 +1475,6 @@
1456 1475
 //#define ULTIPANEL
1457 1476
 
1458 1477
 //
1459
-// Cartesio UI
1460
-// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1461
-//
1462
-//#define CARTESIO_UI
1463
-
1464
-//
1465 1478
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
1466 1479
 // http://reprap.org/wiki/PanelOne
1467 1480
 //
@@ -1544,6 +1557,27 @@
1544 1557
 //#define BQ_LCD_SMART_CONTROLLER
1545 1558
 
1546 1559
 //
1560
+// Cartesio UI
1561
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1562
+//
1563
+//#define CARTESIO_UI
1564
+
1565
+//
1566
+// ANET_10 Controller supported displays.
1567
+//
1568
+//#define ANET_KEYPAD_LCD         // Requires ADC_KEYPAD_PIN to be assigned to an analog pin.
1569
+                                  // This LCD is known to be susceptible to electrical interference
1570
+                                  // which scrambles the display.  Pressing any button clears it up.
1571
+//#define ANET_FULL_GRAPHICS_LCD  // Anet 128x64 full graphics lcd with rotary encoder as used on Anet A6
1572
+                                  // A clone of the RepRapDiscount full graphics display but with
1573
+                                  // different pins/wiring (see pins_ANET_10.h).
1574
+
1575
+//
1576
+// LCD for Melzi Card with Graphical LCD
1577
+//
1578
+//#define LCD_FOR_MELZI
1579
+
1580
+//
1547 1581
 // CONTROLLER TYPE: I2C
1548 1582
 //
1549 1583
 // Note: These controllers require the installation of Arduino's LiquidCrystal_I2C
@@ -1559,6 +1593,9 @@
1559 1593
 //
1560 1594
 // Sainsmart YW Robot (LCM1602) LCD Display
1561 1595
 //
1596
+// Note: This controller requires F.Malpartida's LiquidCrystal_I2C library
1597
+// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
1598
+//
1562 1599
 //#define LCD_I2C_SAINSMART_YWROBOT
1563 1600
 
1564 1601
 //
@@ -1590,6 +1627,11 @@
1590 1627
 //#define U8GLIB_SSD1306
1591 1628
 
1592 1629
 //
1630
+// TinyBoy2 128x64 OLED / Encoder Panel
1631
+//
1632
+//#define OLED_PANEL_TINYBOY2
1633
+
1634
+//
1593 1635
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1594 1636
 //
1595 1637
 //#define SAV_3DGLCD
@@ -1606,11 +1648,6 @@
1606 1648
 //
1607 1649
 //#define SAV_3DLCD
1608 1650
 
1609
-//
1610
-// TinyBoy2 128x64 OLED / Encoder Panel
1611
-//
1612
-//#define OLED_PANEL_TINYBOY2
1613
-
1614 1651
 //=============================================================================
1615 1652
 //=============================== Extra Features ==============================
1616 1653
 //=============================================================================
@@ -1649,12 +1686,15 @@
1649 1686
 // SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure
1650 1687
 //#define SF_ARC_FIX
1651 1688
 
1652
-// Support for the BariCUDA Paste Extruder.
1689
+// Support for the BariCUDA Paste Extruder
1653 1690
 //#define BARICUDA
1654 1691
 
1655
-//define BlinkM/CyzRgb Support
1692
+// Support for BlinkM/CyzRgb
1656 1693
 //#define BLINKM
1657 1694
 
1695
+// Support for PCA9632 PWM LED driver
1696
+//#define PCA9632
1697
+
1658 1698
 /**
1659 1699
  * RGB LED / LED Strip Control
1660 1700
  *
@@ -1692,7 +1732,7 @@
1692 1732
  *  - Change to green once print has finished
1693 1733
  *  - Turn off after the print has finished and the user has pushed a button
1694 1734
  */
1695
-#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED)
1735
+#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED) || ENABLED(PCA9632)
1696 1736
   #define PRINTER_EVENT_LEDS
1697 1737
 #endif
1698 1738
 

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

@@ -123,8 +123,8 @@
123 123
   #define AUTOTEMP_OLDWEIGHT 0.98
124 124
 #endif
125 125
 
126
-//Show Temperature ADC value
127
-//The M105 command return, besides traditional information, the ADC value read from temperature sensors.
126
+// Show Temperature ADC value
127
+// Enable for M105 to include ADC values read from temperature sensors.
128 128
 //#define SHOW_TEMP_ADC_VALUES
129 129
 
130 130
 /**
@@ -421,16 +421,16 @@
421 421
  *    M908 - BQ_ZUM_MEGA_3D, RAMBO, PRINTRBOARD_REVF, RIGIDBOARD_V2 & SCOOVO_X9H
422 422
  *    M909, M910 & LCD - only PRINTRBOARD_REVF & RIGIDBOARD_V2
423 423
  */
424
-//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps
425
-//#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
426
-//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 } // Default drive percent - X, Y, Z, E axis
424
+//#define PWM_MOTOR_CURRENT { 1300, 1300, 1250 }          // Values in milliamps
425
+//#define DIGIPOT_MOTOR_CURRENT { 135,135,135,135,135 }   // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
426
+//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 }    // Default drive percent - X, Y, Z, E axis
427 427
 
428 428
 // Uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro
429 429
 //#define DIGIPOT_I2C
430
-//#define DIGIPOT_MCP4018
430
+//#define DIGIPOT_MCP4018          // Requires library from https://github.com/stawel/SlowSoftI2CMaster
431 431
 #define DIGIPOT_I2C_NUM_CHANNELS 8 // 5DPRINT: 4     AZTEEG_X3_PRO: 8
432 432
 // Actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS
433
-#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0}  //  AZTEEG_X3_PRO
433
+#define DIGIPOT_I2C_MOTOR_CURRENTS { 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 }  //  AZTEEG_X3_PRO
434 434
 
435 435
 //===========================================================================
436 436
 //=============================Additional Features===========================
@@ -647,7 +647,7 @@
647 647
    *
648 648
    * Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
649 649
    *
650
-   * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
650
+   * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
651 651
    * Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
652 652
    */
653 653
   #define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
@@ -673,10 +673,16 @@
673 673
 
674 674
 // @section extras
675 675
 
676
-// Arc interpretation settings:
677
-#define ARC_SUPPORT  // Disabling this saves ~2738 bytes
678
-#define MM_PER_ARC_SEGMENT 1
679
-#define N_ARC_CORRECTION 25
676
+//
677
+// G2/G3 Arc Support
678
+//
679
+#define ARC_SUPPORT               // Disable this feature to save ~3226 bytes
680
+#if ENABLED(ARC_SUPPORT)
681
+  #define MM_PER_ARC_SEGMENT  1   // Length of each arc segment
682
+  #define N_ARC_CORRECTION   25   // Number of intertpolated segments between corrections
683
+  //#define ARC_P_CIRCLES         // Enable the 'P' parameter to specify complete circles
684
+  //#define CNC_WORKSPACE_PLANES  // Allow G2/G3 to operate in XY, ZX, or YZ planes
685
+#endif
680 686
 
681 687
 // Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
682 688
 //#define BEZIER_CURVE_SUPPORT
@@ -802,6 +808,7 @@
802 808
   #define PAUSE_PARK_NO_STEPPER_TIMEOUT       // Enable to have stepper motors hold position during filament change
803 809
                                               // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
804 810
   //#define PARK_HEAD_ON_PAUSE                // Go to filament change position on pause, return to print position on resume
811
+  //#define HOME_BEFORE_FILAMENT_CHANGE       // Ensure homing has been completed prior to parking for filament change
805 812
 #endif
806 813
 
807 814
 // @section tmc
@@ -1194,12 +1201,12 @@
1194 1201
 /**
1195 1202
  * Auto-report temperatures with M155 S<seconds>
1196 1203
  */
1197
-//#define AUTO_REPORT_TEMPERATURES
1204
+#define AUTO_REPORT_TEMPERATURES
1198 1205
 
1199 1206
 /**
1200 1207
  * Include capabilities in M115 output
1201 1208
  */
1202
-//#define EXTENDED_CAPABILITIES_REPORT
1209
+#define EXTENDED_CAPABILITIES_REPORT
1203 1210
 
1204 1211
 /**
1205 1212
  * Volumetric extrusion default state
@@ -1256,4 +1263,94 @@
1256 1263
   //#define USER_GCODE_5 "G28\nM503"
1257 1264
 #endif
1258 1265
 
1266
+/**
1267
+ * Specify an action command to send to the host when the printer is killed.
1268
+ * Will be sent in the form '//action:ACTION_ON_KILL', e.g. '//action:poweroff'.
1269
+ * The host must be configured to handle the action command.
1270
+ */
1271
+//#define ACTION_ON_KILL "poweroff"
1272
+
1273
+//===========================================================================
1274
+//====================== I2C Position Encoder Settings ======================
1275
+//===========================================================================
1276
+/**
1277
+ *  I2C position encoders for closed loop control.
1278
+ *  Developed by Chris Barr at Aus3D.
1279
+ *
1280
+ *  Wiki: http://wiki.aus3d.com.au/Magnetic_Encoder
1281
+ *  Github: https://github.com/Aus3D/MagneticEncoder
1282
+ *
1283
+ *  Supplier: http://aus3d.com.au/magnetic-encoder-module
1284
+ *  Alternative Supplier: http://reliabuild3d.com/
1285
+ *
1286
+ *  Reilabuild encoders have been modified to improve reliability.
1287
+ */
1288
+
1289
+//#define I2C_POSITION_ENCODERS
1290
+#if ENABLED(I2C_POSITION_ENCODERS)
1291
+
1292
+  #define I2CPE_ENCODER_CNT         1                       // The number of encoders installed; max of 5
1293
+                                                            // encoders supported currently.
1294
+
1295
+  #define I2CPE_ENC_1_ADDR          I2CPE_PRESET_ADDR_X     // I2C address of the encoder. 30-200.
1296
+  #define I2CPE_ENC_1_AXIS          X_AXIS                  // Axis the encoder module is installed on.  <X|Y|Z|E>_AXIS.
1297
+  #define I2CPE_ENC_1_TYPE          I2CPE_ENC_TYPE_LINEAR   // Type of encoder:  I2CPE_ENC_TYPE_LINEAR -or-
1298
+                                                            // I2CPE_ENC_TYPE_ROTARY.
1299
+  #define I2CPE_ENC_1_TICKS_UNIT    2048                    // 1024 for magnetic strips with 2mm poles; 2048 for
1300
+                                                            // 1mm poles. For linear encoders this is ticks / mm,
1301
+                                                            // for rotary encoders this is ticks / revolution.
1302
+  //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1303
+                                                            // steps per full revolution (motor steps/rev * microstepping)
1304
+  //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1305
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1306
+  #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1307
+                                                            // printer will attempt to correct the error; errors
1308
+                                                            // smaller than this are ignored to minimize effects of
1309
+                                                            // measurement noise / latency (filter).
1310
+
1311
+  #define I2CPE_ENC_2_ADDR          I2CPE_PRESET_ADDR_Y     // Same as above, but for encoder 2.
1312
+  #define I2CPE_ENC_2_AXIS          Y_AXIS
1313
+  #define I2CPE_ENC_2_TYPE          I2CPE_ENC_TYPE_LINEAR
1314
+  #define I2CPE_ENC_2_TICKS_UNIT    2048
1315
+  //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1316
+  //#define I2CPE_ENC_2_INVERT
1317
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1318
+  #define I2CPE_ENC_2_EC_THRESH     0.10
1319
+
1320
+  #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
1321
+  #define I2CPE_ENC_3_AXIS          Z_AXIS                  // as above, or use defaults below.
1322
+
1323
+  #define I2CPE_ENC_4_ADDR          I2CPE_PRESET_ADDR_E     // Encoder 4.
1324
+  #define I2CPE_ENC_4_AXIS          E_AXIS
1325
+
1326
+  #define I2CPE_ENC_5_ADDR          34                      // Encoder 5.
1327
+  #define I2CPE_ENC_5_AXIS          E_AXIS
1328
+
1329
+  // Default settings for encoders which are enabled, but without settings configured above.
1330
+  #define I2CPE_DEF_TYPE            I2CPE_ENC_TYPE_LINEAR
1331
+  #define I2CPE_DEF_ENC_TICKS_UNIT  2048
1332
+  #define I2CPE_DEF_TICKS_REV       (16 * 200)
1333
+  #define I2CPE_DEF_EC_METHOD       I2CPE_ECM_NONE
1334
+  #define I2CPE_DEF_EC_THRESH       0.1
1335
+
1336
+  //#define I2CPE_ERR_THRESH_ABORT  100.0                   // Threshold size for error (in mm) error on any given
1337
+                                                            // axis after which the printer will abort. Comment out to
1338
+                                                            // disable abort behaviour.
1339
+
1340
+  #define I2CPE_TIME_TRUSTED        10000                   // After an encoder fault, there must be no further fault
1341
+                                                            // for this amount of time (in ms) before the encoder
1342
+                                                            // is trusted again.
1343
+
1344
+  /**
1345
+   * Position is checked every time a new command is executed from the buffer but during long moves,
1346
+   * this setting determines the minimum update time between checks. A value of 100 works well with
1347
+   * error rolling average when attempting to correct only for skips and not for vibration.
1348
+   */
1349
+  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1350
+
1351
+  // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1352
+  #define I2CPE_ERR_ROLLING_AVERAGE
1353
+
1354
+#endif // I2C_POSITION_ENCODERS
1355
+
1259 1356
 #endif // CONFIGURATION_ADV_H

+ 74
- 34
Marlin/example_configurations/gCreate_gMax1.5+/Configuration.h Просмотреть файл

@@ -58,15 +58,15 @@
58 58
 //===========================================================================
59 59
 //============================= DELTA Printer ===============================
60 60
 //===========================================================================
61
-// For a Delta printer replace the configuration files with the files in the
62
-// example_configurations/delta directory.
61
+// For a Delta printer start with one of the configuration files in the
62
+// example_configurations/delta directory and customize for your machine.
63 63
 //
64 64
 
65 65
 //===========================================================================
66 66
 //============================= SCARA Printer ===============================
67 67
 //===========================================================================
68
-// For a Scara printer replace the configuration files with the files in the
69
-// example_configurations/SCARA directory.
68
+// For a SCARA printer start with the configuration files in
69
+// example_configurations/SCARA and customize for your machine.
70 70
 //
71 71
 
72 72
 // @section info
@@ -143,6 +143,25 @@
143 143
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
144 144
 //#define SINGLENOZZLE
145 145
 
146
+/**
147
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
148
+ *
149
+ * This device allows one stepper driver on a control board to drive
150
+ * two to eight stepper motors, one at a time, in a manner suitable
151
+ * for extruders.
152
+ *
153
+ * This option only allows the multiplexer to switch on tool-change.
154
+ * Additional options to configure custom E moves are pending.
155
+ */
156
+//#define MK2_MULTIPLEXER
157
+#if ENABLED(MK2_MULTIPLEXER)
158
+  // Override the default DIO selector pins here, if needed.
159
+  // Some pins files may provide defaults for these pins.
160
+  //#define E_MUX0_PIN 40  // Always Required
161
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
162
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
163
+#endif
164
+
146 165
 // A dual extruder that uses a single stepper motor
147 166
 //#define SWITCHING_EXTRUDER
148 167
 #if ENABLED(SWITCHING_EXTRUDER)
@@ -580,13 +599,12 @@
580 599
  *
581 600
  */
582 601
 //#define Z_MIN_PROBE_ENDSTOP
583
-//#define Z_MIN_PROBE_PIN Z_MAX_PIN
584 602
 
585 603
 /**
586
- *   Probe Type
604
+ * Probe Type
587 605
  *
588
- *   Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc.
589
- *   You must activate one of these to use Auto Bed Leveling below.
606
+ * Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc.
607
+ * Activate one of these to use Auto Bed Leveling below.
590 608
  */
591 609
 
592 610
 /**
@@ -896,12 +914,14 @@
896 914
   #define UBL_MESH_INSET 45         // Mesh inset margin on print area
897 915
   #define GRID_MAX_POINTS_X 10      // Don't use more than 15 points per axis, implementation limited.
898 916
   #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
899
-  #define UBL_PROBE_PT_1_X 53       // These set the probe locations for when UBL does a 3-Point leveling
900
-  #define UBL_PROBE_PT_1_Y 323      // of the mesh.
917
+
918
+  #define UBL_PROBE_PT_1_X 53       // Probing points for 3-Point leveling of the mesh
919
+  #define UBL_PROBE_PT_1_Y 323
901 920
   #define UBL_PROBE_PT_2_X 53
902 921
   #define UBL_PROBE_PT_2_Y 63
903 922
   #define UBL_PROBE_PT_3_X 348
904 923
   #define UBL_PROBE_PT_3_Y 211
924
+
905 925
   #define UBL_G26_MESH_VALIDATION   // Enable G26 mesh validation
906 926
   #define UBL_MESH_EDIT_MOVES_Z     // Sophisticated users prefer no movement of nozzle
907 927
 
@@ -956,6 +976,7 @@
956 976
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
957 977
 // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
958 978
 // - Prevent Z homing when the Z probe is outside bed area.
979
+//
959 980
 #define Z_SAFE_HOMING
960 981
 
961 982
 #if ENABLED(Z_SAFE_HOMING)
@@ -980,13 +1001,10 @@
980 1001
 // M500 - stores parameters in EEPROM
981 1002
 // M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).
982 1003
 // M502 - reverts to the default "factory settings".  You still need to store them in EEPROM afterwards if you want to.
983
-//define this to enable EEPROM support
984
-#define EEPROM_SETTINGS
985
-
986
-#if ENABLED(EEPROM_SETTINGS)
987
-  // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out:
988
-  #define EEPROM_CHITCHAT // Please keep turned on if you can.
989
-#endif
1004
+//
1005
+#define EEPROM_SETTINGS   // Enable for M500 and M501 commands
1006
+//#define DISABLE_M503    // Saves ~2700 bytes of PROGMEM. Disable for release!
1007
+#define EEPROM_CHITCHAT   // Give feedback on EEPROM commands. Disable to save PROGMEM.
990 1008
 
991 1009
 //
992 1010
 // Host Keepalive
@@ -1145,10 +1163,11 @@
1145 1163
  *
1146 1164
  * Select the language to display on the LCD. These languages are available:
1147 1165
  *
1148
- *    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
1149
- *    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk, test
1166
+ *    en, an, bg, ca, cn, cz, cz_utf8, de, el, el-gr, es, eu, fi, fr, gl, hr,
1167
+ *    it, kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk,
1168
+ *    zh_CN, zh_TW, test
1150 1169
  *
1151
- * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'test':'TEST' }
1170
+ * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'cz_utf8':'Czech (UTF8)', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'zh_CN':'Chinese (Simplified)', 'zh_TW':'Chinese (Taiwan)', test':'TEST' }
1152 1171
  */
1153 1172
 #define LCD_LANGUAGE en
1154 1173
 
@@ -1297,12 +1316,6 @@
1297 1316
 //#define ULTIPANEL
1298 1317
 
1299 1318
 //
1300
-// Cartesio UI
1301
-// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1302
-//
1303
-//#define CARTESIO_UI
1304
-
1305
-//
1306 1319
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
1307 1320
 // http://reprap.org/wiki/PanelOne
1308 1321
 //
@@ -1385,6 +1398,27 @@
1385 1398
 //#define BQ_LCD_SMART_CONTROLLER
1386 1399
 
1387 1400
 //
1401
+// Cartesio UI
1402
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1403
+//
1404
+//#define CARTESIO_UI
1405
+
1406
+//
1407
+// ANET_10 Controller supported displays.
1408
+//
1409
+//#define ANET_KEYPAD_LCD         // Requires ADC_KEYPAD_PIN to be assigned to an analog pin.
1410
+                                  // This LCD is known to be susceptible to electrical interference
1411
+                                  // which scrambles the display.  Pressing any button clears it up.
1412
+//#define ANET_FULL_GRAPHICS_LCD  // Anet 128x64 full graphics lcd with rotary encoder as used on Anet A6
1413
+                                  // A clone of the RepRapDiscount full graphics display but with
1414
+                                  // different pins/wiring (see pins_ANET_10.h).
1415
+
1416
+//
1417
+// LCD for Melzi Card with Graphical LCD
1418
+//
1419
+//#define LCD_FOR_MELZI
1420
+
1421
+//
1388 1422
 // CONTROLLER TYPE: I2C
1389 1423
 //
1390 1424
 // Note: These controllers require the installation of Arduino's LiquidCrystal_I2C
@@ -1400,6 +1434,9 @@
1400 1434
 //
1401 1435
 // Sainsmart YW Robot (LCM1602) LCD Display
1402 1436
 //
1437
+// Note: This controller requires F.Malpartida's LiquidCrystal_I2C library
1438
+// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
1439
+//
1403 1440
 //#define LCD_I2C_SAINSMART_YWROBOT
1404 1441
 
1405 1442
 //
@@ -1431,6 +1468,11 @@
1431 1468
 //#define U8GLIB_SSD1306
1432 1469
 
1433 1470
 //
1471
+// TinyBoy2 128x64 OLED / Encoder Panel
1472
+//
1473
+//#define OLED_PANEL_TINYBOY2
1474
+
1475
+//
1434 1476
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1435 1477
 //
1436 1478
 //#define SAV_3DGLCD
@@ -1447,11 +1489,6 @@
1447 1489
 //
1448 1490
 //#define SAV_3DLCD
1449 1491
 
1450
-//
1451
-// TinyBoy2 128x64 OLED / Encoder Panel
1452
-//
1453
-//#define OLED_PANEL_TINYBOY2
1454
-
1455 1492
 //=============================================================================
1456 1493
 //=============================== Extra Features ==============================
1457 1494
 //=============================================================================
@@ -1490,12 +1527,15 @@
1490 1527
 // SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure
1491 1528
 //#define SF_ARC_FIX
1492 1529
 
1493
-// Support for the BariCUDA Paste Extruder.
1530
+// Support for the BariCUDA Paste Extruder
1494 1531
 //#define BARICUDA
1495 1532
 
1496
-//define BlinkM/CyzRgb Support
1533
+// Support for BlinkM/CyzRgb
1497 1534
 //#define BLINKM
1498 1535
 
1536
+// Support for PCA9632 PWM LED driver
1537
+//#define PCA9632
1538
+
1499 1539
 /**
1500 1540
  * RGB LED / LED Strip Control
1501 1541
  *
@@ -1533,7 +1573,7 @@
1533 1573
  *  - Change to green once print has finished
1534 1574
  *  - Turn off after the print has finished and the user has pushed a button
1535 1575
  */
1536
-#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED)
1576
+#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED) || ENABLED(PCA9632)
1537 1577
   #define PRINTER_EVENT_LEDS
1538 1578
 #endif
1539 1579
 

+ 111
- 14
Marlin/example_configurations/gCreate_gMax1.5+/Configuration_adv.h Просмотреть файл

@@ -123,8 +123,8 @@
123 123
   #define AUTOTEMP_OLDWEIGHT 0.98
124 124
 #endif
125 125
 
126
-//Show Temperature ADC value
127
-//The M105 command return, besides traditional information, the ADC value read from temperature sensors.
126
+// Show Temperature ADC value
127
+// Enable for M105 to include ADC values read from temperature sensors.
128 128
 //#define SHOW_TEMP_ADC_VALUES
129 129
 
130 130
 /**
@@ -419,16 +419,16 @@
419 419
  *    M908 - BQ_ZUM_MEGA_3D, RAMBO, PRINTRBOARD_REVF, RIGIDBOARD_V2 & SCOOVO_X9H
420 420
  *    M909, M910 & LCD - only PRINTRBOARD_REVF & RIGIDBOARD_V2
421 421
  */
422
-//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps
423
-//#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
424
-//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 } // Default drive percent - X, Y, Z, E axis
422
+//#define PWM_MOTOR_CURRENT { 1300, 1300, 1250 }          // Values in milliamps
423
+//#define DIGIPOT_MOTOR_CURRENT { 135,135,135,135,135 }   // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
424
+//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 }    // Default drive percent - X, Y, Z, E axis
425 425
 
426 426
 // Uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro
427 427
 //#define DIGIPOT_I2C
428
-//#define DIGIPOT_MCP4018
428
+//#define DIGIPOT_MCP4018          // Requires library from https://github.com/stawel/SlowSoftI2CMaster
429 429
 #define DIGIPOT_I2C_NUM_CHANNELS 8 // 5DPRINT: 4     AZTEEG_X3_PRO: 8
430 430
 // Actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS
431
-#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0}  //  AZTEEG_X3_PRO
431
+#define DIGIPOT_I2C_MOTOR_CURRENTS { 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 }  //  AZTEEG_X3_PRO
432 432
 
433 433
 //===========================================================================
434 434
 //=============================Additional Features===========================
@@ -648,7 +648,7 @@
648 648
    *
649 649
    * Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
650 650
    *
651
-   * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
651
+   * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
652 652
    * Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
653 653
    */
654 654
   #define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
@@ -678,10 +678,16 @@
678 678
 
679 679
 // @section extras
680 680
 
681
-// Arc interpretation settings:
682
-#define ARC_SUPPORT  // Disabling this saves ~2738 bytes
683
-#define MM_PER_ARC_SEGMENT 1
684
-#define N_ARC_CORRECTION 25
681
+//
682
+// G2/G3 Arc Support
683
+//
684
+#define ARC_SUPPORT               // Disable this feature to save ~3226 bytes
685
+#if ENABLED(ARC_SUPPORT)
686
+  #define MM_PER_ARC_SEGMENT  1   // Length of each arc segment
687
+  #define N_ARC_CORRECTION   25   // Number of intertpolated segments between corrections
688
+  //#define ARC_P_CIRCLES         // Enable the 'P' parameter to specify complete circles
689
+  //#define CNC_WORKSPACE_PLANES  // Allow G2/G3 to operate in XY, ZX, or YZ planes
690
+#endif
685 691
 
686 692
 // Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
687 693
 //#define BEZIER_CURVE_SUPPORT
@@ -809,6 +815,7 @@
809 815
   #define PAUSE_PARK_NO_STEPPER_TIMEOUT       // Enable to have stepper motors hold position during filament change
810 816
                                               // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
811 817
   #define PARK_HEAD_ON_PAUSE                  // Go to filament change position on pause, return to print position on resume
818
+  //#define HOME_BEFORE_FILAMENT_CHANGE       // Ensure homing has been completed prior to parking for filament change
812 819
 #endif
813 820
 
814 821
 // @section tmc
@@ -1201,12 +1208,12 @@
1201 1208
 /**
1202 1209
  * Auto-report temperatures with M155 S<seconds>
1203 1210
  */
1204
-//#define AUTO_REPORT_TEMPERATURES
1211
+#define AUTO_REPORT_TEMPERATURES
1205 1212
 
1206 1213
 /**
1207 1214
  * Include capabilities in M115 output
1208 1215
  */
1209
-//#define EXTENDED_CAPABILITIES_REPORT
1216
+#define EXTENDED_CAPABILITIES_REPORT
1210 1217
 
1211 1218
 /**
1212 1219
  * Volumetric extrusion default state
@@ -1263,4 +1270,94 @@
1263 1270
   //#define USER_GCODE_5 "G28\nM503"
1264 1271
 #endif
1265 1272
 
1273
+/**
1274
+ * Specify an action command to send to the host when the printer is killed.
1275
+ * Will be sent in the form '//action:ACTION_ON_KILL', e.g. '//action:poweroff'.
1276
+ * The host must be configured to handle the action command.
1277
+ */
1278
+//#define ACTION_ON_KILL "poweroff"
1279
+
1280
+//===========================================================================
1281
+//====================== I2C Position Encoder Settings ======================
1282
+//===========================================================================
1283
+/**
1284
+ *  I2C position encoders for closed loop control.
1285
+ *  Developed by Chris Barr at Aus3D.
1286
+ *
1287
+ *  Wiki: http://wiki.aus3d.com.au/Magnetic_Encoder
1288
+ *  Github: https://github.com/Aus3D/MagneticEncoder
1289
+ *
1290
+ *  Supplier: http://aus3d.com.au/magnetic-encoder-module
1291
+ *  Alternative Supplier: http://reliabuild3d.com/
1292
+ *
1293
+ *  Reilabuild encoders have been modified to improve reliability.
1294
+ */
1295
+
1296
+//#define I2C_POSITION_ENCODERS
1297
+#if ENABLED(I2C_POSITION_ENCODERS)
1298
+
1299
+  #define I2CPE_ENCODER_CNT         1                       // The number of encoders installed; max of 5
1300
+                                                            // encoders supported currently.
1301
+
1302
+  #define I2CPE_ENC_1_ADDR          I2CPE_PRESET_ADDR_X     // I2C address of the encoder. 30-200.
1303
+  #define I2CPE_ENC_1_AXIS          X_AXIS                  // Axis the encoder module is installed on.  <X|Y|Z|E>_AXIS.
1304
+  #define I2CPE_ENC_1_TYPE          I2CPE_ENC_TYPE_LINEAR   // Type of encoder:  I2CPE_ENC_TYPE_LINEAR -or-
1305
+                                                            // I2CPE_ENC_TYPE_ROTARY.
1306
+  #define I2CPE_ENC_1_TICKS_UNIT    2048                    // 1024 for magnetic strips with 2mm poles; 2048 for
1307
+                                                            // 1mm poles. For linear encoders this is ticks / mm,
1308
+                                                            // for rotary encoders this is ticks / revolution.
1309
+  //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1310
+                                                            // steps per full revolution (motor steps/rev * microstepping)
1311
+  //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1312
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1313
+  #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1314
+                                                            // printer will attempt to correct the error; errors
1315
+                                                            // smaller than this are ignored to minimize effects of
1316
+                                                            // measurement noise / latency (filter).
1317
+
1318
+  #define I2CPE_ENC_2_ADDR          I2CPE_PRESET_ADDR_Y     // Same as above, but for encoder 2.
1319
+  #define I2CPE_ENC_2_AXIS          Y_AXIS
1320
+  #define I2CPE_ENC_2_TYPE          I2CPE_ENC_TYPE_LINEAR
1321
+  #define I2CPE_ENC_2_TICKS_UNIT    2048
1322
+  //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1323
+  //#define I2CPE_ENC_2_INVERT
1324
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1325
+  #define I2CPE_ENC_2_EC_THRESH     0.10
1326
+
1327
+  #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
1328
+  #define I2CPE_ENC_3_AXIS          Z_AXIS                  // as above, or use defaults below.
1329
+
1330
+  #define I2CPE_ENC_4_ADDR          I2CPE_PRESET_ADDR_E     // Encoder 4.
1331
+  #define I2CPE_ENC_4_AXIS          E_AXIS
1332
+
1333
+  #define I2CPE_ENC_5_ADDR          34                      // Encoder 5.
1334
+  #define I2CPE_ENC_5_AXIS          E_AXIS
1335
+
1336
+  // Default settings for encoders which are enabled, but without settings configured above.
1337
+  #define I2CPE_DEF_TYPE            I2CPE_ENC_TYPE_LINEAR
1338
+  #define I2CPE_DEF_ENC_TICKS_UNIT  2048
1339
+  #define I2CPE_DEF_TICKS_REV       (16 * 200)
1340
+  #define I2CPE_DEF_EC_METHOD       I2CPE_ECM_NONE
1341
+  #define I2CPE_DEF_EC_THRESH       0.1
1342
+
1343
+  //#define I2CPE_ERR_THRESH_ABORT  100.0                   // Threshold size for error (in mm) error on any given
1344
+                                                            // axis after which the printer will abort. Comment out to
1345
+                                                            // disable abort behaviour.
1346
+
1347
+  #define I2CPE_TIME_TRUSTED        10000                   // After an encoder fault, there must be no further fault
1348
+                                                            // for this amount of time (in ms) before the encoder
1349
+                                                            // is trusted again.
1350
+
1351
+  /**
1352
+   * Position is checked every time a new command is executed from the buffer but during long moves,
1353
+   * this setting determines the minimum update time between checks. A value of 100 works well with
1354
+   * error rolling average when attempting to correct only for skips and not for vibration.
1355
+   */
1356
+  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1357
+
1358
+  // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1359
+  #define I2CPE_ERR_ROLLING_AVERAGE
1360
+
1361
+#endif // I2C_POSITION_ENCODERS
1362
+
1266 1363
 #endif // CONFIGURATION_ADV_H

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

@@ -58,15 +58,15 @@
58 58
 //===========================================================================
59 59
 //============================= DELTA Printer ===============================
60 60
 //===========================================================================
61
-// For Delta printers start with one of the configuration files in the
61
+// For a Delta printer start with one of the configuration files in the
62 62
 // example_configurations/delta directory and customize for your machine.
63 63
 //
64 64
 
65 65
 //===========================================================================
66 66
 //============================= SCARA Printer ===============================
67 67
 //===========================================================================
68
-// For a Scara printer replace the configuration files with the files in the
69
-// example_configurations/SCARA directory.
68
+// For a SCARA printer start with the configuration files in
69
+// example_configurations/SCARA and customize for your machine.
70 70
 //
71 71
 
72 72
 // @section info
@@ -138,6 +138,25 @@
138 138
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
139 139
 //#define SINGLENOZZLE
140 140
 
141
+/**
142
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
143
+ *
144
+ * This device allows one stepper driver on a control board to drive
145
+ * two to eight stepper motors, one at a time, in a manner suitable
146
+ * for extruders.
147
+ *
148
+ * This option only allows the multiplexer to switch on tool-change.
149
+ * Additional options to configure custom E moves are pending.
150
+ */
151
+//#define MK2_MULTIPLEXER
152
+#if ENABLED(MK2_MULTIPLEXER)
153
+  // Override the default DIO selector pins here, if needed.
154
+  // Some pins files may provide defaults for these pins.
155
+  //#define E_MUX0_PIN 40  // Always Required
156
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
157
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
158
+#endif
159
+
141 160
 // A dual extruder that uses a single stepper motor
142 161
 //#define SWITCHING_EXTRUDER
143 162
 #if ENABLED(SWITCHING_EXTRUDER)
@@ -568,7 +587,6 @@
568 587
  *
569 588
  */
570 589
 //#define Z_MIN_PROBE_ENDSTOP
571
-//#define Z_MIN_PROBE_PIN Z_MAX_PIN
572 590
 
573 591
 /**
574 592
  * Probe Type
@@ -883,12 +901,14 @@
883 901
   #define UBL_MESH_INSET 1          // Mesh inset margin on print area
884 902
   #define GRID_MAX_POINTS_X 10      // Don't use more than 15 points per axis, implementation limited.
885 903
   #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
886
-  #define UBL_PROBE_PT_1_X 39       // These set the probe locations for when UBL does a 3-Point leveling
887
-  #define UBL_PROBE_PT_1_Y 180      // of the mesh.
904
+
905
+  #define UBL_PROBE_PT_1_X 39       // Probing points for 3-Point leveling of the mesh
906
+  #define UBL_PROBE_PT_1_Y 180
888 907
   #define UBL_PROBE_PT_2_X 39
889 908
   #define UBL_PROBE_PT_2_Y 20
890 909
   #define UBL_PROBE_PT_3_X 180
891 910
   #define UBL_PROBE_PT_3_Y 20
911
+
892 912
   #define UBL_G26_MESH_VALIDATION   // Enable G26 mesh validation
893 913
   #define UBL_MESH_EDIT_MOVES_Z     // Sophisticated users prefer no movement of nozzle
894 914
 
@@ -943,6 +963,7 @@
943 963
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
944 964
 // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
945 965
 // - Prevent Z homing when the Z probe is outside bed area.
966
+//
946 967
 //#define Z_SAFE_HOMING
947 968
 
948 969
 #if ENABLED(Z_SAFE_HOMING)
@@ -967,13 +988,10 @@
967 988
 // M500 - stores parameters in EEPROM
968 989
 // M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).
969 990
 // M502 - reverts to the default "factory settings".  You still need to store them in EEPROM afterwards if you want to.
970
-//define this to enable EEPROM support
971
-#define EEPROM_SETTINGS
972
-
973
-#if ENABLED(EEPROM_SETTINGS)
974
-  // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out:
975
-  #define EEPROM_CHITCHAT // Please keep turned on if you can.
976
-#endif
991
+//
992
+#define EEPROM_SETTINGS   // Enable for M500 and M501 commands
993
+//#define DISABLE_M503    // Saves ~2700 bytes of PROGMEM. Disable for release!
994
+#define EEPROM_CHITCHAT   // Give feedback on EEPROM commands. Disable to save PROGMEM.
977 995
 
978 996
 //
979 997
 // Host Keepalive
@@ -1132,10 +1150,11 @@
1132 1150
  *
1133 1151
  * Select the language to display on the LCD. These languages are available:
1134 1152
  *
1135
- *    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
1136
- *    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk, test
1153
+ *    en, an, bg, ca, cn, cz, cz_utf8, de, el, el-gr, es, eu, fi, fr, gl, hr,
1154
+ *    it, kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk,
1155
+ *    zh_CN, zh_TW, test
1137 1156
  *
1138
- * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'test':'TEST' }
1157
+ * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'cz_utf8':'Czech (UTF8)', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'zh_CN':'Chinese (Simplified)', 'zh_TW':'Chinese (Taiwan)', test':'TEST' }
1139 1158
  */
1140 1159
 //#define LCD_LANGUAGE en
1141 1160
 
@@ -1284,12 +1303,6 @@
1284 1303
 //#define ULTIPANEL
1285 1304
 
1286 1305
 //
1287
-// Cartesio UI
1288
-// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1289
-//
1290
-//#define CARTESIO_UI
1291
-
1292
-//
1293 1306
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
1294 1307
 // http://reprap.org/wiki/PanelOne
1295 1308
 //
@@ -1372,6 +1385,27 @@
1372 1385
 //#define BQ_LCD_SMART_CONTROLLER
1373 1386
 
1374 1387
 //
1388
+// Cartesio UI
1389
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1390
+//
1391
+//#define CARTESIO_UI
1392
+
1393
+//
1394
+// ANET_10 Controller supported displays.
1395
+//
1396
+//#define ANET_KEYPAD_LCD         // Requires ADC_KEYPAD_PIN to be assigned to an analog pin.
1397
+                                  // This LCD is known to be susceptible to electrical interference
1398
+                                  // which scrambles the display.  Pressing any button clears it up.
1399
+//#define ANET_FULL_GRAPHICS_LCD  // Anet 128x64 full graphics lcd with rotary encoder as used on Anet A6
1400
+                                  // A clone of the RepRapDiscount full graphics display but with
1401
+                                  // different pins/wiring (see pins_ANET_10.h).
1402
+
1403
+//
1404
+// LCD for Melzi Card with Graphical LCD
1405
+//
1406
+//#define LCD_FOR_MELZI
1407
+
1408
+//
1375 1409
 // CONTROLLER TYPE: I2C
1376 1410
 //
1377 1411
 // Note: These controllers require the installation of Arduino's LiquidCrystal_I2C
@@ -1387,6 +1421,9 @@
1387 1421
 //
1388 1422
 // Sainsmart YW Robot (LCM1602) LCD Display
1389 1423
 //
1424
+// Note: This controller requires F.Malpartida's LiquidCrystal_I2C library
1425
+// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
1426
+//
1390 1427
 //#define LCD_I2C_SAINSMART_YWROBOT
1391 1428
 
1392 1429
 //
@@ -1418,6 +1455,11 @@
1418 1455
 //#define U8GLIB_SSD1306
1419 1456
 
1420 1457
 //
1458
+// TinyBoy2 128x64 OLED / Encoder Panel
1459
+//
1460
+//#define OLED_PANEL_TINYBOY2
1461
+
1462
+//
1421 1463
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1422 1464
 //
1423 1465
 //#define SAV_3DGLCD
@@ -1434,11 +1476,6 @@
1434 1476
 //
1435 1477
 //#define SAV_3DLCD
1436 1478
 
1437
-//
1438
-// TinyBoy2 128x64 OLED / Encoder Panel
1439
-//
1440
-//#define OLED_PANEL_TINYBOY2
1441
-
1442 1479
 //=============================================================================
1443 1480
 //=============================== Extra Features ==============================
1444 1481
 //=============================================================================
@@ -1477,12 +1514,15 @@
1477 1514
 // SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure
1478 1515
 //#define SF_ARC_FIX
1479 1516
 
1480
-// Support for the BariCUDA Paste Extruder.
1517
+// Support for the BariCUDA Paste Extruder
1481 1518
 //#define BARICUDA
1482 1519
 
1483
-//define BlinkM/CyzRgb Support
1520
+// Support for BlinkM/CyzRgb
1484 1521
 //#define BLINKM
1485 1522
 
1523
+// Support for PCA9632 PWM LED driver
1524
+//#define PCA9632
1525
+
1486 1526
 /**
1487 1527
  * RGB LED / LED Strip Control
1488 1528
  *
@@ -1520,7 +1560,7 @@
1520 1560
  *  - Change to green once print has finished
1521 1561
  *  - Turn off after the print has finished and the user has pushed a button
1522 1562
  */
1523
-#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED)
1563
+#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED) || ENABLED(PCA9632)
1524 1564
   #define PRINTER_EVENT_LEDS
1525 1565
 #endif
1526 1566
 

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

@@ -123,8 +123,8 @@
123 123
   #define AUTOTEMP_OLDWEIGHT 0.98
124 124
 #endif
125 125
 
126
-//Show Temperature ADC value
127
-//The M105 command return, besides traditional information, the ADC value read from temperature sensors.
126
+// Show Temperature ADC value
127
+// Enable for M105 to include ADC values read from temperature sensors.
128 128
 //#define SHOW_TEMP_ADC_VALUES
129 129
 
130 130
 /**
@@ -419,13 +419,13 @@
419 419
  *    M908 - BQ_ZUM_MEGA_3D, RAMBO, PRINTRBOARD_REVF, RIGIDBOARD_V2 & SCOOVO_X9H
420 420
  *    M909, M910 & LCD - only PRINTRBOARD_REVF & RIGIDBOARD_V2
421 421
  */
422
-//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps
423
-//#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
424
-//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 } // Default drive percent - X, Y, Z, E axis
422
+//#define PWM_MOTOR_CURRENT { 1300, 1300, 1250 }          // Values in milliamps
423
+//#define DIGIPOT_MOTOR_CURRENT { 135,135,135,135,135 }   // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
424
+//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 }    // Default drive percent - X, Y, Z, E axis
425 425
 
426 426
 // Uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro
427 427
 //#define DIGIPOT_I2C
428
-//#define DIGIPOT_MCP4018
428
+//#define DIGIPOT_MCP4018          // Requires library from https://github.com/stawel/SlowSoftI2CMaster
429 429
 #define DIGIPOT_I2C_NUM_CHANNELS 4 // 5DPRINT: 4     AZTEEG_X3_PRO: 8
430 430
 // Actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS
431 431
 #define DIGIPOT_I2C_MOTOR_CURRENTS { 1.7, 1.7, 1.7, 1.7 }  // 5DPRINT
@@ -645,7 +645,7 @@
645 645
    *
646 646
    * Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
647 647
    *
648
-   * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
648
+   * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
649 649
    * Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
650 650
    */
651 651
   #define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
@@ -671,10 +671,16 @@
671 671
 
672 672
 // @section extras
673 673
 
674
-// Arc interpretation settings:
675
-#define ARC_SUPPORT  // Disabling this saves ~2738 bytes
676
-#define MM_PER_ARC_SEGMENT 1
677
-#define N_ARC_CORRECTION 25
674
+//
675
+// G2/G3 Arc Support
676
+//
677
+#define ARC_SUPPORT               // Disable this feature to save ~3226 bytes
678
+#if ENABLED(ARC_SUPPORT)
679
+  #define MM_PER_ARC_SEGMENT  1   // Length of each arc segment
680
+  #define N_ARC_CORRECTION   25   // Number of intertpolated segments between corrections
681
+  //#define ARC_P_CIRCLES         // Enable the 'P' parameter to specify complete circles
682
+  //#define CNC_WORKSPACE_PLANES  // Allow G2/G3 to operate in XY, ZX, or YZ planes
683
+#endif
678 684
 
679 685
 // Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
680 686
 //#define BEZIER_CURVE_SUPPORT
@@ -800,6 +806,7 @@
800 806
   #define PAUSE_PARK_NO_STEPPER_TIMEOUT       // Enable to have stepper motors hold position during filament change
801 807
                                               // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
802 808
   //#define PARK_HEAD_ON_PAUSE                // Go to filament change position on pause, return to print position on resume
809
+  //#define HOME_BEFORE_FILAMENT_CHANGE       // Ensure homing has been completed prior to parking for filament change
803 810
 #endif
804 811
 
805 812
 // @section tmc
@@ -1192,12 +1199,12 @@
1192 1199
 /**
1193 1200
  * Auto-report temperatures with M155 S<seconds>
1194 1201
  */
1195
-//#define AUTO_REPORT_TEMPERATURES
1202
+#define AUTO_REPORT_TEMPERATURES
1196 1203
 
1197 1204
 /**
1198 1205
  * Include capabilities in M115 output
1199 1206
  */
1200
-//#define EXTENDED_CAPABILITIES_REPORT
1207
+#define EXTENDED_CAPABILITIES_REPORT
1201 1208
 
1202 1209
 /**
1203 1210
  * Volumetric extrusion default state
@@ -1254,4 +1261,94 @@
1254 1261
   //#define USER_GCODE_5 "G28\nM503"
1255 1262
 #endif
1256 1263
 
1264
+/**
1265
+ * Specify an action command to send to the host when the printer is killed.
1266
+ * Will be sent in the form '//action:ACTION_ON_KILL', e.g. '//action:poweroff'.
1267
+ * The host must be configured to handle the action command.
1268
+ */
1269
+//#define ACTION_ON_KILL "poweroff"
1270
+
1271
+//===========================================================================
1272
+//====================== I2C Position Encoder Settings ======================
1273
+//===========================================================================
1274
+/**
1275
+ *  I2C position encoders for closed loop control.
1276
+ *  Developed by Chris Barr at Aus3D.
1277
+ *
1278
+ *  Wiki: http://wiki.aus3d.com.au/Magnetic_Encoder
1279
+ *  Github: https://github.com/Aus3D/MagneticEncoder
1280
+ *
1281
+ *  Supplier: http://aus3d.com.au/magnetic-encoder-module
1282
+ *  Alternative Supplier: http://reliabuild3d.com/
1283
+ *
1284
+ *  Reilabuild encoders have been modified to improve reliability.
1285
+ */
1286
+
1287
+//#define I2C_POSITION_ENCODERS
1288
+#if ENABLED(I2C_POSITION_ENCODERS)
1289
+
1290
+  #define I2CPE_ENCODER_CNT         1                       // The number of encoders installed; max of 5
1291
+                                                            // encoders supported currently.
1292
+
1293
+  #define I2CPE_ENC_1_ADDR          I2CPE_PRESET_ADDR_X     // I2C address of the encoder. 30-200.
1294
+  #define I2CPE_ENC_1_AXIS          X_AXIS                  // Axis the encoder module is installed on.  <X|Y|Z|E>_AXIS.
1295
+  #define I2CPE_ENC_1_TYPE          I2CPE_ENC_TYPE_LINEAR   // Type of encoder:  I2CPE_ENC_TYPE_LINEAR -or-
1296
+                                                            // I2CPE_ENC_TYPE_ROTARY.
1297
+  #define I2CPE_ENC_1_TICKS_UNIT    2048                    // 1024 for magnetic strips with 2mm poles; 2048 for
1298
+                                                            // 1mm poles. For linear encoders this is ticks / mm,
1299
+                                                            // for rotary encoders this is ticks / revolution.
1300
+  //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1301
+                                                            // steps per full revolution (motor steps/rev * microstepping)
1302
+  //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1303
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1304
+  #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1305
+                                                            // printer will attempt to correct the error; errors
1306
+                                                            // smaller than this are ignored to minimize effects of
1307
+                                                            // measurement noise / latency (filter).
1308
+
1309
+  #define I2CPE_ENC_2_ADDR          I2CPE_PRESET_ADDR_Y     // Same as above, but for encoder 2.
1310
+  #define I2CPE_ENC_2_AXIS          Y_AXIS
1311
+  #define I2CPE_ENC_2_TYPE          I2CPE_ENC_TYPE_LINEAR
1312
+  #define I2CPE_ENC_2_TICKS_UNIT    2048
1313
+  //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1314
+  //#define I2CPE_ENC_2_INVERT
1315
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1316
+  #define I2CPE_ENC_2_EC_THRESH     0.10
1317
+
1318
+  #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
1319
+  #define I2CPE_ENC_3_AXIS          Z_AXIS                  // as above, or use defaults below.
1320
+
1321
+  #define I2CPE_ENC_4_ADDR          I2CPE_PRESET_ADDR_E     // Encoder 4.
1322
+  #define I2CPE_ENC_4_AXIS          E_AXIS
1323
+
1324
+  #define I2CPE_ENC_5_ADDR          34                      // Encoder 5.
1325
+  #define I2CPE_ENC_5_AXIS          E_AXIS
1326
+
1327
+  // Default settings for encoders which are enabled, but without settings configured above.
1328
+  #define I2CPE_DEF_TYPE            I2CPE_ENC_TYPE_LINEAR
1329
+  #define I2CPE_DEF_ENC_TICKS_UNIT  2048
1330
+  #define I2CPE_DEF_TICKS_REV       (16 * 200)
1331
+  #define I2CPE_DEF_EC_METHOD       I2CPE_ECM_NONE
1332
+  #define I2CPE_DEF_EC_THRESH       0.1
1333
+
1334
+  //#define I2CPE_ERR_THRESH_ABORT  100.0                   // Threshold size for error (in mm) error on any given
1335
+                                                            // axis after which the printer will abort. Comment out to
1336
+                                                            // disable abort behaviour.
1337
+
1338
+  #define I2CPE_TIME_TRUSTED        10000                   // After an encoder fault, there must be no further fault
1339
+                                                            // for this amount of time (in ms) before the encoder
1340
+                                                            // is trusted again.
1341
+
1342
+  /**
1343
+   * Position is checked every time a new command is executed from the buffer but during long moves,
1344
+   * this setting determines the minimum update time between checks. A value of 100 works well with
1345
+   * error rolling average when attempting to correct only for skips and not for vibration.
1346
+   */
1347
+  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1348
+
1349
+  // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1350
+  #define I2CPE_ERR_ROLLING_AVERAGE
1351
+
1352
+#endif // I2C_POSITION_ENCODERS
1353
+
1257 1354
 #endif // CONFIGURATION_ADV_H

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

@@ -58,15 +58,15 @@
58 58
 //===========================================================================
59 59
 //============================= DELTA Printer ===============================
60 60
 //===========================================================================
61
-// For Delta printers start with one of the configuration files in the
61
+// For a Delta printer start with one of the configuration files in the
62 62
 // example_configurations/delta directory and customize for your machine.
63 63
 //
64 64
 
65 65
 //===========================================================================
66 66
 //============================= SCARA Printer ===============================
67 67
 //===========================================================================
68
-// For a Scara printer replace the configuration files with the files in the
69
-// example_configurations/SCARA directory.
68
+// For a SCARA printer start with the configuration files in
69
+// example_configurations/SCARA and customize for your machine.
70 70
 //
71 71
 
72 72
 // @section info
@@ -138,6 +138,25 @@
138 138
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
139 139
 //#define SINGLENOZZLE
140 140
 
141
+/**
142
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
143
+ *
144
+ * This device allows one stepper driver on a control board to drive
145
+ * two to eight stepper motors, one at a time, in a manner suitable
146
+ * for extruders.
147
+ *
148
+ * This option only allows the multiplexer to switch on tool-change.
149
+ * Additional options to configure custom E moves are pending.
150
+ */
151
+//#define MK2_MULTIPLEXER
152
+#if ENABLED(MK2_MULTIPLEXER)
153
+  // Override the default DIO selector pins here, if needed.
154
+  // Some pins files may provide defaults for these pins.
155
+  //#define E_MUX0_PIN 40  // Always Required
156
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
157
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
158
+#endif
159
+
141 160
 // A dual extruder that uses a single stepper motor
142 161
 //#define SWITCHING_EXTRUDER
143 162
 #if ENABLED(SWITCHING_EXTRUDER)
@@ -560,7 +579,6 @@
560 579
  *
561 580
  */
562 581
 //#define Z_MIN_PROBE_ENDSTOP
563
-//#define Z_MIN_PROBE_PIN Z_MAX_PIN
564 582
 
565 583
 /**
566 584
  * Probe Type
@@ -875,12 +893,14 @@
875 893
   #define UBL_MESH_INSET 1          // Mesh inset margin on print area
876 894
   #define GRID_MAX_POINTS_X 10      // Don't use more than 15 points per axis, implementation limited.
877 895
   #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
878
-  #define UBL_PROBE_PT_1_X 39       // These set the probe locations for when UBL does a 3-Point leveling
879
-  #define UBL_PROBE_PT_1_Y 180      // of the mesh.
896
+
897
+  #define UBL_PROBE_PT_1_X 39       // Probing points for 3-Point leveling of the mesh
898
+  #define UBL_PROBE_PT_1_Y 180
880 899
   #define UBL_PROBE_PT_2_X 39
881 900
   #define UBL_PROBE_PT_2_Y 20
882 901
   #define UBL_PROBE_PT_3_X 180
883 902
   #define UBL_PROBE_PT_3_Y 20
903
+
884 904
   #define UBL_G26_MESH_VALIDATION   // Enable G26 mesh validation
885 905
   #define UBL_MESH_EDIT_MOVES_Z     // Sophisticated users prefer no movement of nozzle
886 906
 
@@ -935,6 +955,7 @@
935 955
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
936 956
 // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
937 957
 // - Prevent Z homing when the Z probe is outside bed area.
958
+//
938 959
 //#define Z_SAFE_HOMING
939 960
 
940 961
 #if ENABLED(Z_SAFE_HOMING)
@@ -959,13 +980,10 @@
959 980
 // M500 - stores parameters in EEPROM
960 981
 // M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).
961 982
 // M502 - reverts to the default "factory settings".  You still need to store them in EEPROM afterwards if you want to.
962
-//define this to enable EEPROM support
963
-//#define EEPROM_SETTINGS
964
-
965
-#if ENABLED(EEPROM_SETTINGS)
966
-  // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out:
967
-  #define EEPROM_CHITCHAT // Please keep turned on if you can.
968
-#endif
983
+//
984
+//#define EEPROM_SETTINGS // Enable for M500 and M501 commands
985
+//#define DISABLE_M503    // Saves ~2700 bytes of PROGMEM. Disable for release!
986
+#define EEPROM_CHITCHAT   // Give feedback on EEPROM commands. Disable to save PROGMEM.
969 987
 
970 988
 //
971 989
 // Host Keepalive
@@ -1124,10 +1142,11 @@
1124 1142
  *
1125 1143
  * Select the language to display on the LCD. These languages are available:
1126 1144
  *
1127
- *    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
1128
- *    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk, test
1145
+ *    en, an, bg, ca, cn, cz, cz_utf8, de, el, el-gr, es, eu, fi, fr, gl, hr,
1146
+ *    it, kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk,
1147
+ *    zh_CN, zh_TW, test
1129 1148
  *
1130
- * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'test':'TEST' }
1149
+ * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'cz_utf8':'Czech (UTF8)', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'zh_CN':'Chinese (Simplified)', 'zh_TW':'Chinese (Taiwan)', test':'TEST' }
1131 1150
  */
1132 1151
 //#define LCD_LANGUAGE en
1133 1152
 
@@ -1276,12 +1295,6 @@
1276 1295
 //#define ULTIPANEL
1277 1296
 
1278 1297
 //
1279
-// Cartesio UI
1280
-// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1281
-//
1282
-//#define CARTESIO_UI
1283
-
1284
-//
1285 1298
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
1286 1299
 // http://reprap.org/wiki/PanelOne
1287 1300
 //
@@ -1364,6 +1377,27 @@
1364 1377
 //#define BQ_LCD_SMART_CONTROLLER
1365 1378
 
1366 1379
 //
1380
+// Cartesio UI
1381
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1382
+//
1383
+//#define CARTESIO_UI
1384
+
1385
+//
1386
+// ANET_10 Controller supported displays.
1387
+//
1388
+//#define ANET_KEYPAD_LCD         // Requires ADC_KEYPAD_PIN to be assigned to an analog pin.
1389
+                                  // This LCD is known to be susceptible to electrical interference
1390
+                                  // which scrambles the display.  Pressing any button clears it up.
1391
+//#define ANET_FULL_GRAPHICS_LCD  // Anet 128x64 full graphics lcd with rotary encoder as used on Anet A6
1392
+                                  // A clone of the RepRapDiscount full graphics display but with
1393
+                                  // different pins/wiring (see pins_ANET_10.h).
1394
+
1395
+//
1396
+// LCD for Melzi Card with Graphical LCD
1397
+//
1398
+//#define LCD_FOR_MELZI
1399
+
1400
+//
1367 1401
 // CONTROLLER TYPE: I2C
1368 1402
 //
1369 1403
 // Note: These controllers require the installation of Arduino's LiquidCrystal_I2C
@@ -1379,6 +1413,9 @@
1379 1413
 //
1380 1414
 // Sainsmart YW Robot (LCM1602) LCD Display
1381 1415
 //
1416
+// Note: This controller requires F.Malpartida's LiquidCrystal_I2C library
1417
+// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
1418
+//
1382 1419
 //#define LCD_I2C_SAINSMART_YWROBOT
1383 1420
 
1384 1421
 //
@@ -1410,6 +1447,11 @@
1410 1447
 //#define U8GLIB_SSD1306
1411 1448
 
1412 1449
 //
1450
+// TinyBoy2 128x64 OLED / Encoder Panel
1451
+//
1452
+//#define OLED_PANEL_TINYBOY2
1453
+
1454
+//
1413 1455
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1414 1456
 //
1415 1457
 //#define SAV_3DGLCD
@@ -1426,11 +1468,6 @@
1426 1468
 //
1427 1469
 //#define SAV_3DLCD
1428 1470
 
1429
-//
1430
-// TinyBoy2 128x64 OLED / Encoder Panel
1431
-//
1432
-//#define OLED_PANEL_TINYBOY2
1433
-
1434 1471
 //=============================================================================
1435 1472
 //=============================== Extra Features ==============================
1436 1473
 //=============================================================================
@@ -1469,12 +1506,15 @@
1469 1506
 // SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure
1470 1507
 //#define SF_ARC_FIX
1471 1508
 
1472
-// Support for the BariCUDA Paste Extruder.
1509
+// Support for the BariCUDA Paste Extruder
1473 1510
 //#define BARICUDA
1474 1511
 
1475
-//define BlinkM/CyzRgb Support
1512
+// Support for BlinkM/CyzRgb
1476 1513
 //#define BLINKM
1477 1514
 
1515
+// Support for PCA9632 PWM LED driver
1516
+//#define PCA9632
1517
+
1478 1518
 /**
1479 1519
  * RGB LED / LED Strip Control
1480 1520
  *
@@ -1512,7 +1552,7 @@
1512 1552
  *  - Change to green once print has finished
1513 1553
  *  - Turn off after the print has finished and the user has pushed a button
1514 1554
  */
1515
-#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED)
1555
+#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED) || ENABLED(PCA9632)
1516 1556
   #define PRINTER_EVENT_LEDS
1517 1557
 #endif
1518 1558
 

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

@@ -123,8 +123,8 @@
123 123
   #define AUTOTEMP_OLDWEIGHT 0.98
124 124
 #endif
125 125
 
126
-//Show Temperature ADC value
127
-//The M105 command return, besides traditional information, the ADC value read from temperature sensors.
126
+// Show Temperature ADC value
127
+// Enable for M105 to include ADC values read from temperature sensors.
128 128
 //#define SHOW_TEMP_ADC_VALUES
129 129
 
130 130
 /**
@@ -419,16 +419,16 @@
419 419
  *    M908 - BQ_ZUM_MEGA_3D, RAMBO, PRINTRBOARD_REVF, RIGIDBOARD_V2 & SCOOVO_X9H
420 420
  *    M909, M910 & LCD - only PRINTRBOARD_REVF & RIGIDBOARD_V2
421 421
  */
422
-//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps
423
-//#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
424
-//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 } // Default drive percent - X, Y, Z, E axis
422
+//#define PWM_MOTOR_CURRENT { 1300, 1300, 1250 }          // Values in milliamps
423
+//#define DIGIPOT_MOTOR_CURRENT { 135,135,135,135,135 }   // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
424
+//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 }    // Default drive percent - X, Y, Z, E axis
425 425
 
426 426
 // Uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro
427 427
 //#define DIGIPOT_I2C
428
-//#define DIGIPOT_MCP4018
428
+//#define DIGIPOT_MCP4018          // Requires library from https://github.com/stawel/SlowSoftI2CMaster
429 429
 #define DIGIPOT_I2C_NUM_CHANNELS 8 // 5DPRINT: 4     AZTEEG_X3_PRO: 8
430 430
 // Actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS
431
-#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0}  //  AZTEEG_X3_PRO
431
+#define DIGIPOT_I2C_MOTOR_CURRENTS { 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 }  //  AZTEEG_X3_PRO
432 432
 
433 433
 //===========================================================================
434 434
 //=============================Additional Features===========================
@@ -645,7 +645,7 @@
645 645
    *
646 646
    * Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
647 647
    *
648
-   * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
648
+   * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
649 649
    * Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
650 650
    */
651 651
   #define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
@@ -671,10 +671,16 @@
671 671
 
672 672
 // @section extras
673 673
 
674
-// Arc interpretation settings:
675
-#define ARC_SUPPORT  // Disabling this saves ~2738 bytes
676
-#define MM_PER_ARC_SEGMENT 1
677
-#define N_ARC_CORRECTION 25
674
+//
675
+// G2/G3 Arc Support
676
+//
677
+#define ARC_SUPPORT               // Disable this feature to save ~3226 bytes
678
+#if ENABLED(ARC_SUPPORT)
679
+  #define MM_PER_ARC_SEGMENT  1   // Length of each arc segment
680
+  #define N_ARC_CORRECTION   25   // Number of intertpolated segments between corrections
681
+  //#define ARC_P_CIRCLES         // Enable the 'P' parameter to specify complete circles
682
+  //#define CNC_WORKSPACE_PLANES  // Allow G2/G3 to operate in XY, ZX, or YZ planes
683
+#endif
678 684
 
679 685
 // Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
680 686
 //#define BEZIER_CURVE_SUPPORT
@@ -800,6 +806,7 @@
800 806
   #define PAUSE_PARK_NO_STEPPER_TIMEOUT       // Enable to have stepper motors hold position during filament change
801 807
                                               // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
802 808
   //#define PARK_HEAD_ON_PAUSE                // Go to filament change position on pause, return to print position on resume
809
+  //#define HOME_BEFORE_FILAMENT_CHANGE       // Ensure homing has been completed prior to parking for filament change
803 810
 #endif
804 811
 
805 812
 // @section tmc
@@ -1192,12 +1199,12 @@
1192 1199
 /**
1193 1200
  * Auto-report temperatures with M155 S<seconds>
1194 1201
  */
1195
-//#define AUTO_REPORT_TEMPERATURES
1202
+#define AUTO_REPORT_TEMPERATURES
1196 1203
 
1197 1204
 /**
1198 1205
  * Include capabilities in M115 output
1199 1206
  */
1200
-//#define EXTENDED_CAPABILITIES_REPORT
1207
+#define EXTENDED_CAPABILITIES_REPORT
1201 1208
 
1202 1209
 /**
1203 1210
  * Volumetric extrusion default state
@@ -1254,4 +1261,94 @@
1254 1261
   //#define USER_GCODE_5 "G28\nM503"
1255 1262
 #endif
1256 1263
 
1264
+/**
1265
+ * Specify an action command to send to the host when the printer is killed.
1266
+ * Will be sent in the form '//action:ACTION_ON_KILL', e.g. '//action:poweroff'.
1267
+ * The host must be configured to handle the action command.
1268
+ */
1269
+//#define ACTION_ON_KILL "poweroff"
1270
+
1271
+//===========================================================================
1272
+//====================== I2C Position Encoder Settings ======================
1273
+//===========================================================================
1274
+/**
1275
+ *  I2C position encoders for closed loop control.
1276
+ *  Developed by Chris Barr at Aus3D.
1277
+ *
1278
+ *  Wiki: http://wiki.aus3d.com.au/Magnetic_Encoder
1279
+ *  Github: https://github.com/Aus3D/MagneticEncoder
1280
+ *
1281
+ *  Supplier: http://aus3d.com.au/magnetic-encoder-module
1282
+ *  Alternative Supplier: http://reliabuild3d.com/
1283
+ *
1284
+ *  Reilabuild encoders have been modified to improve reliability.
1285
+ */
1286
+
1287
+//#define I2C_POSITION_ENCODERS
1288
+#if ENABLED(I2C_POSITION_ENCODERS)
1289
+
1290
+  #define I2CPE_ENCODER_CNT         1                       // The number of encoders installed; max of 5
1291
+                                                            // encoders supported currently.
1292
+
1293
+  #define I2CPE_ENC_1_ADDR          I2CPE_PRESET_ADDR_X     // I2C address of the encoder. 30-200.
1294
+  #define I2CPE_ENC_1_AXIS          X_AXIS                  // Axis the encoder module is installed on.  <X|Y|Z|E>_AXIS.
1295
+  #define I2CPE_ENC_1_TYPE          I2CPE_ENC_TYPE_LINEAR   // Type of encoder:  I2CPE_ENC_TYPE_LINEAR -or-
1296
+                                                            // I2CPE_ENC_TYPE_ROTARY.
1297
+  #define I2CPE_ENC_1_TICKS_UNIT    2048                    // 1024 for magnetic strips with 2mm poles; 2048 for
1298
+                                                            // 1mm poles. For linear encoders this is ticks / mm,
1299
+                                                            // for rotary encoders this is ticks / revolution.
1300
+  //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1301
+                                                            // steps per full revolution (motor steps/rev * microstepping)
1302
+  //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1303
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1304
+  #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1305
+                                                            // printer will attempt to correct the error; errors
1306
+                                                            // smaller than this are ignored to minimize effects of
1307
+                                                            // measurement noise / latency (filter).
1308
+
1309
+  #define I2CPE_ENC_2_ADDR          I2CPE_PRESET_ADDR_Y     // Same as above, but for encoder 2.
1310
+  #define I2CPE_ENC_2_AXIS          Y_AXIS
1311
+  #define I2CPE_ENC_2_TYPE          I2CPE_ENC_TYPE_LINEAR
1312
+  #define I2CPE_ENC_2_TICKS_UNIT    2048
1313
+  //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1314
+  //#define I2CPE_ENC_2_INVERT
1315
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1316
+  #define I2CPE_ENC_2_EC_THRESH     0.10
1317
+
1318
+  #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
1319
+  #define I2CPE_ENC_3_AXIS          Z_AXIS                  // as above, or use defaults below.
1320
+
1321
+  #define I2CPE_ENC_4_ADDR          I2CPE_PRESET_ADDR_E     // Encoder 4.
1322
+  #define I2CPE_ENC_4_AXIS          E_AXIS
1323
+
1324
+  #define I2CPE_ENC_5_ADDR          34                      // Encoder 5.
1325
+  #define I2CPE_ENC_5_AXIS          E_AXIS
1326
+
1327
+  // Default settings for encoders which are enabled, but without settings configured above.
1328
+  #define I2CPE_DEF_TYPE            I2CPE_ENC_TYPE_LINEAR
1329
+  #define I2CPE_DEF_ENC_TICKS_UNIT  2048
1330
+  #define I2CPE_DEF_TICKS_REV       (16 * 200)
1331
+  #define I2CPE_DEF_EC_METHOD       I2CPE_ECM_NONE
1332
+  #define I2CPE_DEF_EC_THRESH       0.1
1333
+
1334
+  //#define I2CPE_ERR_THRESH_ABORT  100.0                   // Threshold size for error (in mm) error on any given
1335
+                                                            // axis after which the printer will abort. Comment out to
1336
+                                                            // disable abort behaviour.
1337
+
1338
+  #define I2CPE_TIME_TRUSTED        10000                   // After an encoder fault, there must be no further fault
1339
+                                                            // for this amount of time (in ms) before the encoder
1340
+                                                            // is trusted again.
1341
+
1342
+  /**
1343
+   * Position is checked every time a new command is executed from the buffer but during long moves,
1344
+   * this setting determines the minimum update time between checks. A value of 100 works well with
1345
+   * error rolling average when attempting to correct only for skips and not for vibration.
1346
+   */
1347
+  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1348
+
1349
+  // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1350
+  #define I2CPE_ERR_ROLLING_AVERAGE
1351
+
1352
+#endif // I2C_POSITION_ENCODERS
1353
+
1257 1354
 #endif // CONFIGURATION_ADV_H

+ 90
- 33
Marlin/example_configurations/wt150/Configuration.h Просмотреть файл

@@ -58,15 +58,15 @@
58 58
 //===========================================================================
59 59
 //============================= DELTA Printer ===============================
60 60
 //===========================================================================
61
-// For Delta printers start with one of the configuration files in the
61
+// For a Delta printer start with one of the configuration files in the
62 62
 // example_configurations/delta directory and customize for your machine.
63 63
 //
64 64
 
65 65
 //===========================================================================
66 66
 //============================= SCARA Printer ===============================
67 67
 //===========================================================================
68
-// For a Scara printer replace the configuration files with the files in the
69
-// example_configurations/SCARA directory.
68
+// For a SCARA printer start with the configuration files in
69
+// example_configurations/SCARA and customize for your machine.
70 70
 //
71 71
 
72 72
 // @section info
@@ -138,6 +138,25 @@
138 138
 // For Cyclops or any "multi-extruder" that shares a single nozzle.
139 139
 //#define SINGLENOZZLE
140 140
 
141
+/**
142
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
143
+ *
144
+ * This device allows one stepper driver on a control board to drive
145
+ * two to eight stepper motors, one at a time, in a manner suitable
146
+ * for extruders.
147
+ *
148
+ * This option only allows the multiplexer to switch on tool-change.
149
+ * Additional options to configure custom E moves are pending.
150
+ */
151
+//#define MK2_MULTIPLEXER
152
+#if ENABLED(MK2_MULTIPLEXER)
153
+  // Override the default DIO selector pins here, if needed.
154
+  // Some pins files may provide defaults for these pins.
155
+  //#define E_MUX0_PIN 40  // Always Required
156
+  //#define E_MUX1_PIN 42  // Needed for 3 to 8 steppers
157
+  //#define E_MUX2_PIN 44  // Needed for 5 to 8 steppers
158
+#endif
159
+
141 160
 // A dual extruder that uses a single stepper motor
142 161
 //#define SWITCHING_EXTRUDER
143 162
 #if ENABLED(SWITCHING_EXTRUDER)
@@ -311,13 +330,13 @@
311 330
                                   // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max.
312 331
   #define K1 0.95 //smoothing factor within the PID
313 332
 
333
+  // If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it
334
+
314 335
   //WT150, based on: M303 E0 S220 C8
315 336
   #define  DEFAULT_Kp 22.10
316 337
   #define  DEFAULT_Ki 1.10
317 338
   #define  DEFAULT_Kd 110.78
318 339
 
319
-  // If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it
320
-
321 340
   // Ultimaker
322 341
   //#define  DEFAULT_Kp 22.2
323 342
   //#define  DEFAULT_Ki 1.08
@@ -534,6 +553,7 @@
534 553
 #define DEFAULT_ZJERK                  0.4
535 554
 #define DEFAULT_EJERK                  5.0
536 555
 
556
+
537 557
 //===========================================================================
538 558
 //============================= Z Probe Options =============================
539 559
 //===========================================================================
@@ -570,7 +590,6 @@
570 590
  *
571 591
  */
572 592
 //#define Z_MIN_PROBE_ENDSTOP
573
-//#define Z_MIN_PROBE_PIN Z_MAX_PIN
574 593
 
575 594
 /**
576 595
  * Probe Type
@@ -885,12 +904,14 @@
885 904
   #define UBL_MESH_INSET 1          // Mesh inset margin on print area
886 905
   #define GRID_MAX_POINTS_X 10      // Don't use more than 15 points per axis, implementation limited.
887 906
   #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
888
-  #define UBL_PROBE_PT_1_X 39       // These set the probe locations for when UBL does a 3-Point leveling
889
-  #define UBL_PROBE_PT_1_Y 180      // of the mesh.
907
+
908
+  #define UBL_PROBE_PT_1_X 39       // Probing points for 3-Point leveling of the mesh
909
+  #define UBL_PROBE_PT_1_Y 180
890 910
   #define UBL_PROBE_PT_2_X 39
891 911
   #define UBL_PROBE_PT_2_Y 20
892 912
   #define UBL_PROBE_PT_3_X 180
893 913
   #define UBL_PROBE_PT_3_Y 20
914
+
894 915
   #define UBL_G26_MESH_VALIDATION   // Enable G26 mesh validation
895 916
   #define UBL_MESH_EDIT_MOVES_Z     // Sophisticated users prefer no movement of nozzle
896 917
 
@@ -945,6 +966,7 @@
945 966
 // - If stepper drivers time out, it will need X and Y homing again before Z homing.
946 967
 // - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
947 968
 // - Prevent Z homing when the Z probe is outside bed area.
969
+//
948 970
 //#define Z_SAFE_HOMING
949 971
 
950 972
 #if ENABLED(Z_SAFE_HOMING)
@@ -969,13 +991,10 @@
969 991
 // M500 - stores parameters in EEPROM
970 992
 // M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).
971 993
 // M502 - reverts to the default "factory settings".  You still need to store them in EEPROM afterwards if you want to.
972
-//define this to enable EEPROM support
973
-#define EEPROM_SETTINGS
974
-
975
-#if ENABLED(EEPROM_SETTINGS)
976
-  // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out:
977
-  #define EEPROM_CHITCHAT // Please keep turned on if you can.
978
-#endif
994
+//
995
+#define EEPROM_SETTINGS   // Enable for M500 and M501 commands
996
+//#define DISABLE_M503    // Saves ~2700 bytes of PROGMEM. Disable for release!
997
+#define EEPROM_CHITCHAT   // Give feedback on EEPROM commands. Disable to save PROGMEM.
979 998
 
980 999
 //
981 1000
 // Host Keepalive
@@ -1134,10 +1153,11 @@
1134 1153
  *
1135 1154
  * Select the language to display on the LCD. These languages are available:
1136 1155
  *
1137
- *    en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
1138
- *    kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk, test
1156
+ *    en, an, bg, ca, cn, cz, cz_utf8, de, el, el-gr, es, eu, fi, fr, gl, hr,
1157
+ *    it, kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, tr, uk,
1158
+ *    zh_CN, zh_TW, test
1139 1159
  *
1140
- * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'test':'TEST' }
1160
+ * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cn':'Chinese', 'cz':'Czech', 'cz_utf8':'Czech (UTF8)', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'kana':'Japanese', 'kana_utf8':'Japanese (UTF8)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'pt-br_utf8':'Portuguese (Brazilian UTF8)', 'pt_utf8':'Portuguese (UTF8)', 'ru':'Russian', 'tr':'Turkish', 'uk':'Ukrainian', 'zh_CN':'Chinese (Simplified)', 'zh_TW':'Chinese (Taiwan)', test':'TEST' }
1141 1161
  */
1142 1162
 #define LCD_LANGUAGE en
1143 1163
 
@@ -1286,12 +1306,6 @@
1286 1306
 //#define ULTIPANEL
1287 1307
 
1288 1308
 //
1289
-// Cartesio UI
1290
-// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1291
-//
1292
-//#define CARTESIO_UI
1293
-
1294
-//
1295 1309
 // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
1296 1310
 // http://reprap.org/wiki/PanelOne
1297 1311
 //
@@ -1374,6 +1388,27 @@
1374 1388
 //#define BQ_LCD_SMART_CONTROLLER
1375 1389
 
1376 1390
 //
1391
+// Cartesio UI
1392
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
1393
+//
1394
+//#define CARTESIO_UI
1395
+
1396
+//
1397
+// ANET_10 Controller supported displays.
1398
+//
1399
+//#define ANET_KEYPAD_LCD         // Requires ADC_KEYPAD_PIN to be assigned to an analog pin.
1400
+                                  // This LCD is known to be susceptible to electrical interference
1401
+                                  // which scrambles the display.  Pressing any button clears it up.
1402
+//#define ANET_FULL_GRAPHICS_LCD  // Anet 128x64 full graphics lcd with rotary encoder as used on Anet A6
1403
+                                  // A clone of the RepRapDiscount full graphics display but with
1404
+                                  // different pins/wiring (see pins_ANET_10.h).
1405
+
1406
+//
1407
+// LCD for Melzi Card with Graphical LCD
1408
+//
1409
+//#define LCD_FOR_MELZI
1410
+
1411
+//
1377 1412
 // CONTROLLER TYPE: I2C
1378 1413
 //
1379 1414
 // Note: These controllers require the installation of Arduino's LiquidCrystal_I2C
@@ -1389,6 +1424,9 @@
1389 1424
 //
1390 1425
 // Sainsmart YW Robot (LCM1602) LCD Display
1391 1426
 //
1427
+// Note: This controller requires F.Malpartida's LiquidCrystal_I2C library
1428
+// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
1429
+//
1392 1430
 //#define LCD_I2C_SAINSMART_YWROBOT
1393 1431
 
1394 1432
 //
@@ -1420,6 +1458,11 @@
1420 1458
 //#define U8GLIB_SSD1306
1421 1459
 
1422 1460
 //
1461
+// TinyBoy2 128x64 OLED / Encoder Panel
1462
+//
1463
+//#define OLED_PANEL_TINYBOY2
1464
+
1465
+//
1423 1466
 // SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
1424 1467
 //
1425 1468
 //#define SAV_3DGLCD
@@ -1436,11 +1479,6 @@
1436 1479
 //
1437 1480
 //#define SAV_3DLCD
1438 1481
 
1439
-//
1440
-// TinyBoy2 128x64 OLED / Encoder Panel
1441
-//
1442
-//#define OLED_PANEL_TINYBOY2
1443
-
1444 1482
 //=============================================================================
1445 1483
 //=============================== Extra Features ==============================
1446 1484
 //=============================================================================
@@ -1479,13 +1517,32 @@
1479 1517
 // SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure
1480 1518
 //#define SF_ARC_FIX
1481 1519
 
1482
-// Support for the BariCUDA Paste Extruder.
1520
+// Support for the BariCUDA Paste Extruder
1483 1521
 //#define BARICUDA
1484 1522
 
1485
-//define BlinkM/CyzRgb Support
1523
+// Support for BlinkM/CyzRgb
1486 1524
 //#define BLINKM
1487 1525
 
1488
-// Support for an RGB LED using 3 separate pins with optional PWM
1526
+// Support for PCA9632 PWM LED driver
1527
+//#define PCA9632
1528
+
1529
+/**
1530
+ * RGB LED / LED Strip Control
1531
+ *
1532
+ * Enable support for an RGB LED connected to 5V digital pins, or
1533
+ * an RGB Strip connected to MOSFETs controlled by digital pins.
1534
+ *
1535
+ * Adds the M150 command to set the LED (or LED strip) color.
1536
+ * If pins are PWM capable (e.g., 4, 5, 6, 11) then a range of
1537
+ * luminance values can be set from 0 to 255.
1538
+ *
1539
+ * *** CAUTION ***
1540
+ *  LED Strips require a MOFSET Chip between PWM lines and LEDs,
1541
+ *  as the Arduino cannot handle the current the LEDs will require.
1542
+ *  Failure to follow this precaution can destroy your Arduino!
1543
+ * *** CAUTION ***
1544
+ *
1545
+ */
1489 1546
 //#define RGB_LED
1490 1547
 //#define RGBW_LED
1491 1548
 #if ENABLED(RGB_LED) || ENABLED(RGBW_LED)
@@ -1506,7 +1563,7 @@
1506 1563
  *  - Change to green once print has finished
1507 1564
  *  - Turn off after the print has finished and the user has pushed a button
1508 1565
  */
1509
-#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED)
1566
+#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED) || ENABLED(PCA9632)
1510 1567
   #define PRINTER_EVENT_LEDS
1511 1568
 #endif
1512 1569
 

+ 201
- 17
Marlin/example_configurations/wt150/Configuration_adv.h Просмотреть файл

@@ -123,8 +123,8 @@
123 123
   #define AUTOTEMP_OLDWEIGHT 0.98
124 124
 #endif
125 125
 
126
-//Show Temperature ADC value
127
-//The M105 command return, besides traditional information, the ADC value read from temperature sensors.
126
+// Show Temperature ADC value
127
+// Enable for M105 to include ADC values read from temperature sensors.
128 128
 //#define SHOW_TEMP_ADC_VALUES
129 129
 
130 130
 /**
@@ -419,16 +419,16 @@
419 419
  *    M908 - BQ_ZUM_MEGA_3D, RAMBO, PRINTRBOARD_REVF, RIGIDBOARD_V2 & SCOOVO_X9H
420 420
  *    M909, M910 & LCD - only PRINTRBOARD_REVF & RIGIDBOARD_V2
421 421
  */
422
-//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps
423
-//#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
424
-//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 } // Default drive percent - X, Y, Z, E axis
422
+//#define PWM_MOTOR_CURRENT { 1300, 1300, 1250 }          // Values in milliamps
423
+//#define DIGIPOT_MOTOR_CURRENT { 135,135,135,135,135 }   // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
424
+//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 }    // Default drive percent - X, Y, Z, E axis
425 425
 
426 426
 // Uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro
427 427
 #define DIGIPOT_I2C
428
-#define DIGIPOT_MCP4018
428
+#define DIGIPOT_MCP4018          // Requires library from https://github.com/stawel/SlowSoftI2CMaster
429 429
 #define DIGIPOT_I2C_NUM_CHANNELS 5 // 5DPRINT: 4     AZTEEG_X3_PRO: 8
430 430
 // Actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS
431
-#define DIGIPOT_I2C_MOTOR_CURRENTS {0.68, 0.68, 1.18, 1.27, 1.27}
431
+#define DIGIPOT_I2C_MOTOR_CURRENTS {0.22, 0.22, 0.39, 0.42, 0.42}
432 432
 
433 433
 //===========================================================================
434 434
 //=============================Additional Features===========================
@@ -648,7 +648,7 @@
648 648
    *
649 649
    * Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
650 650
    *
651
-   * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
651
+   * Slic3r (including Průša Slic3r) produces Gcode compatible with the automatic mode.
652 652
    * Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
653 653
    */
654 654
   #define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
@@ -670,14 +670,24 @@
670 670
   #define UBL_MESH_MAX_X (X_MAX_POS - (UBL_MESH_INSET))
671 671
   #define UBL_MESH_MIN_Y (Y_MIN_POS + UBL_MESH_INSET)
672 672
   #define UBL_MESH_MAX_Y (Y_MAX_POS - (UBL_MESH_INSET))
673
+
674
+  // If this is defined, the currently active mesh will be saved in the
675
+  // current slot on M500.
676
+  #define UBL_SAVE_ACTIVE_ON_M500
673 677
 #endif
674 678
 
675 679
 // @section extras
676 680
 
677
-// Arc interpretation settings:
678
-#define ARC_SUPPORT  // Disabling this saves ~2738 bytes
679
-#define MM_PER_ARC_SEGMENT 1
680
-#define N_ARC_CORRECTION 25
681
+//
682
+// G2/G3 Arc Support
683
+//
684
+#define ARC_SUPPORT               // Disable this feature to save ~3226 bytes
685
+#if ENABLED(ARC_SUPPORT)
686
+  #define MM_PER_ARC_SEGMENT  1   // Length of each arc segment
687
+  #define N_ARC_CORRECTION   25   // Number of intertpolated segments between corrections
688
+  //#define ARC_P_CIRCLES         // Enable the 'P' parameter to specify complete circles
689
+  //#define CNC_WORKSPACE_PLANES  // Allow G2/G3 to operate in XY, ZX, or YZ planes
690
+#endif
681 691
 
682 692
 // Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
683 693
 //#define BEZIER_CURVE_SUPPORT
@@ -789,7 +799,7 @@
789 799
                                               // Longer length for bowden printers to unload filament from whole bowden tube,
790 800
                                               // shorter length for printers without bowden to unload filament from extruder only,
791 801
                                               // 0 to disable unloading for manual unloading
792
-  #define FILAMENT_CHANGE_LOAD_FEEDRATE 10    // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
802
+  #define FILAMENT_CHANGE_LOAD_FEEDRATE 6     // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast
793 803
   #define FILAMENT_CHANGE_LOAD_LENGTH 0       // Load filament length over hotend in mm
794 804
                                               // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,
795 805
                                               // Short or zero length for printers without bowden where loading is not used
@@ -803,6 +813,7 @@
803 813
   #define PAUSE_PARK_NO_STEPPER_TIMEOUT       // Enable to have stepper motors hold position during filament change
804 814
                                               // even if it takes longer than DEFAULT_STEPPER_DEACTIVE_TIME.
805 815
   //#define PARK_HEAD_ON_PAUSE                // Go to filament change position on pause, return to print position on resume
816
+  //#define HOME_BEFORE_FILAMENT_CHANGE       // Ensure homing has been completed prior to parking for filament change
806 817
 #endif
807 818
 
808 819
 // @section tmc
@@ -1195,12 +1206,12 @@
1195 1206
 /**
1196 1207
  * Auto-report temperatures with M155 S<seconds>
1197 1208
  */
1198
-//#define AUTO_REPORT_TEMPERATURES
1209
+#define AUTO_REPORT_TEMPERATURES
1199 1210
 
1200 1211
 /**
1201 1212
  * Include capabilities in M115 output
1202 1213
  */
1203
-//#define EXTENDED_CAPABILITIES_REPORT
1214
+#define EXTENDED_CAPABILITIES_REPORT
1204 1215
 
1205 1216
 /**
1206 1217
  * Volumetric extrusion default state
@@ -1253,8 +1264,181 @@
1253 1264
   #define USER_DESC_4 "Heat Bed/Home/Level"
1254 1265
   #define USER_GCODE_4 "M140 S" STRINGIFY(PREHEAT_2_TEMP_BED) "\nG28\nG29"
1255 1266
 
1256
-  //#define USER_DESC_5 "Home & Info"
1257
-  //#define USER_GCODE_5 "G28\nM503"
1267
+  #define USER_DESC_5 "Home & Info"
1268
+  #define USER_GCODE_5 "G28\nM503"
1269
+#endif
1270
+
1271
+//===========================================================================
1272
+//============================ I2C Encoder Settings =========================
1273
+//===========================================================================
1274
+/**
1275
+ *  I2C position encoders for closed loop control.
1276
+ *  Developed by Chris Barr at Aus3D.
1277
+ *
1278
+ *  Wiki: http://wiki.aus3d.com.au/Magnetic_Encoder
1279
+ *  Github: https://github.com/Aus3D/MagneticEncoder
1280
+ *
1281
+ *  Supplier: http://aus3d.com.au/magnetic-encoder-module
1282
+ *  Alternative Supplier: http://reliabuild3d.com/
1283
+ *
1284
+ *  Reilabuild encoders have been modified to improve reliability.
1285
+ */
1286
+
1287
+//#define I2C_POSITION_ENCODERS
1288
+#if ENABLED(I2C_POSITION_ENCODERS)
1289
+
1290
+  #define I2CPE_ENCODER_CNT         1                       // The number of encoders installed; max of 5
1291
+                                                            // encoders supported currently.
1292
+
1293
+  #define I2CPE_ENC_1_ADDR          I2CPE_PRESET_ADDR_X     // I2C address of the encoder. 30-200.
1294
+  #define I2CPE_ENC_1_AXIS          X_AXIS                  // Axis the encoder module is installed on.  <X|Y|Z|E>_AXIS.
1295
+  #define I2CPE_ENC_1_TYPE          I2CPE_ENC_TYPE_LINEAR   // Type of encoder:  I2CPE_ENC_TYPE_LINEAR -or-
1296
+                                                            // I2CPE_ENC_TYPE_ROTARY.
1297
+  #define I2CPE_ENC_1_TICKS_UNIT    2048                    // 1024 for magnetic strips with 2mm poles; 2048 for
1298
+                                                            // 1mm poles. For linear encoders this is ticks / mm,
1299
+                                                            // for rotary encoders this is ticks / revolution.
1300
+  //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1301
+                                                            // steps per full revolution (motor steps/rev * microstepping)
1302
+  //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1303
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1304
+  #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1305
+                                                            // printer will attempt to correct the error; errors
1306
+                                                            // smaller than this are ignored to minimize effects of
1307
+                                                            // measurement noise / latency (filter).
1308
+
1309
+  #define I2CPE_ENC_2_ADDR          I2CPE_PRESET_ADDR_Y     // Same as above, but for encoder 2.
1310
+  #define I2CPE_ENC_2_AXIS          Y_AXIS
1311
+  #define I2CPE_ENC_2_TYPE          I2CPE_ENC_TYPE_LINEAR
1312
+  #define I2CPE_ENC_2_TICKS_UNIT    2048
1313
+  //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1314
+  //#define I2CPE_ENC_2_INVERT
1315
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1316
+  #define I2CPE_ENC_2_EC_THRESH     0.10
1317
+
1318
+  #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
1319
+  #define I2CPE_ENC_3_AXIS          Z_AXIS                  // as above, or use defaults below.
1320
+
1321
+  #define I2CPE_ENC_4_ADDR          I2CPE_PRESET_ADDR_E     // Encoder 4.
1322
+  #define I2CPE_ENC_4_AXIS          E_AXIS
1323
+
1324
+  #define I2CPE_ENC_5_ADDR          34                      // Encoder 5.
1325
+  #define I2CPE_ENC_5_AXIS          E_AXIS
1326
+
1327
+  // Default settings for encoders which are enabled, but without settings configured above.
1328
+  #define I2CPE_DEF_TYPE            I2CPE_ENC_TYPE_LINEAR
1329
+  #define I2CPE_DEF_ENC_TICKS_UNIT  2048
1330
+  #define I2CPE_DEF_TICKS_REV       (16 * 200)
1331
+  #define I2CPE_DEF_EC_METHOD       I2CPE_ECM_NONE
1332
+  #define I2CPE_DEF_EC_THRESH       0.1
1333
+
1334
+  //#define I2CPE_ERR_THRESH_ABORT  100.0                   // Threshold size for error (in mm) error on any given
1335
+                                                            // axis after which the printer will abort. Comment out to
1336
+                                                            // disable abort behaviour.
1337
+
1338
+  #define I2CPE_TIME_TRUSTED        10000                   // After an encoder fault, there must be no further fault
1339
+                                                            // for this amount of time (in ms) before the encoder
1340
+                                                            // is trusted again.
1341
+
1342
+  /**
1343
+   * Position is checked every time a new command is executed from the buffer but during long moves,
1344
+   * this setting determines the minimum update time between checks. A value of 100 works well with
1345
+   * error rolling average when attempting to correct only for skips and not for vibration.
1346
+   */
1347
+  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1348
+
1349
+  // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1350
+  #define I2CPE_ERR_ROLLING_AVERAGE
1351
+
1258 1352
 #endif
1259 1353
 
1354
+/**
1355
+ * Specify an action command to send to the host when the printer is killed.
1356
+ * Will be sent in the form '//action:ACTION_ON_KILL', e.g. '//action:poweroff'.
1357
+ * The host must be configured to handle the action command.
1358
+ */
1359
+//#define ACTION_ON_KILL "poweroff"
1360
+
1361
+//===========================================================================
1362
+//====================== I2C Position Encoder Settings ======================
1363
+//===========================================================================
1364
+/**
1365
+ *  I2C position encoders for closed loop control.
1366
+ *  Developed by Chris Barr at Aus3D.
1367
+ *
1368
+ *  Wiki: http://wiki.aus3d.com.au/Magnetic_Encoder
1369
+ *  Github: https://github.com/Aus3D/MagneticEncoder
1370
+ *
1371
+ *  Supplier: http://aus3d.com.au/magnetic-encoder-module
1372
+ *  Alternative Supplier: http://reliabuild3d.com/
1373
+ *
1374
+ *  Reilabuild encoders have been modified to improve reliability.
1375
+ */
1376
+
1377
+//#define I2C_POSITION_ENCODERS
1378
+#if ENABLED(I2C_POSITION_ENCODERS)
1379
+
1380
+  #define I2CPE_ENCODER_CNT         1                       // The number of encoders installed; max of 5
1381
+                                                            // encoders supported currently.
1382
+
1383
+  #define I2CPE_ENC_1_ADDR          I2CPE_PRESET_ADDR_X     // I2C address of the encoder. 30-200.
1384
+  #define I2CPE_ENC_1_AXIS          X_AXIS                  // Axis the encoder module is installed on.  <X|Y|Z|E>_AXIS.
1385
+  #define I2CPE_ENC_1_TYPE          I2CPE_ENC_TYPE_LINEAR   // Type of encoder:  I2CPE_ENC_TYPE_LINEAR -or-
1386
+                                                            // I2CPE_ENC_TYPE_ROTARY.
1387
+  #define I2CPE_ENC_1_TICKS_UNIT    2048                    // 1024 for magnetic strips with 2mm poles; 2048 for
1388
+                                                            // 1mm poles. For linear encoders this is ticks / mm,
1389
+                                                            // for rotary encoders this is ticks / revolution.
1390
+  //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1391
+                                                            // steps per full revolution (motor steps/rev * microstepping)
1392
+  //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1393
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1394
+  #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1395
+                                                            // printer will attempt to correct the error; errors
1396
+                                                            // smaller than this are ignored to minimize effects of
1397
+                                                            // measurement noise / latency (filter).
1398
+
1399
+  #define I2CPE_ENC_2_ADDR          I2CPE_PRESET_ADDR_Y     // Same as above, but for encoder 2.
1400
+  #define I2CPE_ENC_2_AXIS          Y_AXIS
1401
+  #define I2CPE_ENC_2_TYPE          I2CPE_ENC_TYPE_LINEAR
1402
+  #define I2CPE_ENC_2_TICKS_UNIT    2048
1403
+  //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1404
+  //#define I2CPE_ENC_2_INVERT
1405
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1406
+  #define I2CPE_ENC_2_EC_THRESH     0.10
1407
+
1408
+  #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
1409
+  #define I2CPE_ENC_3_AXIS          Z_AXIS                  // as above, or use defaults below.
1410
+
1411
+  #define I2CPE_ENC_4_ADDR          I2CPE_PRESET_ADDR_E     // Encoder 4.
1412
+  #define I2CPE_ENC_4_AXIS          E_AXIS
1413
+
1414
+  #define I2CPE_ENC_5_ADDR          34                      // Encoder 5.
1415
+  #define I2CPE_ENC_5_AXIS          E_AXIS
1416
+
1417
+  // Default settings for encoders which are enabled, but without settings configured above.
1418
+  #define I2CPE_DEF_TYPE            I2CPE_ENC_TYPE_LINEAR
1419
+  #define I2CPE_DEF_ENC_TICKS_UNIT  2048
1420
+  #define I2CPE_DEF_TICKS_REV       (16 * 200)
1421
+  #define I2CPE_DEF_EC_METHOD       I2CPE_ECM_NONE
1422
+  #define I2CPE_DEF_EC_THRESH       0.1
1423
+
1424
+  //#define I2CPE_ERR_THRESH_ABORT  100.0                   // Threshold size for error (in mm) error on any given
1425
+                                                            // axis after which the printer will abort. Comment out to
1426
+                                                            // disable abort behaviour.
1427
+
1428
+  #define I2CPE_TIME_TRUSTED        10000                   // After an encoder fault, there must be no further fault
1429
+                                                            // for this amount of time (in ms) before the encoder
1430
+                                                            // is trusted again.
1431
+
1432
+  /**
1433
+   * Position is checked every time a new command is executed from the buffer but during long moves,
1434
+   * this setting determines the minimum update time between checks. A value of 100 works well with
1435
+   * error rolling average when attempting to correct only for skips and not for vibration.
1436
+   */
1437
+  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1438
+
1439
+  // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1440
+  #define I2CPE_ERR_ROLLING_AVERAGE
1441
+
1442
+#endif // I2C_POSITION_ENCODERS
1443
+
1260 1444
 #endif // CONFIGURATION_ADV_H

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

@@ -32,27 +32,25 @@
32 32
 #include <avr/io.h>
33 33
 #include "macros.h"
34 34
 
35
-/**
36
- * Enable this option to use Teensy++ 2.0 assignments for AT90USB processors.
37
- */
38
-//#define AT90USBxx_TEENSYPP_ASSIGNMENTS
35
+#define AVR_AT90USB1286_FAMILY (defined(__AVR_AT90USB1287__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1286P__) || defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB646P__)  || defined(__AVR_AT90USB647__))
36
+#define AVR_ATmega1284_FAMILY (defined(__AVR_ATmega644__) || defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644PA__) || defined(__AVR_ATmega1284P__))
37
+#define AVR_ATmega2560_FAMILY (defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__))
38
+#define AVR_ATmega2561_FAMILY (defined(__AVR_ATmega1281__) || defined(__AVR_ATmega2561__))
39
+#define AVR_ATmega328_FAMILY (defined(__AVR_ATmega168__) || defined(__AVR_ATmega328__) || defined(__AVR_ATmega328p__))
40
+
39 41
 
40 42
 /**
41 43
  * Include Ports and Functions
42 44
  */
43
-#if defined(__AVR_ATmega168__) || defined(__AVR_ATmega328__) || defined(__AVR_ATmega328P__)
45
+#if AVR_ATmega328_FAMILY
44 46
   #include "fastio_168.h"
45
-#elif defined(__AVR_ATmega644__) || defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644PA__) || defined(__AVR_ATmega1284P__)
47
+#elif AVR_ATmega1284_FAMILY
46 48
   #include "fastio_644.h"
47
-#elif defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
49
+#elif AVR_ATmega2560_FAMILY
48 50
   #include "fastio_1280.h"
49
-#elif defined(__AVR_AT90USB1287__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__)
50
-  #ifdef AT90USBxx_TEENSYPP_ASSIGNMENTS
51
-    #include "fastio_AT90USB-Teensy.h"
52
-  #else
53
-    #include "fastio_AT90USB-Marlin.h"
54
-  #endif
55
-#elif defined(__AVR_ATmega1281__) || defined(__AVR_ATmega2561__)
51
+#elif AVR_AT90USB1286_FAMILY
52
+  #include "fastio_AT90USB.h"
53
+#elif AVR_ATmega2561_FAMILY
56 54
   #include "fastio_1281.h"
57 55
 #else
58 56
   #error "Pins for this chip not defined in Arduino.h! If you have a working pins definition, please contribute!"
@@ -217,10 +215,6 @@ typedef enum {
217 215
 
218 216
 // Set Compare Mode bits
219 217
 #define _SET_COM(T,Q,V) (TCCR##T##Q = (TCCR##T##Q & ~(0x3 << COM##T##Q##0)) | (int(V) << COM##T##Q##0))
220
-#define _SET_COMA(T,V) _SET_COM(T,A,V)
221
-#define _SET_COMB(T,V) _SET_COM(T,B,V)
222
-#define _SET_COMC(T,V) _SET_COM(T,C,V)
223
-#define _SET_COMS(T,V1,V2,V3) do{ _SET_COMA(T,V1); _SET_COMB(T,V2); _SET_COMC(T,V3); }while(0)
224 218
 #define SET_COM(T,Q,V) _SET_COM(T,Q,COM_##V)
225 219
 #define SET_COMA(T,V) SET_COM(T,A,V)
226 220
 #define SET_COMB(T,V) SET_COM(T,B,V)
@@ -243,11 +237,6 @@ typedef enum {
243 237
 /**
244 238
  * PWM availability macros
245 239
  */
246
-#define AVR_AT90USB1286_FAMILY (defined(__AVR_AT90USB1287__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1286P__) || defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB646P__)  || defined(__AVR_AT90USB647__))
247
-#define AVR_ATmega1284_FAMILY (defined(__AVR_ATmega644__) || defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644PA__) || defined(__AVR_ATmega1284P__))
248
-#define AVR_ATmega2560_FAMILY (defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__))
249
-#define AVR_ATmega2561_FAMILY (defined(__AVR_ATmega1281__) || defined(__AVR_ATmega2561__))
250
-#define AVR_ATmega328_FAMILY (defined(__AVR_ATmega168__) || defined(__AVR_ATmega328__) || defined(__AVR_ATmega328p__))
251 240
 
252 241
 //find out which harware PWMs are already in use
253 242
 #if PIN_EXISTS(CONTROLLER_FAN)

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

@@ -1,681 +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
- * Pin mapping (Marlin) for AT90USB646, 647, 1286, and 1287
25
- *
26
- *   AT90USB  51 50 49 48 47 46 45 44 10 11 12 13 14 15 16 17 35 36 37 38 39 40 41 42 25 26 27 28 29 30 31 32 33 34 43 09 18 19 01 02 61 60 59 58 57 56 55 54
27
- *   Teensy   28 29 30 31 32 33 34 35 20 21 22 23 24 25 26 27 10 11 12 13 14 15 16 17 00 01 02 03 04 05 06 07 08 09(46*47)36 37 18 19 38 39 40 41 42 43 44 45
28
- *   Port     A0 A1 A2 A3 A4 A5 A6 A7 B0 B1 B2 B3 B4 B5 B6 B7 C0 C1 C2 C3 C4 C5 C6 C7 D0 D1 D2 D3 D4 D5 D6 D7 E0 E1 E2 E3 E4 E5 E6 E7 F0 F1 F2 F3 F4 F5 F6 F7
29
- * > Marlin   00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
30
- *            The pins 46 and 47 are not supported by Teensyduino, but are supported below.
31
- */
32
-
33
-#ifndef _FASTIO_AT90USB
34
-#define _FASTIO_AT90USB
35
-
36
-#include "fastio.h"
37
-
38
-// change for your board
39
-#define DEBUG_LED   DIO31 /* led D5 red */
40
-
41
-// SPI
42
-#define SCK         DIO9   // 21
43
-#define MISO        DIO11  // 23
44
-#define MOSI        DIO10  // 22
45
-#define SS          DIO8   // 20
46
-
47
-// Digital I/O
48
-
49
-#define DIO0_PIN    PINA0
50
-#define DIO0_RPORT  PINA
51
-#define DIO0_WPORT  PORTA
52
-#define DIO0_PWM    NULL
53
-#define DIO0_DDR    DDRA
54
-
55
-#define DIO1_PIN    PINA1
56
-#define DIO1_RPORT  PINA
57
-#define DIO1_WPORT  PORTA
58
-#define DIO1_PWM    NULL
59
-#define DIO1_DDR    DDRA
60
-
61
-#define DIO2_PIN    PINA2
62
-#define DIO2_RPORT  PINA
63
-#define DIO2_WPORT  PORTA
64
-#define DIO2_PWM    NULL
65
-#define DIO2_DDR    DDRA
66
-
67
-#define DIO3_PIN    PINA3
68
-#define DIO3_RPORT  PINA
69
-#define DIO3_WPORT  PORTA
70
-#define DIO3_PWM    NULL
71
-#define DIO3_DDR    DDRA
72
-
73
-#define DIO4_PIN    PINA4
74
-#define DIO4_RPORT  PINA
75
-#define DIO4_WPORT  PORTA
76
-#define DIO4_PWM    NULL
77
-#define DIO4_DDR    DDRA
78
-
79
-#define DIO5_PIN    PINA5
80
-#define DIO5_RPORT  PINA
81
-#define DIO5_WPORT  PORTA
82
-#define DIO5_PWM    NULL
83
-#define DIO5_DDR    DDRA
84
-
85
-#define DIO6_PIN    PINA6
86
-#define DIO6_RPORT  PINA
87
-#define DIO6_WPORT  PORTA
88
-#define DIO6_PWM    NULL
89
-#define DIO6_DDR    DDRA
90
-
91
-#define DIO7_PIN    PINA7
92
-#define DIO7_RPORT  PINA
93
-#define DIO7_WPORT  PORTA
94
-#define DIO7_PWM    NULL
95
-#define DIO7_DDR    DDRA
96
-
97
-#define DIO8_PIN    PINB0
98
-#define DIO8_RPORT  PINB
99
-#define DIO8_WPORT  PORTB
100
-#define DIO8_PWM    NULL
101
-#define DIO8_DDR    DDRB
102
-
103
-#define DIO9_PIN    PINB1
104
-#define DIO9_RPORT  PINB
105
-#define DIO9_WPORT  PORTB
106
-#define DIO9_PWM    NULL
107
-#define DIO9_DDR    DDRB
108
-
109
-#define DIO10_PIN   PINB2
110
-#define DIO10_RPORT PINB
111
-#define DIO10_WPORT PORTB
112
-#define DIO10_PWM   NULL
113
-#define DIO10_DDR   DDRB
114
-
115
-#define DIO11_PIN   PINB3
116
-#define DIO11_RPORT PINB
117
-#define DIO11_WPORT PORTB
118
-#define DIO11_PWM   NULL
119
-#define DIO11_DDR   DDRB
120
-
121
-#define DIO12_PIN   PINB4
122
-#define DIO12_RPORT PINB
123
-#define DIO12_WPORT PORTB
124
-#define DIO12_PWM   NULL
125
-#define DIO12_DDR   DDRB
126
-
127
-#define DIO13_PIN   PINB5
128
-#define DIO13_RPORT PINB
129
-#define DIO13_WPORT PORTB
130
-#define DIO13_PWM   NULL
131
-#define DIO13_DDR   DDRB
132
-
133
-#define DIO14_PIN   PINB6
134
-#define DIO14_RPORT PINB
135
-#define DIO14_WPORT PORTB
136
-#define DIO14_PWM   NULL
137
-#define DIO14_DDR   DDRB
138
-
139
-#define DIO15_PIN   PINB7
140
-#define DIO15_RPORT PINB
141
-#define DIO15_WPORT PORTB
142
-#define DIO15_PWM   NULL
143
-#define DIO15_DDR   DDRB
144
-
145
-#define DIO16_PIN   PINC0
146
-#define DIO16_RPORT PINC
147
-#define DIO16_WPORT PORTC
148
-#define DIO16_PWM   NULL
149
-#define DIO16_DDR   DDRC
150
-
151
-#define DIO17_PIN   PINC1
152
-#define DIO17_RPORT PINC
153
-#define DIO17_WPORT PORTC
154
-#define DIO17_PWM   NULL
155
-#define DIO17_DDR   DDRC
156
-
157
-#define DIO18_PIN   PINC2
158
-#define DIO18_RPORT PINC
159
-#define DIO18_WPORT PORTC
160
-#define DIO18_PWM   NULL
161
-#define DIO18_DDR   DDRC
162
-
163
-#define DIO19_PIN   PINC3
164
-#define DIO19_RPORT PINC
165
-#define DIO19_WPORT PORTC
166
-#define DIO19_PWM   NULL
167
-#define DIO19_DDR   DDRC
168
-
169
-#define DIO20_PIN   PINC4
170
-#define DIO20_RPORT PINC
171
-#define DIO20_WPORT PORTC
172
-#define DIO20_PWM   NULL
173
-#define DIO20_DDR   DDRC
174
-
175
-#define DIO21_PIN   PINC5
176
-#define DIO21_RPORT PINC
177
-#define DIO21_WPORT PORTC
178
-#define DIO21_PWM   NULL
179
-#define DIO21_DDR   DDRC
180
-
181
-#define DIO22_PIN   PINC6
182
-#define DIO22_RPORT PINC
183
-#define DIO22_WPORT PORTC
184
-#define DIO22_PWM   NULL
185
-#define DIO22_DDR   DDRC
186
-
187
-#define DIO23_PIN   PINC7
188
-#define DIO23_RPORT PINC
189
-#define DIO23_WPORT PORTC
190
-#define DIO23_PWM   NULL
191
-#define DIO23_DDR   DDRC
192
-
193
-#define DIO24_PIN   PIND0
194
-#define DIO24_RPORT PIND
195
-#define DIO24_WPORT PORTD
196
-#define DIO24_PWM   NULL
197
-#define DIO24_DDR   DDRD
198
-
199
-#define DIO25_PIN   PIND1
200
-#define DIO25_RPORT PIND
201
-#define DIO25_WPORT PORTD
202
-#define DIO25_PWM   NULL
203
-#define DIO25_DDR   DDRD
204
-
205
-#define DIO26_PIN   PIND2
206
-#define DIO26_RPORT PIND
207
-#define DIO26_WPORT PORTD
208
-#define DIO26_PWM   NULL
209
-#define DIO26_DDR   DDRD
210
-
211
-#define DIO27_PIN   PIND3
212
-#define DIO27_RPORT PIND
213
-#define DIO27_WPORT PORTD
214
-#define DIO27_PWM   NULL
215
-#define DIO27_DDR   DDRD
216
-
217
-#define DIO28_PIN   PIND4
218
-#define DIO28_RPORT PIND
219
-#define DIO28_WPORT PORTD
220
-#define DIO28_PWM   NULL
221
-#define DIO28_DDR   DDRD
222
-
223
-#define DIO29_PIN   PIND5
224
-#define DIO29_RPORT PIND
225
-#define DIO29_WPORT PORTD
226
-#define DIO29_PWM   NULL
227
-#define DIO29_DDR   DDRD
228
-
229
-#define DIO30_PIN   PIND6
230
-#define DIO30_RPORT PIND
231
-#define DIO30_WPORT PORTD
232
-#define DIO30_PWM   NULL
233
-#define DIO30_DDR   DDRD
234
-
235
-#define DIO31_PIN   PIND7
236
-#define DIO31_RPORT PIND
237
-#define DIO31_WPORT PORTD
238
-#define DIO31_PWM   NULL
239
-#define DIO31_DDR   DDRD
240
-
241
-#define DIO32_PIN   PINE0
242
-#define DIO32_RPORT PINE
243
-#define DIO32_WPORT PORTE
244
-#define DIO32_PWM   NULL
245
-#define DIO32_DDR   DDRE
246
-
247
-#define DIO33_PIN   PINE1
248
-#define DIO33_RPORT PINE
249
-#define DIO33_WPORT PORTE
250
-#define DIO33_PWM   NULL
251
-#define DIO33_DDR   DDRE
252
-
253
-#define DIO34_PIN   PINE2
254
-#define DIO34_RPORT PINE
255
-#define DIO34_WPORT PORTE
256
-#define DIO34_PWM   NULL
257
-#define DIO34_DDR   DDRE
258
-
259
-#define DIO35_PIN   PINE3
260
-#define DIO35_RPORT PINE
261
-#define DIO35_WPORT PORTE
262
-#define DIO35_PWM   NULL
263
-#define DIO35_DDR   DDRE
264
-
265
-#define DIO36_PIN   PINE4
266
-#define DIO36_RPORT PINE
267
-#define DIO36_WPORT PORTE
268
-#define DIO36_PWM   NULL
269
-#define DIO36_DDR   DDRE
270
-
271
-#define DIO37_PIN   PINE5
272
-#define DIO37_RPORT PINE
273
-#define DIO37_WPORT PORTE
274
-#define DIO37_PWM   NULL
275
-#define DIO37_DDR   DDRE
276
-
277
-#define DIO38_PIN   PINE6
278
-#define DIO38_RPORT PINE
279
-#define DIO38_WPORT PORTE
280
-#define DIO38_PWM   NULL
281
-#define DIO38_DDR   DDRE
282
-
283
-#define DIO39_PIN   PINE7
284
-#define DIO39_RPORT PINE
285
-#define DIO39_WPORT PORTE
286
-#define DIO39_PWM   NULL
287
-#define DIO39_DDR   DDRE
288
-
289
-#define AIO0_PIN    PINF0
290
-#define AIO0_RPORT  PINF
291
-#define AIO0_WPORT  PORTF
292
-#define AIO0_PWM    NULL
293
-#define AIO0_DDR    DDRF
294
-
295
-#define AIO1_PIN    PINF1
296
-#define AIO1_RPORT  PINF
297
-#define AIO1_WPORT  PORTF
298
-#define AIO1_PWM    NULL
299
-#define AIO1_DDR    DDRF
300
-
301
-#define AIO2_PIN    PINF2
302
-#define AIO2_RPORT  PINF
303
-#define AIO2_WPORT  PORTF
304
-#define AIO2_PWM    NULL
305
-#define AIO2_DDR    DDRF
306
-
307
-#define AIO3_PIN    PINF3
308
-#define AIO3_RPORT  PINF
309
-#define AIO3_WPORT  PORTF
310
-#define AIO3_PWM    NULL
311
-#define AIO3_DDR    DDRF
312
-
313
-#define AIO4_PIN    PINF4
314
-#define AIO4_RPORT  PINF
315
-#define AIO4_WPORT  PORTF
316
-#define AIO4_PWM    NULL
317
-#define AIO4_DDR    DDRF
318
-
319
-#define AIO5_PIN    PINF5
320
-#define AIO5_RPORT  PINF
321
-#define AIO5_WPORT  PORTF
322
-#define AIO5_PWM    NULL
323
-#define AIO5_DDR    DDRF
324
-
325
-#define AIO6_PIN    PINF6
326
-#define AIO6_RPORT  PINF
327
-#define AIO6_WPORT  PORTF
328
-#define AIO6_PWM    NULL
329
-#define AIO6_DDR    DDRF
330
-
331
-#define AIO7_PIN    PINF7
332
-#define AIO7_RPORT  PINF
333
-#define AIO7_WPORT  PORTF
334
-#define AIO7_PWM    NULL
335
-#define AIO7_DDR    DDRF
336
-
337
-#define DIO40_PIN   PINF0
338
-#define DIO40_RPORT PINF
339
-#define DIO40_WPORT PORTF
340
-#define DIO40_PWM   NULL
341
-#define DIO40_DDR   DDRF
342
-
343
-#define DIO41_PIN   PINF1
344
-#define DIO41_RPORT PINF
345
-#define DIO41_WPORT PORTF
346
-#define DIO41_PWM   NULL
347
-#define DIO41_DDR   DDRF
348
-
349
-#define DIO42_PIN   PINF2
350
-#define DIO42_RPORT PINF
351
-#define DIO42_WPORT PORTF
352
-#define DIO42_PWM   NULL
353
-#define DIO42_DDR   DDRF
354
-
355
-#define DIO43_PIN   PINF3
356
-#define DIO43_RPORT PINF
357
-#define DIO43_WPORT PORTF
358
-#define DIO43_PWM   NULL
359
-#define DIO43_DDR   DDRF
360
-
361
-#define DIO44_PIN   PINF4
362
-#define DIO44_RPORT PINF
363
-#define DIO44_WPORT PORTF
364
-#define DIO44_PWM   NULL
365
-#define DIO44_DDR   DDRF
366
-
367
-#define DIO45_PIN   PINF5
368
-#define DIO45_RPORT PINF
369
-#define DIO45_WPORT PORTF
370
-#define DIO45_PWM   NULL
371
-#define DIO45_DDR   DDRF
372
-
373
-#define DIO46_PIN   PINF6
374
-#define DIO46_RPORT PINF
375
-#define DIO46_WPORT PORTF
376
-#define DIO46_PWM   NULL
377
-#define DIO46_DDR   DDRF
378
-
379
-#define DIO47_PIN   PINF7
380
-#define DIO47_RPORT PINF
381
-#define DIO47_WPORT PORTF
382
-#define DIO47_PWM   NULL
383
-#define DIO47_DDR   DDRF
384
-
385
-// Analog Outputs
386
-
387
-#undef PA0
388
-#define PA0_PIN     PINA0
389
-#define PA0_RPORT   PINA
390
-#define PA0_WPORT   PORTA
391
-#define PA0_PWM     NULL
392
-#define PA0_DDR     DDRA
393
-#undef PA1
394
-#define PA1_PIN     PINA1
395
-#define PA1_RPORT   PINA
396
-#define PA1_WPORT   PORTA
397
-#define PA1_PWM     NULL
398
-#define PA1_DDR     DDRA
399
-#undef PA2
400
-#define PA2_PIN     PINA2
401
-#define PA2_RPORT   PINA
402
-#define PA2_WPORT   PORTA
403
-#define PA2_PWM     NULL
404
-#define PA2_DDR     DDRA
405
-#undef PA3
406
-#define PA3_PIN     PINA3
407
-#define PA3_RPORT   PINA
408
-#define PA3_WPORT   PORTA
409
-#define PA3_PWM     NULL
410
-#define PA3_DDR     DDRA
411
-#undef PA4
412
-#define PA4_PIN     PINA4
413
-#define PA4_RPORT   PINA
414
-#define PA4_WPORT   PORTA
415
-#define PA4_PWM     NULL
416
-#define PA4_DDR     DDRA
417
-#undef PA5
418
-#define PA5_PIN     PINA5
419
-#define PA5_RPORT   PINA
420
-#define PA5_WPORT   PORTA
421
-#define PA5_PWM     NULL
422
-#define PA5_DDR     DDRA
423
-#undef PA6
424
-#define PA6_PIN     PINA6
425
-#define PA6_RPORT   PINA
426
-#define PA6_WPORT   PORTA
427
-#define PA6_PWM     NULL
428
-#define PA6_DDR     DDRA
429
-#undef PA7
430
-#define PA7_PIN     PINA7
431
-#define PA7_RPORT   PINA
432
-#define PA7_WPORT   PORTA
433
-#define PA7_PWM     NULL
434
-#define PA7_DDR     DDRA
435
-
436
-#undef PB0
437
-#define PB0_PIN     PINB0
438
-#define PB0_RPORT   PINB
439
-#define PB0_WPORT   PORTB
440
-#define PB0_PWM     NULL
441
-#define PB0_DDR     DDRB
442
-#undef PB1
443
-#define PB1_PIN     PINB1
444
-#define PB1_RPORT   PINB
445
-#define PB1_WPORT   PORTB
446
-#define PB1_PWM     NULL
447
-#define PB1_DDR     DDRB
448
-#undef PB2
449
-#define PB2_PIN     PINB2
450
-#define PB2_RPORT   PINB
451
-#define PB2_WPORT   PORTB
452
-#define PB2_PWM     NULL
453
-#define PB2_DDR     DDRB
454
-#undef PB3
455
-#define PB3_PIN     PINB3
456
-#define PB3_RPORT   PINB
457
-#define PB3_WPORT   PORTB
458
-#define PB3_PWM     NULL
459
-#define PB3_DDR     DDRB
460
-#undef PB4
461
-#define PB4_PIN     PINB4
462
-#define PB4_RPORT   PINB
463
-#define PB4_WPORT   PORTB
464
-#define PB4_PWM     NULL
465
-#define PB4_DDR     DDRB
466
-#undef PB5
467
-#define PB5_PIN     PINB5
468
-#define PB5_RPORT   PINB
469
-#define PB5_WPORT   PORTB
470
-#define PB5_PWM     NULL
471
-#define PB5_DDR     DDRB
472
-#undef PB6
473
-#define PB6_PIN     PINB6
474
-#define PB6_RPORT   PINB
475
-#define PB6_WPORT   PORTB
476
-#define PB6_PWM     NULL
477
-#define PB6_DDR     DDRB
478
-#undef PB7
479
-#define PB7_PIN     PINB7
480
-#define PB7_RPORT   PINB
481
-#define PB7_WPORT   PORTB
482
-#define PB7_PWM     NULL
483
-#define PB7_DDR     DDRB
484
-
485
-#undef PC0
486
-#define PC0_PIN     PINC0
487
-#define PC0_RPORT   PINC
488
-#define PC0_WPORT   PORTC
489
-#define PC0_PWM     NULL
490
-#define PC0_DDR     DDRC
491
-#undef PC1
492
-#define PC1_PIN     PINC1
493
-#define PC1_RPORT   PINC
494
-#define PC1_WPORT   PORTC
495
-#define PC1_PWM     NULL
496
-#define PC1_DDR     DDRC
497
-#undef PC2
498
-#define PC2_PIN     PINC2
499
-#define PC2_RPORT   PINC
500
-#define PC2_WPORT   PORTC
501
-#define PC2_PWM     NULL
502
-#define PC2_DDR     DDRC
503
-#undef PC3
504
-#define PC3_PIN     PINC3
505
-#define PC3_RPORT   PINC
506
-#define PC3_WPORT   PORTC
507
-#define PC3_PWM     NULL
508
-#define PC3_DDR     DDRC
509
-#undef PC4
510
-#define PC4_PIN     PINC4
511
-#define PC4_RPORT   PINC
512
-#define PC4_WPORT   PORTC
513
-#define PC4_PWM     NULL
514
-#define PC4_DDR     DDRC
515
-#undef PC5
516
-#define PC5_PIN     PINC5
517
-#define PC5_RPORT   PINC
518
-#define PC5_WPORT   PORTC
519
-#define PC5_PWM     NULL
520
-#define PC5_DDR     DDRC
521
-#undef PC6
522
-#define PC6_PIN     PINC6
523
-#define PC6_RPORT   PINC
524
-#define PC6_WPORT   PORTC
525
-#define PC6_PWM     NULL
526
-#define PC6_DDR     DDRC
527
-#undef PC7
528
-#define PC7_PIN     PINC7
529
-#define PC7_RPORT   PINC
530
-#define PC7_WPORT   PORTC
531
-#define PC7_PWM     NULL
532
-#define PC7_DDR     DDRC
533
-
534
-#undef PD0
535
-#define PD0_PIN     PIND0
536
-#define PD0_RPORT   PIND
537
-#define PD0_WPORT   PORTD
538
-#define PD0_PWM     NULL
539
-#define PD0_DDR     DDRD
540
-#undef PD1
541
-#define PD1_PIN     PIND1
542
-#define PD1_RPORT   PIND
543
-#define PD1_WPORT   PORTD
544
-#define PD1_PWM     NULL
545
-#define PD1_DDR     DDRD
546
-#undef PD2
547
-#define PD2_PIN     PIND2
548
-#define PD2_RPORT   PIND
549
-#define PD2_WPORT   PORTD
550
-#define PD2_PWM     NULL
551
-#define PD2_DDR     DDRD
552
-#undef PD3
553
-#define PD3_PIN     PIND3
554
-#define PD3_RPORT   PIND
555
-#define PD3_WPORT   PORTD
556
-#define PD3_PWM     NULL
557
-#define PD3_DDR     DDRD
558
-#undef PD4
559
-#define PD4_PIN     PIND4
560
-#define PD4_RPORT   PIND
561
-#define PD4_WPORT   PORTD
562
-#define PD4_PWM     NULL
563
-#define PD4_DDR     DDRD
564
-#undef PD5
565
-#define PD5_PIN     PIND5
566
-#define PD5_RPORT   PIND
567
-#define PD5_WPORT   PORTD
568
-#define PD5_PWM     NULL
569
-#define PD5_DDR     DDRD
570
-#undef PD6
571
-#define PD6_PIN     PIND6
572
-#define PD6_RPORT   PIND
573
-#define PD6_WPORT   PORTD
574
-#define PD6_PWM     NULL
575
-#define PD6_DDR     DDRD
576
-#undef PD7
577
-#define PD7_PIN     PIND7
578
-#define PD7_RPORT   PIND
579
-#define PD7_WPORT   PORTD
580
-#define PD7_PWM     NULL
581
-#define PD7_DDR     DDRD
582
-
583
-#undef PE0
584
-#define PE0_PIN     PINE0
585
-#define PE0_RPORT   PINE
586
-#define PE0_WPORT   PORTE
587
-#define PE0_PWM     NULL
588
-#define PE0_DDR     DDRE
589
-#undef PE1
590
-#define PE1_PIN     PINE1
591
-#define PE1_RPORT   PINE
592
-#define PE1_WPORT   PORTE
593
-#define PE1_PWM     NULL
594
-#define PE1_DDR     DDRE
595
-#undef PE2
596
-#define PE2_PIN     PINE2
597
-#define PE2_RPORT   PINE
598
-#define PE2_WPORT   PORTE
599
-#define PE2_PWM     NULL
600
-#define PE2_DDR     DDRE
601
-#undef PE3
602
-#define PE3_PIN     PINE3
603
-#define PE3_RPORT   PINE
604
-#define PE3_WPORT   PORTE
605
-#define PE3_PWM     NULL
606
-#define PE3_DDR     DDRE
607
-#undef PE4
608
-#define PE4_PIN     PINE4
609
-#define PE4_RPORT   PINE
610
-#define PE4_WPORT   PORTE
611
-#define PE4_PWM     NULL
612
-#define PE4_DDR     DDRE
613
-#undef PE5
614
-#define PE5_PIN     PINE5
615
-#define PE5_RPORT   PINE
616
-#define PE5_WPORT   PORTE
617
-#define PE5_PWM     NULL
618
-#define PE5_DDR     DDRE
619
-#undef PE6
620
-#define PE6_PIN     PINE6
621
-#define PE6_RPORT   PINE
622
-#define PE6_WPORT   PORTE
623
-#define PE6_PWM     NULL
624
-#define PE6_DDR     DDRE
625
-#undef PE7
626
-#define PE7_PIN     PINE7
627
-#define PE7_RPORT   PINE
628
-#define PE7_WPORT   PORTE
629
-#define PE7_PWM     NULL
630
-#define PE7_DDR     DDRE
631
-
632
-#undef PF0
633
-#define PF0_PIN     PINF0
634
-#define PF0_RPORT   PINF
635
-#define PF0_WPORT   PORTF
636
-#define PF0_PWM     NULL
637
-#define PF0_DDR     DDRF
638
-#undef PF1
639
-#define PF1_PIN     PINF1
640
-#define PF1_RPORT   PINF
641
-#define PF1_WPORT   PORTF
642
-#define PF1_PWM     NULL
643
-#define PF1_DDR     DDRF
644
-#undef PF2
645
-#define PF2_PIN     PINF2
646
-#define PF2_RPORT   PINF
647
-#define PF2_WPORT   PORTF
648
-#define PF2_PWM     NULL
649
-#define PF2_DDR     DDRF
650
-#undef PF3
651
-#define PF3_PIN     PINF3
652
-#define PF3_RPORT   PINF
653
-#define PF3_WPORT   PORTF
654
-#define PF3_PWM     NULL
655
-#define PF3_DDR     DDRF
656
-#undef PF4
657
-#define PF4_PIN     PINF4
658
-#define PF4_RPORT   PINF
659
-#define PF4_WPORT   PORTF
660
-#define PF4_PWM     NULL
661
-#define PF4_DDR     DDRF
662
-#undef PF5
663
-#define PF5_PIN     PINF5
664
-#define PF5_RPORT   PINF
665
-#define PF5_WPORT   PORTF
666
-#define PF5_PWM     NULL
667
-#define PF5_DDR     DDRF
668
-#undef PF6
669
-#define PF6_PIN     PINF6
670
-#define PF6_RPORT   PINF
671
-#define PF6_WPORT   PORTF
672
-#define PF6_PWM     NULL
673
-#define PF6_DDR     DDRF
674
-#undef PF7
675
-#define PF7_PIN     PINF7
676
-#define PF7_RPORT   PINF
677
-#define PF7_WPORT   PORTF
678
-#define PF7_PWM     NULL
679
-#define PF7_DDR     DDRF
680
-
681
-#endif // _FASTIO_AT90USB

Marlin/fastio_AT90USB-Teensy.h → Marlin/fastio_AT90USB.h Просмотреть файл

@@ -26,8 +26,7 @@
26 26
  *   AT90USB  51 50 49 48 47 46 45 44 10 11 12 13 14 15 16 17 35 36 37 38 39 40 41 42 25 26 27 28 29 30 31 32 33 34 43 09 18 19 01 02 61 60 59 58 57 56 55 54
27 27
  * > Teensy   28 29 30 31 32 33 34 35 20 21 22 23 24 25 26 27 10 11 12 13 14 15 16 17 00 01 02 03 04 05 06 07 08 09(46*47)36 37 18 19 38 39 40 41 42 43 44 45
28 28
  *   Port     A0 A1 A2 A3 A4 A5 A6 A7 B0 B1 B2 B3 B4 B5 B6 B7 C0 C1 C2 C3 C4 C5 C6 C7 D0 D1 D2 D3 D4 D5 D6 D7 E0 E1 E2 E3 E4 E5 E6 E7 F0 F1 F2 F3 F4 F5 F6 F7
29
- *   Marlin   00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
30
- *            The pins 46 and 47 are not supported by Teensyduino, but are supported below.
29
+ *            The pins 46 and 47 are not supported by Teensyduino, but are supported below as E2 and E3
31 30
  */
32 31
 
33 32
 #ifndef _FASTIO_AT90USB
@@ -679,4 +678,21 @@
679 678
 #define PF7_PWM     NULL
680 679
 #define PF7_DDR     DDRF
681 680
 
681
+
682
+/**
683
+ *  some of the pin mapping functions of the Teensduino extension to the Arduino IDE
684
+ *  do not function the same as the other Arduino extensions
685
+ */
686
+
687
+//digitalPinToTimer(pin) function works like Arduino but Timers are not defined
688
+#define TIMER0B 1
689
+#define TIMER1A 7
690
+#define TIMER1B 8
691
+#define TIMER1C 9
692
+#define TIMER2A 6
693
+#define TIMER2B 2
694
+#define TIMER3A 5
695
+#define TIMER3B 4
696
+#define TIMER3C 3
697
+
682 698
 #endif // _FASTIO_AT90USB

+ 7
- 7
Marlin/gcode.cpp Просмотреть файл

@@ -150,7 +150,7 @@ void GCodeParser::parse(char *p) {
150 150
   #endif
151 151
 
152 152
   // Only use string_arg for these M codes
153
-  if (letter == 'M') switch (codenum) { case 23: case 28: case 30: case 117: case 928: string_arg = p; return; default: break; }
153
+  if (letter == 'M') switch (codenum) { case 23: case 28: case 30: case 117: case 118: case 928: string_arg = p; return; default: break; }
154 154
 
155 155
   #if ENABLED(DEBUG_GCODE_PARSER)
156 156
     const bool debug = codenum == 800;
@@ -184,7 +184,7 @@ void GCodeParser::parse(char *p) {
184 184
 
185 185
     if (PARAM_TEST) {
186 186
 
187
-      while (*p == ' ') p++;                    // skip spaces vetween parameters & values
187
+      while (*p == ' ') p++;                    // Skip spaces between parameters & values
188 188
       const bool has_num = DECIMAL_SIGNED(*p);  // The parameter has a number [-+0-9.]
189 189
 
190 190
       #if ENABLED(DEBUG_GCODE_PARSER)
@@ -203,7 +203,7 @@ void GCodeParser::parse(char *p) {
203 203
       }
204 204
 
205 205
       #if ENABLED(DEBUG_GCODE_PARSER)
206
-        if (debug) SERIAL_EOL;
206
+        if (debug) SERIAL_EOL();
207 207
       #endif
208 208
 
209 209
       #if ENABLED(FASTER_GCODE_PARSER)
@@ -222,17 +222,17 @@ void GCodeParser::parse(char *p) {
222 222
     }
223 223
 
224 224
     if (!WITHIN(*p, 'A', 'Z')) {
225
-      while (*p && NUMERIC(*p)) p++;              // Skip over the value section of a parameter
226
-      while (*p == ' ') p++;                      // Skip over all spaces
225
+      while (*p && NUMERIC(*p)) p++;            // Skip over the value section of a parameter
226
+      while (*p == ' ') p++;                    // Skip over all spaces
227 227
     }
228 228
   }
229 229
 }
230 230
 
231 231
 void GCodeParser::unknown_command_error() {
232
-  SERIAL_ECHO_START;
232
+  SERIAL_ECHO_START();
233 233
   SERIAL_ECHOPAIR(MSG_UNKNOWN_COMMAND, command_ptr);
234 234
   SERIAL_CHAR('"');
235
-  SERIAL_EOL;
235
+  SERIAL_EOL();
236 236
 }
237 237
 
238 238
 #if ENABLED(DEBUG_GCODE_PARSER)

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

@@ -36,7 +36,11 @@
36 36
 //#define DEBUG_GCODE_PARSER
37 37
 
38 38
 #if ENABLED(DEBUG_GCODE_PARSER)
39
-  #include "hex_print_routines.h"
39
+  #if ENABLED(AUTO_BED_LEVELING_UBL)
40
+    extern char* hex_address(const void * const w);
41
+  #else
42
+    #include "hex_print_routines.h"
43
+  #endif
40 44
   #include "serial.h"
41 45
 #endif
42 46
 
@@ -97,6 +101,13 @@ public:
97 101
   // Reset is done before parsing
98 102
   static void reset();
99 103
 
104
+  // Index so that 'X' falls on index 24
105
+  #define PARAM_IND(N)  ((N) >> 3)
106
+  #define PARAM_BIT(N)  ((N) & 0x7)
107
+  #define LETTER_OFF(N) ((N) - 'A')
108
+  #define LETTER_IND(N) PARAM_IND(LETTER_OFF(N))
109
+  #define LETTER_BIT(N) PARAM_BIT(LETTER_OFF(N))
110
+
100 111
   #if ENABLED(FASTER_GCODE_PARSER)
101 112
 
102 113
     // Set the flag and pointer for a parameter
@@ -105,33 +116,39 @@ public:
105 116
         , const bool debug=false
106 117
       #endif
107 118
     ) {
108
-      const uint8_t ind = c - 'A';
119
+      const uint8_t ind = LETTER_OFF(c);
109 120
       if (ind >= COUNT(param)) return;           // Only A-Z
110
-      SBI(codebits[ind >> 3], ind & 0x7);        // parameter exists
121
+      SBI(codebits[PARAM_IND(ind)], PARAM_BIT(ind));        // parameter exists
111 122
       param[ind] = ptr ? ptr - command_ptr : 0;  // parameter offset or 0
112 123
       #if ENABLED(DEBUG_GCODE_PARSER)
113 124
         if (debug) {
114
-          SERIAL_ECHOPAIR("Set bit ", (int)(ind & 0x7));
115
-          SERIAL_ECHOPAIR(" of index ", (int)(ind >> 3));
116
-          SERIAL_ECHOLNPAIR(" | param = ", hex_address((void*)param[ind]));
125
+          SERIAL_ECHOPAIR("Set bit ", (int)PARAM_BIT(ind));
126
+          SERIAL_ECHOPAIR(" of index ", (int)PARAM_IND(ind));
127
+          SERIAL_ECHOLNPAIR(" | param = ", (int)param[ind]);
117 128
         }
118 129
       #endif
119 130
     }
120 131
 
121 132
     // Code seen bit was set. If not found, value_ptr is unchanged.
122 133
     // This allows "if (seen('A')||seen('B'))" to use the last-found value.
134
+    // This is volatile because its side-effects are important
123 135
     static volatile bool seen(const char c) {
124
-      const uint8_t ind = c - 'A';
136
+      const uint8_t ind = LETTER_OFF(c);
125 137
       if (ind >= COUNT(param)) return false; // Only A-Z
126
-      const bool b = TEST(codebits[ind >> 3], ind & 0x7);
127
-      if (b) value_ptr = command_ptr + param[ind];
138
+      const bool b = TEST(codebits[PARAM_IND(ind)], PARAM_BIT(ind));
139
+      if (b) value_ptr = param[ind] ? command_ptr + param[ind] : (char*)NULL;
128 140
       return b;
129 141
     }
130 142
 
131
-  #else
143
+    static bool seen_any() { return codebits[3] || codebits[2] || codebits[1] || codebits[0]; }
144
+
145
+    #define SEEN_TEST(L) TEST(codebits[LETTER_IND(L)], LETTER_BIT(L))
146
+
147
+  #else // !FASTER_GCODE_PARSER
132 148
 
133 149
     // Code is found in the string. If not found, value_ptr is unchanged.
134 150
     // This allows "if (seen('A')||seen('B'))" to use the last-found value.
151
+    // This is volatile because its side-effects are important
135 152
     static volatile bool seen(const char c) {
136 153
       const char *p = strchr(command_args, c);
137 154
       const bool b = !!p;
@@ -139,15 +156,27 @@ public:
139 156
       return b;
140 157
     }
141 158
 
142
-  #endif // FASTER_GCODE_PARSER
159
+    static bool seen_any() { return *command_args == '\0'; }
160
+
161
+    #define SEEN_TEST(L) !!strchr(command_args, L)
162
+
163
+  #endif // !FASTER_GCODE_PARSER
164
+
165
+  // Seen any axis parameter
166
+  static bool seen_axis() {
167
+    return SEEN_TEST('X') || SEEN_TEST('Y') || SEEN_TEST('Z') || SEEN_TEST('E');
168
+  }
143 169
 
144 170
   // Populate all fields by parsing a single line of GCode
145 171
   // This uses 54 bytes of SRAM to speed up seen/value
146 172
   static void parse(char * p);
147 173
 
148
-  // Code value pointer was set
174
+  // The code value pointer was set
149 175
   FORCE_INLINE static bool has_value() { return value_ptr != NULL; }
150 176
 
177
+  // Seen a parameter with a value
178
+  inline static bool seenval(const char c) { return seen(c) && has_value(); }
179
+
151 180
   // Float removes 'E' to prevent scientific notation interpretation
152 181
   inline static float value_float() {
153 182
     if (value_ptr) {
@@ -169,26 +198,26 @@ public:
169 198
   }
170 199
 
171 200
   // Code value as a long or ulong
172
-  inline          static long value_long()  { return value_ptr ? strtol(value_ptr, NULL, 10) : 0L; }
173
-  inline unsigned static long value_ulong() { return value_ptr ? strtoul(value_ptr, NULL, 10) : 0UL; }
201
+  inline static int32_t value_long() { return value_ptr ? strtol(value_ptr, NULL, 10) : 0L; }
202
+  inline static uint32_t value_ulong() { return value_ptr ? strtoul(value_ptr, NULL, 10) : 0UL; }
174 203
 
175 204
   // Code value for use as time
176 205
   FORCE_INLINE static millis_t value_millis() { return value_ulong(); }
177 206
   FORCE_INLINE static millis_t value_millis_from_seconds() { return value_float() * 1000UL; }
178 207
 
179 208
   // Reduce to fewer bits
180
-  FORCE_INLINE static int value_int()    { return (int)value_long(); }
181
-  FORCE_INLINE uint16_t value_ushort()   { return (uint16_t)value_long(); }
182
-  inline static uint8_t value_byte()     { return (uint8_t)(constrain(value_long(), 0, 255)); }
209
+  FORCE_INLINE static int16_t value_int() { return (int16_t)value_long(); }
210
+  FORCE_INLINE static uint16_t value_ushort() { return (uint16_t)value_long(); }
211
+  inline static uint8_t value_byte() { return (uint8_t)constrain(value_long(), 0, 255); }
183 212
 
184 213
   // Bool is true with no value or non-zero
185
-  inline static bool value_bool()        { return !has_value() || value_byte(); }
214
+  inline static bool value_bool() { return !has_value() || value_byte(); }
186 215
 
187 216
   // Units modes: Inches, Fahrenheit, Kelvin
188 217
 
189 218
   #if ENABLED(INCH_MODE_SUPPORT)
190 219
 
191
-    inline static void set_input_linear_units(LinearUnit units) {
220
+    inline static void set_input_linear_units(const LinearUnit units) {
192 221
       switch (units) {
193 222
         case LINEARUNIT_INCH:
194 223
           linear_unit_factor = 25.4;
@@ -198,7 +227,7 @@ public:
198 227
           linear_unit_factor = 1.0;
199 228
           break;
200 229
       }
201
-      volumetric_unit_factor = pow(linear_unit_factor, 3.0);
230
+      volumetric_unit_factor = POW(linear_unit_factor, 3.0);
202 231
     }
203 232
 
204 233
     inline static float axis_unit_factor(const AxisEnum axis) {
@@ -267,17 +296,28 @@ public:
267 296
       }
268 297
     }
269 298
 
270
-  #else
299
+  #else // !TEMPERATURE_UNITS_SUPPORT
271 300
 
272 301
     FORCE_INLINE static float value_celsius()      { return value_float(); }
273 302
     FORCE_INLINE static float value_celsius_diff() { return value_float(); }
274 303
 
275
-  #endif
304
+  #endif // !TEMPERATURE_UNITS_SUPPORT
276 305
 
277 306
   FORCE_INLINE static float value_feedrate() { return value_linear_units(); }
278 307
 
279 308
   void unknown_command_error();
280 309
 
310
+  // Provide simple value accessors with default option
311
+  FORCE_INLINE static float    floatval(const char c, const float dval=0.0)   { return seenval(c) ? value_float()        : dval; }
312
+  FORCE_INLINE static bool     boolval(const char c, const bool dval=false)   { return seen(c)    ? value_bool()         : dval; }
313
+  FORCE_INLINE static uint8_t  byteval(const char c, const uint8_t dval=0)    { return seenval(c) ? value_byte()         : dval; }
314
+  FORCE_INLINE static int16_t  intval(const char c, const int16_t dval=0)     { return seenval(c) ? value_int()          : dval; }
315
+  FORCE_INLINE static uint16_t ushortval(const char c, const uint16_t dval=0) { return seenval(c) ? value_ushort()       : dval; }
316
+  FORCE_INLINE static int32_t  longval(const char c, const int32_t dval=0)    { return seenval(c) ? value_long()         : dval; }
317
+  FORCE_INLINE static uint32_t ulongval(const char c, const uint32_t dval=0)  { return seenval(c) ? value_ulong()        : dval; }
318
+  FORCE_INLINE static float    linearval(const char c, const float dval=0.0)  { return seenval(c) ? value_linear_units() : dval; }
319
+  FORCE_INLINE static float    celsiusval(const char c, const float dval=0.0) { return seenval(c) ? value_celsius()      : dval; }
320
+
281 321
 };
282 322
 
283 323
 extern GCodeParser parser;

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

@@ -52,6 +52,7 @@
52 52
 // ca         Catalan
53 53
 // cn         Chinese
54 54
 // cz         Czech
55
+// cz_utf8    Czech (UTF8)
55 56
 // de         German
56 57
 // el         Greek
57 58
 // el-gr      Greek (Greece)
@@ -69,7 +70,7 @@
69 70
 // pl         Polish
70 71
 // pt         Portuguese
71 72
 // pt-br      Portuguese (Brazilian)
72
-// pt-br_utf8 Portuguese (Brazilian UTF8)
73
+// pt-br_utf8 Portuguese (Brazilian) (UTF8)
73 74
 // pt_utf8    Portuguese (UTF8)
74 75
 // ru         Russian
75 76
 // tr         Turkish
@@ -299,7 +300,8 @@
299 300
  && DISABLED(DISPLAY_CHARSET_ISO10646_GREEK) \
300 301
  && DISABLED(DISPLAY_CHARSET_ISO10646_CN) \
301 302
  && DISABLED(DISPLAY_CHARSET_ISO10646_TR) \
302
- && DISABLED(DISPLAY_CHARSET_ISO10646_PL)
303
+ && DISABLED(DISPLAY_CHARSET_ISO10646_PL) \
304
+ && DISABLED(DISPLAY_CHARSET_ISO10646_CZ)
303 305
   #define DISPLAY_CHARSET_ISO10646_1 // use the better font on full graphic displays.
304 306
 #endif
305 307
 

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

@@ -40,7 +40,7 @@
40 40
 #define MSG_BACK                            _UxGT("Zpet")
41 41
 #define MSG_SD_INSERTED                     _UxGT("Karta vlozena")
42 42
 #define MSG_SD_REMOVED                      _UxGT("Karta vyjmuta")
43
-#define MSG_LCD_ENDSTOPS                    _UxGT("Endstopy") // maximalne 8 znaku
43
+#define MSG_LCD_ENDSTOPS                    _UxGT("Endstopy") // max 8 znaku
44 44
 #define MSG_MAIN                            _UxGT("Hlavni nabidka")
45 45
 #define MSG_AUTOSTART                       _UxGT("Autostart")
46 46
 #define MSG_DISABLE_STEPPERS                _UxGT("Uvolnit motory")
@@ -54,6 +54,7 @@
54 54
 #define MSG_LEVEL_BED_WAITING               _UxGT("Kliknutim spustte")
55 55
 #define MSG_LEVEL_BED_NEXT_POINT            _UxGT("Dalsi bod")
56 56
 #define MSG_LEVEL_BED_DONE                  _UxGT("Mereni hotovo!")
57
+#define MSG_Z_FADE_HEIGHT                   _UxGT("Vyska srovnavani")
57 58
 #define MSG_SET_HOME_OFFSETS                _UxGT("Nastavit ofsety")
58 59
 #define MSG_HOME_OFFSETS_APPLIED            _UxGT("Ofsety nastaveny")
59 60
 #define MSG_SET_ORIGIN                      _UxGT("Nastavit pocatek")
@@ -77,6 +78,68 @@
77 78
 #define MSG_MOVE_AXIS                       _UxGT("Posunout osy")
78 79
 #define MSG_BED_LEVELING                    _UxGT("Vyrovnat podlozku")
79 80
 #define MSG_LEVEL_BED                       _UxGT("Vyrovnat podlozku")
81
+#define MSG_EDITING_STOPPED                 _UxGT("Konec uprav site")
82
+
83
+#define MSG_UBL_DOING_G29                   _UxGT("Provadim G29")
84
+#define MSG_UBL_UNHOMED                     _UxGT("Prejedte domu")
85
+#define MSG_UBL_TOOLS                       _UxGT("UBL nastroje")
86
+#define MSG_UBL_LEVEL_BED                   _UxGT("Unified Bed Leveling")
87
+#define MSG_UBL_MANUAL_MESH                 _UxGT("Manualni sit bodu")
88
+#define MSG_UBL_BC_INSERT                   _UxGT("Vlozte kartu, zmerte")
89
+#define MSG_UBL_BC_INSERT2                  _UxGT("Zmerte")
90
+#define MSG_UBL_BC_REMOVE                   _UxGT("Odstrante a zmerte")
91
+#define MSG_UBL_MOVING_TO_NEXT              _UxGT("Presoun na dalsi")
92
+#define MSG_UBL_ACTIVATE_MESH               _UxGT("Aktivovat UBL")
93
+#define MSG_UBL_DEACTIVATE_MESH             _UxGT("Deaktivovat UBL")
94
+#define MSG_UBL_SET_BED_TEMP                _UxGT("Teplota podlozky")
95
+#define MSG_UBL_CUSTOM_BED_TEMP             MSG_UBL_SET_BED_TEMP
96
+#define MSG_UBL_SET_HOTEND_TEMP             _UxGT("Teplota hotendu")
97
+#define MSG_UBL_CUSTOM_HOTEND_TEMP          MSG_UBL_SET_HOTEND_TEMP
98
+#define MSG_UBL_EDIT_CUSTOM_MESH            _UxGT("Upravit vlastni sit")
99
+#define MSG_UBL_FINE_TUNE_MESH              _UxGT("Doladit sit bodu")
100
+#define MSG_UBL_DONE_EDITING_MESH           _UxGT("Konec uprav site")
101
+#define MSG_UBL_BUILD_CUSTOM_MESH           _UxGT("Vlastni sit")
102
+#define MSG_UBL_BUILD_MESH_MENU             _UxGT("Vytvorit sit")
103
+#define MSG_UBL_BUILD_PLA_MESH              _UxGT("Sit bodu PLA")
104
+#define MSG_UBL_BUILD_ABS_MESH              _UxGT("Sit bodu ABS")
105
+#define MSG_UBL_BUILD_COLD_MESH             _UxGT("Studena sit bodu")
106
+#define MSG_UBL_MESH_HEIGHT_ADJUST          _UxGT("Upravit vysku site")
107
+#define MSG_UBL_MESH_HEIGHT_AMOUNT          _UxGT("Vyska")
108
+#define MSG_UBL_VALIDATE_MESH_MENU          _UxGT("Zkontrolovat sit")
109
+#define MSG_UBL_VALIDATE_PLA_MESH           _UxGT("Kontrola site PLA")
110
+#define MSG_UBL_VALIDATE_ABS_MESH           _UxGT("Kontrola site ABS")
111
+#define MSG_UBL_VALIDATE_CUSTOM_MESH        _UxGT("Kontrola vlast. site")
112
+#define MSG_UBL_CONTINUE_MESH               _UxGT("Pokracovat v siti")
113
+#define MSG_UBL_MESH_LEVELING               _UxGT("Sitove rovnani")
114
+#define MSG_UBL_3POINT_MESH_LEVELING        _UxGT("3-bodove rovnani")
115
+#define MSG_UBL_GRID_MESH_LEVELING          _UxGT("Mrizkove rovnani")
116
+#define MSG_UBL_MESH_LEVEL                  _UxGT("Srovnat podlozku")
117
+#define MSG_UBL_SIDE_POINTS                 _UxGT("Postranni body")
118
+#define MSG_UBL_MAP_TYPE                    _UxGT("Typ site bodu")
119
+#define MSG_UBL_OUTPUT_MAP                  _UxGT("Exportovat sit")
120
+#define MSG_UBL_OUTPUT_MAP_HOST             _UxGT("Exportovat do PC")
121
+#define MSG_UBL_OUTPUT_MAP_CSV              _UxGT("Exportovat do CSV")
122
+#define MSG_UBL_OUTPUT_MAP_BACKUP           _UxGT("Zaloha do PC")
123
+#define MSG_UBL_INFO_UBL                    _UxGT("Info o UBL do PC")
124
+#define MSG_UBL_EDIT_MESH_MENU              _UxGT("Upravit sit dobu")
125
+#define MSG_UBL_FILLIN_AMOUNT               _UxGT("Hustota mrizky")
126
+#define MSG_UBL_MANUAL_FILLIN               _UxGT("Rucni hustota")
127
+#define MSG_UBL_SMART_FILLIN                _UxGT("Chytra hustota")
128
+#define MSG_UBL_FILLIN_MESH                 _UxGT("Zaplnit mrizku")
129
+#define MSG_UBL_INVALIDATE_ALL              _UxGT("Zrusit vsechno")
130
+#define MSG_UBL_INVALIDATE_CLOSEST          _UxGT("Zrusit posledni")
131
+#define MSG_UBL_FINE_TUNE_ALL               _UxGT("Upravit vsechny")
132
+#define MSG_UBL_FINE_TUNE_CLOSEST           _UxGT("Upravit posledni")
133
+#define MSG_UBL_STORAGE_MESH_MENU           _UxGT("Uloziste siti")
134
+#define MSG_UBL_STORAGE_SLOT                _UxGT("Pametovy slot")
135
+#define MSG_UBL_LOAD_MESH                   _UxGT("Nacist sit bodu")
136
+#define MSG_UBL_SAVE_MESH                   _UxGT("Ulozit sit bodu")
137
+#define MSG_UBL_SAVE_ERROR                  _UxGT("Err: Ulozit UBL")
138
+#define MSG_UBL_RESTORE_ERROR               _UxGT("Err: Obnovit UBL")
139
+#define MSG_UBL_Z_OFFSET_STOPPED            _UxGT("Konec Z-Offsetu")
140
+#define MSG_UBL_STEP_BY_STEP_MENU           _UxGT("UBL Postupne")
141
+
142
+#define MSG_USER_MENU                       _UxGT("Vlastni prikazy")
80 143
 #define MSG_MOVING                          _UxGT("Posunování...")
81 144
 #define MSG_FREE_XY                         _UxGT("Uvolnit XY")
82 145
 #define MSG_MOVE_X                          _UxGT("Posunout X")
@@ -110,9 +173,11 @@
110 173
 #define MSG_VY_JERK                         _UxGT("Vy-jerk")
111 174
 #define MSG_VZ_JERK                         _UxGT("Vz-jerk")
112 175
 #define MSG_VE_JERK                         _UxGT("Ve-jerk")
176
+#define MSG_VELOCITY                        _UxGT("Rychlost")
113 177
 #define MSG_VMAX                            _UxGT("Vmax ")
114 178
 #define MSG_VMIN                            _UxGT("Vmin")
115 179
 #define MSG_VTRAV_MIN                       _UxGT("VTrav min")
180
+#define MSG_ACCELERATION                    _UxGT("Akcelerace")
116 181
 #define MSG_AMAX                            _UxGT("Amax ")
117 182
 #define MSG_A_RETRACT                       _UxGT("A-retrakt")
118 183
 #define MSG_A_TRAVEL                        _UxGT("A-prejezd")
@@ -136,6 +201,7 @@
136 201
 #define MSG_STORE_EEPROM                    _UxGT("Ulozit nastaveni")
137 202
 #define MSG_LOAD_EEPROM                     _UxGT("Nacist nastaveni")
138 203
 #define MSG_RESTORE_FAILSAFE                _UxGT("Obnovit vychozi")
204
+#define MSG_INIT_EEPROM                     _UxGT("Inic. EEPROM")
139 205
 #define MSG_REFRESH                         _UxGT("Obnovit")
140 206
 #define MSG_WATCH                           _UxGT("Info obrazovka")
141 207
 #define MSG_PREPARE                         _UxGT("Priprava tisku")
@@ -147,6 +213,7 @@
147 213
 #define MSG_NO_CARD                         _UxGT("Zadna SD karta")
148 214
 #define MSG_DWELL                           _UxGT("Uspano...")
149 215
 #define MSG_USERWAIT                        _UxGT("Cekani na uziv...")
216
+#define MSG_PRINT_PAUSED                    _UxGT("Tisk pozastaven")
150 217
 #define MSG_RESUMING                        _UxGT("Obnovovani tisku")
151 218
 #define MSG_PRINT_ABORTED                   _UxGT("Tisk zrusen")
152 219
 #define MSG_NO_MOVE                         _UxGT("Zadny pohyb.")
@@ -164,8 +231,11 @@
164 231
 #define MSG_INIT_SDCARD                     _UxGT("Nacist SD kartu")
165 232
 #define MSG_CNG_SDCARD                      _UxGT("Vymenit SD kartu")
166 233
 #define MSG_ZPROBE_OUT                      _UxGT("Sonda Z mimo podl")
234
+#define MSG_BLTOUCH                         _UxGT("BLTouch")
167 235
 #define MSG_BLTOUCH_SELFTEST                _UxGT("BLTouch Self-Test")
168 236
 #define MSG_BLTOUCH_RESET                   _UxGT("BLTouch Reset")
237
+#define MSG_BLTOUCH_DEPLOY                  _UxGT("BLTouch Vysunout")
238
+#define MSG_BLTOUCH_STOW                    _UxGT("BLTouch Zasunout")
169 239
 #define MSG_HOME                            _UxGT("Domu")  // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST
170 240
 #define MSG_FIRST                           _UxGT("prvni")
171 241
 #define MSG_ZPROBE_ZOFFSET                  _UxGT("Z ofset")
@@ -199,6 +269,11 @@
199 269
 #define MSG_DELTA_HEIGHT_CALIBRATE          _UxGT("Nast.vysku delty")
200 270
 #define MSG_INFO_MENU                       _UxGT("O tiskarne")
201 271
 #define MSG_INFO_PRINTER_MENU               _UxGT("Info o tiskarne")
272
+#define MSG_3POINT_LEVELING                 _UxGT("3-bodove rovnani")
273
+#define MSG_LINEAR_LEVELING                 _UxGT("Linearni rovnani")
274
+#define MSG_BILINEAR_LEVELING               _UxGT("Bilinearni rovnani")
275
+#define MSG_UBL_LEVELING                    _UxGT("Unified Bed Leveling")
276
+#define MSG_MESH_LEVELING                   _UxGT("Mrizkove rovnani")
202 277
 #define MSG_INFO_STATS_MENU                 _UxGT("Statistika")
203 278
 #define MSG_INFO_BOARD_MENU                 _UxGT("Info o desce")
204 279
 #define MSG_INFO_THERMISTOR_MENU            _UxGT("Termistory")
@@ -206,6 +281,7 @@
206 281
 #define MSG_INFO_BAUDRATE                   _UxGT("Rychlost")
207 282
 #define MSG_INFO_PROTOCOL                   _UxGT("Protokol")
208 283
 #define MSG_CASE_LIGHT                      _UxGT("Osvetleni")
284
+#define MSG_CASE_LIGHT_BRIGHTNESS           _UxGT("Jas svetla")
209 285
 
210 286
 #if LCD_WIDTH >= 20
211 287
   #define MSG_INFO_PRINT_COUNT              _UxGT("Pocet tisku")

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

@@ -0,0 +1,351 @@
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
+ * Czech
25
+ * UTF-8 for Graphical Display
26
+ *
27
+ * LCD Menu Messages
28
+ * See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language
29
+ *
30
+ * Translated by Petr Zahradnik, Computer Laboratory
31
+ * Blog and video blog Zahradnik se bavi
32
+ * http://www.zahradniksebavi.cz
33
+ *
34
+ */
35
+#ifndef LANGUAGE_CZ_UTF_H
36
+#define LANGUAGE_CZ_UTF_H
37
+
38
+#define MAPPER_C3C4C5_CZ
39
+#define DISPLAY_CHARSET_ISO10646_CZ
40
+
41
+#define WELCOME_MSG                         MACHINE_NAME _UxGT(" připraven.")
42
+#define MSG_BACK                            _UxGT("Zpět")
43
+#define MSG_SD_INSERTED                     _UxGT("Karta vložena")
44
+#define MSG_SD_REMOVED                      _UxGT("Karta vyjmuta")
45
+#define MSG_LCD_ENDSTOPS                    _UxGT("Endstopy") // max 8 znaku
46
+#define MSG_MAIN                            _UxGT("Hlavní nabídka")
47
+#define MSG_AUTOSTART                       _UxGT("Autostart")
48
+#define MSG_DISABLE_STEPPERS                _UxGT("Uvolnit motory")
49
+#define MSG_DEBUG_MENU                      _UxGT("Nabídka ladění")
50
+#define MSG_PROGRESS_BAR_TEST               _UxGT("Test uk. průběhu")
51
+#define MSG_AUTO_HOME                       _UxGT("Domovská pozice")
52
+#define MSG_AUTO_HOME_X                     _UxGT("Domů osa X")
53
+#define MSG_AUTO_HOME_Y                     _UxGT("Domů osa Y")
54
+#define MSG_AUTO_HOME_Z                     _UxGT("Domů osa Z")
55
+#define MSG_LEVEL_BED_HOMING                _UxGT("Měření podložky")
56
+#define MSG_LEVEL_BED_WAITING               _UxGT("Kliknutím spusťte")
57
+#define MSG_LEVEL_BED_NEXT_POINT            _UxGT("Další bod")
58
+#define MSG_LEVEL_BED_DONE                  _UxGT("Měření hotovo!")
59
+#define MSG_Z_FADE_HEIGHT                   _UxGT("Výška srovnávání")
60
+#define MSG_SET_HOME_OFFSETS                _UxGT("Nastavit ofsety")
61
+#define MSG_HOME_OFFSETS_APPLIED            _UxGT("Ofsety nastaveny")
62
+#define MSG_SET_ORIGIN                      _UxGT("Nastavit počátek")
63
+#define MSG_PREHEAT_1                       _UxGT("Zahřát PLA")
64
+#define MSG_PREHEAT_1_N                     MSG_PREHEAT_1 _UxGT(" ")
65
+#define MSG_PREHEAT_1_ALL                   MSG_PREHEAT_1 _UxGT(" vše")
66
+#define MSG_PREHEAT_1_END                   MSG_PREHEAT_1 _UxGT(" hotend")
67
+#define MSG_PREHEAT_1_BEDONLY               MSG_PREHEAT_1 _UxGT(" podlož")
68
+#define MSG_PREHEAT_1_SETTINGS              MSG_PREHEAT_1 _UxGT(" nast")
69
+#define MSG_PREHEAT_2                       _UxGT("Zahřát ABS")
70
+#define MSG_PREHEAT_2_N                     MSG_PREHEAT_2 _UxGT(" ")
71
+#define MSG_PREHEAT_2_ALL                   MSG_PREHEAT_2 _UxGT(" vše")
72
+#define MSG_PREHEAT_2_END                   MSG_PREHEAT_2 _UxGT(" hotend")
73
+#define MSG_PREHEAT_2_BEDONLY               MSG_PREHEAT_2 _UxGT(" podlož")
74
+#define MSG_PREHEAT_2_SETTINGS              MSG_PREHEAT_2 _UxGT(" nast")
75
+#define MSG_COOLDOWN                        _UxGT("Zchladit")
76
+#define MSG_SWITCH_PS_ON                    _UxGT("Zapnout napájení")
77
+#define MSG_SWITCH_PS_OFF                   _UxGT("Vypnout napájení")
78
+#define MSG_EXTRUDE                         _UxGT("Vytlačit (extr.)")
79
+#define MSG_RETRACT                         _UxGT("Zatlačit (retr.)")
80
+#define MSG_MOVE_AXIS                       _UxGT("Posunout osy")
81
+#define MSG_BED_LEVELING                    _UxGT("Vyrovnat podložku")
82
+#define MSG_LEVEL_BED                       _UxGT("Vyrovnat podložku")
83
+#define MSG_EDITING_STOPPED                 _UxGT("Konec úprav sítě")
84
+
85
+#define MSG_UBL_DOING_G29                   _UxGT("Provádím G29")
86
+#define MSG_UBL_UNHOMED                     _UxGT("Přejeďte domů")
87
+#define MSG_UBL_TOOLS                       _UxGT("UBL nástroje")
88
+#define MSG_UBL_LEVEL_BED                   _UxGT("Unified Bed Leveling")
89
+#define MSG_UBL_MANUAL_MESH                 _UxGT("Manuální síť bodů")
90
+#define MSG_UBL_BC_INSERT                   _UxGT("Vložte kartu, změřte")
91
+#define MSG_UBL_BC_INSERT2                  _UxGT("Změřte")
92
+#define MSG_UBL_BC_REMOVE                   _UxGT("Odstraňte a změřte")
93
+#define MSG_UBL_MOVING_TO_NEXT              _UxGT("Přesun na další")
94
+#define MSG_UBL_ACTIVATE_MESH               _UxGT("Aktivovat UBL")
95
+#define MSG_UBL_DEACTIVATE_MESH             _UxGT("Deaktivovat UBL")
96
+#define MSG_UBL_SET_BED_TEMP                _UxGT("Teplota podložky")
97
+#define MSG_UBL_CUSTOM_BED_TEMP             MSG_UBL_SET_BED_TEMP
98
+#define MSG_UBL_SET_HOTEND_TEMP             _UxGT("Teplota hotendu")
99
+#define MSG_UBL_CUSTOM_HOTEND_TEMP          MSG_UBL_SET_HOTEND_TEMP
100
+#define MSG_UBL_EDIT_CUSTOM_MESH            _UxGT("Upravit vlastní síť")
101
+#define MSG_UBL_FINE_TUNE_MESH              _UxGT("Doladit síť bodů")
102
+#define MSG_UBL_DONE_EDITING_MESH           _UxGT("Konec úprav sítě")
103
+#define MSG_UBL_BUILD_CUSTOM_MESH           _UxGT("Vlastní síť")
104
+#define MSG_UBL_BUILD_MESH_MENU             _UxGT("Vytvořit síť")
105
+#define MSG_UBL_BUILD_PLA_MESH              _UxGT("Síť bodu PLA")
106
+#define MSG_UBL_BUILD_ABS_MESH              _UxGT("Síť bodu ABS")
107
+#define MSG_UBL_BUILD_COLD_MESH             _UxGT("Studená síť bodu")
108
+#define MSG_UBL_MESH_HEIGHT_ADJUST          _UxGT("Upravit výšku sítě")
109
+#define MSG_UBL_MESH_HEIGHT_AMOUNT          _UxGT("Výška")
110
+#define MSG_UBL_VALIDATE_MESH_MENU          _UxGT("Zkontrolovat síť")
111
+#define MSG_UBL_VALIDATE_PLA_MESH           _UxGT("Kontrola sítě PLA")
112
+#define MSG_UBL_VALIDATE_ABS_MESH           _UxGT("Kontrola sítě ABS")
113
+#define MSG_UBL_VALIDATE_CUSTOM_MESH        _UxGT("Kontrola vlast. sítě")
114
+#define MSG_UBL_CONTINUE_MESH               _UxGT("Pokračovat v síťi")
115
+#define MSG_UBL_MESH_LEVELING               _UxGT("Síťové rovnání")
116
+#define MSG_UBL_3POINT_MESH_LEVELING        _UxGT("3-bodove rovnání")
117
+#define MSG_UBL_GRID_MESH_LEVELING          _UxGT("Mrizkove rovnání")
118
+#define MSG_UBL_MESH_LEVEL                  _UxGT("Srovnat podložku")
119
+#define MSG_UBL_SIDE_POINTS                 _UxGT("Postranní body")
120
+#define MSG_UBL_MAP_TYPE                    _UxGT("Typ sítě bodu")
121
+#define MSG_UBL_OUTPUT_MAP                  _UxGT("Exportovat síť")
122
+#define MSG_UBL_OUTPUT_MAP_HOST             _UxGT("Exportovat do PC")
123
+#define MSG_UBL_OUTPUT_MAP_CSV              _UxGT("Exportovat do CSV")
124
+#define MSG_UBL_OUTPUT_MAP_BACKUP           _UxGT("Záloha do PC")
125
+#define MSG_UBL_INFO_UBL                    _UxGT("Info o UBL do PC")
126
+#define MSG_UBL_EDIT_MESH_MENU              _UxGT("Upravit síť bodů")
127
+#define MSG_UBL_FILLIN_AMOUNT               _UxGT("Hustota mřížky")
128
+#define MSG_UBL_MANUAL_FILLIN               _UxGT("Ruční hustota")
129
+#define MSG_UBL_SMART_FILLIN                _UxGT("Chytrá hustota")
130
+#define MSG_UBL_FILLIN_MESH                 _UxGT("Zaplnit mřížku")
131
+#define MSG_UBL_INVALIDATE_ALL              _UxGT("Zrušit všechno")
132
+#define MSG_UBL_INVALIDATE_CLOSEST          _UxGT("Zrušit poslední")
133
+#define MSG_UBL_FINE_TUNE_ALL               _UxGT("Upravit všechny")
134
+#define MSG_UBL_FINE_TUNE_CLOSEST           _UxGT("Upravit poslední")
135
+#define MSG_UBL_STORAGE_MESH_MENU           _UxGT("Uložiště sítí")
136
+#define MSG_UBL_STORAGE_SLOT                _UxGT("Paměťový slot")
137
+#define MSG_UBL_LOAD_MESH                   _UxGT("Načíst síť bodů")
138
+#define MSG_UBL_SAVE_MESH                   _UxGT("Uložit síť bodů")
139
+#define MSG_UBL_SAVE_ERROR                  _UxGT("Err: Uložit UBL")
140
+#define MSG_UBL_RESTORE_ERROR               _UxGT("Err: Obnovit UBL")
141
+#define MSG_UBL_Z_OFFSET_STOPPED            _UxGT("Konec Z-Offsetu")
142
+#define MSG_UBL_STEP_BY_STEP_MENU           _UxGT("UBL Postupně")
143
+
144
+#define MSG_USER_MENU                       _UxGT("Vlastní příkazy")
145
+#define MSG_MOVING                          _UxGT("Posouvání...")
146
+#define MSG_FREE_XY                         _UxGT("Uvolnit XY")
147
+#define MSG_MOVE_X                          _UxGT("Posunout X")
148
+#define MSG_MOVE_Y                          _UxGT("Posunout Y")
149
+#define MSG_MOVE_Z                          _UxGT("Posunout Z")
150
+#define MSG_MOVE_E                          _UxGT("Extrudér")
151
+#define MSG_MOVE_01MM                       _UxGT("Posunout o 0,1mm")
152
+#define MSG_MOVE_1MM                        _UxGT("Posunout o 1mm")
153
+#define MSG_MOVE_10MM                       _UxGT("Posunout o 10mm")
154
+#define MSG_SPEED                           _UxGT("Rychlost")
155
+#define MSG_BED_Z                           _UxGT("Výška podl.")
156
+#define MSG_NOZZLE                          _UxGT("Tryska")
157
+#define MSG_BED                             _UxGT("Podložka")
158
+#define MSG_FAN_SPEED                       _UxGT("Rychlost vent.")
159
+#define MSG_FLOW                            _UxGT("Průtok")
160
+#define MSG_CONTROL                         _UxGT("Ovládaní")
161
+#define MSG_MIN                             _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Min")
162
+#define MSG_MAX                             _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Max")
163
+#define MSG_FACTOR                          _UxGT(" ") LCD_STR_THERMOMETER _UxGT(" Fakt")
164
+#define MSG_AUTOTEMP                        _UxGT("Autoteplota")
165
+#define MSG_ON                              _UxGT("Zap")
166
+#define MSG_OFF                             _UxGT("Vyp")
167
+#define MSG_PID_P                           _UxGT("PID-P")
168
+#define MSG_PID_I                           _UxGT("PID-I")
169
+#define MSG_PID_D                           _UxGT("PID-D")
170
+#define MSG_PID_C                           _UxGT("PID-C")
171
+#define MSG_SELECT                          _UxGT("Vybrat")
172
+#define MSG_ACC                             _UxGT("Zrychl")
173
+#define MSG_JERK                            _UxGT("Jerk")
174
+#define MSG_VX_JERK                         _UxGT("Vx-jerk")
175
+#define MSG_VY_JERK                         _UxGT("Vy-jerk")
176
+#define MSG_VZ_JERK                         _UxGT("Vz-jerk")
177
+#define MSG_VE_JERK                         _UxGT("Ve-jerk")
178
+#define MSG_VELOCITY                        _UxGT("Rychlost")
179
+#define MSG_VMAX                            _UxGT("Vmax ")
180
+#define MSG_VMIN                            _UxGT("Vmin")
181
+#define MSG_VTRAV_MIN                       _UxGT("VTrav min")
182
+#define MSG_ACCELERATION                    _UxGT("Akcelerace")
183
+#define MSG_AMAX                            _UxGT("Amax ")
184
+#define MSG_A_RETRACT                       _UxGT("A-retrakt")
185
+#define MSG_A_TRAVEL                        _UxGT("A-přejezd")
186
+#define MSG_STEPS_PER_MM                    _UxGT("Kroků/mm")
187
+#define MSG_XSTEPS                          _UxGT("Xkroků/mm")
188
+#define MSG_YSTEPS                          _UxGT("Ykroků/mm")
189
+#define MSG_ZSTEPS                          _UxGT("Zkroků/mm")
190
+#define MSG_ESTEPS                          _UxGT("Ekroků/mm")
191
+#define MSG_E1STEPS                         _UxGT("E1kroků/mm")
192
+#define MSG_E2STEPS                         _UxGT("E2kroků/mm")
193
+#define MSG_E3STEPS                         _UxGT("E3kroků/mm")
194
+#define MSG_E4STEPS                         _UxGT("E4kroků/mm")
195
+#define MSG_E5STEPS                         _UxGT("E5kroků/mm")
196
+#define MSG_TEMPERATURE                     _UxGT("Teplota")
197
+#define MSG_MOTION                          _UxGT("Pohyb")
198
+#define MSG_FILAMENT                        _UxGT("Filament")
199
+#define MSG_VOLUMETRIC_ENABLED              _UxGT("E na mm3")
200
+#define MSG_FILAMENT_DIAM                   _UxGT("Fil. Prum.")
201
+#define MSG_ADVANCE_K                       _UxGT("K pro posun")
202
+#define MSG_CONTRAST                        _UxGT("Kontrast LCD")
203
+#define MSG_STORE_EEPROM                    _UxGT("Uložit nastavení")
204
+#define MSG_LOAD_EEPROM                     _UxGT("Načíst nastavení")
205
+#define MSG_RESTORE_FAILSAFE                _UxGT("Obnovit výchozí")
206
+#define MSG_INIT_EEPROM                     _UxGT("Inic. EEPROM")
207
+#define MSG_REFRESH                         _UxGT("Obnovit")
208
+#define MSG_WATCH                           _UxGT("Info obrazovka")
209
+#define MSG_PREPARE                         _UxGT("Připrava tisku")
210
+#define MSG_TUNE                            _UxGT("Doladění tisku")
211
+#define MSG_PAUSE_PRINT                     _UxGT("Pozastavit tisk")
212
+#define MSG_RESUME_PRINT                    _UxGT("Obnovit tisk")
213
+#define MSG_STOP_PRINT                      _UxGT("Zastavit tisk")
214
+#define MSG_CARD_MENU                       _UxGT("Tisknout z SD")
215
+#define MSG_NO_CARD                         _UxGT("Žádná SD karta")
216
+#define MSG_DWELL                           _UxGT("Uspáno...")
217
+#define MSG_USERWAIT                        _UxGT("Čekání na uživ...")
218
+#define MSG_PRINT_PAUSED                    _UxGT("Tisk pozastaven")
219
+#define MSG_RESUMING                        _UxGT("Obnovování tisku")
220
+#define MSG_PRINT_ABORTED                   _UxGT("Tisk zrušen")
221
+#define MSG_NO_MOVE                         _UxGT("Žádný pohyb.")
222
+#define MSG_KILLED                          _UxGT("PŘERUSENO. ")
223
+#define MSG_STOPPED                         _UxGT("ZASTAVENO. ")
224
+#define MSG_CONTROL_RETRACT                 _UxGT("Retrakt mm")
225
+#define MSG_CONTROL_RETRACT_SWAP            _UxGT("Výměna Re.mm")
226
+#define MSG_CONTROL_RETRACTF                _UxGT("Retraktovat  V")
227
+#define MSG_CONTROL_RETRACT_ZLIFT           _UxGT("Zvednuti Z mm")
228
+#define MSG_CONTROL_RETRACT_RECOVER         _UxGT("UnRet mm")
229
+#define MSG_CONTROL_RETRACT_RECOVER_SWAP    _UxGT("S UnRet mm")
230
+#define MSG_CONTROL_RETRACT_RECOVERF        _UxGT("UnRet  V")
231
+#define MSG_AUTORETRACT                     _UxGT("AutoRetr.")
232
+#define MSG_FILAMENTCHANGE                  _UxGT("Vyměnit filament")
233
+#define MSG_INIT_SDCARD                     _UxGT("Načíst SD kartu")
234
+#define MSG_CNG_SDCARD                      _UxGT("Vyměnit SD kartu")
235
+#define MSG_ZPROBE_OUT                      _UxGT("Sonda Z mimo podl")
236
+#define MSG_BLTOUCH                         _UxGT("BLTouch")
237
+#define MSG_BLTOUCH_SELFTEST                _UxGT("BLTouch Self-Test")
238
+#define MSG_BLTOUCH_RESET                   _UxGT("BLTouch Reset")
239
+#define MSG_BLTOUCH_DEPLOY                  _UxGT("BLTouch Vysunout")
240
+#define MSG_BLTOUCH_STOW                    _UxGT("BLTouch Zasunout")
241
+#define MSG_HOME                            _UxGT("Domů")  // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST
242
+#define MSG_FIRST                           _UxGT("první")
243
+#define MSG_ZPROBE_ZOFFSET                  _UxGT("Z ofset")
244
+#define MSG_BABYSTEP_X                      _UxGT("Babystep X")
245
+#define MSG_BABYSTEP_Y                      _UxGT("Babystep Y")
246
+#define MSG_BABYSTEP_Z                      _UxGT("Babystep Z")
247
+#define MSG_ENDSTOP_ABORT                   _UxGT("Endstop abort")
248
+#define MSG_HEATING_FAILED_LCD              _UxGT("Chyba zahřívání")
249
+#define MSG_ERR_REDUNDANT_TEMP              _UxGT("REDUND. TEPLOTA")
250
+#define MSG_THERMAL_RUNAWAY                 _UxGT("TEPLOTNÍ SKOK")
251
+#define MSG_ERR_MAXTEMP                     _UxGT("VYSOKÁ TEPLOTA")
252
+#define MSG_ERR_MINTEMP                     _UxGT("NÍZKA TEPLOTA")
253
+#define MSG_ERR_MAXTEMP_BED                 _UxGT("VYS. TEPL. PODL.")
254
+#define MSG_ERR_MINTEMP_BED                 _UxGT("NÍZ. TEPL. PODL.")
255
+#define MSG_ERR_Z_HOMING                    _UxGT("G28 Z ZAKÁZÁNO")
256
+#define MSG_HALTED                          _UxGT("TISK. ZASTAVENA")
257
+#define MSG_PLEASE_RESET                    _UxGT("Proveďte reset")
258
+#define MSG_SHORT_DAY                       _UxGT("d")
259
+#define MSG_SHORT_HOUR                      _UxGT("h")
260
+#define MSG_SHORT_MINUTE                    _UxGT("m")
261
+#define MSG_HEATING                         _UxGT("Zahřívání...")
262
+#define MSG_HEATING_COMPLETE                _UxGT("Zahřáti hotovo.")
263
+#define MSG_BED_HEATING                     _UxGT("Zahřívání podl.")
264
+#define MSG_BED_DONE                        _UxGT("Podložka hotova.")
265
+#define MSG_DELTA_CALIBRATE                 _UxGT("Delta Kalibrace")
266
+#define MSG_DELTA_CALIBRATE_X               _UxGT("Kalibrovat X")
267
+#define MSG_DELTA_CALIBRATE_Y               _UxGT("Kalibrovat Y")
268
+#define MSG_DELTA_CALIBRATE_Z               _UxGT("Kalibrovat Z")
269
+#define MSG_DELTA_CALIBRATE_CENTER          _UxGT("Kalibrovat Střed")
270
+#define MSG_DELTA_AUTO_CALIBRATE            _UxGT("Autokalibrace")
271
+#define MSG_DELTA_HEIGHT_CALIBRATE          _UxGT("Nast.výšku delty")
272
+#define MSG_INFO_MENU                       _UxGT("O tiskárně")
273
+#define MSG_INFO_PRINTER_MENU               _UxGT("Info o tiskárně")
274
+#define MSG_3POINT_LEVELING                 _UxGT("3-bodové rovnání")
275
+#define MSG_LINEAR_LEVELING                 _UxGT("Lineárni rovnání")
276
+#define MSG_BILINEAR_LEVELING               _UxGT("Bilineární rovnání")
277
+#define MSG_UBL_LEVELING                    _UxGT("Unified Bed Leveling")
278
+#define MSG_MESH_LEVELING                   _UxGT("Mřížkové rovnání")
279
+#define MSG_INFO_STATS_MENU                 _UxGT("Statistika")
280
+#define MSG_INFO_BOARD_MENU                 _UxGT("Info o desce")
281
+#define MSG_INFO_THERMISTOR_MENU            _UxGT("Termistory")
282
+#define MSG_INFO_EXTRUDERS                  _UxGT("Extrudéry")
283
+#define MSG_INFO_BAUDRATE                   _UxGT("Rychlost")
284
+#define MSG_INFO_PROTOCOL                   _UxGT("Protokol")
285
+#define MSG_CASE_LIGHT                      _UxGT("Osvětlení")
286
+#define MSG_CASE_LIGHT_BRIGHTNESS           _UxGT("Jas světla")
287
+
288
+#if LCD_WIDTH >= 20
289
+  #define MSG_INFO_PRINT_COUNT              _UxGT("Počet tisků")
290
+  #define MSG_INFO_COMPLETED_PRINTS         _UxGT("Dokončeno")
291
+  #define MSG_INFO_PRINT_TIME               _UxGT("Celkový čas")
292
+  #define MSG_INFO_PRINT_LONGEST            _UxGT("Nejdelší tisk")
293
+  #define MSG_INFO_PRINT_FILAMENT           _UxGT("Celkem vytlačeno")
294
+#else
295
+  #define MSG_INFO_PRINT_COUNT              _UxGT("Tisky")
296
+  #define MSG_INFO_COMPLETED_PRINTS         _UxGT("Hotovo")
297
+  #define MSG_INFO_PRINT_TIME               _UxGT("Čas")
298
+  #define MSG_INFO_PRINT_LONGEST            _UxGT("Nejdelší")
299
+  #define MSG_INFO_PRINT_FILAMENT           _UxGT("Vytlačeno")
300
+#endif
301
+
302
+#define MSG_INFO_MIN_TEMP                   _UxGT("Teplota min")
303
+#define MSG_INFO_MAX_TEMP                   _UxGT("Teplota max")
304
+#define MSG_INFO_PSU                        _UxGT("Nap. zdroj")
305
+#define MSG_DRIVE_STRENGTH                  _UxGT("Buzení motorů")
306
+#define MSG_DAC_PERCENT                     _UxGT("Motor %")
307
+#define MSG_DAC_EEPROM_WRITE                _UxGT("Uložit do EEPROM")
308
+
309
+#define MSG_FILAMENT_CHANGE_HEADER          _UxGT("PRINT PAUSED")
310
+#define MSG_FILAMENT_CHANGE_OPTION_HEADER   _UxGT("RESUME OPTIONS:")
311
+#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE  _UxGT("Ještě vytlačit")
312
+#define MSG_FILAMENT_CHANGE_OPTION_RESUME   _UxGT("Obnovit tisk")
313
+#define MSG_FILAMENT_CHANGE_MINTEMP         _UxGT("Min. teplota je ")
314
+#define MSG_FILAMENT_CHANGE_NOZZLE          _UxGT("  Tryska: ")
315
+
316
+#if LCD_HEIGHT >= 4
317
+  // Up to 3 lines allowed
318
+  #define MSG_FILAMENT_CHANGE_INIT_1          _UxGT("Čekejte prosím")
319
+  #define MSG_FILAMENT_CHANGE_INIT_2          _UxGT("na zahájení")
320
+  #define MSG_FILAMENT_CHANGE_INIT_3          _UxGT("výměny filamentu")
321
+  #define MSG_FILAMENT_CHANGE_UNLOAD_1        _UxGT("Čekejte prosím")
322
+  #define MSG_FILAMENT_CHANGE_UNLOAD_2        _UxGT("na vysunuti")
323
+  #define MSG_FILAMENT_CHANGE_UNLOAD_3        _UxGT("filamentu")
324
+  #define MSG_FILAMENT_CHANGE_INSERT_1        _UxGT("Vložte filament")
325
+  #define MSG_FILAMENT_CHANGE_INSERT_2        _UxGT("a stiskněte")
326
+  #define MSG_FILAMENT_CHANGE_INSERT_3        _UxGT("tlačítko...")
327
+  #define MSG_FILAMENT_CHANGE_HEAT_1          _UxGT("Klikněte pro")
328
+  #define MSG_FILAMENT_CHANGE_HEAT_2          _UxGT("nahřátí trysky")
329
+  #define MSG_FILAMENT_CHANGE_HEATING_1       _UxGT("Čekejte prosím")
330
+  #define MSG_FILAMENT_CHANGE_HEATING_2       _UxGT("na nahřátí tr.")
331
+  #define MSG_FILAMENT_CHANGE_LOAD_1          _UxGT("Čekejte prosím")
332
+  #define MSG_FILAMENT_CHANGE_LOAD_2          _UxGT("na zavedení")
333
+  #define MSG_FILAMENT_CHANGE_LOAD_3          _UxGT("filamentu")
334
+  #define MSG_FILAMENT_CHANGE_EXTRUDE_1       _UxGT("Čekejte prosím")
335
+  #define MSG_FILAMENT_CHANGE_EXTRUDE_2       _UxGT("na vytlačení")
336
+  #define MSG_FILAMENT_CHANGE_EXTRUDE_3       _UxGT("filamentu")
337
+  #define MSG_FILAMENT_CHANGE_RESUME_1        _UxGT("Čekejte prosím")
338
+  #define MSG_FILAMENT_CHANGE_RESUME_2        _UxGT("na pokračování")
339
+  #define MSG_FILAMENT_CHANGE_RESUME_3        _UxGT("tisku")
340
+#else // LCD_HEIGHT < 4
341
+  // Up to 2 lines allowed
342
+  #define MSG_FILAMENT_CHANGE_INIT_1          _UxGT("Čekejte...")
343
+  #define MSG_FILAMENT_CHANGE_UNLOAD_1        _UxGT("Vysouvání...")
344
+  #define MSG_FILAMENT_CHANGE_INSERT_1        _UxGT("Vložte, klikněte")
345
+  #define MSG_FILAMENT_CHANGE_HEATING_1       _UxGT("Nahřívání...")
346
+  #define MSG_FILAMENT_CHANGE_LOAD_1          _UxGT("Zavádění...")
347
+  #define MSG_FILAMENT_CHANGE_EXTRUDE_1       _UxGT("Vytlačování...")
348
+  #define MSG_FILAMENT_CHANGE_RESUME_1        _UxGT("Pokračování...")
349
+#endif // LCD_HEIGHT < 4
350
+
351
+#endif // LANGUAGE_CZ_UTF_H

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

@@ -43,6 +43,8 @@
43 43
 #define MSG_MAIN                            _UxGT("Hauptmenü")
44 44
 #define MSG_AUTOSTART                       _UxGT("Autostart")
45 45
 #define MSG_DISABLE_STEPPERS                _UxGT("Motoren deaktivieren") // M84
46
+#define MSG_DEBUG_MENU                      _UxGT("Debug Menu")
47
+#define MSG_PROGRESS_BAR_TEST               _UxGT("Fortschrittsb. Test")
46 48
 #define MSG_AUTO_HOME                       _UxGT("Home") // G28
47 49
 #define MSG_AUTO_HOME_X                     _UxGT("Home X")
48 50
 #define MSG_AUTO_HOME_Y                     _UxGT("Home Y")
@@ -72,8 +74,10 @@
72 74
 #define MSG_EXTRUDE                         _UxGT("Extrudieren")
73 75
 #define MSG_RETRACT                         _UxGT("Retract")
74 76
 #define MSG_MOVE_AXIS                       _UxGT("Bewegen")
75
-#define MSG_BED_LEVELING                    _UxGT("Bett nivellieren")
77
+#define MSG_BED_LEVELING                    _UxGT("Bett Nivellierung")
76 78
 #define MSG_LEVEL_BED                       _UxGT("Bett nivellieren")
79
+#define MSG_EDITING_STOPPED                 _UxGT("Netzbearb. angeh.")
80
+#define MSG_USER_MENU                       _UxGT("Benutzer Menü")
77 81
 #define MSG_MOVING                          _UxGT("In Bewegung...")
78 82
 #define MSG_FREE_XY                         _UxGT("Abstand XY")
79 83
 #define MSG_MOVE_X                          _UxGT("X")
@@ -88,7 +92,7 @@
88 92
 #define MSG_NOZZLE                          _UxGT("Düse")
89 93
 #define MSG_BED                             _UxGT("Bett")
90 94
 #define MSG_FAN_SPEED                       _UxGT("Lüfter")
91
-#define MSG_FLOW                            _UxGT("Durchfluss")
95
+#define MSG_FLOW                            _UxGT("Flussrate")
92 96
 #define MSG_CONTROL                         _UxGT("Einstellungen")
93 97
 #define MSG_MIN                             LCD_STR_THERMOMETER _UxGT(" min")
94 98
 #define MSG_MAX                             LCD_STR_THERMOMETER _UxGT(" max")
@@ -107,9 +111,11 @@
107 111
 #define MSG_VY_JERK                         _UxGT("V Y Jerk")
108 112
 #define MSG_VZ_JERK                         _UxGT("V Z Jerk")
109 113
 #define MSG_VE_JERK                         _UxGT("V E Jerk")
114
+#define MSG_VELOCITY                        _UxGT("Geschwindigkeit")
110 115
 #define MSG_VMAX                            _UxGT("V max ") // space by purpose
111 116
 #define MSG_VMIN                            _UxGT("V min")
112 117
 #define MSG_VTRAV_MIN                       _UxGT("V min Leerfahrt")
118
+#define MSG_ACCELERATION                    _UxGT("Beschleunigung")
113 119
 #define MSG_AMAX                            _UxGT("A max ") // space by purpose
114 120
 #define MSG_A_RETRACT                       _UxGT("A Retract")
115 121
 #define MSG_A_TRAVEL                        _UxGT("A Leerfahrt")
@@ -130,9 +136,10 @@
130 136
 #define MSG_FILAMENT_DIAM                   _UxGT("D Fil.")
131 137
 #define MSG_ADVANCE_K                       _UxGT("Advance Faktor")
132 138
 #define MSG_CONTRAST                        _UxGT("LCD Kontrast")
133
-#define MSG_STORE_EEPROM                    _UxGT("EPROM speichern")
134
-#define MSG_LOAD_EEPROM                     _UxGT("EPROM laden")
135
-#define MSG_RESTORE_FAILSAFE                _UxGT("Standardkonfiguration")
139
+#define MSG_STORE_EEPROM                    _UxGT("Konfig. speichern")
140
+#define MSG_LOAD_EEPROM                     _UxGT("Konfig. laden")
141
+#define MSG_RESTORE_FAILSAFE                _UxGT("Standardwerte laden")
142
+#define MSG_INIT_EEPROM                     _UxGT("Werkseinstellungen")
136 143
 #define MSG_REFRESH                         _UxGT("Aktualisieren")
137 144
 #define MSG_WATCH                           _UxGT("Info")
138 145
 #define MSG_PREPARE                         _UxGT("Vorbereitung")
@@ -144,6 +151,7 @@
144 151
 #define MSG_NO_CARD                         _UxGT("Keine SD-Karte")
145 152
 #define MSG_DWELL                           _UxGT("Warten...")
146 153
 #define MSG_USERWAIT                        _UxGT("Warte auf Nutzer")
154
+#define MSG_PRINT_PAUSED                    _UxGT("Druck pausiert")
147 155
 #define MSG_RESUMING                        _UxGT("Druckfortsetzung")
148 156
 #define MSG_PRINT_ABORTED                   _UxGT("Druck abgebrochen")
149 157
 #define MSG_NO_MOVE                         _UxGT("Motoren eingeschaltet")
@@ -163,6 +171,8 @@
163 171
 #define MSG_ZPROBE_OUT                      _UxGT("Sensor ausserhalb")
164 172
 #define MSG_BLTOUCH_SELFTEST                _UxGT("BLTouch Test")
165 173
 #define MSG_BLTOUCH_RESET                   _UxGT("BLTouch Reset")
174
+#define MSG_BLTOUCH_DEPLOY                  _UxGT("BLTouch ausfahren")
175
+#define MSG_BLTOUCH_STOW                    _UxGT("BLTouch einfahren")
166 176
 #define MSG_HOME                            _UxGT("Vorher")  // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST
167 177
 #define MSG_FIRST                           _UxGT("homen")
168 178
 #define MSG_ZPROBE_ZOFFSET                  _UxGT("Z Versatz")
@@ -194,18 +204,79 @@
194 204
 #define MSG_DELTA_CALIBRATE_CENTER          _UxGT("Kalibriere Mitte")
195 205
 #define MSG_DELTA_AUTO_CALIBRATE            _UxGT("Autom. Kalibrierung")
196 206
 #define MSG_DELTA_HEIGHT_CALIBRATE          _UxGT("Delta Höhe setzen")
197
-#define MSG_DEBUG_MENU                      _UxGT("Debug Menu")
198
-#define MSG_PROGRESS_BAR_TEST               _UxGT("Fortschrittb. Test")
199 207
 
200 208
 #define MSG_INFO_MENU                       _UxGT("Über den Drucker")
201 209
 #define MSG_INFO_PRINTER_MENU               _UxGT("Drucker Info")
202
-#define MSG_INFO_STATS_MENU                 _UxGT("Drucker Stat.")
210
+#define MSG_3POINT_LEVELING                 _UxGT("3-Punkt Nivellierung")
211
+#define MSG_LINEAR_LEVELING                 _UxGT("Lineare Nivellierung")
212
+#define MSG_BILINEAR_LEVELING               _UxGT("Bilineare Nivell.")
213
+#define MSG_UBL_LEVELING                    _UxGT("Unified Bed Leveling")
214
+#define MSG_MESH_LEVELING                   _UxGT("Netz Nivellierung")
215
+#define MSG_INFO_STATS_MENU                 _UxGT("Drucker Statistik")
203 216
 #define MSG_INFO_BOARD_MENU                 _UxGT("Board Info")
204 217
 #define MSG_INFO_THERMISTOR_MENU            _UxGT("Thermistoren")
205 218
 #define MSG_INFO_EXTRUDERS                  _UxGT("Extruder")
206 219
 #define MSG_INFO_BAUDRATE                   _UxGT("Baud")
207 220
 #define MSG_INFO_PROTOCOL                   _UxGT("Protokoll")
208
-#define MSG_CASE_LIGHT                      _UxGT("Licht")
221
+#define MSG_CASE_LIGHT                      _UxGT("Beleuchtung")
222
+#define MSG_CASE_LIGHT_BRIGHTNESS           _UxGT("Helligkeit")
223
+
224
+#define MSG_UBL_DOING_G29                 _UxGT("G29 UBL läuft!")
225
+#define MSG_UBL_UNHOMED                   _UxGT("Erst XYZ homen")
226
+#define MSG_UBL_TOOLS                     _UxGT("UBL Tools")
227
+#define MSG_UBL_LEVEL_BED                 _UxGT("Unified Bed Leveling")
228
+#define MSG_UBL_MANUAL_MESH               _UxGT("Netz manuell erst.")
229
+#define MSG_UBL_BC_INSERT                 _UxGT("Unterlegen & messen")
230
+#define MSG_UBL_BC_INSERT2                _UxGT("Messen")
231
+#define MSG_UBL_BC_REMOVE                 _UxGT("Entfernen & messen")
232
+#define MSG_UBL_MOVING_TO_NEXT            _UxGT("Nächster Punkt...")
233
+#define MSG_UBL_ACTIVATE_MESH             _UxGT("UBL aktivieren")
234
+#define MSG_UBL_DEACTIVATE_MESH           _UxGT("UBL deaktivieren")
235
+#define MSG_UBL_SET_BED_TEMP              _UxGT("Bett Temp.")
236
+#define MSG_UBL_CUSTOM_BED_TEMP           MSG_UBL_SET_BED_TEMP
237
+#define MSG_UBL_SET_HOTEND_TEMP           _UxGT("Hotend Temp.")
238
+#define MSG_UBL_CUSTOM_HOTEND_TEMP        MSG_UBL_SET_HOTEND_TEMP
239
+#define MSG_UBL_EDIT_CUSTOM_MESH          _UxGT("Eigenes Netz bearb.")
240
+#define MSG_UBL_FINE_TUNE_MESH            _UxGT("Feineinstellung...")
241
+#define MSG_UBL_DONE_EDITING_MESH         _UxGT("Bearbeitung beendet")
242
+#define MSG_UBL_BUILD_CUSTOM_MESH         _UxGT("Eigenes Netz erst.")
243
+#define MSG_UBL_BUILD_MESH_MENU           _UxGT("Netz erstellen")
244
+#define MSG_UBL_BUILD_PLA_MESH            _UxGT("Netz erstellen PLA")
245
+#define MSG_UBL_BUILD_ABS_MESH            _UxGT("Netz erstellen ABS")
246
+#define MSG_UBL_BUILD_COLD_MESH           _UxGT("Netz erstellen kalt")
247
+#define MSG_UBL_MESH_HEIGHT_ADJUST        _UxGT("Netz Höhe einst.")
248
+#define MSG_UBL_MESH_HEIGHT_AMOUNT        _UxGT("Height Amount")
249
+#define MSG_UBL_VALIDATE_MESH_MENU        _UxGT("Netz validieren")
250
+#define MSG_UBL_VALIDATE_PLA_MESH         _UxGT("Netz validieren PLA")
251
+#define MSG_UBL_VALIDATE_ABS_MESH         _UxGT("Netz validieren ABS")
252
+#define MSG_UBL_VALIDATE_CUSTOM_MESH      _UxGT("Eig. Netz validieren")
253
+#define MSG_UBL_CONTINUE_MESH             _UxGT("Netzerst. forts.")
254
+#define MSG_UBL_MESH_LEVELING             _UxGT("Netz Nivellierung")
255
+#define MSG_UBL_3POINT_MESH_LEVELING      _UxGT("3-Punkt Nivellierung")
256
+#define MSG_UBL_GRID_MESH_LEVELING        _UxGT("Gitternetz Nivell.")
257
+#define MSG_UBL_MESH_LEVEL                _UxGT("Netz nivellieren")
258
+#define MSG_UBL_SIDE_POINTS               _UxGT("Eckpunkte")
259
+#define MSG_UBL_MAP_TYPE                  _UxGT("Kartentyp")
260
+#define MSG_UBL_OUTPUT_MAP                _UxGT("Karte ausgeben")
261
+#define MSG_UBL_OUTPUT_MAP_HOST           _UxGT("Ausgabe für Host")
262
+#define MSG_UBL_OUTPUT_MAP_CSV            _UxGT("Ausgabe für CSV")
263
+#define MSG_UBL_INFO_UBL                  _UxGT("UBL Info ausgeben")
264
+#define MSG_UBL_EDIT_MESH_MENU            _UxGT("Netz bearbeiten")
265
+#define MSG_UBL_FILLIN_AMOUNT             _UxGT("Menge an Fill-in")
266
+#define MSG_UBL_MANUAL_FILLIN             _UxGT("Manuelles Fill-in")
267
+#define MSG_UBL_SMART_FILLIN              _UxGT("Kluges Fill-in")
268
+#define MSG_UBL_FILLIN_MESH               _UxGT("Fill-in Netz")
269
+#define MSG_UBL_INVALIDATE_ALL            _UxGT("Alles annullieren")
270
+#define MSG_UBL_INVALIDATE_CLOSEST        _UxGT("Nächstlieg. ann.")
271
+#define MSG_UBL_FINE_TUNE_ALL             _UxGT("Feineinstellung Alle")
272
+#define MSG_UBL_FINE_TUNE_CLOSEST         _UxGT("Feineinst. Nächstl.")
273
+#define MSG_UBL_STORAGE_MESH_MENU         _UxGT("Netz Speicherplatz")
274
+#define MSG_UBL_STORAGE_SLOT              _UxGT("Memory Slot")
275
+#define MSG_UBL_LOAD_MESH                 _UxGT("Bett Netz laden")
276
+#define MSG_UBL_SAVE_MESH                 _UxGT("Bett Netz speichern")
277
+#define MSG_UBL_SAVE_ERROR                _UxGT("ERR:UBL speichern")
278
+#define MSG_UBL_RESTORE_ERROR             _UxGT("ERR:UBL wiederherst.")
279
+#define MSG_UBL_Z_OFFSET_STOPPED          _UxGT("Z-Versatz angehalten")
209 280
 
210 281
 #if LCD_WIDTH >= 20
211 282
   #define MSG_INFO_PRINT_COUNT              _UxGT("Gesamte Drucke")
@@ -229,8 +300,8 @@
229 300
 #define MSG_DAC_PERCENT                     _UxGT("Treiber %")
230 301
 #define MSG_DAC_EEPROM_WRITE                _UxGT("Werte speichern")
231 302
 
232
-#define MSG_FILAMENT_CHANGE_HEADER          _UxGT("PRINT PAUSED")
233
-#define MSG_FILAMENT_CHANGE_OPTION_HEADER   _UxGT("RESUME OPTIONS:")
303
+#define MSG_FILAMENT_CHANGE_HEADER          _UxGT("DRUCK PAUSIERT")
304
+#define MSG_FILAMENT_CHANGE_OPTION_HEADER   _UxGT("FORTS. OPTIONEN:")
234 305
 #define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE  _UxGT("Extrude mehr")
235 306
 #define MSG_FILAMENT_CHANGE_OPTION_RESUME   _UxGT("Drucke weiter")
236 307
 #define MSG_FILAMENT_CHANGE_MINTEMP         _UxGT("Min. Temperatur ist ")
@@ -243,13 +314,13 @@
243 314
   #define MSG_FILAMENT_CHANGE_INIT_3          _UxGT("Filamentwechsels")
244 315
   #define MSG_FILAMENT_CHANGE_UNLOAD_1        _UxGT("Warte auf")
245 316
   #define MSG_FILAMENT_CHANGE_UNLOAD_2        _UxGT("Herausnahme")
246
-  #define MSG_FILAMENT_CHANGE_UNLOAD_3        _UxGT("des Filaments")
317
+  #define MSG_FILAMENT_CHANGE_UNLOAD_3        _UxGT("des Filaments...")
247 318
   #define MSG_FILAMENT_CHANGE_INSERT_1        _UxGT("Filament einlegen")
248 319
   #define MSG_FILAMENT_CHANGE_INSERT_2        _UxGT("und Knopf")
249 320
   #define MSG_FILAMENT_CHANGE_INSERT_3        _UxGT("drücken...")
250 321
   #define MSG_FILAMENT_CHANGE_HEAT_1          _UxGT("Knopf drücken um")
251 322
   #define MSG_FILAMENT_CHANGE_HEAT_2          _UxGT("Düse aufzuheizen.")
252
-  #define MSG_FILAMENT_CHANGE_HEATING_1       _UxGT("Düse heizt auf.")
323
+  #define MSG_FILAMENT_CHANGE_HEATING_1       _UxGT("Düse heizt auf...")
253 324
   #define MSG_FILAMENT_CHANGE_HEATING_2       _UxGT("Bitte warten...")
254 325
   #define MSG_FILAMENT_CHANGE_LOAD_1          _UxGT("Warte auf")
255 326
   #define MSG_FILAMENT_CHANGE_LOAD_2          _UxGT("Laden des")
@@ -259,7 +330,7 @@
259 330
   #define MSG_FILAMENT_CHANGE_EXTRUDE_3       _UxGT("Filaments")
260 331
   #define MSG_FILAMENT_CHANGE_RESUME_1        _UxGT("Warte auf")
261 332
   #define MSG_FILAMENT_CHANGE_RESUME_2        _UxGT("Fortsetzung des")
262
-  #define MSG_FILAMENT_CHANGE_RESUME_3        _UxGT("Druckes")
333
+  #define MSG_FILAMENT_CHANGE_RESUME_3        _UxGT("Druckes...")
263 334
 #else // LCD_HEIGHT < 4
264 335
   // Up to 2 lines allowed
265 336
   #define MSG_FILAMENT_CHANGE_INIT_1          _UxGT("Bitte warten...")

+ 192
- 137
Marlin/language_en.h Просмотреть файл

@@ -156,147 +156,187 @@
156 156
 #ifndef MSG_LEVEL_BED
157 157
   #define MSG_LEVEL_BED                       _UxGT("Level bed")
158 158
 #endif
159
+#ifndef MSG_EDITING_STOPPED
160
+  #define MSG_EDITING_STOPPED                 _UxGT("Mesh Editing Stopped")
161
+#endif
159 162
 #ifndef MSG_USER_MENU
160 163
   #define MSG_USER_MENU                       _UxGT("Custom Commands")
161 164
 #endif
162 165
 
163
-#if ENABLED(AUTO_BED_LEVELING_UBL)
164
-  #ifndef MSG_UBL_UNHOMED
165
-    #define MSG_UBL_UNHOMED                   _UxGT("Home XYZ first")
166
-  #endif
167
-  #ifndef MSG_UBL_TOOLS
168
-    #define MSG_UBL_TOOLS                     _UxGT("UBL Tools")
169
-  #endif
170
-  #ifndef MSG_UBL_LEVEL_BED
171
-    #define MSG_UBL_LEVEL_BED                 _UxGT("Unified Bed Leveling")
172
-  #endif
173
-  #ifndef MSG_UBL_ACTIVATE_MESH
174
-    #define MSG_UBL_ACTIVATE_MESH             _UxGT("Activate UBL")
175
-  #endif
176
-  #ifndef MSG_UBL_DEACTIVATE_MESH
177
-    #define MSG_UBL_DEACTIVATE_MESH           _UxGT("Deactivate UBL")
178
-  #endif
179
-  #ifndef MSG_UBL_SET_BED_TEMP
180
-    #define MSG_UBL_SET_BED_TEMP              _UxGT("Bed Temp")
181
-  #endif
182
-  #ifndef MSG_UBL_CUSTOM_BED_TEMP
183
-    #define MSG_UBL_CUSTOM_BED_TEMP           MSG_UBL_SET_BED_TEMP
184
-  #endif
185
-  #ifndef MSG_UBL_SET_HOTEND_TEMP
186
-    #define MSG_UBL_SET_HOTEND_TEMP           _UxGT("Hotend Temp")
187
-  #endif
188
-  #ifndef MSG_UBL_CUSTOM_HOTEND_TEMP
189
-    #define MSG_UBL_CUSTOM_HOTEND_TEMP        MSG_UBL_SET_HOTEND_TEMP
190
-  #endif
191
-  #ifndef MSG_UBL_EDIT_CUSTOM_MESH
192
-    #define MSG_UBL_EDIT_CUSTOM_MESH          _UxGT("Edit Custom Mesh")
193
-  #endif
194
-  #ifndef MSG_UBL_BUILD_CUSTOM_MESH
195
-    #define MSG_UBL_BUILD_CUSTOM_MESH         _UxGT("Build Custom Mesh")
196
-  #endif
197
-  #ifndef MSG_UBL_BUILD_MESH_MENU
198
-    #define MSG_UBL_BUILD_MESH_MENU           _UxGT("Build Mesh")
199
-  #endif
200
-  #ifndef MSG_UBL_BUILD_PLA_MESH
201
-    #define MSG_UBL_BUILD_PLA_MESH            _UxGT("Build PLA Mesh")
202
-  #endif
203
-  #ifndef MSG_UBL_BUILD_ABS_MESH
204
-    #define MSG_UBL_BUILD_ABS_MESH            _UxGT("Build ABS Mesh")
205
-  #endif
206
-  #ifndef MSG_UBL_BUILD_COLD_MESH
207
-    #define MSG_UBL_BUILD_COLD_MESH           _UxGT("Build Cold Mesh")
208
-  #endif
209
-  #ifndef MSG_UBL_MESH_HEIGHT_ADJUST
210
-    #define MSG_UBL_MESH_HEIGHT_ADJUST        _UxGT("Adjust Mesh Height")
211
-  #endif
212
-  #ifndef MSG_UBL_MESH_HEIGHT_AMOUNT
213
-    #define MSG_UBL_MESH_HEIGHT_AMOUNT        _UxGT("Height Amount")
214
-  #endif
215
-  #ifndef MSG_UBL_VALIDATE_MESH_MENU
216
-    #define MSG_UBL_VALIDATE_MESH_MENU        _UxGT("Validate Mesh")
217
-  #endif
218
-  #ifndef MSG_UBL_VALIDATE_PLA_MESH
219
-    #define MSG_UBL_VALIDATE_PLA_MESH         _UxGT("Validate PLA Mesh")
220
-  #endif
221
-  #ifndef MSG_UBL_VALIDATE_ABS_MESH
222
-    #define MSG_UBL_VALIDATE_ABS_MESH         _UxGT("Validate ABS Mesh")
223
-  #endif
224
-  #ifndef MSG_UBL_VALIDATE_CUSTOM_MESH
225
-    #define MSG_UBL_VALIDATE_CUSTOM_MESH      _UxGT("Validate Custom Mesh")
226
-  #endif
227
-  #ifndef MSG_UBL_CONTINUE_MESH
228
-    #define MSG_UBL_CONTINUE_MESH             _UxGT("Continue Bed Mesh")
229
-  #endif
230
-  #ifndef MSG_UBL_MESH_LEVELING
231
-    #define MSG_UBL_MESH_LEVELING             _UxGT("Mesh Leveling")
232
-  #endif
233
-  #ifndef MSG_UBL_3POINT_MESH_LEVELING
234
-    #define MSG_UBL_3POINT_MESH_LEVELING      _UxGT("3-Point Leveling")
235
-  #endif
236
-  #ifndef MSG_UBL_GRID_MESH_LEVELING
237
-    #define MSG_UBL_GRID_MESH_LEVELING        _UxGT("Grid Mesh Leveling")
238
-  #endif
239
-  #ifndef MSG_UBL_MESH_LEVEL
240
-    #define MSG_UBL_MESH_LEVEL                _UxGT("Level Mesh")
241
-  #endif
242
-  #ifndef MSG_UBL_SIDE_POINTS
243
-    #define MSG_UBL_SIDE_POINTS               _UxGT("Side Points")
244
-  #endif
245
-  #ifndef MSG_UBL_MAP_TYPE
246
-    #define MSG_UBL_MAP_TYPE                  _UxGT("Map Type")
247
-  #endif
248
-  #ifndef MSG_UBL_OUTPUT_MAP
249
-    #define MSG_UBL_OUTPUT_MAP                _UxGT("Output Mesh Map")
250
-  #endif
251
-  #ifndef MSG_UBL_OUTPUT_MAP_HOST
252
-    #define MSG_UBL_OUTPUT_MAP_HOST           _UxGT("Output for Host")
253
-  #endif
254
-  #ifndef MSG_UBL_OUTPUT_MAP_CSV
255
-    #define MSG_UBL_OUTPUT_MAP_CSV            _UxGT("Output for CSV")
256
-  #endif
257
-  #ifndef MSG_UBL_INFO_UBL
258
-    #define MSG_UBL_INFO_UBL                  _UxGT("Output UBL Info")
259
-  #endif
260
-  #ifndef MSG_UBL_EDIT_MESH_MENU
261
-    #define MSG_UBL_EDIT_MESH_MENU            _UxGT("Edit Mesh")
262
-  #endif
263
-  #ifndef MSG_UBL_FILLIN_AMOUNT
264
-    #define MSG_UBL_FILLIN_AMOUNT             _UxGT("Fill-in Amount")
265
-  #endif
266
-  #ifndef MSG_UBL_MANUAL_FILLIN
267
-    #define MSG_UBL_MANUAL_FILLIN             _UxGT("Manual Fill-in")
268
-  #endif
269
-  #ifndef MSG_UBL_SMART_FILLIN
270
-    #define MSG_UBL_SMART_FILLIN              _UxGT("Smart Fill-in")
271
-  #endif
272
-  #ifndef MSG_UBL_FILLIN_MESH
273
-    #define MSG_UBL_FILLIN_MESH               _UxGT("Fill-in Mesh")
274
-  #endif
275
-  #ifndef MSG_UBL_INVALIDATE_ALL
276
-    #define MSG_UBL_INVALIDATE_ALL            _UxGT("Invalidate All")
277
-  #endif
278
-  #ifndef MSG_UBL_INVALIDATE_CLOSEST
279
-    #define MSG_UBL_INVALIDATE_CLOSEST        _UxGT("Invalidate Closest")
280
-  #endif
281
-  #ifndef MSG_UBL_FINE_TUNE_ALL
282
-    #define MSG_UBL_FINE_TUNE_ALL             _UxGT("Fine Tune All")
283
-  #endif
284
-  #ifndef MSG_UBL_FINE_TUNE_CLOSEST
285
-    #define MSG_UBL_FINE_TUNE_CLOSEST         _UxGT("Fine Tune Closest")
286
-  #endif
287
-  #ifndef MSG_UBL_STORAGE_MESH_MENU
288
-    #define MSG_UBL_STORAGE_MESH_MENU         _UxGT("Mesh Storage")
289
-  #endif
290
-  #ifndef MSG_UBL_STORAGE_SLOT
291
-    #define MSG_UBL_STORAGE_SLOT              _UxGT("Memory Slot")
292
-  #endif
293
-  #ifndef MSG_UBL_LOAD_MESH
294
-    #define MSG_UBL_LOAD_MESH                 _UxGT("Load Bed Mesh")
295
-  #endif
296
-  #ifndef MSG_UBL_SAVE_MESH
297
-    #define MSG_UBL_SAVE_MESH                 _UxGT("Save Bed Mesh")
298
-  #endif
299
-#endif  // AUTO_BED_LEVELING_UBL
166
+#ifndef MSG_UBL_DOING_G29
167
+  #define MSG_UBL_DOING_G29                   _UxGT("Doing G29")
168
+#endif
169
+#ifndef MSG_UBL_UNHOMED
170
+  #define MSG_UBL_UNHOMED                     _UxGT("Home XYZ first")
171
+#endif
172
+#ifndef MSG_UBL_TOOLS
173
+  #define MSG_UBL_TOOLS                       _UxGT("UBL Tools")
174
+#endif
175
+#ifndef MSG_UBL_LEVEL_BED
176
+  #define MSG_UBL_LEVEL_BED                   _UxGT("Unified Bed Leveling")
177
+#endif
178
+#ifndef MSG_UBL_MANUAL_MESH
179
+  #define MSG_UBL_MANUAL_MESH                 _UxGT("Manually Build Mesh")
180
+#endif
181
+#ifndef MSG_UBL_BC_INSERT
182
+  #define MSG_UBL_BC_INSERT                   _UxGT("Place shim & measure")
183
+#endif
184
+#ifndef MSG_UBL_BC_INSERT2
185
+  #define MSG_UBL_BC_INSERT2                  _UxGT("Measure")
186
+#endif
187
+#ifndef MSG_UBL_BC_REMOVE
188
+  #define MSG_UBL_BC_REMOVE                   _UxGT("Remove & measure bed")
189
+#endif
190
+#ifndef MSG_UBL_MOVING_TO_NEXT
191
+  #define MSG_UBL_MOVING_TO_NEXT              _UxGT("Moving to next")
192
+#endif
193
+#ifndef MSG_UBL_ACTIVATE_MESH
194
+  #define MSG_UBL_ACTIVATE_MESH               _UxGT("Activate UBL")
195
+#endif
196
+#ifndef MSG_UBL_DEACTIVATE_MESH
197
+  #define MSG_UBL_DEACTIVATE_MESH             _UxGT("Deactivate UBL")
198
+#endif
199
+#ifndef MSG_UBL_SET_BED_TEMP
200
+  #define MSG_UBL_SET_BED_TEMP                _UxGT("Bed Temp")
201
+#endif
202
+#ifndef MSG_UBL_CUSTOM_BED_TEMP
203
+  #define MSG_UBL_CUSTOM_BED_TEMP             MSG_UBL_SET_BED_TEMP
204
+#endif
205
+#ifndef MSG_UBL_SET_HOTEND_TEMP
206
+  #define MSG_UBL_SET_HOTEND_TEMP             _UxGT("Hotend Temp")
207
+#endif
208
+#ifndef MSG_UBL_CUSTOM_HOTEND_TEMP
209
+  #define MSG_UBL_CUSTOM_HOTEND_TEMP          MSG_UBL_SET_HOTEND_TEMP
210
+#endif
211
+#ifndef MSG_UBL_EDIT_CUSTOM_MESH
212
+  #define MSG_UBL_EDIT_CUSTOM_MESH            _UxGT("Edit Custom Mesh")
213
+#endif
214
+#ifndef MSG_UBL_FINE_TUNE_MESH
215
+  #define MSG_UBL_FINE_TUNE_MESH              _UxGT("Fine Tuning Mesh")
216
+#endif
217
+#ifndef MSG_UBL_DONE_EDITING_MESH
218
+  #define MSG_UBL_DONE_EDITING_MESH           _UxGT("Done Editing Mesh")
219
+#endif
220
+#ifndef MSG_UBL_BUILD_CUSTOM_MESH
221
+  #define MSG_UBL_BUILD_CUSTOM_MESH           _UxGT("Build Custom Mesh")
222
+#endif
223
+#ifndef MSG_UBL_BUILD_MESH_MENU
224
+  #define MSG_UBL_BUILD_MESH_MENU             _UxGT("Build Mesh")
225
+#endif
226
+#ifndef MSG_UBL_BUILD_PLA_MESH
227
+  #define MSG_UBL_BUILD_PLA_MESH              _UxGT("Build PLA Mesh")
228
+#endif
229
+#ifndef MSG_UBL_BUILD_ABS_MESH
230
+  #define MSG_UBL_BUILD_ABS_MESH              _UxGT("Build ABS Mesh")
231
+#endif
232
+#ifndef MSG_UBL_BUILD_COLD_MESH
233
+  #define MSG_UBL_BUILD_COLD_MESH             _UxGT("Build Cold Mesh")
234
+#endif
235
+#ifndef MSG_UBL_MESH_HEIGHT_ADJUST
236
+  #define MSG_UBL_MESH_HEIGHT_ADJUST          _UxGT("Adjust Mesh Height")
237
+#endif
238
+#ifndef MSG_UBL_MESH_HEIGHT_AMOUNT
239
+  #define MSG_UBL_MESH_HEIGHT_AMOUNT          _UxGT("Height Amount")
240
+#endif
241
+#ifndef MSG_UBL_VALIDATE_MESH_MENU
242
+  #define MSG_UBL_VALIDATE_MESH_MENU          _UxGT("Validate Mesh")
243
+#endif
244
+#ifndef MSG_UBL_VALIDATE_PLA_MESH
245
+  #define MSG_UBL_VALIDATE_PLA_MESH           _UxGT("Validate PLA Mesh")
246
+#endif
247
+#ifndef MSG_UBL_VALIDATE_ABS_MESH
248
+  #define MSG_UBL_VALIDATE_ABS_MESH           _UxGT("Validate ABS Mesh")
249
+#endif
250
+#ifndef MSG_UBL_VALIDATE_CUSTOM_MESH
251
+  #define MSG_UBL_VALIDATE_CUSTOM_MESH        _UxGT("Validate Custom Mesh")
252
+#endif
253
+#ifndef MSG_UBL_CONTINUE_MESH
254
+  #define MSG_UBL_CONTINUE_MESH               _UxGT("Continue Bed Mesh")
255
+#endif
256
+#ifndef MSG_UBL_MESH_LEVELING
257
+  #define MSG_UBL_MESH_LEVELING               _UxGT("Mesh Leveling")
258
+#endif
259
+#ifndef MSG_UBL_3POINT_MESH_LEVELING
260
+  #define MSG_UBL_3POINT_MESH_LEVELING        _UxGT("3-Point Leveling")
261
+#endif
262
+#ifndef MSG_UBL_GRID_MESH_LEVELING
263
+  #define MSG_UBL_GRID_MESH_LEVELING          _UxGT("Grid Mesh Leveling")
264
+#endif
265
+#ifndef MSG_UBL_MESH_LEVEL
266
+  #define MSG_UBL_MESH_LEVEL                  _UxGT("Level Mesh")
267
+#endif
268
+#ifndef MSG_UBL_SIDE_POINTS
269
+  #define MSG_UBL_SIDE_POINTS                 _UxGT("Side Points")
270
+#endif
271
+#ifndef MSG_UBL_MAP_TYPE
272
+  #define MSG_UBL_MAP_TYPE                    _UxGT("Map Type")
273
+#endif
274
+#ifndef MSG_UBL_OUTPUT_MAP
275
+  #define MSG_UBL_OUTPUT_MAP                  _UxGT("Output Mesh Map")
276
+#endif
277
+#ifndef MSG_UBL_OUTPUT_MAP_HOST
278
+  #define MSG_UBL_OUTPUT_MAP_HOST             _UxGT("Output for Host")
279
+#endif
280
+#ifndef MSG_UBL_OUTPUT_MAP_CSV
281
+  #define MSG_UBL_OUTPUT_MAP_CSV              _UxGT("Output for CSV")
282
+#endif
283
+#ifndef MSG_UBL_OUTPUT_MAP_BACKUP
284
+  #define MSG_UBL_OUTPUT_MAP_BACKUP           _UxGT("Off Printer Backup")
285
+#endif
286
+#ifndef MSG_UBL_INFO_UBL
287
+  #define MSG_UBL_INFO_UBL                    _UxGT("Output UBL Info")
288
+#endif
289
+#ifndef MSG_UBL_EDIT_MESH_MENU
290
+  #define MSG_UBL_EDIT_MESH_MENU              _UxGT("Edit Mesh")
291
+#endif
292
+#ifndef MSG_UBL_FILLIN_AMOUNT
293
+  #define MSG_UBL_FILLIN_AMOUNT               _UxGT("Fill-in Amount")
294
+#endif
295
+#ifndef MSG_UBL_MANUAL_FILLIN
296
+  #define MSG_UBL_MANUAL_FILLIN               _UxGT("Manual Fill-in")
297
+#endif
298
+#ifndef MSG_UBL_SMART_FILLIN
299
+  #define MSG_UBL_SMART_FILLIN                _UxGT("Smart Fill-in")
300
+#endif
301
+#ifndef MSG_UBL_FILLIN_MESH
302
+  #define MSG_UBL_FILLIN_MESH                 _UxGT("Fill-in Mesh")
303
+#endif
304
+#ifndef MSG_UBL_INVALIDATE_ALL
305
+  #define MSG_UBL_INVALIDATE_ALL              _UxGT("Invalidate All")
306
+#endif
307
+#ifndef MSG_UBL_INVALIDATE_CLOSEST
308
+  #define MSG_UBL_INVALIDATE_CLOSEST          _UxGT("Invalidate Closest")
309
+#endif
310
+#ifndef MSG_UBL_FINE_TUNE_ALL
311
+  #define MSG_UBL_FINE_TUNE_ALL               _UxGT("Fine Tune All")
312
+#endif
313
+#ifndef MSG_UBL_FINE_TUNE_CLOSEST
314
+  #define MSG_UBL_FINE_TUNE_CLOSEST           _UxGT("Fine Tune Closest")
315
+#endif
316
+#ifndef MSG_UBL_STORAGE_MESH_MENU
317
+  #define MSG_UBL_STORAGE_MESH_MENU           _UxGT("Mesh Storage")
318
+#endif
319
+#ifndef MSG_UBL_STORAGE_SLOT
320
+  #define MSG_UBL_STORAGE_SLOT                _UxGT("Memory Slot")
321
+#endif
322
+#ifndef MSG_UBL_LOAD_MESH
323
+  #define MSG_UBL_LOAD_MESH                   _UxGT("Load Bed Mesh")
324
+#endif
325
+#ifndef MSG_UBL_SAVE_MESH
326
+  #define MSG_UBL_SAVE_MESH                   _UxGT("Save Bed Mesh")
327
+#endif
328
+#ifndef MSG_UBL_SAVE_ERROR
329
+  #define MSG_UBL_SAVE_ERROR                  _UxGT("Err: UBL Save")
330
+#endif
331
+#ifndef MSG_UBL_RESTORE_ERROR
332
+  #define MSG_UBL_RESTORE_ERROR               _UxGT("Err: UBL Restore")
333
+#endif
334
+#ifndef MSG_UBL_Z_OFFSET_STOPPED
335
+  #define MSG_UBL_Z_OFFSET_STOPPED            _UxGT("Z-Offset Stopped")
336
+#endif
337
+#ifndef MSG_UBL_STEP_BY_STEP_MENU
338
+  #define MSG_UBL_STEP_BY_STEP_MENU           _UxGT("Step-By-Step UBL")
339
+#endif
300 340
 
301 341
 #ifndef MSG_MOVING
302 342
   #define MSG_MOVING                          _UxGT("Moving...")
@@ -685,6 +725,21 @@
685 725
 #ifndef MSG_INFO_PRINTER_MENU
686 726
   #define MSG_INFO_PRINTER_MENU               _UxGT("Printer Info")
687 727
 #endif
728
+#ifndef MSG_3POINT_LEVELING
729
+  #define MSG_3POINT_LEVELING                 _UxGT("3-Point Leveling")
730
+#endif
731
+#ifndef MSG_LINEAR_LEVELING
732
+  #define MSG_LINEAR_LEVELING                 _UxGT("Linear Leveling")
733
+#endif
734
+#ifndef MSG_BILINEAR_LEVELING
735
+  #define MSG_BILINEAR_LEVELING               _UxGT("Bilinear Leveling")
736
+#endif
737
+#ifndef MSG_UBL_LEVELING
738
+  #define MSG_UBL_LEVELING                    _UxGT("Unified Bed Leveling")
739
+#endif
740
+#ifndef MSG_MESH_LEVELING
741
+  #define MSG_MESH_LEVELING                   _UxGT("Mesh Leveling")
742
+#endif
688 743
 #ifndef MSG_INFO_STATS_MENU
689 744
   #define MSG_INFO_STATS_MENU                 _UxGT("Printer Stats")
690 745
 #endif

+ 100
- 26
Marlin/language_fr.h Просмотреть файл

@@ -42,7 +42,7 @@
42 42
 #define MSG_AUTOSTART                       _UxGT("Demarrage auto")
43 43
 #define MSG_DISABLE_STEPPERS                _UxGT("Arrêter moteurs")
44 44
 #define MSG_DEBUG_MENU                      _UxGT("Menu debug")
45
-#define MSG_PROGRESS_BAR_TEST               _UxGT("Test barre progression")
45
+#define MSG_PROGRESS_BAR_TEST               _UxGT("Test barre progress.")
46 46
 #define MSG_AUTO_HOME                       _UxGT("Origine auto.")
47 47
 #define MSG_AUTO_HOME_X                     _UxGT("Origine X Auto.")
48 48
 #define MSG_AUTO_HOME_Y                     _UxGT("Origine Y Auto.")
@@ -51,6 +51,7 @@
51 51
 #define MSG_LEVEL_BED_WAITING               _UxGT("Clic pour commencer")
52 52
 #define MSG_LEVEL_BED_NEXT_POINT            _UxGT("Point suivant")
53 53
 #define MSG_LEVEL_BED_DONE                  _UxGT("Mise à niveau OK!")
54
+#define MSG_Z_FADE_HEIGHT                   _UxGT("Adoucir hauteur")
54 55
 #define MSG_SET_HOME_OFFSETS                _UxGT("Regl. décal. origine")
55 56
 #define MSG_HOME_OFFSETS_APPLIED            _UxGT("Décalages appliqués")
56 57
 #define MSG_SET_ORIGIN                      _UxGT("Régler origine")
@@ -74,6 +75,68 @@
74 75
 #define MSG_MOVE_AXIS                       _UxGT("Déplacer un axe")
75 76
 #define MSG_BED_LEVELING                    _UxGT("Règl. Niv. lit")
76 77
 #define MSG_LEVEL_BED                       _UxGT("Règl. Niv. lit")
78
+#define MSG_EDITING_STOPPED                 _UxGT("Arrêt edit. maillage")
79
+#define MSG_USER_MENU                       _UxGT("Commandes perso")
80
+
81
+#define MSG_UBL_DOING_G29                   _UxGT("G29 en cours")
82
+#define MSG_UBL_UNHOMED                     _UxGT("Origine XYZ d'abord")
83
+#define MSG_UBL_TOOLS                       _UxGT("Outils UBL")
84
+#define MSG_UBL_LEVEL_BED                   _UxGT("Niveau lit unifié")
85
+#define MSG_UBL_MANUAL_MESH                 _UxGT("Maillage manuel")
86
+#define MSG_UBL_BC_INSERT                   _UxGT("Poser câle & mesurer")
87
+#define MSG_UBL_BC_INSERT2                  _UxGT("Mesure")
88
+#define MSG_UBL_BC_REMOVE                   _UxGT("ôter et mesurer lit")
89
+#define MSG_UBL_MOVING_TO_NEXT              _UxGT("Aller au suivant")
90
+#define MSG_UBL_ACTIVATE_MESH               _UxGT("Activer l'UBL")
91
+#define MSG_UBL_DEACTIVATE_MESH             _UxGT("Désactiver l'UBL")
92
+#define MSG_UBL_SET_BED_TEMP                _UxGT("Température lit")
93
+#define MSG_UBL_CUSTOM_BED_TEMP             MSG_UBL_SET_BED_TEMP
94
+#define MSG_UBL_SET_HOTEND_TEMP             _UxGT("Température buse")
95
+#define MSG_UBL_CUSTOM_HOTEND_TEMP          MSG_UBL_SET_HOTEND_TEMP
96
+#define MSG_UBL_EDIT_CUSTOM_MESH            _UxGT("Editer maille perso")
97
+#define MSG_UBL_FINE_TUNE_MESH              _UxGT("Réglage fin maille")
98
+#define MSG_UBL_DONE_EDITING_MESH           _UxGT("Termier maille")
99
+#define MSG_UBL_BUILD_CUSTOM_MESH           _UxGT("Créer maille perso")
100
+#define MSG_UBL_BUILD_MESH_MENU             _UxGT("Créer maille")
101
+#define MSG_UBL_BUILD_PLA_MESH              _UxGT("Créer maille PLA")
102
+#define MSG_UBL_BUILD_ABS_MESH              _UxGT("Créer maille ABS")
103
+#define MSG_UBL_BUILD_COLD_MESH             _UxGT("Créer maille froide")
104
+#define MSG_UBL_MESH_HEIGHT_ADJUST          _UxGT("Ajuster haut. maille")
105
+#define MSG_UBL_MESH_HEIGHT_AMOUNT          _UxGT("Hauteur")
106
+#define MSG_UBL_VALIDATE_MESH_MENU          _UxGT("Valider maille")
107
+#define MSG_UBL_VALIDATE_PLA_MESH           _UxGT("Valider maille PLA")
108
+#define MSG_UBL_VALIDATE_ABS_MESH           _UxGT("Valider maille ABS")
109
+#define MSG_UBL_VALIDATE_CUSTOM_MESH        _UxGT("Valider maille perso")
110
+#define MSG_UBL_CONTINUE_MESH               _UxGT("Continuer maille")
111
+#define MSG_UBL_MESH_LEVELING               _UxGT("Niveau par maille")
112
+#define MSG_UBL_3POINT_MESH_LEVELING        _UxGT("Niveau à 3 points")
113
+#define MSG_UBL_GRID_MESH_LEVELING          _UxGT("Niveau grille")
114
+#define MSG_UBL_MESH_LEVEL                  _UxGT("Maille de niveau")
115
+#define MSG_UBL_SIDE_POINTS                 _UxGT("Point latéral")
116
+#define MSG_UBL_MAP_TYPE                    _UxGT("Type de carte")
117
+#define MSG_UBL_OUTPUT_MAP                  _UxGT("Voir maille")
118
+#define MSG_UBL_OUTPUT_MAP_HOST             _UxGT("Voir pour hôte")
119
+#define MSG_UBL_OUTPUT_MAP_CSV              _UxGT("Voir pour CSV")
120
+#define MSG_UBL_OUTPUT_MAP_BACKUP           _UxGT("Off Printer Backup")
121
+#define MSG_UBL_INFO_UBL                    _UxGT("Voir info UBL")
122
+#define MSG_UBL_EDIT_MESH_MENU              _UxGT("Modifier maille")
123
+#define MSG_UBL_FILLIN_AMOUNT               _UxGT("Taux de remplissage")
124
+#define MSG_UBL_MANUAL_FILLIN               _UxGT("Remplissage manuel")
125
+#define MSG_UBL_SMART_FILLIN                _UxGT("Remplissage auto")
126
+#define MSG_UBL_FILLIN_MESH                 _UxGT("Maille remplissage")
127
+#define MSG_UBL_INVALIDATE_ALL              _UxGT("Annuler tout")
128
+#define MSG_UBL_INVALIDATE_CLOSEST          _UxGT("Annuler le plus près")
129
+#define MSG_UBL_FINE_TUNE_ALL               _UxGT("Réglage fin (tous)")
130
+#define MSG_UBL_FINE_TUNE_CLOSEST           _UxGT("Réglage fin (proche)")
131
+#define MSG_UBL_STORAGE_MESH_MENU           _UxGT("Stockage maille")
132
+#define MSG_UBL_STORAGE_SLOT                _UxGT("Slot mémoire")
133
+#define MSG_UBL_LOAD_MESH                   _UxGT("Charger maille")
134
+#define MSG_UBL_SAVE_MESH                   _UxGT("Sauver maille")
135
+#define MSG_UBL_SAVE_ERROR                  _UxGT("Err: Enreg. UBL")
136
+#define MSG_UBL_RESTORE_ERROR               _UxGT("Err: Ouvrir UBL")
137
+#define MSG_UBL_Z_OFFSET_STOPPED            _UxGT("Offset Z arrêté")
138
+
139
+
77 140
 #define MSG_MOVING                          _UxGT("Déplacement...")
78 141
 #define MSG_FREE_XY                         _UxGT("Débloquer XY")
79 142
 #define MSG_MOVE_X                          _UxGT("Dépl. X")
@@ -107,9 +170,11 @@
107 170
 #define MSG_VY_JERK                         _UxGT("Vy-jerk")
108 171
 #define MSG_VZ_JERK                         _UxGT("Vz-jerk")
109 172
 #define MSG_VE_JERK                         _UxGT("Ve-jerk")
173
+#define MSG_VELOCITY                        _UxGT("Vélocité")
110 174
 #define MSG_VMAX                            _UxGT("Vmax")
111 175
 #define MSG_VMIN                            _UxGT("Vmin")
112 176
 #define MSG_VTRAV_MIN                       _UxGT("Vdepl min")
177
+#define MSG_ACCELERATION                    _UxGT("Accélération")
113 178
 #define MSG_AMAX                            _UxGT("Amax ")
114 179
 #define MSG_A_RETRACT                       _UxGT("A-retract")
115 180
 #define MSG_A_TRAVEL                        _UxGT("A-Dépl.")
@@ -133,6 +198,7 @@
133 198
 #define MSG_STORE_EEPROM                    _UxGT("Sauver config")
134 199
 #define MSG_LOAD_EEPROM                     _UxGT("Lire config")
135 200
 #define MSG_RESTORE_FAILSAFE                _UxGT("Restaurer défauts")
201
+#define MSG_INIT_EEPROM                     _UxGT("Initialiser EEPROM")
136 202
 #define MSG_REFRESH                         _UxGT("Actualiser")
137 203
 #define MSG_WATCH                           _UxGT("Surveiller")
138 204
 #define MSG_PREPARE                         _UxGT("Préparer")
@@ -144,6 +210,7 @@
144 210
 #define MSG_NO_CARD                         _UxGT("Pas de carte")
145 211
 #define MSG_DWELL                           _UxGT("Repos...")
146 212
 #define MSG_USERWAIT                        _UxGT("Atten. de l'util.")
213
+#define MSG_PRINT_PAUSED                    _UxGT("Impr. en pause")
147 214
 #define MSG_RESUMING                        _UxGT("Repri. de l'impr.")
148 215
 #define MSG_PRINT_ABORTED                   _UxGT("Impr. Annulée")
149 216
 #define MSG_NO_MOVE                         _UxGT("Moteurs bloqués.")
@@ -161,6 +228,7 @@
161 228
 #define MSG_INIT_SDCARD                     _UxGT("Init. la carte SD")
162 229
 #define MSG_CNG_SDCARD                      _UxGT("Changer de carte")
163 230
 #define MSG_ZPROBE_OUT                      _UxGT("Z sonde extè. lit")
231
+#define MSG_BLTOUCH                         _UxGT("BLTouch")
164 232
 #define MSG_BLTOUCH_SELFTEST                _UxGT("Autotest BLTouch")
165 233
 #define MSG_BLTOUCH_RESET                   _UxGT("RaZ BLTouch")
166 234
 #define MSG_BLTOUCH_DEPLOY                  _UxGT("Déployer BLTouch")
@@ -201,13 +269,19 @@
201 269
 
202 270
 #define MSG_INFO_MENU                       _UxGT("Infos imprimante")
203 271
 #define MSG_INFO_PRINTER_MENU               _UxGT("Infos imprimante")
272
+#define MSG_3POINT_LEVELING                 _UxGT("Niveau à 3 points")
273
+#define MSG_LINEAR_LEVELING                 _UxGT("Niveau linéaire")
274
+#define MSG_BILINEAR_LEVELING               _UxGT("Niveau bilinéaire")
275
+#define MSG_UBL_LEVELING                    _UxGT("Niveau lit unifié")
276
+#define MSG_MESH_LEVELING                   _UxGT("Niveau maillage")
204 277
 #define MSG_INFO_STATS_MENU                 _UxGT("Stats. imprimante")
205 278
 #define MSG_INFO_BOARD_MENU                 _UxGT("Infos carte")
206 279
 #define MSG_INFO_THERMISTOR_MENU            _UxGT("Thermistors")
207 280
 #define MSG_INFO_EXTRUDERS                  _UxGT("Extrudeurs")
208 281
 #define MSG_INFO_BAUDRATE                   _UxGT("Baud")
209 282
 #define MSG_INFO_PROTOCOL                   _UxGT("Protocole")
210
-#define MSG_CASE_LIGHT                      _UxGT("Lumière")
283
+#define MSG_CASE_LIGHT                      _UxGT("Lumière caisson")
284
+#define MSG_CASE_LIGHT_BRIGHTNESS           _UxGT("Luminosité")
211 285
 
212 286
 #if LCD_WIDTH >= 20
213 287
   #define MSG_INFO_PRINT_COUNT              _UxGT("Nbre impressions")
@@ -239,32 +313,32 @@
239 313
 
240 314
 #if LCD_HEIGHT >= 4
241 315
   // Up to 3 lines allowed
242
-  #define MSG_FILAMENT_CHANGE_INIT_1          _UxGT("Attente Démarrage")
243
-  #define MSG_FILAMENT_CHANGE_INIT_2          _UxGT("du filament")
244
-  #define MSG_FILAMENT_CHANGE_INIT_3          _UxGT("changer")
245
-  #define MSG_FILAMENT_CHANGE_UNLOAD_1        _UxGT("attente de")
246
-  #define MSG_FILAMENT_CHANGE_UNLOAD_2        _UxGT("décharger filament")
247
-  #define MSG_FILAMENT_CHANGE_INSERT_1        _UxGT("insérer filament")
248
-  #define MSG_FILAMENT_CHANGE_INSERT_2        _UxGT("et app. bouton")
249
-  #define MSG_FILAMENT_CHANGE_INSERT_3        _UxGT("pour continuer...")
250
-  #define MSG_FILAMENT_CHANGE_HEAT_1          _UxGT("Appuyer sur le bouton...")
251
-  #define MSG_FILAMENT_CHANGE_HEAT_2          _UxGT("Pour chauffer la buse.")
252
-  #define MSG_FILAMENT_CHANGE_HEATING_1       _UxGT("Buse en chauffe")
253
-  #define MSG_FILAMENT_CHANGE_HEATING_2       _UxGT("Patientez SVP...")
254
-  #define MSG_FILAMENT_CHANGE_LOAD_1          _UxGT("attente de")
255
-  #define MSG_FILAMENT_CHANGE_LOAD_2          _UxGT("chargement filament")
256
-  #define MSG_FILAMENT_CHANGE_EXTRUDE_1       _UxGT("attente de")
257
-  #define MSG_FILAMENT_CHANGE_EXTRUDE_2       _UxGT("extrusion filament")
258
-  #define MSG_FILAMENT_CHANGE_RESUME_1        _UxGT("attente impression")
259
-  #define MSG_FILAMENT_CHANGE_RESUME_2        _UxGT("pour reprendre")
316
+  #define MSG_FILAMENT_CHANGE_INIT_1        _UxGT("Attente Démarrage")
317
+  #define MSG_FILAMENT_CHANGE_INIT_2        _UxGT("du filament")
318
+  #define MSG_FILAMENT_CHANGE_INIT_3        _UxGT("changer")
319
+  #define MSG_FILAMENT_CHANGE_UNLOAD_1      _UxGT("attente de")
320
+  #define MSG_FILAMENT_CHANGE_UNLOAD_2      _UxGT("décharger filament")
321
+  #define MSG_FILAMENT_CHANGE_INSERT_1      _UxGT("insérer filament")
322
+  #define MSG_FILAMENT_CHANGE_INSERT_2      _UxGT("et app. bouton")
323
+  #define MSG_FILAMENT_CHANGE_INSERT_3      _UxGT("pour continuer...")
324
+  #define MSG_FILAMENT_CHANGE_HEAT_1        _UxGT("Presser le bouton...")
325
+  #define MSG_FILAMENT_CHANGE_HEAT_2        _UxGT("Pr chauffer la buse")
326
+  #define MSG_FILAMENT_CHANGE_HEATING_1     _UxGT("Buse en chauffe")
327
+  #define MSG_FILAMENT_CHANGE_HEATING_2     _UxGT("Patientez SVP...")
328
+  #define MSG_FILAMENT_CHANGE_LOAD_1        _UxGT("attente de")
329
+  #define MSG_FILAMENT_CHANGE_LOAD_2        _UxGT("chargement filament")
330
+  #define MSG_FILAMENT_CHANGE_EXTRUDE_1     _UxGT("attente de")
331
+  #define MSG_FILAMENT_CHANGE_EXTRUDE_2     _UxGT("extrusion filament")
332
+  #define MSG_FILAMENT_CHANGE_RESUME_1      _UxGT("attente impression")
333
+  #define MSG_FILAMENT_CHANGE_RESUME_2      _UxGT("pour reprendre")
260 334
 #else // LCD_HEIGHT < 4
261 335
   // Up to 2 lines allowed
262
-  #define MSG_FILAMENT_CHANGE_INIT_1          _UxGT("Patientez...")
263
-  #define MSG_FILAMENT_CHANGE_UNLOAD_1        _UxGT("Ejection...")
264
-  #define MSG_FILAMENT_CHANGE_INSERT_1        _UxGT("Insérer et clic")
265
-  #define MSG_FILAMENT_CHANGE_LOAD_1          _UxGT("Chargement...")
266
-  #define MSG_FILAMENT_CHANGE_EXTRUDE_1       _UxGT("Extrusion...")
267
-  #define MSG_FILAMENT_CHANGE_RESUME_1        _UxGT("Reprise...")
336
+  #define MSG_FILAMENT_CHANGE_INIT_1        _UxGT("Patientez...")
337
+  #define MSG_FILAMENT_CHANGE_UNLOAD_1      _UxGT("Ejection...")
338
+  #define MSG_FILAMENT_CHANGE_INSERT_1      _UxGT("Insérer et clic")
339
+  #define MSG_FILAMENT_CHANGE_LOAD_1        _UxGT("Chargement...")
340
+  #define MSG_FILAMENT_CHANGE_EXTRUDE_1     _UxGT("Extrusion...")
341
+  #define MSG_FILAMENT_CHANGE_RESUME_1      _UxGT("Reprise...")
268 342
 #endif // LCD_HEIGHT < 4
269 343
 
270 344
 #endif // LANGUAGE_FR_H

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


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

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