Explorar el Código

Merge branch 'Development' of https://github.com/Wurstnase/Marlin into Development

Wurstnase hace 10 años
padre
commit
81a6e59a82
Se han modificado 100 ficheros con 16766 adiciones y 4815 borrados
  1. 105
    0
      Documentation/BedLeveling.md
  2. 0
    0
      Documentation/COPYING.md
  3. 16
    0
      Documentation/Compilation.md
  4. 10
    0
      Documentation/Contributing.md
  5. 112
    0
      Documentation/Features.md
  6. 9
    0
      Documentation/FilamentSensor.md
  7. 103
    0
      Documentation/GCodes.md
  8. 0
    0
      Documentation/LCD Menu Tree.pdf
  9. BIN
      Documentation/Logo/Marlin Logo GitHub.png
  10. BIN
      Documentation/Logo/Marlin Logo LCD High.png
  11. BIN
      Documentation/Logo/Marlin Logo LCD Low.png
  12. 353
    0
      Documentation/Logo/Marlin Logo.ai
  13. BIN
      Documentation/Logo/Marlin Logo.cdr
  14. 7718
    0
      Documentation/Logo/Marlin Logo.dxf
  15. BIN
      Documentation/Logo/Marlin Logo.pdf
  16. BIN
      Documentation/Logo/Marlin Logo.png
  17. 24
    0
      Documentation/Logo/Marlin Logo.svg
  18. 0
    0
      Documentation/Menu Plans.xlsx
  19. 9
    0
      Documentation/RampsServoPower.md
  20. 62
    19
      Marlin/Configuration.h
  21. 591
    384
      Marlin/ConfigurationStore.cpp
  22. 7
    7
      Marlin/ConfigurationStore.h
  23. 23
    8
      Marlin/Configuration_adv.h
  24. 77
    69
      Marlin/DOGMbitmaps.h
  25. 12
    9
      Marlin/Makefile
  26. 10
    1
      Marlin/Marlin.h
  27. 42
    76
      Marlin/MarlinSerial.cpp
  28. 20
    49
      Marlin/MarlinSerial.h
  29. 256
    221
      Marlin/Marlin_main.cpp
  30. 3
    3
      Marlin/SdBaseFile.cpp
  31. 5
    3
      Marlin/SdFatConfig.h
  32. 150
    190
      Marlin/Servo.cpp
  33. 42
    42
      Marlin/Servo.h
  34. 5
    1
      Marlin/boards.h
  35. 9
    9
      Marlin/cardreader.cpp
  36. 5
    5
      Marlin/cardreader.h
  37. 232
    258
      Marlin/dogm_lcd_implementation.h
  38. 834
    0
      Marlin/example_configurations/Hephestos/Configuration.h
  39. 535
    0
      Marlin/example_configurations/Hephestos/Configuration_adv.h
  40. 844
    0
      Marlin/example_configurations/K8200/Configuration.h
  41. 535
    0
      Marlin/example_configurations/K8200/Configuration_adv.h
  42. 13
    0
      Marlin/example_configurations/K8200/readme.md
  43. 49
    9
      Marlin/example_configurations/SCARA/Configuration.h
  44. 1
    4
      Marlin/example_configurations/SCARA/Configuration_adv.h
  45. 838
    0
      Marlin/example_configurations/WITBOX/Configuration.h
  46. 535
    0
      Marlin/example_configurations/WITBOX/Configuration_adv.h
  47. 51
    10
      Marlin/example_configurations/delta/Configuration.h
  48. 1
    4
      Marlin/example_configurations/delta/Configuration_adv.h
  49. 53
    10
      Marlin/example_configurations/makibox/Configuration.h
  50. 1
    4
      Marlin/example_configurations/makibox/Configuration_adv.h
  51. 52
    10
      Marlin/example_configurations/tvrrug/Round2/Configuration.h
  52. 1
    4
      Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h
  53. 93
    24
      Marlin/language.h
  54. 4
    26
      Marlin/language_an.h
  55. 4
    17
      Marlin/language_ca.h
  56. 73
    88
      Marlin/language_de.h
  57. 13
    25
      Marlin/language_en.h
  58. 4
    26
      Marlin/language_es.h
  59. 4
    17
      Marlin/language_eu.h
  60. 4
    17
      Marlin/language_fi.h
  61. 4
    18
      Marlin/language_fr.h
  62. 42
    54
      Marlin/language_it.h
  63. 4
    17
      Marlin/language_nl.h
  64. 5
    19
      Marlin/language_pl.h
  65. 130
    0
      Marlin/language_pt-br.h
  66. 81
    99
      Marlin/language_pt.h
  67. 39
    52
      Marlin/language_ru.h
  68. 120
    2907
      Marlin/pins.h
  69. 37
    0
      Marlin/pins_3DRAG.h
  70. 75
    0
      Marlin/pins_5DPRINT.h
  71. 38
    0
      Marlin/pins_99.h
  72. 7
    0
      Marlin/pins_AZTEEG_X1.h
  73. 5
    0
      Marlin/pins_AZTEEG_X3.h
  74. 30
    0
      Marlin/pins_AZTEEG_X3_PRO.h
  75. 61
    0
      Marlin/pins_BRAINWAVE.h
  76. 95
    0
      Marlin/pins_CHEAPTRONIC.h
  77. 43
    0
      Marlin/pins_DUEMILANOVE_328P.h
  78. 116
    0
      Marlin/pins_ELEFU_3.h
  79. 61
    0
      Marlin/pins_GEN3_MONOLITHIC.h
  80. 45
    0
      Marlin/pins_GEN3_PLUS.h
  81. 62
    0
      Marlin/pins_GEN6.h
  82. 5
    0
      Marlin/pins_GEN6_DELUXE.h
  83. 72
    0
      Marlin/pins_GEN7_12.h
  84. 8
    0
      Marlin/pins_GEN7_13.h
  85. 60
    0
      Marlin/pins_GEN7_14.h
  86. 76
    0
      Marlin/pins_GEN7_CUSTOM.h
  87. 5
    0
      Marlin/pins_HEPHESTOS.h
  88. 6
    0
      Marlin/pins_K8200.h
  89. 62
    0
      Marlin/pins_LEAPFROG.h
  90. 92
    0
      Marlin/pins_MEGATRONICS.h
  91. 88
    0
      Marlin/pins_MEGATRONICS_1.h
  92. 103
    0
      Marlin/pins_MEGATRONICS_2.h
  93. 89
    0
      Marlin/pins_MEGATRONICS_3.h
  94. 11
    0
      Marlin/pins_MELZI.h
  95. 15
    0
      Marlin/pins_MELZI_1284.h
  96. 91
    0
      Marlin/pins_OMCA.h
  97. 78
    0
      Marlin/pins_OMCA_A.h
  98. 88
    0
      Marlin/pins_PRINTRBOARD.h
  99. 165
    0
      Marlin/pins_RAMBO.h
  100. 0
    0
      Marlin/pins_RAMPS_13.h

+ 105
- 0
Documentation/BedLeveling.md Ver fichero

@@ -0,0 +1,105 @@
1
+===============================================
2
+Instructions for configuring Bed Auto Leveling
3
+===============================================
4
+There are two options for this feature. You may choose to use a servo mounted on the X carriage or you may use a sled that mounts on the X axis and can be docked when not in use.
5
+See the section for each option below for specifics about installation and configuration. Also included are instructions that apply to both options.
6
+
7
+Instructions for Both Options
8
+-----------------------------
9
+
10
+Uncomment the "ENABLE_AUTO_BED_LEVELING" define (commented by default)
11
+
12
+The following options define the probing positions. These are good starting values.
13
+I recommend to keep a better clearance from borders in the first run and then make the probes as close as possible to borders:
14
+
15
+* \#define LEFT_PROBE_BED_POSITION 30
16
+* \#define RIGHT_PROBE_BED_POSITION 140
17
+* \#define BACK_PROBE_BED_POSITION 140
18
+* \#define FRONT_PROBE_BED_POSITION 30
19
+
20
+A few more options:
21
+
22
+* \#define XY_TRAVEL_SPEED 6000
23
+
24
+X and Y axis travel speed between probes, in mm/min.
25
+Bear in mind that really fast moves may render step skipping. 6000 mm/min (100mm/s) is a good value.
26
+
27
+* \#define Z_RAISE_BEFORE_PROBING 10
28
+* \#define Z_RAISE_BETWEEN_PROBINGS 10
29
+
30
+The Z axis is lifted when traveling to the first probe point by Z_RAISE_BEFORE_PROBING value
31
+and then lifted when traveling from first to second and second to third point by Z_RAISE_BETWEEN_PROBINGS.
32
+All values are in mm as usual.
33
+
34
+Servo Option Notes
35
+------------------
36
+You will probably need a swivel Z-MIN endstop in the extruder. A rc servo do a great job.
37
+Check the system working here: http://www.youtube.com/watch?v=3IKMeOYz-1Q (Enable English subtitles)
38
+Teasing ;-) video: http://www.youtube.com/watch?v=x8eqSQNAyro
39
+
40
+In order to get the servo working, you need to enable:
41
+
42
+* \#define NUM_SERVOS 1 // Servo index starts with 0 for M280 command
43
+
44
+* \#define SERVO_ENDSTOPS {-1, -1, 0} // Servo index for X, Y, Z. Disable with -1
45
+
46
+* \#define SERVO_ENDSTOP_ANGLES {0,0, 0,0, 165,60} // X,Y,Z Axis Extend and Retract angles
47
+
48
+The first define tells firmware how many servos you have.
49
+The second tells what axis this servo will be attached to. In the example above, we have a servo in Z axis.
50
+The third one tells the angle in 2 situations: Probing (165º) and resting (60º). Check this with command M280 P0 S{angle} (example: M280 P0 S60 moves the servo to 60º)
51
+
52
+Next you need to define the Z endstop (probe) offset from hotend.
53
+My preferred method:
54
+
55
+* a) Make a small mark in the bed with a marker/felt-tip pen.
56
+* b) Place the hotend tip as *exactly* as possible on the mark, touching the bed. Raise the hotend 0.1mm (a regular paper thickness) and zero all axis (G92 X0 Y0 Z0);
57
+* d) Raise the hotend 10mm (or more) for probe clearance, lower the Z probe (Z-Endstop) with M401 and place it just on that mark by moving X, Y and Z;
58
+* e) Lower the Z in 0.1mm steps, with the probe always touching the mark (it may be necessary to adjust X and Y as well) until you hear the "click" meaning the mechanical endstop was trigged. You can confirm with M119;
59
+* f) Now you have the probe in the same place as your hotend tip was before. Perform a M114 and write down the values, for example: X:24.3 Y:-31.4 Z:5.1;
60
+* g) You can raise the z probe with M402 command;
61
+* h) Fill the defines bellow multiplying the values by "-1" (just change the signal)
62
+
63
+* X and Y-Offset must be Integers!
64
+* \#define X_PROBE_OFFSET_FROM_EXTRUDER -24
65
+* \#define Y_PROBE_OFFSET_FROM_EXTRUDER 31
66
+* \#define Z_PROBE_OFFSET_FROM_EXTRUDER -5.1
67
+
68
+Sled Option Notes
69
+-----------------
70
+The sled option uses an electromagnet to attach and detach to/from the X carriage. See http://www.thingiverse.com/thing:396692 for more details on how to print and install this feature. It uses the same connections as the servo option.
71
+
72
+To use the sled option, you must define two additional things in Configuration.h:
73
+
74
+* \#define Z_PROBE_SLED
75
+* \#define SLED_DOCKING_OFFSET 5
76
+
77
+Uncomment the Z_PROBE_SLED to define to enable the sled (commented out by default).
78
+
79
+Uncomment the SLED_DOCKING_OFFSET to set the extra distance the X axis must travel to dock the sled. This value can be found by moving the X axis to its maximum position then measure the distance to the right X end and subtract the width of the sled (23mm if you printed the sled from Thingiverse).
80
+
81
+Next you need to define the Z endstop (probe) offset from hotend.
82
+My preferred method:
83
+
84
+* a) Home the X and Y axes.
85
+* b) Move the X axis to about the center of the print bed. Make a mark on the print bed.
86
+* c) Move the Y axis to the maximum position. Make another mark.
87
+* d) Home the X axis and use a straight edge to make a line between the two points.
88
+* e) Repeat (b)-(d) reversing the X and Y. When you are done you will have two lines on the print bed. We will use these to measure the offset for the Z probe endstop.
89
+* f) Move the nozzle so that it is positioned on the center point of the two lines. You can use fine movement of 0.1mm to get it as close as possible. Note the position of X and Y.
90
+* g) Zero the Z axis with the G92 Z0 command.
91
+* h) Raise the Z axis about 20mmm.
92
+* i) Use the G32 command to retrieve the sled.
93
+* j) Now more the X and Y axis to the position recorded in (f).
94
+* k) Lower the Z axis in 0.1mm steps until you hear the "click" meaning the mechanical endstop was trigged. You can confirm with the M119 command. Note the position of the Z axis.
95
+* l) Make a mark on the print bed where the endstop lever has touched the print bed. Raise the Z-axis about 30mm to give yourself some room.
96
+* m) Now measure the distance from the center point to the endstop impact site along the X and Y axis using the lines drawn previously.
97
+* n) Fill in the values below. If the endstop mark is in front of the line running left-to-right, use positive values. If it is behind, use negative values. For the Z axis use the value from (k) and subtract 0.1mm.
98
+
99
+For example, suppose you measured the endstop position and it was 20mm to the right of the line running front-to-back, 10mm toward the front of the line running left-to-right, and the value from (k) was 2.85. The values for the defines would be:
100
+
101
+* \#define X_PROBE_OFFSET_FROM_EXTRUDER 20
102
+* \#define Y_PROBE_OFFSET_FROM_EXTRUDER 10
103
+* \#define Z_PROBE_OFFSET_FROM_EXTRUDER 2.75
104
+
105
+That's it.. enjoy never having to calibrate your Z endstop neither leveling your bed by hand anymore ;-)

COPYING.md → Documentation/COPYING.md Ver fichero


+ 16
- 0
Documentation/Compilation.md Ver fichero

@@ -0,0 +1,16 @@
1
+# Configuring and compilation
2
+
3
+  1. Install the latest non-beta arduino software IDE/toolset: http://www.arduino.cc/en/Main/Software
4
+  2. Download the Marlin firmware
5
+    - [Latest developement version](https://github.com/MarlinFirmware/Marlin/tree/Development)
6
+    - [Stable version](https://github.com/MarlinFirmware/Marlin/tree/Development)
7
+  3. In both cases use the "Download Zip" button on the right.
8
+  4. Some boards require special files and/or libraries from the ArduinoAddons directory. Take a look at the dedicated [README](/ArduinoAddons/README.md) for details.
9
+  5. Start the arduino IDE.
10
+  6. Select Tools -> Board -> Arduino Mega 2560    or your microcontroller
11
+  7. Select the correct serial port in Tools ->Serial Port
12
+  8. Open Marlin.pde or .ino
13
+  9. Click the Verify/Compile button
14
+  10. Click the Upload button. If all goes well the firmware is uploading
15
+
16
+That's ok.  Enjoy Silky Smooth Printing.

+ 10
- 0
Documentation/Contributing.md Ver fichero

@@ -0,0 +1,10 @@
1
+Developer Notes
2
+===================
3
+
4
+- There are now 2 branches: The __development__ branch is where new features and code changes will be sorted out. This branch may have untested code in it, so please let us know if you find any bugs. When the __development__ branch has reached a state where it is stable, it will be moved to the __stable__ branch.
5
+
6
+- We are doing a kind of cleanup in the list of Issues and Pull Requests, the aim is to get to a state where we can certify the code as stable. To get the code tested as widely as possible we require several volunteers with a wide variety of hardware configurations willing to test the firmware and help us to certify it as stable. If you want to help out testing go to this issue and let us know: https://github.com/MarlinFirmware/Marlin/issues/1209
7
+
8
+- Before you submit any pull request, we ask that you _PLEASE_ test your code before submission, even if the change seems innocuous. When creating the pull request, please include the hardware you used for testing and a short synopsis of your testing procedure. Untested pull requests are less likely to be merged, as even slight changes create the risk of breaking the main branch.
9
+
10
+- If you have a fix don't open an issue telling about it, but test the code and submit a pull request. Use the __development__ branch when you submit.

+ 112
- 0
Documentation/Features.md Ver fichero

@@ -0,0 +1,112 @@
1
+# Features
2
+
3
+*   Interrupt based movement with real linear acceleration
4
+*   High steprate
5
+*   Look ahead (Keep the speed high when possible. High cornering speed)
6
+*   Interrupt based temperature protection
7
+*   Preliminary support for [Matthew Roberts Advance Algorithm](http://reprap.org/pipermail/reprap-dev/2011-May/003323.html)
8
+*   Full endstop support
9
+*   SD Card support
10
+*   SD Card folders (works in pronterface)
11
+*   SD Card autostart support
12
+*   LCD support (ideally 20x4)
13
+*   LCD menu system for autonomous SD card printing, controlled by an click-encoder.
14
+*   EEPROM storage of e.g. max-velocity, max-acceleration, and similar variables
15
+*   many small but handy things originating from bkubicek's fork.
16
+*   Arc support
17
+*   Temperature oversampling
18
+*   Dynamic Temperature setpointing aka "AutoTemp"
19
+*   Support for [QTMarlin](https://github.com/bkubicek/QTMarlin), a very beta GUI for PID-tuning and velocity-acceleration testing. 
20
+*   Endstop trigger reporting to the host software.
21
+*   Updated sdcardlib
22
+*   Heater power reporting. Useful for PID monitoring.
23
+*   PID tuning
24
+*   [CoreXY kinematics](www.corexy.com/theory.html)
25
+*   Delta kinematics
26
+*   SCARA kinematics
27
+*   Dual X-carriage support for multiple extruder systems
28
+*   Configurable serial port to support connection of wireless adaptors.
29
+*   Automatic operation of extruder/cold-end cooling fans based on nozzle temperature
30
+*   RC Servo Support, specify angle or duration for continuous rotation servos.
31
+*   Bed Auto Leveling.
32
+*   Support for a filament diameter sensor, which adjusts extrusion volume
33
+
34
+The default baudrate is 250000. This baudrate has less jitter and hence errors than the usual 115200 baud, but is less supported by drivers and host-environments.
35
+
36
+## Differences and additions to the already good Sprinter firmware
37
+
38
+### Look-ahead
39
+
40
+Marlin has look-ahead. While sprinter has to break and re-accelerate at each corner,
41
+lookahead will only decelerate and accelerate to a velocity,
42
+so that the change in vectorial velocity magnitude is less than the xy_jerk_velocity.
43
+This is only possible, if some future moves are already processed, hence the name.
44
+It leads to less over-deposition at corners, especially at flat angles.
45
+
46
+### Arc support
47
+
48
+Slic3r can find curves that, although broken into segments, were ment to describe an arc.
49
+Marlin is able to print those arcs. The advantage is the firmware can choose the resolution,
50
+and can perform the arc with nearly constant velocity, resulting in a nice finish.
51
+Also, less serial communication is needed.
52
+
53
+### Temperature Oversampling
54
+
55
+To reduce noise and make the PID-differential term more useful, 16 ADC conversion results are averaged.
56
+
57
+### AutoTemp
58
+
59
+If your gcode contains a wide spread of extruder velocities, or you realtime change the building speed, the temperature should be changed accordingly.
60
+Usually, higher speed requires higher temperature.
61
+This can now be performed by the AutoTemp function
62
+By calling M109 S<mintemp> B<maxtemp> F<factor> you enter the autotemp mode.
63
+
64
+You can leave it by calling M109 without any F.
65
+If active, the maximal extruder stepper rate of all buffered moves will be calculated, and named "maxerate" [steps/sec].
66
+The wanted temperature then will be set to t=tempmin+factor*maxerate, while being limited between tempmin and tempmax.
67
+If the target temperature is set manually or by gcode to a value less then tempmin, it will be kept without change.
68
+Ideally, your gcode can be completely free of temperature controls, apart from a M109 S T F in the start.gcode, and a M109 S0 in the end.gcode.
69
+
70
+### EEPROM
71
+
72
+If you know your PID values, the acceleration and max-velocities of your unique machine, you can set them, and finally store them in the EEPROM.
73
+After each reboot, it will magically load them from EEPROM, independent what your Configuration.h says.
74
+
75
+### LCD Menu
76
+
77
+If your hardware supports it, you can build yourself a LCD-CardReader+Click+encoder combination. It will enable you to realtime tune temperatures,
78
+accelerations, velocities, flow rates, select and print files from the SD card, preheat, disable the steppers, and do other fancy stuff.
79
+One working hardware is documented here: http://www.thingiverse.com/thing:12663
80
+Also, with just a 20x4 or 16x2 display, useful data is shown.
81
+
82
+### SD card directories
83
+
84
+If you have an SD card reader attached to your controller, also folders work now. Listing the files in pronterface will show "/path/subpath/file.g".
85
+You can write to file in a subfolder by specifying a similar text using small letters in the path.
86
+Also, backup copies of various operating systems are hidden, as well as files not ending with ".g".
87
+
88
+### Autostart
89
+
90
+If you place a file auto[0-9].g into the root of the sd card, it will be automatically executed if you boot the printer. The same file will be executed by selecting "Autostart" from the menu.
91
+First *0 will be performed, than *1 and so on. That way, you can heat up or even print automatically without user interaction.
92
+
93
+### Endstop trigger reporting
94
+
95
+If an endstop is hit while moving towards the endstop, the location at which the firmware thinks that the endstop was triggered is outputed on the serial port.
96
+This is useful, because the user gets a warning message.
97
+However, also tools like QTMarlin can use this for finding acceptable combinations of velocity+acceleration.
98
+
99
+### Coding paradigm
100
+
101
+Not relevant from a user side, but Marlin was split into thematic junks, and has tried to partially enforced private variables.
102
+This is intended to make it clearer, what interacts which what, and leads to a higher level of modularization.
103
+We think that this is a useful prestep for porting this firmware to e.g. an ARM platform in the future.
104
+A lot of RAM (with enabled LCD ~2200 bytes) was saved by storing char []="some message" in Program memory.
105
+In the serial communication, a #define based level of abstraction was enforced, so that it is clear that
106
+some transfer is information (usually beginning with "echo:"), an error "error:", or just normal protocol,
107
+necessary for backwards compatibility.
108
+
109
+### Interrupt based temperature measurements
110
+
111
+An interrupt is used to manage ADC conversions, and enforce checking for critical temperatures.
112
+This leads to less blocking in the heater management routine.

+ 9
- 0
Documentation/FilamentSensor.md Ver fichero

@@ -0,0 +1,9 @@
1
+Filament Sensor
2
+---------------
3
+Supports the use of a real time filament diameter sensor that measures the diameter of the filament going into the extruder and then adjusts the extrusion rate to compensate for filament that does not match what is defined in the g-code.  The diameter can also be displayed on the LCD screen. This potentially eliminates the need to measure filament diameter when changing spools of filament. Gcode becomes independent of the filament diameter. Can also compensate for changing diameter.
4
+
5
+For examples of these sensors, see: http://www.thingiverse.com/thing:454584, https://www.youmagine.com/designs/filament-diameter-sensor, http://diy3dprinting.blogspot.com/2014/01/diy-filament-diameter-sensor.html. Any sensor which produces a voltage equivalent to the diameter in mm (i.e. 1v = 1mm) can be used. This provides a very simple interface and may encourage more innovation in this area.
6
+
7
+4 new Mcodes are defined to set relevant parameters: M404, M405, M406, M407 - see above.
8
+
9
+ Implements a delay buffer to handle the transit delay between where the filament is measured and when it gets to the extruder.

+ 103
- 0
Documentation/GCodes.md Ver fichero

@@ -0,0 +1,103 @@
1
+# Implemented G Codes
2
+
3
+## G Codes
4
+
5
+*  G0  -> G1
6
+*  G1  - Coordinated Movement X Y Z E
7
+*  G2  - CW ARC
8
+*  G3  - CCW ARC
9
+*  G4  - Dwell S[seconds] or P[milliseconds]
10
+*  G10 - retract filament according to settings of M207
11
+*  G11 - retract recover filament according to settings of M208
12
+*  G28 - Home all Axis
13
+*  G29 - Detailed Z-Probe, probes the bed at 3 points.  You must be at the home position for this to work correctly.
14
+*  G30 - Single Z Probe, probes bed at current XY location.
15
+*  G31 - Dock Z Probe sled (if enabled)
16
+*  G32 - Undock Z Probe sled (if enabled)
17
+*  G90 - Use Absolute Coordinates
18
+*  G91 - Use Relative Coordinates
19
+*  G92 - Set current position to cordinates given
20
+
21
+## M Codes
22
+*  M0   - Unconditional stop - Wait for user to press a button on the LCD (Only if ULTRA_LCD is enabled)
23
+*  M1   - Same as M0
24
+*  M17  - Enable/Power all stepper motors
25
+*  M18  - Disable all stepper motors; same as M84
26
+*  M20  - List SD card
27
+*  M21  - Init SD card
28
+*  M22  - Release SD card
29
+*  M23  - Select SD file (M23 filename.g)
30
+*  M24  - Start/resume SD print
31
+*  M25  - Pause SD print
32
+*  M26  - Set SD position in bytes (M26 S12345)
33
+*  M27  - Report SD print status
34
+*  M28  - Start SD write (M28 filename.g)
35
+*  M29  - Stop SD write
36
+*  M30  - Delete file from SD (M30 filename.g)
37
+*  M31  - Output time since last M109 or SD card start to serial
38
+*  M32  - Select file and start SD print (Can be used when printing from SD card)
39
+*  M42  - Change pin status via gcode Use M42 Px Sy to set pin x to value y, when omitting Px the onboard led will be used.
40
+*  M80  - Turn on Power Supply
41
+*  M81  - Turn off Power Supply
42
+*  M82  - Set E codes absolute (default)
43
+*  M83  - Set E codes relative while in Absolute Coordinates (G90) mode
44
+*  M84  - Disable steppers until next move, or use S[seconds] to specify an inactivity timeout, after which the steppers will be disabled.  S0 to disable the timeout.
45
+*  M85  - Set inactivity shutdown timer with parameter S[seconds]. To disable set zero (default)
46
+*  M92  - Set axis_steps_per_unit - same syntax as G92
47
+*  M104 - Set extruder target temp
48
+*  M105 - Read current temp
49
+*  M106 - Fan on
50
+*  M107 - Fan off
51
+*  M109 - Sxxx Wait for extruder current temp to reach target temp. Waits only when heating
52
+*         Rxxx Wait for extruder current temp to reach target temp. Waits when heating and cooling
53
+*  M112 - Emergency stop
54
+*  M114 - Output current position to serial port
55
+*  M115 - Capabilities string
56
+*  M117 - display message
57
+*  M119 - Output Endstop status to serial port
58
+*  M126 - Solenoid Air Valve Open (BariCUDA support by jmil)
59
+*  M127 - Solenoid Air Valve Closed (BariCUDA vent to atmospheric pressure by jmil)
60
+*  M128 - EtoP Open (BariCUDA EtoP = electricity to air pressure transducer by jmil)
61
+*  M129 - EtoP Closed (BariCUDA EtoP = electricity to air pressure transducer by jmil)
62
+*  M140 - Set bed target temp
63
+*  M190 - Sxxx Wait for bed current temp to reach target temp. Waits only when heating
64
+*         Rxxx Wait for bed current temp to reach target temp. Waits when heating and cooling
65
+*  M200 - D[millimeters]- set filament diameter and set E axis units to cubic millimeters (use S0 to set back to millimeters).
66
+*  M201 - Set max acceleration in units/s^2 for print moves (M201 X1000 Y1000)
67
+*  M202 - Set max acceleration in units/s^2 for travel moves (M202 X1000 Y1000) Unused in Marlin!!
68
+*  M203 - Set maximum feedrate that your machine can sustain (M203 X200 Y200 Z300 E10000) in mm/sec
69
+*  M204 - Set default acceleration: S normal moves T filament only moves (M204 S3000 T7000) im mm/sec^2  also sets minimum segment time in ms (B20000) to prevent buffer underruns and M20 minimum feedrate
70
+*  M205 - advanced settings:  minimum travel speed S=while printing T=travel only,  B=minimum segment time X= maximum xy jerk, Z=maximum Z jerk, E=maximum E jerk
71
+*  M206 - set additional homing offset
72
+*  M207 - set retract length S[positive mm] F[feedrate mm/min] Z[additional zlift/hop], stays in mm regardless of M200 setting
73
+*  M208 - set recover=unretract length S[positive mm surplus to the M207 S*] F[feedrate mm/min]
74
+*  M209 - S[1=true/0=false] enable automatic retract detect if the slicer did not support G10/11: every normal extrude-only move will be classified as retract depending on the direction.
75
+*  M218 - set hotend offset (in mm): T[extruder_number] X[offset_on_X] Y[offset_on_Y]
76
+*  M220 - S[factor in percent] - set speed factor override percentage
77
+*  M221 - S[factor in percent] - set extrude factor override percentage
78
+*  M240 - Trigger a camera to take a photograph
79
+*  M280 - Position an RC Servo P[index] S[angle/microseconds], ommit S to report back current angle
80
+*  M300 - Play beep sound S[frequency Hz] P[duration ms]
81
+*  M301 - Set PID parameters P I and D
82
+*  M302 - Allow cold extrudes
83
+*  M303 - PID relay autotune S[temperature] sets the target temperature. (default target temperature = 150C)
84
+*  M304 - Set bed PID parameters P I and D
85
+*  M350 - Set microstepping mode.
86
+*  M351 - Toggle MS1 MS2 pins directly.
87
+*  M400 - Finish all moves
88
+*  M401 - Lower z-probe if present
89
+*  M402 - Raise z-probe if present
90
+*  M404 - N[dia in mm] Enter the nominal filament width (3mm, 1.75mm) or will display nominal filament width without parameters
91
+*  M405 - Turn on Filament Sensor extrusion control.  Optional D[delay in cm] to set delay in centimeters between sensor and extruder
92
+*  M406 - Turn off Filament Sensor extrusion control
93
+*  M407 - Displays measured filament diameter
94
+*  M500 - stores paramters in EEPROM
95
+*  M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).
96
+*  M502 - reverts to the default "factory settings".  You still need to store them in EEPROM afterwards if you want to.
97
+*  M503 - print the current settings (from memory not from EEPROM)
98
+*  M540 - Use S[0|1] to enable or disable the stop SD card print on endstop hit (requires ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED)
99
+*  M600 - Pause for filament change X[pos] Y[pos] Z[relative lift] E[initial retract] L[later retract distance for removal]
100
+*  M907 - Set digital trimpot motor current using axis codes.
101
+*  M908 - Control digital trimpot directly.
102
+*  M928 - Start SD logging (M928 filename.g) - ended by M29
103
+*  M999 - Restart after being stopped by error

Marlin/documentation/LCD Menu Tree.pdf → Documentation/LCD Menu Tree.pdf Ver fichero


BIN
Documentation/Logo/Marlin Logo GitHub.png Ver fichero


BIN
Documentation/Logo/Marlin Logo LCD High.png Ver fichero


BIN
Documentation/Logo/Marlin Logo LCD Low.png Ver fichero


+ 353
- 0
Documentation/Logo/Marlin Logo.ai Ver fichero

@@ -0,0 +1,353 @@
1
+%!PS-Adobe-3.0
2
+%%Creator:Adobe Illustrator (TM) 8.000000 Exported from CorelDRAW X6
3
+%%Title:marlin logoscript.ai
4
+%%CreationDate:
5
+%%Canvassize:16383
6
+%%BoundingBox:-62 3484 337 3617
7
+%%DocumentProcessColors: Cyan Magenta Yellow Black
8
+%%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0
9
+%%+ procset Adobe_typography_AI5 1.0 1
10
+%%+ procset Adobe_ColorImage_AI6 1.1 0
11
+%%+ procset Adobe_Illustrator_AI5 1.2 0
12
+%%+ procset Adobe_cshow 2.0 8
13
+%%+ procset Adobe_shading_AI8 1.0 0
14
+%%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0
15
+%%+ procset Adobe_typography_AI5 1.0 1
16
+%%+ procset Adobe_ColorImage_AI6 1.1 0
17
+%%+ procset Adobe_Illustrator_AI5 1.2 0
18
+%%+ procset Adobe_cshow 2.0 8
19
+%%DocumentNeededResources: procset Adobe_level2_AI5 1.2 0
20
+%%+ procset Adobe_typography_AI5 1.0 0
21
+%%+ procset Adobe_ColorImage_AI6 1.1 0
22
+%%+ procset Adobe_Illustrator_AI5 1.0 0
23
+%%DocumentNeededResources: procset Adobe_level2_AI5 1.2 0
24
+%%+ procset Adobe_Illustrator_AI5 1.0 0
25
+%%+ procset Adobe_packedarray 2.0 0
26
+%%+ procset Adobe_cmykcolor 1.1 0
27
+%%+ procset Adobe_cshow 1.1 0
28
+%%+ procset Adobe_customcolor 1.0 0
29
+%%+ procset Adobe_typography_AI3 1.0 1
30
+%%+ procset Adobe_pattern_AI3 1.0 1
31
+%%+ procset Adobe_IllustratorA_AI3 1.0 1
32
+%%DocumentNeededResources: procset Adobe_packedarray 2.0 0
33
+%%+ procset Adobe_cmykcolor 1.1 0
34
+%%+ procset Adobe_cshow 1.1 0
35
+%%+ procset Adobe_customcolor 1.0 0
36
+%%+ procset Adobe_typography_AI3 1.0 1
37
+%%+ procset Adobe_pattern_AI3 1.0 1
38
+%%+ procset Adobe_IllustratorA_AI3 1.0 1
39
+%AI3_ColorUsage: Color
40
+%AI3_Cropmarks:0 0 842 595
41
+%AI3_TileBox:0 0 842 595
42
+%AI3_TemplateBox:421 297 421 297
43
+%AI3_DocumentPreview: None
44
+%AI5_ArtSize: 842 595 
45
+%AI5_NumLayers: 1
46
+%AI5_FileFormat 2.0
47
+%AI9_ColorModel: 2
48
+%AI12_CMSettings: 00.MS
49
+%AI7_Thumbnail: 128 44 8
50
+%%BeginData: 4580 Hex Bytes
51
+%2B2A29FEFEFE000000000000000000000000000000000000000000000000
52
+%000000000000000000000000000000000000000000000000000000000000
53
+%000000000000000000000000000000000000000000000000000000000000
54
+%000000000000000000000000000000000000000000000000000000000000
55
+%000000000000000000000000000000000000000000000000000000000000
56
+%000000000000000000000000000000000000000000000000000000000000
57
+%000000000000000000000000000000000000000000000000000000000000
58
+%000000000000000000000000000000000000000000000000000000000000
59
+%000000000000000000000000000000000000000000000000000000000000
60
+%000000000000000000000000000000000000000000000000000000000000
61
+%000000000000000000000000000000000000000000000000000000000000
62
+%000000000000000000000000000000000000000000000000000000000000
63
+%000000000000000000000000000000000000000000000000000000000000
64
+%000000000000000000000000000000000000000000000000000000000000
65
+%000000000000000000000000000000000000000000000000000000000000
66
+%000000000000000000000000000000000000000000000000000000000000
67
+%000000000000000000000000000000000000000000000000000000000000
68
+%000000000000000000000000000000000000000000000000000000000000
69
+%000000000000000000000000000000000000000000000000000000000000
70
+%000000000000000000000000000000000000000000000000000000000000
71
+%000000000000000000000000000000000000000000000000000000000000
72
+%000000000000000000000000000000000000000000000000000000000000
73
+%000000000000000000000000000000000000000000000000000000000000
74
+%000000000000000000000000000000000000000000000000000000000000
75
+%000000000000000000000000000000000000000000000000000000000000
76
+%000000000000000000000000000000000000
77
+%524C45FD0601FD7A00FD0401FD7C00FD0301FD7D000101FD0500FD6301FD
78
+%160001FD0400FD6601FD150001FD0300FD6801FD1800FD6901FD1600FD6B
79
+%01FD1500FD5001FD0600FD1601FD1400FD0C01FD0500FD0901FD0600FD30
80
+%01FD0600FD0501FD0300FD0F01FD1300FD0A01FD0A00FD0401FD0A00FD2E
81
+%01FD0600FD0401FD0500FD0F01FD1200FD0901FD0C000101FD0C00FD2D01
82
+%FD0600FD0401FD0500FD1001FD1100FD0801FD1C00FD2C01FD0600FD0401
83
+%FD0500FD1101FD1000FD0701FD1E00FD2B01FD0600FD0401FD0500FD1201
84
+%FD0F00FD0601FD1F00FD2B01FD0600FD0401FD0500FD1301FD0E00FD0601
85
+%FD0700FD0401FD0900FD0501FD0700FD2A01FD0600FD1D01FD0D00FD0601
86
+%FD0600FD0601FD0700FD0701FD0600FD0701FD0700FD0F01FD0700FD0601
87
+%FD0600FD0401FD0500FD0901FD0700FD0501FD0C00FD0501FD0600FD0801
88
+%FD0600FD0701FD0600FD0601FD0A00FD0C01FD0A00FD0401FD0600FD0401
89
+%FD0500FD0801FD0A00FD0401FD0B00FD0501FD0600FD0801FD0600FD0701
90
+%FD0600FD0401FD0D00FD0901FD0D00FD0301FD0600FD0401FD0500FD0601
91
+%FD0D00FD0401FD0A00FD0501FD0600FD0801FD0600FD0701FD0600FD0301
92
+%FD0F00FD0801FD0E000101FD0600FD0401FD0500FD0601FD0E00FD0401FD
93
+%0900FD0501FD0600FD0801FD0600FD0701FD06000101FD1100FD0601FD10
94
+%0001FD0600FD0401FD0500FD0501FD1000FD0401FD0800FD0501FD0600FD
95
+%0801FD0600FD0701FD06000101FD1100FD0501FD110001FD0600FD0401FD
96
+%0500FD0401FD1100FD0501FD0700FD0501FD0600FD0801FD0600FD0701FD
97
+%060001FD0700FD0501FD0700FD0401FD0700FD0401FD060001FD0600FD04
98
+%01FD0500FD0401FD0700FD0401FD0600FD0601FD0600FD0501FD0600FD08
99
+%01FD0600FD0701FD060001FD0600FD0701FD0600FD0401FD0600FD0601FD
100
+%050001FD0600FD0401FD0500FD0401FD0600FD0601FD0600FD0501FD0600
101
+%FD0501FD0600FD0801FD0600FD0701FD060001FD0600FD0801FD0500FD04
102
+%01FD0600FD0601FD0C00FD0401FD0500FD0401FD0600FD0601FD0600FD05
103
+%01FD0600FD0501FD0600FD0801FD0600FD0701FD060001FD0500FD0901FD
104
+%0600FD0301FD0600FD0601FD0C00FD0401FD0500FD0401FD0600FD0601FD
105
+%0600FD0501FD0600FD0501FD0600FD0801FD0600FD0701FD0C00FD0901FD
106
+%0600FD0301FD0600FD0C01FD0600FD0401FD0500FD0401FD0600FD0601FD
107
+%0600FD0501FD0600FD0501FD0600FD0801FD0600FD0701FD060001FD0500
108
+%FD0901FD0600FD0301FD0600FD0C01FD0600FD0401FD0500FD0401FD0600
109
+%FD0601FD0600FD0501FD0600FD0501FD0600FD0801FD0600FD0701FD0600
110
+%01FD0600FD0801FD0600FD0301FD0600FD0C01FD0600FD0401FD0500FD04
111
+%01FD0600FD0601FD0600FD0501FD0600FD0501FD0600FD0801FD0600FD07
112
+%01FD060001FD0600FD0801FD0600FD0301FD0600FD0C01FD0600FD0401FD
113
+%0500FD0401FD0600FD0601FD0600FD0501FD0600FD0501FD0600FD0801FD
114
+%0600FD0701FD060001FD0800FD0601FD0600FD0301FD0600FD0C01FD0600
115
+%FD0401FD0500FD0401FD0600FD0601FD0600FD0501FD0600FD0501FD0600
116
+%FD0801FD0600FD0701FD06000101FD0C0001FD0F00FD0C01FD090001FD0F
117
+%00FD0601FD0600FD0501FD0600FD0501FD0600FD0801FD0600FD0701FD06
118
+%000101FD0C0001FD0F00FD0D01FD080001FD0F00FD0601FD0600FD0501FD
119
+%0600FD0501FD0600FD0801FD0600FD0701FD0600FD0301FD0B0001FD0F00
120
+%FD0D01FD080001FD0F00FD0601FD0600FD0501FD0600FD0501FD0600FD08
121
+%01FD0600FD0701FD0600FD0401FD0A0001FD0F00FD0E01FD070001FD0F00
122
+%FD0601FD0600FD0501FD0600FD0501FD0600FD0801FD0600FD0701FD0600
123
+%FD0601FD080001FD0F00FD0F01FD060001FD0F00FD0601FD0600FD0501FD
124
+%0600FD0601FD0500FD0801FD0600FD0701FD0600FD0801FD060001FD0F00
125
+%FD1101FD040001FD0F00FD0601FD0500FD0601FD0700FD7801FD040001FD
126
+%0300FD7801FD03000101FD0400FD7601FD0400FD0301FD0500FD7201FD05
127
+%00FD0501FD7A00FD0701FD7800FD0A01FD7400FD0601
128
+%%EndData
129
+%%EndComments
130
+%%BeginProlog
131
+%%IncludeResource: procset Adobe_level2_AI5 1.2 0
132
+%%IncludeResource: procset Adobe_typography_AI5 1.0 1
133
+%%IncludeResource: procset Adobe_ColorImage_AI6 1.1 0
134
+%%IncludeResource: procset Adobe_Illustrator_AI5 1.2 0
135
+%%IncludeResource: procset Adobe_cshow 2.0 8
136
+%%IncludeResource: procset Adobe_level2_AI5 1.2 0
137
+%%IncludeResource: procset Adobe_typography_AI5 1.0 1
138
+%%IncludeResource: procset Adobe_ColorImage_AI6 1.1 0
139
+%%IncludeResource: procset Adobe_Illustrator_AI5 1.2 0
140
+%%IncludeResource: procset Adobe_cshow 2.0 8
141
+%%IncludeResource: procset Adobe_level2_AI5 1.2 0
142
+%%IncludeResource: procset Adobe_typography_AI5 1.0 0
143
+%%IncludeResource: procset Adobe_ColorImage_AI6 1.1 0
144
+%%IncludeResource: procset Adobe_Illustrator_AI5 1.0 0
145
+%%IncludeResource: procset Adobe_level2_AI5 1.2 0
146
+%%IncludeResource: procset Adobe_Illustrator_AI5 1.0 0
147
+%%IncludeResource: procset Adobe_packedarray 2.0 0
148
+Adobe_packedarray /initialize get exec
149
+%%IncludeResource: procset Adobe_cmykcolor 1.1 0
150
+%%IncludeResource: procset Adobe_cshow 1.1 0
151
+%%IncludeResource: procset Adobe_customcolor 1.0 0
152
+%%IncludeResource: procset Adobe_typography_AI3 1.0 1
153
+%%IncludeResource: procset Adobe_pattern_AI3 1.0 1
154
+%%IncludeResource: procset Adobe_IllustratorA_AI3 1.0 1
155
+%%IncludeResource: procset Adobe_packedarray 2.0 0
156
+Adobe_packedarray /initialize get exec
157
+%%IncludeResource: procset Adobe_cmykcolor 1.1 0
158
+%%IncludeResource: procset Adobe_cshow 1.1 0
159
+%%IncludeResource: procset Adobe_customcolor 1.0 0
160
+%%IncludeResource: procset Adobe_typography_AI3 1.0 1
161
+%%IncludeResource: procset Adobe_pattern_AI3 1.0 1
162
+%%IncludeResource: procset Adobe_IllustratorA_AI3 1.0 1
163
+%%EndProlog
164
+%%BeginSetup
165
+Adobe_level2_AI5 /initialize get exec
166
+Adobe_cshow /initialize get exec
167
+Adobe_Illustrator_AI5_vars Adobe_Illustrator_AI5 Adobe_typography_AI5 /initialize get exec
168
+Adobe_ColorImage_AI6 /initialize get exec
169
+Adobe_Illustrator_AI5 /initialize get exec
170
+Adobe_level2_AI5 /initialize get exec
171
+Adobe_cshow /initialize get exec
172
+Adobe_Illustrator_AI5_vars Adobe_Illustrator_AI5 Adobe_typography_AI5 /initialize get exec
173
+Adobe_ColorImage_AI6 /initialize get exec
174
+Adobe_Illustrator_AI5 /initialize get exec
175
+Adobe_level2_AI5 /initialize get exec
176
+Adobe_Illustrator_AI5_vars Adobe_Illustrator_AI5 Adobe_typography_AI5 /initialize get exec
177
+Adobe_ColorImage_AI6 /initialize get exec
178
+Adobe_Illustrator_AI5 /initialize get exec
179
+Adobe_cmykcolor /initialize get exec
180
+Adobe_cshow /initialize get exec
181
+Adobe_customcolor /initialize get exec
182
+Adobe_typography_AI3 /initialize get exec
183
+Adobe_pattern_AI3 /initialize get exec
184
+Adobe_IllustratorA_AI3 /initialize get exec
185
+Adobe_level2_AI5 /initialize get exec
186
+Adobe_Illustrator_AI5 /initialize get exec
187
+Adobe_cmykcolor /initialize get exec
188
+Adobe_cshow /initialize get exec
189
+Adobe_customcolor /initialize get exec
190
+Adobe_typography_AI3 /initialize get exec
191
+Adobe_pattern_AI3 /initialize get exec
192
+Adobe_IllustratorA_AI3 /initialize get exec
193
+%%EndSetup
194
+%AI5_BeginLayer
195
+ 1 1 1 1 0 0 -1 43 42 41 Lb
196
+(Layer 1) Ln
197
+*u
198
+1 XR
199
+0 O
200
+0.0000 0.0000 0.0000 1.0000 k
201
+256.4660 3540.8095 m
202
+256.4660 3520.4596 L
203
+242.7843 3520.4596 L
204
+242.7843 3565.7580 L
205
+227.6082 3565.7580 L
206
+227.6082 3520.4596 L
207
+227.6082 3506.5480 L
208
+242.7843 3506.5480 L
209
+256.4660 3506.5480 L
210
+271.6421 3506.5480 L
211
+271.6421 3520.4596 L
212
+271.6421 3541.1542 l
213
+271.6421 3547.8227 276.4709 3552.4216 283.1394 3552.4216 c
214
+293.1418 3552.4216 294.2915 3544.4886 294.2915 3541.1542 c
215
+294.2915 3506.5480 L
216
+298.3190 3506.5480 302.3467 3506.5480 306.3742 3506.5480 C
217
+307.8984 3506.5145 309.4679 3507.4029 309.4679 3510.6398 c
218
+309.4679 3540.8095 l
219
+309.4679 3556.3306 299.6952 3567.2528 283.1394 3567.2528 c
220
+267.0435 3567.2528 256.4660 3555.8705 256.4660 3540.8095 c
221
+256.4660 3540.8095 l
222
+f
223
+140.5471 3506.5480 m
224
+128.2450 3506.5480 L
225
+113.0689 3506.5480 L
226
+113.0689 3521.2643 L
227
+113.0689 3535.9807 l
228
+113.0689 3545.0634 106.2856 3552.5364 97.8928 3552.5364 c
229
+89.5000 3552.5364 82.7167 3545.2933 82.7167 3536.4404 c
230
+82.7167 3527.7026 89.5000 3521.2643 98.2378 3521.2643 c
231
+106.9756 3521.2643 L
232
+106.9756 3506.5480 L
233
+96.3981 3506.5480 l
234
+79.8423 3506.5480 67.4254 3519.8847 67.4254 3536.4404 c
235
+67.4254 3553.2264 79.9571 3567.2528 97.8928 3567.2528 c
236
+115.7134 3567.2528 128.2450 3553.2264 128.2450 3535.9807 c
237
+128.2450 3521.2643 L
238
+140.5471 3521.2643 L
239
+140.5471 3540.8095 l
240
+140.5471 3555.8705 151.1246 3567.2528 167.2206 3567.2528 c
241
+183.7763 3567.2528 193.5490 3556.3306 193.5490 3540.8095 c
242
+193.5490 3538.1650 L
243
+178.3726 3538.1650 L
244
+178.3726 3541.1542 l
245
+178.3726 3544.4886 177.2229 3552.4216 167.2206 3552.4216 c
246
+160.5521 3552.4216 155.7232 3547.8227 155.7232 3541.1542 c
247
+155.7232 3521.2643 L
248
+155.7232 3506.5480 L
249
+140.5471 3506.5480 L
250
+140.5471 3506.5480 L
251
+f
252
+64.0239 3559.5496 m
253
+64.0239 3575.5308 52.1819 3588.2926 35.0512 3588.2926 c
254
+26.3134 3588.2926 18.6103 3584.2686 13.7815 3577.9450 C
255
+8.8379 3584.2686 1.3646 3588.2926 -7.4880 3588.2926 c
256
+-24.5038 3588.2926 -36.3458 3575.5305 -36.3458 3559.5496 c
257
+-36.3458 3542.7838 -36.3458 3526.0183 -36.3458 3509.2525 C
258
+-36.3458 3507.8134 -35.2460 3506.5480 -33.5305 3506.5480 C
259
+-21.2848 3506.5480 L
260
+-21.2848 3559.7798 l
261
+-21.2848 3567.3678 -15.8811 3573.4612 -7.4880 3573.4612 c
262
+0.7897 3573.4612 6.1934 3567.3678 6.1934 3559.7798 c
263
+6.1934 3506.5480 L
264
+21.4846 3506.5480 L
265
+21.4846 3559.7798 l
266
+21.4846 3567.3678 26.6584 3573.4612 35.0512 3573.4612 c
267
+43.3293 3573.4612 48.8477 3567.3678 48.8477 3559.7798 c
268
+48.8477 3506.5480 L
269
+64.0239 3506.5480 L
270
+64.0239 3559.5496 l
271
+64.0239 3559.5496 l
272
+f
273
+197.0773 3531.3817 m
274
+197.0773 3515.1707 206.2749 3504.8234 223.6357 3506.6631 C
275
+223.6357 3520.4596 L
276
+216.1624 3519.9995 212.3685 3522.9889 212.3685 3531.3817 c
277
+212.3685 3592.0865 L
278
+197.0773 3592.0865 L
279
+197.0773 3531.3817 l
280
+197.0773 3531.3817 l
281
+f
282
+242.7843 3572.1967 m
283
+242.7843 3580.7043 l
284
+242.7843 3584.9582 239.3351 3588.2926 235.1962 3588.2926 c
285
+230.9423 3588.2926 227.4931 3584.9582 227.4931 3580.7043 c
286
+227.4931 3572.1967 L
287
+242.7843 3572.1967 L
288
+f
289
+*U
290
+1 XR
291
+0 R
292
+0.0000 0.0000 0.0000 1.0000 K
293
+0 1 0 0 0 Xy
294
+0 J
295
+0 j
296
+22.9256 M
297
+7.0866 w
298
+[]0 d
299
+-31.5927 3613.1664 m
300
+304.7145 3613.1664 l
301
+320.3050 3613.1664 333.0609 3600.4107 333.0609 3584.8202 c
302
+333.0609 3515.5123 l
303
+333.0609 3499.9217 320.3050 3487.1661 304.7145 3487.1661 c
304
+-31.5927 3487.1661 l
305
+-47.1832 3487.1661 -59.9391 3499.9217 -59.9391 3515.5123 c
306
+-59.9391 3584.8202 l
307
+-59.9391 3600.4107 -47.1832 3613.1664 -31.5927 3613.1664 c
308
+s
309
+1 XR
310
+0 O
311
+0.0000 0.0000 0.0000 1.0000 k
312
+336.5671 3616.7281 m
313
+260.4297 3616.7281 L
314
+336.5671 3539.4786 L
315
+336.5671 3616.7281 L
316
+f
317
+LB
318
+%AI5_EndLayer--
319
+%%PageTrailer
320
+gsave annotatepage grestore showpage
321
+%%Trailer
322
+Adobe_Illustrator_AI5 /terminate get exec
323
+Adobe_ColorImage_AI6 /terminate get exec
324
+Adobe_typography_AI5 /terminate get exec
325
+Adobe_cshow /terminate get exec
326
+Adobe_level2_AI5 /terminate get exec
327
+Adobe_Illustrator_AI5 /terminate get exec
328
+Adobe_ColorImage_AI6 /terminate get exec
329
+Adobe_typography_AI5 /terminate get exec
330
+Adobe_cshow /terminate get exec
331
+Adobe_level2_AI5 /terminate get exec
332
+Adobe_Illustrator_AI5 /terminate get exec
333
+Adobe_ColorImage_AI6 /terminate get exec
334
+Adobe_typography_AI5 /terminate get exec
335
+Adobe_level2_AI5 /terminate get exec
336
+Adobe_Illustrator_AI5 /terminate get exec
337
+Adobe_level2_AI5 /terminate get exec
338
+Adobe_IllustratorA_AI3 /terminate get exec
339
+Adobe_pattern_AI3 /terminate get exec
340
+Adobe_typography_AI3 /terminate get exec
341
+Adobe_customcolor /terminate get exec
342
+Adobe_cshow /terminate get exec
343
+Adobe_cmykcolor /terminate get exec
344
+Adobe_packedarray /terminate get exec
345
+Adobe_IllustratorA_AI3 /terminate get exec
346
+Adobe_pattern_AI3 /terminate get exec
347
+Adobe_typography_AI3 /terminate get exec
348
+Adobe_customcolor /terminate get exec
349
+Adobe_cshow /terminate get exec
350
+Adobe_cmykcolor /terminate get exec
351
+Adobe_packedarray /terminate get exec
352
+%%EOF
353
+

BIN
Documentation/Logo/Marlin Logo.cdr Ver fichero


+ 7718
- 0
Documentation/Logo/Marlin Logo.dxf
La diferencia del archivo ha sido suprimido porque es demasiado grande
Ver fichero


BIN
Documentation/Logo/Marlin Logo.pdf Ver fichero


BIN
Documentation/Logo/Marlin Logo.png Ver fichero


+ 24
- 0
Documentation/Logo/Marlin Logo.svg Ver fichero

@@ -0,0 +1,24 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
3
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
5
+	 width="595.28px" height="841.89px" viewBox="0 0 595.28 841.89" enable-background="new 0 0 595.28 841.89" xml:space="preserve">
6
+<path d="M428.064,394.44v20.351h-13.682v-45.299h-15.177v45.299v13.911h15.177h13.682h15.176v-13.911v-20.694
7
+	c0-6.669,4.828-11.268,11.496-11.268c10.004,0,11.152,7.933,11.152,11.268v34.605c4.027,0,8.057,0,12.084,0
8
+	c1.523,0.034,3.094-0.854,3.094-4.092v-30.17c0-15.521-9.773-26.443-26.33-26.443C438.641,367.997,428.064,379.379,428.064,394.44
9
+	L428.064,394.44z M312.145,428.702h-12.301h-15.177v-14.716v-14.717c0-9.083-6.783-16.556-15.176-16.556
10
+	c-8.393,0-15.176,7.243-15.176,16.096c0,8.738,6.783,15.177,15.521,15.177h8.738v14.716h-10.578
11
+	c-16.556,0-28.973-13.337-28.973-29.893c0-16.786,12.532-30.812,30.467-30.812c17.821,0,30.353,14.026,30.353,31.272v14.717h12.301
12
+	V394.44c0-15.061,10.578-26.443,26.674-26.443c16.557,0,26.328,10.922,26.328,26.443v2.645h-15.176v-2.988
13
+	c0-3.335-1.15-11.268-11.152-11.268c-6.668,0-11.497,4.599-11.497,11.268v19.89v14.716H312.145L312.145,428.702z M235.622,375.7
14
+	c0-15.981-11.842-28.743-28.973-28.743c-8.738,0-16.441,4.023-21.27,10.348c-4.943-6.324-12.417-10.348-21.269-10.348
15
+	c-17.016,0-28.858,12.762-28.858,28.743c0,16.766,0,33.532,0,50.297c0,1.439,1.1,2.704,2.815,2.704h12.246V375.47
16
+	c0-7.588,5.403-13.682,13.797-13.682c8.277,0,13.681,6.094,13.681,13.682v53.231h15.292V375.47c0-7.588,5.173-13.682,13.566-13.682
17
+	c8.278,0,13.796,6.094,13.796,13.682v53.231h15.176V375.7L235.622,375.7z M368.676,403.868c0,16.212,9.197,26.559,26.559,24.719
18
+	v-13.796c-7.474,0.46-11.268-2.529-11.268-10.923v-60.704h-15.291V403.868L368.676,403.868z M414.383,363.053v-8.508
19
+	c0-4.254-3.449-7.588-7.588-7.588c-4.254,0-7.703,3.334-7.703,7.588v8.508H414.383L414.383,363.053z"/>
20
+<path fill="none" stroke="#000000" stroke-width="7.0866" stroke-miterlimit="22.9256" d="M140.005,322.083h336.307
21
+	c15.59,0,28.346,12.756,28.346,28.346v69.308c0,15.591-12.756,28.346-28.346,28.346H140.005c-15.59,0-28.346-12.755-28.346-28.346
22
+	V350.43C111.659,334.839,124.415,322.083,140.005,322.083L140.005,322.083z"/>
23
+<polygon fill-rule="evenodd" clip-rule="evenodd" points="508.164,318.522 432.027,318.522 508.164,395.771 508.164,318.522 "/>
24
+</svg>

Marlin/documentation/Menu Plans.xlsx → Documentation/Menu Plans.xlsx Ver fichero


+ 9
- 0
Documentation/RampsServoPower.md Ver fichero

@@ -0,0 +1,9 @@
1
+
2
+
3
+__Note for RAMPS users:__
4
+----------------------
5
+
6
+-By default, RAMPS have no power on servo bus (if you happen to have a multimeter, check the voltage on servo power pins).
7
+-In order to get the servo working, you need to supply 5V to 5V pin.. You can do it using your power supply (if it has a 5V output) or jumping the "Vcc" from Arduino to the 5V RAMPS rail.
8
+-These 2 pins are located just between the Reset Button and the yellow fuses... There are marks in the board showing 5V and VCC.. just connect them..
9
+-If jumping the arduino Vcc do RAMPS 5V rail, take care to not use a power hungry servo, otherwise you will cause a blackout in the arduino board ;-)

+ 62
- 19
Marlin/Configuration.h Ver fichero

@@ -3,6 +3,20 @@
3 3
 
4 4
 #include "boards.h"
5 5
 
6
+//===========================================================================
7
+//============================= Getting Started =============================
8
+//===========================================================================
9
+/*
10
+Here are some standard links for getting your machine calibrated:
11
+ * http://reprap.org/wiki/Calibration 
12
+ * http://youtu.be/wAL9d7FgInk
13
+ * http://calculator.josefprusa.cz
14
+ * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide
15
+ * http://www.thingiverse.com/thing:5573
16
+ * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap
17
+ * http://www.thingiverse.com/thing:298812
18
+*/
19
+
6 20
 // This configuration file contains the basic settings.
7 21
 // Advanced settings can be found in Configuration_adv.h
8 22
 // BASIC SETTINGS: select your board type, temperature sensor type, axis scaling, and endstop configuration
@@ -24,8 +38,12 @@
24 38
 // User-specified version info of this build to display in [Pronterface, etc] terminal window during
25 39
 // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
26 40
 // build by the user have been successfully uploaded into firmware.
41
+#define STRING_VERSION "1.0.2"
42
+#define STRING_URL "reprap.org"
27 43
 #define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time
28 44
 #define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes.
45
+#define STRING_SPLASH_LINE1 "v" STRING_VERSION // will be shown during bootup in line 1
46
+//#define STRING_SPLASH_LINE2 STRING_VERSION_CONFIG_H // will be shown during bootup in line2
29 47
 
30 48
 // SERIAL_PORT selects which serial port should be used for communication with the host.
31 49
 // This allows the connection of wireless adapters (for instance) to non-default port pins.
@@ -64,7 +82,7 @@
64 82
 // #define PS_DEFAULT_OFF
65 83
 
66 84
 //===========================================================================
67
-//=============================Thermal Settings  ============================
85
+//============================= Thermal Settings ============================
68 86
 //===========================================================================
69 87
 //
70 88
 //--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table
@@ -140,7 +158,11 @@
140 158
 //#define EXTRUDER_WATTS (12.0*12.0/6.7) //  P=I^2/R
141 159
 //#define BED_WATTS (12.0*12.0/1.1)      // P=I^2/R
142 160
 
143
-// PID settings:
161
+//===========================================================================
162
+//============================= PID Settings ================================
163
+//===========================================================================
164
+// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning
165
+
144 166
 // Comment the following line to disable PID and enable bang-bang.
145 167
 #define PIDTEMP
146 168
 #define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current
@@ -148,6 +170,9 @@
148 170
 #ifdef PIDTEMP
149 171
   //#define PID_DEBUG // Sends debug data to the serial port.
150 172
   //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX
173
+  //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay
174
+  //#define PID_PARAMS_PER_EXTRUDER // Uses separate PID parameters for each extruder (useful for mismatched extruders)
175
+                                    // Set/get with gcode: M301 E[extruder number, 0-2]
151 176
   #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature
152 177
                                   // is more then PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max.
153 178
   #define PID_INTEGRAL_DRIVE_MAX PID_MAX  //limit for the integral term
@@ -171,7 +196,9 @@
171 196
 //    #define  DEFAULT_Kd 440
172 197
 #endif // PIDTEMP
173 198
 
174
-// Bed Temperature Control
199
+//===========================================================================
200
+//============================= PID > Bed Temperature Control ===============
201
+//===========================================================================
175 202
 // Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis
176 203
 //
177 204
 // Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder.
@@ -208,7 +235,6 @@
208 235
 #endif // PIDTEMPBED
209 236
 
210 237
 
211
-
212 238
 //this prevents dangerous Extruder moves, i.e. if the temperature is under the limit
213 239
 //can be software-disabled for whatever purposes by
214 240
 #define PREVENT_DANGEROUS_EXTRUDE
@@ -218,7 +244,10 @@
218 244
 #define EXTRUDE_MINTEMP 170
219 245
 #define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances.
220 246
 
221
-/*================== Thermal Runaway Protection ==============================
247
+//===========================================================================
248
+//============================= Thermal Runaway Protection ==================
249
+//===========================================================================
250
+/*
222 251
 This is a feature to protect your printer from burn up in flames if it has
223 252
 a thermistor coming off place (this happened to a friend of mine recently and
224 253
 motivated me writing this feature).
@@ -253,11 +282,10 @@ your extruder heater takes 2 minutes to hit the target on heating.
253 282
 // Parameters for the bed heater
254 283
 //#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds
255 284
 //#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius
256
-//===========================================================================
257 285
 
258 286
 
259 287
 //===========================================================================
260
-//=============================Mechanical Settings===========================
288
+//============================= Mechanical Settings =========================
261 289
 //===========================================================================
262 290
 
263 291
 // Uncomment the following line to enable CoreXY kinematics
@@ -329,7 +357,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
329 357
 #define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS.
330 358
 #define max_software_endstops true  // If true, axis won't move to coordinates greater than the defined lengths below.
331 359
 
332
-// Travel limits after homing
360
+// Travel limits after homing (units are in mm)
333 361
 #define X_MAX_POS 205
334 362
 #define X_MIN_POS 0
335 363
 #define Y_MAX_POS 205
@@ -340,7 +368,11 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
340 368
 #define X_MAX_LENGTH (X_MAX_POS - X_MIN_POS)
341 369
 #define Y_MAX_LENGTH (Y_MAX_POS - Y_MIN_POS)
342 370
 #define Z_MAX_LENGTH (Z_MAX_POS - Z_MIN_POS)
371
+
372
+
373
+//===========================================================================
343 374
 //============================= Bed Auto Leveling ===========================
375
+//===========================================================================
344 376
 
345 377
 //#define ENABLE_AUTO_BED_LEVELING // Delete the comment to enable (remove // at the start of the line)
346 378
 #define Z_PROBE_REPEATABILITY_TEST  // If not commented out, Z-Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
@@ -434,20 +466,20 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
434 466
 
435 467
   #ifdef AUTO_BED_LEVELING_GRID	// Check if Probe_Offset * Grid Points is greater than Probing Range
436 468
     #if X_PROBE_OFFSET_FROM_EXTRUDER < 0
437
-      #if (-(X_PROBE_OFFSET_FROM_EXTRUDER * AUTO_BED_LEVELING_GRID_POINTS) >= (RIGHT_PROBE_BED_POSITION - LEFT_PROBE_BED_POSITION))
469
+      #if (-(X_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (RIGHT_PROBE_BED_POSITION - LEFT_PROBE_BED_POSITION))
438 470
 	     #error "The X axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS"
439 471
 	  #endif
440 472
 	#else
441
-      #if ((X_PROBE_OFFSET_FROM_EXTRUDER * AUTO_BED_LEVELING_GRID_POINTS) >= (RIGHT_PROBE_BED_POSITION - LEFT_PROBE_BED_POSITION))
473
+      #if ((X_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (RIGHT_PROBE_BED_POSITION - LEFT_PROBE_BED_POSITION))
442 474
 	     #error "The X axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS"
443 475
 	  #endif
444 476
 	#endif
445 477
     #if Y_PROBE_OFFSET_FROM_EXTRUDER < 0
446
-      #if (-(Y_PROBE_OFFSET_FROM_EXTRUDER * AUTO_BED_LEVELING_GRID_POINTS) >= (BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION))
478
+      #if (-(Y_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION))
447 479
 	     #error "The Y axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS"
448 480
 	  #endif
449 481
 	#else
450
-      #if ((Y_PROBE_OFFSET_FROM_EXTRUDER * AUTO_BED_LEVELING_GRID_POINTS) >= (BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION))
482
+      #if ((Y_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION))
451 483
 	     #error "The Y axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS"
452 484
 	  #endif
453 485
 	#endif
@@ -493,9 +525,10 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
493 525
 #define DEFAULT_ZJERK                 0.4     // (mm/sec)
494 526
 #define DEFAULT_EJERK                 5.0    // (mm/sec)
495 527
 
496
-//===========================================================================
497
-//=============================Additional Features===========================
498
-//===========================================================================
528
+
529
+//=============================================================================
530
+//============================= Additional Features ===========================
531
+//=============================================================================
499 532
 
500 533
 // Custom M code points
501 534
 #define CUSTOM_M_CODES
@@ -526,7 +559,17 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
526 559
 #define ABS_PREHEAT_HPB_TEMP 100
527 560
 #define ABS_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
528 561
 
529
-//LCD and SD support
562
+//==============================LCD and SD support=============================
563
+
564
+// Define your display language below. Replace (en) with your language code and uncomment.
565
+// en, pl, fr, de, es, ru, it, pt, pt-br, fi, an, nl, ca, eu
566
+// See also language.h
567
+//#define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en)
568
+
569
+// Character based displays can have different extended charsets.
570
+#define DISPLAY_CHARSET_HD44780_JAPAN     // "ääööüüß23°"
571
+//#define DISPLAY_CHARSET_HD44780_WESTERN // "ÄäÖöÜüß²³°" if you see a '~' instead of a 'arrow_right' at the right of submenuitems - this is the right one.
572
+
530 573
 //#define ULTRA_LCD  //general LCD support, also 16x2
531 574
 //#define DOGLCD  // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)
532 575
 //#define SDSUPPORT // Enable SD Card Support in Hardware Console
@@ -564,7 +607,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
564 607
 
565 608
 // The Elefu RA Board Control Panel
566 609
 // http://www.elefu.com/index.php?route=product/product&product_id=53
567
-// REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARUDINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C
610
+// REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C
568 611
 //#define RA_CONTROL_PANEL
569 612
 
570 613
 //automatic expansion
@@ -672,7 +715,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
672 715
   #define SDSUPPORT
673 716
   #define ULTRA_LCD
674 717
   #ifdef DOGLCD // Change number of lines to match the DOG graphic display
675
-    #define LCD_WIDTH 20
718
+    #define LCD_WIDTH 22
676 719
     #define LCD_HEIGHT 5
677 720
   #else
678 721
     #define LCD_WIDTH 20
@@ -681,7 +724,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
681 724
 #else //no panel but just LCD
682 725
   #ifdef ULTRA_LCD
683 726
   #ifdef DOGLCD // Change number of lines to match the 128x64 graphics display
684
-    #define LCD_WIDTH 20
727
+    #define LCD_WIDTH 22
685 728
     #define LCD_HEIGHT 5
686 729
   #else
687 730
     #define LCD_WIDTH 16

+ 591
- 384
Marlin/ConfigurationStore.cpp
La diferencia del archivo ha sido suprimido porque es demasiado grande
Ver fichero


+ 7
- 7
Marlin/ConfigurationStore.h Ver fichero

@@ -6,17 +6,17 @@
6 6
 void Config_ResetDefault();
7 7
 
8 8
 #ifndef DISABLE_M503
9
-void Config_PrintSettings();
9
+  void Config_PrintSettings(bool forReplay=false);
10 10
 #else
11
-FORCE_INLINE void Config_PrintSettings() {}
11
+  FORCE_INLINE void Config_PrintSettings(bool forReplay=false) {}
12 12
 #endif
13 13
 
14 14
 #ifdef EEPROM_SETTINGS
15
-void Config_StoreSettings();
16
-void Config_RetrieveSettings();
15
+  void Config_StoreSettings();
16
+  void Config_RetrieveSettings();
17 17
 #else
18
-FORCE_INLINE void Config_StoreSettings() {}
19
-FORCE_INLINE void Config_RetrieveSettings() { Config_ResetDefault(); Config_PrintSettings(); }
18
+  FORCE_INLINE void Config_StoreSettings() {}
19
+  FORCE_INLINE void Config_RetrieveSettings() { Config_ResetDefault(); Config_PrintSettings(); }
20 20
 #endif
21 21
 
22
-#endif//CONFIG_STORE_H
22
+#endif // __CONFIG_STORE_H

+ 23
- 8
Marlin/Configuration_adv.h Ver fichero

@@ -75,9 +75,10 @@
75 75
 // extruder temperature is above/below EXTRUDER_AUTO_FAN_TEMPERATURE.
76 76
 // Multiple extruders can be assigned to the same pin in which case
77 77
 // the fan will turn on when any selected extruder is above the threshold.
78
-#define EXTRUDER_0_AUTO_FAN_PIN   -1
79
-#define EXTRUDER_1_AUTO_FAN_PIN   -1
80
-#define EXTRUDER_2_AUTO_FAN_PIN   -1
78
+#define EXTRUDER_0_AUTO_FAN_PIN -1
79
+#define EXTRUDER_1_AUTO_FAN_PIN -1
80
+#define EXTRUDER_2_AUTO_FAN_PIN -1
81
+#define EXTRUDER_3_AUTO_FAN_PIN -1
81 82
 #define EXTRUDER_AUTO_FAN_TEMPERATURE 50
82 83
 #define EXTRUDER_AUTO_FAN_SPEED   255  // == full speed
83 84
 
@@ -200,9 +201,6 @@
200 201
 // This is the default power-up mode which can be later using M605.
201 202
 #define DEFAULT_DUAL_X_CARRIAGE_MODE 0
202 203
 
203
-// As the x-carriages are independent we can now account for any relative Z offset
204
-#define EXTRUDER1_Z_OFFSET 0.0           // z offset relative to extruder 0
205
-
206 204
 // Default settings in "Auto-park Mode"
207 205
 #define TOOLCHANGE_PARK_ZLIFT   0.2      // the distance to raise Z axis when parking an extruder
208 206
 #define TOOLCHANGE_UNPARK_ZLIFT 1        // the distance to raise Z axis when unparking an extruder
@@ -230,7 +228,7 @@
230 228
 #define INVERT_Z_STEP_PIN false
231 229
 #define INVERT_E_STEP_PIN false
232 230
 
233
-//default stepper release if idle
231
+//default stepper release if idle. Set to 0 to deactivate.
234 232
 #define DEFAULT_STEPPER_DEACTIVE_TIME 60
235 233
 
236 234
 #define DEFAULT_MINIMUMFEEDRATE       0.0     // minimum feedrate
@@ -297,7 +295,7 @@
297 295
 // using:
298 296
 //#define MENU_ADDAUTOSTART
299 297
 
300
-// Show a progress bar on the LCD when printing from SD?
298
+// Show a progress bar on HD44780 LCDs for SD printing
301 299
 //#define LCD_PROGRESS_BAR
302 300
 
303 301
 #ifdef LCD_PROGRESS_BAR
@@ -309,6 +307,12 @@
309 307
   #define PROGRESS_MSG_EXPIRE   0
310 308
   // Enable this to show messages for MSG_TIME then hide them
311 309
   //#define PROGRESS_MSG_ONCE
310
+  #ifdef DOGLCD
311
+    #warning LCD_PROGRESS_BAR does not apply to graphical displays at this time.
312
+  #endif
313
+  #ifdef FILAMENT_LCD_DISPLAY
314
+    #error LCD_PROGRESS_BAR and FILAMENT_LCD_DISPLAY are not fully compatible. Comment out this line to use both.
315
+  #endif
312 316
 #endif
313 317
 
314 318
 // The hardware watchdog should reset the microcontroller disabling all outputs, in case the firmware gets stuck and doesn't do temperature regulation.
@@ -480,6 +484,10 @@ const unsigned int dropsegments=5; //everything with less than this number of st
480 484
   #define THERMISTORHEATER_2 TEMP_SENSOR_2
481 485
   #define HEATER_2_USES_THERMISTOR
482 486
 #endif
487
+#if TEMP_SENSOR_3 > 0
488
+  #define THERMISTORHEATER_3 TEMP_SENSOR_3
489
+  #define HEATER_3_USES_THERMISTOR
490
+#endif
483 491
 #if TEMP_SENSOR_BED > 0
484 492
   #define THERMISTORBED TEMP_SENSOR_BED
485 493
   #define BED_USES_THERMISTOR
@@ -493,6 +501,9 @@ const unsigned int dropsegments=5; //everything with less than this number of st
493 501
 #if TEMP_SENSOR_2 == -1
494 502
   #define HEATER_2_USES_AD595
495 503
 #endif
504
+#if TEMP_SENSOR_3 == -1
505
+  #define HEATER_3_USES_AD595
506
+#endif
496 507
 #if TEMP_SENSOR_BED == -1
497 508
   #define BED_USES_AD595
498 509
 #endif
@@ -511,6 +522,10 @@ const unsigned int dropsegments=5; //everything with less than this number of st
511 522
   #undef HEATER_2_MINTEMP
512 523
   #undef HEATER_2_MAXTEMP
513 524
 #endif
525
+#if TEMP_SENSOR_3 == 0
526
+  #undef HEATER_3_MINTEMP
527
+  #undef HEATER_3_MAXTEMP
528
+#endif
514 529
 #if TEMP_SENSOR_BED == 0
515 530
   #undef BED_MINTEMP
516 531
   #undef BED_MAXTEMP

+ 77
- 69
Marlin/DOGMbitmaps.h Ver fichero

@@ -1,72 +1,80 @@
1
-#define START_BMPWIDTH 	60	//Width in pixels
2
-#define START_BMPHEIGHT 	64	//Height in pixels
3
-#define START_BMPBYTEWIDTH 	8	//Width in bytes
4
-const unsigned char start_bmp[574] PROGMEM = { //AVR-GCC, WinAVR
5
-0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,
6
-0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,
7
-0xFF,0xFF,0xFF,0xF9,0xFF,0xFF,0xFF,0xF0,
8
-0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xF0,
9
-0xFF,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0xF0,
10
-0xFF,0xFF,0xFF,0xC0,0x3F,0xFF,0xFF,0xF0,
11
-0xFF,0xFF,0xFF,0x80,0x1F,0xFF,0xFF,0xF0,
12
-0xFF,0xFF,0xFF,0x00,0x0F,0xFF,0xFF,0xF0,
13
-0xFF,0xFF,0xFE,0x00,0x07,0xFF,0xFF,0xF0,
14
-0xFF,0xFF,0xFC,0x00,0x03,0xFF,0xFF,0xF0,
15
-0xFF,0xFF,0xF8,0x00,0x01,0xFF,0xFF,0xF0,
16
-0xFF,0xFF,0xF0,0x00,0x00,0xFF,0xFF,0xF0,
17
-0xFF,0xFF,0xE0,0x00,0x00,0x7F,0xFF,0xF0,
18
-0xFF,0xFF,0xC0,0x00,0x00,0x3F,0xFF,0xF0,
19
-0xFF,0xFF,0x80,0x00,0x00,0x3F,0xFF,0xF0,
20
-0xFF,0xFF,0x00,0x00,0x00,0x1F,0xFF,0xF0,
21
-0xFF,0xFE,0x00,0x00,0x00,0x0F,0xFF,0xF0,
22
-0xFF,0xFE,0x00,0x00,0x00,0x07,0xFF,0xF0,
23
-0xFF,0xFC,0x00,0x00,0x00,0x07,0xFF,0xF0,
24
-0xFF,0xFC,0x00,0x00,0x00,0x03,0xFF,0xF0,
25
-0xFF,0xF8,0x00,0x00,0x00,0x03,0xFF,0xF0,
26
-0xFF,0xF8,0x00,0x00,0x00,0x03,0xFF,0xF0,
27
-0xFF,0xF8,0x00,0x00,0x00,0x01,0xFF,0xF0,
28
-0xFF,0xF8,0x00,0x00,0x00,0x01,0xFF,0xF0,
29
-0xFF,0xF8,0x00,0x00,0x00,0x01,0xFF,0xF0,
30
-0xFF,0xF8,0x00,0x00,0x00,0x01,0xFF,0xF0,
31
-0xFF,0xF8,0x00,0x00,0x00,0x01,0xFF,0xF0,
32
-0xFF,0xF8,0x00,0x00,0x00,0x01,0xFF,0xF0,
33
-0xFF,0xF8,0x00,0x00,0x00,0x01,0xFF,0xF0,
34
-0xFF,0xF8,0x00,0x00,0x00,0x01,0xFF,0xF0,
35
-0xFF,0xF8,0x00,0x00,0x00,0x03,0xFF,0xF0,
36
-0xFF,0xF8,0x00,0x00,0x00,0x03,0xFF,0xF0,
37
-0xFF,0xFC,0x00,0x00,0x00,0x03,0xFF,0xF0,
38
-0xFF,0xFC,0x00,0x00,0x00,0x07,0xFF,0xF0,
39
-0xFF,0xFE,0x00,0x00,0x00,0x07,0xFF,0xF0,
40
-0xFF,0xFE,0x00,0x00,0x00,0x0F,0xFF,0xF0,
41
-0xFF,0xFF,0x00,0x00,0x00,0x1F,0xFF,0xF0,
42
-0xFF,0xFF,0x80,0x00,0x00,0x1F,0xFF,0xF0,
43
-0xFF,0xFF,0xC0,0x00,0x00,0x3F,0xFF,0xF0,
44
-0xFF,0xFF,0xE0,0x00,0x00,0x7F,0xFF,0xF0,
45
-0xFF,0xFF,0xF0,0x00,0x01,0xFF,0xFF,0xF0,
46
-0xFF,0xFF,0xFC,0x00,0x03,0xFF,0xFF,0xF0,
47
-0xFF,0xFF,0xFF,0x00,0x1F,0xFF,0xFF,0xF0,
48
-0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,
49
-0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,
50
-0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,
51
-0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,
52
-0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,
53
-0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,
54
-0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,
55
-0x83,0xFF,0xFF,0xFE,0x0F,0xFF,0xFF,0xF0,
56
-0x80,0xFF,0xFF,0xFE,0x03,0xFF,0xFF,0xF0,
57
-0x88,0x7F,0xFF,0xFE,0x23,0xFF,0xFF,0xF0,
58
-0x8C,0x70,0x38,0x0E,0x71,0x81,0xC0,0x70,
59
-0x8C,0x60,0x38,0x0E,0x63,0x80,0xC0,0x30,
60
-0x80,0xE3,0x19,0xC6,0x07,0xF8,0xC7,0x30,
61
-0x80,0xE0,0x19,0xC6,0x03,0x80,0xC7,0x10,
62
-0x8C,0x62,0x79,0xC6,0x63,0x9C,0xC7,0x30,
63
-0x8C,0x63,0xF8,0xC6,0x71,0x18,0xC6,0x30,
64
-0x8E,0x30,0x18,0x0E,0x71,0x80,0xC0,0x30,
65
-0x9E,0x38,0x39,0x1E,0x79,0xC4,0xC4,0xF0,
66
-0xFF,0xFF,0xF9,0xFF,0xFF,0xFF,0xC7,0xF0,
67
-0xFF,0xFF,0xF9,0xFF,0xFF,0xFF,0xC7,0xF0,
68
-0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0
69
-};
1
+// BitMap for splashscreen
2
+// Generated with: http://www.digole.com/tools/PicturetoC_Hex_converter.php
3
+// Please note that using the high-res version takes 402Bytes of PROGMEM. 
4
+//#define START_BMPHIGH
5
+
6
+#ifdef START_BMPHIGH
7
+  #define START_BMPWIDTH      112
8
+  #define START_BMPHEIGHT      38
9
+  #define START_BMPBYTEWIDTH   14
10
+  #define START_BMPBYTES      532 // START_BMPWIDTH * START_BMPHEIGHT / 8
11
+  
12
+  const unsigned char start_bmp[START_BMPBYTES] PROGMEM = {
13
+     0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
14
+    ,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
15
+    ,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xff,0xff
16
+    ,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xff,0xff
17
+    ,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xff,0xff
18
+    ,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff
19
+    ,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xff
20
+    ,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x3f,0xff
21
+    ,0xc0,0x0f,0xc0,0xfc,0x00,0x00,0x00,0x00,0x00,0x78,0x18,0x00,0x1f,0xff
22
+    ,0xc0,0x3f,0xe1,0xff,0x00,0x00,0x00,0x00,0x00,0x78,0x3c,0x00,0x0f,0xff
23
+    ,0xc0,0x7f,0xf3,0xff,0x80,0x00,0x00,0x00,0x00,0x78,0x3c,0x00,0x07,0xff
24
+    ,0xc0,0xff,0xff,0xff,0xc0,0x00,0x00,0x00,0x00,0x78,0x3c,0x00,0x03,0xff
25
+    ,0xc1,0xf8,0x7f,0x87,0xe0,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xff
26
+    ,0xc1,0xf0,0x3f,0x03,0xe0,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0xff
27
+    ,0xc1,0xe0,0x1e,0x01,0xe0,0x1f,0x00,0x03,0xe0,0x78,0x3c,0x03,0xf0,0x7f
28
+    ,0xc1,0xe0,0x1e,0x01,0xe0,0x7f,0xc0,0x0f,0xf8,0x78,0x3c,0x07,0xfc,0x3f
29
+    ,0xc1,0xe0,0x1e,0x01,0xe1,0xff,0xe0,0x1f,0xfc,0x78,0x3c,0x0f,0xfe,0x1f
30
+    ,0xc1,0xe0,0x1e,0x01,0xe3,0xff,0xf0,0x3f,0xfe,0x78,0x3c,0x1f,0xfe,0x0f
31
+    ,0xc1,0xe0,0x1e,0x01,0xe3,0xf3,0xf8,0x3f,0x3e,0x78,0x3c,0x3f,0x3f,0x07
32
+    ,0xc1,0xe0,0x1e,0x01,0xe7,0xe0,0xfc,0x7c,0x1f,0x78,0x3c,0x3e,0x1f,0x07
33
+    ,0xc1,0xe0,0x1e,0x01,0xe7,0xc0,0x7c,0x7c,0x0f,0x78,0x3c,0x3c,0x0f,0x03
34
+    ,0xc1,0xe0,0x1e,0x01,0xe7,0x80,0x7c,0x78,0x0f,0x78,0x3c,0x3c,0x0f,0x03
35
+    ,0xc1,0xe0,0x1e,0x01,0xe7,0x80,0x3c,0x78,0x00,0x78,0x3c,0x3c,0x0f,0x03
36
+    ,0xc1,0xe0,0x1e,0x01,0xe7,0x80,0x3c,0x78,0x00,0x78,0x3c,0x3c,0x0f,0x03
37
+    ,0xc1,0xe0,0x1e,0x01,0xe7,0x80,0x3c,0x78,0x00,0x78,0x3c,0x3c,0x0f,0x03
38
+    ,0xc1,0xe0,0x1e,0x01,0xe7,0xc0,0x3c,0x78,0x00,0x78,0x3c,0x3c,0x0f,0x03
39
+    ,0xc1,0xe0,0x1e,0x01,0xe3,0xe0,0x3c,0x78,0x00,0x7c,0x3c,0x3c,0x0f,0x03
40
+    ,0xc1,0xe0,0x1e,0x01,0xe3,0xff,0x3f,0xf8,0x00,0x7f,0xbc,0x3c,0x0f,0x03
41
+    ,0xc1,0xe0,0x1e,0x01,0xe1,0xff,0x3f,0xf8,0x00,0x3f,0xbf,0xfc,0x0f,0x03
42
+    ,0xc1,0xe0,0x1e,0x01,0xe0,0xff,0x3f,0xf8,0x00,0x1f,0xbf,0xfc,0x0f,0x03
43
+    ,0xc1,0xe0,0x1e,0x01,0xe0,0x7f,0x3f,0xf8,0x00,0x0f,0xbf,0xfc,0x0f,0x03
44
+    ,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07
45
+    ,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06
46
+    ,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e
47
+    ,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c
48
+    ,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78
49
+    ,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0
50
+    ,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x80 };
51
+#else
52
+  #define START_BMPWIDTH 	    56 
53
+  #define START_BMPHEIGHT 	  19
54
+  #define START_BMPBYTEWIDTH  7
55
+  #define START_BMPBYTES      133 // START_BMPWIDTH * START_BMPHEIGHT / 8
56
+
57
+  const unsigned char start_bmp[START_BMPBYTES] PROGMEM = {
58
+     0x1f,0xff,0xff,0xff,0xff,0xff,0xff
59
+    ,0x60,0x00,0x00,0x00,0x00,0x01,0xff
60
+    ,0x40,0x00,0x00,0x00,0x00,0x00,0xff
61
+    ,0x80,0x00,0x00,0x00,0x00,0x00,0x7f
62
+    ,0x83,0xcf,0x00,0x00,0x0c,0x30,0x3f
63
+    ,0x87,0xff,0x80,0x00,0x0c,0x30,0x1f
64
+    ,0x86,0x79,0x80,0x00,0x0c,0x00,0x0f
65
+    ,0x8c,0x30,0xc7,0x83,0x8c,0x30,0xe7
66
+    ,0x8c,0x30,0xcf,0xc7,0xcc,0x31,0xf3
67
+    ,0x8c,0x30,0xdc,0xec,0xec,0x33,0xb9
68
+    ,0x8c,0x30,0xd8,0x6c,0x6c,0x33,0x19
69
+    ,0x8c,0x30,0xd0,0x6c,0x0c,0x33,0x19
70
+    ,0x8c,0x30,0xd8,0x6c,0x0c,0x33,0x19
71
+    ,0x8c,0x30,0xdc,0x6c,0x0e,0x3b,0x19
72
+    ,0x8c,0x30,0xcf,0x7c,0x07,0x9f,0x19
73
+    ,0x8c,0x30,0xc7,0x7c,0x03,0x8f,0x19
74
+    ,0x40,0x00,0x00,0x00,0x00,0x00,0x02
75
+    ,0x60,0x00,0x00,0x00,0x00,0x00,0x06
76
+    ,0x1f,0xff,0xff,0xff,0xff,0xff,0xf8 };
77
+#endif
70 78
 
71 79
 // Here comes a compile-time operation to match the extruder symbols 
72 80
 // on the info screen to the set number of extruders in configuration.h

+ 12
- 9
Marlin/Makefile Ver fichero

@@ -36,11 +36,12 @@
36 36
 # Note that all settings are set with ?=, this means you can override them
37 37
 # from the commandline with "make HARDWARE_MOTHERBOARD=71" for example
38 38
 
39
-# This defined the board you are compiling for (see Configuration.h for the options)
39
+# This defined the board you are compiling for (see boards.h for the options)
40 40
 HARDWARE_MOTHERBOARD ?= 11
41 41
 
42 42
 # Arduino source install directory, and version number
43
-ARDUINO_INSTALL_DIR  ?= /Applications/Arduino.app/Contents/Resources/Java
43
+# On most linuxes this will be /usr/share/arduino
44
+ARDUINO_INSTALL_DIR  ?= /usr/share/arduino
44 45
 ARDUINO_VERSION      ?= 105
45 46
 
46 47
 # You can optionally set a path to the avr-gcc tools. Requires a trailing slash. (ex: /usr/local/avr-gcc/bin)
@@ -48,10 +49,12 @@ AVR_TOOLS_PATH ?=
48 49
 
49 50
 #Programmer configuration
50 51
 UPLOAD_RATE        ?= 115200
51
-AVRDUDE_PROGRAMMER ?= arduino
52
+AVRDUDE_PROGRAMMER ?= wiring
53
+# on most linuxes this will be /dev/ttyACM0 or /dev/ttyACM1 
52 54
 UPLOAD_PORT        ?= /dev/arduino
53 55
 
54
-#Directory used to build files in, contains all the build files, from object files to the final hex file.
56
+#Directory used to build files in, contains all the build files, from object files to the final hex file
57
+#on linux it is best to put an absolute path like /home/username/tmp .
55 58
 BUILD_DIR          ?= applet
56 59
 
57 60
 # This defines whether Liquid_TWI2 support will be built
@@ -221,7 +224,7 @@ TARGET = $(notdir $(CURDIR))
221 224
 VPATH = .
222 225
 VPATH += $(BUILD_DIR)
223 226
 VPATH += $(HARDWARE_SRC)
224
-ifeq ($(HARDWARE_VARIANT), arduino)
227
+ifeq ($(HARDWARE_VARIANT), $(filter $(HARDWARE_VARIANT),arduino Teensy))
225 228
 VPATH += $(ARDUINO_INSTALL_DIR)/libraries/LiquidCrystal
226 229
 VPATH += $(ARDUINO_INSTALL_DIR)/libraries/SPI
227 230
 ifeq ($(LIQUID_TWI2), 1)
@@ -351,15 +354,15 @@ LDFLAGS = -lm
351 354
 
352 355
 # Programming support using avrdude. Settings and variables.
353 356
 AVRDUDE_PORT = $(UPLOAD_PORT)
354
-AVRDUDE_WRITE_FLASH = -U flash:w:$(BUILD_DIR)/$(TARGET).hex:i
357
+AVRDUDE_WRITE_FLASH = -Uflash:w:$(BUILD_DIR)/$(TARGET).hex:i
355 358
 ifeq ($(shell uname -s), Linux)
356 359
 AVRDUDE_CONF = $(ARDUINO_INSTALL_DIR)/hardware/tools/avrdude.conf
357 360
 else
358 361
 AVRDUDE_CONF = $(ARDUINO_INSTALL_DIR)/hardware/tools/avr/etc/avrdude.conf
359 362
 endif
360
-AVRDUDE_FLAGS = -D -C $(AVRDUDE_CONF) \
361
-	-p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) \
362
-	-b $(UPLOAD_RATE)
363
+AVRDUDE_FLAGS = -q -q -D -C$(AVRDUDE_CONF) \
364
+	-p$(MCU) -P$(AVRDUDE_PORT) -c$(AVRDUDE_PROGRAMMER) \
365
+	-b$(UPLOAD_RATE)
363 366
 
364 367
 # Define all object files.
365 368
 OBJ = ${patsubst %.c, $(BUILD_DIR)/%.o, ${SRC}}

+ 10
- 1
Marlin/Marlin.h Ver fichero

@@ -34,7 +34,7 @@
34 34
 
35 35
 // Arduino < 1.0.0 does not define this, so we need to do it ourselves
36 36
 #ifndef analogInputToDigitalPin
37
-# define analogInputToDigitalPin(p) ((p) + A0)
37
+# define analogInputToDigitalPin(p) ((p) + 0xA0)
38 38
 #endif
39 39
 
40 40
 #ifdef AT90USB
@@ -86,6 +86,8 @@ extern const char echomagic[] PROGMEM;
86 86
 
87 87
 #define SERIAL_ECHOPAIR(name,value) (serial_echopair_P(PSTR(name),(value)))
88 88
 
89
+#define SERIAL_EOL SERIAL_ECHOLN("")
90
+
89 91
 void serial_echopair_P(const char *s_P, float v);
90 92
 void serial_echopair_P(const char *s_P, double v);
91 93
 void serial_echopair_P(const char *s_P, unsigned long v);
@@ -170,6 +172,13 @@ void manage_inactivity(bool ignore_stepper_queue=false);
170 172
   #define disable_e2() /* nothing */
171 173
 #endif
172 174
 
175
+#if (EXTRUDERS > 3) && defined(E3_ENABLE_PIN) && (E3_ENABLE_PIN > -1)
176
+  #define enable_e3() WRITE(E3_ENABLE_PIN, E_ENABLE_ON)
177
+  #define disable_e3() WRITE(E3_ENABLE_PIN,!E_ENABLE_ON)
178
+#else
179
+  #define enable_e3()  /* nothing */
180
+  #define disable_e3() /* nothing */
181
+#endif
173 182
 
174 183
 enum AxisEnum {X_AXIS=0, Y_AXIS=1, Z_AXIS=2, E_AXIS=3, X_HEAD=4, Y_HEAD=5};
175 184
 

+ 42
- 76
Marlin/MarlinSerial.cpp Ver fichero

@@ -32,8 +32,7 @@
32 32
   ring_buffer rx_buffer  =  { { 0 }, 0, 0 };
33 33
 #endif
34 34
 
35
-FORCE_INLINE void store_char(unsigned char c)
36
-{
35
+FORCE_INLINE void store_char(unsigned char c) {
37 36
   int i = (unsigned int)(rx_buffer.head + 1) % RX_BUFFER_SIZE;
38 37
 
39 38
   // if we should be storing the received character into the location
@@ -51,8 +50,7 @@ FORCE_INLINE void store_char(unsigned char c)
51 50
 #if defined(M_USARTx_RX_vect)
52 51
   // fixed by Mark Sproul this is on the 644/644p
53 52
   //SIGNAL(SIG_USART_RECV)
54
-  SIGNAL(M_USARTx_RX_vect)
55
-  {
53
+  SIGNAL(M_USARTx_RX_vect) {
56 54
     unsigned char c  =  M_UDRx;
57 55
     store_char(c);
58 56
   }
@@ -60,26 +58,22 @@ FORCE_INLINE void store_char(unsigned char c)
60 58
 
61 59
 // Constructors ////////////////////////////////////////////////////////////////
62 60
 
63
-MarlinSerial::MarlinSerial()
64
-{
65
-
66
-}
61
+MarlinSerial::MarlinSerial() { }
67 62
 
68 63
 // Public Methods //////////////////////////////////////////////////////////////
69 64
 
70
-void MarlinSerial::begin(long baud)
71
-{
65
+void MarlinSerial::begin(long baud) {
72 66
   uint16_t baud_setting;
73 67
   bool useU2X = true;
74 68
 
75
-#if F_CPU == 16000000UL && SERIAL_PORT == 0
76
-  // hard-coded exception for compatibility with the bootloader shipped
77
-  // with the Duemilanove and previous boards and the firmware on the 8U2
78
-  // on the Uno and Mega 2560.
79
-  if (baud == 57600) {
80
-    useU2X = false;
81
-  }
82
-#endif
69
+  #if F_CPU == 16000000UL && SERIAL_PORT == 0
70
+    // hard-coded exception for compatibility with the bootloader shipped
71
+    // with the Duemilanove and previous boards and the firmware on the 8U2
72
+    // on the Uno and Mega 2560.
73
+    if (baud == 57600) {
74
+      useU2X = false;
75
+    }
76
+  #endif
83 77
   
84 78
   if (useU2X) {
85 79
     M_UCSRxA = 1 << M_U2Xx;
@@ -98,17 +92,14 @@ void MarlinSerial::begin(long baud)
98 92
   sbi(M_UCSRxB, M_RXCIEx);
99 93
 }
100 94
 
101
-void MarlinSerial::end()
102
-{
95
+void MarlinSerial::end() {
103 96
   cbi(M_UCSRxB, M_RXENx);
104 97
   cbi(M_UCSRxB, M_TXENx);
105 98
   cbi(M_UCSRxB, M_RXCIEx);  
106 99
 }
107 100
 
108 101
 
109
-
110
-int MarlinSerial::peek(void)
111
-{
102
+int MarlinSerial::peek(void) {
112 103
   if (rx_buffer.head == rx_buffer.tail) {
113 104
     return -1;
114 105
   } else {
@@ -116,20 +107,19 @@ int MarlinSerial::peek(void)
116 107
   }
117 108
 }
118 109
 
119
-int MarlinSerial::read(void)
120
-{
110
+int MarlinSerial::read(void) {
121 111
   // if the head isn't ahead of the tail, we don't have any characters
122 112
   if (rx_buffer.head == rx_buffer.tail) {
123 113
     return -1;
124
-  } else {
114
+  }
115
+  else {
125 116
     unsigned char c = rx_buffer.buffer[rx_buffer.tail];
126 117
     rx_buffer.tail = (unsigned int)(rx_buffer.tail + 1) % RX_BUFFER_SIZE;
127 118
     return c;
128 119
   }
129 120
 }
130 121
 
131
-void MarlinSerial::flush()
132
-{
122
+void MarlinSerial::flush() {
133 123
   // don't reverse this or there may be problems if the RX interrupt
134 124
   // occurs after reading the value of rx_buffer_head but before writing
135 125
   // the value to rx_buffer_tail; the previous value of rx_buffer_head
@@ -143,38 +133,30 @@ void MarlinSerial::flush()
143 133
 }
144 134
 
145 135
 
146
-
147
-
148 136
 /// imports from print.h
149 137
 
150 138
 
151
-
152
-
153
-void MarlinSerial::print(char c, int base)
154
-{
139
+void MarlinSerial::print(char c, int base) {
155 140
   print((long) c, base);
156 141
 }
157 142
 
158
-void MarlinSerial::print(unsigned char b, int base)
159
-{
143
+void MarlinSerial::print(unsigned char b, int base) {
160 144
   print((unsigned long) b, base);
161 145
 }
162 146
 
163
-void MarlinSerial::print(int n, int base)
164
-{
147
+void MarlinSerial::print(int n, int base) {
165 148
   print((long) n, base);
166 149
 }
167 150
 
168
-void MarlinSerial::print(unsigned int n, int base)
169
-{
151
+void MarlinSerial::print(unsigned int n, int base) {
170 152
   print((unsigned long) n, base);
171 153
 }
172 154
 
173
-void MarlinSerial::print(long n, int base)
174
-{
155
+void MarlinSerial::print(long n, int base) {
175 156
   if (base == 0) {
176 157
     write(n);
177
-  } else if (base == 10) {
158
+  }
159
+  else if (base == 10) {
178 160
     if (n < 0) {
179 161
       print('-');
180 162
       n = -n;
@@ -185,81 +167,68 @@ void MarlinSerial::print(long n, int base)
185 167
   }
186 168
 }
187 169
 
188
-void MarlinSerial::print(unsigned long n, int base)
189
-{
170
+void MarlinSerial::print(unsigned long n, int base) {
190 171
   if (base == 0) write(n);
191 172
   else printNumber(n, base);
192 173
 }
193 174
 
194
-void MarlinSerial::print(double n, int digits)
195
-{
175
+void MarlinSerial::print(double n, int digits) {
196 176
   printFloat(n, digits);
197 177
 }
198 178
 
199
-void MarlinSerial::println(void)
200
-{
179
+void MarlinSerial::println(void) {
201 180
   print('\r');
202 181
   print('\n');  
203 182
 }
204 183
 
205
-void MarlinSerial::println(const String &s)
206
-{
184
+void MarlinSerial::println(const String &s) {
207 185
   print(s);
208 186
   println();
209 187
 }
210 188
 
211
-void MarlinSerial::println(const char c[])
212
-{
189
+void MarlinSerial::println(const char c[]) {
213 190
   print(c);
214 191
   println();
215 192
 }
216 193
 
217
-void MarlinSerial::println(char c, int base)
218
-{
194
+void MarlinSerial::println(char c, int base) {
219 195
   print(c, base);
220 196
   println();
221 197
 }
222 198
 
223
-void MarlinSerial::println(unsigned char b, int base)
224
-{
199
+void MarlinSerial::println(unsigned char b, int base) {
225 200
   print(b, base);
226 201
   println();
227 202
 }
228 203
 
229
-void MarlinSerial::println(int n, int base)
230
-{
204
+void MarlinSerial::println(int n, int base) {
231 205
   print(n, base);
232 206
   println();
233 207
 }
234 208
 
235
-void MarlinSerial::println(unsigned int n, int base)
236
-{
209
+void MarlinSerial::println(unsigned int n, int base) {
237 210
   print(n, base);
238 211
   println();
239 212
 }
240 213
 
241
-void MarlinSerial::println(long n, int base)
242
-{
214
+void MarlinSerial::println(long n, int base) {
243 215
   print(n, base);
244 216
   println();
245 217
 }
246 218
 
247
-void MarlinSerial::println(unsigned long n, int base)
248
-{
219
+void MarlinSerial::println(unsigned long n, int base) {
249 220
   print(n, base);
250 221
   println();
251 222
 }
252 223
 
253
-void MarlinSerial::println(double n, int digits)
254
-{
224
+void MarlinSerial::println(double n, int digits) {
255 225
   print(n, digits);
256 226
   println();
257 227
 }
258 228
 
259 229
 // Private Methods /////////////////////////////////////////////////////////////
260 230
 
261
-void MarlinSerial::printNumber(unsigned long n, uint8_t base)
262
-{
231
+void MarlinSerial::printNumber(unsigned long n, uint8_t base) {
263 232
   unsigned char buf[8 * sizeof(long)]; // Assumes 8-bit chars. 
264 233
   unsigned long i = 0;
265 234
 
@@ -279,18 +248,16 @@ void MarlinSerial::printNumber(unsigned long n, uint8_t base)
279 248
       'A' + buf[i - 1] - 10));
280 249
 }
281 250
 
282
-void MarlinSerial::printFloat(double number, uint8_t digits) 
283
-{ 
251
+void MarlinSerial::printFloat(double number, uint8_t digits) {
284 252
   // Handle negative numbers
285
-  if (number < 0.0)
286
-  {
253
+  if (number < 0.0) {
287 254
      print('-');
288 255
      number = -number;
289 256
   }
290 257
 
291 258
   // Round correctly so that print(1.999, 2) prints as "2.00"
292 259
   double rounding = 0.5;
293
-  for (uint8_t i=0; i<digits; ++i)
260
+  for (uint8_t i = 0; i < digits; ++i)
294 261
     rounding /= 10.0;
295 262
   
296 263
   number += rounding;
@@ -305,8 +272,7 @@ void MarlinSerial::printFloat(double number, uint8_t digits)
305 272
     print("."); 
306 273
 
307 274
   // Extract digits from the remainder one at a time
308
-  while (digits-- > 0)
309
-  {
275
+  while (digits-- > 0) {
310 276
     remainder *= 10.0;
311 277
     int toPrint = int(remainder);
312 278
     print(toPrint);

+ 20
- 49
Marlin/MarlinSerial.h Ver fichero

@@ -23,8 +23,8 @@
23 23
 #define MarlinSerial_h
24 24
 #include "Marlin.h"
25 25
 
26
-#if !defined(SERIAL_PORT) 
27
-#define SERIAL_PORT 0
26
+#ifndef SERIAL_PORT
27
+  #define SERIAL_PORT 0
28 28
 #endif
29 29
 
30 30
 // The presence of the UBRRH register is used to detect a UART.
@@ -36,9 +36,9 @@
36 36
 // requires two levels of indirection to expand macro values properly)
37 37
 #define SERIAL_REGNAME(registerbase,number,suffix) SERIAL_REGNAME_INTERNAL(registerbase,number,suffix)
38 38
 #if SERIAL_PORT == 0 && (!defined(UBRR0H) || !defined(UDR0)) // use un-numbered registers if necessary
39
-#define SERIAL_REGNAME_INTERNAL(registerbase,number,suffix) registerbase##suffix
39
+  #define SERIAL_REGNAME_INTERNAL(registerbase,number,suffix) registerbase##suffix
40 40
 #else
41
-#define SERIAL_REGNAME_INTERNAL(registerbase,number,suffix) registerbase##number##suffix
41
+  #define SERIAL_REGNAME_INTERNAL(registerbase,number,suffix) registerbase##number##suffix
42 42
 #endif
43 43
 
44 44
 // Registers used by MarlinSerial class (these are expanded 
@@ -57,7 +57,6 @@
57 57
 #define M_U2Xx SERIAL_REGNAME(U2X,SERIAL_PORT,)
58 58
 
59 59
 
60
-
61 60
 #define DEC 10
62 61
 #define HEX 16
63 62
 #define OCT 8
@@ -73,8 +72,7 @@
73 72
 #define RX_BUFFER_SIZE 128
74 73
 
75 74
 
76
-struct ring_buffer
77
-{
75
+struct ring_buffer {
78 76
   unsigned char buffer[RX_BUFFER_SIZE];
79 77
   int head;
80 78
   int tail;
@@ -84,8 +82,7 @@ struct ring_buffer
84 82
   extern ring_buffer rx_buffer;
85 83
 #endif
86 84
 
87
-class MarlinSerial //: public Stream
88
-{
85
+class MarlinSerial { //: public Stream
89 86
 
90 87
   public:
91 88
     MarlinSerial();
@@ -94,24 +91,20 @@ class MarlinSerial //: public Stream
94 91
     int peek(void);
95 92
     int read(void);
96 93
     void flush(void);
97
-    
98
-    FORCE_INLINE int available(void)
99
-    {
94
+
95
+    FORCE_INLINE int available(void) {
100 96
       return (unsigned int)(RX_BUFFER_SIZE + rx_buffer.head - rx_buffer.tail) % RX_BUFFER_SIZE;
101 97
     }
102
-    
103
-    FORCE_INLINE void write(uint8_t c)
104
-    {
98
+
99
+    FORCE_INLINE void write(uint8_t c) {
105 100
       while (!((M_UCSRxA) & (1 << M_UDREx)))
106 101
         ;
107 102
 
108 103
       M_UDRx = c;
109 104
     }
110
-    
111
-    
112
-    FORCE_INLINE void checkRx(void)
113
-    {
114
-      if((M_UCSRxA & (1<<M_RXCx)) != 0) {
105
+
106
+    FORCE_INLINE void checkRx(void) {
107
+      if ((M_UCSRxA & (1<<M_RXCx)) != 0) {
115 108
         unsigned char c  =  M_UDRx;
116 109
         int i = (unsigned int)(rx_buffer.head + 1) % RX_BUFFER_SIZE;
117 110
 
@@ -125,39 +118,17 @@ class MarlinSerial //: public Stream
125 118
         }
126 119
       }
127 120
     }
128
-    
129
-    
130
-    private:
121
+
122
+  private:
131 123
     void printNumber(unsigned long, uint8_t);
132 124
     void printFloat(double, uint8_t);
133
-    
134
-    
135
-  public:
136
-    
137
-    FORCE_INLINE void write(const char *str)
138
-    {
139
-      while (*str)
140
-        write(*str++);
141
-    }
142 125
 
126
+  public:
127
+    FORCE_INLINE void write(const char *str) { while (*str) write(*str++); }
128
+    FORCE_INLINE void write(const uint8_t *buffer, size_t size) { while (size--) write(*buffer++); }
129
+    FORCE_INLINE void print(const String &s) { for (int i = 0; i < (int)s.length(); i++) write(s[i]); }
130
+    FORCE_INLINE void print(const char *str) { write(str); }
143 131
 
144
-    FORCE_INLINE void write(const uint8_t *buffer, size_t size)
145
-    {
146
-      while (size--)
147
-        write(*buffer++);
148
-    }
149
-
150
-    FORCE_INLINE void print(const String &s)
151
-    {
152
-      for (int i = 0; i < (int)s.length(); i++) {
153
-        write(s[i]);
154
-      }
155
-    }
156
-    
157
-    FORCE_INLINE void print(const char *str)
158
-    {
159
-      write(str);
160
-    }
161 132
     void print(char, int = BYTE);
162 133
     void print(unsigned char, int = BYTE);
163 134
     void print(int, int = DEC);

+ 256
- 221
Marlin/Marlin_main.cpp Ver fichero

@@ -49,20 +49,18 @@
49 49
 #include "math.h"
50 50
 
51 51
 #ifdef BLINKM
52
-#include "BlinkM.h"
53
-#include "Wire.h"
52
+  #include "BlinkM.h"
53
+  #include "Wire.h"
54 54
 #endif
55 55
 
56 56
 #if NUM_SERVOS > 0
57
-#include "Servo.h"
57
+  #include "Servo.h"
58 58
 #endif
59 59
 
60 60
 #if defined(DIGIPOTSS_PIN) && DIGIPOTSS_PIN > -1
61
-#include <SPI.h>
61
+  #include <SPI.h>
62 62
 #endif
63 63
 
64
-#define VERSION_STRING  "1.0.0"
65
-
66 64
 // look here for descriptions of G-codes: http://linuxcnc.org/handbook/gcode/g-code.html
67 65
 // http://objects.reprap.org/wiki/Mendel_User_Manual:_RepRapGCodes
68 66
 
@@ -140,17 +138,17 @@
140 138
 // M203 - Set maximum feedrate that your machine can sustain (M203 X200 Y200 Z300 E10000) in mm/sec
141 139
 // M204 - Set default acceleration: S normal moves T filament only moves (M204 S3000 T7000) in mm/sec^2  also sets minimum segment time in ms (B20000) to prevent buffer under-runs and M20 minimum feedrate
142 140
 // M205 -  advanced settings:  minimum travel speed S=while printing T=travel only,  B=minimum segment time X= maximum xy jerk, Z=maximum Z jerk, E=maximum E jerk
143
-// M206 - set additional homing offset
144
-// M207 - set retract length S[positive mm] F[feedrate mm/min] Z[additional zlift/hop], stays in mm regardless of M200 setting
145
-// M208 - set recover=unretract length S[positive mm surplus to the M207 S*] F[feedrate mm/sec]
141
+// M206 - Set additional homing offset
142
+// M207 - Set retract length S[positive mm] F[feedrate mm/min] Z[additional zlift/hop], stays in mm regardless of M200 setting
143
+// M208 - Set recover=unretract length S[positive mm surplus to the M207 S*] F[feedrate mm/sec]
146 144
 // M209 - S<1=true/0=false> enable automatic retract detect if the slicer did not support G10/11: every normal extrude-only move will be classified as retract depending on the direction.
147
-// M218 - set hotend offset (in mm): T<extruder_number> X<offset_on_X> Y<offset_on_Y>
145
+// M218 - Set hotend offset (in mm): T<extruder_number> X<offset_on_X> Y<offset_on_Y>
148 146
 // M220 S<factor in percent>- set speed factor override percentage
149 147
 // M221 S<factor in percent>- set extrude factor override percentage
150 148
 // M226 P<pin number> S<pin state>- Wait until the specified pin reaches the state required
151 149
 // M240 - Trigger a camera to take a photograph
152 150
 // M250 - Set LCD contrast C<contrast value> (value 0..63)
153
-// M280 - set servo position absolute. P: servo index, S: angle or microseconds
151
+// M280 - Set servo position absolute. P: servo index, S: angle or microseconds
154 152
 // M300 - Play beep sound S<frequency Hz> P<duration ms>
155 153
 // M301 - Set PID parameters P I and D
156 154
 // M302 - Allow cold extrudes, or set the minimum extrude S<temperature>.
@@ -163,14 +161,14 @@
163 161
 // M405 - Turn on Filament Sensor extrusion control.  Optional D<delay in cm> to set delay in centimeters between sensor and extruder 
164 162
 // M406 - Turn off Filament Sensor extrusion control 
165 163
 // M407 - Displays measured filament diameter 
166
-// M500 - stores parameters in EEPROM
167
-// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).
168
-// M502 - reverts to the default "factory settings".  You still need to store them in EEPROM afterwards if you want to.
169
-// M503 - print the current settings (from memory not from EEPROM)
164
+// M500 - Store parameters in EEPROM
165
+// M501 - Read parameters from EEPROM (if you need reset them after you changed them temporarily).
166
+// M502 - Revert to the default "factory settings".  You still need to store them in EEPROM afterwards if you want to.
167
+// M503 - Print the current settings (from memory not from EEPROM). Use S0 to leave off headings.
170 168
 // M540 - Use S[0|1] to enable or disable the stop SD card print on endstop hit (requires ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED)
171 169
 // M600 - Pause for filament change X[pos] Y[pos] Z[relative lift] E[initial retract] L[later retract distance for removal]
172
-// M665 - set delta configurations
173
-// M666 - set delta endstop adjustment
170
+// M665 - Set delta configurations
171
+// M666 - Set delta endstop adjustment
174 172
 // M605 - Set dual x-carriage movement mode: S<mode> [ X<duplication x-offset> R<duplication temp offset> ]
175 173
 // M907 - Set digital trimpot motor current using axis codes.
176 174
 // M908 - Control digital trimpot directly.
@@ -189,29 +187,23 @@
189 187
 // M928 - Start SD logging (M928 filename.g) - ended by M29
190 188
 // M999 - Restart after being stopped by error
191 189
 
192
-//Stepper Movement Variables
193
-
194
-//===========================================================================
195
-//=============================imported variables============================
196
-//===========================================================================
197
-
198
-
199
-//===========================================================================
200
-//=============================public variables=============================
201
-//===========================================================================
202 190
 #ifdef SDSUPPORT
203
-CardReader card;
191
+  CardReader card;
204 192
 #endif
193
+
205 194
 float homing_feedrate[] = HOMING_FEEDRATE;
206 195
 bool axis_relative_modes[] = AXIS_RELATIVE_MODES;
207
-int feedmultiply=100; //100->1 200->2
196
+int feedmultiply = 100; //100->1 200->2
208 197
 int saved_feedmultiply;
209
-int extrudemultiply=100; //100->1 200->2
210
-int extruder_multiply[EXTRUDERS] = {100
198
+int extrudemultiply = 100; //100->1 200->2
199
+int extruder_multiply[EXTRUDERS] = { 100
211 200
   #if EXTRUDERS > 1
212 201
     , 100
213 202
     #if EXTRUDERS > 2
214 203
       , 100
204
+	    #if EXTRUDERS > 3
205
+      	, 100
206
+	    #endif
215 207
     #endif
216 208
   #endif
217 209
 };
@@ -221,6 +213,9 @@ float filament_size[EXTRUDERS] = { DEFAULT_NOMINAL_FILAMENT_DIA
221 213
       , DEFAULT_NOMINAL_FILAMENT_DIA
222 214
     #if EXTRUDERS > 2
223 215
        , DEFAULT_NOMINAL_FILAMENT_DIA
216
+      #if EXTRUDERS > 3
217
+        , DEFAULT_NOMINAL_FILAMENT_DIA
218
+      #endif
224 219
     #endif
225 220
   #endif
226 221
 };
@@ -229,18 +224,21 @@ float volumetric_multiplier[EXTRUDERS] = {1.0
229 224
     , 1.0
230 225
     #if EXTRUDERS > 2
231 226
       , 1.0
227
+      #if EXTRUDERS > 3
228
+        , 1.0
229
+      #endif
232 230
     #endif
233 231
   #endif
234 232
 };
235 233
 float current_position[NUM_AXIS] = { 0.0, 0.0, 0.0, 0.0 };
236
-float add_homing[3]={0,0,0};
234
+float add_homing[3] = { 0, 0, 0 };
237 235
 #ifdef DELTA
238
-float endstop_adj[3]={0,0,0};
236
+  float endstop_adj[3] = { 0, 0, 0 };
239 237
 #endif
240 238
 
241 239
 float min_pos[3] = { X_MIN_POS, Y_MIN_POS, Z_MIN_POS };
242 240
 float max_pos[3] = { X_MAX_POS, Y_MAX_POS, Z_MAX_POS };
243
-bool axis_known_position[3] = {false, false, false};
241
+bool axis_known_position[3] = { false, false, false };
244 242
 float zprobe_zoffset;
245 243
 
246 244
 // Extruder offset
@@ -251,39 +249,57 @@ float zprobe_zoffset;
251 249
   #define NUM_EXTRUDER_OFFSETS 3 // supports offsets in XYZ plane
252 250
 #endif
253 251
 float extruder_offset[NUM_EXTRUDER_OFFSETS][EXTRUDERS] = {
254
-#if defined(EXTRUDER_OFFSET_X) && defined(EXTRUDER_OFFSET_Y)
255
-  EXTRUDER_OFFSET_X, EXTRUDER_OFFSET_Y
256
-#endif
252
+  #if defined(EXTRUDER_OFFSET_X)
253
+    EXTRUDER_OFFSET_X
254
+  #else
255
+    0
256
+  #endif
257
+  ,
258
+  #if defined(EXTRUDER_OFFSET_Y)
259
+    EXTRUDER_OFFSET_Y
260
+  #else
261
+    0
262
+  #endif
257 263
 };
258 264
 #endif
265
+
259 266
 uint8_t active_extruder = 0;
260
-int fanSpeed=0;
267
+int fanSpeed = 0;
268
+
261 269
 #ifdef SERVO_ENDSTOPS
262 270
   int servo_endstops[] = SERVO_ENDSTOPS;
263 271
   int servo_endstop_angles[] = SERVO_ENDSTOP_ANGLES;
264 272
 #endif
273
+
265 274
 #ifdef BARICUDA
266
-int ValvePressure=0;
267
-int EtoPPressure=0;
275
+  int ValvePressure = 0;
276
+  int EtoPPressure = 0;
268 277
 #endif
269 278
 
270 279
 #ifdef FWRETRACT
271
-  bool autoretract_enabled=false;
272
-  bool retracted[EXTRUDERS]={false
280
+
281
+  bool autoretract_enabled = false;
282
+  bool retracted[EXTRUDERS] = { false
273 283
     #if EXTRUDERS > 1
274
-    , false
275
-     #if EXTRUDERS > 2
276 284
       , false
277
-     #endif
278
-  #endif
285
+      #if EXTRUDERS > 2
286
+        , false
287
+        #if EXTRUDERS > 3
288
+       	  , false
289
+      	#endif
290
+      #endif
291
+    #endif
279 292
   };
280
-  bool retracted_swap[EXTRUDERS]={false
293
+  bool retracted_swap[EXTRUDERS] = { false
281 294
     #if EXTRUDERS > 1
282
-    , false
283
-     #if EXTRUDERS > 2
284 295
       , false
285
-     #endif
286
-  #endif
296
+      #if EXTRUDERS > 2
297
+        , false
298
+        #if EXTRUDERS > 3
299
+       	  , false
300
+      	#endif
301
+      #endif
302
+    #endif
287 303
   };
288 304
 
289 305
   float retract_length = RETRACT_LENGTH;
@@ -293,38 +309,41 @@ int EtoPPressure=0;
293 309
   float retract_recover_length = RETRACT_RECOVER_LENGTH;
294 310
   float retract_recover_length_swap = RETRACT_RECOVER_LENGTH_SWAP;
295 311
   float retract_recover_feedrate = RETRACT_RECOVER_FEEDRATE;
296
-#endif
312
+
313
+#endif // FWRETRACT
297 314
 
298 315
 #ifdef ULTIPANEL
299
-  #ifdef PS_DEFAULT_OFF
300
-    bool powersupply = false;
301
-  #else
302
-	  bool powersupply = true;
303
-  #endif
316
+  bool powersupply = 
317
+    #ifdef PS_DEFAULT_OFF
318
+      false
319
+    #else
320
+  	  true
321
+    #endif
322
+  ;
304 323
 #endif
305 324
 
306 325
 #ifdef DELTA
307
-  float delta[3] = {0.0, 0.0, 0.0};
326
+  float delta[3] = { 0, 0, 0 };
308 327
   #define SIN_60 0.8660254037844386
309 328
   #define COS_60 0.5
310 329
   // these are the default values, can be overriden with M665
311
-  float delta_radius= DELTA_RADIUS;
312
-  float delta_tower1_x= -SIN_60*delta_radius; // front left tower
313
-  float delta_tower1_y= -COS_60*delta_radius;	   
314
-  float delta_tower2_x=  SIN_60*delta_radius; // front right tower
315
-  float delta_tower2_y= -COS_60*delta_radius;	   
316
-  float delta_tower3_x= 0.0;                  // back middle tower
317
-  float delta_tower3_y= delta_radius;
318
-  float delta_diagonal_rod= DELTA_DIAGONAL_ROD;
319
-  float delta_diagonal_rod_2= sq(delta_diagonal_rod);
320
-  float delta_segments_per_second= DELTA_SEGMENTS_PER_SECOND;
330
+  float delta_radius = DELTA_RADIUS;
331
+  float delta_tower1_x = -SIN_60 * delta_radius; // front left tower
332
+  float delta_tower1_y = -COS_60 * delta_radius;	   
333
+  float delta_tower2_x =  SIN_60 * delta_radius; // front right tower
334
+  float delta_tower2_y = -COS_60 * delta_radius;	   
335
+  float delta_tower3_x = 0;                      // back middle tower
336
+  float delta_tower3_y = delta_radius;
337
+  float delta_diagonal_rod = DELTA_DIAGONAL_ROD;
338
+  float delta_diagonal_rod_2 = sq(delta_diagonal_rod);
339
+  float delta_segments_per_second = DELTA_SEGMENTS_PER_SECOND;
321 340
 #endif
322 341
 
323
-#ifdef SCARA                              // Build size scaling
324
-float axis_scaling[3]={1,1,1};  // Build size scaling, default to 1
342
+#ifdef SCARA
343
+  float axis_scaling[3] = { 1, 1, 1 };    // Build size scaling, default to 1
325 344
 #endif				
326 345
 
327
-bool cancel_heatup = false ;
346
+bool cancel_heatup = false;
328 347
 
329 348
 #ifdef FILAMENT_SENSOR
330 349
   //Variables for Filament Sensor input 
@@ -341,17 +360,14 @@ bool cancel_heatup = false ;
341 360
 const char errormagic[] PROGMEM = "Error:";
342 361
 const char echomagic[] PROGMEM = "echo:";
343 362
 
344
-//===========================================================================
345
-//=============================Private Variables=============================
346
-//===========================================================================
347 363
 const char axis_codes[NUM_AXIS] = {'X', 'Y', 'Z', 'E'};
348
-static float destination[NUM_AXIS] = {  0.0, 0.0, 0.0, 0.0};
364
+static float destination[NUM_AXIS] = { 0, 0, 0, 0 };
349 365
 
350 366
 #ifndef DELTA
351
-static float delta[3] = {0.0, 0.0, 0.0};
367
+  static float delta[3] = { 0, 0, 0 };
352 368
 #endif
353 369
 
354
-static float offset[3] = {0.0, 0.0, 0.0};
370
+static float offset[3] = { 0, 0, 0 };
355 371
 static bool home_all_axis = true;
356 372
 static float feedrate = 1500.0, next_feedrate, saved_feedrate;
357 373
 static long gcode_N, gcode_LastN, Stopped_gcode_LastN = 0;
@@ -363,30 +379,26 @@ static bool fromsd[BUFSIZE];
363 379
 static int bufindr = 0;
364 380
 static int bufindw = 0;
365 381
 static int buflen = 0;
366
-//static int i = 0;
382
+
367 383
 static char serial_char;
368 384
 static int serial_count = 0;
369 385
 static boolean comment_mode = false;
370
-static char *strchr_pointer; // just a pointer to find chars in the command string like X, Y, Z, E, etc
386
+static char *strchr_pointer; ///< A pointer to find chars in the command string (X, Y, Z, E, etc.)
371 387
 
372
-const int sensitive_pins[] = SENSITIVE_PINS; // Sensitive pin list for M42
388
+const int sensitive_pins[] = SENSITIVE_PINS; ///< Sensitive pin list for M42
373 389
 
374
-//static float tt = 0;
375
-//static float bt = 0;
376
-
377
-//Inactivity shutdown variables
390
+// Inactivity shutdown
378 391
 static unsigned long previous_millis_cmd = 0;
379
-static unsigned long previous_millis_ok = 0;
380 392
 static unsigned long max_inactive_time = 0;
381 393
 static unsigned long stepper_inactive_time = DEFAULT_STEPPER_DEACTIVE_TIME*1000l;
382 394
 
383
-unsigned long starttime=0;
384
-unsigned long stoptime=0;
395
+unsigned long starttime = 0; ///< Print job start time
396
+unsigned long stoptime = 0;  ///< Print job stop time
385 397
 
386 398
 static uint8_t tmp_extruder;
387 399
 
388 400
 
389
-bool Stopped=false;
401
+bool Stopped = false;
390 402
 
391 403
 #if NUM_SERVOS > 0
392 404
   Servo servos[NUM_SERVOS];
@@ -395,10 +407,9 @@ bool Stopped=false;
395 407
 bool CooldownNoWait = true;
396 408
 bool target_direction;
397 409
 
398
-//Insert variables if CHDK is defined
399 410
 #ifdef CHDK
400
-unsigned long chdkHigh = 0;
401
-boolean chdkActive = false;
411
+  unsigned long chdkHigh = 0;
412
+  boolean chdkActive = false;
402 413
 #endif
403 414
 
404 415
 //===========================================================================
@@ -573,7 +584,7 @@ void setup()
573 584
   MCUSR=0;
574 585
 
575 586
   SERIAL_ECHOPGM(MSG_MARLIN);
576
-  SERIAL_ECHOLNPGM(VERSION_STRING);
587
+  SERIAL_ECHOLNPGM(STRING_VERSION);
577 588
   #ifdef STRING_VERSION_CONFIG_H
578 589
     #ifdef STRING_CONFIG_H_AUTHOR
579 590
       SERIAL_ECHO_START;
@@ -583,8 +594,8 @@ void setup()
583 594
       SERIAL_ECHOLNPGM(STRING_CONFIG_H_AUTHOR);
584 595
       SERIAL_ECHOPGM("Compiled: ");
585 596
       SERIAL_ECHOLNPGM(__DATE__);
586
-    #endif
587
-  #endif
597
+    #endif // STRING_CONFIG_H_AUTHOR
598
+  #endif // STRING_VERSION_CONFIG_H
588 599
   SERIAL_ECHO_START;
589 600
   SERIAL_ECHOPGM(MSG_FREE_MEMORY);
590 601
   SERIAL_ECHO(freeMemory());
@@ -646,7 +657,6 @@ void loop()
646 657
           else
647 658
           {
648 659
             SERIAL_PROTOCOLLNPGM(MSG_OK);
649
-						previous_millis_ok = millis();
650 660
           }
651 661
         }
652 662
         else
@@ -1152,18 +1162,20 @@ static void retract_z_probe() {
1152 1162
 }
1153 1163
 
1154 1164
 /// Probe bed height at position (x,y), returns the measured z value
1155
-static float probe_pt(float x, float y, float z_before) {
1165
+static float probe_pt(float x, float y, float z_before, int retract_action=0) {
1156 1166
   // move to right place
1157 1167
   do_blocking_move_to(current_position[X_AXIS], current_position[Y_AXIS], z_before);
1158 1168
   do_blocking_move_to(x - X_PROBE_OFFSET_FROM_EXTRUDER, y - Y_PROBE_OFFSET_FROM_EXTRUDER, current_position[Z_AXIS]);
1159 1169
 
1160 1170
 #ifndef Z_PROBE_SLED
1161
-  engage_z_probe();   // Engage Z Servo endstop if available
1171
+   if ((retract_action==0) || (retract_action==1)) 
1172
+     engage_z_probe();   // Engage Z Servo endstop if available
1162 1173
 #endif // Z_PROBE_SLED
1163 1174
   run_z_probe();
1164 1175
   float measured_z = current_position[Z_AXIS];
1165 1176
 #ifndef Z_PROBE_SLED
1166
-  retract_z_probe();
1177
+  if ((retract_action==0) || (retract_action==3)) 
1178
+     retract_z_probe();
1167 1179
 #endif // Z_PROBE_SLED
1168 1180
 
1169 1181
   SERIAL_PROTOCOLPGM(MSG_BED);
@@ -1283,28 +1295,32 @@ void refresh_cmd_timeout(void)
1283 1295
       feedrate=retract_feedrate*60;
1284 1296
       retracted[active_extruder]=true;
1285 1297
       prepare_move();
1286
-      current_position[Z_AXIS]-=retract_zlift;
1298
+      if(retract_zlift > 0.01) {
1299
+         current_position[Z_AXIS]-=retract_zlift;
1287 1300
 #ifdef DELTA
1288
-      calculate_delta(current_position); // change cartesian kinematic to  delta kinematic;
1289
-      plan_set_position(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], current_position[E_AXIS]);
1301
+         calculate_delta(current_position); // change cartesian kinematic to  delta kinematic;
1302
+         plan_set_position(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], current_position[E_AXIS]);
1290 1303
 #else
1291
-      plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
1304
+         plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
1292 1305
 #endif
1293
-      prepare_move();
1306
+         prepare_move();
1307
+      }
1294 1308
       feedrate = oldFeedrate;
1295 1309
     } else if(!retracting && retracted[active_extruder]) {
1296 1310
       destination[X_AXIS]=current_position[X_AXIS];
1297 1311
       destination[Y_AXIS]=current_position[Y_AXIS];
1298 1312
       destination[Z_AXIS]=current_position[Z_AXIS];
1299 1313
       destination[E_AXIS]=current_position[E_AXIS];
1300
-      current_position[Z_AXIS]+=retract_zlift;
1314
+      if(retract_zlift > 0.01) {
1315
+         current_position[Z_AXIS]+=retract_zlift;
1301 1316
 #ifdef DELTA
1302
-      calculate_delta(current_position); // change cartesian kinematic  to  delta kinematic;
1303
-      plan_set_position(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], current_position[E_AXIS]);
1317
+         calculate_delta(current_position); // change cartesian kinematic  to  delta kinematic;
1318
+         plan_set_position(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], current_position[E_AXIS]);
1304 1319
 #else
1305
-      plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
1320
+         plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
1306 1321
 #endif
1307
-      //prepare_move();
1322
+         //prepare_move();
1323
+      }
1308 1324
       if (swapretract) {
1309 1325
         current_position[E_AXIS]-=(retract_length_swap+retract_recover_length_swap)/volumetric_multiplier[active_extruder]; 
1310 1326
       } else {
@@ -1748,7 +1764,22 @@ void process_commands()
1748 1764
                   z_before = current_position[Z_AXIS] + Z_RAISE_BETWEEN_PROBINGS;
1749 1765
                 }
1750 1766
 
1751
-                float measured_z = probe_pt(xProbe, yProbe, z_before);
1767
+                float measured_z;
1768
+                //Enhanced G29 - Do not retract servo between probes
1769
+                if (code_seen('E') || code_seen('e') )
1770
+                   {
1771
+                   if ((yProbe==FRONT_PROBE_BED_POSITION) && (xCount==0))
1772
+                       {
1773
+                        measured_z = probe_pt(xProbe, yProbe, z_before,1);
1774
+                       } else if ((yProbe==FRONT_PROBE_BED_POSITION + (yGridSpacing * (AUTO_BED_LEVELING_GRID_POINTS-1))) && (xCount == AUTO_BED_LEVELING_GRID_POINTS-1))
1775
+                         {
1776
+                         measured_z = probe_pt(xProbe, yProbe, z_before,3);
1777
+                         } else {
1778
+                           measured_z = probe_pt(xProbe, yProbe, z_before,2);
1779
+                         }
1780
+                    } else {
1781
+                    measured_z = probe_pt(xProbe, yProbe, z_before);
1782
+                    }
1752 1783
 
1753 1784
                 eqnBVector[probePointCounter] = measured_z;
1754 1785
 
@@ -1779,15 +1810,30 @@ void process_commands()
1779 1810
 #else // AUTO_BED_LEVELING_GRID not defined
1780 1811
 
1781 1812
             // Probe at 3 arbitrary points
1782
-            // probe 1
1783
-            float z_at_pt_1 = probe_pt(ABL_PROBE_PT_1_X, ABL_PROBE_PT_1_Y, Z_RAISE_BEFORE_PROBING);
1784
-
1785
-            // probe 2
1786
-            float z_at_pt_2 = probe_pt(ABL_PROBE_PT_2_X, ABL_PROBE_PT_2_Y, current_position[Z_AXIS] + Z_RAISE_BETWEEN_PROBINGS);
1787
-
1788
-            // probe 3
1789
-            float z_at_pt_3 = probe_pt(ABL_PROBE_PT_3_X, ABL_PROBE_PT_3_Y, current_position[Z_AXIS] + Z_RAISE_BETWEEN_PROBINGS);
1790
-
1813
+            // Enhanced G29
1814
+            
1815
+            float z_at_pt_1,z_at_pt_2,z_at_pt_3;
1816
+            
1817
+            if (code_seen('E') || code_seen('e') )
1818
+               {
1819
+               // probe 1               
1820
+                z_at_pt_1 = probe_pt(ABL_PROBE_PT_1_X, ABL_PROBE_PT_1_Y, Z_RAISE_BEFORE_PROBING,1);
1821
+               // probe 2
1822
+                z_at_pt_2 = probe_pt(ABL_PROBE_PT_2_X, ABL_PROBE_PT_2_Y, current_position[Z_AXIS] + Z_RAISE_BETWEEN_PROBINGS,2);
1823
+               // probe 3
1824
+                z_at_pt_3 = probe_pt(ABL_PROBE_PT_3_X, ABL_PROBE_PT_3_Y, current_position[Z_AXIS] + Z_RAISE_BETWEEN_PROBINGS,3); 
1825
+               }
1826
+               else 
1827
+               {
1828
+	        // probe 1
1829
+	        float z_at_pt_1 = probe_pt(ABL_PROBE_PT_1_X, ABL_PROBE_PT_1_Y, Z_RAISE_BEFORE_PROBING);
1830
+
1831
+                // probe 2
1832
+                float z_at_pt_2 = probe_pt(ABL_PROBE_PT_2_X, ABL_PROBE_PT_2_Y, current_position[Z_AXIS] + Z_RAISE_BETWEEN_PROBINGS);
1833
+
1834
+                // probe 3
1835
+                float z_at_pt_3 = probe_pt(ABL_PROBE_PT_3_X, ABL_PROBE_PT_3_Y, current_position[Z_AXIS] + Z_RAISE_BETWEEN_PROBINGS);
1836
+               }
1791 1837
             clean_up_after_endstop_move();
1792 1838
 
1793 1839
             set_bed_level_equation_3pts(z_at_pt_1, z_at_pt_2, z_at_pt_3);
@@ -2847,29 +2893,22 @@ Sigma_Exit:
2847 2893
 
2848 2894
         float area = .0;
2849 2895
         if(code_seen('D')) {
2850
-		  float diameter = (float)code_value();
2851
-		  if (diameter == 0.0) {
2852
-			// setting any extruder filament size disables volumetric on the assumption that
2853
-			// slicers either generate in extruder values as cubic mm or as as filament feeds
2854
-			// for all extruders
2855
-		    volumetric_enabled = false;
2856
-		  } else {
2857
-            filament_size[tmp_extruder] = (float)code_value();
2858
-			// make sure all extruders have some sane value for the filament size
2859
-			filament_size[0] = (filament_size[0] == 0.0 ? DEFAULT_NOMINAL_FILAMENT_DIA : filament_size[0]);
2860
-            #if EXTRUDERS > 1
2861
-			filament_size[1] = (filament_size[1] == 0.0 ? DEFAULT_NOMINAL_FILAMENT_DIA : filament_size[1]);
2862
-            #if EXTRUDERS > 2
2863
-			filament_size[2] = (filament_size[2] == 0.0 ? DEFAULT_NOMINAL_FILAMENT_DIA : filament_size[2]);
2864
-            #endif
2865
-            #endif
2866
-			volumetric_enabled = true;
2867
-		  }
2896
+          float diameter = code_value();
2897
+          // setting any extruder filament size disables volumetric on the assumption that
2898
+          // slicers either generate in extruder values as cubic mm or as as filament feeds
2899
+          // for all extruders
2900
+          volumetric_enabled = (diameter != 0.0);
2901
+          if (volumetric_enabled) {
2902
+            filament_size[tmp_extruder] = diameter;
2903
+            // make sure all extruders have some sane value for the filament size
2904
+            for (int i=0; i<EXTRUDERS; i++)
2905
+              if (! filament_size[i]) filament_size[i] = DEFAULT_NOMINAL_FILAMENT_DIA;
2906
+          }
2868 2907
         } else {
2869 2908
           //reserved for setting filament diameter via UFID or filament measuring device
2870 2909
           break;
2871 2910
         }
2872
-		calculate_volumetric_multipliers();
2911
+        calculate_volumetric_multipliers();
2873 2912
       }
2874 2913
       break;
2875 2914
     case 201: // M201
@@ -2982,27 +3021,11 @@ Sigma_Exit:
2982 3021
         int t= code_value() ;
2983 3022
         switch(t)
2984 3023
         {
2985
-          case 0: 
2986
-          {
2987
-            autoretract_enabled=false;
2988
-            retracted[0]=false;
2989
-            #if EXTRUDERS > 1
2990
-              retracted[1]=false;
2991
-            #endif
2992
-            #if EXTRUDERS > 2
2993
-              retracted[2]=false;
2994
-            #endif
2995
-          }break;
2996
-          case 1: 
3024
+          case 0:
3025
+          case 1:
2997 3026
           {
2998
-            autoretract_enabled=true;
2999
-            retracted[0]=false;
3000
-            #if EXTRUDERS > 1
3001
-              retracted[1]=false;
3002
-            #endif
3003
-            #if EXTRUDERS > 2
3004
-              retracted[2]=false;
3005
-            #endif
3027
+            autoretract_enabled = (t == 1);
3028
+            for (int i=0; i<EXTRUDERS; i++) retracted[i] = false;
3006 3029
           }break;
3007 3030
           default:
3008 3031
             SERIAL_ECHO_START;
@@ -3157,13 +3180,12 @@ Sigma_Exit:
3157 3180
           }
3158 3181
         }
3159 3182
         else if (servo_index >= 0) {
3160
-					SERIAL_PROTOCOL(MSG_OK);
3183
+          SERIAL_PROTOCOL(MSG_OK);
3161 3184
           SERIAL_PROTOCOL(" Servo ");
3162 3185
           SERIAL_PROTOCOL(servo_index);
3163 3186
           SERIAL_PROTOCOL(": ");
3164 3187
           SERIAL_PROTOCOL(servos[servo_index].read());
3165 3188
           SERIAL_PROTOCOLLN("");
3166
-					previous_millis_ok = millis();
3167 3189
         }
3168 3190
       }
3169 3191
       break;
@@ -3195,30 +3217,52 @@ Sigma_Exit:
3195 3217
     #endif // M300
3196 3218
 
3197 3219
     #ifdef PIDTEMP
3198
-    case 301: // M301
3199
-      {
3200
-        if(code_seen('P')) Kp = code_value();
3201
-        if(code_seen('I')) Ki = scalePID_i(code_value());
3202
-        if(code_seen('D')) Kd = scalePID_d(code_value());
3220
+	case 301: // M301
3221
+	{
3203 3222
 
3204
-        #ifdef PID_ADD_EXTRUSION_RATE
3205
-        if(code_seen('C')) Kc = code_value();
3206
-        #endif
3223
+		// multi-extruder PID patch: M301 updates or prints a single extruder's PID values
3224
+		// default behaviour (omitting E parameter) is to update for extruder 0 only
3225
+		int e = 0; // extruder being updated
3226
+		if (code_seen('E'))
3227
+		{
3228
+			e = (int)code_value();
3229
+		}
3230
+		if (e < EXTRUDERS) // catch bad input value
3231
+		{
3232
+
3233
+			if (code_seen('P')) PID_PARAM(Kp,e) = code_value();
3234
+			if (code_seen('I')) PID_PARAM(Ki,e) = scalePID_i(code_value());
3235
+			if (code_seen('D')) PID_PARAM(Kd,e) = scalePID_d(code_value());
3236
+			#ifdef PID_ADD_EXTRUSION_RATE
3237
+			if (code_seen('C')) PID_PARAM(Kc,e) = code_value();
3238
+			#endif			
3239
+
3240
+			updatePID();
3241
+			SERIAL_PROTOCOL(MSG_OK);
3242
+            #ifdef PID_PARAMS_PER_EXTRUDER
3243
+			  SERIAL_PROTOCOL(" e:"); // specify extruder in serial output
3244
+			  SERIAL_PROTOCOL(e);
3245
+            #endif // PID_PARAMS_PER_EXTRUDER
3246
+			SERIAL_PROTOCOL(" p:");
3247
+			SERIAL_PROTOCOL(PID_PARAM(Kp,e));
3248
+			SERIAL_PROTOCOL(" i:");
3249
+			SERIAL_PROTOCOL(unscalePID_i(PID_PARAM(Ki,e)));
3250
+			SERIAL_PROTOCOL(" d:");
3251
+			SERIAL_PROTOCOL(unscalePID_d(PID_PARAM(Kd,e)));
3252
+			#ifdef PID_ADD_EXTRUSION_RATE
3253
+			SERIAL_PROTOCOL(" c:");
3254
+			//Kc does not have scaling applied above, or in resetting defaults
3255
+			SERIAL_PROTOCOL(PID_PARAM(Kc,e));
3256
+			#endif
3257
+			SERIAL_PROTOCOLLN("");
3258
+		
3259
+		}
3260
+		else
3261
+		{
3262
+			SERIAL_ECHO_START;
3263
+			SERIAL_ECHOLN(MSG_INVALID_EXTRUDER);
3264
+		}
3207 3265
 
3208
-        updatePID();
3209
-        SERIAL_PROTOCOL(MSG_OK);
3210
-        SERIAL_PROTOCOL(" p:");
3211
-        SERIAL_PROTOCOL(Kp);
3212
-        SERIAL_PROTOCOL(" i:");
3213
-        SERIAL_PROTOCOL(unscalePID_i(Ki));
3214
-        SERIAL_PROTOCOL(" d:");
3215
-        SERIAL_PROTOCOL(unscalePID_d(Kd));
3216
-        #ifdef PID_ADD_EXTRUSION_RATE
3217
-        SERIAL_PROTOCOL(" c:");
3218
-        //Kc does not have scaling applied above, or in resetting defaults
3219
-        SERIAL_PROTOCOL(Kc);
3220
-        #endif
3221
-        SERIAL_PROTOCOLLN("");
3222 3266
       }
3223 3267
       break;
3224 3268
     #endif //PIDTEMP
@@ -3238,7 +3282,6 @@ Sigma_Exit:
3238 3282
         SERIAL_PROTOCOL(" d:");
3239 3283
         SERIAL_PROTOCOL(unscalePID_d(bedKd));
3240 3284
         SERIAL_PROTOCOLLN("");
3241
-				previous_millis_ok = millis();
3242 3285
       }
3243 3286
       break;
3244 3287
     #endif //PIDTEMP
@@ -3505,7 +3548,7 @@ case 404:  //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp
3505 3548
     break;
3506 3549
     case 503: // M503 print settings currently in memory
3507 3550
     {
3508
-        Config_PrintSettings();
3551
+        Config_PrintSettings(code_seen('S') && code_value == 0);
3509 3552
     }
3510 3553
     break;
3511 3554
     #ifdef ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED
@@ -3529,7 +3572,6 @@ case 404:  //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp
3529 3572
           SERIAL_ECHO_START;
3530 3573
           SERIAL_ECHOLNPGM(MSG_ZPROBE_ZOFFSET " " MSG_OK);
3531 3574
           SERIAL_PROTOCOLLN("");
3532
-					previous_millis_ok = millis();
3533 3575
         }
3534 3576
         else
3535 3577
         {
@@ -3556,16 +3598,17 @@ case 404:  //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp
3556 3598
     #ifdef FILAMENTCHANGEENABLE
3557 3599
     case 600: //Pause for filament change X[pos] Y[pos] Z[relative lift] E[initial retract] L[later retract distance for removal]
3558 3600
     {
3559
-        float target[4];
3560
-        float lastpos[4];
3561
-        target[X_AXIS]=current_position[X_AXIS];
3562
-        target[Y_AXIS]=current_position[Y_AXIS];
3563
-        target[Z_AXIS]=current_position[Z_AXIS];
3564
-        target[E_AXIS]=current_position[E_AXIS];
3565
-        lastpos[X_AXIS]=current_position[X_AXIS];
3566
-        lastpos[Y_AXIS]=current_position[Y_AXIS];
3567
-        lastpos[Z_AXIS]=current_position[Z_AXIS];
3568
-        lastpos[E_AXIS]=current_position[E_AXIS];
3601
+        float target[NUM_AXIS], lastpos[NUM_AXIS], fr60 = feedrate/60;
3602
+        for (int i=0; i<NUM_AXIS; i++)
3603
+          target[i] = lastpos[i] = current_position[i];
3604
+
3605
+        #define BASICPLAN plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], fr60, active_extruder);
3606
+        #ifdef DELTA
3607
+          #define RUNPLAN calculate_delta(target); BASICPLAN
3608
+        #else
3609
+          #define RUNPLAN BASICPLAN
3610
+        #endif
3611
+
3569 3612
         //retract by E
3570 3613
         if(code_seen('E'))
3571 3614
         {
@@ -3577,7 +3620,7 @@ case 404:  //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp
3577 3620
             target[E_AXIS]+= FILAMENTCHANGE_FIRSTRETRACT ;
3578 3621
           #endif
3579 3622
         }
3580
-        plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], feedrate/60, active_extruder);
3623
+        RUNPLAN;
3581 3624
 
3582 3625
         //lift Z
3583 3626
         if(code_seen('Z'))
@@ -3590,12 +3633,12 @@ case 404:  //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp
3590 3633
             target[Z_AXIS]+= FILAMENTCHANGE_ZADD ;
3591 3634
           #endif
3592 3635
         }
3593
-        plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], feedrate/60, active_extruder);
3636
+        RUNPLAN;
3594 3637
 
3595 3638
         //move xy
3596 3639
         if(code_seen('X'))
3597 3640
         {
3598
-          target[X_AXIS]+= code_value();
3641
+          target[X_AXIS]= code_value();
3599 3642
         }
3600 3643
         else
3601 3644
         {
@@ -3614,7 +3657,7 @@ case 404:  //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp
3614 3657
           #endif
3615 3658
         }
3616 3659
 
3617
-        plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], feedrate/60, active_extruder);
3660
+        RUNPLAN;
3618 3661
 
3619 3662
         if(code_seen('L'))
3620 3663
         {
@@ -3627,7 +3670,7 @@ case 404:  //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp
3627 3670
           #endif
3628 3671
         }
3629 3672
 
3630
-        plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], feedrate/60, active_extruder);
3673
+        RUNPLAN;
3631 3674
 
3632 3675
         //finish moves
3633 3676
         st_synchronize();
@@ -3675,10 +3718,18 @@ case 404:  //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp
3675 3718
         }
3676 3719
         current_position[E_AXIS]=target[E_AXIS]; //the long retract of L is compensated by manual filament feeding
3677 3720
         plan_set_e_position(current_position[E_AXIS]);
3678
-        plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], feedrate/60, active_extruder); //should do nothing
3679
-        plan_buffer_line(lastpos[X_AXIS], lastpos[Y_AXIS], target[Z_AXIS], target[E_AXIS], feedrate/60, active_extruder); //move xy back
3680
-        plan_buffer_line(lastpos[X_AXIS], lastpos[Y_AXIS], lastpos[Z_AXIS], target[E_AXIS], feedrate/60, active_extruder); //move z back
3681
-        plan_buffer_line(lastpos[X_AXIS], lastpos[Y_AXIS], lastpos[Z_AXIS], lastpos[E_AXIS], feedrate/60, active_extruder); //final untretract
3721
+
3722
+        RUNPLAN; //should do nothing
3723
+
3724
+        #ifdef DELTA
3725
+          calculate_delta(lastpos);
3726
+          plan_buffer_line(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], target[E_AXIS], fr60, active_extruder); //move xyz back
3727
+          plan_buffer_line(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], lastpos[E_AXIS], fr60, active_extruder); //final untretract
3728
+        #else
3729
+          plan_buffer_line(lastpos[X_AXIS], lastpos[Y_AXIS], target[Z_AXIS], target[E_AXIS], fr60, active_extruder); //move xy back
3730
+          plan_buffer_line(lastpos[X_AXIS], lastpos[Y_AXIS], lastpos[Z_AXIS], target[E_AXIS], fr60, active_extruder); //move z back
3731
+          plan_buffer_line(lastpos[X_AXIS], lastpos[Y_AXIS], lastpos[Z_AXIS], lastpos[E_AXIS], fr60, active_extruder); //final untretract
3732
+        #endif
3682 3733
     }
3683 3734
     break;
3684 3735
     #endif //FILAMENTCHANGEENABLE
@@ -3916,7 +3967,6 @@ case 404:  //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp
3916 3967
   ClearToSend();
3917 3968
 }
3918 3969
 
3919
-
3920 3970
 void FlushSerialRequestResend()
3921 3971
 {
3922 3972
   //char cmdbuffer[bufindr][100]="Resend:";
@@ -3934,7 +3984,6 @@ void ClearToSend()
3934 3984
     return;
3935 3985
   #endif //SDSUPPORT
3936 3986
   SERIAL_PROTOCOLLNPGM(MSG_OK);
3937
-	previous_millis_ok = millis();
3938 3987
 }
3939 3988
 
3940 3989
 void get_coordinates()
@@ -4359,14 +4408,6 @@ void manage_inactivity(bool ignore_stepper_queue/*=false*/) //default argument s
4359 4408
   if( (millis() - previous_millis_cmd) >  max_inactive_time )
4360 4409
     if(max_inactive_time)
4361 4410
       kill();
4362
-
4363
-	// If 'OK' is garbled on sending PC won't receive it.  Both machines will wait on each other forever.
4364
-	// This resends OK if nothing is heard from PC for a while to avoid this bad case.
4365
-  if( (millis() - previous_millis_ok) >  max_inactive_time/4 ) {
4366
-		SERIAL_PROTOCOL(MSG_OK);
4367
-		previous_millis_ok=millis();
4368
-  }
4369
-
4370 4411
   if(stepper_inactive_time)  {
4371 4412
     if( (millis() - previous_millis_cmd) >  stepper_inactive_time )
4372 4413
     {
@@ -4632,12 +4673,6 @@ float calculate_volumetric_multiplier(float diameter) {
4632 4673
 }
4633 4674
 
4634 4675
 void calculate_volumetric_multipliers() {
4635
-	volumetric_multiplier[0] = calculate_volumetric_multiplier(filament_size[0]);
4636
-#if EXTRUDERS > 1
4637
-	volumetric_multiplier[1] = calculate_volumetric_multiplier(filament_size[1]);
4638
-#if EXTRUDERS > 2
4639
-	volumetric_multiplier[2] = calculate_volumetric_multiplier(filament_size[2]);
4640
-#endif
4641
-#endif
4676
+  for (int i=0; i<EXTRUDERS; i++)
4677
+  	volumetric_multiplier[i] = calculate_volumetric_multiplier(filament_size[i]);
4642 4678
 }
4643
-

+ 3
- 3
Marlin/SdBaseFile.cpp Ver fichero

@@ -1012,7 +1012,7 @@ void SdBaseFile::printFatTime( uint16_t fatTime) {
1012 1012
  * the value zero, false, is returned for failure.
1013 1013
  */
1014 1014
 bool SdBaseFile::printName() {
1015
-  char name[13];
1015
+  char name[FILENAME_LENGTH];
1016 1016
   if (!getFilename(name)) return false;
1017 1017
   MYSERIAL.print(name);
1018 1018
   return true;
@@ -1135,7 +1135,7 @@ int8_t SdBaseFile::readDir(dir_t* dir, char* longFilename) {
1135 1135
     	if (VFAT->firstClusterLow == 0 && (VFAT->sequenceNumber & 0x1F) > 0 && (VFAT->sequenceNumber & 0x1F) <= MAX_VFAT_ENTRIES)
1136 1136
     	{
1137 1137
 			//TODO: Store the filename checksum to verify if a none-long filename aware system modified the file table.
1138
-    		n = ((VFAT->sequenceNumber & 0x1F) - 1) * 13;
1138
+    		n = ((VFAT->sequenceNumber & 0x1F) - 1) * FILENAME_LENGTH;
1139 1139
 			longFilename[n+0] = VFAT->name1[0];
1140 1140
 			longFilename[n+1] = VFAT->name1[1];
1141 1141
 			longFilename[n+2] = VFAT->name1[2];
@@ -1151,7 +1151,7 @@ int8_t SdBaseFile::readDir(dir_t* dir, char* longFilename) {
1151 1151
 			longFilename[n+12] = VFAT->name3[1];
1152 1152
 			//If this VFAT entry is the last one, add a NUL terminator at the end of the string
1153 1153
 			if (VFAT->sequenceNumber & 0x40)
1154
-				longFilename[n+13] = '\0';
1154
+				longFilename[n+FILENAME_LENGTH] = '\0';
1155 1155
 		}
1156 1156
     }
1157 1157
     // return if normal file or subdirectory

+ 5
- 3
Marlin/SdFatConfig.h Ver fichero

@@ -108,15 +108,17 @@ uint8_t const SOFT_SPI_SCK_PIN = 13;
108 108
  * a pure virtual function is called.
109 109
  */
110 110
 #define USE_CXA_PURE_VIRTUAL 1
111
+
112
+/** Number of UTF-16 characters per entry */
113
+#define FILENAME_LENGTH 13
114
+
111 115
 /**
112 116
  * Defines for long (vfat) filenames
113 117
  */
114 118
 /** Number of VFAT entries used. Every entry has 13 UTF-16 characters */
115 119
 #define MAX_VFAT_ENTRIES (2)
116
-/** Number of UTF-16 characters per entry */
117
-#define FILENAME_LENGTH 13
118 120
 /** Total size of the buffer used to store the long filenames */
119
-#define LONG_FILENAME_LENGTH (13*MAX_VFAT_ENTRIES+1)
121
+#define LONG_FILENAME_LENGTH (FILENAME_LENGTH*MAX_VFAT_ENTRIES+1)
120 122
 #endif  // SdFatConfig_h
121 123
 
122 124
 

+ 150
- 190
Marlin/Servo.cpp Ver fichero

@@ -44,6 +44,7 @@
44 44
 #include "Configuration.h" 
45 45
 
46 46
 #ifdef NUM_SERVOS
47
+
47 48
 #include <avr/interrupt.h>
48 49
 #include <Arduino.h>
49 50
 
@@ -52,7 +53,6 @@
52 53
 #define usToTicks(_us)    (( clockCyclesPerMicrosecond()* _us) / 8)     // converts microseconds to tick (assumes prescale of 8)  // 12 Aug 2009
53 54
 #define ticksToUs(_ticks) (( (unsigned)_ticks * 8)/ clockCyclesPerMicrosecond() ) // converts from ticks back to microseconds
54 55
 
55
-
56 56
 #define TRIM_DURATION       2                               // compensation ticks to trim adjust for digitalWrite delays // 12 August 2009
57 57
 
58 58
 //#define NBR_TIMERS        (MAX_SERVOS / SERVOS_PER_TIMER)
@@ -74,24 +74,23 @@ uint8_t ServoCount = 0;                                     // the total number
74 74
 
75 75
 /************ static functions common to all instances ***********************/
76 76
 
77
-static inline void handle_interrupts(timer16_Sequence_t timer, volatile uint16_t *TCNTn, volatile uint16_t* OCRnA)
78
-{
79
-  if( Channel[timer] < 0 )
77
+static inline void handle_interrupts(timer16_Sequence_t timer, volatile uint16_t *TCNTn, volatile uint16_t* OCRnA) {
78
+  if (Channel[timer] < 0)
80 79
     *TCNTn = 0; // channel set to -1 indicated that refresh interval completed so reset the timer
81
-  else{
82
-    if( SERVO_INDEX(timer,Channel[timer]) < ServoCount && SERVO(timer,Channel[timer]).Pin.isActive == true )
80
+  else {
81
+    if (SERVO_INDEX(timer,Channel[timer]) < ServoCount && SERVO(timer,Channel[timer]).Pin.isActive)
83 82
       digitalWrite( SERVO(timer,Channel[timer]).Pin.nbr,LOW); // pulse this channel low if activated
84 83
   }
85 84
 
86 85
   Channel[timer]++;    // increment to the next channel
87
-  if( SERVO_INDEX(timer,Channel[timer]) < ServoCount && Channel[timer] < SERVOS_PER_TIMER) {
86
+  if (SERVO_INDEX(timer,Channel[timer]) < ServoCount && Channel[timer] < SERVOS_PER_TIMER) {
88 87
     *OCRnA = *TCNTn + SERVO(timer,Channel[timer]).ticks;
89
-    if(SERVO(timer,Channel[timer]).Pin.isActive == true)     // check if activated
88
+    if (SERVO(timer,Channel[timer]).Pin.isActive)     // check if activated
90 89
       digitalWrite( SERVO(timer,Channel[timer]).Pin.nbr,HIGH); // its an active channel so pulse it high
91 90
   }
92 91
   else {
93 92
     // finished all channels so wait for the refresh period to expire before starting over
94
-    if( ((unsigned)*TCNTn) + 4 < usToTicks(REFRESH_INTERVAL) )  // allow a few ticks to ensure the next OCR1A not missed
93
+    if ( ((unsigned)*TCNTn) + 4 < usToTicks(REFRESH_INTERVAL) )  // allow a few ticks to ensure the next OCR1A not missed
95 94
       *OCRnA = (unsigned int)usToTicks(REFRESH_INTERVAL);
96 95
     else
97 96
       *OCRnA = *TCNTn + 4;  // at least REFRESH_INTERVAL has elapsed
@@ -100,142 +99,126 @@ static inline void handle_interrupts(timer16_Sequence_t timer, volatile uint16_t
100 99
 }
101 100
 
102 101
 #ifndef WIRING // Wiring pre-defines signal handlers so don't define any if compiling for the Wiring platform
103
-// Interrupt handlers for Arduino
104
-#if defined(_useTimer1)
105
-SIGNAL (TIMER1_COMPA_vect)
106
-{
107
-  handle_interrupts(_timer1, &TCNT1, &OCR1A);
108
-}
109
-#endif
110
-
111
-#if defined(_useTimer3)
112
-SIGNAL (TIMER3_COMPA_vect)
113
-{
114
-  handle_interrupts(_timer3, &TCNT3, &OCR3A);
115
-}
116
-#endif
117 102
 
118
-#if defined(_useTimer4)
119
-SIGNAL (TIMER4_COMPA_vect)
120
-{
121
-  handle_interrupts(_timer4, &TCNT4, &OCR4A);
103
+  // Interrupt handlers for Arduino
104
+  #if defined(_useTimer1)
105
+    SIGNAL (TIMER1_COMPA_vect) { handle_interrupts(_timer1, &TCNT1, &OCR1A); }
106
+  #endif
107
+
108
+  #if defined(_useTimer3)
109
+    SIGNAL (TIMER3_COMPA_vect) { handle_interrupts(_timer3, &TCNT3, &OCR3A); }
110
+  #endif
111
+
112
+  #if defined(_useTimer4)
113
+    SIGNAL (TIMER4_COMPA_vect) { handle_interrupts(_timer4, &TCNT4, &OCR4A); }
114
+  #endif
115
+
116
+  #if defined(_useTimer5)
117
+    SIGNAL (TIMER5_COMPA_vect) { handle_interrupts(_timer5, &TCNT5, &OCR5A); }
118
+  #endif
119
+
120
+#else //!WIRING
121
+
122
+  // Interrupt handlers for Wiring
123
+  #if defined(_useTimer1)
124
+    void Timer1Service() { handle_interrupts(_timer1, &TCNT1, &OCR1A); }
125
+  #endif
126
+  #if defined(_useTimer3)
127
+    void Timer3Service() { handle_interrupts(_timer3, &TCNT3, &OCR3A); }
128
+  #endif
129
+
130
+#endif //!WIRING
131
+
132
+
133
+static void initISR(timer16_Sequence_t timer) {
134
+  #if defined(_useTimer1)
135
+    if (timer == _timer1) {
136
+      TCCR1A = 0;             // normal counting mode
137
+      TCCR1B = _BV(CS11);     // set prescaler of 8
138
+      TCNT1 = 0;              // clear the timer count
139
+      #if defined(__AVR_ATmega8__)|| defined(__AVR_ATmega128__)
140
+        TIFR |= _BV(OCF1A);      // clear any pending interrupts;
141
+        TIMSK |= _BV(OCIE1A);    // enable the output compare interrupt
142
+      #else
143
+        // here if not ATmega8 or ATmega128
144
+        TIFR1 |= _BV(OCF1A);     // clear any pending interrupts;
145
+        TIMSK1 |= _BV(OCIE1A);   // enable the output compare interrupt
146
+      #endif
147
+      #if defined(WIRING)
148
+        timerAttach(TIMER1OUTCOMPAREA_INT, Timer1Service);
149
+      #endif
150
+    }
151
+  #endif
152
+
153
+  #if defined(_useTimer3)
154
+    if (timer == _timer3) {
155
+      TCCR3A = 0;             // normal counting mode
156
+      TCCR3B = _BV(CS31);     // set prescaler of 8
157
+      TCNT3 = 0;              // clear the timer count
158
+      #if defined(__AVR_ATmega128__)
159
+        TIFR |= _BV(OCF3A);     // clear any pending interrupts;
160
+      	ETIMSK |= _BV(OCIE3A);  // enable the output compare interrupt
161
+      #else
162
+        TIFR3 = _BV(OCF3A);     // clear any pending interrupts;
163
+        TIMSK3 =  _BV(OCIE3A) ; // enable the output compare interrupt
164
+      #endif
165
+      #if defined(WIRING)
166
+        timerAttach(TIMER3OUTCOMPAREA_INT, Timer3Service);  // for Wiring platform only
167
+      #endif
168
+    }
169
+  #endif
170
+
171
+  #if defined(_useTimer4)
172
+    if (timer == _timer4) {
173
+      TCCR4A = 0;             // normal counting mode
174
+      TCCR4B = _BV(CS41);     // set prescaler of 8
175
+      TCNT4 = 0;              // clear the timer count
176
+      TIFR4 = _BV(OCF4A);     // clear any pending interrupts;
177
+      TIMSK4 =  _BV(OCIE4A) ; // enable the output compare interrupt
178
+    }
179
+  #endif
180
+
181
+  #if defined(_useTimer5)
182
+    if (timer == _timer5) {
183
+      TCCR5A = 0;             // normal counting mode
184
+      TCCR5B = _BV(CS51);     // set prescaler of 8
185
+      TCNT5 = 0;              // clear the timer count
186
+      TIFR5 = _BV(OCF5A);     // clear any pending interrupts;
187
+      TIMSK5 =  _BV(OCIE5A) ; // enable the output compare interrupt
188
+    }
189
+  #endif
122 190
 }
123
-#endif
124 191
 
125
-#if defined(_useTimer5)
126
-SIGNAL (TIMER5_COMPA_vect)
127
-{
128
-  handle_interrupts(_timer5, &TCNT5, &OCR5A);
192
+static void finISR(timer16_Sequence_t timer) {
193
+  // Disable use of the given timer
194
+  #if defined(WIRING)
195
+    if (timer == _timer1) {
196
+      #if defined(__AVR_ATmega1281__) || defined(__AVR_ATmega2561__)
197
+        TIMSK1
198
+      #else
199
+        TIMSK
200
+      #endif
201
+          &= ~_BV(OCIE1A);    // disable timer 1 output compare interrupt
202
+      timerDetach(TIMER1OUTCOMPAREA_INT);
203
+    }
204
+    else if (timer == _timer3) {
205
+      #if defined(__AVR_ATmega1281__) || defined(__AVR_ATmega2561__)
206
+        TIMSK3
207
+      #else
208
+        ETIMSK
209
+      #endif
210
+          &= ~_BV(OCIE3A);    // disable the timer3 output compare A interrupt
211
+      timerDetach(TIMER3OUTCOMPAREA_INT);
212
+    }
213
+  #else //!WIRING
214
+    // For arduino - in future: call here to a currently undefined function to reset the timer
215
+  #endif
129 216
 }
130
-#endif
131 217
 
132
-#elif defined WIRING
133
-// Interrupt handlers for Wiring
134
-#if defined(_useTimer1)
135
-void Timer1Service()
136
-{
137
-  handle_interrupts(_timer1, &TCNT1, &OCR1A);
138
-}
139
-#endif
140
-#if defined(_useTimer3)
141
-void Timer3Service()
142
-{
143
-  handle_interrupts(_timer3, &TCNT3, &OCR3A);
144
-}
145
-#endif
146
-#endif
147
-
148
-
149
-static void initISR(timer16_Sequence_t timer)
150
-{
151
-#if defined (_useTimer1)
152
-  if(timer == _timer1) {
153
-    TCCR1A = 0;             // normal counting mode
154
-    TCCR1B = _BV(CS11);     // set prescaler of 8
155
-    TCNT1 = 0;              // clear the timer count
156
-#if defined(__AVR_ATmega8__)|| defined(__AVR_ATmega128__)
157
-    TIFR |= _BV(OCF1A);      // clear any pending interrupts;
158
-    TIMSK |=  _BV(OCIE1A) ;  // enable the output compare interrupt
159
-#else
160
-    // here if not ATmega8 or ATmega128
161
-    TIFR1 |= _BV(OCF1A);     // clear any pending interrupts;
162
-    TIMSK1 |=  _BV(OCIE1A) ; // enable the output compare interrupt
163
-#endif
164
-#if defined(WIRING)
165
-    timerAttach(TIMER1OUTCOMPAREA_INT, Timer1Service);
166
-#endif
167
-  }
168
-#endif
169
-
170
-#if defined (_useTimer3)
171
-  if(timer == _timer3) {
172
-    TCCR3A = 0;             // normal counting mode
173
-    TCCR3B = _BV(CS31);     // set prescaler of 8
174
-    TCNT3 = 0;              // clear the timer count
175
-#if defined(__AVR_ATmega128__)
176
-    TIFR |= _BV(OCF3A);     // clear any pending interrupts;
177
-	ETIMSK |= _BV(OCIE3A);  // enable the output compare interrupt
178
-#else
179
-    TIFR3 = _BV(OCF3A);     // clear any pending interrupts;
180
-    TIMSK3 =  _BV(OCIE3A) ; // enable the output compare interrupt
181
-#endif
182
-#if defined(WIRING)
183
-    timerAttach(TIMER3OUTCOMPAREA_INT, Timer3Service);  // for Wiring platform only
184
-#endif
185
-  }
186
-#endif
187
-
188
-#if defined (_useTimer4)
189
-  if(timer == _timer4) {
190
-    TCCR4A = 0;             // normal counting mode
191
-    TCCR4B = _BV(CS41);     // set prescaler of 8
192
-    TCNT4 = 0;              // clear the timer count
193
-    TIFR4 = _BV(OCF4A);     // clear any pending interrupts;
194
-    TIMSK4 =  _BV(OCIE4A) ; // enable the output compare interrupt
195
-  }
196
-#endif
197
-
198
-#if defined (_useTimer5)
199
-  if(timer == _timer5) {
200
-    TCCR5A = 0;             // normal counting mode
201
-    TCCR5B = _BV(CS51);     // set prescaler of 8
202
-    TCNT5 = 0;              // clear the timer count
203
-    TIFR5 = _BV(OCF5A);     // clear any pending interrupts;
204
-    TIMSK5 =  _BV(OCIE5A) ; // enable the output compare interrupt
205
-  }
206
-#endif
207
-}
208
-
209
-static void finISR(timer16_Sequence_t timer)
210
-{
211
-    //disable use of the given timer
212
-#if defined WIRING   // Wiring
213
-  if(timer == _timer1) {
214
-    #if defined(__AVR_ATmega1281__)||defined(__AVR_ATmega2561__)
215
-    TIMSK1 &=  ~_BV(OCIE1A) ;  // disable timer 1 output compare interrupt
216
-    #else
217
-    TIMSK &=  ~_BV(OCIE1A) ;  // disable timer 1 output compare interrupt
218
-    #endif
219
-    timerDetach(TIMER1OUTCOMPAREA_INT);
220
-  }
221
-  else if(timer == _timer3) {
222
-    #if defined(__AVR_ATmega1281__)||defined(__AVR_ATmega2561__)
223
-    TIMSK3 &= ~_BV(OCIE3A);    // disable the timer3 output compare A interrupt
224
-    #else
225
-    ETIMSK &= ~_BV(OCIE3A);    // disable the timer3 output compare A interrupt
226
-    #endif
227
-    timerDetach(TIMER3OUTCOMPAREA_INT);
228
-  }
229
-#else
230
-    //For arduino - in future: call here to a currently undefined function to reset the timer
231
-#endif
232
-}
233
-
234
-static boolean isTimerActive(timer16_Sequence_t timer)
235
-{
218
+static boolean isTimerActive(timer16_Sequence_t timer) {
236 219
   // returns true if any servo is active on this timer
237 220
   for(uint8_t channel=0; channel < SERVOS_PER_TIMER; channel++) {
238
-    if(SERVO(timer,channel).Pin.isActive == true)
221
+    if (SERVO(timer,channel).Pin.isActive)
239 222
       return true;
240 223
   }
241 224
   return false;
@@ -244,70 +227,59 @@ static boolean isTimerActive(timer16_Sequence_t timer)
244 227
 
245 228
 /****************** end of static functions ******************************/
246 229
 
247
-Servo::Servo()
248
-{
249
-  if( ServoCount < MAX_SERVOS) {
230
+Servo::Servo() {
231
+  if ( ServoCount < MAX_SERVOS) {
250 232
     this->servoIndex = ServoCount++;                    // assign a servo index to this instance
251
-	servos[this->servoIndex].ticks = usToTicks(DEFAULT_PULSE_WIDTH);   // store default values  - 12 Aug 2009
233
+    servos[this->servoIndex].ticks = usToTicks(DEFAULT_PULSE_WIDTH);   // store default values  - 12 Aug 2009
252 234
   }
253 235
   else
254
-    this->servoIndex = INVALID_SERVO ;  // too many servos
236
+    this->servoIndex = INVALID_SERVO;  // too many servos
255 237
 }
256 238
 
257
-uint8_t Servo::attach(int pin)
258
-{
239
+uint8_t Servo::attach(int pin) {
259 240
   return this->attach(pin, MIN_PULSE_WIDTH, MAX_PULSE_WIDTH);
260 241
 }
261 242
 
262
-uint8_t Servo::attach(int pin, int min, int max)
263
-{
264
-  if(this->servoIndex < MAX_SERVOS ) {
265
-#if defined (ENABLE_AUTO_BED_LEVELING) && (PROBE_SERVO_DEACTIVATION_DELAY > 0)
243
+uint8_t Servo::attach(int pin, int min, int max) {
244
+  if (this->servoIndex < MAX_SERVOS ) {
245
+  #if defined(ENABLE_AUTO_BED_LEVELING) && (PROBE_SERVO_DEACTIVATION_DELAY > 0)
266 246
     if (pin > 0) this->pin = pin; else pin = this->pin;
267
-#endif
268
-    pinMode( pin, OUTPUT) ;                                   // set servo pin to output
247
+  #endif
248
+    pinMode(pin, OUTPUT);                                   // set servo pin to output
269 249
     servos[this->servoIndex].Pin.nbr = pin;
270 250
     // todo min/max check: abs(min - MIN_PULSE_WIDTH) /4 < 128
271
-    this->min  = (MIN_PULSE_WIDTH - min)/4; //resolution of min/max is 4 uS
272
-    this->max  = (MAX_PULSE_WIDTH - max)/4;
251
+    this->min = (MIN_PULSE_WIDTH - min) / 4; //resolution of min/max is 4 uS
252
+    this->max = (MAX_PULSE_WIDTH - max) / 4;
273 253
     // initialize the timer if it has not already been initialized
274 254
     timer16_Sequence_t timer = SERVO_INDEX_TO_TIMER(servoIndex);
275
-    if(isTimerActive(timer) == false)
276
-      initISR(timer);
255
+    if (!isTimerActive(timer)) initISR(timer);
277 256
     servos[this->servoIndex].Pin.isActive = true;  // this must be set after the check for isTimerActive
278 257
   }
279
-  return this->servoIndex ;
258
+  return this->servoIndex;
280 259
 }
281 260
 
282
-void Servo::detach()
283
-{
261
+void Servo::detach() {
284 262
   servos[this->servoIndex].Pin.isActive = false;
285 263
   timer16_Sequence_t timer = SERVO_INDEX_TO_TIMER(servoIndex);
286
-  if(isTimerActive(timer) == false) {
287
-    finISR(timer);
288
-  }
264
+  if (!isTimerActive(timer)) finISR(timer);
289 265
 }
290 266
 
291
-void Servo::write(int value)
292
-{
293
-  if(value < MIN_PULSE_WIDTH)
294
-  {  // treat values less than 544 as angles in degrees (valid values in microseconds are handled as microseconds)
295
-    if(value < 0) value = 0;
296
-    if(value > 180) value = 180;
267
+void Servo::write(int value) {
268
+  if (value < MIN_PULSE_WIDTH) { // treat values less than 544 as angles in degrees (valid values in microseconds are handled as microseconds)
269
+    if (value < 0) value = 0;
270
+    if (value > 180) value = 180;
297 271
     value = map(value, 0, 180, SERVO_MIN(),  SERVO_MAX());
298 272
   }
299 273
   this->writeMicroseconds(value);
300 274
 }
301 275
 
302
-void Servo::writeMicroseconds(int value)
303
-{
276
+void Servo::writeMicroseconds(int value) {
304 277
   // calculate and store the values for the given channel
305 278
   byte channel = this->servoIndex;
306
-  if( (channel < MAX_SERVOS) )   // ensure channel is valid
307
-  {
308
-    if( value < SERVO_MIN() )          // ensure pulse width is valid
279
+  if (channel < MAX_SERVOS) {  // ensure channel is valid
280
+    if (value < SERVO_MIN())   // ensure pulse width is valid
309 281
       value = SERVO_MIN();
310
-    else if( value > SERVO_MAX() )
282
+    else if (value > SERVO_MAX())
311 283
       value = SERVO_MAX();
312 284
 
313 285
   	value = value - TRIM_DURATION;
@@ -320,25 +292,13 @@ void Servo::writeMicroseconds(int value)
320 292
   }
321 293
 }
322 294
 
323
-int Servo::read() // return the value as degrees
324
-{
325
-  return  map( this->readMicroseconds()+1, SERVO_MIN(), SERVO_MAX(), 0, 180);
326
-}
295
+// return the value as degrees
296
+int Servo::read() { return map( this->readMicroseconds()+1, SERVO_MIN(), SERVO_MAX(), 0, 180); }
327 297
 
328
-int Servo::readMicroseconds()
329
-{
330
-  unsigned int pulsewidth;
331
-  if( this->servoIndex != INVALID_SERVO )
332
-    pulsewidth = ticksToUs(servos[this->servoIndex].ticks)  + TRIM_DURATION ;   // 12 aug 2009
333
-  else
334
-    pulsewidth  = 0;
335
-
336
-  return pulsewidth;
298
+int Servo::readMicroseconds() {
299
+  return (this->servoIndex == INVALID_SERVO) ? 0 : ticksToUs(servos[this->servoIndex].ticks) + TRIM_DURATION;
337 300
 }
338 301
 
339
-bool Servo::attached()
340
-{
341
-  return servos[this->servoIndex].Pin.isActive ;
342
-}
302
+bool Servo::attached() { return servos[this->servoIndex].Pin.isActive; }
343 303
 
344 304
 #endif

+ 42
- 42
Marlin/Servo.h Ver fichero

@@ -58,35 +58,36 @@
58 58
 
59 59
 // Say which 16 bit timers can be used and in what order
60 60
 #if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
61
-#define _useTimer5
62
-//#define _useTimer1
63
-#define _useTimer3
64
-#define _useTimer4
65
-//typedef enum { _timer5, _timer1, _timer3, _timer4, _Nbr_16timers } timer16_Sequence_t ;
66
-typedef enum { _timer5, _timer3, _timer4, _Nbr_16timers } timer16_Sequence_t ;
61
+  #define _useTimer5
62
+  //#define _useTimer1
63
+  #define _useTimer3
64
+  #define _useTimer4
65
+  //typedef enum { _timer5, _timer1, _timer3, _timer4, _Nbr_16timers } timer16_Sequence_t ;
66
+  typedef enum { _timer5, _timer3, _timer4, _Nbr_16timers } timer16_Sequence_t ;
67 67
 
68 68
 #elif defined(__AVR_ATmega32U4__)
69
-//#define _useTimer1
70
-#define _useTimer3
71
-//typedef enum { _timer1, _Nbr_16timers } timer16_Sequence_t ;
72
-typedef enum { _timer3, _Nbr_16timers } timer16_Sequence_t ;
69
+  //#define _useTimer1
70
+  #define _useTimer3
71
+  //typedef enum { _timer1, _Nbr_16timers } timer16_Sequence_t ;
72
+  typedef enum { _timer3, _Nbr_16timers } timer16_Sequence_t ;
73 73
 
74 74
 #elif defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__)
75
-#define _useTimer3
76
-//#define _useTimer1
77
-//typedef enum { _timer3, _timer1, _Nbr_16timers } timer16_Sequence_t ;
78
-typedef enum { _timer3, _Nbr_16timers } timer16_Sequence_t ;
75
+  #define _useTimer3
76
+  //#define _useTimer1
77
+  //typedef enum { _timer3, _timer1, _Nbr_16timers } timer16_Sequence_t ;
78
+  typedef enum { _timer3, _Nbr_16timers } timer16_Sequence_t ;
79 79
 
80 80
 #elif defined(__AVR_ATmega128__) ||defined(__AVR_ATmega1281__) || defined(__AVR_ATmega1284P__) ||defined(__AVR_ATmega2561__)
81
-#define _useTimer3
82
-//#define _useTimer1
83
-//typedef enum { _timer3, _timer1, _Nbr_16timers } timer16_Sequence_t ;
84
-typedef enum { _timer3, _Nbr_16timers } timer16_Sequence_t ;
81
+  #define _useTimer3
82
+  //#define _useTimer1
83
+  //typedef enum { _timer3, _timer1, _Nbr_16timers } timer16_Sequence_t ;
84
+  typedef enum { _timer3, _Nbr_16timers } timer16_Sequence_t ;
85 85
 
86 86
 #else  // everything else
87
-//#define _useTimer1
88
-//typedef enum { _timer1, _Nbr_16timers } timer16_Sequence_t ;
89
-typedef enum { _Nbr_16timers } timer16_Sequence_t ;
87
+  //#define _useTimer1
88
+  //typedef enum { _timer1, _Nbr_16timers } timer16_Sequence_t ;
89
+  typedef enum { _Nbr_16timers } timer16_Sequence_t ;
90
+
90 91
 #endif
91 92
 
92 93
 #define Servo_VERSION           2     // software version of this library
@@ -101,35 +102,34 @@ typedef enum { _Nbr_16timers } timer16_Sequence_t ;
101 102
 
102 103
 #define INVALID_SERVO         255     // flag indicating an invalid servo index
103 104
 
104
-typedef struct  {
105
+typedef struct {
105 106
   uint8_t nbr        :6 ;             // a pin number from 0 to 63
106 107
   uint8_t isActive   :1 ;             // true if this channel is enabled, pin not pulsed if false
107
-} ServoPin_t   ;
108
+} ServoPin_t;
108 109
 
109 110
 typedef struct {
110 111
   ServoPin_t Pin;
111 112
   unsigned int ticks;
112 113
 } servo_t;
113 114
 
114
-class Servo
115
-{
116
-public:
117
-  Servo();
118
-  uint8_t attach(int pin);           // attach the given pin to the next free channel, sets pinMode, returns channel number or 0 if failure
119
-  uint8_t attach(int pin, int min, int max); // as above but also sets min and max values for writes.
120
-  void detach();
121
-  void write(int value);             // if value is < 200 it is treated as an angle, otherwise as pulse width in microseconds
122
-  void writeMicroseconds(int value); // Write pulse width in microseconds
123
-  int read();                        // returns current pulse width as an angle between 0 and 180 degrees
124
-  int readMicroseconds();            // returns current pulse width in microseconds for this servo (was read_us() in first release)
125
-  bool attached();                   // return true if this servo is attached, otherwise false
126
-#if defined (ENABLE_AUTO_BED_LEVELING) && (PROBE_SERVO_DEACTIVATION_DELAY > 0)
127
-  int pin;                           // store the hardware pin of the servo
128
-#endif
129
-private:
130
-   uint8_t servoIndex;               // index into the channel data for this servo
131
-   int8_t min;                       // minimum is this value times 4 added to MIN_PULSE_WIDTH
132
-   int8_t max;                       // maximum is this value times 4 added to MAX_PULSE_WIDTH
115
+class Servo {
116
+  public:
117
+    Servo();
118
+    uint8_t attach(int pin);           // attach the given pin to the next free channel, sets pinMode, returns channel number or 0 if failure
119
+    uint8_t attach(int pin, int min, int max); // as above but also sets min and max values for writes.
120
+    void detach();
121
+    void write(int value);             // if value is < 200 it is treated as an angle, otherwise as pulse width in microseconds
122
+    void writeMicroseconds(int value); // Write pulse width in microseconds
123
+    int read();                        // returns current pulse width as an angle between 0 and 180 degrees
124
+    int readMicroseconds();            // returns current pulse width in microseconds for this servo (was read_us() in first release)
125
+    bool attached();                   // return true if this servo is attached, otherwise false
126
+    #if defined (ENABLE_AUTO_BED_LEVELING) && (PROBE_SERVO_DEACTIVATION_DELAY > 0)
127
+      int pin;                           // store the hardware pin of the servo
128
+    #endif
129
+  private:
130
+    uint8_t servoIndex;               // index into the channel data for this servo
131
+    int8_t min;                       // minimum is this value times 4 added to MIN_PULSE_WIDTH
132
+    int8_t max;                       // maximum is this value times 4 added to MAX_PULSE_WIDTH
133 133
 };
134 134
 
135 135
 #endif

+ 5
- 1
Marlin/boards.h Ver fichero

@@ -14,7 +14,7 @@
14 14
 #define BOARD_RAMPS_13_EEB      34   // RAMPS 1.3 / 1.4 (Power outputs: Extruder0, Extruder1, Bed)
15 15
 #define BOARD_RAMPS_13_EFF      35   // RAMPS 1.3 / 1.4 (Power outputs: Extruder, Fan, Fan)
16 16
 #define BOARD_RAMPS_13_EEF      36   // RAMPS 1.3 / 1.4 (Power outputs: Extruder0, Extruder1, Fan)
17
-#define BOARD_DUEMILANOVE_328P  4    // Duemilanove w/ ATMega328P pin assignment
17
+#define BOARD_DUEMILANOVE_328P  4    // Duemilanove w/ ATMega328P pin assignments
18 18
 #define BOARD_GEN6              5    // Gen6
19 19
 #define BOARD_GEN6_DELUXE       51   // Gen6 deluxe
20 20
 #define BOARD_SANGUINOLOLU_11   6    // Sanguinololu < 1.2
@@ -29,6 +29,7 @@
29 29
 #define BOARD_ULTIMAKER_OLD     71   // Ultimaker (Older electronics. Pre 1.5.4. This is rare)
30 30
 #define BOARD_ULTIMAIN_2        72   // Ultimainboard 2.x (Uses TEMP_SENSOR 20)
31 31
 #define BOARD_3DRAG             77   // 3Drag Controller
32
+#define BOARD_K8200             78   // Vellemann K8200 Controller (derived from 3Drag Controller)
32 33
 #define BOARD_TEENSYLU          8    // Teensylu
33 34
 #define BOARD_RUMBA             80   // Rumba
34 35
 #define BOARD_PRINTRBOARD       81   // Printrboard (AT90USB1286)
@@ -40,12 +41,15 @@
40 41
 #define BOARD_MEGATRONICS       70   // Megatronics
41 42
 #define BOARD_MEGATRONICS_2     701  // Megatronics v2.0
42 43
 #define BOARD_MEGATRONICS_1     702  // Minitronics v1.0
44
+#define BOARD_MEGATRONICS_3     703  // Megatronics v3.0
43 45
 #define BOARD_OMCA_A            90   // Alpha OMCA board
44 46
 #define BOARD_OMCA              91   // Final OMCA board
45 47
 #define BOARD_RAMBO             301  // Rambo
46 48
 #define BOARD_ELEFU_3           21   // Elefu Ra Board (v3)
47 49
 #define BOARD_5DPRINT           88   // 5DPrint D8 Driver Board
48 50
 #define BOARD_LEAPFROG          999  // Leapfrog
51
+#define BOARD_WITBOX            41   // bq WITBOX
52
+#define BOARD_HEPHESTOS         42   // bq Prusa i3 Hephestos
49 53
 
50 54
 #define BOARD_99                99   // This is in pins.h but...?
51 55
 

+ 9
- 9
Marlin/cardreader.cpp Ver fichero

@@ -23,7 +23,7 @@ CardReader::CardReader()
23 23
    memset(workDirParents, 0, sizeof(workDirParents));
24 24
 
25 25
    autostart_stilltocheck=true; //the SD start is delayed, because otherwise the serial cannot answer fast enough to make contact with the host software.
26
-   lastnr=0;
26
+   autostart_index=0;
27 27
   //power to SD reader
28 28
   #if SDPOWER > -1
29 29
     SET_OUTPUT(SDPOWER); 
@@ -60,8 +60,8 @@ void CardReader::lsDive(const char *prepend, SdFile parent, const char * const m
60 60
     if( DIR_IS_SUBDIR(&p) && lsAction!=LS_Count && lsAction!=LS_GetFilename) // hence LS_SerialPrint
61 61
     {
62 62
 
63
-      char path[13*2];
64
-      char lfilename[13];
63
+      char path[FILENAME_LENGTH*2];
64
+      char lfilename[FILENAME_LENGTH];
65 65
       createFilename(lfilename,p);
66 66
       
67 67
       path[0]=0;
@@ -241,7 +241,7 @@ void CardReader::getAbsFilename(char *t)
241 241
     while(*t!=0 && cnt< MAXPATHNAMELENGTH) 
242 242
     {t++;cnt++;}  //crawl counter forward.
243 243
   }
244
-  if(cnt<MAXPATHNAMELENGTH-13)
244
+  if(cnt<MAXPATHNAMELENGTH-FILENAME_LENGTH)
245 245
     file.getFilename(t);
246 246
   else
247 247
     t[0]=0;
@@ -311,7 +311,7 @@ void CardReader::openFile(char* name,bool read, bool replace_current/*=true*/)
311 311
       //SERIAL_ECHO("end  :");SERIAL_ECHOLN((int)(dirname_end-name));
312 312
       if(dirname_end>0 && dirname_end>dirname_start)
313 313
       {
314
-        char subdirname[13];
314
+        char subdirname[FILENAME_LENGTH];
315 315
         strncpy(subdirname, dirname_start, dirname_end-dirname_start);
316 316
         subdirname[dirname_end-dirname_start]=0;
317 317
         SERIAL_ECHOLN(subdirname);
@@ -408,7 +408,7 @@ void CardReader::removeFile(char* name)
408 408
       //SERIAL_ECHO("end  :");SERIAL_ECHOLN((int)(dirname_end-name));
409 409
       if(dirname_end>0 && dirname_end>dirname_start)
410 410
       {
411
-        char subdirname[13];
411
+        char subdirname[FILENAME_LENGTH];
412 412
         strncpy(subdirname, dirname_start, dirname_end-dirname_start);
413 413
         subdirname[dirname_end-dirname_start]=0;
414 414
         SERIAL_ECHOLN(subdirname);
@@ -510,7 +510,7 @@ void CardReader::checkautostart(bool force)
510 510
   }
511 511
   
512 512
   char autoname[30];
513
-  sprintf_P(autoname, PSTR("auto%i.g"), lastnr);
513
+  sprintf_P(autoname, PSTR("auto%i.g"), autostart_index);
514 514
   for(int8_t i=0;i<(int8_t)strlen(autoname);i++)
515 515
     autoname[i]=tolower(autoname[i]);
516 516
   dir_t p;
@@ -537,9 +537,9 @@ void CardReader::checkautostart(bool force)
537 537
     }
538 538
   }
539 539
   if(!found)
540
-    lastnr=-1;
540
+    autostart_index=-1;
541 541
   else
542
-    lastnr++;
542
+    autostart_index++;
543 543
 }
544 544
 
545 545
 void CardReader::closefile(bool store_location)

+ 5
- 5
Marlin/cardreader.h Ver fichero

@@ -50,12 +50,12 @@ public:
50 50
 public:
51 51
   bool saving;
52 52
   bool logging;
53
-  bool sdprinting ;  
54
-  bool cardOK ;
55
-  char filename[13];
53
+  bool sdprinting;  
54
+  bool cardOK;
55
+  char filename[FILENAME_LENGTH];
56 56
   char longFilename[LONG_FILENAME_LENGTH];
57 57
   bool filenameIsDir;
58
-  int lastnr; //last number of the autostart;
58
+  int autostart_index;
59 59
 private:
60 60
   SdFile root,*curDir,workDir,workDirParents[MAX_DIR_DEPTH];
61 61
   uint16_t workDirDepth;
@@ -63,7 +63,7 @@ private:
63 63
   SdVolume volume;
64 64
   SdFile file;
65 65
   #define SD_PROCEDURE_DEPTH 1
66
-  #define MAXPATHNAMELENGTH (13*MAX_DIR_DEPTH+MAX_DIR_DEPTH+1)
66
+  #define MAXPATHNAMELENGTH (FILENAME_LENGTH*MAX_DIR_DEPTH+MAX_DIR_DEPTH+1)
67 67
   uint8_t file_subcall_ctr;
68 68
   uint32_t filespos[SD_PROCEDURE_DEPTH];
69 69
   char filenames[SD_PROCEDURE_DEPTH][MAXPATHNAMELENGTH];

+ 232
- 258
Marlin/dogm_lcd_implementation.h Ver fichero

@@ -1,19 +1,20 @@
1 1
 /**
2
- *dogm_lcd_implementation.h
2
+ * dogm_lcd_implementation.h
3 3
  *
4
- *Graphics LCD implementation for 128x64 pixel LCDs by STB for ErikZalm/Marlin
5
- *Demonstrator: http://www.reprap.org/wiki/STB_Electronics
6
- *License: http://opensource.org/licenses/BSD-3-Clause
4
+ * Graphics LCD implementation for 128x64 pixel LCDs by STB for ErikZalm/Marlin
5
+ * Demonstrator: http://www.reprap.org/wiki/STB_Electronics
6
+ * License: http://opensource.org/licenses/BSD-3-Clause
7 7
  *
8
- *With the use of:
9
- *u8glib by Oliver Kraus
10
- *http://code.google.com/p/u8glib/
11
- *License: http://opensource.org/licenses/BSD-3-Clause
8
+ * With the use of:
9
+ * u8glib by Oliver Kraus
10
+ * http://code.google.com/p/u8glib/
11
+ * License: http://opensource.org/licenses/BSD-3-Clause
12 12
  */
13 13
 
14
+#ifndef DOGM_LCD_IMPLEMENTATION_H
15
+#define DOGM_LCD_IMPLEMENTATION_H
14 16
 
15
-#ifndef ULTRA_LCD_IMPLEMENTATION_DOGM_H
16
-#define ULTRA_LCD_IMPLEMENTATION_DOGM_H
17
+#define MARLIN_VERSION "1.0.2"
17 18
 
18 19
 /**
19 20
 * Implementation of the LCD display routines for a DOGM128 graphic display. These are common LCD 128x64 pixel graphic displays.
@@ -50,13 +51,26 @@
50 51
 #endif
51 52
 */
52 53
 
54
+#define USE_BIG_EDIT_FONT                // save 3120 bytes of PROGMEM by commenting out this line
55
+#define FONT_STATUSMENU u8g_font_6x9
56
+#define FONT_MENU u8g_font_6x10_marlin
57
+
53 58
 // DOGM parameters (size in pixels)
54
-#define DOG_CHAR_WIDTH			6
55
-#define DOG_CHAR_HEIGHT			12
56
-#define DOG_CHAR_WIDTH_LARGE	9
57
-#define DOG_CHAR_HEIGHT_LARGE	18
59
+#define DOG_CHAR_WIDTH         6
60
+#define DOG_CHAR_HEIGHT        12
61
+#ifdef USE_BIG_EDIT_FONT
62
+  #define FONT_MENU_EDIT u8g_font_9x18
63
+  #define DOG_CHAR_WIDTH_EDIT  9
64
+  #define DOG_CHAR_HEIGHT_EDIT 18
65
+  #define LCD_WIDTH_EDIT       14
66
+#else
67
+  #define FONT_MENU_EDIT u8g_font_6x10_marlin
68
+  #define DOG_CHAR_WIDTH_EDIT  6
69
+  #define DOG_CHAR_HEIGHT_EDIT 12
70
+  #define LCD_WIDTH_EDIT       22
71
+#endif
58 72
 
59
-#define START_ROW				0
73
+#define START_ROW              0
60 74
 
61 75
 /* Custom characters defined in font font_6x10_marlin.c */
62 76
 #define LCD_STR_DEGREE      "\xB0"
@@ -69,8 +83,6 @@
69 83
 #define LCD_STR_BEDTEMP     "\xFE"
70 84
 #define LCD_STR_THERMOMETER "\xFF"
71 85
 
72
-#define FONT_STATUSMENU	u8g_font_6x9
73
-
74 86
 int lcd_contrast;
75 87
 
76 88
 // LCD selection
@@ -82,86 +94,60 @@ U8GLIB_ST7920_128X64_RRD u8g(0);
82 94
 U8GLIB_NHD_C12864 u8g(DOGLCD_CS, DOGLCD_A0);
83 95
 #else
84 96
 // for regular DOGM128 display with HW-SPI
85
-U8GLIB_DOGM128 u8g(DOGLCD_CS, DOGLCD_A0);	// HW-SPI Com: CS, A0
97
+U8GLIB_DOGM128 u8g(DOGLCD_CS, DOGLCD_A0);  // HW-SPI Com: CS, A0
86 98
 #endif
87 99
 
88 100
 static void lcd_implementation_init()
89 101
 {
90
-#ifdef LCD_PIN_BL
91
-	pinMode(LCD_PIN_BL, OUTPUT);	// Enable LCD backlight
92
-	digitalWrite(LCD_PIN_BL, HIGH);
93
-#endif
94
-
95
-        u8g.setContrast(lcd_contrast);	
96
-	//  Uncomment this if you have the first generation (V1.10) of STBs board
97
-	//  pinMode(17, OUTPUT);	// Enable LCD backlight
98
-	//  digitalWrite(17, HIGH);
99
-	
100
-	u8g.firstPage();
101
-	do {
102
-		u8g.setFont(u8g_font_6x10_marlin);
103
-		u8g.setColorIndex(1);
104
-		u8g.drawBox (0, 0, u8g.getWidth(), u8g.getHeight());
105
-		u8g.setColorIndex(1);
106
-	   } while( u8g.nextPage() );
102
+  #ifdef LCD_PIN_BL // Enable LCD backlight
103
+    pinMode(LCD_PIN_BL, OUTPUT);
104
+	  digitalWrite(LCD_PIN_BL, HIGH);
105
+  #endif
107 106
 
107
+  u8g.setContrast(lcd_contrast);	
108
+	// FIXME: remove this workaround
109
+  // Uncomment this if you have the first generation (V1.10) of STBs board
110
+	// pinMode(17, OUTPUT);	// Enable LCD backlight
111
+	// digitalWrite(17, HIGH);
112
+  
108 113
 #ifdef LCD_SCREEN_ROT_90
109
-	u8g.setRot90();	// Rotate screen by 90°
110
-#endif
111
-
112
-#ifdef LCD_SCREEN_ROT_180
114
+	u8g.setRot90();   // Rotate screen by 90°
115
+#elif defined(LCD_SCREEN_ROT_180)
113 116
 	u8g.setRot180();	// Rotate screen by 180°
114
-#endif
115
-
116
-#ifdef LCD_SCREEN_ROT_270
117
+#elif defined(LCD_SCREEN_ROT_270)
117 118
 	u8g.setRot270();	// Rotate screen by 270°
118 119
 #endif
120
+	
121
+  // Show splashscreen
122
+  int offx = (u8g.getWidth() - START_BMPWIDTH) / 2;
123
+  #ifdef START_BMPHIGH
124
+    int offy = 0;
125
+  #else
126
+    int offy = DOG_CHAR_HEIGHT;
127
+  #endif
128
+
129
+  int txt1X = (u8g.getWidth() - (sizeof(STRING_SPLASH_LINE1) - 1)*DOG_CHAR_WIDTH) / 2;
119 130
 
120
-   
121 131
 	u8g.firstPage();
122 132
 	do {
123
-			// RepRap init bmp
124
-			u8g.drawBitmapP(0,0,START_BMPBYTEWIDTH,START_BMPHEIGHT,start_bmp);
125
-			// Welcome message
126
-			u8g.setFont(u8g_font_6x10_marlin);
127
-			u8g.drawStr(62,10,"MARLIN"); 
128
-			u8g.setFont(u8g_font_5x8);
129
-			u8g.drawStr(62,19,"V1.0.0 RC2-mm");
130
-			u8g.setFont(u8g_font_6x10_marlin);
131
-			u8g.drawStr(62,28,"by ErikZalm");
132
-			u8g.drawStr(62,41,"DOGM128 LCD");
133
-			u8g.setFont(u8g_font_5x8);
134
-			u8g.drawStr(62,48,"enhancements");
135
-			u8g.setFont(u8g_font_5x8);
136
-			u8g.drawStr(62,55,"by STB, MM");
137
-			u8g.drawStr(62,61,"uses u");
138
-			u8g.drawStr90(92,57,"8");
139
-			u8g.drawStr(100,61,"glib");
140
-	   } while( u8g.nextPage() );
133
+    u8g.drawBitmapP(offx, offy, START_BMPBYTEWIDTH, START_BMPHEIGHT, start_bmp);
134
+    u8g.setFont(FONT_MENU);
135
+    #ifndef STRING_SPLASH_LINE2
136
+      u8g.drawStr(txt1X, u8g.getHeight() - DOG_CHAR_HEIGHT, STRING_SPLASH_LINE1);
137
+    #else
138
+      int txt2X = (u8g.getWidth() - (sizeof(STRING_SPLASH_LINE2) - 1)*DOG_CHAR_WIDTH) / 2;
139
+      u8g.drawStr(txt1X, u8g.getHeight() - DOG_CHAR_HEIGHT*3/2, STRING_SPLASH_LINE1);
140
+      u8g.drawStr(txt2X, u8g.getHeight() - DOG_CHAR_HEIGHT*1/2, STRING_SPLASH_LINE2);
141
+    #endif
142
+	} while(u8g.nextPage());
141 143
 }
142 144
 
143
-static void lcd_implementation_clear()
144
-{
145
-// NO NEED TO IMPLEMENT LIKE SO. Picture loop automatically clears the display.
146
-//
147
-// Check this article: http://arduino.cc/forum/index.php?topic=91395.25;wap2
148
-//
149
-//	u8g.firstPage();
150
-//	do {	
151
-//			u8g.setColorIndex(0);
152
-//			u8g.drawBox (0, 0, u8g.getWidth(), u8g.getHeight());
153
-//			u8g.setColorIndex(1);
154
-//		} while( u8g.nextPage() );
155
-}
145
+static void lcd_implementation_clear() { } // Automatically cleared by Picture Loop
156 146
 
157 147
 /* Arduino < 1.0.0 is missing a function to print PROGMEM strings, so we need to implement our own */
158
-static void lcd_printPGM(const char* str)
159
-{
160
-    char c;
161
-    while((c = pgm_read_byte(str++)) != '\0')
162
-    {
163
-			u8g.print(c);
164
-    }
148
+static void lcd_printPGM(const char* str) {
149
+  char c;
150
+  while ((c = pgm_read_byte(str++))) u8g.print(c);
165 151
 }
166 152
 
167 153
 static void _draw_heater_status(int x, int heater) {
@@ -184,176 +170,159 @@ static void _draw_heater_status(int x, int heater) {
184 170
   }
185 171
 }
186 172
 
187
-static void lcd_implementation_status_screen()
188
-{
173
+static void lcd_implementation_status_screen() {
189 174
 
190
- static unsigned char fan_rot = 0;
191
- 
192
- u8g.setColorIndex(1);	// black on white
193
- 
194
- // Symbols menu graphics, animated fan
195
- u8g.drawBitmapP(9,1,STATUS_SCREENBYTEWIDTH,STATUS_SCREENHEIGHT, (blink % 2) && fanSpeed ? status_screen0_bmp : status_screen1_bmp);
175
+  static unsigned char fan_rot = 0;
196 176
  
197
- #ifdef SDSUPPORT
198
- //SD Card Symbol
199
- u8g.drawBox(42,42,8,7);
200
- u8g.drawBox(50,44,2,5);
201
- u8g.drawFrame(42,49,10,4);
202
- u8g.drawPixel(50,43);
203
- // Progress bar
204
- u8g.drawFrame(54,49,73,4);
177
+  u8g.setColorIndex(1); // black on white
178
+
179
+  // Symbols menu graphics, animated fan
180
+  u8g.drawBitmapP(9,1,STATUS_SCREENBYTEWIDTH,STATUS_SCREENHEIGHT, (blink % 2) && fanSpeed ? status_screen0_bmp : status_screen1_bmp);
205 181
  
206
- // SD Card Progress bar and clock
207
- u8g.setFont(FONT_STATUSMENU);
182
+  #ifdef SDSUPPORT
183
+    // SD Card Symbol
184
+    u8g.drawBox(42,42,8,7);
185
+    u8g.drawBox(50,44,2,5);
186
+    u8g.drawFrame(42,49,10,4);
187
+    u8g.drawPixel(50,43);
188
+
189
+    // Progress bar frame
190
+    u8g.drawFrame(54,49,73,4);
191
+
192
+    // SD Card Progress bar and clock
193
+    u8g.setFont(FONT_STATUSMENU);
208 194
  
209
- if (IS_SD_PRINTING)
210
-   {
211
-	// Progress bar
212
-	u8g.drawBox(55,50, (unsigned int)( (71 * card.percentDone())/100) ,2);
213
-   }
195
+    if (IS_SD_PRINTING) {
196
+      // Progress bar solid part
197
+      u8g.drawBox(55, 50, (unsigned int)(71.f * card.percentDone() / 100.f), 2);
198
+    }
199
+
200
+    u8g.setPrintPos(80,47);
201
+    if (starttime != 0) {
202
+      uint16_t time = (millis() - starttime) / 60000;
203
+      u8g.print(itostr2(time/60));
204
+      u8g.print(':');
205
+      u8g.print(itostr2(time%60));
206
+    }
214 207
     else {
215
-			// do nothing
216
-		 }
217
- 
218
- u8g.setPrintPos(80,47);
219
- if(starttime != 0)
220
-    {
221
-        uint16_t time = millis()/60000 - starttime/60000;
222
-
223
-		u8g.print(itostr2(time/60));
224
-		u8g.print(':');
225
-		u8g.print(itostr2(time%60));
226
-    }else{
227
-			lcd_printPGM(PSTR("--:--"));
228
-		 }
229
- #endif
208
+      lcd_printPGM(PSTR("--:--"));
209
+    }
210
+  #endif
230 211
  
231 212
   // Extruders
232
-  _draw_heater_status(6, 0);
233
-  #if EXTRUDERS > 1
234
-    _draw_heater_status(31, 1);
235
-    #if EXTRUDERS > 2
236
-      _draw_heater_status(55, 2);
237
-    #endif
238
-  #endif
213
+  for (int i=0; i<EXTRUDERS; i++) _draw_heater_status(6 + i * 25, i);
239 214
 
240 215
   // Heatbed
241
-  _draw_heater_status(81, -1);
242
- 
243
- // Fan
244
- u8g.setFont(FONT_STATUSMENU);
245
- u8g.setPrintPos(104,27);
246
- #if defined(FAN_PIN) && FAN_PIN > -1
247
- u8g.print(itostr3(int((fanSpeed*100)/256 + 1)));
248
- u8g.print("%");
249
- #else
250
- u8g.print("---");
251
- #endif
252
- 
216
+  if (EXTRUDERS < 4) _draw_heater_status(81, -1);
253 217
  
254
- // X, Y, Z-Coordinates
255
- u8g.setFont(FONT_STATUSMENU);
256
- u8g.drawBox(0,29,128,10);
257
- u8g.setColorIndex(0);	// white on black
258
- u8g.setPrintPos(2,37);
259
- u8g.print("X");
260
- u8g.drawPixel(8,33);
261
- u8g.drawPixel(8,35);
262
- u8g.setPrintPos(10,37);
263
- u8g.print(ftostr31ns(current_position[X_AXIS]));
264
- u8g.setPrintPos(43,37);
265
- lcd_printPGM(PSTR("Y"));
266
- u8g.drawPixel(49,33);
267
- u8g.drawPixel(49,35);
268
- u8g.setPrintPos(51,37);
269
- u8g.print(ftostr31ns(current_position[Y_AXIS]));
270
- u8g.setPrintPos(83,37);
271
- u8g.print("Z");
272
- u8g.drawPixel(89,33);
273
- u8g.drawPixel(89,35);
274
- u8g.setPrintPos(91,37);
275
- u8g.print(ftostr31(current_position[Z_AXIS]));
276
- u8g.setColorIndex(1);	// black on white
218
+  // Fan
219
+  u8g.setFont(FONT_STATUSMENU);
220
+  u8g.setPrintPos(104,27);
221
+  #if defined(FAN_PIN) && FAN_PIN > -1
222
+    int per = ((fanSpeed + 1) * 100) / 256;
223
+    if (per) {
224
+      u8g.print(itostr3(per));
225
+      u8g.print("%");
226
+    }
227
+    else
228
+  #endif
229
+    {
230
+      u8g.print("---");
231
+    }
232
+
233
+  // X, Y, Z-Coordinates
234
+  u8g.setFont(FONT_STATUSMENU);
235
+  u8g.drawBox(0,29,128,10);
236
+  u8g.setColorIndex(0); // white on black
237
+  u8g.setPrintPos(2,37);
238
+  u8g.print("X");
239
+  u8g.drawPixel(8,33);
240
+  u8g.drawPixel(8,35);
241
+  u8g.setPrintPos(10,37);
242
+  u8g.print(ftostr31ns(current_position[X_AXIS]));
243
+  u8g.setPrintPos(43,37);
244
+  lcd_printPGM(PSTR("Y"));
245
+  u8g.drawPixel(49,33);
246
+  u8g.drawPixel(49,35);
247
+  u8g.setPrintPos(51,37);
248
+  u8g.print(ftostr31ns(current_position[Y_AXIS]));
249
+  u8g.setPrintPos(83,37);
250
+  u8g.print("Z");
251
+  u8g.drawPixel(89,33);
252
+  u8g.drawPixel(89,35);
253
+  u8g.setPrintPos(91,37);
254
+  u8g.print(ftostr31(current_position[Z_AXIS]));
255
+  u8g.setColorIndex(1); // black on white
277 256
  
278
- // Feedrate
279
- u8g.setFont(u8g_font_6x10_marlin);
280
- u8g.setPrintPos(3,49);
281
- u8g.print(LCD_STR_FEEDRATE[0]);
282
- u8g.setFont(FONT_STATUSMENU);
283
- u8g.setPrintPos(12,48);
284
- u8g.print(itostr3(feedmultiply));
285
- u8g.print('%');
286
-
287
- // Status line
288
- u8g.setFont(FONT_STATUSMENU);
289
- u8g.setPrintPos(0,61);
290
- #ifndef FILAMENT_LCD_DISPLAY
291
- 	u8g.print(lcd_status_message);
292
- #else
293
-	if(message_millis+5000>millis()){  //Display both Status message line and Filament display on the last line
294
-	 u8g.print(lcd_status_message);
295
- 	}
296
- 	else
297
-	{
298
-	 lcd_printPGM(PSTR("dia:"));
299
-	 u8g.print(ftostr12ns(filament_width_meas));
300
-	 lcd_printPGM(PSTR(" factor:"));
301
-	 u8g.print(itostr3(extrudemultiply));
302
-	 u8g.print('%');
303
-	}
304
- #endif 	
257
+  // Feedrate
258
+  u8g.setFont(FONT_MENU);
259
+  u8g.setPrintPos(3,49);
260
+  u8g.print(LCD_STR_FEEDRATE[0]);
261
+  u8g.setFont(FONT_STATUSMENU);
262
+  u8g.setPrintPos(12,48);
263
+  u8g.print(itostr3(feedmultiply));
264
+  u8g.print('%');
305 265
 
266
+  // Status line
267
+  u8g.setFont(FONT_STATUSMENU);
268
+  u8g.setPrintPos(0,61);
269
+  #ifndef FILAMENT_LCD_DISPLAY
270
+    u8g.print(lcd_status_message);
271
+  #else
272
+    if (millis() < message_millis + 5000) {  //Display both Status message line and Filament display on the last line
273
+      u8g.print(lcd_status_message);
274
+    }
275
+    else {
276
+      lcd_printPGM(PSTR("dia:"));
277
+      u8g.print(ftostr12ns(filament_width_meas));
278
+      lcd_printPGM(PSTR(" factor:"));
279
+      u8g.print(itostr3(extrudemultiply));
280
+      u8g.print('%');
281
+    }
282
+  #endif
306 283
 }
307 284
 
308
-static void lcd_implementation_drawmenu_generic(uint8_t row, const char* pstr, char pre_char, char post_char)
309
-{
310
-    char c;
311
-    
312
-    uint8_t n = LCD_WIDTH - 1 - 2;
313
-		
314
-		if ((pre_char == '>') || (pre_char == LCD_STR_UPLEVEL[0] ))
315
-		   {
316
-			u8g.setColorIndex(1);		// black on white
317
-			u8g.drawBox (0, row*DOG_CHAR_HEIGHT + 3, 128, DOG_CHAR_HEIGHT);
318
-			u8g.setColorIndex(0);		// following text must be white on black
319
-		   } else u8g.setColorIndex(1); // unmarked text is black on white
320
-		
321
-		u8g.setPrintPos(0 * DOG_CHAR_WIDTH, (row + 1) * DOG_CHAR_HEIGHT);
322
-		u8g.print(pre_char == '>' ? ' ' : pre_char);	// Row selector is obsolete
323
-
324
-
325
-    while( (c = pgm_read_byte(pstr)) != '\0' )
326
-    {
327
-		u8g.print(c);
328
-        pstr++;
329
-        n--;
330
-    }
331
-    while(n--){
332
-					u8g.print(' ');
333
-		}
334
-	   
335
-		u8g.print(post_char);
336
-		u8g.print(' ');
337
-		u8g.setColorIndex(1);		// restore settings to black on white
285
+static void lcd_implementation_mark_as_selected(uint8_t row, char pr_char) {
286
+  if ((pr_char == '>') || (pr_char == LCD_STR_UPLEVEL[0] )) {
287
+    u8g.setColorIndex(1);  // black on white
288
+    u8g.drawBox (0, row*DOG_CHAR_HEIGHT + 3, 128, DOG_CHAR_HEIGHT);
289
+    u8g.setColorIndex(0);  // following text must be white on black
290
+  }
291
+  else {
292
+    u8g.setColorIndex(1); // unmarked text is black on white
293
+  }
294
+  u8g.setPrintPos(START_ROW * DOG_CHAR_WIDTH, (row + 1) * DOG_CHAR_HEIGHT);
338 295
 }
339 296
 
340
-static void _drawmenu_setting_edit_generic(uint8_t row, const char* pstr, char pre_char, const char* data, bool pgm) {
297
+static void lcd_implementation_drawmenu_generic(uint8_t row, const char* pstr, char pre_char, char post_char) {
341 298
   char c;
342
-  uint8_t n = LCD_WIDTH - 1 - 2 - (pgm ? strlen_P(data) : strlen(data));
343
-		
344
-  u8g.setPrintPos(0 * DOG_CHAR_WIDTH, (row + 1) * DOG_CHAR_HEIGHT);
345
-  u8g.print(pre_char);
299
+  uint8_t n = LCD_WIDTH - 2;
300
+
301
+  lcd_implementation_mark_as_selected(row, pre_char);
346 302
 
347
-  while( (c = pgm_read_byte(pstr)) != '\0' ) {
303
+  while((c = pgm_read_byte(pstr))) {
348 304
     u8g.print(c);
349 305
     pstr++;
350 306
     n--;
351 307
   }
308
+  while(n--) u8g.print(' ');
309
+  u8g.print(post_char);
310
+  u8g.print(' ');
311
+}
352 312
 
353
-  u8g.print(':');
313
+static void _drawmenu_setting_edit_generic(uint8_t row, const char* pstr, char pre_char, const char* data, bool pgm) {
314
+  char c;
315
+  uint8_t n = LCD_WIDTH - 2 - (pgm ? strlen_P(data) : (strlen(data)));
354 316
 
355
-  while(n--) u8g.print(' ');
317
+  lcd_implementation_mark_as_selected(row, pre_char);
356 318
 
319
+  while( (c = pgm_read_byte(pstr))) {
320
+    u8g.print(c);
321
+    pstr++;
322
+    n--;
323
+  }
324
+  u8g.print(':');
325
+  while(n--) u8g.print(' ');
357 326
   if (pgm) { lcd_printPGM(data); } else { u8g.print(data); }
358 327
 }
359 328
 
@@ -399,14 +368,33 @@ static void _drawmenu_setting_edit_generic(uint8_t row, const char* pstr, char p
399 368
 #define lcd_implementation_drawmenu_setting_edit_callback_bool_selected(row, pstr, pstr2, data, callback) lcd_implementation_drawmenu_setting_edit_generic_P(row, pstr, '>', (*(data))?PSTR(MSG_ON):PSTR(MSG_OFF))
400 369
 #define lcd_implementation_drawmenu_setting_edit_callback_bool(row, pstr, pstr2, data, callback) lcd_implementation_drawmenu_setting_edit_generic_P(row, pstr, ' ', (*(data))?PSTR(MSG_ON):PSTR(MSG_OFF))
401 370
 
402
-void lcd_implementation_drawedit(const char* pstr, char* value)
403
-{
404
-		u8g.setPrintPos(0 * DOG_CHAR_WIDTH_LARGE, (u8g.getHeight() - 1 - DOG_CHAR_HEIGHT_LARGE) - (1 * DOG_CHAR_HEIGHT_LARGE) - START_ROW );
405
-		u8g.setFont(u8g_font_9x18);
406
-		lcd_printPGM(pstr);
407
-		u8g.print(':');
408
-		u8g.setPrintPos((14 - strlen(value)) * DOG_CHAR_WIDTH_LARGE, (u8g.getHeight() - 1 - DOG_CHAR_HEIGHT_LARGE) - (1 * DOG_CHAR_HEIGHT_LARGE) - START_ROW );
409
-		u8g.print(value);
371
+void lcd_implementation_drawedit(const char* pstr, char* value) {
372
+  uint8_t rows = 1;
373
+  uint8_t lcd_width = LCD_WIDTH;
374
+  uint8_t char_width = DOG_CHAR_WIDTH;
375
+
376
+  #ifdef USE_BIG_EDIT_FONT
377
+    if (strlen_P(pstr) <= LCD_WIDTH_EDIT - 1) {
378
+      u8g.setFont(FONT_MENU_EDIT);
379
+      lcd_width = LCD_WIDTH_EDIT + 1;
380
+      char_width = DOG_CHAR_WIDTH_EDIT;
381
+      if (strlen_P(pstr) >= LCD_WIDTH_EDIT - strlen(value)) rows = 2;
382
+    }
383
+    else {
384
+      u8g.setFont(FONT_MENU);
385
+    }
386
+  #endif
387
+
388
+  if (strlen_P(pstr) > LCD_WIDTH - 2 - strlen(value)) rows = 2;
389
+
390
+  const float kHalfChar = DOG_CHAR_HEIGHT_EDIT / 2;
391
+  float rowHeight = u8g.getHeight() / (rows + 1); // 1/(rows+1) = 1/2 or 1/3
392
+
393
+  u8g.setPrintPos(0, rowHeight + kHalfChar);
394
+  lcd_printPGM(pstr);
395
+  u8g.print(':');
396
+  u8g.setPrintPos((lcd_width-1-strlen(value)) * char_width, rows * rowHeight + kHalfChar);
397
+  u8g.print(value);
410 398
 }
411 399
 
412 400
 static void _drawmenu_sd(uint8_t row, const char* pstr, const char* filename, char * const longFilename, bool isDir, bool isSelected) {
@@ -418,25 +406,15 @@ static void _drawmenu_sd(uint8_t row, const char* pstr, const char* filename, ch
418 406
     longFilename[n] = '\0';
419 407
   }
420 408
 
421
-  if (isSelected) {
422
-    u8g.setColorIndex(1); // black on white
423
-    u8g.drawBox (0, row*DOG_CHAR_HEIGHT + 3, 128, DOG_CHAR_HEIGHT);
424
-    u8g.setColorIndex(0); // following text must be white on black
425
-  }
426
-
427
-  u8g.setPrintPos(0 * DOG_CHAR_WIDTH, (row + 1) * DOG_CHAR_HEIGHT);
428
-  u8g.print(' ');	// Indent by 1 char
409
+  lcd_implementation_mark_as_selected(row, ((isSelected) ? '>' : ' '));
429 410
 
430 411
   if (isDir) u8g.print(LCD_STR_FOLDER[0]);
431
-
432 412
   while((c = *filename) != '\0') {
433 413
     u8g.print(c);
434 414
     filename++;
435 415
     n--;
436 416
   }
437 417
   while(n--) u8g.print(' ');
438
-
439
-  if (isSelected) u8g.setColorIndex(1); // black on white
440 418
 }
441 419
 
442 420
 #define lcd_implementation_drawmenu_sdfile_selected(row, pstr, filename, longFilename) _drawmenu_sd(row, pstr, filename, longFilename, false, true)
@@ -453,20 +431,16 @@ static void _drawmenu_sd(uint8_t row, const char* pstr, const char* filename, ch
453 431
 #define lcd_implementation_drawmenu_function_selected(row, pstr, data) lcd_implementation_drawmenu_generic(row, pstr, '>', ' ')
454 432
 #define lcd_implementation_drawmenu_function(row, pstr, data) lcd_implementation_drawmenu_generic(row, pstr, ' ', ' ')
455 433
 
456
-static void lcd_implementation_quick_feedback()
457
-{
458
-
459
-#if BEEPER > -1
434
+static void lcd_implementation_quick_feedback() {
435
+  #if BEEPER > -1
460 436
     SET_OUTPUT(BEEPER);
461
-    for(int8_t i=0;i<10;i++)
462
-    {
463
-		WRITE(BEEPER,HIGH);
464
-		delay(3);
465
-		WRITE(BEEPER,LOW);
466
-		delay(3);
437
+    for(int8_t i=0; i<10; i++) {
438
+      WRITE(BEEPER,HIGH);
439
+      delay(3);
440
+      WRITE(BEEPER,LOW);
441
+      delay(3);
467 442
     }
468
-#endif
443
+  #endif
469 444
 }
470
-#endif//ULTRA_LCD_IMPLEMENTATION_DOGM_H
471
-
472 445
 
446
+#endif //__DOGM_LCD_IMPLEMENTATION_H

+ 834
- 0
Marlin/example_configurations/Hephestos/Configuration.h Ver fichero

@@ -0,0 +1,834 @@
1
+#ifndef CONFIGURATION_H
2
+#define CONFIGURATION_H
3
+
4
+#include "boards.h"
5
+
6
+//===========================================================================
7
+//============================= Getting Started =============================
8
+//===========================================================================
9
+/*
10
+Here are some standard links for getting your machine calibrated:
11
+ * http://reprap.org/wiki/Calibration
12
+ * http://youtu.be/wAL9d7FgInk
13
+ * http://calculator.josefprusa.cz
14
+ * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide
15
+ * http://www.thingiverse.com/thing:5573
16
+ * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap
17
+ * http://www.thingiverse.com/thing:298812
18
+*/
19
+
20
+// This configuration file contains the basic settings.
21
+// Advanced settings can be found in Configuration_adv.h
22
+// BASIC SETTINGS: select your board type, temperature sensor type, axis scaling, and endstop configuration
23
+
24
+//===========================================================================
25
+//============================= DELTA Printer ===============================
26
+//===========================================================================
27
+// For a Delta printer replace the configuration files with the files in the
28
+// example_configurations/delta directory.
29
+//
30
+
31
+//===========================================================================
32
+//============================= SCARA Printer ===============================
33
+//===========================================================================
34
+// For a Delta printer replace the configuration files with the files in the
35
+// example_configurations/SCARA directory.
36
+//
37
+
38
+// User-specified version info of this build to display in [Pronterface, etc] terminal window during
39
+// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
40
+// build by the user have been successfully uploaded into firmware.
41
+#define STRING_VERSION "1.0.2"
42
+#define STRING_URL "reprap.org"
43
+#define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time
44
+#define STRING_CONFIG_H_AUTHOR "(bq Hephestos)" // Who made the changes.
45
+#define STRING_SPLASH_LINE1 "v" STRING_VERSION // will be shown during bootup in line 1
46
+//#define STRING_SPLASH_LINE2 STRING_VERSION_CONFIG_H // will be shown during bootup in line2
47
+
48
+// SERIAL_PORT selects which serial port should be used for communication with the host.
49
+// This allows the connection of wireless adapters (for instance) to non-default port pins.
50
+// Serial port 0 is still used by the Arduino bootloader regardless of this setting.
51
+#define SERIAL_PORT 0
52
+
53
+// This determines the communication speed of the printer
54
+#define BAUDRATE 115200
55
+
56
+// This enables the serial port associated to the Bluetooth interface
57
+//#define BTENABLED              // Enable BT interface on AT90USB devices
58
+
59
+// The following define selects which electronics board you have.
60
+// Please choose the name from boards.h that matches your setup
61
+#ifndef MOTHERBOARD
62
+  #define MOTHERBOARD BOARD_HEPHESTOS
63
+#endif
64
+
65
+// Define this to set a custom name for your generic Mendel,
66
+// #define CUSTOM_MENDEL_NAME "This Mendel"
67
+
68
+// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
69
+// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
70
+// #define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
71
+
72
+// This defines the number of extruders
73
+#define EXTRUDERS 1
74
+
75
+//// The following define selects which power supply you have. Please choose the one that matches your setup
76
+// 1 = ATX
77
+// 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC)
78
+
79
+#define POWER_SUPPLY 1
80
+
81
+// Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it.
82
+// #define PS_DEFAULT_OFF
83
+
84
+//===========================================================================
85
+//============================= Thermal Settings  ============================
86
+//===========================================================================
87
+//
88
+//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table
89
+//
90
+//// Temperature sensor settings:
91
+// -2 is thermocouple with MAX6675 (only for sensor 0)
92
+// -1 is thermocouple with AD595
93
+// 0 is not used
94
+// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup)
95
+// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup)
96
+// 3 is Mendel-parts thermistor (4.7k pullup)
97
+// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !!
98
+// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup)
99
+// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup)
100
+// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup)
101
+// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup)
102
+// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup)
103
+// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup)
104
+// 10 is 100k RS thermistor 198-961 (4.7k pullup)
105
+// 11 is 100k beta 3950 1% thermistor (4.7k pullup)
106
+// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed)
107
+// 13 is 100k Hisens 3950  1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" 
108
+// 20 is the PT100 circuit found in the Ultimainboard V2.x
109
+// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950
110
+//
111
+//    1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k
112
+//                          (but gives greater accuracy and more stable PID)
113
+// 51 is 100k thermistor - EPCOS (1k pullup)
114
+// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup)
115
+// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup)
116
+//
117
+// 1047 is Pt1000 with 4k7 pullup
118
+// 1010 is Pt1000 with 1k pullup (non standard)
119
+// 147 is Pt100 with 4k7 pullup
120
+// 110 is Pt100 with 1k pullup (non standard)
121
+
122
+#define TEMP_SENSOR_0 1
123
+#define TEMP_SENSOR_1 0
124
+#define TEMP_SENSOR_2 0
125
+#define TEMP_SENSOR_BED 0
126
+
127
+// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted.
128
+//#define TEMP_SENSOR_1_AS_REDUNDANT
129
+#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10
130
+
131
+// Actual temperature must be close to target for this long before M109 returns success
132
+#define TEMP_RESIDENCY_TIME 10  // (seconds)
133
+#define TEMP_HYSTERESIS 3       // (degC) range of +/- temperatures considered "close" to the target one
134
+#define TEMP_WINDOW     1       // (degC) Window around target to start the residency timer x degC early.
135
+
136
+// The minimal temperature defines the temperature below which the heater will not be enabled It is used
137
+// to check that the wiring to the thermistor is not broken.
138
+// Otherwise this would lead to the heater being powered on all the time.
139
+#define HEATER_0_MINTEMP 5
140
+#define HEATER_1_MINTEMP 5
141
+#define HEATER_2_MINTEMP 5
142
+#define BED_MINTEMP 5
143
+
144
+// When temperature exceeds max temp, your heater will be switched off.
145
+// This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure!
146
+// You should use MINTEMP for thermistor short/failure protection.
147
+#define HEATER_0_MAXTEMP 260
148
+#define HEATER_1_MAXTEMP 260
149
+#define HEATER_2_MAXTEMP 260
150
+#define BED_MAXTEMP 150
151
+
152
+// If your bed has low resistance e.g. .6 ohm and throws the fuse you can duty cycle it to reduce the
153
+// average current. The value should be an integer and the heat bed will be turned on for 1 interval of
154
+// HEATER_BED_DUTY_CYCLE_DIVIDER intervals.
155
+//#define HEATER_BED_DUTY_CYCLE_DIVIDER 4
156
+
157
+// If you want the M105 heater power reported in watts, define the BED_WATTS, and (shared for all extruders) EXTRUDER_WATTS
158
+//#define EXTRUDER_WATTS (12.0*12.0/6.7) //  P=I^2/R
159
+//#define BED_WATTS (12.0*12.0/1.1)      // P=I^2/R
160
+
161
+//===========================================================================
162
+//============================= PID Settings ================================
163
+//===========================================================================
164
+// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning
165
+
166
+// Comment the following line to disable PID and enable bang-bang.
167
+#define PIDTEMP
168
+#define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current
169
+#define PID_MAX BANG_MAX // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current
170
+#ifdef PIDTEMP
171
+  //#define PID_DEBUG // Sends debug data to the serial port.
172
+  //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX
173
+  //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay
174
+  //#define PID_PARAMS_PER_EXTRUDER // Uses separate PID parameters for each extruder (useful for mismatched extruders)
175
+                                    // Set/get with gcode: M301 E[extruder number, 0-2]
176
+  #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature
177
+                                  // is more then PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max.
178
+  #define PID_INTEGRAL_DRIVE_MAX PID_MAX  //limit for the integral term
179
+  #define K1 0.95 //smoothing factor within the PID
180
+  #define PID_dT ((OVERSAMPLENR * 10.0)/(F_CPU / 64.0 / 256.0)) //sampling period of the temperature routine
181
+
182
+// If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it
183
+// Ultimaker
184
+//  #define  DEFAULT_Kp 22.2
185
+//  #define  DEFAULT_Ki 1.08
186
+//  #define  DEFAULT_Kd 114
187
+
188
+// MakerGear
189
+//    #define  DEFAULT_Kp 7.0
190
+//    #define  DEFAULT_Ki 0.1
191
+//    #define  DEFAULT_Kd 12
192
+
193
+// Mendel Parts V9 on 12V
194
+//    #define  DEFAULT_Kp 63.0
195
+//    #define  DEFAULT_Ki 2.25
196
+//    #define  DEFAULT_Kd 440
197
+
198
+// Hephestos (i3)
199
+    #define  DEFAULT_Kp 23.05
200
+    #define  DEFAULT_Ki 2.00
201
+    #define  DEFAULT_Kd 66.47
202
+
203
+#endif // PIDTEMP
204
+
205
+//===========================================================================
206
+//============================= PID > Bed Temperature Control ===============
207
+//===========================================================================
208
+// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis
209
+//
210
+// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder.
211
+// If your PID_dT above is the default, and correct for your hardware/configuration, that means 7.689Hz,
212
+// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating.
213
+// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater.
214
+// If your configuration is significantly different than this and you don't understand the issues involved, you probably
215
+// shouldn't use bed PID until someone else verifies your hardware works.
216
+// If this is enabled, find your own PID constants below.
217
+//#define PIDTEMPBED
218
+//
219
+//#define BED_LIMIT_SWITCHING
220
+
221
+// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option.
222
+// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis)
223
+// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did,
224
+// so you shouldn't use it unless you are OK with PWM on your bed.  (see the comment on enabling PIDTEMPBED)
225
+#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current
226
+
227
+#ifdef PIDTEMPBED
228
+//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)
229
+//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10)
230
+    #define  DEFAULT_bedKp 10.00
231
+    #define  DEFAULT_bedKi .023
232
+    #define  DEFAULT_bedKd 305.4
233
+
234
+//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)
235
+//from pidautotune
236
+//    #define  DEFAULT_bedKp 97.1
237
+//    #define  DEFAULT_bedKi 1.41
238
+//    #define  DEFAULT_bedKd 1675.16
239
+
240
+// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles.
241
+#endif // PIDTEMPBED
242
+
243
+
244
+//this prevents dangerous Extruder moves, i.e. if the temperature is under the limit
245
+//can be software-disabled for whatever purposes by
246
+#define PREVENT_DANGEROUS_EXTRUDE
247
+//if PREVENT_DANGEROUS_EXTRUDE is on, you can still disable (uncomment) very long bits of extrusion separately.
248
+#define PREVENT_LENGTHY_EXTRUDE
249
+
250
+#define EXTRUDE_MINTEMP 170
251
+#define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances.
252
+
253
+//===========================================================================
254
+//============================= Thermal Runaway Protection ==================
255
+//===========================================================================
256
+/*
257
+This is a feature to protect your printer from burn up in flames if it has
258
+a thermistor coming off place (this happened to a friend of mine recently and
259
+motivated me writing this feature).
260
+
261
+The issue: If a thermistor come off, it will read a lower temperature than actual.
262
+The system will turn the heater on forever, burning up the filament and anything
263
+else around.
264
+
265
+After the temperature reaches the target for the first time, this feature will 
266
+start measuring for how long the current temperature stays below the target 
267
+minus _HYSTERESIS (set_temperature - THERMAL_RUNAWAY_PROTECTION_HYSTERESIS).
268
+
269
+If it stays longer than _PERIOD, it means the thermistor temperature
270
+cannot catch up with the target, so something *may be* wrong. Then, to be on the
271
+safe side, the system will he halt.
272
+
273
+Bear in mind the count down will just start AFTER the first time the 
274
+thermistor temperature is over the target, so you will have no problem if
275
+your extruder heater takes 2 minutes to hit the target on heating.
276
+
277
+*/
278
+// If you want to enable this feature for all your extruder heaters,
279
+// uncomment the 2 defines below:
280
+
281
+// Parameters for all extruder heaters
282
+//#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds
283
+//#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius
284
+
285
+// If you want to enable this feature for your bed heater,
286
+// uncomment the 2 defines below:
287
+
288
+// Parameters for the bed heater
289
+//#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds
290
+//#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius
291
+
292
+
293
+//===========================================================================
294
+//============================= Mechanical Settings =========================
295
+//===========================================================================
296
+
297
+// Uncomment the following line to enable CoreXY kinematics
298
+// #define COREXY
299
+
300
+// coarse Endstop Settings
301
+#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors
302
+
303
+#ifndef ENDSTOPPULLUPS
304
+  // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined
305
+  // #define ENDSTOPPULLUP_XMAX
306
+  // #define ENDSTOPPULLUP_YMAX
307
+  // #define ENDSTOPPULLUP_ZMAX
308
+  // #define ENDSTOPPULLUP_XMIN
309
+  // #define ENDSTOPPULLUP_YMIN
310
+  // #define ENDSTOPPULLUP_ZMIN
311
+#endif
312
+
313
+#ifdef ENDSTOPPULLUPS
314
+  #define ENDSTOPPULLUP_XMAX
315
+  #define ENDSTOPPULLUP_YMAX
316
+  #define ENDSTOPPULLUP_ZMAX
317
+  #define ENDSTOPPULLUP_XMIN
318
+  #define ENDSTOPPULLUP_YMIN
319
+  #define ENDSTOPPULLUP_ZMIN
320
+#endif
321
+
322
+// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins.
323
+const bool X_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
324
+const bool Y_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
325
+const bool Z_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
326
+const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
327
+const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
328
+const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
329
+//#define DISABLE_MAX_ENDSTOPS
330
+//#define DISABLE_MIN_ENDSTOPS
331
+
332
+// Disable max endstops for compatibility with endstop checking routine
333
+#if defined(COREXY) && !defined(DISABLE_MAX_ENDSTOPS)
334
+  #define DISABLE_MAX_ENDSTOPS
335
+#endif
336
+
337
+// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
338
+#define X_ENABLE_ON 0
339
+#define Y_ENABLE_ON 0
340
+#define Z_ENABLE_ON 0
341
+#define E_ENABLE_ON 0 // For all extruders
342
+
343
+// Disables axis when it's not being used.
344
+#define DISABLE_X false
345
+#define DISABLE_Y false
346
+#define DISABLE_Z false
347
+#define DISABLE_E false // For all extruders
348
+#define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled
349
+
350
+#define INVERT_X_DIR true    // for Mendel set to false, for Orca set to true
351
+#define INVERT_Y_DIR false    // for Mendel set to true, for Orca set to false
352
+#define INVERT_Z_DIR true     // for Mendel set to false, for Orca set to true
353
+#define INVERT_E0_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
354
+#define INVERT_E1_DIR false    // for direct drive extruder v9 set to true, for geared extruder set to false
355
+#define INVERT_E2_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
356
+
357
+// ENDSTOP SETTINGS:
358
+// Sets direction of endstops when homing; 1=MAX, -1=MIN
359
+#define X_HOME_DIR -1
360
+#define Y_HOME_DIR -1
361
+#define Z_HOME_DIR -1
362
+
363
+#define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS.
364
+#define max_software_endstops true  // If true, axis won't move to coordinates greater than the defined lengths below.
365
+
366
+// Travel limits after homing (units in mm)
367
+#define X_MAX_POS 215
368
+#define X_MIN_POS 0
369
+#define Y_MAX_POS 210
370
+#define Y_MIN_POS 0
371
+#define Z_MAX_POS 180
372
+#define Z_MIN_POS 0
373
+
374
+#define X_MAX_LENGTH (X_MAX_POS - X_MIN_POS)
375
+#define Y_MAX_LENGTH (Y_MAX_POS - Y_MIN_POS)
376
+#define Z_MAX_LENGTH (Z_MAX_POS - Z_MIN_POS)
377
+
378
+
379
+//===========================================================================
380
+//============================= Bed Auto Leveling ===========================
381
+//===========================================================================
382
+
383
+//#define ENABLE_AUTO_BED_LEVELING // Delete the comment to enable (remove // at the start of the line)
384
+#define Z_PROBE_REPEATABILITY_TEST  // If not commented out, Z-Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
385
+
386
+#ifdef ENABLE_AUTO_BED_LEVELING
387
+
388
+// There are 2 different ways to pick the X and Y locations to probe:
389
+
390
+//  - "grid" mode
391
+//    Probe every point in a rectangular grid
392
+//    You must specify the rectangle, and the density of sample points
393
+//    This mode is preferred because there are more measurements.
394
+//    It used to be called ACCURATE_BED_LEVELING but "grid" is more descriptive
395
+
396
+//  - "3-point" mode
397
+//    Probe 3 arbitrary points on the bed (that aren't colinear)
398
+//    You must specify the X & Y coordinates of all 3 points
399
+
400
+  #define AUTO_BED_LEVELING_GRID
401
+  // with AUTO_BED_LEVELING_GRID, the bed is sampled in a
402
+  // AUTO_BED_LEVELING_GRID_POINTSxAUTO_BED_LEVELING_GRID_POINTS grid
403
+  // and least squares solution is calculated
404
+  // Note: this feature occupies 10'206 byte
405
+  #ifdef AUTO_BED_LEVELING_GRID
406
+
407
+    // set the rectangle in which to probe
408
+    #define LEFT_PROBE_BED_POSITION 15
409
+    #define RIGHT_PROBE_BED_POSITION 170
410
+    #define BACK_PROBE_BED_POSITION 180
411
+    #define FRONT_PROBE_BED_POSITION 20
412
+
413
+     // set the number of grid points per dimension
414
+     // I wouldn't see a reason to go above 3 (=9 probing points on the bed)
415
+    #define AUTO_BED_LEVELING_GRID_POINTS 2
416
+
417
+
418
+  #else  // not AUTO_BED_LEVELING_GRID
419
+    // with no grid, just probe 3 arbitrary points.  A simple cross-product
420
+    // is used to esimate the plane of the print bed
421
+
422
+      #define ABL_PROBE_PT_1_X 15
423
+      #define ABL_PROBE_PT_1_Y 180
424
+      #define ABL_PROBE_PT_2_X 15
425
+      #define ABL_PROBE_PT_2_Y 20
426
+      #define ABL_PROBE_PT_3_X 170
427
+      #define ABL_PROBE_PT_3_Y 20
428
+
429
+  #endif // AUTO_BED_LEVELING_GRID
430
+
431
+
432
+  // these are the offsets to the probe relative to the extruder tip (Hotend - Probe)
433
+  // X and Y offsets must be integers
434
+  #define X_PROBE_OFFSET_FROM_EXTRUDER -25
435
+  #define Y_PROBE_OFFSET_FROM_EXTRUDER -29
436
+  #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35
437
+
438
+  #define Z_RAISE_BEFORE_HOMING 4       // (in mm) Raise Z before homing (G28) for Probe Clearance.
439
+                                        // Be sure you have this distance over your Z_MAX_POS in case
440
+
441
+  #define XY_TRAVEL_SPEED 8000         // X and Y axis travel speed between probes, in mm/min
442
+
443
+  #define Z_RAISE_BEFORE_PROBING 15    //How much the extruder will be raised before traveling to the first probing point.
444
+  #define Z_RAISE_BETWEEN_PROBINGS 5  //How much the extruder will be raised when traveling from between next probing points
445
+
446
+  //#define Z_PROBE_SLED // turn on if you have a z-probe mounted on a sled like those designed by Charles Bell
447
+  //#define SLED_DOCKING_OFFSET 5 // the extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like.
448
+
449
+  //If defined, the Probe servo will be turned on only during movement and then turned off to avoid jerk
450
+  //The value is the delay to turn the servo off after powered on - depends on the servo speed; 300ms is good value, but you can try lower it.
451
+  // You MUST HAVE the SERVO_ENDSTOPS defined to use here a value higher than zero otherwise your code will not compile.
452
+
453
+//  #define PROBE_SERVO_DEACTIVATION_DELAY 300
454
+
455
+
456
+//If you have enabled the Bed Auto Leveling and are using the same Z Probe for Z Homing,
457
+//it is highly recommended you let this Z_SAFE_HOMING enabled!!!
458
+
459
+  #define Z_SAFE_HOMING   // This feature is meant to avoid Z homing with probe outside the bed area.
460
+                          // When defined, it will:
461
+                          // - Allow Z homing only after X and Y homing AND stepper drivers still enabled
462
+                          // - If stepper drivers timeout, it will need X and Y homing again before Z homing
463
+                          // - Position the probe in a defined XY point before Z Homing when homing all axis (G28)
464
+                          // - Block Z homing only when the probe is outside bed area.
465
+
466
+  #ifdef Z_SAFE_HOMING
467
+
468
+    #define Z_SAFE_HOMING_X_POINT (X_MAX_LENGTH/2)    // X point for Z homing when homing all axis (G28)
469
+    #define Z_SAFE_HOMING_Y_POINT (Y_MAX_LENGTH/2)    // Y point for Z homing when homing all axis (G28)
470
+
471
+  #endif
472
+
473
+  #ifdef AUTO_BED_LEVELING_GRID	// Check if Probe_Offset * Grid Points is greater than Probing Range
474
+    #if X_PROBE_OFFSET_FROM_EXTRUDER < 0
475
+      #if (-(X_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (RIGHT_PROBE_BED_POSITION - LEFT_PROBE_BED_POSITION))
476
+	     #error "The X axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS"
477
+	  #endif
478
+	#else
479
+      #if ((X_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (RIGHT_PROBE_BED_POSITION - LEFT_PROBE_BED_POSITION))
480
+	     #error "The X axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS"
481
+	  #endif
482
+	#endif
483
+    #if Y_PROBE_OFFSET_FROM_EXTRUDER < 0
484
+      #if (-(Y_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION))
485
+	     #error "The Y axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS"
486
+	  #endif
487
+	#else
488
+      #if ((Y_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION))
489
+	     #error "The Y axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS"
490
+	  #endif
491
+	#endif
492
+
493
+	
494
+  #endif
495
+  
496
+#endif // ENABLE_AUTO_BED_LEVELING
497
+
498
+
499
+// The position of the homing switches
500
+//#define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used
501
+//#define BED_CENTER_AT_0_0  // If defined, the center of the bed is at (X=0, Y=0)
502
+
503
+//Manual homing switch locations:
504
+// For deltabots this means top and center of the Cartesian print volume.
505
+#define MANUAL_X_HOME_POS 0
506
+#define MANUAL_Y_HOME_POS 0
507
+#define MANUAL_Z_HOME_POS 0
508
+//#define MANUAL_Z_HOME_POS 402 // For delta: Distance between nozzle and print surface after homing.
509
+
510
+//// MOVEMENT SETTINGS
511
+#define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E
512
+#define HOMING_FEEDRATE {2000, 2000, 150, 0}  // set the homing speeds (mm/min)
513
+
514
+// default settings
515
+
516
+#define DEFAULT_AXIS_STEPS_PER_UNIT   {80,80,4000,100.47095761381482}  // default steps per unit for Ultimaker
517
+#define DEFAULT_MAX_FEEDRATE          {250, 250, 3.3, 25}    // (mm/sec)
518
+#define DEFAULT_MAX_ACCELERATION      {3000,3000,100,10000}    // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot.
519
+
520
+#define DEFAULT_ACCELERATION          1000    // X, Y, Z and E max acceleration in mm/s^2 for printing moves
521
+#define DEFAULT_RETRACT_ACCELERATION  1000   // X, Y, Z and E max acceleration in mm/s^2 for retracts
522
+
523
+// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
524
+// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
525
+// For the other hotends it is their distance from the extruder 0 hotend.
526
+// #define EXTRUDER_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
527
+// #define EXTRUDER_OFFSET_Y {0.0, 5.00}  // (in mm) for each extruder, offset of the hotend on the Y axis
528
+
529
+// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously)
530
+#define DEFAULT_XYJERK                10.0    // (mm/sec)
531
+#define DEFAULT_ZJERK                 0.4     // (mm/sec)
532
+#define DEFAULT_EJERK                 5.0    // (mm/sec)
533
+
534
+
535
+//===========================================================================
536
+//============================= Additional Features =========================
537
+//===========================================================================
538
+
539
+// Custom M code points
540
+#define CUSTOM_M_CODES
541
+#ifdef CUSTOM_M_CODES
542
+  #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851
543
+  #define Z_PROBE_OFFSET_RANGE_MIN -15
544
+  #define Z_PROBE_OFFSET_RANGE_MAX -5
545
+#endif
546
+
547
+
548
+// EEPROM
549
+// The microcontroller can store settings in the EEPROM, e.g. max velocity...
550
+// M500 - stores parameters in EEPROM
551
+// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).
552
+// M502 - reverts to the default "factory settings".  You still need to store them in EEPROM afterwards if you want to.
553
+//define this to enable EEPROM support
554
+//#define EEPROM_SETTINGS
555
+//to disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out:
556
+// please keep turned on if you can.
557
+//#define EEPROM_CHITCHAT
558
+
559
+// Preheat Constants
560
+#define PLA_PREHEAT_HOTEND_TEMP 200
561
+#define PLA_PREHEAT_HPB_TEMP 0
562
+#define PLA_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
563
+
564
+#define ABS_PREHEAT_HOTEND_TEMP 220
565
+#define ABS_PREHEAT_HPB_TEMP 100
566
+#define ABS_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
567
+
568
+//LCD and SD support
569
+
570
+// Character based displays can have different extended charsets.
571
+#define DISPLAY_CHARSET_HD44780_JAPAN     // "ääööüüß23°"
572
+//#define DISPLAY_CHARSET_HD44780_WESTERN // "ÄäÖöÜüß²³°" if you see a '~' instead of a 'arrow_right' at the right of submenuitems - this is the right one.
573
+
574
+#define ULTRA_LCD  //general LCD support, also 16x2
575
+//#define DOGLCD  // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)
576
+#define SDSUPPORT // Enable SD Card Support in Hardware Console
577
+//#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error)
578
+//#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication
579
+//#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder
580
+//#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking
581
+//#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
582
+#define ULTIPANEL  //the UltiPanel as on Thingiverse
583
+//#define LCD_FEEDBACK_FREQUENCY_HZ 1000	// this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
584
+//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click
585
+
586
+// The MaKr3d Makr-Panel with graphic controller and SD support
587
+// http://reprap.org/wiki/MaKr3d_MaKrPanel
588
+//#define MAKRPANEL
589
+
590
+// The RepRapDiscount Smart Controller (white PCB)
591
+// http://reprap.org/wiki/RepRapDiscount_Smart_Controller
592
+#define REPRAP_DISCOUNT_SMART_CONTROLLER
593
+
594
+// The GADGETS3D G3D LCD/SD Controller (blue PCB)
595
+// http://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel
596
+//#define G3D_PANEL
597
+
598
+// The RepRapDiscount FULL GRAPHIC Smart Controller (quadratic white PCB)
599
+// http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller
600
+//
601
+// ==> REMEMBER TO INSTALL U8glib to your ARDUINO library folder: http://code.google.com/p/u8glib/wiki/u8glib
602
+//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
603
+
604
+// The RepRapWorld REPRAPWORLD_KEYPAD v1.1
605
+// http://reprapworld.com/?products_details&products_id=202&cPath=1591_1626
606
+//#define REPRAPWORLD_KEYPAD
607
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0 // how much should be moved when a key is pressed, eg 10.0 means 10mm per click
608
+
609
+// The Elefu RA Board Control Panel
610
+// http://www.elefu.com/index.php?route=product/product&product_id=53
611
+// REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C
612
+//#define RA_CONTROL_PANEL
613
+
614
+//automatic expansion
615
+#if defined (MAKRPANEL)
616
+ #define DOGLCD
617
+ #define SDSUPPORT
618
+ #define ULTIPANEL
619
+ #define NEWPANEL
620
+ #define DEFAULT_LCD_CONTRAST 17
621
+#endif
622
+
623
+#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
624
+ #define DOGLCD
625
+ #define U8GLIB_ST7920
626
+ #define REPRAP_DISCOUNT_SMART_CONTROLLER
627
+#endif
628
+
629
+#if defined(ULTIMAKERCONTROLLER) || defined(REPRAP_DISCOUNT_SMART_CONTROLLER) || defined(G3D_PANEL)
630
+ #define ULTIPANEL
631
+ #define NEWPANEL
632
+#endif
633
+
634
+#if defined(REPRAPWORLD_KEYPAD)
635
+  #define NEWPANEL
636
+  #define ULTIPANEL
637
+#endif
638
+#if defined(RA_CONTROL_PANEL)
639
+ #define ULTIPANEL
640
+ #define NEWPANEL
641
+ #define LCD_I2C_TYPE_PCA8574
642
+ #define LCD_I2C_ADDRESS 0x27   // I2C Address of the port expander
643
+#endif
644
+
645
+//I2C PANELS
646
+
647
+//#define LCD_I2C_SAINSMART_YWROBOT
648
+#ifdef LCD_I2C_SAINSMART_YWROBOT
649
+  // This uses the LiquidCrystal_I2C library ( https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home )
650
+  // Make sure it is placed in the Arduino libraries directory.
651
+  #define LCD_I2C_TYPE_PCF8575
652
+  #define LCD_I2C_ADDRESS 0x27   // I2C Address of the port expander
653
+  #define NEWPANEL
654
+  #define ULTIPANEL
655
+#endif
656
+
657
+// PANELOLU2 LCD with status LEDs, separate encoder and click inputs
658
+//#define LCD_I2C_PANELOLU2
659
+#ifdef LCD_I2C_PANELOLU2
660
+  // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 )
661
+  // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory.
662
+  // (v1.2.3 no longer requires you to define PANELOLU in the LiquidTWI2.h library header file)
663
+  // Note: The PANELOLU2 encoder click input can either be directly connected to a pin
664
+  //       (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1).
665
+  #define LCD_I2C_TYPE_MCP23017
666
+  #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
667
+  #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD
668
+  #define NEWPANEL
669
+  #define ULTIPANEL
670
+
671
+  #ifndef ENCODER_PULSES_PER_STEP
672
+	#define ENCODER_PULSES_PER_STEP 4
673
+  #endif
674
+
675
+  #ifndef ENCODER_STEPS_PER_MENU_ITEM
676
+	#define ENCODER_STEPS_PER_MENU_ITEM 1
677
+  #endif
678
+
679
+
680
+  #ifdef LCD_USE_I2C_BUZZER
681
+	#define LCD_FEEDBACK_FREQUENCY_HZ 1000
682
+	#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100
683
+  #endif
684
+
685
+#endif
686
+
687
+// Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs
688
+//#define LCD_I2C_VIKI
689
+#ifdef LCD_I2C_VIKI
690
+  // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 )
691
+  // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory.
692
+  // Note: The pause/stop/resume LCD button pin should be connected to the Arduino
693
+  //       BTN_ENC pin (or set BTN_ENC to -1 if not used)
694
+  #define LCD_I2C_TYPE_MCP23017
695
+  #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
696
+  #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD (requires LiquidTWI2 v1.2.3 or later)
697
+  #define NEWPANEL
698
+  #define ULTIPANEL
699
+#endif
700
+
701
+// Shift register panels
702
+// ---------------------
703
+// 2 wire Non-latching LCD SR from:
704
+// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection 
705
+
706
+//#define SAV_3DLCD
707
+#ifdef SAV_3DLCD
708
+   #define SR_LCD_2W_NL    // Non latching 2 wire shiftregister
709
+   #define NEWPANEL
710
+   #define ULTIPANEL
711
+#endif
712
+
713
+
714
+#ifdef ULTIPANEL
715
+//  #define NEWPANEL  //enable this if you have a click-encoder panel
716
+  #define SDSUPPORT
717
+  #define ULTRA_LCD
718
+  #ifdef DOGLCD // Change number of lines to match the DOG graphic display
719
+    #define LCD_WIDTH 20
720
+    #define LCD_HEIGHT 5
721
+  #else
722
+    #define LCD_WIDTH 20
723
+    #define LCD_HEIGHT 4
724
+  #endif
725
+#else //no panel but just LCD
726
+  #ifdef ULTRA_LCD
727
+  #ifdef DOGLCD // Change number of lines to match the 128x64 graphics display
728
+    #define LCD_WIDTH 20
729
+    #define LCD_HEIGHT 5
730
+  #else
731
+    #define LCD_WIDTH 16
732
+    #define LCD_HEIGHT 2
733
+  #endif
734
+  #endif
735
+#endif
736
+
737
+// default LCD contrast for dogm-like LCD displays
738
+#ifdef DOGLCD
739
+# ifndef DEFAULT_LCD_CONTRAST
740
+#  define DEFAULT_LCD_CONTRAST 32
741
+# endif
742
+#endif
743
+
744
+// Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino
745
+//#define FAST_PWM_FAN
746
+
747
+// Temperature status LEDs that display the hotend and bet temperature.
748
+// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
749
+// Otherwise the RED led is on. There is 1C hysteresis.
750
+//#define TEMP_STAT_LEDS
751
+
752
+// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency
753
+// which is not ass annoying as with the hardware PWM. On the other hand, if this frequency
754
+// is too low, you should also increment SOFT_PWM_SCALE.
755
+//#define FAN_SOFT_PWM
756
+
757
+// Incrementing this by 1 will double the software PWM frequency,
758
+// affecting heaters, and the fan if FAN_SOFT_PWM is enabled.
759
+// However, control resolution will be halved for each increment;
760
+// at zero value, there are 128 effective control positions.
761
+#define SOFT_PWM_SCALE 0
762
+
763
+// M240  Triggers a camera by emulating a Canon RC-1 Remote
764
+// Data from: http://www.doc-diy.net/photo/rc-1_hacked/
765
+// #define PHOTOGRAPH_PIN     23
766
+
767
+// SF send wrong arc g-codes when using Arc Point as fillet procedure
768
+//#define SF_ARC_FIX
769
+
770
+// Support for the BariCUDA Paste Extruder.
771
+//#define BARICUDA
772
+
773
+//define BlinkM/CyzRgb Support
774
+//#define BLINKM
775
+
776
+/*********************************************************************\
777
+* R/C SERVO support
778
+* Sponsored by TrinityLabs, Reworked by codexmas
779
+**********************************************************************/
780
+
781
+// Number of servos
782
+//
783
+// If you select a configuration below, this will receive a default value and does not need to be set manually
784
+// set it manually if you have more servos than extruders and wish to manually control some
785
+// leaving it undefined or defining as 0 will disable the servo subsystem
786
+// If unsure, leave commented / disabled
787
+//
788
+//#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
789
+
790
+// Servo Endstops
791
+//
792
+// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes.
793
+// Use M206 command to correct for switch height offset to actual nozzle height. Store that setting with M500.
794
+//
795
+//#define SERVO_ENDSTOPS {-1, -1, 0} // Servo index for X, Y, Z. Disable with -1
796
+//#define SERVO_ENDSTOP_ANGLES {0,0, 0,0, 70,0} // X,Y,Z Axis Extend and Retract angles
797
+
798
+/**********************************************************************\
799
+ * Support for a filament diameter sensor
800
+ * Also allows adjustment of diameter at print time (vs  at slicing)
801
+ * Single extruder only at this point (extruder 0)
802
+ * 
803
+ * Motherboards
804
+ * 34 - RAMPS1.4 - uses Analog input 5 on the AUX2 connector 
805
+ * 81 - Printrboard - Uses Analog input 2 on the Exp1 connector (version B,C,D,E)
806
+ * 301 - Rambo  - uses Analog input 3
807
+ * Note may require analog pins to be defined for different motherboards
808
+ **********************************************************************/
809
+// Uncomment below to enable
810
+//#define FILAMENT_SENSOR
811
+
812
+#define FILAMENT_SENSOR_EXTRUDER_NUM	0  //The number of the extruder that has the filament sensor (0,1,2)
813
+#define MEASUREMENT_DELAY_CM			14  //measurement delay in cm.  This is the distance from filament sensor to middle of barrel
814
+
815
+#define DEFAULT_NOMINAL_FILAMENT_DIA  3.0  //Enter the diameter (in mm) of the filament generally used (3.0 mm or 1.75 mm) - this is then used in the slicer software.  Used for sensor reading validation
816
+#define MEASURED_UPPER_LIMIT          3.30  //upper limit factor used for sensor reading validation in mm
817
+#define MEASURED_LOWER_LIMIT          1.90  //lower limit factor for sensor reading validation in mm
818
+#define MAX_MEASUREMENT_DELAY			20  //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM  and lower number saves RAM)
819
+
820
+//defines used in the code
821
+#define DEFAULT_MEASURED_FILAMENT_DIA  DEFAULT_NOMINAL_FILAMENT_DIA  //set measured to nominal initially 
822
+
823
+//When using an LCD, uncomment the line below to display the Filament sensor data on the last line instead of status.  Status will appear for 5 sec.
824
+//#define FILAMENT_LCD_DISPLAY
825
+
826
+
827
+
828
+
829
+
830
+
831
+#include "Configuration_adv.h"
832
+#include "thermistortables.h"
833
+
834
+#endif //__CONFIGURATION_H

+ 535
- 0
Marlin/example_configurations/Hephestos/Configuration_adv.h Ver fichero

@@ -0,0 +1,535 @@
1
+#ifndef CONFIGURATION_ADV_H
2
+#define CONFIGURATION_ADV_H
3
+
4
+//===========================================================================
5
+//=============================Thermal Settings  ============================
6
+//===========================================================================
7
+
8
+#ifdef BED_LIMIT_SWITCHING
9
+  #define BED_HYSTERESIS 2 //only disable heating if T>target+BED_HYSTERESIS and enable heating if T>target-BED_HYSTERESIS
10
+#endif
11
+#define BED_CHECK_INTERVAL 5000 //ms between checks in bang-bang control
12
+
13
+//// Heating sanity check:
14
+// This waits for the watch period in milliseconds whenever an M104 or M109 increases the target temperature
15
+// If the temperature has not increased at the end of that period, the target temperature is set to zero.
16
+// It can be reset with another M104/M109. This check is also only triggered if the target temperature and the current temperature
17
+//  differ by at least 2x WATCH_TEMP_INCREASE
18
+//#define WATCH_TEMP_PERIOD 40000 //40 seconds
19
+//#define WATCH_TEMP_INCREASE 10  //Heat up at least 10 degree in 20 seconds
20
+
21
+#ifdef PIDTEMP
22
+  // this adds an experimental additional term to the heating power, proportional to the extrusion speed.
23
+  // if Kc is chosen well, the additional required power due to increased melting should be compensated.
24
+  #define PID_ADD_EXTRUSION_RATE
25
+  #ifdef PID_ADD_EXTRUSION_RATE
26
+    #define  DEFAULT_Kc (1) //heating power=Kc*(e_speed)
27
+  #endif
28
+#endif
29
+
30
+
31
+//automatic temperature: The hot end target temperature is calculated by all the buffered lines of gcode.
32
+//The maximum buffered steps/sec of the extruder motor are called "se".
33
+//You enter the autotemp mode by a M109 S<mintemp> B<maxtemp> F<factor>
34
+// the target temperature is set to mintemp+factor*se[steps/sec] and limited by mintemp and maxtemp
35
+// you exit the value by any M109 without F*
36
+// Also, if the temperature is set to a value <mintemp, it is not changed by autotemp.
37
+// on an Ultimaker, some initial testing worked with M109 S215 B260 F1 in the start.gcode
38
+#define AUTOTEMP
39
+#ifdef AUTOTEMP
40
+  #define AUTOTEMP_OLDWEIGHT 0.98
41
+#endif
42
+
43
+//Show Temperature ADC value
44
+//The M105 command return, besides traditional information, the ADC value read from temperature sensors.
45
+//#define SHOW_TEMP_ADC_VALUES
46
+
47
+//  extruder run-out prevention.
48
+//if the machine is idle, and the temperature over MINTEMP, every couple of SECONDS some filament is extruded
49
+//#define EXTRUDER_RUNOUT_PREVENT
50
+#define EXTRUDER_RUNOUT_MINTEMP 190
51
+#define EXTRUDER_RUNOUT_SECONDS 30.
52
+#define EXTRUDER_RUNOUT_ESTEPS 14. //mm filament
53
+#define EXTRUDER_RUNOUT_SPEED 1500.  //extrusion speed
54
+#define EXTRUDER_RUNOUT_EXTRUDE 100
55
+
56
+//These defines help to calibrate the AD595 sensor in case you get wrong temperature measurements.
57
+//The measured temperature is defined as "actualTemp = (measuredTemp * TEMP_SENSOR_AD595_GAIN) + TEMP_SENSOR_AD595_OFFSET"
58
+#define TEMP_SENSOR_AD595_OFFSET 0.0
59
+#define TEMP_SENSOR_AD595_GAIN   1.0
60
+
61
+//This is for controlling a fan to cool down the stepper drivers
62
+//it will turn on when any driver is enabled
63
+//and turn off after the set amount of seconds from last driver being disabled again
64
+#define CONTROLLERFAN_PIN -1 //Pin used for the fan to cool controller (-1 to disable)
65
+#define CONTROLLERFAN_SECS 60 //How many seconds, after all motors were disabled, the fan should run
66
+#define CONTROLLERFAN_SPEED 255  // == full speed
67
+
68
+// When first starting the main fan, run it at full speed for the
69
+// given number of milliseconds.  This gets the fan spinning reliably
70
+// before setting a PWM value. (Does not work with software PWM for fan on Sanguinololu)
71
+//#define FAN_KICKSTART_TIME 100
72
+
73
+// Extruder cooling fans
74
+// Configure fan pin outputs to automatically turn on/off when the associated
75
+// extruder temperature is above/below EXTRUDER_AUTO_FAN_TEMPERATURE.
76
+// Multiple extruders can be assigned to the same pin in which case
77
+// the fan will turn on when any selected extruder is above the threshold.
78
+#define EXTRUDER_0_AUTO_FAN_PIN -1
79
+#define EXTRUDER_1_AUTO_FAN_PIN -1
80
+#define EXTRUDER_2_AUTO_FAN_PIN -1
81
+#define EXTRUDER_3_AUTO_FAN_PIN -1
82
+#define EXTRUDER_AUTO_FAN_TEMPERATURE 50
83
+#define EXTRUDER_AUTO_FAN_SPEED   255  // == full speed
84
+
85
+
86
+//===========================================================================
87
+//=============================Mechanical Settings===========================
88
+//===========================================================================
89
+
90
+//#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing
91
+
92
+
93
+//// AUTOSET LOCATIONS OF LIMIT SWITCHES
94
+//// Added by ZetaPhoenix 09-15-2012
95
+#ifdef MANUAL_HOME_POSITIONS  // Use manual limit switch locations
96
+  #define X_HOME_POS MANUAL_X_HOME_POS
97
+  #define Y_HOME_POS MANUAL_Y_HOME_POS
98
+  #define Z_HOME_POS MANUAL_Z_HOME_POS
99
+#else //Set min/max homing switch positions based upon homing direction and min/max travel limits
100
+  //X axis
101
+  #if X_HOME_DIR == -1
102
+    #ifdef BED_CENTER_AT_0_0
103
+      #define X_HOME_POS X_MAX_LENGTH * -0.5
104
+    #else
105
+      #define X_HOME_POS X_MIN_POS
106
+    #endif //BED_CENTER_AT_0_0
107
+  #else
108
+    #ifdef BED_CENTER_AT_0_0
109
+      #define X_HOME_POS X_MAX_LENGTH * 0.5
110
+    #else
111
+      #define X_HOME_POS X_MAX_POS
112
+    #endif //BED_CENTER_AT_0_0
113
+  #endif //X_HOME_DIR == -1
114
+
115
+  //Y axis
116
+  #if Y_HOME_DIR == -1
117
+    #ifdef BED_CENTER_AT_0_0
118
+      #define Y_HOME_POS Y_MAX_LENGTH * -0.5
119
+    #else
120
+      #define Y_HOME_POS Y_MIN_POS
121
+    #endif //BED_CENTER_AT_0_0
122
+  #else
123
+    #ifdef BED_CENTER_AT_0_0
124
+      #define Y_HOME_POS Y_MAX_LENGTH * 0.5
125
+    #else
126
+      #define Y_HOME_POS Y_MAX_POS
127
+    #endif //BED_CENTER_AT_0_0
128
+  #endif //Y_HOME_DIR == -1
129
+
130
+  // Z axis
131
+  #if Z_HOME_DIR == -1 //BED_CENTER_AT_0_0 not used
132
+    #define Z_HOME_POS Z_MIN_POS
133
+  #else
134
+    #define Z_HOME_POS Z_MAX_POS
135
+  #endif //Z_HOME_DIR == -1
136
+#endif //End auto min/max positions
137
+//END AUTOSET LOCATIONS OF LIMIT SWITCHES -ZP
138
+
139
+
140
+//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
141
+
142
+// A single Z stepper driver is usually used to drive 2 stepper motors.
143
+// Uncomment this define to utilize a separate stepper driver for each Z axis motor.
144
+// Only a few motherboards support this, like RAMPS, which have dual extruder support (the 2nd, often unused, extruder driver is used
145
+// to control the 2nd Z axis stepper motor). The pins are currently only defined for a RAMPS motherboards.
146
+// On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder.
147
+//#define Z_DUAL_STEPPER_DRIVERS
148
+
149
+#ifdef Z_DUAL_STEPPER_DRIVERS
150
+  #undef EXTRUDERS
151
+  #define EXTRUDERS 1
152
+#endif
153
+
154
+// Same again but for Y Axis.
155
+//#define Y_DUAL_STEPPER_DRIVERS
156
+
157
+// Define if the two Y drives need to rotate in opposite directions
158
+#define INVERT_Y2_VS_Y_DIR true
159
+
160
+#ifdef Y_DUAL_STEPPER_DRIVERS
161
+  #undef EXTRUDERS
162
+  #define EXTRUDERS 1
163
+#endif
164
+
165
+#if defined (Z_DUAL_STEPPER_DRIVERS) && defined (Y_DUAL_STEPPER_DRIVERS)
166
+  #error "You cannot have dual drivers for both Y and Z"
167
+#endif
168
+
169
+// Enable this for dual x-carriage printers.
170
+// A dual x-carriage design has the advantage that the inactive extruder can be parked which
171
+// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
172
+// allowing faster printing speeds.
173
+//#define DUAL_X_CARRIAGE
174
+#ifdef DUAL_X_CARRIAGE
175
+// Configuration for second X-carriage
176
+// Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop;
177
+// the second x-carriage always homes to the maximum endstop.
178
+#define X2_MIN_POS 80     // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage
179
+#define X2_MAX_POS 353    // set maximum to the distance between toolheads when both heads are homed
180
+#define X2_HOME_DIR 1     // the second X-carriage always homes to the maximum endstop position
181
+#define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position
182
+    // However: In this mode the EXTRUDER_OFFSET_X value for the second extruder provides a software
183
+    // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops
184
+    // without modifying the firmware (through the "M218 T1 X???" command).
185
+    // Remember: you should set the second extruder x-offset to 0 in your slicer.
186
+
187
+// Pins for second x-carriage stepper driver (defined here to avoid further complicating pins.h)
188
+#define X2_ENABLE_PIN 29
189
+#define X2_STEP_PIN 25
190
+#define X2_DIR_PIN 23
191
+
192
+// There are a few selectable movement modes for dual x-carriages using M605 S<mode>
193
+//    Mode 0: Full control. The slicer has full control over both x-carriages and can achieve optimal travel results
194
+//                           as long as it supports dual x-carriages. (M605 S0)
195
+//    Mode 1: Auto-park mode. The firmware will automatically park and unpark the x-carriages on tool changes so
196
+//                           that additional slicer support is not required. (M605 S1)
197
+//    Mode 2: Duplication mode. The firmware will transparently make the second x-carriage and extruder copy all
198
+//                           actions of the first x-carriage. This allows the printer to print 2 arbitrary items at
199
+//                           once. (2nd extruder x offset and temp offset are set using: M605 S2 [Xnnn] [Rmmm])
200
+
201
+// This is the default power-up mode which can be later using M605.
202
+#define DEFAULT_DUAL_X_CARRIAGE_MODE 0
203
+
204
+// Default settings in "Auto-park Mode"
205
+#define TOOLCHANGE_PARK_ZLIFT   0.2      // the distance to raise Z axis when parking an extruder
206
+#define TOOLCHANGE_UNPARK_ZLIFT 1        // the distance to raise Z axis when unparking an extruder
207
+
208
+// Default x offset in duplication mode (typically set to half print bed width)
209
+#define DEFAULT_DUPLICATION_X_OFFSET 100
210
+
211
+#endif //DUAL_X_CARRIAGE
212
+
213
+//homing hits the endstop, then retracts by this distance, before it tries to slowly bump again:
214
+#define X_HOME_RETRACT_MM 5
215
+#define Y_HOME_RETRACT_MM 5
216
+#define Z_HOME_RETRACT_MM 2
217
+//#define QUICK_HOME  //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially.
218
+
219
+#define AXIS_RELATIVE_MODES {false, false, false, false}
220
+#ifdef CONFIG_STEPPERS_TOSHIBA
221
+#define MAX_STEP_FREQUENCY 10000 // Max step frequency for Toshiba Stepper Controllers
222
+#else
223
+#define MAX_STEP_FREQUENCY 40000 // Max step frequency for Ultimaker (5000 pps / half step)
224
+#endif
225
+//By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
226
+#define INVERT_X_STEP_PIN false
227
+#define INVERT_Y_STEP_PIN false
228
+#define INVERT_Z_STEP_PIN false
229
+#define INVERT_E_STEP_PIN false
230
+
231
+//default stepper release if idle. Set to 0 to deactivate.
232
+#define DEFAULT_STEPPER_DEACTIVE_TIME 60
233
+
234
+#define DEFAULT_MINIMUMFEEDRATE       0.0     // minimum feedrate
235
+#define DEFAULT_MINTRAVELFEEDRATE     0.0
236
+
237
+// Feedrates for manual moves along X, Y, Z, E from panel
238
+#ifdef ULTIPANEL
239
+#define MANUAL_FEEDRATE {120*60, 120*60, 18*60, 60}  // set the speeds for manual moves (mm/min)
240
+#endif
241
+
242
+//Comment to disable setting feedrate multiplier via encoder
243
+#ifdef ULTIPANEL
244
+    #define ULTIPANEL_FEEDMULTIPLY
245
+#endif
246
+
247
+// minimum time in microseconds that a movement needs to take if the buffer is emptied.
248
+#define DEFAULT_MINSEGMENTTIME        20000
249
+
250
+// If defined the movements slow down when the look ahead buffer is only half full
251
+#define SLOWDOWN
252
+
253
+// Frequency limit
254
+// See nophead's blog for more info
255
+// Not working O
256
+//#define XY_FREQUENCY_LIMIT  15
257
+
258
+// Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end
259
+// of the buffer and all stops. This should not be much greater than zero and should only be changed
260
+// if unwanted behavior is observed on a user's machine when running at very slow speeds.
261
+#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec)
262
+
263
+// MS1 MS2 Stepper Driver Microstepping mode table
264
+#define MICROSTEP1 LOW,LOW
265
+#define MICROSTEP2 HIGH,LOW
266
+#define MICROSTEP4 LOW,HIGH
267
+#define MICROSTEP8 HIGH,HIGH
268
+#define MICROSTEP16 HIGH,HIGH
269
+
270
+// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU.
271
+#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16]
272
+
273
+// Motor Current setting (Only functional when motor driver current ref pins are connected to a digital trimpot on supported boards)
274
+#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
275
+
276
+// uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro
277
+//#define DIGIPOT_I2C
278
+// Number of channels available for I2C digipot, For Azteeg X3 Pro we have 8
279
+#define DIGIPOT_I2C_NUM_CHANNELS 8
280
+// actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS
281
+#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0}
282
+
283
+//===========================================================================
284
+//=============================Additional Features===========================
285
+//===========================================================================
286
+
287
+//#define CHDK 4        //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/
288
+#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
289
+
290
+#define SD_FINISHED_STEPPERRELEASE true  //if sd support and the file is finished: disable steppers?
291
+#define SD_FINISHED_RELEASECOMMAND "M84 X Y Z E" // You might want to keep the z enabled so your bed stays in place.
292
+
293
+#define SDCARD_RATHERRECENTFIRST  //reverse file order of sd card menu display. Its sorted practically after the file system block order.
294
+// if a file is deleted, it frees a block. hence, the order is not purely chronological. To still have auto0.g accessible, there is again the option to do that.
295
+// using:
296
+#define MENU_ADDAUTOSTART
297
+
298
+// Show a progress bar on HD44780 LCDs for SD printing
299
+//#define LCD_PROGRESS_BAR
300
+
301
+#ifdef LCD_PROGRESS_BAR
302
+  // Amount of time (ms) to show the bar
303
+  #define PROGRESS_BAR_BAR_TIME 2000
304
+  // Amount of time (ms) to show the status message
305
+  #define PROGRESS_BAR_MSG_TIME 3000
306
+  // Amount of time (ms) to retain the status message (0=forever)
307
+  #define PROGRESS_MSG_EXPIRE   0
308
+  // Enable this to show messages for MSG_TIME then hide them
309
+  //#define PROGRESS_MSG_ONCE
310
+  #ifdef DOGLCD
311
+    #warning LCD_PROGRESS_BAR does not apply to graphical displays at this time.
312
+  #endif
313
+  #ifdef FILAMENT_LCD_DISPLAY
314
+    #error LCD_PROGRESS_BAR and FILAMENT_LCD_DISPLAY are not fully compatible. Comment out this line to use both.
315
+  #endif
316
+#endif
317
+
318
+// The hardware watchdog should reset the microcontroller disabling all outputs, in case the firmware gets stuck and doesn't do temperature regulation.
319
+//#define USE_WATCHDOG
320
+
321
+#ifdef USE_WATCHDOG
322
+// If you have a watchdog reboot in an ArduinoMega2560 then the device will hang forever, as a watchdog reset will leave the watchdog on.
323
+// The "WATCHDOG_RESET_MANUAL" goes around this by not using the hardware reset.
324
+//  However, THIS FEATURE IS UNSAFE!, as it will only work if interrupts are disabled. And the code could hang in an interrupt routine with interrupts disabled.
325
+//#define WATCHDOG_RESET_MANUAL
326
+#endif
327
+
328
+// Enable the option to stop SD printing when hitting and endstops, needs to be enabled from the LCD menu when this option is enabled.
329
+//#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED
330
+
331
+// Babystepping enables the user to control the axis in tiny amounts, independently from the normal printing process
332
+// it can e.g. be used to change z-positions in the print startup phase in real-time
333
+// does not respect endstops!
334
+//#define BABYSTEPPING
335
+#ifdef BABYSTEPPING
336
+  #define BABYSTEP_XY  //not only z, but also XY in the menu. more clutter, more functions
337
+  #define BABYSTEP_INVERT_Z false  //true for inverse movements in Z
338
+  #define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements
339
+
340
+  #ifdef COREXY
341
+    #error BABYSTEPPING not implemented for COREXY yet.
342
+  #endif
343
+
344
+  #ifdef DELTA
345
+    #ifdef BABYSTEP_XY
346
+      #error BABYSTEPPING only implemented for Z axis on deltabots.
347
+    #endif
348
+  #endif
349
+#endif
350
+
351
+// extruder advance constant (s2/mm3)
352
+//
353
+// advance (steps) = STEPS_PER_CUBIC_MM_E * EXTRUDER_ADVANCE_K * cubic mm per second ^ 2
354
+//
355
+// Hooke's law says:		force = k * distance
356
+// Bernoulli's principle says:	v ^ 2 / 2 + g . h + pressure / density = constant
357
+// so: v ^ 2 is proportional to number of steps we advance the extruder
358
+//#define ADVANCE
359
+
360
+#ifdef ADVANCE
361
+  #define EXTRUDER_ADVANCE_K .0
362
+
363
+  #define D_FILAMENT 1.75
364
+  #define STEPS_MM_E 100.47095761381482
365
+  #define EXTRUSION_AREA (0.25 * D_FILAMENT * D_FILAMENT * 3.14159)
366
+  #define STEPS_PER_CUBIC_MM_E (axis_steps_per_unit[E_AXIS]/ EXTRUSION_AREA)
367
+
368
+#endif // ADVANCE
369
+
370
+// Arc interpretation settings:
371
+#define MM_PER_ARC_SEGMENT 1
372
+#define N_ARC_CORRECTION 25
373
+
374
+const unsigned int dropsegments=5; //everything with less than this number of steps will be ignored as move and joined with the next movement
375
+
376
+// If you are using a RAMPS board or cheap E-bay purchased boards that do not detect when an SD card is inserted
377
+// You can get round this by connecting a push button or single throw switch to the pin defined as SDCARDCARDDETECT
378
+// in the pins.h file.  When using a push button pulling the pin to ground this will need inverted.  This setting should
379
+// be commented out otherwise
380
+#define SDCARDDETECTINVERTED
381
+
382
+#ifdef ULTIPANEL
383
+ #undef SDCARDDETECTINVERTED
384
+#endif
385
+
386
+// Power Signal Control Definitions
387
+// By default use ATX definition
388
+#ifndef POWER_SUPPLY
389
+  #define POWER_SUPPLY 1
390
+#endif
391
+// 1 = ATX
392
+#if (POWER_SUPPLY == 1)
393
+  #define PS_ON_AWAKE  LOW
394
+  #define PS_ON_ASLEEP HIGH
395
+#endif
396
+// 2 = X-Box 360 203W
397
+#if (POWER_SUPPLY == 2)
398
+  #define PS_ON_AWAKE  HIGH
399
+  #define PS_ON_ASLEEP LOW
400
+#endif
401
+
402
+// Control heater 0 and heater 1 in parallel.
403
+//#define HEATERS_PARALLEL
404
+
405
+//===========================================================================
406
+//=============================Buffers           ============================
407
+//===========================================================================
408
+
409
+// The number of linear motions that can be in the plan at any give time.
410
+// THE BLOCK_BUFFER_SIZE NEEDS TO BE A POWER OF 2, i.g. 8,16,32 because shifts and ors are used to do the ring-buffering.
411
+#if defined SDSUPPORT
412
+  #define BLOCK_BUFFER_SIZE 16   // SD,LCD,Buttons take more memory, block buffer needs to be smaller
413
+#else
414
+  #define BLOCK_BUFFER_SIZE 16 // maximize block buffer
415
+#endif
416
+
417
+
418
+//The ASCII buffer for receiving from the serial:
419
+#define MAX_CMD_SIZE 96
420
+#define BUFSIZE 5
421
+
422
+
423
+// Firmware based and LCD controlled retract
424
+// M207 and M208 can be used to define parameters for the retraction.
425
+// The retraction can be called by the slicer using G10 and G11
426
+// until then, intended retractions can be detected by moves that only extrude and the direction.
427
+// the moves are than replaced by the firmware controlled ones.
428
+
429
+// #define FWRETRACT  //ONLY PARTIALLY TESTED
430
+#ifdef FWRETRACT
431
+  #define MIN_RETRACT 0.1                //minimum extruded mm to accept a automatic gcode retraction attempt
432
+  #define RETRACT_LENGTH 3               //default retract length (positive mm)
433
+  #define RETRACT_LENGTH_SWAP 13         //default swap retract length (positive mm), for extruder change
434
+  #define RETRACT_FEEDRATE 80*60            //default feedrate for retracting (mm/s)
435
+  #define RETRACT_ZLIFT 0                //default retract Z-lift
436
+  #define RETRACT_RECOVER_LENGTH 0       //default additional recover length (mm, added to retract length when recovering)
437
+  //#define RETRACT_RECOVER_LENGTH_SWAP 0  //default additional swap recover length (mm, added to retract length when recovering from extruder change)
438
+  #define RETRACT_RECOVER_FEEDRATE 8*60     //default feedrate for recovering from retraction (mm/s)
439
+#endif
440
+
441
+//adds support for experimental filament exchange support M600; requires display
442
+#ifdef ULTIPANEL
443
+  #define FILAMENTCHANGEENABLE
444
+  #ifdef FILAMENTCHANGEENABLE
445
+    #define FILAMENTCHANGE_XPOS 3
446
+    #define FILAMENTCHANGE_YPOS 3
447
+    #define FILAMENTCHANGE_ZADD 10
448
+    #define FILAMENTCHANGE_FIRSTRETRACT -2
449
+    #define FILAMENTCHANGE_FINALRETRACT -100
450
+  #endif
451
+#endif
452
+
453
+#ifdef FILAMENTCHANGEENABLE
454
+  #ifdef EXTRUDER_RUNOUT_PREVENT
455
+    #error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE
456
+  #endif
457
+#endif
458
+
459
+//===========================================================================
460
+//=============================  Define Defines  ============================
461
+//===========================================================================
462
+
463
+#if defined (ENABLE_AUTO_BED_LEVELING) && defined (DELTA)
464
+  #error "Bed Auto Leveling is still not compatible with Delta Kinematics."
465
+#endif
466
+
467
+#if EXTRUDERS > 1 && defined TEMP_SENSOR_1_AS_REDUNDANT
468
+  #error "You cannot use TEMP_SENSOR_1_AS_REDUNDANT if EXTRUDERS > 1"
469
+#endif
470
+
471
+#if EXTRUDERS > 1 && defined HEATERS_PARALLEL
472
+  #error "You cannot use HEATERS_PARALLEL if EXTRUDERS > 1"
473
+#endif
474
+
475
+#if TEMP_SENSOR_0 > 0
476
+  #define THERMISTORHEATER_0 TEMP_SENSOR_0
477
+  #define HEATER_0_USES_THERMISTOR
478
+#endif
479
+#if TEMP_SENSOR_1 > 0
480
+  #define THERMISTORHEATER_1 TEMP_SENSOR_1
481
+  #define HEATER_1_USES_THERMISTOR
482
+#endif
483
+#if TEMP_SENSOR_2 > 0
484
+  #define THERMISTORHEATER_2 TEMP_SENSOR_2
485
+  #define HEATER_2_USES_THERMISTOR
486
+#endif
487
+#if TEMP_SENSOR_3 > 0
488
+  #define THERMISTORHEATER_3 TEMP_SENSOR_3
489
+  #define HEATER_3_USES_THERMISTOR
490
+#endif
491
+#if TEMP_SENSOR_BED > 0
492
+  #define THERMISTORBED TEMP_SENSOR_BED
493
+  #define BED_USES_THERMISTOR
494
+#endif
495
+#if TEMP_SENSOR_0 == -1
496
+  #define HEATER_0_USES_AD595
497
+#endif
498
+#if TEMP_SENSOR_1 == -1
499
+  #define HEATER_1_USES_AD595
500
+#endif
501
+#if TEMP_SENSOR_2 == -1
502
+  #define HEATER_2_USES_AD595
503
+#endif
504
+#if TEMP_SENSOR_3 == -1
505
+  #define HEATER_3_USES_AD595
506
+#endif
507
+#if TEMP_SENSOR_BED == -1
508
+  #define BED_USES_AD595
509
+#endif
510
+#if TEMP_SENSOR_0 == -2
511
+  #define HEATER_0_USES_MAX6675
512
+#endif
513
+#if TEMP_SENSOR_0 == 0
514
+  #undef HEATER_0_MINTEMP
515
+  #undef HEATER_0_MAXTEMP
516
+#endif
517
+#if TEMP_SENSOR_1 == 0
518
+  #undef HEATER_1_MINTEMP
519
+  #undef HEATER_1_MAXTEMP
520
+#endif
521
+#if TEMP_SENSOR_2 == 0
522
+  #undef HEATER_2_MINTEMP
523
+  #undef HEATER_2_MAXTEMP
524
+#endif
525
+#if TEMP_SENSOR_3 == 0
526
+  #undef HEATER_3_MINTEMP
527
+  #undef HEATER_3_MAXTEMP
528
+#endif
529
+#if TEMP_SENSOR_BED == 0
530
+  #undef BED_MINTEMP
531
+  #undef BED_MAXTEMP
532
+#endif
533
+
534
+
535
+#endif //__CONFIGURATION_ADV_H

+ 844
- 0
Marlin/example_configurations/K8200/Configuration.h Ver fichero

@@ -0,0 +1,844 @@
1
+#ifndef CONFIGURATION_H
2
+#define CONFIGURATION_H
3
+
4
+#include "boards.h"
5
+
6
+
7
+//===========================================================================
8
+//============================= Getting Started =============================
9
+//===========================================================================
10
+/*
11
+Here are some standard links for getting your machine calibrated:
12
+ * http://reprap.org/wiki/Calibration 
13
+ * http://youtu.be/wAL9d7FgInk
14
+ * http://calculator.josefprusa.cz
15
+ * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide
16
+ * http://www.thingiverse.com/thing:5573
17
+ * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap
18
+ * http://www.thingiverse.com/thing:298812
19
+*/
20
+
21
+// This configuration file contains the basic settings.
22
+// Advanced settings can be found in Configuration_adv.h
23
+// BASIC SETTINGS: select your board type, temperature sensor type, axis scaling, and endstop configuration
24
+
25
+//===========================================================================
26
+//============================= DELTA Printer ===============================
27
+//===========================================================================
28
+// For a Delta printer replace the configuration files with the files in the
29
+// example_configurations/delta directory.
30
+//
31
+
32
+//===========================================================================
33
+//============================= SCARA Printer ===============================
34
+//===========================================================================
35
+// For a Delta printer replace the configuration files with the files in the
36
+// example_configurations/SCARA directory.
37
+//
38
+
39
+// User-specified version info of this build to display in [Pronterface, etc] terminal window during
40
+// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
41
+// build by the user have been successfully uploaded into firmware.
42
+#define STRING_VERSION "v1.0.2"
43
+#define STRING_URL "reprap.org"
44
+#define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time
45
+#define STRING_CONFIG_H_AUTHOR "(K8200, CONSULitAS)" // Who made the changes.
46
+#define STRING_SPLASH_LINE1 "v" STRING_VERSION // will be shown during bootup in line 1
47
+//#define STRING_SPLASH_LINE2 STRING_VERSION_CONFIG_H // will be shown during bootup in line2
48
+
49
+// SERIAL_PORT selects which serial port should be used for communication with the host.
50
+// This allows the connection of wireless adapters (for instance) to non-default port pins.
51
+// Serial port 0 is still used by the Arduino bootloader regardless of this setting.
52
+#define SERIAL_PORT 0
53
+
54
+// This determines the communication speed of the printer
55
+#define BAUDRATE 250000
56
+
57
+// This enables the serial port associated to the Bluetooth interface
58
+//#define BTENABLED              // Enable BT interface on AT90USB devices
59
+
60
+// The following define selects which electronics board you have.
61
+// Please choose the name from boards.h that matches your setup
62
+#ifndef MOTHERBOARD
63
+  #define MOTHERBOARD BOARD_K8200
64
+#endif
65
+
66
+// Define this to set a custom name for your generic Mendel,
67
+// #define CUSTOM_MENDEL_NAME "This Mendel"
68
+
69
+// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
70
+// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
71
+// #define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
72
+
73
+// This defines the number of extruders
74
+#define EXTRUDERS 1
75
+
76
+//// The following define selects which power supply you have. Please choose the one that matches your setup
77
+// 1 = ATX
78
+// 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC)
79
+
80
+#define POWER_SUPPLY 1
81
+
82
+// Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it.
83
+// #define PS_DEFAULT_OFF
84
+
85
+
86
+//===========================================================================
87
+//============================= Thermal Settings ============================
88
+//===========================================================================
89
+//
90
+//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table
91
+//
92
+//// Temperature sensor settings:
93
+// -2 is thermocouple with MAX6675 (only for sensor 0)
94
+// -1 is thermocouple with AD595
95
+// 0 is not used
96
+// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup)
97
+// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup)
98
+// 3 is Mendel-parts thermistor (4.7k pullup)
99
+// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !!
100
+// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup)
101
+// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup)
102
+// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup)
103
+// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup)
104
+// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup)
105
+// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup)
106
+// 10 is 100k RS thermistor 198-961 (4.7k pullup)
107
+// 11 is 100k beta 3950 1% thermistor (4.7k pullup)
108
+// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed)
109
+// 13 is 100k Hisens 3950  1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" 
110
+// 20 is the PT100 circuit found in the Ultimainboard V2.x
111
+// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950
112
+//
113
+//    1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k
114
+//                          (but gives greater accuracy and more stable PID)
115
+// 51 is 100k thermistor - EPCOS (1k pullup)
116
+// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup)
117
+// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup)
118
+//
119
+// 1047 is Pt1000 with 4k7 pullup
120
+// 1010 is Pt1000 with 1k pullup (non standard)
121
+// 147 is Pt100 with 4k7 pullup
122
+// 110 is Pt100 with 1k pullup (non standard)
123
+
124
+#define TEMP_SENSOR_0 5
125
+#define TEMP_SENSOR_1 0
126
+#define TEMP_SENSOR_2 0
127
+#define TEMP_SENSOR_BED 5
128
+
129
+// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted.
130
+//#define TEMP_SENSOR_1_AS_REDUNDANT
131
+#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10
132
+
133
+// Actual temperature must be close to target for this long before M109 returns success
134
+#define TEMP_RESIDENCY_TIME 10  // (seconds)
135
+#define TEMP_HYSTERESIS 3       // (degC) range of +/- temperatures considered "close" to the target one
136
+#define TEMP_WINDOW     1       // (degC) Window around target to start the residency timer x degC early.
137
+
138
+// The minimal temperature defines the temperature below which the heater will not be enabled It is used
139
+// to check that the wiring to the thermistor is not broken.
140
+// Otherwise this would lead to the heater being powered on all the time.
141
+#define HEATER_0_MINTEMP 5
142
+#define HEATER_1_MINTEMP 5
143
+#define HEATER_2_MINTEMP 5
144
+#define BED_MINTEMP 5
145
+
146
+// When temperature exceeds max temp, your heater will be switched off.
147
+// This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure!
148
+// You should use MINTEMP for thermistor short/failure protection.
149
+#define HEATER_0_MAXTEMP 275
150
+#define HEATER_1_MAXTEMP 275
151
+#define HEATER_2_MAXTEMP 275
152
+#define BED_MAXTEMP 150
153
+
154
+// If your bed has low resistance e.g. .6 ohm and throws the fuse you can duty cycle it to reduce the
155
+// average current. The value should be an integer and the heat bed will be turned on for 1 interval of
156
+// HEATER_BED_DUTY_CYCLE_DIVIDER intervals.
157
+//#define HEATER_BED_DUTY_CYCLE_DIVIDER 4
158
+
159
+// If you want the M105 heater power reported in watts, define the BED_WATTS, and (shared for all extruders) EXTRUDER_WATTS
160
+//#define EXTRUDER_WATTS (12.0*12.0/6.7) //  P=I^2/R
161
+//#define BED_WATTS (12.0*12.0/1.1)      // P=I^2/R
162
+
163
+//===========================================================================
164
+//============================= PID Settings ================================
165
+//===========================================================================
166
+// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning
167
+
168
+// Comment the following line to disable PID and enable bang-bang.
169
+#define PIDTEMP
170
+#define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current
171
+#define PID_MAX BANG_MAX // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current
172
+#ifdef PIDTEMP
173
+  //#define PID_DEBUG // Sends debug data to the serial port.
174
+  //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX
175
+  //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay
176
+  //#define PID_PARAMS_PER_EXTRUDER // Uses separate PID parameters for each extruder (useful for mismatched extruders)
177
+                                    // Set/get with gcode: M301 E[extruder number, 0-2]
178
+  #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature
179
+                                  // is more then PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max.
180
+  #define PID_INTEGRAL_DRIVE_MAX PID_MAX  //limit for the integral term
181
+  #define K1 0.95 //smoothing factor within the PID
182
+  #define PID_dT ((OVERSAMPLENR * 10.0)/(F_CPU / 64.0 / 256.0)) //sampling period of the temperature routine
183
+
184
+// If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it
185
+// Ultimaker
186
+//    #define  DEFAULT_Kp 22.2
187
+//    #define  DEFAULT_Ki 1.08
188
+//    #define  DEFAULT_Kd 114
189
+
190
+// MakerGear
191
+//    #define  DEFAULT_Kp 7.0
192
+//    #define  DEFAULT_Ki 0.1
193
+//    #define  DEFAULT_Kd 12
194
+
195
+// Mendel Parts V9 on 12V
196
+//    #define  DEFAULT_Kp 63.0
197
+//    #define  DEFAULT_Ki 2.25
198
+//    #define  DEFAULT_Kd 440
199
+
200
+// Vellemann K8200 Extruder - calculated with PID Autotune and tested
201
+   #define  DEFAULT_Kp 24.29
202
+   #define  DEFAULT_Ki 1.58
203
+   #define  DEFAULT_Kd 93.51
204
+#endif // PIDTEMP
205
+
206
+//===========================================================================
207
+//============================= PID > Bed Temperature Control ===============
208
+//===========================================================================
209
+// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis
210
+//
211
+// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder.
212
+// If your PID_dT above is the default, and correct for your hardware/configuration, that means 7.689Hz,
213
+// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating.
214
+// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater.
215
+// If your configuration is significantly different than this and you don't understand the issues involved, you probably
216
+// shouldn't use bed PID until someone else verifies your hardware works.
217
+// If this is enabled, find your own PID constants below.
218
+//#define PIDTEMPBED
219
+//
220
+//#define BED_LIMIT_SWITCHING
221
+
222
+// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option.
223
+// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis)
224
+// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did,
225
+// so you shouldn't use it unless you are OK with PWM on your bed.  (see the comment on enabling PIDTEMPBED)
226
+#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current
227
+
228
+#ifdef PIDTEMPBED
229
+//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)
230
+//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10)
231
+//    #define  DEFAULT_bedKp 10.00
232
+//    #define  DEFAULT_bedKi .023
233
+//    #define  DEFAULT_bedKd 305.4
234
+
235
+//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)
236
+//from pidautotune
237
+//    #define  DEFAULT_bedKp 97.1
238
+//    #define  DEFAULT_bedKi 1.41
239
+//    #define  DEFAULT_bedKd 1675.16
240
+
241
+//Vellemann K8200 PCB heatbed with standard PCU - calculated with PID Autotune and tested
242
+//from pidautotune
243
+   #define  DEFAULT_bedKp 341.88
244
+   #define  DEFAULT_bedKi 25.32
245
+   #define  DEFAULT_bedKd 1153.89
246
+
247
+   // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles.
248
+#endif // PIDTEMPBED
249
+
250
+
251
+//this prevents dangerous Extruder moves, i.e. if the temperature is under the limit
252
+//can be software-disabled for whatever purposes by
253
+#define PREVENT_DANGEROUS_EXTRUDE
254
+//if PREVENT_DANGEROUS_EXTRUDE is on, you can still disable (uncomment) very long bits of extrusion separately.
255
+#define PREVENT_LENGTHY_EXTRUDE
256
+
257
+#define EXTRUDE_MINTEMP 170
258
+#define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances.
259
+
260
+
261
+//===========================================================================
262
+//============================= Thermal Runaway Protection ==================
263
+//===========================================================================
264
+/*
265
+This is a feature to protect your printer from burn up in flames if it has
266
+a thermistor coming off place (this happened to a friend of mine recently and
267
+motivated me writing this feature).
268
+
269
+The issue: If a thermistor come off, it will read a lower temperature than actual.
270
+The system will turn the heater on forever, burning up the filament and anything
271
+else around.
272
+
273
+After the temperature reaches the target for the first time, this feature will 
274
+start measuring for how long the current temperature stays below the target 
275
+minus _HYSTERESIS (set_temperature - THERMAL_RUNAWAY_PROTECTION_HYSTERESIS).
276
+
277
+If it stays longer than _PERIOD, it means the thermistor temperature
278
+cannot catch up with the target, so something *may be* wrong. Then, to be on the
279
+safe side, the system will he halt.
280
+
281
+Bear in mind the count down will just start AFTER the first time the 
282
+thermistor temperature is over the target, so you will have no problem if
283
+your extruder heater takes 2 minutes to hit the target on heating.
284
+
285
+*/
286
+// If you want to enable this feature for all your extruder heaters,
287
+// uncomment the 2 defines below:
288
+
289
+// Parameters for all extruder heaters
290
+//#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds
291
+//#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius
292
+
293
+// If you want to enable this feature for your bed heater,
294
+// uncomment the 2 defines below:
295
+
296
+// Parameters for the bed heater
297
+//#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds
298
+//#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius
299
+
300
+
301
+//===========================================================================
302
+//============================= Mechanical Settings =========================
303
+//===========================================================================
304
+
305
+// Uncomment the following line to enable CoreXY kinematics
306
+// #define COREXY
307
+
308
+// coarse Endstop Settings
309
+#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors
310
+
311
+#ifndef ENDSTOPPULLUPS
312
+  // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined
313
+  // #define ENDSTOPPULLUP_XMAX
314
+  // #define ENDSTOPPULLUP_YMAX
315
+  // #define ENDSTOPPULLUP_ZMAX
316
+  #define ENDSTOPPULLUP_XMIN
317
+  #define ENDSTOPPULLUP_YMIN
318
+  #define ENDSTOPPULLUP_ZMIN
319
+#endif
320
+
321
+#ifdef ENDSTOPPULLUPS
322
+  // #define ENDSTOPPULLUP_XMAX
323
+  // #define ENDSTOPPULLUP_YMAX
324
+  // #define ENDSTOPPULLUP_ZMAX
325
+  #define ENDSTOPPULLUP_XMIN
326
+  #define ENDSTOPPULLUP_YMIN
327
+  #define ENDSTOPPULLUP_ZMIN
328
+#endif
329
+
330
+// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins.
331
+const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
332
+const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
333
+const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
334
+const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
335
+const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
336
+const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
337
+#define DISABLE_MAX_ENDSTOPS
338
+//#define DISABLE_MIN_ENDSTOPS
339
+
340
+// Disable max endstops for compatibility with endstop checking routine
341
+#if defined(COREXY) && !defined(DISABLE_MAX_ENDSTOPS)
342
+  #define DISABLE_MAX_ENDSTOPS
343
+#endif
344
+
345
+// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
346
+#define X_ENABLE_ON 0
347
+#define Y_ENABLE_ON 0
348
+#define Z_ENABLE_ON 0
349
+#define E_ENABLE_ON 0 // For all extruders
350
+
351
+// Disables axis when it's not being used.
352
+#define DISABLE_X false
353
+#define DISABLE_Y false
354
+#define DISABLE_Z true
355
+#define DISABLE_E false // For all extruders
356
+#define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled
357
+
358
+#define INVERT_X_DIR false    // for Mendel set to false, for Orca set to true
359
+#define INVERT_Y_DIR false    // for Mendel set to true, for Orca set to false
360
+#define INVERT_Z_DIR false     // for Mendel set to false, for Orca set to true
361
+#define INVERT_E0_DIR true   // for direct drive extruder v9 set to true, for geared extruder set to false
362
+#define INVERT_E1_DIR true    // for direct drive extruder v9 set to true, for geared extruder set to false
363
+#define INVERT_E2_DIR true   // for direct drive extruder v9 set to true, for geared extruder set to false
364
+
365
+// ENDSTOP SETTINGS:
366
+// Sets direction of endstops when homing; 1=MAX, -1=MIN
367
+#define X_HOME_DIR -1
368
+#define Y_HOME_DIR -1
369
+#define Z_HOME_DIR -1
370
+
371
+#define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS.
372
+#define max_software_endstops true  // If true, axis won't move to coordinates greater than the defined lengths below.
373
+
374
+// Travel limits after homing (units are in mm)
375
+#define X_MAX_POS 200
376
+#define X_MIN_POS 0
377
+#define Y_MAX_POS 200
378
+#define Y_MIN_POS 0
379
+#define Z_MAX_POS 200
380
+#define Z_MIN_POS 0
381
+
382
+#define X_MAX_LENGTH (X_MAX_POS - X_MIN_POS)
383
+#define Y_MAX_LENGTH (Y_MAX_POS - Y_MIN_POS)
384
+#define Z_MAX_LENGTH (Z_MAX_POS - Z_MIN_POS)
385
+
386
+
387
+//===========================================================================
388
+//============================= Bed Auto Leveling ===========================
389
+//===========================================================================
390
+
391
+//#define ENABLE_AUTO_BED_LEVELING // Delete the comment to enable (remove // at the start of the line)
392
+#define Z_PROBE_REPEATABILITY_TEST  // If not commented out, Z-Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
393
+
394
+#ifdef ENABLE_AUTO_BED_LEVELING
395
+
396
+// There are 2 different ways to pick the X and Y locations to probe:
397
+
398
+//  - "grid" mode
399
+//    Probe every point in a rectangular grid
400
+//    You must specify the rectangle, and the density of sample points
401
+//    This mode is preferred because there are more measurements.
402
+//    It used to be called ACCURATE_BED_LEVELING but "grid" is more descriptive
403
+
404
+//  - "3-point" mode
405
+//    Probe 3 arbitrary points on the bed (that aren't colinear)
406
+//    You must specify the X & Y coordinates of all 3 points
407
+
408
+  #define AUTO_BED_LEVELING_GRID
409
+  // with AUTO_BED_LEVELING_GRID, the bed is sampled in a
410
+  // AUTO_BED_LEVELING_GRID_POINTSxAUTO_BED_LEVELING_GRID_POINTS grid
411
+  // and least squares solution is calculated
412
+  // Note: this feature occupies 10'206 byte
413
+  #ifdef AUTO_BED_LEVELING_GRID
414
+
415
+    // set the rectangle in which to probe
416
+    #define LEFT_PROBE_BED_POSITION 15
417
+    #define RIGHT_PROBE_BED_POSITION 170
418
+    #define BACK_PROBE_BED_POSITION 180
419
+    #define FRONT_PROBE_BED_POSITION 20
420
+
421
+     // set the number of grid points per dimension
422
+     // I wouldn't see a reason to go above 3 (=9 probing points on the bed)
423
+    #define AUTO_BED_LEVELING_GRID_POINTS 2
424
+
425
+
426
+  #else  // not AUTO_BED_LEVELING_GRID
427
+    // with no grid, just probe 3 arbitrary points.  A simple cross-product
428
+    // is used to esimate the plane of the print bed
429
+
430
+      #define ABL_PROBE_PT_1_X 15
431
+      #define ABL_PROBE_PT_1_Y 180
432
+      #define ABL_PROBE_PT_2_X 15
433
+      #define ABL_PROBE_PT_2_Y 20
434
+      #define ABL_PROBE_PT_3_X 170
435
+      #define ABL_PROBE_PT_3_Y 20
436
+
437
+  #endif // AUTO_BED_LEVELING_GRID
438
+
439
+
440
+  // these are the offsets to the probe relative to the extruder tip (Hotend - Probe)
441
+  // X and Y offsets must be integers
442
+  #define X_PROBE_OFFSET_FROM_EXTRUDER -25
443
+  #define Y_PROBE_OFFSET_FROM_EXTRUDER -29
444
+  #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35
445
+
446
+  #define Z_RAISE_BEFORE_HOMING 4       // (in mm) Raise Z before homing (G28) for Probe Clearance.
447
+                                        // Be sure you have this distance over your Z_MAX_POS in case
448
+
449
+  #define XY_TRAVEL_SPEED 8000         // X and Y axis travel speed between probes, in mm/min
450
+
451
+  #define Z_RAISE_BEFORE_PROBING 15    //How much the extruder will be raised before traveling to the first probing point.
452
+  #define Z_RAISE_BETWEEN_PROBINGS 5  //How much the extruder will be raised when traveling from between next probing points
453
+
454
+  //#define Z_PROBE_SLED // turn on if you have a z-probe mounted on a sled like those designed by Charles Bell
455
+  //#define SLED_DOCKING_OFFSET 5 // the extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like.
456
+
457
+  //If defined, the Probe servo will be turned on only during movement and then turned off to avoid jerk
458
+  //The value is the delay to turn the servo off after powered on - depends on the servo speed; 300ms is good value, but you can try lower it.
459
+  // You MUST HAVE the SERVO_ENDSTOPS defined to use here a value higher than zero otherwise your code will not compile.
460
+
461
+//  #define PROBE_SERVO_DEACTIVATION_DELAY 300
462
+
463
+
464
+//If you have enabled the Bed Auto Leveling and are using the same Z Probe for Z Homing,
465
+//it is highly recommended you let this Z_SAFE_HOMING enabled!!!
466
+
467
+  #define Z_SAFE_HOMING   // This feature is meant to avoid Z homing with probe outside the bed area.
468
+                          // When defined, it will:
469
+                          // - Allow Z homing only after X and Y homing AND stepper drivers still enabled
470
+                          // - If stepper drivers timeout, it will need X and Y homing again before Z homing
471
+                          // - Position the probe in a defined XY point before Z Homing when homing all axis (G28)
472
+                          // - Block Z homing only when the probe is outside bed area.
473
+
474
+  #ifdef Z_SAFE_HOMING
475
+
476
+    #define Z_SAFE_HOMING_X_POINT (X_MAX_LENGTH/2)    // X point for Z homing when homing all axis (G28)
477
+    #define Z_SAFE_HOMING_Y_POINT (Y_MAX_LENGTH/2)    // Y point for Z homing when homing all axis (G28)
478
+
479
+  #endif
480
+
481
+  #ifdef AUTO_BED_LEVELING_GRID	// Check if Probe_Offset * Grid Points is greater than Probing Range
482
+    #if X_PROBE_OFFSET_FROM_EXTRUDER < 0
483
+      #if (-(X_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (RIGHT_PROBE_BED_POSITION - LEFT_PROBE_BED_POSITION))
484
+	     #error "The X axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS"
485
+	  #endif
486
+	#else
487
+      #if ((X_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (RIGHT_PROBE_BED_POSITION - LEFT_PROBE_BED_POSITION))
488
+	     #error "The X axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS"
489
+	  #endif
490
+	#endif
491
+    #if Y_PROBE_OFFSET_FROM_EXTRUDER < 0
492
+      #if (-(Y_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION))
493
+	     #error "The Y axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS"
494
+	  #endif
495
+	#else
496
+      #if ((Y_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION))
497
+	     #error "The Y axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS"
498
+	  #endif
499
+	#endif
500
+
501
+	
502
+  #endif
503
+  
504
+#endif // ENABLE_AUTO_BED_LEVELING
505
+
506
+
507
+// The position of the homing switches
508
+//#define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used
509
+//#define BED_CENTER_AT_0_0  // If defined, the center of the bed is at (X=0, Y=0)
510
+
511
+//Manual homing switch locations:
512
+// For deltabots this means top and center of the Cartesian print volume.
513
+#define MANUAL_X_HOME_POS 0
514
+#define MANUAL_Y_HOME_POS 0
515
+#define MANUAL_Z_HOME_POS 0
516
+//#define MANUAL_Z_HOME_POS 402 // For delta: Distance between nozzle and print surface after homing.
517
+
518
+//// MOVEMENT SETTINGS
519
+#define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E
520
+#define HOMING_FEEDRATE {50*60, 50*60, 4*60, 0}  // set the homing speeds (mm/min)
521
+
522
+// default settings
523
+
524
+#define DEFAULT_AXIS_STEPS_PER_UNIT   {64.25,64.25,2560,600}  // default steps per unit for K8200
525
+#define DEFAULT_MAX_FEEDRATE          {500, 500, 5, 500}    // (mm/sec)
526
+#define DEFAULT_MAX_ACCELERATION      {9000,9000,100,10000}    // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot.
527
+
528
+#define DEFAULT_ACCELERATION          1000    // X, Y, Z and E max acceleration in mm/s^2 for printing moves
529
+#define DEFAULT_RETRACT_ACCELERATION  1000   // X, Y, Z and E max acceleration in mm/s^2 for retracts
530
+
531
+// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
532
+// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
533
+// For the other hotends it is their distance from the extruder 0 hotend.
534
+// #define EXTRUDER_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
535
+// #define EXTRUDER_OFFSET_Y {0.0, 5.00}  // (in mm) for each extruder, offset of the hotend on the Y axis
536
+
537
+// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously)
538
+#define DEFAULT_XYJERK                20.0    // (mm/sec)
539
+#define DEFAULT_ZJERK                 0.4     // (mm/sec)
540
+#define DEFAULT_EJERK                 5.0    // (mm/sec)
541
+
542
+
543
+//===========================================================================
544
+//============================= Additional Features =========================
545
+//===========================================================================
546
+
547
+// Custom M code points
548
+#define CUSTOM_M_CODES
549
+#ifdef CUSTOM_M_CODES
550
+  #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851
551
+  #define Z_PROBE_OFFSET_RANGE_MIN -15
552
+  #define Z_PROBE_OFFSET_RANGE_MAX -5
553
+#endif
554
+
555
+
556
+// EEPROM
557
+// The microcontroller can store settings in the EEPROM, e.g. max velocity...
558
+// M500 - stores parameters in EEPROM
559
+// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).
560
+// M502 - reverts to the default "factory settings".  You still need to store them in EEPROM afterwards if you want to.
561
+//define this to enable EEPROM support
562
+#define EEPROM_SETTINGS
563
+//to disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out:
564
+// please keep turned on if you can.
565
+//#define EEPROM_CHITCHAT
566
+
567
+// Preheat Constants
568
+#define PLA_PREHEAT_HOTEND_TEMP 190
569
+#define PLA_PREHEAT_HPB_TEMP 50
570
+#define PLA_PREHEAT_FAN_SPEED 0   // Insert Value between 0 and 255
571
+
572
+#define ABS_PREHEAT_HOTEND_TEMP 240
573
+#define ABS_PREHEAT_HPB_TEMP 60
574
+#define ABS_PREHEAT_FAN_SPEED 0   // Insert Value between 0 and 255
575
+
576
+//LCD and SD support
577
+
578
+// VM8201 (LCD Option for K8200) uses "DISPLAY_CHARSET_HD44870_JAPAN" and "ULTIMAKERCONTROLLER"
579
+
580
+// Character based displays can have different extended charsets.
581
+#define DISPLAY_CHARSET_HD44780_JAPAN     // "ääööüüß23°"
582
+//#define DISPLAY_CHARSET_HD44780_WESTERN // "ÄäÖöÜüß²³°" if you see a '~' instead of a 'arrow_right' at the right of submenuitems - this is the right one.
583
+
584
+//#define ULTRA_LCD  //general LCD support, also 16x2
585
+//#define DOGLCD  // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)
586
+//#define SDSUPPORT // Enable SD Card Support in Hardware Console
587
+//#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error)
588
+//#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication
589
+//#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder
590
+//#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking
591
+#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
592
+//#define ULTIPANEL  //the UltiPanel as on Thingiverse
593
+//#define LCD_FEEDBACK_FREQUENCY_HZ 1000	// this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
594
+//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click
595
+
596
+// The MaKr3d Makr-Panel with graphic controller and SD support
597
+// http://reprap.org/wiki/MaKr3d_MaKrPanel
598
+//#define MAKRPANEL
599
+
600
+// The RepRapDiscount Smart Controller (white PCB)
601
+// http://reprap.org/wiki/RepRapDiscount_Smart_Controller
602
+//#define REPRAP_DISCOUNT_SMART_CONTROLLER
603
+
604
+// The GADGETS3D G3D LCD/SD Controller (blue PCB)
605
+// http://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel
606
+//#define G3D_PANEL
607
+
608
+// The RepRapDiscount FULL GRAPHIC Smart Controller (quadratic white PCB)
609
+// http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller
610
+//
611
+// ==> REMEMBER TO INSTALL U8glib to your ARDUINO library folder: http://code.google.com/p/u8glib/wiki/u8glib
612
+//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
613
+
614
+// The RepRapWorld REPRAPWORLD_KEYPAD v1.1
615
+// http://reprapworld.com/?products_details&products_id=202&cPath=1591_1626
616
+//#define REPRAPWORLD_KEYPAD
617
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0 // how much should be moved when a key is pressed, eg 10.0 means 10mm per click
618
+
619
+// The Elefu RA Board Control Panel
620
+// http://www.elefu.com/index.php?route=product/product&product_id=53
621
+// REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C
622
+//#define RA_CONTROL_PANEL
623
+
624
+//automatic expansion
625
+#if defined (MAKRPANEL)
626
+ #define DOGLCD
627
+ #define SDSUPPORT
628
+ #define ULTIPANEL
629
+ #define NEWPANEL
630
+ #define DEFAULT_LCD_CONTRAST 17
631
+#endif
632
+
633
+#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
634
+ #define DOGLCD
635
+ #define U8GLIB_ST7920
636
+ #define REPRAP_DISCOUNT_SMART_CONTROLLER
637
+#endif
638
+
639
+#if defined(ULTIMAKERCONTROLLER) || defined(REPRAP_DISCOUNT_SMART_CONTROLLER) || defined(G3D_PANEL)
640
+ #define ULTIPANEL
641
+ #define NEWPANEL
642
+#endif
643
+
644
+#if defined(REPRAPWORLD_KEYPAD)
645
+  #define NEWPANEL
646
+  #define ULTIPANEL
647
+#endif
648
+#if defined(RA_CONTROL_PANEL)
649
+ #define ULTIPANEL
650
+ #define NEWPANEL
651
+ #define LCD_I2C_TYPE_PCA8574
652
+ #define LCD_I2C_ADDRESS 0x27   // I2C Address of the port expander
653
+#endif
654
+
655
+//I2C PANELS
656
+
657
+//#define LCD_I2C_SAINSMART_YWROBOT
658
+#ifdef LCD_I2C_SAINSMART_YWROBOT
659
+  // This uses the LiquidCrystal_I2C library ( https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home )
660
+  // Make sure it is placed in the Arduino libraries directory.
661
+  #define LCD_I2C_TYPE_PCF8575
662
+  #define LCD_I2C_ADDRESS 0x27   // I2C Address of the port expander
663
+  #define NEWPANEL
664
+  #define ULTIPANEL
665
+#endif
666
+
667
+// PANELOLU2 LCD with status LEDs, separate encoder and click inputs
668
+//#define LCD_I2C_PANELOLU2
669
+#ifdef LCD_I2C_PANELOLU2
670
+  // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 )
671
+  // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory.
672
+  // (v1.2.3 no longer requires you to define PANELOLU in the LiquidTWI2.h library header file)
673
+  // Note: The PANELOLU2 encoder click input can either be directly connected to a pin
674
+  //       (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1).
675
+  #define LCD_I2C_TYPE_MCP23017
676
+  #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
677
+  #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD
678
+  #define NEWPANEL
679
+  #define ULTIPANEL
680
+
681
+  #ifndef ENCODER_PULSES_PER_STEP
682
+	#define ENCODER_PULSES_PER_STEP 4
683
+  #endif
684
+
685
+  #ifndef ENCODER_STEPS_PER_MENU_ITEM
686
+	#define ENCODER_STEPS_PER_MENU_ITEM 1
687
+  #endif
688
+
689
+
690
+  #ifdef LCD_USE_I2C_BUZZER
691
+	#define LCD_FEEDBACK_FREQUENCY_HZ 1000
692
+	#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100
693
+  #endif
694
+
695
+#endif
696
+
697
+// Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs
698
+//#define LCD_I2C_VIKI
699
+#ifdef LCD_I2C_VIKI
700
+  // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 )
701
+  // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory.
702
+  // Note: The pause/stop/resume LCD button pin should be connected to the Arduino
703
+  //       BTN_ENC pin (or set BTN_ENC to -1 if not used)
704
+  #define LCD_I2C_TYPE_MCP23017
705
+  #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
706
+  #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD (requires LiquidTWI2 v1.2.3 or later)
707
+  #define NEWPANEL
708
+  #define ULTIPANEL
709
+#endif
710
+
711
+// Shift register panels
712
+// ---------------------
713
+// 2 wire Non-latching LCD SR from:
714
+// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection 
715
+
716
+//#define SAV_3DLCD
717
+#ifdef SAV_3DLCD
718
+   #define SR_LCD_2W_NL    // Non latching 2 wire shiftregister
719
+   #define NEWPANEL
720
+   #define ULTIPANEL
721
+#endif
722
+
723
+
724
+#ifdef ULTIPANEL
725
+//  #define NEWPANEL  //enable this if you have a click-encoder panel
726
+  #define SDSUPPORT
727
+  #define ULTRA_LCD
728
+  #ifdef DOGLCD // Change number of lines to match the DOG graphic display
729
+    #define LCD_WIDTH 20
730
+    #define LCD_HEIGHT 5
731
+  #else
732
+    #define LCD_WIDTH 20
733
+    #define LCD_HEIGHT 4
734
+  #endif
735
+#else //no panel but just LCD
736
+  #ifdef ULTRA_LCD
737
+  #ifdef DOGLCD // Change number of lines to match the 128x64 graphics display
738
+    #define LCD_WIDTH 20
739
+    #define LCD_HEIGHT 5
740
+  #else
741
+    #define LCD_WIDTH 16
742
+    #define LCD_HEIGHT 2
743
+  #endif
744
+  #endif
745
+#endif
746
+
747
+// default LCD contrast for dogm-like LCD displays
748
+#ifdef DOGLCD
749
+# ifndef DEFAULT_LCD_CONTRAST
750
+#  define DEFAULT_LCD_CONTRAST 32
751
+# endif
752
+#endif
753
+
754
+// Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino
755
+//#define FAST_PWM_FAN
756
+
757
+// Temperature status LEDs that display the hotend and bet temperature.
758
+// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
759
+// Otherwise the RED led is on. There is 1C hysteresis.
760
+//#define TEMP_STAT_LEDS
761
+
762
+// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency
763
+// which is not ass annoying as with the hardware PWM. On the other hand, if this frequency
764
+// is too low, you should also increment SOFT_PWM_SCALE.
765
+//#define FAN_SOFT_PWM
766
+
767
+// Incrementing this by 1 will double the software PWM frequency,
768
+// affecting heaters, and the fan if FAN_SOFT_PWM is enabled.
769
+// However, control resolution will be halved for each increment;
770
+// at zero value, there are 128 effective control positions.
771
+#define SOFT_PWM_SCALE 0
772
+
773
+// M240  Triggers a camera by emulating a Canon RC-1 Remote
774
+// Data from: http://www.doc-diy.net/photo/rc-1_hacked/
775
+// #define PHOTOGRAPH_PIN     23
776
+
777
+// SF send wrong arc g-codes when using Arc Point as fillet procedure
778
+//#define SF_ARC_FIX
779
+
780
+// Support for the BariCUDA Paste Extruder.
781
+//#define BARICUDA
782
+
783
+//define BlinkM/CyzRgb Support
784
+//#define BLINKM
785
+
786
+/*********************************************************************\
787
+* R/C SERVO support
788
+* Sponsored by TrinityLabs, Reworked by codexmas
789
+**********************************************************************/
790
+
791
+// Number of servos
792
+//
793
+// If you select a configuration below, this will receive a default value and does not need to be set manually
794
+// set it manually if you have more servos than extruders and wish to manually control some
795
+// leaving it undefined or defining as 0 will disable the servo subsystem
796
+// If unsure, leave commented / disabled
797
+//
798
+//#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
799
+
800
+// Servo Endstops
801
+//
802
+// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes.
803
+// Use M206 command to correct for switch height offset to actual nozzle height. Store that setting with M500.
804
+//
805
+//#define SERVO_ENDSTOPS {-1, -1, 0} // Servo index for X, Y, Z. Disable with -1
806
+//#define SERVO_ENDSTOP_ANGLES {0,0, 0,0, 70,0} // X,Y,Z Axis Extend and Retract angles
807
+
808
+/**********************************************************************\
809
+ * Support for a filament diameter sensor
810
+ * Also allows adjustment of diameter at print time (vs  at slicing)
811
+ * Single extruder only at this point (extruder 0)
812
+ * 
813
+ * Motherboards
814
+ * 34 - RAMPS1.4 - uses Analog input 5 on the AUX2 connector 
815
+ * 81 - Printrboard - Uses Analog input 2 on the Exp1 connector (version B,C,D,E)
816
+ * 301 - Rambo  - uses Analog input 3
817
+ * Note may require analog pins to be defined for different motherboards
818
+ **********************************************************************/
819
+// Uncomment below to enable
820
+//#define FILAMENT_SENSOR
821
+
822
+#define FILAMENT_SENSOR_EXTRUDER_NUM	0  //The number of the extruder that has the filament sensor (0,1,2)
823
+#define MEASUREMENT_DELAY_CM			14  //measurement delay in cm.  This is the distance from filament sensor to middle of barrel
824
+
825
+#define DEFAULT_NOMINAL_FILAMENT_DIA  3.0  //Enter the diameter (in mm) of the filament generally used (3.0 mm or 1.75 mm) - this is then used in the slicer software.  Used for sensor reading validation
826
+#define MEASURED_UPPER_LIMIT          3.30  //upper limit factor used for sensor reading validation in mm
827
+#define MEASURED_LOWER_LIMIT          1.90  //lower limit factor for sensor reading validation in mm
828
+#define MAX_MEASUREMENT_DELAY			20  //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM  and lower number saves RAM)
829
+
830
+//defines used in the code
831
+#define DEFAULT_MEASURED_FILAMENT_DIA  DEFAULT_NOMINAL_FILAMENT_DIA  //set measured to nominal initially 
832
+
833
+//When using an LCD, uncomment the line below to display the Filament sensor data on the last line instead of status.  Status will appear for 5 sec.
834
+//#define FILAMENT_LCD_DISPLAY
835
+
836
+
837
+
838
+
839
+
840
+
841
+#include "Configuration_adv.h"
842
+#include "thermistortables.h"
843
+
844
+#endif //__CONFIGURATION_H

+ 535
- 0
Marlin/example_configurations/K8200/Configuration_adv.h Ver fichero

@@ -0,0 +1,535 @@
1
+#ifndef CONFIGURATION_ADV_H
2
+#define CONFIGURATION_ADV_H
3
+
4
+//===========================================================================
5
+//=============================Thermal Settings  ============================
6
+//===========================================================================
7
+
8
+#ifdef BED_LIMIT_SWITCHING
9
+  #define BED_HYSTERESIS 2 //only disable heating if T>target+BED_HYSTERESIS and enable heating if T>target-BED_HYSTERESIS
10
+#endif
11
+#define BED_CHECK_INTERVAL 5000 //ms between checks in bang-bang control
12
+
13
+//// Heating sanity check:
14
+// This waits for the watch period in milliseconds whenever an M104 or M109 increases the target temperature
15
+// If the temperature has not increased at the end of that period, the target temperature is set to zero.
16
+// It can be reset with another M104/M109. This check is also only triggered if the target temperature and the current temperature
17
+//  differ by at least 2x WATCH_TEMP_INCREASE
18
+//#define WATCH_TEMP_PERIOD 40000 //40 seconds
19
+//#define WATCH_TEMP_INCREASE 10  //Heat up at least 10 degree in 20 seconds
20
+
21
+#ifdef PIDTEMP
22
+  // this adds an experimental additional term to the heating power, proportional to the extrusion speed.
23
+  // if Kc is chosen well, the additional required power due to increased melting should be compensated.
24
+  #define PID_ADD_EXTRUSION_RATE
25
+  #ifdef PID_ADD_EXTRUSION_RATE
26
+    #define  DEFAULT_Kc (1) //heating power=Kc*(e_speed)
27
+  #endif
28
+#endif
29
+
30
+
31
+//automatic temperature: The hot end target temperature is calculated by all the buffered lines of gcode.
32
+//The maximum buffered steps/sec of the extruder motor are called "se".
33
+//You enter the autotemp mode by a M109 S<mintemp> B<maxtemp> F<factor>
34
+// the target temperature is set to mintemp+factor*se[steps/sec] and limited by mintemp and maxtemp
35
+// you exit the value by any M109 without F*
36
+// Also, if the temperature is set to a value <mintemp, it is not changed by autotemp.
37
+// on an Ultimaker, some initial testing worked with M109 S215 B260 F1 in the start.gcode
38
+#define AUTOTEMP
39
+#ifdef AUTOTEMP
40
+  #define AUTOTEMP_OLDWEIGHT 0.98
41
+#endif
42
+
43
+//Show Temperature ADC value
44
+//The M105 command return, besides traditional information, the ADC value read from temperature sensors.
45
+//#define SHOW_TEMP_ADC_VALUES
46
+
47
+//  extruder run-out prevention.
48
+//if the machine is idle, and the temperature over MINTEMP, every couple of SECONDS some filament is extruded
49
+//#define EXTRUDER_RUNOUT_PREVENT
50
+#define EXTRUDER_RUNOUT_MINTEMP 190
51
+#define EXTRUDER_RUNOUT_SECONDS 30.
52
+#define EXTRUDER_RUNOUT_ESTEPS 14. //mm filament
53
+#define EXTRUDER_RUNOUT_SPEED 1500.  //extrusion speed
54
+#define EXTRUDER_RUNOUT_EXTRUDE 100
55
+
56
+//These defines help to calibrate the AD595 sensor in case you get wrong temperature measurements.
57
+//The measured temperature is defined as "actualTemp = (measuredTemp * TEMP_SENSOR_AD595_GAIN) + TEMP_SENSOR_AD595_OFFSET"
58
+#define TEMP_SENSOR_AD595_OFFSET 0.0
59
+#define TEMP_SENSOR_AD595_GAIN   1.0
60
+
61
+//This is for controlling a fan to cool down the stepper drivers
62
+//it will turn on when any driver is enabled
63
+//and turn off after the set amount of seconds from last driver being disabled again
64
+#define CONTROLLERFAN_PIN -1 //Pin used for the fan to cool controller (-1 to disable)
65
+#define CONTROLLERFAN_SECS 60 //How many seconds, after all motors were disabled, the fan should run
66
+#define CONTROLLERFAN_SPEED 255  // == full speed
67
+
68
+// When first starting the main fan, run it at full speed for the
69
+// given number of milliseconds.  This gets the fan spinning reliably
70
+// before setting a PWM value. (Does not work with software PWM for fan on Sanguinololu)
71
+//#define FAN_KICKSTART_TIME 100
72
+
73
+// Extruder cooling fans
74
+// Configure fan pin outputs to automatically turn on/off when the associated
75
+// extruder temperature is above/below EXTRUDER_AUTO_FAN_TEMPERATURE.
76
+// Multiple extruders can be assigned to the same pin in which case
77
+// the fan will turn on when any selected extruder is above the threshold.
78
+#define EXTRUDER_0_AUTO_FAN_PIN -1
79
+#define EXTRUDER_1_AUTO_FAN_PIN -1
80
+#define EXTRUDER_2_AUTO_FAN_PIN -1
81
+#define EXTRUDER_3_AUTO_FAN_PIN -1
82
+#define EXTRUDER_AUTO_FAN_TEMPERATURE 50
83
+#define EXTRUDER_AUTO_FAN_SPEED   255  // == full speed
84
+
85
+
86
+//===========================================================================
87
+//=============================Mechanical Settings===========================
88
+//===========================================================================
89
+
90
+#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing
91
+
92
+
93
+//// AUTOSET LOCATIONS OF LIMIT SWITCHES
94
+//// Added by ZetaPhoenix 09-15-2012
95
+#ifdef MANUAL_HOME_POSITIONS  // Use manual limit switch locations
96
+  #define X_HOME_POS MANUAL_X_HOME_POS
97
+  #define Y_HOME_POS MANUAL_Y_HOME_POS
98
+  #define Z_HOME_POS MANUAL_Z_HOME_POS
99
+#else //Set min/max homing switch positions based upon homing direction and min/max travel limits
100
+  //X axis
101
+  #if X_HOME_DIR == -1
102
+    #ifdef BED_CENTER_AT_0_0
103
+      #define X_HOME_POS X_MAX_LENGTH * -0.5
104
+    #else
105
+      #define X_HOME_POS X_MIN_POS
106
+    #endif //BED_CENTER_AT_0_0
107
+  #else
108
+    #ifdef BED_CENTER_AT_0_0
109
+      #define X_HOME_POS X_MAX_LENGTH * 0.5
110
+    #else
111
+      #define X_HOME_POS X_MAX_POS
112
+    #endif //BED_CENTER_AT_0_0
113
+  #endif //X_HOME_DIR == -1
114
+
115
+  //Y axis
116
+  #if Y_HOME_DIR == -1
117
+    #ifdef BED_CENTER_AT_0_0
118
+      #define Y_HOME_POS Y_MAX_LENGTH * -0.5
119
+    #else
120
+      #define Y_HOME_POS Y_MIN_POS
121
+    #endif //BED_CENTER_AT_0_0
122
+  #else
123
+    #ifdef BED_CENTER_AT_0_0
124
+      #define Y_HOME_POS Y_MAX_LENGTH * 0.5
125
+    #else
126
+      #define Y_HOME_POS Y_MAX_POS
127
+    #endif //BED_CENTER_AT_0_0
128
+  #endif //Y_HOME_DIR == -1
129
+
130
+  // Z axis
131
+  #if Z_HOME_DIR == -1 //BED_CENTER_AT_0_0 not used
132
+    #define Z_HOME_POS Z_MIN_POS
133
+  #else
134
+    #define Z_HOME_POS Z_MAX_POS
135
+  #endif //Z_HOME_DIR == -1
136
+#endif //End auto min/max positions
137
+//END AUTOSET LOCATIONS OF LIMIT SWITCHES -ZP
138
+
139
+
140
+//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
141
+
142
+// A single Z stepper driver is usually used to drive 2 stepper motors.
143
+// Uncomment this define to utilize a separate stepper driver for each Z axis motor.
144
+// Only a few motherboards support this, like RAMPS, which have dual extruder support (the 2nd, often unused, extruder driver is used
145
+// to control the 2nd Z axis stepper motor). The pins are currently only defined for a RAMPS motherboards.
146
+// On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder.
147
+//#define Z_DUAL_STEPPER_DRIVERS
148
+
149
+#ifdef Z_DUAL_STEPPER_DRIVERS
150
+  #undef EXTRUDERS
151
+  #define EXTRUDERS 1
152
+#endif
153
+
154
+// Same again but for Y Axis.
155
+//#define Y_DUAL_STEPPER_DRIVERS
156
+
157
+// Define if the two Y drives need to rotate in opposite directions
158
+#define INVERT_Y2_VS_Y_DIR true
159
+
160
+#ifdef Y_DUAL_STEPPER_DRIVERS
161
+  #undef EXTRUDERS
162
+  #define EXTRUDERS 1
163
+#endif
164
+
165
+#if defined (Z_DUAL_STEPPER_DRIVERS) && defined (Y_DUAL_STEPPER_DRIVERS)
166
+  #error "You cannot have dual drivers for both Y and Z"
167
+#endif
168
+
169
+// Enable this for dual x-carriage printers.
170
+// A dual x-carriage design has the advantage that the inactive extruder can be parked which
171
+// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
172
+// allowing faster printing speeds.
173
+//#define DUAL_X_CARRIAGE
174
+#ifdef DUAL_X_CARRIAGE
175
+// Configuration for second X-carriage
176
+// Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop;
177
+// the second x-carriage always homes to the maximum endstop.
178
+#define X2_MIN_POS 80     // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage
179
+#define X2_MAX_POS 353    // set maximum to the distance between toolheads when both heads are homed
180
+#define X2_HOME_DIR 1     // the second X-carriage always homes to the maximum endstop position
181
+#define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position
182
+    // However: In this mode the EXTRUDER_OFFSET_X value for the second extruder provides a software
183
+    // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops
184
+    // without modifying the firmware (through the "M218 T1 X???" command).
185
+    // Remember: you should set the second extruder x-offset to 0 in your slicer.
186
+
187
+// Pins for second x-carriage stepper driver (defined here to avoid further complicating pins.h)
188
+#define X2_ENABLE_PIN 29
189
+#define X2_STEP_PIN 25
190
+#define X2_DIR_PIN 23
191
+
192
+// There are a few selectable movement modes for dual x-carriages using M605 S<mode>
193
+//    Mode 0: Full control. The slicer has full control over both x-carriages and can achieve optimal travel results
194
+//                           as long as it supports dual x-carriages. (M605 S0)
195
+//    Mode 1: Auto-park mode. The firmware will automatically park and unpark the x-carriages on tool changes so
196
+//                           that additional slicer support is not required. (M605 S1)
197
+//    Mode 2: Duplication mode. The firmware will transparently make the second x-carriage and extruder copy all
198
+//                           actions of the first x-carriage. This allows the printer to print 2 arbitrary items at
199
+//                           once. (2nd extruder x offset and temp offset are set using: M605 S2 [Xnnn] [Rmmm])
200
+
201
+// This is the default power-up mode which can be later using M605.
202
+#define DEFAULT_DUAL_X_CARRIAGE_MODE 0
203
+
204
+// Default settings in "Auto-park Mode"
205
+#define TOOLCHANGE_PARK_ZLIFT   0.2      // the distance to raise Z axis when parking an extruder
206
+#define TOOLCHANGE_UNPARK_ZLIFT 1        // the distance to raise Z axis when unparking an extruder
207
+
208
+// Default x offset in duplication mode (typically set to half print bed width)
209
+#define DEFAULT_DUPLICATION_X_OFFSET 100
210
+
211
+#endif //DUAL_X_CARRIAGE
212
+
213
+//homing hits the endstop, then retracts by this distance, before it tries to slowly bump again:
214
+#define X_HOME_RETRACT_MM 5
215
+#define Y_HOME_RETRACT_MM 5
216
+#define Z_HOME_RETRACT_MM 3
217
+//#define QUICK_HOME  //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially.
218
+
219
+#define AXIS_RELATIVE_MODES {false, false, false, false}
220
+#ifdef CONFIG_STEPPERS_TOSHIBA
221
+#define MAX_STEP_FREQUENCY 10000 // Max step frequency for Toshiba Stepper Controllers
222
+#else
223
+#define MAX_STEP_FREQUENCY 40000 // Max step frequency for Ultimaker (5000 pps / half step)
224
+#endif
225
+//By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
226
+#define INVERT_X_STEP_PIN false
227
+#define INVERT_Y_STEP_PIN false
228
+#define INVERT_Z_STEP_PIN false
229
+#define INVERT_E_STEP_PIN false
230
+
231
+//default stepper release if idle. Set to 0 to deactivate.
232
+#define DEFAULT_STEPPER_DEACTIVE_TIME 60
233
+
234
+#define DEFAULT_MINIMUMFEEDRATE       0.0     // minimum feedrate
235
+#define DEFAULT_MINTRAVELFEEDRATE     0.0
236
+
237
+// Feedrates for manual moves along X, Y, Z, E from panel
238
+#ifdef ULTIPANEL
239
+#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60}  // set the speeds for manual moves (mm/min)
240
+#endif
241
+
242
+//Comment to disable setting feedrate multiplier via encoder
243
+#ifdef ULTIPANEL
244
+    #define ULTIPANEL_FEEDMULTIPLY
245
+#endif
246
+
247
+// minimum time in microseconds that a movement needs to take if the buffer is emptied.
248
+#define DEFAULT_MINSEGMENTTIME        20000
249
+
250
+// If defined the movements slow down when the look ahead buffer is only half full
251
+#define SLOWDOWN
252
+
253
+// Frequency limit
254
+// See nophead's blog for more info
255
+// Not working O
256
+//#define XY_FREQUENCY_LIMIT  15
257
+
258
+// Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end
259
+// of the buffer and all stops. This should not be much greater than zero and should only be changed
260
+// if unwanted behavior is observed on a user's machine when running at very slow speeds.
261
+#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec)
262
+
263
+// MS1 MS2 Stepper Driver Microstepping mode table
264
+#define MICROSTEP1 LOW,LOW
265
+#define MICROSTEP2 HIGH,LOW
266
+#define MICROSTEP4 LOW,HIGH
267
+#define MICROSTEP8 HIGH,HIGH
268
+#define MICROSTEP16 HIGH,HIGH
269
+
270
+// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU.
271
+#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16]
272
+
273
+// Motor Current setting (Only functional when motor driver current ref pins are connected to a digital trimpot on supported boards)
274
+#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
275
+
276
+// uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro
277
+//#define DIGIPOT_I2C
278
+// Number of channels available for I2C digipot, For Azteeg X3 Pro we have 8
279
+#define DIGIPOT_I2C_NUM_CHANNELS 8
280
+// actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS
281
+#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0}
282
+
283
+//===========================================================================
284
+//=============================Additional Features===========================
285
+//===========================================================================
286
+
287
+//#define CHDK 4        //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/
288
+#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
289
+
290
+#define SD_FINISHED_STEPPERRELEASE true  //if sd support and the file is finished: disable steppers?
291
+#define SD_FINISHED_RELEASECOMMAND "M84 X Y Z E" // You might want to keep the z enabled so your bed stays in place.
292
+
293
+#define SDCARD_RATHERRECENTFIRST  //reverse file order of sd card menu display. Its sorted practically after the file system block order.
294
+// if a file is deleted, it frees a block. hence, the order is not purely chronological. To still have auto0.g accessible, there is again the option to do that.
295
+// using:
296
+//#define MENU_ADDAUTOSTART
297
+
298
+// Show a progress bar on HD44780 LCDs for SD printing
299
+//#define LCD_PROGRESS_BAR
300
+
301
+#ifdef LCD_PROGRESS_BAR
302
+  // Amount of time (ms) to show the bar
303
+  #define PROGRESS_BAR_BAR_TIME 2000
304
+  // Amount of time (ms) to show the status message
305
+  #define PROGRESS_BAR_MSG_TIME 3000
306
+  // Amount of time (ms) to retain the status message (0=forever)
307
+  #define PROGRESS_MSG_EXPIRE   0
308
+  // Enable this to show messages for MSG_TIME then hide them
309
+  //#define PROGRESS_MSG_ONCE
310
+  #ifdef DOGLCD
311
+    #warning LCD_PROGRESS_BAR does not apply to graphical displays at this time.
312
+  #endif
313
+  #ifdef FILAMENT_LCD_DISPLAY
314
+    #error LCD_PROGRESS_BAR and FILAMENT_LCD_DISPLAY are not fully compatible. Comment out this line to use both.
315
+  #endif
316
+#endif
317
+
318
+// The hardware watchdog should reset the microcontroller disabling all outputs, in case the firmware gets stuck and doesn't do temperature regulation.
319
+//#define USE_WATCHDOG
320
+
321
+#ifdef USE_WATCHDOG
322
+// If you have a watchdog reboot in an ArduinoMega2560 then the device will hang forever, as a watchdog reset will leave the watchdog on.
323
+// The "WATCHDOG_RESET_MANUAL" goes around this by not using the hardware reset.
324
+//  However, THIS FEATURE IS UNSAFE!, as it will only work if interrupts are disabled. And the code could hang in an interrupt routine with interrupts disabled.
325
+//#define WATCHDOG_RESET_MANUAL
326
+#endif
327
+
328
+// Enable the option to stop SD printing when hitting and endstops, needs to be enabled from the LCD menu when this option is enabled.
329
+//#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED
330
+
331
+// Babystepping enables the user to control the axis in tiny amounts, independently from the normal printing process
332
+// it can e.g. be used to change z-positions in the print startup phase in real-time
333
+// does not respect endstops!
334
+//#define BABYSTEPPING
335
+#ifdef BABYSTEPPING
336
+  #define BABYSTEP_XY  //not only z, but also XY in the menu. more clutter, more functions
337
+  #define BABYSTEP_INVERT_Z false  //true for inverse movements in Z
338
+  #define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements
339
+
340
+  #ifdef COREXY
341
+    #error BABYSTEPPING not implemented for COREXY yet.
342
+  #endif
343
+
344
+  #ifdef DELTA
345
+    #ifdef BABYSTEP_XY
346
+      #error BABYSTEPPING only implemented for Z axis on deltabots.
347
+    #endif
348
+  #endif
349
+#endif
350
+
351
+// extruder advance constant (s2/mm3)
352
+//
353
+// advance (steps) = STEPS_PER_CUBIC_MM_E * EXTRUDER_ADVANCE_K * cubic mm per second ^ 2
354
+//
355
+// Hooke's law says:		force = k * distance
356
+// Bernoulli's principle says:	v ^ 2 / 2 + g . h + pressure / density = constant
357
+// so: v ^ 2 is proportional to number of steps we advance the extruder
358
+//#define ADVANCE
359
+
360
+#ifdef ADVANCE
361
+  #define EXTRUDER_ADVANCE_K .0
362
+
363
+  #define D_FILAMENT 2.85
364
+  #define STEPS_MM_E 836
365
+  #define EXTRUSION_AREA (0.25 * D_FILAMENT * D_FILAMENT * 3.14159)
366
+  #define STEPS_PER_CUBIC_MM_E (axis_steps_per_unit[E_AXIS]/ EXTRUSION_AREA)
367
+
368
+#endif // ADVANCE
369
+
370
+// Arc interpretation settings:
371
+#define MM_PER_ARC_SEGMENT 1
372
+#define N_ARC_CORRECTION 25
373
+
374
+const unsigned int dropsegments=5; //everything with less than this number of steps will be ignored as move and joined with the next movement
375
+
376
+// If you are using a RAMPS board or cheap E-bay purchased boards that do not detect when an SD card is inserted
377
+// You can get round this by connecting a push button or single throw switch to the pin defined as SDCARDCARDDETECT
378
+// in the pins.h file.  When using a push button pulling the pin to ground this will need inverted.  This setting should
379
+// be commented out otherwise
380
+#define SDCARDDETECTINVERTED
381
+
382
+#ifdef ULTIPANEL
383
+ #undef SDCARDDETECTINVERTED
384
+#endif
385
+
386
+// Power Signal Control Definitions
387
+// By default use ATX definition
388
+#ifndef POWER_SUPPLY
389
+  #define POWER_SUPPLY 1
390
+#endif
391
+// 1 = ATX
392
+#if (POWER_SUPPLY == 1)
393
+  #define PS_ON_AWAKE  LOW
394
+  #define PS_ON_ASLEEP HIGH
395
+#endif
396
+// 2 = X-Box 360 203W
397
+#if (POWER_SUPPLY == 2)
398
+  #define PS_ON_AWAKE  HIGH
399
+  #define PS_ON_ASLEEP LOW
400
+#endif
401
+
402
+// Control heater 0 and heater 1 in parallel.
403
+//#define HEATERS_PARALLEL
404
+
405
+//===========================================================================
406
+//=============================Buffers           ============================
407
+//===========================================================================
408
+
409
+// The number of linear motions that can be in the plan at any give time.
410
+// THE BLOCK_BUFFER_SIZE NEEDS TO BE A POWER OF 2, i.g. 8,16,32 because shifts and ors are used to do the ring-buffering.
411
+#if defined SDSUPPORT
412
+  #define BLOCK_BUFFER_SIZE 16   // SD,LCD,Buttons take more memory, block buffer needs to be smaller
413
+#else
414
+  #define BLOCK_BUFFER_SIZE 16 // maximize block buffer
415
+#endif
416
+
417
+
418
+//The ASCII buffer for receiving from the serial:
419
+#define MAX_CMD_SIZE 96
420
+#define BUFSIZE 4
421
+
422
+
423
+// Firmware based and LCD controlled retract
424
+// M207 and M208 can be used to define parameters for the retraction.
425
+// The retraction can be called by the slicer using G10 and G11
426
+// until then, intended retractions can be detected by moves that only extrude and the direction.
427
+// the moves are than replaced by the firmware controlled ones.
428
+
429
+// #define FWRETRACT  //ONLY PARTIALLY TESTED
430
+#ifdef FWRETRACT
431
+  #define MIN_RETRACT 0.1                //minimum extruded mm to accept a automatic gcode retraction attempt
432
+  #define RETRACT_LENGTH 3               //default retract length (positive mm)
433
+  #define RETRACT_LENGTH_SWAP 13         //default swap retract length (positive mm), for extruder change
434
+  #define RETRACT_FEEDRATE 45            //default feedrate for retracting (mm/s)
435
+  #define RETRACT_ZLIFT 0                //default retract Z-lift
436
+  #define RETRACT_RECOVER_LENGTH 0       //default additional recover length (mm, added to retract length when recovering)
437
+  #define RETRACT_RECOVER_LENGTH_SWAP 0  //default additional swap recover length (mm, added to retract length when recovering from extruder change)
438
+  #define RETRACT_RECOVER_FEEDRATE 8     //default feedrate for recovering from retraction (mm/s)
439
+#endif
440
+
441
+//adds support for experimental filament exchange support M600; requires display
442
+#ifdef ULTIPANEL
443
+  #define FILAMENTCHANGEENABLE
444
+  #ifdef FILAMENTCHANGEENABLE
445
+    #define FILAMENTCHANGE_XPOS 3
446
+    #define FILAMENTCHANGE_YPOS 3
447
+    #define FILAMENTCHANGE_ZADD 10
448
+    #define FILAMENTCHANGE_FIRSTRETRACT -2
449
+    #define FILAMENTCHANGE_FINALRETRACT -100
450
+  #endif
451
+#endif
452
+
453
+#ifdef FILAMENTCHANGEENABLE
454
+  #ifdef EXTRUDER_RUNOUT_PREVENT
455
+    #error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE
456
+  #endif
457
+#endif
458
+
459
+//===========================================================================
460
+//=============================  Define Defines  ============================
461
+//===========================================================================
462
+
463
+#if defined (ENABLE_AUTO_BED_LEVELING) && defined (DELTA)
464
+  #error "Bed Auto Leveling is still not compatible with Delta Kinematics."
465
+#endif
466
+
467
+#if EXTRUDERS > 1 && defined TEMP_SENSOR_1_AS_REDUNDANT
468
+  #error "You cannot use TEMP_SENSOR_1_AS_REDUNDANT if EXTRUDERS > 1"
469
+#endif
470
+
471
+#if EXTRUDERS > 1 && defined HEATERS_PARALLEL
472
+  #error "You cannot use HEATERS_PARALLEL if EXTRUDERS > 1"
473
+#endif
474
+
475
+#if TEMP_SENSOR_0 > 0
476
+  #define THERMISTORHEATER_0 TEMP_SENSOR_0
477
+  #define HEATER_0_USES_THERMISTOR
478
+#endif
479
+#if TEMP_SENSOR_1 > 0
480
+  #define THERMISTORHEATER_1 TEMP_SENSOR_1
481
+  #define HEATER_1_USES_THERMISTOR
482
+#endif
483
+#if TEMP_SENSOR_2 > 0
484
+  #define THERMISTORHEATER_2 TEMP_SENSOR_2
485
+  #define HEATER_2_USES_THERMISTOR
486
+#endif
487
+#if TEMP_SENSOR_3 > 0
488
+  #define THERMISTORHEATER_3 TEMP_SENSOR_3
489
+  #define HEATER_3_USES_THERMISTOR
490
+#endif
491
+#if TEMP_SENSOR_BED > 0
492
+  #define THERMISTORBED TEMP_SENSOR_BED
493
+  #define BED_USES_THERMISTOR
494
+#endif
495
+#if TEMP_SENSOR_0 == -1
496
+  #define HEATER_0_USES_AD595
497
+#endif
498
+#if TEMP_SENSOR_1 == -1
499
+  #define HEATER_1_USES_AD595
500
+#endif
501
+#if TEMP_SENSOR_2 == -1
502
+  #define HEATER_2_USES_AD595
503
+#endif
504
+#if TEMP_SENSOR_3 == -1
505
+  #define HEATER_3_USES_AD595
506
+#endif
507
+#if TEMP_SENSOR_BED == -1
508
+  #define BED_USES_AD595
509
+#endif
510
+#if TEMP_SENSOR_0 == -2
511
+  #define HEATER_0_USES_MAX6675
512
+#endif
513
+#if TEMP_SENSOR_0 == 0
514
+  #undef HEATER_0_MINTEMP
515
+  #undef HEATER_0_MAXTEMP
516
+#endif
517
+#if TEMP_SENSOR_1 == 0
518
+  #undef HEATER_1_MINTEMP
519
+  #undef HEATER_1_MAXTEMP
520
+#endif
521
+#if TEMP_SENSOR_2 == 0
522
+  #undef HEATER_2_MINTEMP
523
+  #undef HEATER_2_MAXTEMP
524
+#endif
525
+#if TEMP_SENSOR_3 == 0
526
+  #undef HEATER_3_MINTEMP
527
+  #undef HEATER_3_MAXTEMP
528
+#endif
529
+#if TEMP_SENSOR_BED == 0
530
+  #undef BED_MINTEMP
531
+  #undef BED_MAXTEMP
532
+#endif
533
+
534
+
535
+#endif //__CONFIGURATION_ADV_H

+ 13
- 0
Marlin/example_configurations/K8200/readme.md Ver fichero

@@ -0,0 +1,13 @@
1
+# Example Configuration for Vellemann K8200
2
+* Configuration files for **Vellemann K8200** (with VM8201 - LCD Option for K8200)
3
+* K8200 is a 3Drag clone - configuration should work with 3Drag http://reprap.org/wiki/3drag, too. Please report.
4
+
5
+* updated manually with parameters form genuine Vellemann Firmware "firmware_k8200_marlinv2" based on the recent development branch
6
+
7
+* VM8201 uses "DISPLAY_CHARSET_HD44870_JAPAN" and "ULTIMAKERCONTROLLER"
8
+* german (de) translation with umlaut is supported now - thanks to @AnHardt for the great hardware based umlaut support
9
+
10
+I (@CONSULitAS) tested the changes on my K8200 with 20x4-LCD and Arduino 1.0.5 for Windows (SD library added to IDE manually) - everything works well.
11
+
12
+**Source for genuine Vellemann Firmware V2 (with LCD/SD-Support):**
13
+* [firmware_k8200_marlinv2.zip](http://www.k8200.eu/downloads/files/downloads/firmware_k8200_marlinv2.zip)

+ 49
- 9
Marlin/example_configurations/SCARA/Configuration.h Ver fichero

@@ -3,6 +3,22 @@
3 3
 
4 4
 #include "boards.h"
5 5
 
6
+
7
+//===========================================================================
8
+//============================= Getting Started =============================
9
+//===========================================================================
10
+/*
11
+Here are some standard links for getting your machine calibrated:
12
+ * http://reprap.org/wiki/Calibration 
13
+ * http://youtu.be/wAL9d7FgInk
14
+ * http://calculator.josefprusa.cz
15
+ * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide
16
+ * http://www.thingiverse.com/thing:5573
17
+ * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap
18
+ * http://www.thingiverse.com/thing:298812
19
+*/
20
+
21
+
6 22
 // This configuration file contains the basic settings.
7 23
 // Advanced settings can be found in Configuration_adv.h
8 24
 // BASIC SETTINGS: select your board type, temperature sensor type, axis scaling, and endstop configuration
@@ -42,8 +58,12 @@
42 58
 // User-specified version info of this build to display in [Pronterface, etc] terminal window during
43 59
 // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
44 60
 // build by the user have been successfully uploaded into firmware.
61
+#define STRING_VERSION "1.0.2"
62
+#define STRING_URL "reprap.org"
45 63
 #define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time
46 64
 #define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes.
65
+#define STRING_SPLASH_LINE1 "v" STRING_VERSION // will be shown during bootup in line 1
66
+//#define STRING_SPLASH_LINE2 STRING_VERSION_CONFIG_H // will be shown during bootup in line2
47 67
 
48 68
 // SERIAL_PORT selects which serial port should be used for communication with the host.
49 69
 // This allows the connection of wireless adapters (for instance) to non-default port pins.
@@ -83,7 +103,7 @@
83 103
 // #define PS_DEFAULT_OFF
84 104
 
85 105
 //===========================================================================
86
-//=============================Thermal Settings  ============================
106
+//============================= Thermal Settings ============================
87 107
 //===========================================================================
88 108
 //
89 109
 //--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table
@@ -158,7 +178,11 @@
158 178
 #define EXTRUDER_WATTS (2*2/5.9) //  P=I^2/R
159 179
 #define BED_WATTS (5.45*5.45/2.2)      // P=I^2/R
160 180
 
161
-// PID settings:
181
+//===========================================================================
182
+//============================= PID Settings ================================
183
+//===========================================================================
184
+// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning
185
+
162 186
 // Comment the following line to disable PID and enable bang-bang.
163 187
 #define PIDTEMP
164 188
 #define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current
@@ -199,7 +223,9 @@
199 223
    // #define  DEFAULT_Kd 440
200 224
 #endif // PIDTEMP
201 225
 
202
-// Bed Temperature Control
226
+//===========================================================================
227
+//============================= PID > Bed Temperature Control ===============
228
+//===========================================================================
203 229
 // Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis
204 230
 //
205 231
 // Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder.
@@ -252,7 +278,11 @@
252 278
 #define EXTRUDE_MINTEMP 150
253 279
 #define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances.
254 280
 
255
-/*================== Thermal Runaway Protection ==============================
281
+
282
+//===========================================================================
283
+//============================= Thermal Runaway Protection ==================
284
+//===========================================================================
285
+/*
256 286
 This is a feature to protect your printer from burn up in flames if it has
257 287
 a thermistor coming off place (this happened to a friend of mine recently and
258 288
 motivated me writing this feature).
@@ -287,10 +317,10 @@ your extruder heater takes 2 minutes to hit the target on heating.
287 317
 // Parameters for the bed heater
288 318
 //#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds
289 319
 //#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius
290
-//===========================================================================
320
+
291 321
 
292 322
 //===========================================================================
293
-//=============================Mechanical Settings===========================
323
+//============================ Mechanical Settings ==========================
294 324
 //===========================================================================
295 325
 
296 326
 // Uncomment the following line to enable CoreXY kinematics
@@ -362,7 +392,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
362 392
 #define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS.
363 393
 #define max_software_endstops true  // If true, axis won't move to coordinates greater than the defined lengths below.
364 394
 
365
-// Travel limits after homing
395
+// Travel limits after homing (units are in mm)
366 396
 #define X_MAX_POS 200
367 397
 #define X_MIN_POS 0
368 398
 #define Y_MAX_POS 200
@@ -373,7 +403,11 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
373 403
 #define X_MAX_LENGTH (X_MAX_POS - X_MIN_POS)
374 404
 #define Y_MAX_LENGTH (Y_MAX_POS - Y_MIN_POS)
375 405
 #define Z_MAX_LENGTH (Z_MAX_POS - Z_MIN_POS)
406
+
407
+
408
+//===========================================================================
376 409
 //============================= Bed Auto Leveling ===========================
410
+//===========================================================================
377 411
 
378 412
 //#define ENABLE_AUTO_BED_LEVELING // Delete the comment to enable (remove // at the start of the line)
379 413
 
@@ -500,8 +534,9 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
500 534
 #define DEFAULT_ZJERK                 0.4    // (mm/sec)
501 535
 #define DEFAULT_EJERK                 3    // (mm/sec)
502 536
 
537
+
503 538
 //===========================================================================
504
-//=============================Additional Features===========================
539
+//============================= Additional Features =========================
505 540
 //===========================================================================
506 541
 
507 542
 // Custom M code points
@@ -534,6 +569,11 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
534 569
 #define ABS_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
535 570
 
536 571
 //LCD and SD support
572
+
573
+// Character based displays can have different extended charsets.
574
+#define DISPLAY_CHARSET_HD44780_JAPAN     // "ääööüüß23°"
575
+//#define DISPLAY_CHARSET_HD44780_WESTERN // "ÄäÖöÜüß²³°" if you see a '~' instead of a 'arrow_right' at the right of submenuitems - this is the right one.
576
+
537 577
 //#define ULTRA_LCD  //general LCD support, also 16x2
538 578
 //#define DOGLCD  // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)
539 579
 //#define SDSUPPORT // Enable SD Card Support in Hardware Console
@@ -571,7 +611,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
571 611
 
572 612
 // The Elefu RA Board Control Panel
573 613
 // http://www.elefu.com/index.php?route=product/product&product_id=53
574
-// REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARUDINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C
614
+// REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C
575 615
 //#define RA_CONTROL_PANEL
576 616
 
577 617
 //automatic expansion

+ 1
- 4
Marlin/example_configurations/SCARA/Configuration_adv.h Ver fichero

@@ -200,9 +200,6 @@
200 200
 // This is the default power-up mode which can be later using M605.
201 201
 #define DEFAULT_DUAL_X_CARRIAGE_MODE 0
202 202
 
203
-// As the x-carriages are independent we can now account for any relative Z offset
204
-#define EXTRUDER1_Z_OFFSET 0.0           // z offset relative to extruder 0
205
-
206 203
 // Default settings in "Auto-park Mode"
207 204
 #define TOOLCHANGE_PARK_ZLIFT   0.2      // the distance to raise Z axis when parking an extruder
208 205
 #define TOOLCHANGE_UNPARK_ZLIFT 1        // the distance to raise Z axis when unparking an extruder
@@ -231,7 +228,7 @@
231 228
 #define INVERT_Z_STEP_PIN false
232 229
 #define INVERT_E_STEP_PIN false
233 230
 
234
-//default stepper release if idle
231
+//default stepper release if idle. Set to 0 to deactivate.
235 232
 #define DEFAULT_STEPPER_DEACTIVE_TIME 240
236 233
 
237 234
 #define DEFAULT_MINIMUMFEEDRATE       0.0     // minimum feedrate

+ 838
- 0
Marlin/example_configurations/WITBOX/Configuration.h Ver fichero

@@ -0,0 +1,838 @@
1
+#ifndef CONFIGURATION_H
2
+#define CONFIGURATION_H
3
+
4
+#include "boards.h"
5
+
6
+
7
+//===========================================================================
8
+//============================= Getting Started =============================
9
+//===========================================================================
10
+/*
11
+Here are some standard links for getting your machine calibrated:
12
+ * http://reprap.org/wiki/Calibration 
13
+ * http://youtu.be/wAL9d7FgInk
14
+ * http://calculator.josefprusa.cz
15
+ * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide
16
+ * http://www.thingiverse.com/thing:5573
17
+ * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap
18
+ * http://www.thingiverse.com/thing:298812
19
+*/
20
+
21
+
22
+// This configuration file contains the basic settings.
23
+// Advanced settings can be found in Configuration_adv.h
24
+// BASIC SETTINGS: select your board type, temperature sensor type, axis scaling, and endstop configuration
25
+
26
+//===========================================================================
27
+//============================= DELTA Printer ===============================
28
+//===========================================================================
29
+// For a Delta printer replace the configuration files with the files in the
30
+// example_configurations/delta directory.
31
+//
32
+
33
+//===========================================================================
34
+//============================= SCARA Printer ===============================
35
+//===========================================================================
36
+// For a Delta printer replace the configuration files with the files in the
37
+// example_configurations/SCARA directory.
38
+//
39
+
40
+// User-specified version info of this build to display in [Pronterface, etc] terminal window during
41
+// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
42
+// build by the user have been successfully uploaded into firmware.
43
+#define STRING_VERSION "1.0.2"
44
+#define STRING_URL "reprap.org"
45
+#define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time
46
+#define STRING_CONFIG_H_AUTHOR "(bq Witbox)" // Who made the changes.
47
+#define STRING_SPLASH_LINE1 "v" STRING_VERSION // will be shown during bootup in line 1
48
+//#define STRING_SPLASH_LINE2 STRING_VERSION_CONFIG_H // will be shown during bootup in line2
49
+
50
+// SERIAL_PORT selects which serial port should be used for communication with the host.
51
+// This allows the connection of wireless adapters (for instance) to non-default port pins.
52
+// Serial port 0 is still used by the Arduino bootloader regardless of this setting.
53
+#define SERIAL_PORT 0
54
+
55
+// This determines the communication speed of the printer
56
+#define BAUDRATE 115200
57
+
58
+// This enables the serial port associated to the Bluetooth interface
59
+//#define BTENABLED              // Enable BT interface on AT90USB devices
60
+
61
+// The following define selects which electronics board you have.
62
+// Please choose the name from boards.h that matches your setup
63
+#ifndef MOTHERBOARD
64
+  #define MOTHERBOARD BOARD_WITBOX
65
+#endif
66
+
67
+// Define this to set a custom name for your generic Mendel,
68
+// #define CUSTOM_MENDEL_NAME "This Mendel"
69
+
70
+// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
71
+// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
72
+// #define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
73
+
74
+// This defines the number of extruders
75
+#define EXTRUDERS 1
76
+
77
+//// The following define selects which power supply you have. Please choose the one that matches your setup
78
+// 1 = ATX
79
+// 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC)
80
+
81
+#define POWER_SUPPLY 1
82
+
83
+// Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it.
84
+// #define PS_DEFAULT_OFF
85
+
86
+
87
+//===========================================================================
88
+//============================= Thermal Settings ============================
89
+//===========================================================================
90
+//
91
+//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table
92
+//
93
+//// Temperature sensor settings:
94
+// -2 is thermocouple with MAX6675 (only for sensor 0)
95
+// -1 is thermocouple with AD595
96
+// 0 is not used
97
+// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup)
98
+// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup)
99
+// 3 is Mendel-parts thermistor (4.7k pullup)
100
+// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !!
101
+// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup)
102
+// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup)
103
+// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup)
104
+// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup)
105
+// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup)
106
+// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup)
107
+// 10 is 100k RS thermistor 198-961 (4.7k pullup)
108
+// 11 is 100k beta 3950 1% thermistor (4.7k pullup)
109
+// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed)
110
+// 13 is 100k Hisens 3950  1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" 
111
+// 20 is the PT100 circuit found in the Ultimainboard V2.x
112
+// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950
113
+//
114
+//    1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k
115
+//                          (but gives greater accuracy and more stable PID)
116
+// 51 is 100k thermistor - EPCOS (1k pullup)
117
+// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup)
118
+// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup)
119
+//
120
+// 1047 is Pt1000 with 4k7 pullup
121
+// 1010 is Pt1000 with 1k pullup (non standard)
122
+// 147 is Pt100 with 4k7 pullup
123
+// 110 is Pt100 with 1k pullup (non standard)
124
+
125
+#define TEMP_SENSOR_0 1
126
+#define TEMP_SENSOR_1 0
127
+#define TEMP_SENSOR_2 0
128
+#define TEMP_SENSOR_BED 0
129
+
130
+// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted.
131
+//#define TEMP_SENSOR_1_AS_REDUNDANT
132
+#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10
133
+
134
+// Actual temperature must be close to target for this long before M109 returns success
135
+#define TEMP_RESIDENCY_TIME 10  // (seconds)
136
+#define TEMP_HYSTERESIS 3       // (degC) range of +/- temperatures considered "close" to the target one
137
+#define TEMP_WINDOW     1       // (degC) Window around target to start the residency timer x degC early.
138
+
139
+// The minimal temperature defines the temperature below which the heater will not be enabled It is used
140
+// to check that the wiring to the thermistor is not broken.
141
+// Otherwise this would lead to the heater being powered on all the time.
142
+#define HEATER_0_MINTEMP 5
143
+#define HEATER_1_MINTEMP 5
144
+#define HEATER_2_MINTEMP 5
145
+#define BED_MINTEMP 5
146
+
147
+// When temperature exceeds max temp, your heater will be switched off.
148
+// This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure!
149
+// You should use MINTEMP for thermistor short/failure protection.
150
+#define HEATER_0_MAXTEMP 260
151
+#define HEATER_1_MAXTEMP 260
152
+#define HEATER_2_MAXTEMP 260
153
+#define BED_MAXTEMP 150
154
+
155
+// If your bed has low resistance e.g. .6 ohm and throws the fuse you can duty cycle it to reduce the
156
+// average current. The value should be an integer and the heat bed will be turned on for 1 interval of
157
+// HEATER_BED_DUTY_CYCLE_DIVIDER intervals.
158
+//#define HEATER_BED_DUTY_CYCLE_DIVIDER 4
159
+
160
+// If you want the M105 heater power reported in watts, define the BED_WATTS, and (shared for all extruders) EXTRUDER_WATTS
161
+//#define EXTRUDER_WATTS (12.0*12.0/6.7) //  P=I^2/R
162
+//#define BED_WATTS (12.0*12.0/1.1)      // P=I^2/R
163
+
164
+
165
+//===========================================================================
166
+//============================= PID Settings ================================
167
+//===========================================================================
168
+// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning
169
+
170
+// Comment the following line to disable PID and enable bang-bang.
171
+#define PIDTEMP
172
+#define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current
173
+#define PID_MAX BANG_MAX // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current
174
+#ifdef PIDTEMP
175
+  //#define PID_DEBUG // Sends debug data to the serial port.
176
+  //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX
177
+  //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay
178
+  //#define PID_PARAMS_PER_EXTRUDER // Uses separate PID parameters for each extruder (useful for mismatched extruders)
179
+                                    // Set/get with gcode: M301 E[extruder number, 0-2]
180
+  #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature
181
+                                  // is more then PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max.
182
+  #define PID_INTEGRAL_DRIVE_MAX PID_MAX  //limit for the integral term
183
+  #define K1 0.95 //smoothing factor within the PID
184
+  #define PID_dT ((OVERSAMPLENR * 8.0)/(F_CPU / 64.0 / 256.0)) //sampling period of the temperature routine
185
+
186
+// If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it
187
+// Ultimaker
188
+//  #define  DEFAULT_Kp 22.2
189
+//  #define  DEFAULT_Ki 1.08
190
+//  #define  DEFAULT_Kd 114
191
+
192
+// MakerGear
193
+//    #define  DEFAULT_Kp 7.0
194
+//    #define  DEFAULT_Ki 0.1
195
+//    #define  DEFAULT_Kd 12
196
+
197
+// Mendel Parts V9 on 12V
198
+//    #define  DEFAULT_Kp 63.0
199
+//    #define  DEFAULT_Ki 2.25
200
+//    #define  DEFAULT_Kd 440
201
+
202
+// Witbox
203
+      #define  DEFAULT_Kp 22.2
204
+      #define  DEFAULT_Ki 1.08
205
+      #define  DEFAULT_Kd 114
206
+#endif // PIDTEMP
207
+
208
+//===========================================================================
209
+//============================= PID > Bed Temperature Control ===============
210
+//===========================================================================
211
+// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis
212
+//
213
+// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder.
214
+// If your PID_dT above is the default, and correct for your hardware/configuration, that means 7.689Hz,
215
+// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating.
216
+// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater.
217
+// If your configuration is significantly different than this and you don't understand the issues involved, you probably
218
+// shouldn't use bed PID until someone else verifies your hardware works.
219
+// If this is enabled, find your own PID constants below.
220
+//#define PIDTEMPBED
221
+//
222
+//#define BED_LIMIT_SWITCHING
223
+
224
+// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option.
225
+// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis)
226
+// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did,
227
+// so you shouldn't use it unless you are OK with PWM on your bed.  (see the comment on enabling PIDTEMPBED)
228
+#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current
229
+
230
+#ifdef PIDTEMPBED
231
+//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)
232
+//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10)
233
+    #define  DEFAULT_bedKp 10.00
234
+    #define  DEFAULT_bedKi .023
235
+    #define  DEFAULT_bedKd 305.4
236
+
237
+//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)
238
+//from pidautotune
239
+//    #define  DEFAULT_bedKp 97.1
240
+//    #define  DEFAULT_bedKi 1.41
241
+//    #define  DEFAULT_bedKd 1675.16
242
+
243
+// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles.
244
+#endif // PIDTEMPBED
245
+
246
+
247
+//this prevents dangerous Extruder moves, i.e. if the temperature is under the limit
248
+//can be software-disabled for whatever purposes by
249
+#define PREVENT_DANGEROUS_EXTRUDE
250
+//if PREVENT_DANGEROUS_EXTRUDE is on, you can still disable (uncomment) very long bits of extrusion separately.
251
+#define PREVENT_LENGTHY_EXTRUDE
252
+
253
+#define EXTRUDE_MINTEMP 170
254
+#define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances.
255
+
256
+
257
+//===========================================================================
258
+//============================= Thermal Runaway Protection ==================
259
+//===========================================================================
260
+/*
261
+This is a feature to protect your printer from burn up in flames if it has
262
+a thermistor coming off place (this happened to a friend of mine recently and
263
+motivated me writing this feature).
264
+
265
+The issue: If a thermistor come off, it will read a lower temperature than actual.
266
+The system will turn the heater on forever, burning up the filament and anything
267
+else around.
268
+
269
+After the temperature reaches the target for the first time, this feature will 
270
+start measuring for how long the current temperature stays below the target 
271
+minus _HYSTERESIS (set_temperature - THERMAL_RUNAWAY_PROTECTION_HYSTERESIS).
272
+
273
+If it stays longer than _PERIOD, it means the thermistor temperature
274
+cannot catch up with the target, so something *may be* wrong. Then, to be on the
275
+safe side, the system will he halt.
276
+
277
+Bear in mind the count down will just start AFTER the first time the 
278
+thermistor temperature is over the target, so you will have no problem if
279
+your extruder heater takes 2 minutes to hit the target on heating.
280
+
281
+*/
282
+// If you want to enable this feature for all your extruder heaters,
283
+// uncomment the 2 defines below:
284
+
285
+// Parameters for all extruder heaters
286
+//#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds
287
+//#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius
288
+
289
+// If you want to enable this feature for your bed heater,
290
+// uncomment the 2 defines below:
291
+
292
+// Parameters for the bed heater
293
+//#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds
294
+//#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius
295
+
296
+
297
+//===========================================================================
298
+//============================= Mechanical Settings =========================
299
+//===========================================================================
300
+
301
+// Uncomment the following line to enable CoreXY kinematics
302
+// #define COREXY
303
+
304
+// coarse Endstop Settings
305
+#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors
306
+
307
+#ifndef ENDSTOPPULLUPS
308
+  // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined
309
+  // #define ENDSTOPPULLUP_XMAX
310
+  // #define ENDSTOPPULLUP_YMAX
311
+  // #define ENDSTOPPULLUP_ZMAX
312
+  // #define ENDSTOPPULLUP_XMIN
313
+  // #define ENDSTOPPULLUP_YMIN
314
+  // #define ENDSTOPPULLUP_ZMIN
315
+#endif
316
+
317
+#ifdef ENDSTOPPULLUPS
318
+  #define ENDSTOPPULLUP_XMAX
319
+  #define ENDSTOPPULLUP_YMAX
320
+  #define ENDSTOPPULLUP_ZMAX
321
+  #define ENDSTOPPULLUP_XMIN
322
+  #define ENDSTOPPULLUP_YMIN
323
+  #define ENDSTOPPULLUP_ZMIN
324
+#endif
325
+
326
+// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins.
327
+const bool X_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
328
+const bool Y_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
329
+const bool Z_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
330
+const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
331
+const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
332
+const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
333
+//#define DISABLE_MAX_ENDSTOPS
334
+//#define DISABLE_MIN_ENDSTOPS
335
+
336
+// Disable max endstops for compatibility with endstop checking routine
337
+#if defined(COREXY) && !defined(DISABLE_MAX_ENDSTOPS)
338
+  #define DISABLE_MAX_ENDSTOPS
339
+#endif
340
+
341
+// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
342
+#define X_ENABLE_ON 0
343
+#define Y_ENABLE_ON 0
344
+#define Z_ENABLE_ON 0
345
+#define E_ENABLE_ON 0 // For all extruders
346
+
347
+// Disables axis when it's not being used.
348
+#define DISABLE_X false
349
+#define DISABLE_Y false
350
+#define DISABLE_Z true
351
+#define DISABLE_E false // For all extruders
352
+#define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled
353
+
354
+#define INVERT_X_DIR true    // for Mendel set to false, for Orca set to true
355
+#define INVERT_Y_DIR false    // for Mendel set to true, for Orca set to false
356
+#define INVERT_Z_DIR true     // for Mendel set to false, for Orca set to true
357
+#define INVERT_E0_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
358
+#define INVERT_E1_DIR false    // for direct drive extruder v9 set to true, for geared extruder set to false
359
+#define INVERT_E2_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
360
+
361
+// ENDSTOP SETTINGS:
362
+// Sets direction of endstops when homing; 1=MAX, -1=MIN
363
+#define X_HOME_DIR 1
364
+#define Y_HOME_DIR 1
365
+#define Z_HOME_DIR -1
366
+
367
+#define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS.
368
+#define max_software_endstops true  // If true, axis won't move to coordinates greater than the defined lengths below.
369
+
370
+// Travel limits after homing (units are in mm)
371
+#define X_MAX_POS 297
372
+#define X_MIN_POS 0
373
+#define Y_MAX_POS 210
374
+#define Y_MIN_POS 0
375
+#define Z_MAX_POS 200
376
+#define Z_MIN_POS 0
377
+
378
+#define X_MAX_LENGTH (X_MAX_POS - X_MIN_POS)
379
+#define Y_MAX_LENGTH (Y_MAX_POS - Y_MIN_POS)
380
+#define Z_MAX_LENGTH (Z_MAX_POS - Z_MIN_POS)
381
+
382
+
383
+//===========================================================================
384
+//============================= Bed Auto Leveling ===========================
385
+//===========================================================================
386
+
387
+//#define ENABLE_AUTO_BED_LEVELING // Delete the comment to enable (remove // at the start of the line)
388
+#define Z_PROBE_REPEATABILITY_TEST  // If not commented out, Z-Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
389
+
390
+#ifdef ENABLE_AUTO_BED_LEVELING
391
+
392
+// There are 2 different ways to pick the X and Y locations to probe:
393
+
394
+//  - "grid" mode
395
+//    Probe every point in a rectangular grid
396
+//    You must specify the rectangle, and the density of sample points
397
+//    This mode is preferred because there are more measurements.
398
+//    It used to be called ACCURATE_BED_LEVELING but "grid" is more descriptive
399
+
400
+//  - "3-point" mode
401
+//    Probe 3 arbitrary points on the bed (that aren't colinear)
402
+//    You must specify the X & Y coordinates of all 3 points
403
+
404
+  #define AUTO_BED_LEVELING_GRID
405
+  // with AUTO_BED_LEVELING_GRID, the bed is sampled in a
406
+  // AUTO_BED_LEVELING_GRID_POINTSxAUTO_BED_LEVELING_GRID_POINTS grid
407
+  // and least squares solution is calculated
408
+  // Note: this feature occupies 10'206 byte
409
+  #ifdef AUTO_BED_LEVELING_GRID
410
+
411
+    // set the rectangle in which to probe
412
+    #define LEFT_PROBE_BED_POSITION 15
413
+    #define RIGHT_PROBE_BED_POSITION 170
414
+    #define BACK_PROBE_BED_POSITION 180
415
+    #define FRONT_PROBE_BED_POSITION 20
416
+
417
+     // set the number of grid points per dimension
418
+     // I wouldn't see a reason to go above 3 (=9 probing points on the bed)
419
+    #define AUTO_BED_LEVELING_GRID_POINTS 2
420
+
421
+
422
+  #else  // not AUTO_BED_LEVELING_GRID
423
+    // with no grid, just probe 3 arbitrary points.  A simple cross-product
424
+    // is used to esimate the plane of the print bed
425
+
426
+      #define ABL_PROBE_PT_1_X 15
427
+      #define ABL_PROBE_PT_1_Y 180
428
+      #define ABL_PROBE_PT_2_X 15
429
+      #define ABL_PROBE_PT_2_Y 20
430
+      #define ABL_PROBE_PT_3_X 170
431
+      #define ABL_PROBE_PT_3_Y 20
432
+
433
+  #endif // AUTO_BED_LEVELING_GRID
434
+
435
+
436
+  // these are the offsets to the probe relative to the extruder tip (Hotend - Probe)
437
+  // X and Y offsets must be integers
438
+  #define X_PROBE_OFFSET_FROM_EXTRUDER -25
439
+  #define Y_PROBE_OFFSET_FROM_EXTRUDER -29
440
+  #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35
441
+
442
+  #define Z_RAISE_BEFORE_HOMING 4       // (in mm) Raise Z before homing (G28) for Probe Clearance.
443
+                                        // Be sure you have this distance over your Z_MAX_POS in case
444
+
445
+  #define XY_TRAVEL_SPEED 8000         // X and Y axis travel speed between probes, in mm/min
446
+
447
+  #define Z_RAISE_BEFORE_PROBING 15    //How much the extruder will be raised before traveling to the first probing point.
448
+  #define Z_RAISE_BETWEEN_PROBINGS 5  //How much the extruder will be raised when traveling from between next probing points
449
+
450
+  //#define Z_PROBE_SLED // turn on if you have a z-probe mounted on a sled like those designed by Charles Bell
451
+  //#define SLED_DOCKING_OFFSET 5 // the extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like.
452
+
453
+  //If defined, the Probe servo will be turned on only during movement and then turned off to avoid jerk
454
+  //The value is the delay to turn the servo off after powered on - depends on the servo speed; 300ms is good value, but you can try lower it.
455
+  // You MUST HAVE the SERVO_ENDSTOPS defined to use here a value higher than zero otherwise your code will not compile.
456
+
457
+//  #define PROBE_SERVO_DEACTIVATION_DELAY 300
458
+
459
+
460
+//If you have enabled the Bed Auto Leveling and are using the same Z Probe for Z Homing,
461
+//it is highly recommended you let this Z_SAFE_HOMING enabled!!!
462
+
463
+  #define Z_SAFE_HOMING   // This feature is meant to avoid Z homing with probe outside the bed area.
464
+                          // When defined, it will:
465
+                          // - Allow Z homing only after X and Y homing AND stepper drivers still enabled
466
+                          // - If stepper drivers timeout, it will need X and Y homing again before Z homing
467
+                          // - Position the probe in a defined XY point before Z Homing when homing all axis (G28)
468
+                          // - Block Z homing only when the probe is outside bed area.
469
+
470
+  #ifdef Z_SAFE_HOMING
471
+
472
+    #define Z_SAFE_HOMING_X_POINT (X_MAX_LENGTH/2)    // X point for Z homing when homing all axis (G28)
473
+    #define Z_SAFE_HOMING_Y_POINT (Y_MAX_LENGTH/2)    // Y point for Z homing when homing all axis (G28)
474
+
475
+  #endif
476
+
477
+  #ifdef AUTO_BED_LEVELING_GRID	// Check if Probe_Offset * Grid Points is greater than Probing Range
478
+    #if X_PROBE_OFFSET_FROM_EXTRUDER < 0
479
+      #if (-(X_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (RIGHT_PROBE_BED_POSITION - LEFT_PROBE_BED_POSITION))
480
+	     #error "The X axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS"
481
+	  #endif
482
+	#else
483
+      #if ((X_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (RIGHT_PROBE_BED_POSITION - LEFT_PROBE_BED_POSITION))
484
+	     #error "The X axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS"
485
+	  #endif
486
+	#endif
487
+    #if Y_PROBE_OFFSET_FROM_EXTRUDER < 0
488
+      #if (-(Y_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION))
489
+	     #error "The Y axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS"
490
+	  #endif
491
+	#else
492
+      #if ((Y_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION))
493
+	     #error "The Y axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS"
494
+	  #endif
495
+	#endif
496
+
497
+	
498
+  #endif
499
+  
500
+#endif // ENABLE_AUTO_BED_LEVELING
501
+
502
+
503
+// The position of the homing switches
504
+//#define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used
505
+//#define BED_CENTER_AT_0_0  // If defined, the center of the bed is at (X=0, Y=0)
506
+
507
+//Manual homing switch locations:
508
+// For deltabots this means top and center of the Cartesian print volume.
509
+#define MANUAL_X_HOME_POS 0
510
+#define MANUAL_Y_HOME_POS 0
511
+#define MANUAL_Z_HOME_POS 0
512
+//#define MANUAL_Z_HOME_POS 402 // For delta: Distance between nozzle and print surface after homing.
513
+
514
+//// MOVEMENT SETTINGS
515
+#define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E
516
+#define HOMING_FEEDRATE {120*60, 120*60, 7.2*60, 0}  // set the homing speeds (mm/min)
517
+
518
+// default settings
519
+
520
+#define DEFAULT_AXIS_STEPS_PER_UNIT   {80,80,600.0*8/3,102.073}  // default steps per unit for Ultimaker
521
+#define DEFAULT_MAX_FEEDRATE          {350, 350, 7.2, 80}    // (mm/sec)
522
+#define DEFAULT_MAX_ACCELERATION      {1000,1000,10,1000}    // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot.
523
+
524
+#define DEFAULT_ACCELERATION          3000    // X, Y, Z and E max acceleration in mm/s^2 for printing moves
525
+#define DEFAULT_RETRACT_ACCELERATION  3000   // X, Y, Z and E max acceleration in mm/s^2 for retracts
526
+
527
+// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
528
+// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
529
+// For the other hotends it is their distance from the extruder 0 hotend.
530
+// #define EXTRUDER_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
531
+// #define EXTRUDER_OFFSET_Y {0.0, 5.00}  // (in mm) for each extruder, offset of the hotend on the Y axis
532
+
533
+// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously)
534
+#define DEFAULT_XYJERK                10.0    // (mm/sec)
535
+#define DEFAULT_ZJERK                 0.4     // (mm/sec)
536
+#define DEFAULT_EJERK                 5.0    // (mm/sec)
537
+
538
+
539
+//===========================================================================
540
+//============================ Additional Features ==========================
541
+//===========================================================================
542
+
543
+// Custom M code points
544
+#define CUSTOM_M_CODES
545
+#ifdef CUSTOM_M_CODES
546
+  #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851
547
+  #define Z_PROBE_OFFSET_RANGE_MIN -15
548
+  #define Z_PROBE_OFFSET_RANGE_MAX -5
549
+#endif
550
+
551
+
552
+// EEPROM
553
+// The microcontroller can store settings in the EEPROM, e.g. max velocity...
554
+// M500 - stores parameters in EEPROM
555
+// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).
556
+// M502 - reverts to the default "factory settings".  You still need to store them in EEPROM afterwards if you want to.
557
+//define this to enable EEPROM support
558
+//#define EEPROM_SETTINGS
559
+//to disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out:
560
+// please keep turned on if you can.
561
+//#define EEPROM_CHITCHAT
562
+
563
+// Preheat Constants
564
+#define PLA_PREHEAT_HOTEND_TEMP 200
565
+#define PLA_PREHEAT_HPB_TEMP 0
566
+#define PLA_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
567
+
568
+#define ABS_PREHEAT_HOTEND_TEMP 220
569
+#define ABS_PREHEAT_HPB_TEMP 100
570
+#define ABS_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
571
+
572
+//LCD and SD support
573
+
574
+// Character based displays can have different extended charsets.
575
+#define DISPLAY_CHARSET_HD44780_JAPAN     // "ääööüüß23°"
576
+//#define DISPLAY_CHARSET_HD44780_WESTERN // "ÄäÖöÜüß²³°" if you see a '~' instead of a 'arrow_right' at the right of submenuitems - this is the right one.
577
+
578
+#define ULTRA_LCD  //general LCD support, also 16x2
579
+//#define DOGLCD  // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)
580
+#define SDSUPPORT // Enable SD Card Support in Hardware Console
581
+//#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error)
582
+//#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication
583
+//#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder
584
+//#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking
585
+//#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
586
+#define ULTIPANEL  //the UltiPanel as on Thingiverse
587
+//#define LCD_FEEDBACK_FREQUENCY_HZ 1000	// this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
588
+//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click
589
+
590
+// The MaKr3d Makr-Panel with graphic controller and SD support
591
+// http://reprap.org/wiki/MaKr3d_MaKrPanel
592
+//#define MAKRPANEL
593
+
594
+// The RepRapDiscount Smart Controller (white PCB)
595
+// http://reprap.org/wiki/RepRapDiscount_Smart_Controller
596
+#define REPRAP_DISCOUNT_SMART_CONTROLLER
597
+
598
+// The GADGETS3D G3D LCD/SD Controller (blue PCB)
599
+// http://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel
600
+//#define G3D_PANEL
601
+
602
+// The RepRapDiscount FULL GRAPHIC Smart Controller (quadratic white PCB)
603
+// http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller
604
+//
605
+// ==> REMEMBER TO INSTALL U8glib to your ARDUINO library folder: http://code.google.com/p/u8glib/wiki/u8glib
606
+//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
607
+
608
+// The RepRapWorld REPRAPWORLD_KEYPAD v1.1
609
+// http://reprapworld.com/?products_details&products_id=202&cPath=1591_1626
610
+//#define REPRAPWORLD_KEYPAD
611
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0 // how much should be moved when a key is pressed, eg 10.0 means 10mm per click
612
+
613
+// The Elefu RA Board Control Panel
614
+// http://www.elefu.com/index.php?route=product/product&product_id=53
615
+// REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C
616
+//#define RA_CONTROL_PANEL
617
+
618
+//automatic expansion
619
+#if defined (MAKRPANEL)
620
+ #define DOGLCD
621
+ #define SDSUPPORT
622
+ #define ULTIPANEL
623
+ #define NEWPANEL
624
+ #define DEFAULT_LCD_CONTRAST 17
625
+#endif
626
+
627
+#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
628
+ #define DOGLCD
629
+ #define U8GLIB_ST7920
630
+ #define REPRAP_DISCOUNT_SMART_CONTROLLER
631
+#endif
632
+
633
+#if defined(ULTIMAKERCONTROLLER) || defined(REPRAP_DISCOUNT_SMART_CONTROLLER) || defined(G3D_PANEL)
634
+ #define ULTIPANEL
635
+ #define NEWPANEL
636
+#endif
637
+
638
+#if defined(REPRAPWORLD_KEYPAD)
639
+  #define NEWPANEL
640
+  #define ULTIPANEL
641
+#endif
642
+#if defined(RA_CONTROL_PANEL)
643
+ #define ULTIPANEL
644
+ #define NEWPANEL
645
+ #define LCD_I2C_TYPE_PCA8574
646
+ #define LCD_I2C_ADDRESS 0x27   // I2C Address of the port expander
647
+#endif
648
+
649
+//I2C PANELS
650
+
651
+//#define LCD_I2C_SAINSMART_YWROBOT
652
+#ifdef LCD_I2C_SAINSMART_YWROBOT
653
+  // This uses the LiquidCrystal_I2C library ( https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home )
654
+  // Make sure it is placed in the Arduino libraries directory.
655
+  #define LCD_I2C_TYPE_PCF8575
656
+  #define LCD_I2C_ADDRESS 0x27   // I2C Address of the port expander
657
+  #define NEWPANEL
658
+  #define ULTIPANEL
659
+#endif
660
+
661
+// PANELOLU2 LCD with status LEDs, separate encoder and click inputs
662
+//#define LCD_I2C_PANELOLU2
663
+#ifdef LCD_I2C_PANELOLU2
664
+  // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 )
665
+  // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory.
666
+  // (v1.2.3 no longer requires you to define PANELOLU in the LiquidTWI2.h library header file)
667
+  // Note: The PANELOLU2 encoder click input can either be directly connected to a pin
668
+  //       (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1).
669
+  #define LCD_I2C_TYPE_MCP23017
670
+  #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
671
+  #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD
672
+  #define NEWPANEL
673
+  #define ULTIPANEL
674
+
675
+  #ifndef ENCODER_PULSES_PER_STEP
676
+	#define ENCODER_PULSES_PER_STEP 4
677
+  #endif
678
+
679
+  #ifndef ENCODER_STEPS_PER_MENU_ITEM
680
+	#define ENCODER_STEPS_PER_MENU_ITEM 1
681
+  #endif
682
+
683
+
684
+  #ifdef LCD_USE_I2C_BUZZER
685
+	#define LCD_FEEDBACK_FREQUENCY_HZ 1000
686
+	#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100
687
+  #endif
688
+
689
+#endif
690
+
691
+// Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs
692
+//#define LCD_I2C_VIKI
693
+#ifdef LCD_I2C_VIKI
694
+  // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 )
695
+  // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory.
696
+  // Note: The pause/stop/resume LCD button pin should be connected to the Arduino
697
+  //       BTN_ENC pin (or set BTN_ENC to -1 if not used)
698
+  #define LCD_I2C_TYPE_MCP23017
699
+  #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
700
+  #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD (requires LiquidTWI2 v1.2.3 or later)
701
+  #define NEWPANEL
702
+  #define ULTIPANEL
703
+#endif
704
+
705
+// Shift register panels
706
+// ---------------------
707
+// 2 wire Non-latching LCD SR from:
708
+// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection 
709
+
710
+//#define SAV_3DLCD
711
+#ifdef SAV_3DLCD
712
+   #define SR_LCD_2W_NL    // Non latching 2 wire shiftregister
713
+   #define NEWPANEL
714
+   #define ULTIPANEL
715
+#endif
716
+
717
+
718
+#ifdef ULTIPANEL
719
+//  #define NEWPANEL  //enable this if you have a click-encoder panel
720
+  #define SDSUPPORT
721
+  #define ULTRA_LCD
722
+  #ifdef DOGLCD // Change number of lines to match the DOG graphic display
723
+    #define LCD_WIDTH 20
724
+    #define LCD_HEIGHT 5
725
+  #else
726
+    #define LCD_WIDTH 20
727
+    #define LCD_HEIGHT 4
728
+  #endif
729
+#else //no panel but just LCD
730
+  #ifdef ULTRA_LCD
731
+  #ifdef DOGLCD // Change number of lines to match the 128x64 graphics display
732
+    #define LCD_WIDTH 20
733
+    #define LCD_HEIGHT 5
734
+  #else
735
+    #define LCD_WIDTH 16
736
+    #define LCD_HEIGHT 2
737
+  #endif
738
+  #endif
739
+#endif
740
+
741
+// default LCD contrast for dogm-like LCD displays
742
+#ifdef DOGLCD
743
+# ifndef DEFAULT_LCD_CONTRAST
744
+#  define DEFAULT_LCD_CONTRAST 32
745
+# endif
746
+#endif
747
+
748
+// Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino
749
+//#define FAST_PWM_FAN
750
+
751
+// Temperature status LEDs that display the hotend and bet temperature.
752
+// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on.
753
+// Otherwise the RED led is on. There is 1C hysteresis.
754
+//#define TEMP_STAT_LEDS
755
+
756
+// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency
757
+// which is not ass annoying as with the hardware PWM. On the other hand, if this frequency
758
+// is too low, you should also increment SOFT_PWM_SCALE.
759
+//#define FAN_SOFT_PWM
760
+
761
+// Incrementing this by 1 will double the software PWM frequency,
762
+// affecting heaters, and the fan if FAN_SOFT_PWM is enabled.
763
+// However, control resolution will be halved for each increment;
764
+// at zero value, there are 128 effective control positions.
765
+#define SOFT_PWM_SCALE 0
766
+
767
+// M240  Triggers a camera by emulating a Canon RC-1 Remote
768
+// Data from: http://www.doc-diy.net/photo/rc-1_hacked/
769
+// #define PHOTOGRAPH_PIN     23
770
+
771
+// SF send wrong arc g-codes when using Arc Point as fillet procedure
772
+//#define SF_ARC_FIX
773
+
774
+// Support for the BariCUDA Paste Extruder.
775
+//#define BARICUDA
776
+
777
+//define BlinkM/CyzRgb Support
778
+//#define BLINKM
779
+
780
+/*********************************************************************\
781
+* R/C SERVO support
782
+* Sponsored by TrinityLabs, Reworked by codexmas
783
+**********************************************************************/
784
+
785
+// Number of servos
786
+//
787
+// If you select a configuration below, this will receive a default value and does not need to be set manually
788
+// set it manually if you have more servos than extruders and wish to manually control some
789
+// leaving it undefined or defining as 0 will disable the servo subsystem
790
+// If unsure, leave commented / disabled
791
+//
792
+//#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
793
+
794
+// Servo Endstops
795
+//
796
+// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes.
797
+// Use M206 command to correct for switch height offset to actual nozzle height. Store that setting with M500.
798
+//
799
+//#define SERVO_ENDSTOPS {-1, -1, 0} // Servo index for X, Y, Z. Disable with -1
800
+//#define SERVO_ENDSTOP_ANGLES {0,0, 0,0, 70,0} // X,Y,Z Axis Extend and Retract angles
801
+
802
+/**********************************************************************\
803
+ * Support for a filament diameter sensor
804
+ * Also allows adjustment of diameter at print time (vs  at slicing)
805
+ * Single extruder only at this point (extruder 0)
806
+ * 
807
+ * Motherboards
808
+ * 34 - RAMPS1.4 - uses Analog input 5 on the AUX2 connector 
809
+ * 81 - Printrboard - Uses Analog input 2 on the Exp1 connector (version B,C,D,E)
810
+ * 301 - Rambo  - uses Analog input 3
811
+ * Note may require analog pins to be defined for different motherboards
812
+ **********************************************************************/
813
+// Uncomment below to enable
814
+//#define FILAMENT_SENSOR
815
+
816
+#define FILAMENT_SENSOR_EXTRUDER_NUM	0  //The number of the extruder that has the filament sensor (0,1,2)
817
+#define MEASUREMENT_DELAY_CM			14  //measurement delay in cm.  This is the distance from filament sensor to middle of barrel
818
+
819
+#define DEFAULT_NOMINAL_FILAMENT_DIA  3.0  //Enter the diameter (in mm) of the filament generally used (3.0 mm or 1.75 mm) - this is then used in the slicer software.  Used for sensor reading validation
820
+#define MEASURED_UPPER_LIMIT          3.30  //upper limit factor used for sensor reading validation in mm
821
+#define MEASURED_LOWER_LIMIT          1.90  //lower limit factor for sensor reading validation in mm
822
+#define MAX_MEASUREMENT_DELAY			20  //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM  and lower number saves RAM)
823
+
824
+//defines used in the code
825
+#define DEFAULT_MEASURED_FILAMENT_DIA  DEFAULT_NOMINAL_FILAMENT_DIA  //set measured to nominal initially 
826
+
827
+//When using an LCD, uncomment the line below to display the Filament sensor data on the last line instead of status.  Status will appear for 5 sec.
828
+//#define FILAMENT_LCD_DISPLAY
829
+
830
+
831
+
832
+
833
+
834
+
835
+#include "Configuration_adv.h"
836
+#include "thermistortables.h"
837
+
838
+#endif //__CONFIGURATION_H

+ 535
- 0
Marlin/example_configurations/WITBOX/Configuration_adv.h Ver fichero

@@ -0,0 +1,535 @@
1
+#ifndef CONFIGURATION_ADV_H
2
+#define CONFIGURATION_ADV_H
3
+
4
+//===========================================================================
5
+//=============================Thermal Settings  ============================
6
+//===========================================================================
7
+
8
+#ifdef BED_LIMIT_SWITCHING
9
+  #define BED_HYSTERESIS 2 //only disable heating if T>target+BED_HYSTERESIS and enable heating if T>target-BED_HYSTERESIS
10
+#endif
11
+#define BED_CHECK_INTERVAL 5000 //ms between checks in bang-bang control
12
+
13
+//// Heating sanity check:
14
+// This waits for the watch period in milliseconds whenever an M104 or M109 increases the target temperature
15
+// If the temperature has not increased at the end of that period, the target temperature is set to zero.
16
+// It can be reset with another M104/M109. This check is also only triggered if the target temperature and the current temperature
17
+//  differ by at least 2x WATCH_TEMP_INCREASE
18
+//#define WATCH_TEMP_PERIOD 40000 //40 seconds
19
+//#define WATCH_TEMP_INCREASE 10  //Heat up at least 10 degree in 20 seconds
20
+
21
+#ifdef PIDTEMP
22
+  // this adds an experimental additional term to the heating power, proportional to the extrusion speed.
23
+  // if Kc is chosen well, the additional required power due to increased melting should be compensated.
24
+  #define PID_ADD_EXTRUSION_RATE
25
+  #ifdef PID_ADD_EXTRUSION_RATE
26
+    #define  DEFAULT_Kc (1) //heating power=Kc*(e_speed)
27
+  #endif
28
+#endif
29
+
30
+
31
+//automatic temperature: The hot end target temperature is calculated by all the buffered lines of gcode.
32
+//The maximum buffered steps/sec of the extruder motor are called "se".
33
+//You enter the autotemp mode by a M109 S<mintemp> B<maxtemp> F<factor>
34
+// the target temperature is set to mintemp+factor*se[steps/sec] and limited by mintemp and maxtemp
35
+// you exit the value by any M109 without F*
36
+// Also, if the temperature is set to a value <mintemp, it is not changed by autotemp.
37
+// on an Ultimaker, some initial testing worked with M109 S215 B260 F1 in the start.gcode
38
+#define AUTOTEMP
39
+#ifdef AUTOTEMP
40
+  #define AUTOTEMP_OLDWEIGHT 0.98
41
+#endif
42
+
43
+//Show Temperature ADC value
44
+//The M105 command return, besides traditional information, the ADC value read from temperature sensors.
45
+//#define SHOW_TEMP_ADC_VALUES
46
+
47
+//  extruder run-out prevention.
48
+//if the machine is idle, and the temperature over MINTEMP, every couple of SECONDS some filament is extruded
49
+//#define EXTRUDER_RUNOUT_PREVENT
50
+#define EXTRUDER_RUNOUT_MINTEMP 190
51
+#define EXTRUDER_RUNOUT_SECONDS 30.
52
+#define EXTRUDER_RUNOUT_ESTEPS 14. //mm filament
53
+#define EXTRUDER_RUNOUT_SPEED 1500.  //extrusion speed
54
+#define EXTRUDER_RUNOUT_EXTRUDE 100
55
+
56
+//These defines help to calibrate the AD595 sensor in case you get wrong temperature measurements.
57
+//The measured temperature is defined as "actualTemp = (measuredTemp * TEMP_SENSOR_AD595_GAIN) + TEMP_SENSOR_AD595_OFFSET"
58
+#define TEMP_SENSOR_AD595_OFFSET 0.0
59
+#define TEMP_SENSOR_AD595_GAIN   1.0
60
+
61
+//This is for controlling a fan to cool down the stepper drivers
62
+//it will turn on when any driver is enabled
63
+//and turn off after the set amount of seconds from last driver being disabled again
64
+#define CONTROLLERFAN_PIN -1 //Pin used for the fan to cool controller (-1 to disable)
65
+#define CONTROLLERFAN_SECS 60 //How many seconds, after all motors were disabled, the fan should run
66
+#define CONTROLLERFAN_SPEED 255  // == full speed
67
+
68
+// When first starting the main fan, run it at full speed for the
69
+// given number of milliseconds.  This gets the fan spinning reliably
70
+// before setting a PWM value. (Does not work with software PWM for fan on Sanguinololu)
71
+//#define FAN_KICKSTART_TIME 100
72
+
73
+// Extruder cooling fans
74
+// Configure fan pin outputs to automatically turn on/off when the associated
75
+// extruder temperature is above/below EXTRUDER_AUTO_FAN_TEMPERATURE.
76
+// Multiple extruders can be assigned to the same pin in which case
77
+// the fan will turn on when any selected extruder is above the threshold.
78
+#define EXTRUDER_0_AUTO_FAN_PIN -1
79
+#define EXTRUDER_1_AUTO_FAN_PIN -1
80
+#define EXTRUDER_2_AUTO_FAN_PIN -1
81
+#define EXTRUDER_3_AUTO_FAN_PIN -1
82
+#define EXTRUDER_AUTO_FAN_TEMPERATURE 50
83
+#define EXTRUDER_AUTO_FAN_SPEED   255  // == full speed
84
+
85
+
86
+//===========================================================================
87
+//=============================Mechanical Settings===========================
88
+//===========================================================================
89
+
90
+//#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing
91
+
92
+
93
+//// AUTOSET LOCATIONS OF LIMIT SWITCHES
94
+//// Added by ZetaPhoenix 09-15-2012
95
+#ifdef MANUAL_HOME_POSITIONS  // Use manual limit switch locations
96
+  #define X_HOME_POS MANUAL_X_HOME_POS
97
+  #define Y_HOME_POS MANUAL_Y_HOME_POS
98
+  #define Z_HOME_POS MANUAL_Z_HOME_POS
99
+#else //Set min/max homing switch positions based upon homing direction and min/max travel limits
100
+  //X axis
101
+  #if X_HOME_DIR == -1
102
+    #ifdef BED_CENTER_AT_0_0
103
+      #define X_HOME_POS X_MAX_LENGTH * -0.5
104
+    #else
105
+      #define X_HOME_POS X_MIN_POS
106
+    #endif //BED_CENTER_AT_0_0
107
+  #else
108
+    #ifdef BED_CENTER_AT_0_0
109
+      #define X_HOME_POS X_MAX_LENGTH * 0.5
110
+    #else
111
+      #define X_HOME_POS X_MAX_POS
112
+    #endif //BED_CENTER_AT_0_0
113
+  #endif //X_HOME_DIR == -1
114
+
115
+  //Y axis
116
+  #if Y_HOME_DIR == -1
117
+    #ifdef BED_CENTER_AT_0_0
118
+      #define Y_HOME_POS Y_MAX_LENGTH * -0.5
119
+    #else
120
+      #define Y_HOME_POS Y_MIN_POS
121
+    #endif //BED_CENTER_AT_0_0
122
+  #else
123
+    #ifdef BED_CENTER_AT_0_0
124
+      #define Y_HOME_POS Y_MAX_LENGTH * 0.5
125
+    #else
126
+      #define Y_HOME_POS Y_MAX_POS
127
+    #endif //BED_CENTER_AT_0_0
128
+  #endif //Y_HOME_DIR == -1
129
+
130
+  // Z axis
131
+  #if Z_HOME_DIR == -1 //BED_CENTER_AT_0_0 not used
132
+    #define Z_HOME_POS Z_MIN_POS
133
+  #else
134
+    #define Z_HOME_POS Z_MAX_POS
135
+  #endif //Z_HOME_DIR == -1
136
+#endif //End auto min/max positions
137
+//END AUTOSET LOCATIONS OF LIMIT SWITCHES -ZP
138
+
139
+
140
+//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
141
+
142
+// A single Z stepper driver is usually used to drive 2 stepper motors.
143
+// Uncomment this define to utilize a separate stepper driver for each Z axis motor.
144
+// Only a few motherboards support this, like RAMPS, which have dual extruder support (the 2nd, often unused, extruder driver is used
145
+// to control the 2nd Z axis stepper motor). The pins are currently only defined for a RAMPS motherboards.
146
+// On a RAMPS (or other 5 driver) motherboard, using this feature will limit you to using 1 extruder.
147
+//#define Z_DUAL_STEPPER_DRIVERS
148
+
149
+#ifdef Z_DUAL_STEPPER_DRIVERS
150
+  #undef EXTRUDERS
151
+  #define EXTRUDERS 1
152
+#endif
153
+
154
+// Same again but for Y Axis.
155
+//#define Y_DUAL_STEPPER_DRIVERS
156
+
157
+// Define if the two Y drives need to rotate in opposite directions
158
+#define INVERT_Y2_VS_Y_DIR true
159
+
160
+#ifdef Y_DUAL_STEPPER_DRIVERS
161
+  #undef EXTRUDERS
162
+  #define EXTRUDERS 1
163
+#endif
164
+
165
+#if defined (Z_DUAL_STEPPER_DRIVERS) && defined (Y_DUAL_STEPPER_DRIVERS)
166
+  #error "You cannot have dual drivers for both Y and Z"
167
+#endif
168
+
169
+// Enable this for dual x-carriage printers.
170
+// A dual x-carriage design has the advantage that the inactive extruder can be parked which
171
+// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
172
+// allowing faster printing speeds.
173
+//#define DUAL_X_CARRIAGE
174
+#ifdef DUAL_X_CARRIAGE
175
+// Configuration for second X-carriage
176
+// Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop;
177
+// the second x-carriage always homes to the maximum endstop.
178
+#define X2_MIN_POS 80     // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage
179
+#define X2_MAX_POS 353    // set maximum to the distance between toolheads when both heads are homed
180
+#define X2_HOME_DIR 1     // the second X-carriage always homes to the maximum endstop position
181
+#define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position
182
+    // However: In this mode the EXTRUDER_OFFSET_X value for the second extruder provides a software
183
+    // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops
184
+    // without modifying the firmware (through the "M218 T1 X???" command).
185
+    // Remember: you should set the second extruder x-offset to 0 in your slicer.
186
+
187
+// Pins for second x-carriage stepper driver (defined here to avoid further complicating pins.h)
188
+#define X2_ENABLE_PIN 29
189
+#define X2_STEP_PIN 25
190
+#define X2_DIR_PIN 23
191
+
192
+// There are a few selectable movement modes for dual x-carriages using M605 S<mode>
193
+//    Mode 0: Full control. The slicer has full control over both x-carriages and can achieve optimal travel results
194
+//                           as long as it supports dual x-carriages. (M605 S0)
195
+//    Mode 1: Auto-park mode. The firmware will automatically park and unpark the x-carriages on tool changes so
196
+//                           that additional slicer support is not required. (M605 S1)
197
+//    Mode 2: Duplication mode. The firmware will transparently make the second x-carriage and extruder copy all
198
+//                           actions of the first x-carriage. This allows the printer to print 2 arbitrary items at
199
+//                           once. (2nd extruder x offset and temp offset are set using: M605 S2 [Xnnn] [Rmmm])
200
+
201
+// This is the default power-up mode which can be later using M605.
202
+#define DEFAULT_DUAL_X_CARRIAGE_MODE 0
203
+
204
+// Default settings in "Auto-park Mode"
205
+#define TOOLCHANGE_PARK_ZLIFT   0.2      // the distance to raise Z axis when parking an extruder
206
+#define TOOLCHANGE_UNPARK_ZLIFT 1        // the distance to raise Z axis when unparking an extruder
207
+
208
+// Default x offset in duplication mode (typically set to half print bed width)
209
+#define DEFAULT_DUPLICATION_X_OFFSET 100
210
+
211
+#endif //DUAL_X_CARRIAGE
212
+
213
+//homing hits the endstop, then retracts by this distance, before it tries to slowly bump again:
214
+#define X_HOME_RETRACT_MM 5
215
+#define Y_HOME_RETRACT_MM 5
216
+#define Z_HOME_RETRACT_MM 2
217
+//#define QUICK_HOME  //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially.
218
+
219
+#define AXIS_RELATIVE_MODES {false, false, false, false}
220
+#ifdef CONFIG_STEPPERS_TOSHIBA
221
+#define MAX_STEP_FREQUENCY 10000 // Max step frequency for Toshiba Stepper Controllers
222
+#else
223
+#define MAX_STEP_FREQUENCY 40000 // Max step frequency for Ultimaker (5000 pps / half step)
224
+#endif
225
+//By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
226
+#define INVERT_X_STEP_PIN false
227
+#define INVERT_Y_STEP_PIN false
228
+#define INVERT_Z_STEP_PIN false
229
+#define INVERT_E_STEP_PIN false
230
+
231
+//default stepper release if idle. Set to 0 to deactivate.
232
+#define DEFAULT_STEPPER_DEACTIVE_TIME 60
233
+
234
+#define DEFAULT_MINIMUMFEEDRATE       0.0     // minimum feedrate
235
+#define DEFAULT_MINTRAVELFEEDRATE     0.0
236
+
237
+// Feedrates for manual moves along X, Y, Z, E from panel
238
+#ifdef ULTIPANEL
239
+#define MANUAL_FEEDRATE {120*60, 120*60, 18*60, 60}  // set the speeds for manual moves (mm/min)
240
+#endif
241
+
242
+//Comment to disable setting feedrate multiplier via encoder
243
+#ifdef ULTIPANEL
244
+    #define ULTIPANEL_FEEDMULTIPLY
245
+#endif
246
+
247
+// minimum time in microseconds that a movement needs to take if the buffer is emptied.
248
+#define DEFAULT_MINSEGMENTTIME        20000
249
+
250
+// If defined the movements slow down when the look ahead buffer is only half full
251
+#define SLOWDOWN
252
+
253
+// Frequency limit
254
+// See nophead's blog for more info
255
+// Not working O
256
+//#define XY_FREQUENCY_LIMIT  15
257
+
258
+// Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end
259
+// of the buffer and all stops. This should not be much greater than zero and should only be changed
260
+// if unwanted behavior is observed on a user's machine when running at very slow speeds.
261
+#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec)
262
+
263
+// MS1 MS2 Stepper Driver Microstepping mode table
264
+#define MICROSTEP1 LOW,LOW
265
+#define MICROSTEP2 HIGH,LOW
266
+#define MICROSTEP4 LOW,HIGH
267
+#define MICROSTEP8 HIGH,HIGH
268
+#define MICROSTEP16 HIGH,HIGH
269
+
270
+// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU.
271
+#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16]
272
+
273
+// Motor Current setting (Only functional when motor driver current ref pins are connected to a digital trimpot on supported boards)
274
+#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
275
+
276
+// uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro
277
+//#define DIGIPOT_I2C
278
+// Number of channels available for I2C digipot, For Azteeg X3 Pro we have 8
279
+#define DIGIPOT_I2C_NUM_CHANNELS 8
280
+// actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS
281
+#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0}
282
+
283
+//===========================================================================
284
+//=============================Additional Features===========================
285
+//===========================================================================
286
+
287
+//#define CHDK 4        //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/
288
+#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
289
+
290
+#define SD_FINISHED_STEPPERRELEASE true  //if sd support and the file is finished: disable steppers?
291
+#define SD_FINISHED_RELEASECOMMAND "M84 X Y Z E" // You might want to keep the z enabled so your bed stays in place.
292
+
293
+#define SDCARD_RATHERRECENTFIRST  //reverse file order of sd card menu display. Its sorted practically after the file system block order.
294
+// if a file is deleted, it frees a block. hence, the order is not purely chronological. To still have auto0.g accessible, there is again the option to do that.
295
+// using:
296
+#define MENU_ADDAUTOSTART
297
+
298
+// Show a progress bar on HD44780 LCDs for SD printing
299
+//#define LCD_PROGRESS_BAR
300
+
301
+#ifdef LCD_PROGRESS_BAR
302
+  // Amount of time (ms) to show the bar
303
+  #define PROGRESS_BAR_BAR_TIME 2000
304
+  // Amount of time (ms) to show the status message
305
+  #define PROGRESS_BAR_MSG_TIME 3000
306
+  // Amount of time (ms) to retain the status message (0=forever)
307
+  #define PROGRESS_MSG_EXPIRE   0
308
+  // Enable this to show messages for MSG_TIME then hide them
309
+  //#define PROGRESS_MSG_ONCE
310
+  #ifdef DOGLCD
311
+    #warning LCD_PROGRESS_BAR does not apply to graphical displays at this time.
312
+  #endif
313
+  #ifdef FILAMENT_LCD_DISPLAY
314
+    #error LCD_PROGRESS_BAR and FILAMENT_LCD_DISPLAY are not fully compatible. Comment out this line to use both.
315
+  #endif
316
+#endif
317
+
318
+// The hardware watchdog should reset the microcontroller disabling all outputs, in case the firmware gets stuck and doesn't do temperature regulation.
319
+//#define USE_WATCHDOG
320
+
321
+#ifdef USE_WATCHDOG
322
+// If you have a watchdog reboot in an ArduinoMega2560 then the device will hang forever, as a watchdog reset will leave the watchdog on.
323
+// The "WATCHDOG_RESET_MANUAL" goes around this by not using the hardware reset.
324
+//  However, THIS FEATURE IS UNSAFE!, as it will only work if interrupts are disabled. And the code could hang in an interrupt routine with interrupts disabled.
325
+//#define WATCHDOG_RESET_MANUAL
326
+#endif
327
+
328
+// Enable the option to stop SD printing when hitting and endstops, needs to be enabled from the LCD menu when this option is enabled.
329
+//#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED
330
+
331
+// Babystepping enables the user to control the axis in tiny amounts, independently from the normal printing process
332
+// it can e.g. be used to change z-positions in the print startup phase in real-time
333
+// does not respect endstops!
334
+//#define BABYSTEPPING
335
+#ifdef BABYSTEPPING
336
+  #define BABYSTEP_XY  //not only z, but also XY in the menu. more clutter, more functions
337
+  #define BABYSTEP_INVERT_Z false  //true for inverse movements in Z
338
+  #define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements
339
+
340
+  #ifdef COREXY
341
+    #error BABYSTEPPING not implemented for COREXY yet.
342
+  #endif
343
+
344
+  #ifdef DELTA
345
+    #ifdef BABYSTEP_XY
346
+      #error BABYSTEPPING only implemented for Z axis on deltabots.
347
+    #endif
348
+  #endif
349
+#endif
350
+
351
+// extruder advance constant (s2/mm3)
352
+//
353
+// advance (steps) = STEPS_PER_CUBIC_MM_E * EXTRUDER_ADVANCE_K * cubic mm per second ^ 2
354
+//
355
+// Hooke's law says:		force = k * distance
356
+// Bernoulli's principle says:	v ^ 2 / 2 + g . h + pressure / density = constant
357
+// so: v ^ 2 is proportional to number of steps we advance the extruder
358
+//#define ADVANCE
359
+
360
+#ifdef ADVANCE
361
+  #define EXTRUDER_ADVANCE_K .0
362
+
363
+  #define D_FILAMENT 1.75
364
+  #define STEPS_MM_E 100.47095761381482
365
+  #define EXTRUSION_AREA (0.25 * D_FILAMENT * D_FILAMENT * 3.14159)
366
+  #define STEPS_PER_CUBIC_MM_E (axis_steps_per_unit[E_AXIS]/ EXTRUSION_AREA)
367
+
368
+#endif // ADVANCE
369
+
370
+// Arc interpretation settings:
371
+#define MM_PER_ARC_SEGMENT 1
372
+#define N_ARC_CORRECTION 25
373
+
374
+const unsigned int dropsegments=5; //everything with less than this number of steps will be ignored as move and joined with the next movement
375
+
376
+// If you are using a RAMPS board or cheap E-bay purchased boards that do not detect when an SD card is inserted
377
+// You can get round this by connecting a push button or single throw switch to the pin defined as SDCARDCARDDETECT
378
+// in the pins.h file.  When using a push button pulling the pin to ground this will need inverted.  This setting should
379
+// be commented out otherwise
380
+#define SDCARDDETECTINVERTED
381
+
382
+#ifdef ULTIPANEL
383
+ #undef SDCARDDETECTINVERTED
384
+#endif
385
+
386
+// Power Signal Control Definitions
387
+// By default use ATX definition
388
+#ifndef POWER_SUPPLY
389
+  #define POWER_SUPPLY 1
390
+#endif
391
+// 1 = ATX
392
+#if (POWER_SUPPLY == 1)
393
+  #define PS_ON_AWAKE  LOW
394
+  #define PS_ON_ASLEEP HIGH
395
+#endif
396
+// 2 = X-Box 360 203W
397
+#if (POWER_SUPPLY == 2)
398
+  #define PS_ON_AWAKE  HIGH
399
+  #define PS_ON_ASLEEP LOW
400
+#endif
401
+
402
+// Control heater 0 and heater 1 in parallel.
403
+//#define HEATERS_PARALLEL
404
+
405
+//===========================================================================
406
+//=============================Buffers           ============================
407
+//===========================================================================
408
+
409
+// The number of linear motions that can be in the plan at any give time.
410
+// THE BLOCK_BUFFER_SIZE NEEDS TO BE A POWER OF 2, i.g. 8,16,32 because shifts and ors are used to do the ring-buffering.
411
+#if defined SDSUPPORT
412
+  #define BLOCK_BUFFER_SIZE 16   // SD,LCD,Buttons take more memory, block buffer needs to be smaller
413
+#else
414
+  #define BLOCK_BUFFER_SIZE 16 // maximize block buffer
415
+#endif
416
+
417
+
418
+//The ASCII buffer for receiving from the serial:
419
+#define MAX_CMD_SIZE 96
420
+#define BUFSIZE 5
421
+
422
+
423
+// Firmware based and LCD controlled retract
424
+// M207 and M208 can be used to define parameters for the retraction.
425
+// The retraction can be called by the slicer using G10 and G11
426
+// until then, intended retractions can be detected by moves that only extrude and the direction.
427
+// the moves are than replaced by the firmware controlled ones.
428
+
429
+// #define FWRETRACT  //ONLY PARTIALLY TESTED
430
+#ifdef FWRETRACT
431
+  #define MIN_RETRACT 0.1                //minimum extruded mm to accept a automatic gcode retraction attempt
432
+  #define RETRACT_LENGTH 3               //default retract length (positive mm)
433
+  #define RETRACT_LENGTH_SWAP 13         //default swap retract length (positive mm), for extruder change
434
+  #define RETRACT_FEEDRATE 80*60            //default feedrate for retracting (mm/s)
435
+  #define RETRACT_ZLIFT 0                //default retract Z-lift
436
+  #define RETRACT_RECOVER_LENGTH 0       //default additional recover length (mm, added to retract length when recovering)
437
+  //#define RETRACT_RECOVER_LENGTH_SWAP 0  //default additional swap recover length (mm, added to retract length when recovering from extruder change)
438
+  #define RETRACT_RECOVER_FEEDRATE 8*60     //default feedrate for recovering from retraction (mm/s)
439
+#endif
440
+
441
+//adds support for experimental filament exchange support M600; requires display
442
+#ifdef ULTIPANEL
443
+  #define FILAMENTCHANGEENABLE
444
+  #ifdef FILAMENTCHANGEENABLE
445
+    #define FILAMENTCHANGE_XPOS 3
446
+    #define FILAMENTCHANGE_YPOS 3
447
+    #define FILAMENTCHANGE_ZADD 10
448
+    #define FILAMENTCHANGE_FIRSTRETRACT -2
449
+    #define FILAMENTCHANGE_FINALRETRACT -100
450
+  #endif
451
+#endif
452
+
453
+#ifdef FILAMENTCHANGEENABLE
454
+  #ifdef EXTRUDER_RUNOUT_PREVENT
455
+    #error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE
456
+  #endif
457
+#endif
458
+
459
+//===========================================================================
460
+//=============================  Define Defines  ============================
461
+//===========================================================================
462
+
463
+#if defined (ENABLE_AUTO_BED_LEVELING) && defined (DELTA)
464
+  #error "Bed Auto Leveling is still not compatible with Delta Kinematics."
465
+#endif
466
+
467
+#if EXTRUDERS > 1 && defined TEMP_SENSOR_1_AS_REDUNDANT
468
+  #error "You cannot use TEMP_SENSOR_1_AS_REDUNDANT if EXTRUDERS > 1"
469
+#endif
470
+
471
+#if EXTRUDERS > 1 && defined HEATERS_PARALLEL
472
+  #error "You cannot use HEATERS_PARALLEL if EXTRUDERS > 1"
473
+#endif
474
+
475
+#if TEMP_SENSOR_0 > 0
476
+  #define THERMISTORHEATER_0 TEMP_SENSOR_0
477
+  #define HEATER_0_USES_THERMISTOR
478
+#endif
479
+#if TEMP_SENSOR_1 > 0
480
+  #define THERMISTORHEATER_1 TEMP_SENSOR_1
481
+  #define HEATER_1_USES_THERMISTOR
482
+#endif
483
+#if TEMP_SENSOR_2 > 0
484
+  #define THERMISTORHEATER_2 TEMP_SENSOR_2
485
+  #define HEATER_2_USES_THERMISTOR
486
+#endif
487
+#if TEMP_SENSOR_3 > 0
488
+  #define THERMISTORHEATER_3 TEMP_SENSOR_3
489
+  #define HEATER_3_USES_THERMISTOR
490
+#endif
491
+#if TEMP_SENSOR_BED > 0
492
+  #define THERMISTORBED TEMP_SENSOR_BED
493
+  #define BED_USES_THERMISTOR
494
+#endif
495
+#if TEMP_SENSOR_0 == -1
496
+  #define HEATER_0_USES_AD595
497
+#endif
498
+#if TEMP_SENSOR_1 == -1
499
+  #define HEATER_1_USES_AD595
500
+#endif
501
+#if TEMP_SENSOR_2 == -1
502
+  #define HEATER_2_USES_AD595
503
+#endif
504
+#if TEMP_SENSOR_3 == -1
505
+  #define HEATER_3_USES_AD595
506
+#endif
507
+#if TEMP_SENSOR_BED == -1
508
+  #define BED_USES_AD595
509
+#endif
510
+#if TEMP_SENSOR_0 == -2
511
+  #define HEATER_0_USES_MAX6675
512
+#endif
513
+#if TEMP_SENSOR_0 == 0
514
+  #undef HEATER_0_MINTEMP
515
+  #undef HEATER_0_MAXTEMP
516
+#endif
517
+#if TEMP_SENSOR_1 == 0
518
+  #undef HEATER_1_MINTEMP
519
+  #undef HEATER_1_MAXTEMP
520
+#endif
521
+#if TEMP_SENSOR_2 == 0
522
+  #undef HEATER_2_MINTEMP
523
+  #undef HEATER_2_MAXTEMP
524
+#endif
525
+#if TEMP_SENSOR_3 == 0
526
+  #undef HEATER_3_MINTEMP
527
+  #undef HEATER_3_MAXTEMP
528
+#endif
529
+#if TEMP_SENSOR_BED == 0
530
+  #undef BED_MINTEMP
531
+  #undef BED_MAXTEMP
532
+#endif
533
+
534
+
535
+#endif //__CONFIGURATION_ADV_H

+ 51
- 10
Marlin/example_configurations/delta/Configuration.h Ver fichero

@@ -3,10 +3,26 @@
3 3
 
4 4
 #include "boards.h"
5 5
 
6
+
7
+//===========================================================================
8
+//============================= Getting Started =============================
9
+//===========================================================================
10
+/*
11
+Here are some standard links for getting your machine calibrated:
12
+ * http://reprap.org/wiki/Calibration 
13
+ * http://youtu.be/wAL9d7FgInk
14
+ * http://calculator.josefprusa.cz
15
+ * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide
16
+ * http://www.thingiverse.com/thing:5573
17
+ * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap
18
+ * http://www.thingiverse.com/thing:298812
19
+*/
20
+
6 21
 // This configuration file contains the basic settings.
7 22
 // Advanced settings can be found in Configuration_adv.h
8 23
 // BASIC SETTINGS: select your board type, temperature sensor type, axis scaling, and endstop configuration
9 24
 
25
+
10 26
 //===========================================================================
11 27
 //============================= DELTA Printer ===============================
12 28
 //===========================================================================
@@ -17,8 +33,12 @@
17 33
 // User-specified version info of this build to display in [Pronterface, etc] terminal window during
18 34
 // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
19 35
 // build by the user have been successfully uploaded into firmware.
36
+#define STRING_VERSION "1.0.2"
37
+#define STRING_URL "reprap.org"
20 38
 #define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time
21 39
 #define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes.
40
+#define STRING_SPLASH_LINE1 "v" STRING_VERSION // will be shown during bootup in line 1
41
+//#define STRING_SPLASH_LINE2 STRING_VERSION_CONFIG_H // will be shown during bootup in line2
22 42
 
23 43
 // SERIAL_PORT selects which serial port should be used for communication with the host.
24 44
 // This allows the connection of wireless adapters (for instance) to non-default port pins.
@@ -56,6 +76,7 @@
56 76
 // Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it.
57 77
 // #define PS_DEFAULT_OFF
58 78
 
79
+
59 80
 //===========================================================================
60 81
 //============================== Delta Settings =============================
61 82
 //===========================================================================
@@ -84,8 +105,9 @@
84 105
 // Effective horizontal distance bridged by diagonal push rods.
85 106
 #define DELTA_RADIUS (DELTA_SMOOTH_ROD_OFFSET-DELTA_EFFECTOR_OFFSET-DELTA_CARRIAGE_OFFSET)
86 107
 
108
+
87 109
 //===========================================================================
88
-//=============================Thermal Settings  ============================
110
+//============================= Thermal Settings ============================
89 111
 //===========================================================================
90 112
 //
91 113
 //--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table
@@ -161,7 +183,12 @@
161 183
 //#define EXTRUDER_WATTS (12.0*12.0/6.7) //  P=I^2/R
162 184
 //#define BED_WATTS (12.0*12.0/1.1)      // P=I^2/R
163 185
 
164
-// PID settings:
186
+
187
+//===========================================================================
188
+//============================= PID Settings ================================
189
+//===========================================================================
190
+// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning
191
+
165 192
 // Comment the following line to disable PID and enable bang-bang.
166 193
 #define PIDTEMP
167 194
 #define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current
@@ -192,7 +219,10 @@
192 219
 //    #define  DEFAULT_Kd 440
193 220
 #endif // PIDTEMP
194 221
 
195
-// Bed Temperature Control
222
+
223
+//===========================================================================
224
+//============================= PID > Bed Temperature Control ===============
225
+//===========================================================================
196 226
 // Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis
197 227
 //
198 228
 // Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder.
@@ -229,7 +259,6 @@
229 259
 #endif // PIDTEMPBED
230 260
 
231 261
 
232
-
233 262
 //this prevents dangerous Extruder moves, i.e. if the temperature is under the limit
234 263
 //can be software-disabled for whatever purposes by
235 264
 #define PREVENT_DANGEROUS_EXTRUDE
@@ -239,7 +268,11 @@
239 268
 #define EXTRUDE_MINTEMP 170
240 269
 #define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances.
241 270
 
242
-/*================== Thermal Runaway Protection ==============================
271
+
272
+//===========================================================================
273
+//============================= Thermal Runaway Protection ==================
274
+//===========================================================================
275
+/*
243 276
 This is a feature to protect your printer from burn up in flames if it has
244 277
 a thermistor coming off place (this happened to a friend of mine recently and
245 278
 motivated me writing this feature).
@@ -274,11 +307,10 @@ your extruder heater takes 2 minutes to hit the target on heating.
274 307
 // Parameters for the bed heater
275 308
 //#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds
276 309
 //#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius
277
-//===========================================================================
278 310
 
279 311
 
280 312
 //===========================================================================
281
-//=============================Mechanical Settings===========================
313
+//============================= Mechanical Settings =========================
282 314
 //===========================================================================
283 315
 
284 316
 // coarse Endstop Settings
@@ -349,7 +381,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
349 381
 #define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS.
350 382
 #define max_software_endstops true  // If true, axis won't move to coordinates greater than the defined lengths below.
351 383
 
352
-// Travel limits after homing
384
+// Travel limits after homing (units are in mm)
353 385
 #define X_MAX_POS 90
354 386
 #define X_MIN_POS -90
355 387
 #define Y_MAX_POS 90
@@ -360,7 +392,11 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
360 392
 #define X_MAX_LENGTH (X_MAX_POS - X_MIN_POS)
361 393
 #define Y_MAX_LENGTH (Y_MAX_POS - Y_MIN_POS)
362 394
 #define Z_MAX_LENGTH (Z_MAX_POS - Z_MIN_POS)
395
+
396
+//===========================================================================
363 397
 //============================= Bed Auto Leveling ===========================
398
+//===========================================================================
399
+
364 400
 //Bed Auto Leveling is still not compatible with Delta Kinematics
365 401
 
366 402
 
@@ -405,7 +441,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
405 441
 #define DEFAULT_EJERK                 5.0    // (mm/sec)
406 442
 
407 443
 //===========================================================================
408
-//=============================Additional Features===========================
444
+//============================= Additional Features =========================
409 445
 //===========================================================================
410 446
 
411 447
 // Custom M code points
@@ -438,6 +474,11 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
438 474
 #define ABS_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
439 475
 
440 476
 //LCD and SD support
477
+
478
+// Character based displays can have different extended charsets.
479
+#define DISPLAY_CHARSET_HD44780_JAPAN     // "ääööüüß23°"
480
+//#define DISPLAY_CHARSET_HD44780_WESTERN // "ÄäÖöÜüß²³°" if you see a '~' instead of a 'arrow_right' at the right of submenuitems - this is the right one.
481
+
441 482
 //#define ULTRA_LCD  //general LCD support, also 16x2
442 483
 //#define DOGLCD  // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)
443 484
 //#define SDSUPPORT // Enable SD Card Support in Hardware Console
@@ -475,7 +516,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
475 516
 
476 517
 // The Elefu RA Board Control Panel
477 518
 // http://www.elefu.com/index.php?route=product/product&product_id=53
478
-// REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARUDINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C
519
+// REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C
479 520
 //#define RA_CONTROL_PANEL
480 521
 
481 522
 // Delta calibration menu

+ 1
- 4
Marlin/example_configurations/delta/Configuration_adv.h Ver fichero

@@ -200,9 +200,6 @@
200 200
 // This is the default power-up mode which can be later using M605. 
201 201
 #define DEFAULT_DUAL_X_CARRIAGE_MODE 0 
202 202
 
203
-// As the x-carriages are independent we can now account for any relative Z offset
204
-#define EXTRUDER1_Z_OFFSET 0.0           // z offset relative to extruder 0
205
-
206 203
 // Default settings in "Auto-park Mode" 
207 204
 #define TOOLCHANGE_PARK_ZLIFT   0.2      // the distance to raise Z axis when parking an extruder
208 205
 #define TOOLCHANGE_UNPARK_ZLIFT 1        // the distance to raise Z axis when unparking an extruder
@@ -229,7 +226,7 @@
229 226
 #define INVERT_Z_STEP_PIN false
230 227
 #define INVERT_E_STEP_PIN false
231 228
 
232
-//default stepper release if idle
229
+//default stepper release if idle. Set to 0 to deactivate.
233 230
 #define DEFAULT_STEPPER_DEACTIVE_TIME 60
234 231
 
235 232
 #define DEFAULT_MINIMUMFEEDRATE       0.0     // minimum feedrate

+ 53
- 10
Marlin/example_configurations/makibox/Configuration.h Ver fichero

@@ -3,10 +3,27 @@
3 3
 
4 4
 #include "boards.h"
5 5
 
6
+
7
+//===========================================================================
8
+//============================= Getting Started =============================
9
+//===========================================================================
10
+/*
11
+Here are some standard links for getting your machine calibrated:
12
+ * http://reprap.org/wiki/Calibration 
13
+ * http://youtu.be/wAL9d7FgInk
14
+ * http://calculator.josefprusa.cz
15
+ * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide
16
+ * http://www.thingiverse.com/thing:5573
17
+ * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap
18
+ * http://www.thingiverse.com/thing:298812
19
+*/
20
+
21
+
6 22
 // This configuration file contains the basic settings.
7 23
 // Advanced settings can be found in Configuration_adv.h
8 24
 // BASIC SETTINGS: select your board type, temperature sensor type, axis scaling, and endstop configuration
9 25
 
26
+
10 27
 //===========================================================================
11 28
 //============================= DELTA Printer ===============================
12 29
 //===========================================================================
@@ -14,6 +31,7 @@
14 31
 // example_configurations/delta directory.
15 32
 //
16 33
 
34
+
17 35
 //===========================================================================
18 36
 //============================= SCARA Printer ===============================
19 37
 //===========================================================================
@@ -24,8 +42,12 @@
24 42
 // User-specified version info of this build to display in [Pronterface, etc] terminal window during
25 43
 // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
26 44
 // build by the user have been successfully uploaded into firmware.
45
+#define STRING_VERSION "1.0.2"
46
+#define STRING_URL "reprap.org"
27 47
 #define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time
28 48
 #define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes.
49
+#define STRING_SPLASH_LINE1 "v" STRING_VERSION // will be shown during bootup in line 1
50
+//#define STRING_SPLASH_LINE2 STRING_VERSION_CONFIG_H // will be shown during bootup in line2
29 51
 
30 52
 // SERIAL_PORT selects which serial port should be used for communication with the host.
31 53
 // This allows the connection of wireless adapters (for instance) to non-default port pins.
@@ -63,8 +85,9 @@
63 85
 // Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it.
64 86
 // #define PS_DEFAULT_OFF
65 87
 
88
+
66 89
 //===========================================================================
67
-//=============================Thermal Settings  ============================
90
+//============================= Thermal Settings ============================
68 91
 //===========================================================================
69 92
 //
70 93
 //--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table
@@ -140,7 +163,12 @@
140 163
 //#define EXTRUDER_WATTS (12.0*12.0/6.7) //  P=I^2/R
141 164
 //#define BED_WATTS (12.0*12.0/1.1)      // P=I^2/R
142 165
 
143
-// PID settings:
166
+
167
+//===========================================================================
168
+//============================= PID Settings ================================
169
+//===========================================================================
170
+// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning
171
+
144 172
 // Comment the following line to disable PID and enable bang-bang.
145 173
 #define PIDTEMP
146 174
 #define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current
@@ -171,7 +199,10 @@
171 199
 //    #define  DEFAULT_Kd 440
172 200
 #endif // PIDTEMP
173 201
 
174
-// Bed Temperature Control
202
+
203
+//===========================================================================
204
+//============================= PID > Bed Temperature Control ===============
205
+//===========================================================================
175 206
 // Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis
176 207
 //
177 208
 // Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder.
@@ -211,7 +242,6 @@
211 242
 #endif // PIDTEMPBED
212 243
 
213 244
 
214
-
215 245
 //this prevents dangerous Extruder moves, i.e. if the temperature is under the limit
216 246
 //can be software-disabled for whatever purposes by
217 247
 #define PREVENT_DANGEROUS_EXTRUDE
@@ -221,7 +251,11 @@
221 251
 #define EXTRUDE_MINTEMP 170
222 252
 #define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances.
223 253
 
224
-/*================== Thermal Runaway Protection ==============================
254
+
255
+//===========================================================================
256
+//============================= Thermal Runaway Protection ==================
257
+//===========================================================================
258
+/*
225 259
 This is a feature to protect your printer from burn up in flames if it has
226 260
 a thermistor coming off place (this happened to a friend of mine recently and
227 261
 motivated me writing this feature).
@@ -256,11 +290,10 @@ your extruder heater takes 2 minutes to hit the target on heating.
256 290
 // Parameters for the bed heater
257 291
 //#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds
258 292
 //#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius
259
-//===========================================================================
260 293
 
261 294
 
262 295
 //===========================================================================
263
-//=============================Mechanical Settings===========================
296
+//============================ Mechanical Settings ==========================
264 297
 //===========================================================================
265 298
 
266 299
 // Uncomment the following line to enable CoreXY kinematics
@@ -332,7 +365,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
332 365
 #define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS.
333 366
 #define max_software_endstops true  // If true, axis won't move to coordinates greater than the defined lengths below.
334 367
 
335
-// Travel limits after homing
368
+// Travel limits after homing (units are in mm)
336 369
 #define X_MAX_POS 110
337 370
 #define X_MIN_POS 0
338 371
 #define Y_MAX_POS 150
@@ -343,7 +376,11 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
343 376
 #define X_MAX_LENGTH (X_MAX_POS - X_MIN_POS)
344 377
 #define Y_MAX_LENGTH (Y_MAX_POS - Y_MIN_POS)
345 378
 #define Z_MAX_LENGTH (Z_MAX_POS - Z_MIN_POS)
379
+
380
+
381
+//===========================================================================
346 382
 //============================= Bed Auto Leveling ===========================
383
+//===========================================================================
347 384
 
348 385
 //#define ENABLE_AUTO_BED_LEVELING // Delete the comment to enable (remove // at the start of the line)
349 386
 #define Z_PROBE_REPEATABILITY_TEST  // If not commented out, Z-Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
@@ -472,8 +509,9 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
472 509
 #define DEFAULT_ZJERK                 0.4     // (mm/sec)
473 510
 #define DEFAULT_EJERK                 5.0    // (mm/sec)
474 511
 
512
+
475 513
 //===========================================================================
476
-//=============================Additional Features===========================
514
+//============================ Additional Features ==========================
477 515
 //===========================================================================
478 516
 
479 517
 // Custom M code points
@@ -506,6 +544,11 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
506 544
 #define ABS_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
507 545
 
508 546
 //LCD and SD support
547
+
548
+// Character based displays can have different extended charsets.
549
+#define DISPLAY_CHARSET_HD44780_JAPAN     // "ääööüüß23°"
550
+//#define DISPLAY_CHARSET_HD44780_WESTERN // "ÄäÖöÜüß²³°" if you see a '~' instead of a 'arrow_right' at the right of submenuitems - this is the right one.
551
+
509 552
 //#define ULTRA_LCD  //general LCD support, also 16x2
510 553
 //#define DOGLCD  // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)
511 554
 #define SDSUPPORT // Enable SD Card Support in Hardware Console
@@ -543,7 +586,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
543 586
 
544 587
 // The Elefu RA Board Control Panel
545 588
 // http://www.elefu.com/index.php?route=product/product&product_id=53
546
-// REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARUDINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C
589
+// REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C
547 590
 //#define RA_CONTROL_PANEL
548 591
 
549 592
 //automatic expansion

+ 1
- 4
Marlin/example_configurations/makibox/Configuration_adv.h Ver fichero

@@ -200,9 +200,6 @@
200 200
 // This is the default power-up mode which can be later using M605.
201 201
 #define DEFAULT_DUAL_X_CARRIAGE_MODE 0
202 202
 
203
-// As the x-carriages are independent we can now account for any relative Z offset
204
-#define EXTRUDER1_Z_OFFSET 0.0           // z offset relative to extruder 0
205
-
206 203
 // Default settings in "Auto-park Mode"
207 204
 #define TOOLCHANGE_PARK_ZLIFT   0.2      // the distance to raise Z axis when parking an extruder
208 205
 #define TOOLCHANGE_UNPARK_ZLIFT 1        // the distance to raise Z axis when unparking an extruder
@@ -228,7 +225,7 @@
228 225
 #define INVERT_Z_STEP_PIN false
229 226
 #define INVERT_E_STEP_PIN false
230 227
 
231
-//default stepper release if idle
228
+//default stepper release if idle. Set to 0 to deactivate.
232 229
 #define DEFAULT_STEPPER_DEACTIVE_TIME 60
233 230
 
234 231
 #define DEFAULT_MINIMUMFEEDRATE       0.0     // minimum feedrate

+ 52
- 10
Marlin/example_configurations/tvrrug/Round2/Configuration.h Ver fichero

@@ -3,10 +3,26 @@
3 3
 
4 4
 #include "boards.h"
5 5
 
6
+//===========================================================================
7
+//============================= Getting Started =============================
8
+//===========================================================================
9
+/*
10
+Here are some standard links for getting your machine calibrated:
11
+ * http://reprap.org/wiki/Calibration 
12
+ * http://youtu.be/wAL9d7FgInk
13
+ * http://calculator.josefprusa.cz
14
+ * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide
15
+ * http://www.thingiverse.com/thing:5573
16
+ * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap
17
+ * http://www.thingiverse.com/thing:298812
18
+*/
19
+
20
+
6 21
 // This configuration file contains the basic settings.
7 22
 // Advanced settings can be found in Configuration_adv.h
8 23
 // BASIC SETTINGS: select your board type, temperature sensor type, axis scaling, and endstop configuration
9 24
 
25
+
10 26
 //===========================================================================
11 27
 //============================= DELTA Printer ===============================
12 28
 //===========================================================================
@@ -14,6 +30,7 @@
14 30
 // example_configurations/delta directory.
15 31
 //
16 32
 
33
+
17 34
 //===========================================================================
18 35
 //============================= SCARA Printer ===============================
19 36
 //===========================================================================
@@ -24,8 +41,12 @@
24 41
 // User-specified version info of this build to display in [Pronterface, etc] terminal window during
25 42
 // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
26 43
 // build by the user have been successfully uploaded into firmware.
44
+#define STRING_VERSION "1.0.2"
45
+#define STRING_URL "reprap.org"
27 46
 #define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time
28 47
 #define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes.
48
+#define STRING_SPLASH_LINE1 "v" STRING_VERSION // will be shown during bootup in line 1
49
+//#define STRING_SPLASH_LINE2 STRING_VERSION_CONFIG_H // will be shown during bootup in line2
29 50
 
30 51
 // SERIAL_PORT selects which serial port should be used for communication with the host.
31 52
 // This allows the connection of wireless adapters (for instance) to non-default port pins.
@@ -63,8 +84,9 @@
63 84
 // Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it.
64 85
 // #define PS_DEFAULT_OFF
65 86
 
87
+
66 88
 //===========================================================================
67
-//=============================Thermal Settings  ============================
89
+//============================= Thermal Settings ============================
68 90
 //===========================================================================
69 91
 //
70 92
 //--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table
@@ -142,7 +164,12 @@
142 164
 //#define EXTRUDER_WATTS (12.0*12.0/6.7) //  P=I^2/R
143 165
 //#define BED_WATTS (12.0*12.0/1.1)      // P=I^2/R
144 166
 
145
-// PID settings:
167
+
168
+//===========================================================================
169
+//============================= PID Settings ================================
170
+//===========================================================================
171
+// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning
172
+
146 173
 // Comment the following line to disable PID and enable bang-bang.
147 174
 #define PIDTEMP
148 175
 #define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current
@@ -178,7 +205,10 @@
178 205
 //    #define  DEFAULT_Kd 440
179 206
 #endif // PIDTEMP
180 207
 
181
-// Bed Temperature Control
208
+
209
+//===========================================================================
210
+//============================= PID > Bed Temperature Control ===============
211
+//===========================================================================
182 212
 // Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis
183 213
 //
184 214
 // Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder.
@@ -215,7 +245,6 @@
215 245
 #endif // PIDTEMPBED
216 246
 
217 247
 
218
-
219 248
 //this prevents dangerous Extruder moves, i.e. if the temperature is under the limit
220 249
 //can be software-disabled for whatever purposes by
221 250
 #define PREVENT_DANGEROUS_EXTRUDE
@@ -225,7 +254,11 @@
225 254
 #define EXTRUDE_MINTEMP 170
226 255
 #define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances.
227 256
 
228
-/*================== Thermal Runaway Protection ==============================
257
+
258
+//===========================================================================
259
+//============================= Thermal Runaway Protection ==================
260
+//===========================================================================
261
+/*
229 262
 This is a feature to protect your printer from burn up in flames if it has
230 263
 a thermistor coming off place (this happened to a friend of mine recently and
231 264
 motivated me writing this feature).
@@ -260,11 +293,10 @@ your extruder heater takes 2 minutes to hit the target on heating.
260 293
 // Parameters for the bed heater
261 294
 //#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds
262 295
 //#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius
263
-//===========================================================================
264 296
 
265 297
 
266 298
 //===========================================================================
267
-//=============================Mechanical Settings===========================
299
+//============================ Mechanical Settings ==========================
268 300
 //===========================================================================
269 301
 
270 302
 // Uncomment the following line to enable CoreXY kinematics
@@ -336,7 +368,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
336 368
 #define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS.
337 369
 #define max_software_endstops true  // If true, axis won't move to coordinates greater than the defined lengths below.
338 370
 
339
-// Travel limits after homing
371
+// Travel limits after homing (units are in mm)
340 372
 #define X_MAX_POS 205
341 373
 #define X_MIN_POS 0
342 374
 #define Y_MAX_POS 205
@@ -347,7 +379,11 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
347 379
 #define X_MAX_LENGTH (X_MAX_POS - X_MIN_POS)
348 380
 #define Y_MAX_LENGTH (Y_MAX_POS - Y_MIN_POS)
349 381
 #define Z_MAX_LENGTH (Z_MAX_POS - Z_MIN_POS)
382
+
383
+
384
+//===========================================================================
350 385
 //============================= Bed Auto Leveling ===========================
386
+//===========================================================================
351 387
 
352 388
 //#define ENABLE_AUTO_BED_LEVELING // Delete the comment to enable (remove // at the start of the line)
353 389
 #define Z_PROBE_REPEATABILITY_TEST  // If not commented out, Z-Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
@@ -486,8 +522,9 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
486 522
 #define DEFAULT_ZJERK                 0.4     // (mm/sec)
487 523
 #define DEFAULT_EJERK                 5.0    // (mm/sec)
488 524
 
525
+
489 526
 //===========================================================================
490
-//=============================Additional Features===========================
527
+//============================ Additional Features ==========================
491 528
 //===========================================================================
492 529
 
493 530
 // Custom M code points
@@ -520,6 +557,11 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
520 557
 #define ABS_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
521 558
 
522 559
 //LCD and SD support
560
+
561
+// Character based displays can have different extended charsets.
562
+#define DISPLAY_CHARSET_HD44780_JAPAN     // "ääööüüß23°"
563
+//#define DISPLAY_CHARSET_HD44780_WESTERN // "ÄäÖöÜüß²³°" if you see a '~' instead of a 'arrow_right' at the right of submenuitems - this is the right one.
564
+
523 565
 //#define ULTRA_LCD  //general LCD support, also 16x2
524 566
 //#define DOGLCD  // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)
525 567
 //#define SDSUPPORT // Enable SD Card Support in Hardware Console
@@ -557,7 +599,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
557 599
 
558 600
 // The Elefu RA Board Control Panel
559 601
 // http://www.elefu.com/index.php?route=product/product&product_id=53
560
-// REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARUDINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C
602
+// REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C
561 603
 //#define RA_CONTROL_PANEL
562 604
 
563 605
 //automatic expansion

+ 1
- 4
Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h Ver fichero

@@ -200,9 +200,6 @@
200 200
 // This is the default power-up mode which can be later using M605.
201 201
 #define DEFAULT_DUAL_X_CARRIAGE_MODE 0
202 202
 
203
-// As the x-carriages are independent we can now account for any relative Z offset
204
-#define EXTRUDER1_Z_OFFSET 0.0           // z offset relative to extruder 0
205
-
206 203
 // Default settings in "Auto-park Mode"
207 204
 #define TOOLCHANGE_PARK_ZLIFT   0.2      // the distance to raise Z axis when parking an extruder
208 205
 #define TOOLCHANGE_UNPARK_ZLIFT 1        // the distance to raise Z axis when unparking an extruder
@@ -230,7 +227,7 @@
230 227
 #define INVERT_Z_STEP_PIN false
231 228
 #define INVERT_E_STEP_PIN false
232 229
 
233
-//default stepper release if idle
230
+//default stepper release if idle. Set to 0 to deactivate.
234 231
 #define DEFAULT_STEPPER_DEACTIVE_TIME 60
235 232
 
236 233
 #define DEFAULT_MINIMUMFEEDRATE       0.0     // minimum feedrate

+ 93
- 24
Marlin/language.h Ver fichero

@@ -1,6 +1,8 @@
1 1
 #ifndef LANGUAGE_H
2 2
 #define LANGUAGE_H
3 3
 
4
+#include "Configuration.h"
5
+
4 6
 #define LANGUAGE_CONCAT(M)       #M
5 7
 #define GENERATE_LANGUAGE_INCLUDE(M)  LANGUAGE_CONCAT(language_##M.h)
6 8
 
@@ -11,19 +13,20 @@
11 13
 //   ==> ALSO TRY ALL AVAILABLE LANGUAGE OPTIONS
12 14
 
13 15
 // Languages
14
-// en English
15
-// pl Polish
16
-// fr French
17
-// de German
18
-// es Spanish
19
-// ru Russian
20
-// it Italian
21
-// pt Portuguese
22
-// fi Finnish
23
-// an Aragonese
24
-// nl Dutch
25
-// ca Catalan
26
-// eu Basque-Euskera
16
+// en    English
17
+// pl    Polish
18
+// fr    French
19
+// de    German
20
+// es    Spanish
21
+// ru    Russian
22
+// it    Italian
23
+// pt    Portuguese
24
+// pt-br Portuguese (Brazil)
25
+// fi    Finnish
26
+// an    Aragonese
27
+// nl    Dutch
28
+// ca    Catalan
29
+// eu    Basque-Euskera
27 30
 
28 31
 #ifndef LANGUAGE_INCLUDE
29 32
   // pick your language from the list above
@@ -31,33 +34,36 @@
31 34
 #endif
32 35
 
33 36
 #define PROTOCOL_VERSION "1.0"
37
+#define FIRMWARE_URL "https://github.com/MarlinFirmware/Marlin"
34 38
 
35 39
 #if MB(ULTIMAKER)|| MB(ULTIMAKER_OLD)|| MB(ULTIMAIN_2)
36 40
   #define MACHINE_NAME "Ultimaker"
37 41
   #define FIRMWARE_URL "http://firmware.ultimaker.com"
38 42
 #elif MB(RUMBA)
39 43
   #define MACHINE_NAME "Rumba"
40
-  #define FIRMWARE_URL "https://github.com/ErikZalm/Marlin/"
41 44
 #elif MB(3DRAG)
42 45
   #define MACHINE_NAME "3Drag"
43 46
   #define FIRMWARE_URL "http://3dprint.elettronicain.it/"
47
+#elif MB(K8200)
48
+  #define MACHINE_NAME "K8200"
44 49
 #elif MB(5DPRINT)
45 50
   #define MACHINE_NAME "Makibox"
46
-  #define FIRMWARE_URL "https://github.com/ErikZalm/Marlin/"
47 51
 #elif MB(SAV_MKI)
48 52
   #define MACHINE_NAME "SAV MkI"
49 53
   #define FIRMWARE_URL "https://github.com/fmalpartida/Marlin/tree/SAV-MkI-config"
50
-#else
51
-  #ifdef CUSTOM_MENDEL_NAME
52
-    #define MACHINE_NAME CUSTOM_MENDEL_NAME
53
-  #else
54
-    #define MACHINE_NAME "Mendel"
55
-  #endif
56
-
57
-// Default firmware set to Mendel
58
-  #define FIRMWARE_URL "https://github.com/ErikZalm/Marlin/"
54
+#elif MB(WITBOX)
55
+  #define MACHINE_NAME "WITBOX"
56
+  #define FIRMWARE_URL "http://www.bq.com/gb/downloads-witbox.html"
57
+#elif MB(HEPHESTOS)
58
+  #define MACHINE_NAME "HEPHESTOS"
59
+  #define FIRMWARE_URL "http://www.bq.com/gb/downloads-prusa-i3-hephestos.html"
60
+#else // Default firmware set to Mendel
61
+  #define MACHINE_NAME "Mendel"
59 62
 #endif
60 63
 
64
+#ifdef CUSTOM_MENDEL_NAME
65
+  #define MACHINE_NAME CUSTOM_MENDEL_NAME
66
+#endif
61 67
 
62 68
 #ifndef MACHINE_UUID
63 69
    #define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
@@ -151,8 +157,71 @@
151 157
 #define MSG_BABYSTEPPING_Z                  "Babystepping Z"
152 158
 #define MSG_SERIAL_ERROR_MENU_STRUCTURE     "Error in menu structure"
153 159
 
160
+#define MSG_ERR_EEPROM_WRITE                "Error writing to EEPROM!"
161
+
154 162
 // LCD Menu Messages
155 163
 
164
+// Add your own character. Reference: https://github.com/MarlinFirmware/Marlin/pull/1434 photos
165
+//                                and https://www.sparkfun.com/datasheets/LCD/HD44780.pdf page 17-18
166
+#ifdef DOGLCD
167
+  #define STR_Ae "\304"               // 'Ä' U8glib
168
+  #define STR_ae "\344"               // 'ä'
169
+  #define STR_Oe "\326"               // 'Ö'
170
+  #define STR_oe STR_Oe               // 'ö'
171
+  #define STR_Ue "\334"               // 'Ü'
172
+  #define STR_ue STR_Ue               // 'ü'
173
+  #define STR_sz "\337"               // 'ß'
174
+  #define STR_h2 "\262"               // '²'
175
+  #define STR_h3 "\263"               // '³'
176
+  #define STR_Deg "\260"              // '°'
177
+  #define STR_THERMOMETER "\377"
178
+#else
179
+  #ifdef DISPLAY_CHARSET_HD44780_JAPAN // HD44780 ROM Code: A00 (Japan)
180
+    #define STR_ae "\xe1"
181
+    #define STR_Ae STR_ae
182
+    #define STR_oe "\357"
183
+    #define STR_Oe STR_oe
184
+    #define STR_ue "\365"
185
+    #define STR_Ue STR_ue
186
+    #define STR_sz "\342"
187
+    #define STR_h2 "2"
188
+    #define STR_h3 "3"
189
+    #define STR_Deg "\271"
190
+    #define STR_THERMOMETER "\002"
191
+  #endif
192
+  #ifdef DISPLAY_CHARSET_HD44780_WESTERN // HD44780 ROM Code: A02 (Western)
193
+    #define STR_Ae "\216"
194
+    #define STR_ae "\204"
195
+    #define STR_Oe "\211"
196
+    #define STR_oe "\204"
197
+    #define STR_Ue "\212"
198
+    #define STR_ue "\201"
199
+    #define STR_sz "\160"
200
+    #define STR_h2 "\262"
201
+    #define STR_h3 "\263"
202
+    #define STR_Deg "\337"
203
+    #define STR_THERMOMETER "\002"
204
+  #endif
205
+#endif
206
+/*
207
+#define TESTSTRING000 "\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017"
208
+#define TESTSTRING020 "\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
209
+#define TESTSTRING040 "\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057"
210
+#define TESTSTRING060 "\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077"
211
+#define TESTSTRING100 "\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117"
212
+#define TESTSTRING120 "\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137"
213
+#define TESTSTRING140 "\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157"
214
+#define TESTSTRING160 "\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177"
215
+#define TESTSTRING200 "\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217"
216
+#define TESTSTRING220 "\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237"
217
+#define TESTSTRING240 "\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257"
218
+#define TESTSTRING260 "\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277"
219
+#define TESTSTRING300 "\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317"
220
+#define TESTSTRING320 "\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337"
221
+#define TESTSTRING340 "\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357"
222
+#define TESTSTRING360 "\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377"
223
+*/
224
+
156 225
 #include LANGUAGE_INCLUDE
157 226
 
158 227
 #endif //__LANGUAGE_H

+ 4
- 26
Marlin/language_an.h Ver fichero

@@ -18,17 +18,13 @@
18 18
 #define MSG_SET_HOME_OFFSETS                "Set home offsets"
19 19
 #define MSG_SET_ORIGIN                      "Establir zero"
20 20
 #define MSG_PREHEAT_PLA                     "Precalentar PLA"
21
-#define MSG_PREHEAT_PLA0                    "Precalentar PLA0"
22
-#define MSG_PREHEAT_PLA1                    "Precalentar PLA1"
23
-#define MSG_PREHEAT_PLA2                    "Precalentar PLA2"
24
-#define MSG_PREHEAT_PLA012                  "Precalentar PLA a"
21
+#define MSG_PREHEAT_PLA_N                   "Precalentar PLA "
22
+#define MSG_PREHEAT_PLA_ALL                 "Precalentar PLA a"
25 23
 #define MSG_PREHEAT_PLA_BEDONLY             "Prec. PLA Base"
26 24
 #define MSG_PREHEAT_PLA_SETTINGS            "Achustar tem. PLA"
27 25
 #define MSG_PREHEAT_ABS                     "Precalentar ABS"
28
-#define MSG_PREHEAT_ABS0                    "Precalentar ABS0"
29
-#define MSG_PREHEAT_ABS1                    "Precalentar ABS1"
30
-#define MSG_PREHEAT_ABS2                    "Precalentar ABS2"
31
-#define MSG_PREHEAT_ABS012                  "Precalentar ABS a"
26
+#define MSG_PREHEAT_ABS_N                   "Precalentar ABS "
27
+#define MSG_PREHEAT_ABS_ALL                 "Precalentar ABS a"
32 28
 #define MSG_PREHEAT_ABS_BEDONLY             "Prec. ABS Base"
33 29
 #define MSG_PREHEAT_ABS_SETTINGS            "Achustar tem. ABS"
34 30
 #define MSG_COOLDOWN                        "Enfriar"
@@ -41,21 +37,14 @@
41 37
 #define MSG_MOVE_Y                          "Move Y"
42 38
 #define MSG_MOVE_Z                          "Move Z"
43 39
 #define MSG_MOVE_E                          "Extruder"
44
-#define MSG_MOVE_E1                         "Extruder2"
45
-#define MSG_MOVE_E2                         "Extruder3"
46 40
 #define MSG_MOVE_01MM                       "Move 0.1mm"
47 41
 #define MSG_MOVE_1MM                        "Move 1mm"
48 42
 #define MSG_MOVE_10MM                       "Move 10mm"
49 43
 #define MSG_SPEED                           "Velocidat"
50 44
 #define MSG_NOZZLE                          "Nozzle"
51
-#define MSG_NOZZLE1                         "Nozzle2"
52
-#define MSG_NOZZLE2                         "Nozzle3"
53 45
 #define MSG_BED                             "Base"
54 46
 #define MSG_FAN_SPEED                       "Ixoriador"
55 47
 #define MSG_FLOW                            "Fluxo"
56
-#define MSG_FLOW0                           "Fluxo 0"
57
-#define MSG_FLOW1                           "Fluxo 1"
58
-#define MSG_FLOW2                           "Fluxo 2"
59 48
 #define MSG_CONTROL                         "Control"
60 49
 #define MSG_MIN                             "\002 Min"
61 50
 #define MSG_MAX                             "\002 Max"
@@ -130,17 +119,6 @@
130 119
 #define MSG_BABYSTEP_Z                      "Babystep Z"
131 120
 #define MSG_ENDSTOP_ABORT                   "Endstop abort"
132 121
 
133
-#define MSG_RECTRACT                        "Retraer"
134
-#define MSG_RECTRACT_WIDE                   "Retraer"
135
-#define MSG_TEMPERATURE_WIDE                "Temperatura"
136
-#define MSG_TEMPERATURE_RTN                 "Temperatura"
137
-#define MSG_MAIN_WIDE                       "Menu Prencipal"
138
-#define MSG_MOTION_WIDE                     "Movimiento"
139
-#define MSG_PREPARE_ALT                     "Preparar"
140
-#define MSG_CONTROL_ARROW                   "Control \x7E"
141
-#define MSG_RETRACT_ARROW                   "Retraer \x7E"
142
-#define MSG_STEPPER_RELEASED                "Desacoplada."
143
-
144 122
 #ifdef DELTA_CALIBRATION_MENU
145 123
     #define MSG_DELTA_CALIBRATE             "Delta Calibration"
146 124
     #define MSG_DELTA_CALIBRATE_X           "Calibrate X"

+ 4
- 17
Marlin/language_ca.h Ver fichero

@@ -18,17 +18,13 @@
18 18
 #define MSG_SET_HOME_OFFSETS                "Set home offsets"
19 19
 #define MSG_SET_ORIGIN                      "Establir origen"
20 20
 #define MSG_PREHEAT_PLA                     "Preescalfar PLA"
21
-#define MSG_PREHEAT_PLA0                    "Preescalfar PLA 1"
22
-#define MSG_PREHEAT_PLA1                    "Preescalfar PLA 2"
23
-#define MSG_PREHEAT_PLA2                    "Preescalfar PLA 3"
24
-#define MSG_PREHEAT_PLA012                  "Preesc. tot PLA"
21
+#define MSG_PREHEAT_PLA_N                   "Preescalfar PLA "
22
+#define MSG_PREHEAT_PLA_ALL                 "Preesc. tot PLA"
25 23
 #define MSG_PREHEAT_PLA_BEDONLY             "Preesc. llit PLA"
26 24
 #define MSG_PREHEAT_PLA_SETTINGS            "Configuració PLA"
27 25
 #define MSG_PREHEAT_ABS                     "Preescalfar ABS"
28
-#define MSG_PREHEAT_ABS0                    "Preescalfar ABS 1"
29
-#define MSG_PREHEAT_ABS1                    "Preescalfar ABS 2"
30
-#define MSG_PREHEAT_ABS2                    "Preescalfar ABS 3"
31
-#define MSG_PREHEAT_ABS012                  "Preesc. tot ABS"
26
+#define MSG_PREHEAT_ABS_N                   "Preescalfar ABS "
27
+#define MSG_PREHEAT_ABS_ALL                 "Preesc. tot ABS"
32 28
 #define MSG_PREHEAT_ABS_BEDONLY             "Preesc. llit ABS"
33 29
 #define MSG_PREHEAT_ABS_SETTINGS            "Configuració ABS"
34 30
 #define MSG_COOLDOWN                        "Refredar"
@@ -41,21 +37,14 @@
41 37
 #define MSG_MOVE_Y                          "Moure Y"
42 38
 #define MSG_MOVE_Z                          "Moure Z"
43 39
 #define MSG_MOVE_E                          "Extrusor"
44
-#define MSG_MOVE_E1                         "Extruder2"
45
-#define MSG_MOVE_E2                         "Extruder3"
46 40
 #define MSG_MOVE_01MM                       "Moure 0.1mm"
47 41
 #define MSG_MOVE_1MM                        "Moure 1mm"
48 42
 #define MSG_MOVE_10MM                       "Moure 10mm"
49 43
 #define MSG_SPEED                           "Velocitat"
50 44
 #define MSG_NOZZLE                          "Nozzle"
51
-#define MSG_NOZZLE1                         "Nozzle2"
52
-#define MSG_NOZZLE2                         "Nozzle3"
53 45
 #define MSG_BED                             "Llit"
54 46
 #define MSG_FAN_SPEED                       "Vel. Ventilador"
55 47
 #define MSG_FLOW                            "Fluxe"
56
-#define MSG_FLOW0                           "Fluxe 0"
57
-#define MSG_FLOW1                           "Fluxe 1"
58
-#define MSG_FLOW2                           "Fluxe 2"
59 48
 #define MSG_CONTROL                         "Control"
60 49
 #define MSG_MIN                             " \002 Min"
61 50
 #define MSG_MAX                             " \002 Max"
@@ -130,8 +119,6 @@
130 119
 #define MSG_BABYSTEP_Z                      "Babystep Z"
131 120
 #define MSG_ENDSTOP_ABORT                   "Endstop abort"
132 121
 
133
-#define MSG_RECTRACT                        "Retreure"
134
-
135 122
 #ifdef DELTA_CALIBRATION_MENU
136 123
     #define MSG_DELTA_CALIBRATE             "Delta Calibration"
137 124
     #define MSG_DELTA_CALIBRATE_X           "Calibrate X"

+ 73
- 88
Marlin/language_de.h Ver fichero

@@ -9,108 +9,96 @@
9 9
 #define LANGUAGE_DE_H
10 10
 
11 11
 #define WELCOME_MSG                         MACHINE_NAME " Bereit."
12
-#define MSG_SD_INSERTED                     "SDKarte erkannt"
13
-#define MSG_SD_REMOVED                      "SDKarte entfernt"
14
-#define MSG_MAIN                            "Hauptmenü"
12
+#define MSG_SD_INSERTED                     "SDKarte erkannt."
13
+#define MSG_SD_REMOVED                      "SDKarte entfernt."
14
+#define MSG_MAIN                            "Hauptmen" STR_ue
15 15
 #define MSG_AUTOSTART                       "Autostart"
16
-#define MSG_DISABLE_STEPPERS                "Stepper abschalt."
17
-#define MSG_AUTO_HOME                       "Auto Nullpunkt"
18
-#define MSG_SET_HOME_OFFSETS                "Set home offsets"
19
-#define MSG_SET_ORIGIN                      "Setze Nullpunkt"
20
-#define MSG_PREHEAT_PLA                     "Vorwärmen PLA"
21
-#define MSG_PREHEAT_PLA0                    "Vorwärmen PLA 1"
22
-#define MSG_PREHEAT_PLA1                    "Vorwärmen PLA 2"
23
-#define MSG_PREHEAT_PLA2                    "Vorwärmen PLA 3"
24
-#define MSG_PREHEAT_PLA012                  "Vorw. PLA Alle"
16
+#define MSG_DISABLE_STEPPERS                "Motoren Aus" // M84
17
+#define MSG_AUTO_HOME                       "Home" // G28
18
+#define MSG_SET_HOME_OFFSETS                "Setze Home hier"
19
+#define MSG_SET_ORIGIN                      "Setze Null hier" //"G92 X0 Y0 Z0" commented out in ultralcd.cpp
20
+#define MSG_PREHEAT_PLA                     "Vorw" STR_ae "rmen PLA"
21
+#define MSG_PREHEAT_PLA_N                   "Vorw" STR_ae "rmen PLA "
22
+#define MSG_PREHEAT_PLA_ALL                 "Vorw. PLA Alle"
25 23
 #define MSG_PREHEAT_PLA_BEDONLY             "Vorw. PLA Bett"
26
-#define MSG_PREHEAT_PLA_SETTINGS            "Vorwärm. PLA Ein."
27
-#define MSG_PREHEAT_ABS                     "Vorwärmen ABS"
28
-#define MSG_PREHEAT_ABS0                    "Vorwärmen ABS 1"
29
-#define MSG_PREHEAT_ABS1                    "Vorwärmen ABS 2"
30
-#define MSG_PREHEAT_ABS2                    "Vorwärmen ABS 3"
31
-#define MSG_PREHEAT_ABS012                  "Vorw. ABS Alle"
24
+#define MSG_PREHEAT_PLA_SETTINGS            "Vorw" STR_ae "rm. PLA Ein."
25
+#define MSG_PREHEAT_ABS                     "Vorw" STR_ae "rmen ABS"
26
+#define MSG_PREHEAT_ABS_N                   "Vorw" STR_ae "rmen ABS "
27
+#define MSG_PREHEAT_ABS_ALL                 "Vorw. ABS Alle"
32 28
 #define MSG_PREHEAT_ABS_BEDONLY             "Vorw. ABS Bett"
33
-#define MSG_PREHEAT_ABS_SETTINGS            "Vorwärm. ABS Ein."
34
-#define MSG_COOLDOWN                        "Abkühlen"
35
-#define MSG_SWITCH_PS_ON                    "Switch Power On"
36
-#define MSG_SWITCH_PS_OFF                   "Switch Power Off"
37
-#define MSG_EXTRUDE                         "Extrude"
29
+#define MSG_PREHEAT_ABS_SETTINGS            "Vorw" STR_ae "rm. ABS Ein."
30
+#define MSG_COOLDOWN                        "Abk" STR_ue "hlen"
31
+#define MSG_SWITCH_PS_ON                    "Netzteil Ein"
32
+#define MSG_SWITCH_PS_OFF                   "Netzteil Aus"
38 33
 #define MSG_RETRACT                         "Retract"
39
-#define MSG_MOVE_AXIS                       "Achsen bewegen"
40
-#define MSG_MOVE_X                          "X bewegen"
41
-#define MSG_MOVE_Y                          "Y bewegen"
42
-#define MSG_MOVE_Z                          "Z bewegen"
43
-#define MSG_MOVE_E                          "Extruder"
44
-#define MSG_MOVE_E1                         "Extruder2"
45
-#define MSG_MOVE_E2                         "Extruder3"
46
-#define MSG_MOVE_01MM                       "0.1mm bewegen"
47
-#define MSG_MOVE_1MM                        "1mm bewegen"
48
-#define MSG_MOVE_10MM                       "10mm bewegen"
49
-#define MSG_SPEED                           "Geschw"
50
-#define MSG_NOZZLE                          "Düse"
51
-#define MSG_NOZZLE1                         "Düse2"
52
-#define MSG_NOZZLE2                         "Düse3"
34
+#define MSG_MOVE_AXIS                       "Bewegen"
35
+#define MSG_MOVE_X                          "X"
36
+#define MSG_MOVE_Y                          "Y"
37
+#define MSG_MOVE_Z                          "Z"
38
+#define MSG_MOVE_E                          "E"
39
+#define MSG_MOVE_01MM                       " 0.1 mm"
40
+#define MSG_MOVE_1MM                        " 1.0 mm"
41
+#define MSG_MOVE_10MM                       "10.0 mm"
42
+#define MSG_SPEED                           "Geschw."
43
+#define MSG_NOZZLE                          "D" STR_ue "se"
53 44
 #define MSG_BED                             "Bett"
54
-#define MSG_FAN_SPEED                       "Lüftergeschw."
45
+#define MSG_FAN_SPEED                       "L" STR_ue "ftergeschw."
55 46
 #define MSG_FLOW                            "Fluss"
56
-#define MSG_FLOW0                           "Fluss 0"
57
-#define MSG_FLOW1                           "Fluss 1"
58
-#define MSG_FLOW2                           "Fluss 2"
59 47
 #define MSG_CONTROL                         "Einstellungen"
60
-#define MSG_MIN                             "\002 Min"
61
-#define MSG_MAX                             "\002 Max"
62
-#define MSG_FACTOR                          "\002 Faktor"
48
+#define MSG_MIN                             STR_THERMOMETER " Min"
49
+#define MSG_MAX                             STR_THERMOMETER " Max"
50
+#define MSG_FACTOR                          STR_THERMOMETER " Faktor"
63 51
 #define MSG_AUTOTEMP                        "AutoTemp"
64 52
 #define MSG_ON                              "Ein"
65 53
 #define MSG_OFF                             "Aus"
66
-#define MSG_PID_P                           "PID-P"
67
-#define MSG_PID_I                           "PID-I"
68
-#define MSG_PID_D                           "PID-D"
69
-#define MSG_PID_C                           "PID-C"
70
-#define MSG_ACC                             "Acc"
71
-#define MSG_VXY_JERK                        "Vxy-jerk"
72
-#define MSG_VZ_JERK                         "Vz-jerk"
73
-#define MSG_VE_JERK                         "Ve-jerk"
74
-#define MSG_VMAX                            "Vmax "
54
+#define MSG_PID_P                           "PID P"
55
+#define MSG_PID_I                           "PID I"
56
+#define MSG_PID_D                           "PID D"
57
+#define MSG_PID_C                           "PID C"
58
+#define MSG_ACC                             "A"
59
+#define MSG_VXY_JERK                        "V xy jerk"
60
+#define MSG_VZ_JERK                         "V z  jerk"
61
+#define MSG_VE_JERK                         "V e  jerk"
62
+#define MSG_VMAX                            "V max " // space by purpose
75 63
 #define MSG_X                               "x"
76 64
 #define MSG_Y                               "y"
77 65
 #define MSG_Z                               "z"
78 66
 #define MSG_E                               "e"
79
-#define MSG_VMIN                            "Vmin"
67
+#define MSG_VMIN                            "V min"
80 68
 #define MSG_VTRAV_MIN                       "VTrav min"
81
-#define MSG_AMAX                            "Amax "
82
-#define MSG_A_RETRACT                       "A-Retract"
83
-#define MSG_XSTEPS                          "Xsteps/mm"
84
-#define MSG_YSTEPS                          "Ysteps/mm"
85
-#define MSG_ZSTEPS                          "Zsteps/mm"
86
-#define MSG_ESTEPS                          "Esteps/mm"
69
+#define MSG_AMAX                            "A max " // space by purpose
70
+#define MSG_A_RETRACT                       "A Retract"
71
+#define MSG_XSTEPS                          "X steps/mm"
72
+#define MSG_YSTEPS                          "Y steps/mm"
73
+#define MSG_ZSTEPS                          "Z steps/mm"
74
+#define MSG_ESTEPS                          "E steps/mm"
87 75
 #define MSG_TEMPERATURE                     "Temperatur"
88 76
 #define MSG_MOTION                          "Bewegung"
89 77
 #define MSG_VOLUMETRIC                      "Filament"
90
-#define MSG_VOLUMETRIC_ENABLED		        "E in mm3"
91
-#define MSG_FILAMENT_SIZE_EXTRUDER_0        "Fil. Dia. 1"
92
-#define MSG_FILAMENT_SIZE_EXTRUDER_1        "Fil. Dia. 2"
93
-#define MSG_FILAMENT_SIZE_EXTRUDER_2        "Fil. Dia. 3"
78
+#define MSG_VOLUMETRIC_ENABLED		          "E in mm" STR_h3
79
+#define MSG_FILAMENT_SIZE_EXTRUDER_0        "Filament D 1"
80
+#define MSG_FILAMENT_SIZE_EXTRUDER_1        "Filament D 2"
81
+#define MSG_FILAMENT_SIZE_EXTRUDER_2        "Filament D 3"
94 82
 #define MSG_CONTRAST                        "LCD contrast"
95 83
 #define MSG_STORE_EPROM                     "EPROM speichern"
96 84
 #define MSG_LOAD_EPROM                      "EPROM laden"
97 85
 #define MSG_RESTORE_FAILSAFE                "Standardkonfig."
98 86
 #define MSG_REFRESH                         "Aktualisieren"
99
-#define MSG_WATCH                           "Beobachten"
87
+#define MSG_WATCH                           "Info"
100 88
 #define MSG_PREPARE                         "Vorbereitung"
101 89
 #define MSG_TUNE                            "Justierung"
102
-#define MSG_PAUSE_PRINT                     "Druck anhalten"
103
-#define MSG_RESUME_PRINT                    "Druck fortsetz"
104
-#define MSG_STOP_PRINT                      "Druck stoppen"
105
-#define MSG_CARD_MENU                       "SDKarten Menü"
90
+#define MSG_PAUSE_PRINT                     "SD-Druck Pause"
91
+#define MSG_RESUME_PRINT                    "SD-Druck Weiter"
92
+#define MSG_STOP_PRINT                      "SD-Druck Abbruch"
93
+#define MSG_CARD_MENU                       "SDKarte"
106 94
 #define MSG_NO_CARD                         "Keine SDKarte"
107 95
 #define MSG_DWELL                           "Warten..."
108
-#define MSG_USERWAIT                        "Warte auf Nutzer"
109
-#define MSG_RESUMING                        "Druck fortsetzung"
110
-#define MSG_PRINT_ABORTED                   "Print aborted"
111
-#define MSG_NO_MOVE                         "Kein Zug."
112
-#define MSG_KILLED                          "KILLED"
113
-#define MSG_STOPPED                         "GESTOPPT"
96
+#define MSG_USERWAIT                        "Warte auf Nutzer."
97
+#define MSG_RESUMING                        "Druck geht weiter"
98
+#define MSG_PRINT_ABORTED                   "Druck abgebrochen"
99
+#define MSG_NO_MOVE                         "Motoren Eingesch."
100
+#define MSG_KILLED                          "KILLED."
101
+#define MSG_STOPPED                         "ANGEHALTEN."
114 102
 #define MSG_CONTROL_RETRACT                 "Retract mm"
115 103
 #define MSG_CONTROL_RETRACT_SWAP            "Wechs. Retract mm"
116 104
 #define MSG_CONTROL_RETRACTF                "Retract  V"
@@ -120,25 +108,22 @@
120 108
 #define MSG_CONTROL_RETRACT_RECOVERF        "UnRet  V"
121 109
 #define MSG_AUTORETRACT                     "AutoRetr."
122 110
 #define MSG_FILAMENTCHANGE                  "Filament wechseln"
123
-#define MSG_INIT_SDCARD                     "Init. SD-Card"
124
-#define MSG_CNG_SDCARD                      "Change SD-Card"
125
-#define MSG_ZPROBE_OUT                      "Z probe out. bed"
126
-#define MSG_POSITION_UNKNOWN                "Home X/Y before Z"
111
+#define MSG_INIT_SDCARD                     "SDKarte erkennen"// Manually initialize the SD-card via user interface
112
+#define MSG_CNG_SDCARD                      "SDKarte erkennen"// SD-card changed by user. For machines with no autocarddetect. Both send "M21"
113
+#define MSG_ZPROBE_OUT                      "Sensor ausserhalb"
114
+#define MSG_POSITION_UNKNOWN                "X/Y vor Z Homen."
127 115
 #define MSG_ZPROBE_ZOFFSET                  "Z Offset"
128 116
 #define MSG_BABYSTEP_X                      "Babystep X"
129 117
 #define MSG_BABYSTEP_Y                      "Babystep Y"
130 118
 #define MSG_BABYSTEP_Z                      "Babystep Z"
131
-#define MSG_ENDSTOP_ABORT                   "Endstop abort"
132
-
133
-#define MSG_STEPPER_RELEASED                "Stepper frei"
134
-#define MSG_RECTRACT_WIDE                   "Rectract"
119
+#define MSG_ENDSTOP_ABORT                   "Endstop Abbr. Ein"
135 120
 
136 121
 #ifdef DELTA_CALIBRATION_MENU
137
-    #define MSG_DELTA_CALIBRATE             "Delta Calibration"
138
-    #define MSG_DELTA_CALIBRATE_X           "Calibrate X"
139
-    #define MSG_DELTA_CALIBRATE_Y           "Calibrate Y"
140
-    #define MSG_DELTA_CALIBRATE_Z           "Calibrate Z"
141
-    #define MSG_DELTA_CALIBRATE_CENTER      "Calibrate Center"
122
+    #define MSG_DELTA_CALIBRATE             "Delta Kalibrieren"
123
+    #define MSG_DELTA_CALIBRATE_X           "Kalibriere X"
124
+    #define MSG_DELTA_CALIBRATE_Y           "Kalibriere Y"
125
+    #define MSG_DELTA_CALIBRATE_Z           "Kalibriere Z"
126
+    #define MSG_DELTA_CALIBRATE_CENTER      "Kalibriere Mitte"
142 127
 #endif // DELTA_CALIBRATION_MENU
143 128
 
144 129
 #endif // LANGUAGE_DE_H

+ 13
- 25
Marlin/language_en.h Ver fichero

@@ -18,19 +18,15 @@
18 18
 #define MSG_SET_HOME_OFFSETS                "Set home offsets"
19 19
 #define MSG_SET_ORIGIN                      "Set origin"
20 20
 #define MSG_PREHEAT_PLA                     "Preheat PLA"
21
-#define MSG_PREHEAT_PLA0                    "Preheat PLA 1"
22
-#define MSG_PREHEAT_PLA1                    "Preheat PLA 2"
23
-#define MSG_PREHEAT_PLA2                    "Preheat PLA 3"
24
-#define MSG_PREHEAT_PLA012                  "Preheat PLA All"
25
-#define MSG_PREHEAT_PLA_BEDONLY             "Preheat PLA Bed"
26
-#define MSG_PREHEAT_PLA_SETTINGS            "Preheat PLA conf"
21
+#define MSG_PREHEAT_PLA_N                   MSG_PREHEAT_PLA " "
22
+#define MSG_PREHEAT_PLA_ALL                 MSG_PREHEAT_PLA " All"
23
+#define MSG_PREHEAT_PLA_BEDONLY             MSG_PREHEAT_PLA " Bed"
24
+#define MSG_PREHEAT_PLA_SETTINGS            MSG_PREHEAT_PLA " conf"
27 25
 #define MSG_PREHEAT_ABS                     "Preheat ABS"
28
-#define MSG_PREHEAT_ABS0                    "Preheat ABS 1"
29
-#define MSG_PREHEAT_ABS1                    "Preheat ABS 2"
30
-#define MSG_PREHEAT_ABS2                    "Preheat ABS 3"
31
-#define MSG_PREHEAT_ABS012                  "Preheat ABS All"
32
-#define MSG_PREHEAT_ABS_BEDONLY             "Preheat ABS Bed"
33
-#define MSG_PREHEAT_ABS_SETTINGS            "Preheat ABS conf"
26
+#define MSG_PREHEAT_ABS_N                   MSG_PREHEAT_ABS " "
27
+#define MSG_PREHEAT_ABS_ALL                 MSG_PREHEAT_ABS " All"
28
+#define MSG_PREHEAT_ABS_BEDONLY             MSG_PREHEAT_ABS " Bed"
29
+#define MSG_PREHEAT_ABS_SETTINGS            MSG_PREHEAT_ABS " conf"
34 30
 #define MSG_COOLDOWN                        "Cooldown"
35 31
 #define MSG_SWITCH_PS_ON                    "Switch power on"
36 32
 #define MSG_SWITCH_PS_OFF                   "Switch power off"
@@ -41,25 +37,18 @@
41 37
 #define MSG_MOVE_Y                          "Move Y"
42 38
 #define MSG_MOVE_Z                          "Move Z"
43 39
 #define MSG_MOVE_E                          "Extruder"
44
-#define MSG_MOVE_E1                         "Extruder2"
45
-#define MSG_MOVE_E2                         "Extruder3"
46 40
 #define MSG_MOVE_01MM                       "Move 0.1mm"
47 41
 #define MSG_MOVE_1MM                        "Move 1mm"
48 42
 #define MSG_MOVE_10MM                       "Move 10mm"
49 43
 #define MSG_SPEED                           "Speed"
50 44
 #define MSG_NOZZLE                          "Nozzle"
51
-#define MSG_NOZZLE1                         "Nozzle2"
52
-#define MSG_NOZZLE2                         "Nozzle3"
53 45
 #define MSG_BED                             "Bed"
54 46
 #define MSG_FAN_SPEED                       "Fan speed"
55 47
 #define MSG_FLOW                            "Flow"
56
-#define MSG_FLOW0                           "Flow 0"
57
-#define MSG_FLOW1                           "Flow 1"
58
-#define MSG_FLOW2                           "Flow 2"
59 48
 #define MSG_CONTROL                         "Control"
60
-#define MSG_MIN                             " \002 Min"
61
-#define MSG_MAX                             " \002 Max"
62
-#define MSG_FACTOR                          " \002 Fact"
49
+#define MSG_MIN                             " " STR_THERMOMETER " Min"
50
+#define MSG_MAX                             " " STR_THERMOMETER " Max"
51
+#define MSG_FACTOR                          " " STR_THERMOMETER " Fact"
63 52
 #define MSG_AUTOTEMP                        "Autotemp"
64 53
 #define MSG_ON                              "On "
65 54
 #define MSG_OFF                             "Off"
@@ -87,10 +76,11 @@
87 76
 #define MSG_TEMPERATURE                     "Temperature"
88 77
 #define MSG_MOTION                          "Motion"
89 78
 #define MSG_VOLUMETRIC                      "Filament"
90
-#define MSG_VOLUMETRIC_ENABLED		        "E in mm3"
79
+#define MSG_VOLUMETRIC_ENABLED		          "E in mm" STR_h3
91 80
 #define MSG_FILAMENT_SIZE_EXTRUDER_0        "Fil. Dia. 1"
92 81
 #define MSG_FILAMENT_SIZE_EXTRUDER_1        "Fil. Dia. 2"
93 82
 #define MSG_FILAMENT_SIZE_EXTRUDER_2        "Fil. Dia. 3"
83
+#define MSG_FILAMENT_SIZE_EXTRUDER_3        "Fil. Dia. 4"
94 84
 #define MSG_CONTRAST                        "LCD contrast"
95 85
 #define MSG_STORE_EPROM                     "Store memory"
96 86
 #define MSG_LOAD_EPROM                      "Load memory"
@@ -130,8 +120,6 @@
130 120
 #define MSG_BABYSTEP_Z                      "Babystep Z"
131 121
 #define MSG_ENDSTOP_ABORT                   "Endstop abort"
132 122
 
133
-#define MSG_RECTRACT                        "Rectract"
134
-
135 123
 #ifdef DELTA_CALIBRATION_MENU
136 124
     #define MSG_DELTA_CALIBRATE             "Delta Calibration"
137 125
     #define MSG_DELTA_CALIBRATE_X           "Calibrate X"

+ 4
- 26
Marlin/language_es.h Ver fichero

@@ -18,17 +18,13 @@
18 18
 #define MSG_SET_HOME_OFFSETS                "Ajustar offsets"
19 19
 #define MSG_SET_ORIGIN                      "Establecer cero"
20 20
 #define MSG_PREHEAT_PLA                     "Precalentar PLA"
21
-#define MSG_PREHEAT_PLA0                    "Precalentar PLA 1"
22
-#define MSG_PREHEAT_PLA1                    "Precalentar PLA 2"
23
-#define MSG_PREHEAT_PLA2                    "Precalentar PLA 3"
24
-#define MSG_PREHEAT_PLA012                  "Precal. PLA Todo"
21
+#define MSG_PREHEAT_PLA_N                   "Precalentar PLA "
22
+#define MSG_PREHEAT_PLA_ALL                 "Precal. PLA Todo"
25 23
 #define MSG_PREHEAT_PLA_BEDONLY             "Precal. PLA Base"
26 24
 #define MSG_PREHEAT_PLA_SETTINGS            "Ajustar temp. PLA"
27 25
 #define MSG_PREHEAT_ABS                     "Precalentar ABS"
28
-#define MSG_PREHEAT_ABS0                    "Precalentar ABS 1"
29
-#define MSG_PREHEAT_ABS1                    "Precalentar ABS 2"
30
-#define MSG_PREHEAT_ABS2                    "Precalentar ABS 3"
31
-#define MSG_PREHEAT_ABS012                  "Precal. ABS Todo"
26
+#define MSG_PREHEAT_ABS_N                   "Precalentar ABS "
27
+#define MSG_PREHEAT_ABS_ALL                 "Precal. ABS Todo"
32 28
 #define MSG_PREHEAT_ABS_BEDONLY             "Precal. ABS Base"
33 29
 #define MSG_PREHEAT_ABS_SETTINGS            "Ajustar temp. ABS"
34 30
 #define MSG_COOLDOWN                        "Enfriar"
@@ -41,21 +37,14 @@
41 37
 #define MSG_MOVE_Y                          "Mover Y"
42 38
 #define MSG_MOVE_Z                          "Mover Z"
43 39
 #define MSG_MOVE_E                          "Extrusor"
44
-#define MSG_MOVE_E1                         "Extrusor2"
45
-#define MSG_MOVE_E2                         "Extrusor3"
46 40
 #define MSG_MOVE_01MM                       "Mover 0.1mm"
47 41
 #define MSG_MOVE_1MM                        "Mover 1mm"
48 42
 #define MSG_MOVE_10MM                       "Mover 10mm"
49 43
 #define MSG_SPEED                           "Velocidad"
50 44
 #define MSG_NOZZLE                          "Nozzle"
51
-#define MSG_NOZZLE1                         "Nozzle2"
52
-#define MSG_NOZZLE2                         "Nozzle3"
53 45
 #define MSG_BED                             "Base"
54 46
 #define MSG_FAN_SPEED                       "Ventilador"
55 47
 #define MSG_FLOW                            "Flujo"
56
-#define MSG_FLOW0                           "Flujo 0"
57
-#define MSG_FLOW1                           "Flujo 1"
58
-#define MSG_FLOW2                           "Flujo 2"
59 48
 #define MSG_CONTROL                         "Control"
60 49
 #define MSG_MIN                             "\002 Min"
61 50
 #define MSG_MAX                             "\002 Max"
@@ -130,17 +119,6 @@
130 119
 #define MSG_BABYSTEP_Z                      "Babystep Z"
131 120
 #define MSG_ENDSTOP_ABORT                   "Endstop abort"
132 121
 
133
-#define MSG_RECTRACT                        "Retraer"
134
-#define MSG_RECTRACT_WIDE                   "Retraer"
135
-#define MSG_TEMPERATURE_WIDE                "Temperatura"
136
-#define MSG_TEMPERATURE_RTN                 "Temperatura"
137
-#define MSG_MAIN_WIDE                       "Menu principal"
138
-#define MSG_MOTION_WIDE                     "Movimiento"
139
-#define MSG_PREPARE_ALT                     "Preparar"
140
-#define MSG_CONTROL_ARROW                   "Control \x7E"
141
-#define MSG_RETRACT_ARROW                   "Retraer \x7E"
142
-#define MSG_STEPPER_RELEASED                "Desacoplada."
143
-
144 122
 #ifdef DELTA_CALIBRATION_MENU
145 123
     #define MSG_DELTA_CALIBRATE             "Delta Calibration"
146 124
     #define MSG_DELTA_CALIBRATE_X           "Calibrate X"

+ 4
- 17
Marlin/language_eu.h Ver fichero

@@ -18,17 +18,13 @@
18 18
 #define MSG_SET_HOME_OFFSETS                "Set home offsets"
19 19
 #define MSG_SET_ORIGIN                      "Hasiera ipini"
20 20
 #define MSG_PREHEAT_PLA                     "Aurreberotu PLA"
21
-#define MSG_PREHEAT_PLA0                    "Aurreberotu PLA1"
22
-#define MSG_PREHEAT_PLA1                    "Aurreberotu PLA2"
23
-#define MSG_PREHEAT_PLA2                    "Aurreberotu PLA3"
24
-#define MSG_PREHEAT_PLA012                  "Berotu PLA Guztia"
21
+#define MSG_PREHEAT_PLA_N                   "Aurreberotu PLA "
22
+#define MSG_PREHEAT_PLA_ALL                 "Berotu PLA Guztia"
25 23
 #define MSG_PREHEAT_PLA_BEDONLY             "Berotu PLA Ohea"
26 24
 #define MSG_PREHEAT_PLA_SETTINGS            "Berotu PLA Konfig"
27 25
 #define MSG_PREHEAT_ABS                     "Aurreberotu ABS"
28
-#define MSG_PREHEAT_ABS0                    "Aurreberotu ABS 1"
29
-#define MSG_PREHEAT_ABS1                    "Aurreberotu ABS 2"
30
-#define MSG_PREHEAT_ABS2                    "Aurreberotu ABS 3"
31
-#define MSG_PREHEAT_ABS012                  "Berotu ABS Guztia"
26
+#define MSG_PREHEAT_ABS_N                   "Aurreberotu ABS "
27
+#define MSG_PREHEAT_ABS_ALL                 "Berotu ABS Guztia"
32 28
 #define MSG_PREHEAT_ABS_BEDONLY             "Berotu ABS Ohea"
33 29
 #define MSG_PREHEAT_ABS_SETTINGS            "Berotu ABS Konfig"
34 30
 #define MSG_COOLDOWN                        "Hoztu"
@@ -41,21 +37,14 @@
41 37
 #define MSG_MOVE_Y                          "Mugitu Y"
42 38
 #define MSG_MOVE_Z                          "Mugitu Z"
43 39
 #define MSG_MOVE_E                          "Estrusorea"
44
-#define MSG_MOVE_E1                         "Estrusorea2"
45
-#define MSG_MOVE_E2                         "Estrusorea3"
46 40
 #define MSG_MOVE_01MM                       "Mugitu 0.1mm"
47 41
 #define MSG_MOVE_1MM                        "Mugitu 1mm"
48 42
 #define MSG_MOVE_10MM                       "Mugitu 10mm"
49 43
 #define MSG_SPEED                           "Abiadura"
50 44
 #define MSG_NOZZLE                          "Pita"
51
-#define MSG_NOZZLE1                         "Pita2"
52
-#define MSG_NOZZLE2                         "Pita3"
53 45
 #define MSG_BED                             "Ohea"
54 46
 #define MSG_FAN_SPEED                       "Haizagailua"
55 47
 #define MSG_FLOW                            "Fluxua"
56
-#define MSG_FLOW0                           "Fluxua 0"
57
-#define MSG_FLOW1                           "Fluxua 1"
58
-#define MSG_FLOW2                           "Fluxua 2"
59 48
 #define MSG_CONTROL                         "Kontrola"
60 49
 #define MSG_MIN                             " \002 Min"
61 50
 #define MSG_MAX                             " \002 Max"
@@ -130,8 +119,6 @@
130 119
 #define MSG_BABYSTEP_Z                      "Babystep Z"
131 120
 #define MSG_ENDSTOP_ABORT                   "Endstop deuseztat"
132 121
 
133
-#define MSG_RECTRACT                        "Atzera eragin"
134
-
135 122
 #ifdef DELTA_CALIBRATION_MENU
136 123
     #define MSG_DELTA_CALIBRATE             "Delta Calibration"
137 124
     #define MSG_DELTA_CALIBRATE_X           "Calibrate X"

+ 4
- 17
Marlin/language_fi.h Ver fichero

@@ -18,17 +18,13 @@
18 18
 #define MSG_SET_HOME_OFFSETS                "Set home offsets"
19 19
 #define MSG_SET_ORIGIN                      "Aseta origo"
20 20
 #define MSG_PREHEAT_PLA                     "Esilammita PLA"
21
-#define MSG_PREHEAT_PLA0                    "Esilammita PLA 1"
22
-#define MSG_PREHEAT_PLA1                    "Esilammita PLA 2"
23
-#define MSG_PREHEAT_PLA2                    "Esilammita PLA 3"
24
-#define MSG_PREHEAT_PLA012                  "Esila. PLA Kaikki"
21
+#define MSG_PREHEAT_PLA_N                   "Esilammita PLA "
22
+#define MSG_PREHEAT_PLA_ALL                 "Esila. PLA Kaikki"
25 23
 #define MSG_PREHEAT_PLA_BEDONLY             "Esila. PLA Alusta"
26 24
 #define MSG_PREHEAT_PLA_SETTINGS            "Esilamm. PLA konf"
27 25
 #define MSG_PREHEAT_ABS                     "Esilammita ABS"
28
-#define MSG_PREHEAT_ABS0                    "Esilammita ABS 1"
29
-#define MSG_PREHEAT_ABS1                    "Esilammita ABS 2"
30
-#define MSG_PREHEAT_ABS2                    "Esilammita ABS 3"
31
-#define MSG_PREHEAT_ABS012                  "Esila. ABS Kaikki"
26
+#define MSG_PREHEAT_ABS_N                   "Esilammita ABS "
27
+#define MSG_PREHEAT_ABS_ALL                 "Esila. ABS Kaikki"
32 28
 #define MSG_PREHEAT_ABS_BEDONLY             "Esila. ABS Alusta"
33 29
 #define MSG_PREHEAT_ABS_SETTINGS            "Esilamm. ABS konf"
34 30
 #define MSG_COOLDOWN                        "Jaahdyta"
@@ -41,21 +37,14 @@
41 37
 #define MSG_MOVE_Y                          "Move Y"
42 38
 #define MSG_MOVE_Z                          "Move Z"
43 39
 #define MSG_MOVE_E                          "Extruder"
44
-#define MSG_MOVE_E1                         "Extruder2"
45
-#define MSG_MOVE_E2                         "Extruder3"
46 40
 #define MSG_MOVE_01MM                       "Move 0.1mm"
47 41
 #define MSG_MOVE_1MM                        "Move 1mm"
48 42
 #define MSG_MOVE_10MM                       "Move 10mm"
49 43
 #define MSG_SPEED                           "Nopeus"
50 44
 #define MSG_NOZZLE                          "Suutin"
51
-#define MSG_NOZZLE1                         "Suutin2"
52
-#define MSG_NOZZLE2                         "Suutin3"
53 45
 #define MSG_BED                             "Alusta"
54 46
 #define MSG_FAN_SPEED                       "Tuul. nopeus"
55 47
 #define MSG_FLOW                            "Virtaus"
56
-#define MSG_FLOW0                           "Virtaus 0"
57
-#define MSG_FLOW1                           "Virtaus 1"
58
-#define MSG_FLOW2                           "Virtaus 2"
59 48
 #define MSG_CONTROL                         "Kontrolli"
60 49
 #define MSG_MIN                             " \002 Min"
61 50
 #define MSG_MAX                             " \002 Max"
@@ -130,8 +119,6 @@
130 119
 #define MSG_BABYSTEP_Z                      "Babystep Z"
131 120
 #define MSG_ENDSTOP_ABORT                   "Endstop abort"
132 121
 
133
-#define MSG_RECTRACT                        "Veda takaisin"
134
-
135 122
 #ifdef DELTA_CALIBRATION_MENU
136 123
     #define MSG_DELTA_CALIBRATE             "Delta Calibration"
137 124
     #define MSG_DELTA_CALIBRATE_X           "Calibrate X"

+ 4
- 18
Marlin/language_fr.h Ver fichero

@@ -18,17 +18,13 @@
18 18
 #define MSG_SET_HOME_OFFSETS                "Set home offsets"
19 19
 #define MSG_SET_ORIGIN                      "Regler origine"
20 20
 #define MSG_PREHEAT_PLA                     "Prechauffage PLA"
21
-#define MSG_PREHEAT_PLA0                    "Prechauff. PLA 1"
22
-#define MSG_PREHEAT_PLA1                    "Prechauff. PLA 2"
23
-#define MSG_PREHEAT_PLA2                    "Prechauff. PLA 3"
24
-#define MSG_PREHEAT_PLA012                  "Prech. PLA Tout"
21
+#define MSG_PREHEAT_PLA_N                   "Prechauff. PLA "
22
+#define MSG_PREHEAT_PLA_ALL                 "Prech. PLA Tout"
25 23
 #define MSG_PREHEAT_PLA_BEDONLY             "Prech. PLA Plateau"
26 24
 #define MSG_PREHEAT_PLA_SETTINGS            "Regl. prech. PLA"
27 25
 #define MSG_PREHEAT_ABS                     "Prechauffage ABS"
28
-#define MSG_PREHEAT_ABS0                    "Prechauff. ABS 1"
29
-#define MSG_PREHEAT_ABS1                    "Prechauff. ABS 2"
30
-#define MSG_PREHEAT_ABS2                    "Prechauff. ABS 3"
31
-#define MSG_PREHEAT_ABS012                  "Prech. ABS Tout"
26
+#define MSG_PREHEAT_ABS_N                   "Prechauff. ABS "
27
+#define MSG_PREHEAT_ABS_ALL                 "Prech. ABS Tout"
32 28
 #define MSG_PREHEAT_ABS_BEDONLY             "Prech. ABS Plateau"
33 29
 #define MSG_PREHEAT_ABS_SETTINGS            "Regl. prech. ABS"
34 30
 #define MSG_COOLDOWN                        "Refroidir"
@@ -41,21 +37,14 @@
41 37
 #define MSG_MOVE_Y                          "Move Y"
42 38
 #define MSG_MOVE_Z                          "Move Z"
43 39
 #define MSG_MOVE_E                          "Extruder"
44
-#define MSG_MOVE_E1                         "Extruder2"
45
-#define MSG_MOVE_E2                         "Extruder3"
46 40
 #define MSG_MOVE_01MM                       "Move 0.1mm"
47 41
 #define MSG_MOVE_1MM                        "Move 1mm"
48 42
 #define MSG_MOVE_10MM                       "Move 10mm"
49 43
 #define MSG_SPEED                           " Vitesse"
50 44
 #define MSG_NOZZLE                          "Buse"
51
-#define MSG_NOZZLE1                         "Buse2"
52
-#define MSG_NOZZLE2                         "Buse3"
53 45
 #define MSG_BED                             "Plateau"
54 46
 #define MSG_FAN_SPEED                       "Vite. ventilateur"
55 47
 #define MSG_FLOW                            "Flux"
56
-#define MSG_FLOW0                           "Flux 0"
57
-#define MSG_FLOW1                           "Flux 1"
58
-#define MSG_FLOW2                           "Flux 2"
59 48
 #define MSG_CONTROL                         "Controler"
60 49
 #define MSG_MIN                             " \002 Min"
61 50
 #define MSG_MAX                             " \002 Max"
@@ -130,9 +119,6 @@
130 119
 #define MSG_BABYSTEP_Z                      "Babystep Z"
131 120
 #define MSG_ENDSTOP_ABORT                   "Butee abandon"
132 121
 
133
-#define MSG_RECTRACT                        "Rectract"
134
-#define MSG_STEPPER_RELEASED                "RELACHE."
135
-
136 122
 #ifdef DELTA_CALIBRATION_MENU
137 123
     #define MSG_DELTA_CALIBRATE             "Delta Calibration"
138 124
     #define MSG_DELTA_CALIBRATE_X           "Calibrate X"

+ 42
- 54
Marlin/language_it.h Ver fichero

@@ -15,59 +15,48 @@
15 15
 #define MSG_AUTOSTART                       "Autostart"
16 16
 #define MSG_DISABLE_STEPPERS                "Disabilita Motori"
17 17
 #define MSG_AUTO_HOME                       "Auto Home"
18
-#define MSG_SET_HOME_OFFSETS                "Set home offsets"
18
+#define MSG_SET_HOME_OFFSETS                "Setta offset home"
19 19
 #define MSG_SET_ORIGIN                      "Imposta Origine"
20 20
 #define MSG_PREHEAT_PLA                     "Preriscalda PLA"
21
-#define MSG_PREHEAT_PLA0                    "Preriscalda PLA 1"
22
-#define MSG_PREHEAT_PLA1                    "Preriscalda PLA 2"
23
-#define MSG_PREHEAT_PLA2                    "Preriscalda PLA 3"
24
-#define MSG_PREHEAT_PLA012                  "Preris. PLA Tutto"
25
-#define MSG_PREHEAT_PLA_BEDONLY             "Preri. PLA Piatto"
26
-#define MSG_PREHEAT_PLA_SETTINGS            "Preris. PLA Conf"
21
+#define MSG_PREHEAT_PLA_N                   "Preriscalda PLA "
22
+#define MSG_PREHEAT_PLA_ALL                 "Prer. PLA Tutto"
23
+#define MSG_PREHEAT_PLA_BEDONLY             "Prer. PLA Piatto"
24
+#define MSG_PREHEAT_PLA_SETTINGS            "Config. prer. PLA"
27 25
 #define MSG_PREHEAT_ABS                     "Preriscalda ABS"
28
-#define MSG_PREHEAT_ABS0                    "Preriscalda ABS 1"
29
-#define MSG_PREHEAT_ABS1                    "Preriscalda ABS 2"
30
-#define MSG_PREHEAT_ABS2                    "Preriscalda ABS 3"
31
-#define MSG_PREHEAT_ABS012                  "Preris. ABS Tutto"
32
-#define MSG_PREHEAT_ABS_BEDONLY             "Preri. ABS Piatto"
33
-#define MSG_PREHEAT_ABS_SETTINGS            "Preris. ABS Conf"
26
+#define MSG_PREHEAT_ABS_N                   "Preriscalda ABS "
27
+#define MSG_PREHEAT_ABS_ALL                 "Prer. ABS Tutto"
28
+#define MSG_PREHEAT_ABS_BEDONLY             "Prer. ABS Piatto"
29
+#define MSG_PREHEAT_ABS_SETTINGS            "Config. prer. ABS"
34 30
 #define MSG_COOLDOWN                        "Raffredda"
35
-#define MSG_SWITCH_PS_ON                    "Switch Power On"
36
-#define MSG_SWITCH_PS_OFF                   "Switch Power Off"
31
+#define MSG_SWITCH_PS_ON                    "Accendi aliment."
32
+#define MSG_SWITCH_PS_OFF                   "Spegni aliment."
37 33
 #define MSG_EXTRUDE                         "Estrudi"
38 34
 #define MSG_RETRACT                         "Ritrai"
39 35
 #define MSG_MOVE_AXIS                       "Muovi Asse"
40
-#define MSG_MOVE_X                          "Move X"
41
-#define MSG_MOVE_Y                          "Move Y"
42
-#define MSG_MOVE_Z                          "Move Z"
43
-#define MSG_MOVE_E                          "Extruder"
44
-#define MSG_MOVE_E1                         "Extruder2"
45
-#define MSG_MOVE_E2                         "Extruder3"
46
-#define MSG_MOVE_01MM                       "Move 0.1mm"
47
-#define MSG_MOVE_1MM                        "Move 1mm"
48
-#define MSG_MOVE_10MM                       "Move 10mm"
36
+#define MSG_MOVE_X                          "Muovi X"
37
+#define MSG_MOVE_Y                          "Muovi Y"
38
+#define MSG_MOVE_Z                          "Muovi Z"
39
+#define MSG_MOVE_E                          "Estrusore"
40
+#define MSG_MOVE_01MM                       "Muovi di 0.1mm"
41
+#define MSG_MOVE_1MM                        "Muovi di   1mm"
42
+#define MSG_MOVE_10MM                       "Muovi di  10mm"
49 43
 #define MSG_SPEED                           "Velcità"
50 44
 #define MSG_NOZZLE                          "Ugello"
51
-#define MSG_NOZZLE1                         "Ugello2"
52
-#define MSG_NOZZLE2                         "Ugello3"
53 45
 #define MSG_BED                             "Piatto"
54 46
 #define MSG_FAN_SPEED                       "Ventola"
55 47
 #define MSG_FLOW                            "Flusso"
56
-#define MSG_FLOW0                           "Flusso 0"
57
-#define MSG_FLOW1                           "Flusso 1"
58
-#define MSG_FLOW2                           "Flusso 2"
59 48
 #define MSG_CONTROL                         "Controllo"
60
-#define MSG_MIN                             " \002 Min:"
61
-#define MSG_MAX                             " \002 Max:"
62
-#define MSG_FACTOR                          " \002 Fact:"
49
+#define MSG_MIN                             " \002 Min"
50
+#define MSG_MAX                             " \002 Max"
51
+#define MSG_FACTOR                          " \002 Fact"
63 52
 #define MSG_AUTOTEMP                        "Autotemp"
64
-#define MSG_ON                              "On "
65
-#define MSG_OFF                             "Off"
53
+#define MSG_ON                              "ON "
54
+#define MSG_OFF                             "OFF"
66 55
 #define MSG_PID_P                           "PID-P"
67 56
 #define MSG_PID_I                           "PID-I"
68 57
 #define MSG_PID_D                           "PID-D"
69 58
 #define MSG_PID_C                           "PID-C"
70
-#define MSG_ACC                             "Accel"
59
+#define MSG_ACC                             "Accel."
71 60
 #define MSG_VXY_JERK                        "Vxy-jerk"
72 61
 #define MSG_VZ_JERK                         "Vz-jerk"
73 62
 #define MSG_VE_JERK                         "Ve-jerk"
@@ -87,11 +76,12 @@
87 76
 #define MSG_TEMPERATURE                     "Temperatura"
88 77
 #define MSG_MOTION                          "Movimento"
89 78
 #define MSG_VOLUMETRIC                      "Filament"
90
-#define MSG_VOLUMETRIC_ENABLED		        "E in mm3"
91
-#define MSG_FILAMENT_SIZE_EXTRUDER_0        "Fil. Dia. 1"
92
-#define MSG_FILAMENT_SIZE_EXTRUDER_1        "Fil. Dia. 2"
93
-#define MSG_FILAMENT_SIZE_EXTRUDER_2        "Fil. Dia. 3"
94
-#define MSG_CONTRAST                        "LCD contrast"
79
+#define MSG_VOLUMETRIC_ENABLED		          "E in mm³"
80
+#define MSG_FILAMENT_SIZE_EXTRUDER_0        "Diam. filo 1"
81
+#define MSG_FILAMENT_SIZE_EXTRUDER_1        "Diam. filo 2"
82
+#define MSG_FILAMENT_SIZE_EXTRUDER_2        "Diam. filo 3"
83
+#define MSG_FILAMENT_SIZE_EXTRUDER_3        "Diam. filo 4"
84
+#define MSG_CONTRAST                        "Contrasto LCD"
95 85
 #define MSG_STORE_EPROM                     "Salva in EEPROM"
96 86
 #define MSG_LOAD_EPROM                      "Carica da EEPROM"
97 87
 #define MSG_RESTORE_FAILSAFE                "Impostaz. default"
@@ -100,17 +90,17 @@
100 90
 #define MSG_PREPARE                         "Prepara"
101 91
 #define MSG_TUNE                            "Adatta"
102 92
 #define MSG_PAUSE_PRINT                     "Pausa"
103
-#define MSG_RESUME_PRINT                    "Riprendi Stampa"
104
-#define MSG_STOP_PRINT                      "Arresta Stampa"
93
+#define MSG_RESUME_PRINT                    "Riprendi stampa"
94
+#define MSG_STOP_PRINT                      "Arresta stampa"
105 95
 #define MSG_CARD_MENU                       "SD Card Menu"
106 96
 #define MSG_NO_CARD                         "No SD Card"
107 97
 #define MSG_DWELL                           "Sospensione..."
108 98
 #define MSG_USERWAIT                        "Attendi Utente..."
109 99
 #define MSG_RESUMING                        "Riprendi Stampa"
110
-#define MSG_PRINT_ABORTED                   "Print aborted"
111
-#define MSG_NO_MOVE                         "Nessun Movimento."
112
-#define MSG_KILLED                          "UCCISO. "
113
-#define MSG_STOPPED                         "ARRESTATO. "
100
+#define MSG_PRINT_ABORTED                   "Stampa abortita"
101
+#define MSG_NO_MOVE                         "Nessun Movimento"
102
+#define MSG_KILLED                          "UCCISO "
103
+#define MSG_STOPPED                         "ARRESTATO "
114 104
 #define MSG_CONTROL_RETRACT                 "Ritrai mm"
115 105
 #define MSG_CONTROL_RETRACT_SWAP            "Scamb. Ritrai mm"
116 106
 #define MSG_CONTROL_RETRACTF                "Ritrai  V"
@@ -128,16 +118,14 @@
128 118
 #define MSG_BABYSTEP_X                      "Babystep X"
129 119
 #define MSG_BABYSTEP_Y                      "Babystep Y"
130 120
 #define MSG_BABYSTEP_Z                      "Babystep Z"
131
-#define MSG_ENDSTOP_ABORT                   "Endstop abort"
132
-
133
-#define MSG_RECTRACT                        "Ritrai"
121
+#define MSG_ENDSTOP_ABORT                   "Finecorsa abort"
134 122
 
135 123
 #ifdef DELTA_CALIBRATION_MENU
136
-    #define MSG_DELTA_CALIBRATE             "Delta Calibration"
137
-    #define MSG_DELTA_CALIBRATE_X           "Calibrate X"
138
-    #define MSG_DELTA_CALIBRATE_Y           "Calibrate Y"
139
-    #define MSG_DELTA_CALIBRATE_Z           "Calibrate Z"
140
-    #define MSG_DELTA_CALIBRATE_CENTER      "Calibrate Center"
124
+    #define MSG_DELTA_CALIBRATE             "Calibraz. Delta"
125
+    #define MSG_DELTA_CALIBRATE_X           "Calibra X"
126
+    #define MSG_DELTA_CALIBRATE_Y           "Calibra Y"
127
+    #define MSG_DELTA_CALIBRATE_Z           "Calibra Z"
128
+    #define MSG_DELTA_CALIBRATE_CENTER      "Calibra Center"
141 129
 #endif // DELTA_CALIBRATION_MENU
142 130
 
143 131
 #endif // LANGUAGE_IT_H

+ 4
- 17
Marlin/language_nl.h Ver fichero

@@ -18,17 +18,13 @@
18 18
 #define MSG_SET_HOME_OFFSETS                "Set home offsets"
19 19
 #define MSG_SET_ORIGIN                      "Nulpunt instellen"
20 20
 #define MSG_PREHEAT_PLA                     "PLA voorverwarmen"
21
-#define MSG_PREHEAT_PLA0                    "PLA voorverw. 0"
22
-#define MSG_PREHEAT_PLA1                    "PLA voorverw. 1"
23
-#define MSG_PREHEAT_PLA2                    "PLA voorverw. 2"
24
-#define MSG_PREHEAT_PLA012                  "PLA voorverw. aan"
21
+#define MSG_PREHEAT_PLA_N                   "PLA voorverw. "
22
+#define MSG_PREHEAT_PLA_ALL                 "PLA voorverw. aan"
25 23
 #define MSG_PREHEAT_PLA_BEDONLY             "PLA voorverw. Bed"
26 24
 #define MSG_PREHEAT_PLA_SETTINGS            "PLA verw. conf"
27 25
 #define MSG_PREHEAT_ABS                     "ABS voorverwarmen"
28
-#define MSG_PREHEAT_ABS0                    "ABS voorverw. 0"
29
-#define MSG_PREHEAT_ABS1                    "ABS voorverw. 1"
30
-#define MSG_PREHEAT_ABS2                    "ABS voorverw. 2"
31
-#define MSG_PREHEAT_ABS012                  "ABS voorverw. aan"
26
+#define MSG_PREHEAT_ABS_N                   "ABS voorverw. "
27
+#define MSG_PREHEAT_ABS_ALL                 "ABS voorverw. aan"
32 28
 #define MSG_PREHEAT_ABS_BEDONLY             "ABS voorverw. Bed"
33 29
 #define MSG_PREHEAT_ABS_SETTINGS            "ABS verw. conf"
34 30
 #define MSG_COOLDOWN                        "Afkoelen"
@@ -41,21 +37,14 @@
41 37
 #define MSG_MOVE_Y                          "Verplaats Y"
42 38
 #define MSG_MOVE_Z                          "Verplaats Z"
43 39
 #define MSG_MOVE_E                          "Extruder"
44
-#define MSG_MOVE_E1                         "Extruder2"
45
-#define MSG_MOVE_E2                         "Extruder3"
46 40
 #define MSG_MOVE_01MM                       "Verplaats 0.1mm"
47 41
 #define MSG_MOVE_1MM                        "Verplaats 1mm"
48 42
 #define MSG_MOVE_10MM                       "Verplaats 10mm"
49 43
 #define MSG_SPEED                           "Snelheid"
50 44
 #define MSG_NOZZLE                          "Nozzle"
51
-#define MSG_NOZZLE1                         "Nozzle2"
52
-#define MSG_NOZZLE2                         "Nozzle3"
53 45
 #define MSG_BED                             "Bed"
54 46
 #define MSG_FAN_SPEED                       "Fan snelheid"
55 47
 #define MSG_FLOW                            "Flow"
56
-#define MSG_FLOW0                           "Flow 0"
57
-#define MSG_FLOW1                           "Flow 1"
58
-#define MSG_FLOW2                           "Flow 2"
59 48
 #define MSG_CONTROL                         "Control"
60 49
 #define MSG_MIN                             " \002 Min"
61 50
 #define MSG_MAX                             " \002 Max"
@@ -130,8 +119,6 @@
130 119
 #define MSG_BABYSTEP_Z                      "Babystap Z"
131 120
 #define MSG_ENDSTOP_ABORT                   "Endstop afbr."
132 121
 
133
-#define MSG_RECTRACT                        "Terugtrekken"
134
-
135 122
 #ifdef DELTA_CALIBRATION_MENU
136 123
     #define MSG_DELTA_CALIBRATE             "Delta Calibration"
137 124
     #define MSG_DELTA_CALIBRATE_X           "Calibrate X"

+ 5
- 19
Marlin/language_pl.h Ver fichero

@@ -18,17 +18,13 @@
18 18
 #define MSG_SET_HOME_OFFSETS                "Set home offsets"
19 19
 #define MSG_SET_ORIGIN                      "Ustaw punkt zero"
20 20
 #define MSG_PREHEAT_PLA                     "Rozgrzej PLA"
21
-#define MSG_PREHEAT_PLA0                    "Rozgrzej PLA 1"
22
-#define MSG_PREHEAT_PLA1                    "Rozgrzej PLA 2"
23
-#define MSG_PREHEAT_PLA2                    "Rozgrzej PLA 3"
24
-#define MSG_PREHEAT_PLA012                  "Roz. PLA Wszystko"
21
+#define MSG_PREHEAT_PLA_N                   "Rozgrzej PLA "
22
+#define MSG_PREHEAT_PLA_ALL                 "Roz. PLA Wszystko"
25 23
 #define MSG_PREHEAT_PLA_BEDONLY             "Rozgrzej PLA Loze"
26 24
 #define MSG_PREHEAT_PLA_SETTINGS            "Ustaw. rozg. PLA"
27 25
 #define MSG_PREHEAT_ABS                     "Rozgrzej ABS"
28
-#define MSG_PREHEAT_ABS0                    "Rozgrzej ABS 1"
29
-#define MSG_PREHEAT_ABS1                    "Rozgrzej ABS 2"
30
-#define MSG_PREHEAT_ABS2                    "Rozgrzej ABS 3"
31
-#define MSG_PREHEAT_ABS012                  "Roz. ABS Wszystko"
26
+#define MSG_PREHEAT_ABS_N                   "Rozgrzej ABS "
27
+#define MSG_PREHEAT_ABS_ALL                 "Roz. ABS Wszystko"
32 28
 #define MSG_PREHEAT_ABS_BEDONLY             "Rozgrzej ABS Loze"
33 29
 #define MSG_PREHEAT_ABS_SETTINGS            "Ustaw. rozg. ABS"
34 30
 #define MSG_COOLDOWN                        "Chlodzenie"
@@ -41,21 +37,14 @@
41 37
 #define MSG_MOVE_Y                          "Przesun w Y"
42 38
 #define MSG_MOVE_Z                          "Przesun w Z"
43 39
 #define MSG_MOVE_E                          "Ekstruzja (os E)"
44
-#define MSG_MOVE_E1                         "Extruder2"
45
-#define MSG_MOVE_E2                         "Extruder3"
46 40
 #define MSG_MOVE_01MM                       "Przesuwaj co .1mm"
47 41
 #define MSG_MOVE_1MM                        "Przesuwaj co 1mm"
48 42
 #define MSG_MOVE_10MM                       "Przesuwaj co 10mm"
49 43
 #define MSG_SPEED                           "Predkosc"
50 44
 #define MSG_NOZZLE                          "Dysza"
51
-#define MSG_NOZZLE1                         "Dysza 2"
52
-#define MSG_NOZZLE2                         "Dysza 3"
53 45
 #define MSG_BED                             "Loze"
54 46
 #define MSG_FAN_SPEED                       "Obroty wiatraka"
55 47
 #define MSG_FLOW                            "Przeplyw"
56
-#define MSG_FLOW0                           "Przeplyw 0"
57
-#define MSG_FLOW1                           "Przeplyw 1"
58
-#define MSG_FLOW2                           "Przeplyw 2"
59 48
 #define MSG_CONTROL                         "Ustawienia"
60 49
 #define MSG_MIN                             " \002 Min"
61 50
 #define MSG_MAX                             " \002 Max"
@@ -114,7 +103,7 @@
114 103
 #define MSG_CONTROL_RETRACT                 "Wycofaj mm"
115 104
 #define MSG_CONTROL_RETRACT_SWAP            "Z Wycof. mm"
116 105
 #define MSG_CONTROL_RETRACTF                "Wycofaj  V"
117
-#define MSG_CONTROL_RETRACT_ZLIFT           "Skok Z mm:"
106
+#define MSG_CONTROL_RETRACT_ZLIFT           "Skok Z mm"
118 107
 #define MSG_CONTROL_RETRACT_RECOVER         "Cof. wycof. +mm"
119 108
 #define MSG_CONTROL_RETRACT_RECOVER_SWAP    "Z Cof. wyc. +mm"
120 109
 #define MSG_CONTROL_RETRACT_RECOVERF        "Cof. wycof.  V"
@@ -130,9 +119,6 @@
130 119
 #define MSG_BABYSTEP_Z                      "Babystep Z"
131 120
 #define MSG_ENDSTOP_ABORT                   "Blad wyl. kranc."
132 121
 
133
-#define MSG_RECTRACT                        "Wycofanie"
134
-#define MSG_STEPPER_RELEASED                "Zwolniony."
135
-
136 122
 #ifdef DELTA_CALIBRATION_MENU
137 123
     #define MSG_DELTA_CALIBRATE             "Delta Calibration"
138 124
     #define MSG_DELTA_CALIBRATE_X           "Calibrate X"

+ 130
- 0
Marlin/language_pt-br.h Ver fichero

@@ -0,0 +1,130 @@
1
+/**
2
+ * Portuguese (Brazil)
3
+ *
4
+ * LCD Menu Messages
5
+ * Please note these are limited to 17 characters!
6
+ *
7
+ */
8
+#ifndef LANGUAGE_PT_BR_H
9
+#define LANGUAGE_PT_BR_H
10
+
11
+#define WELCOME_MSG							MACHINE_NAME " pronto."
12
+#define MSG_SD_INSERTED                     "Cartao inserido"
13
+#define MSG_SD_REMOVED                      "Cartao removido"
14
+#define MSG_MAIN                            " Menu principal \003"
15
+#define MSG_AUTOSTART                       "Autostart"
16
+#define MSG_DISABLE_STEPPERS                " Apagar motores"
17
+#define MSG_AUTO_HOME                       "Ir para origen"
18
+#define MSG_SET_HOME_OFFSETS                "Set home offsets"
19
+#define MSG_SET_ORIGIN                      "Estabelecer orig."
20
+#define MSG_PREHEAT_PLA                     "Pre-aquecer PLA"
21
+#define MSG_PREHEAT_PLA_N                   "Pre-aquecer PLA "
22
+#define MSG_PREHEAT_PLA_ALL                 "Pre-aq. PLA Tudo"
23
+#define MSG_PREHEAT_PLA_BEDONLY             "Pre-aq. PLA \002Base"
24
+#define MSG_PREHEAT_PLA_SETTINGS            "PLA setting"
25
+#define MSG_PREHEAT_ABS                     "Pre-aquecer ABS"
26
+#define MSG_PREHEAT_ABS_N                   "Pre-aquecer ABS "
27
+#define MSG_PREHEAT_ABS_ALL                 "Pre-aq. ABS Tudo"
28
+#define MSG_PREHEAT_ABS_BEDONLY             "Pre-aq. ABS \002Base"
29
+#define MSG_PREHEAT_ABS_SETTINGS            "ABS setting"
30
+#define MSG_COOLDOWN                        "Esfriar"
31
+#define MSG_SWITCH_PS_ON                    "Switch Power On"
32
+#define MSG_SWITCH_PS_OFF                   "Switch Power Off"
33
+#define MSG_EXTRUDE                         "Extrudar"
34
+#define MSG_RETRACT                         "Retrair"
35
+#define MSG_MOVE_AXIS                       "Mover eixo      \x7E"
36
+#define MSG_MOVE_X                          "Move X"
37
+#define MSG_MOVE_Y                          "Move Y"
38
+#define MSG_MOVE_Z                          "Move Z"
39
+#define MSG_MOVE_E                          "Extruder"
40
+#define MSG_MOVE_01MM                       "Move 0.1mm"
41
+#define MSG_MOVE_1MM                        "Move 1mm"
42
+#define MSG_MOVE_10MM                       "Move 10mm"
43
+#define MSG_SPEED                           "Velocidade"
44
+#define MSG_NOZZLE                          "\002Nozzle"
45
+#define MSG_BED                             "\002Base"
46
+#define MSG_FAN_SPEED                       "Velocidade vento."
47
+#define MSG_FLOW                            "Fluxo"
48
+#define MSG_CONTROL                         "Controle \003"
49
+#define MSG_MIN                             "\002 Min"
50
+#define MSG_MAX                             "\002 Max"
51
+#define MSG_FACTOR                          "\002 Fact"
52
+#define MSG_AUTOTEMP                        "Autotemp"
53
+#define MSG_ON                              "On "
54
+#define MSG_OFF                             "Off"
55
+#define MSG_PID_P                           "PID-P"
56
+#define MSG_PID_I                           "PID-I"
57
+#define MSG_PID_D                           "PID-D"
58
+#define MSG_PID_C                           "PID-C"
59
+#define MSG_ACC                             "Acc"
60
+#define MSG_VXY_JERK                        "Vxy-jerk"
61
+#define MSG_VZ_JERK                         "Vz-jerk"
62
+#define MSG_VE_JERK                         "Ve-jerk"
63
+#define MSG_VMAX                            " Vmax "
64
+#define MSG_X                               "x"
65
+#define MSG_Y                               "y"
66
+#define MSG_Z                               "z"
67
+#define MSG_E                               "e"
68
+#define MSG_VMIN                            "Vmin"
69
+#define MSG_VTRAV_MIN                       "VTrav min"
70
+#define MSG_AMAX                            "Amax "
71
+#define MSG_A_RETRACT                       "A-retract"
72
+#define MSG_XSTEPS                          "Xpasso/mm"
73
+#define MSG_YSTEPS                          "Ypasso/mm"
74
+#define MSG_ZSTEPS                          "Zpasso/mm"
75
+#define MSG_ESTEPS                          "Epasso/mm"
76
+#define MSG_TEMPERATURE                     "Temperatura"
77
+#define MSG_MOTION                          "Movimento"
78
+#define MSG_VOLUMETRIC                      "Filament"
79
+#define MSG_VOLUMETRIC_ENABLED		        "E in mm3"
80
+#define MSG_FILAMENT_SIZE_EXTRUDER_0        "Fil. Dia. 1"
81
+#define MSG_FILAMENT_SIZE_EXTRUDER_1        "Fil. Dia. 2"
82
+#define MSG_FILAMENT_SIZE_EXTRUDER_2        "Fil. Dia. 3"
83
+#define MSG_CONTRAST                        "Contrast"
84
+#define MSG_STORE_EPROM                     "Guardar memoria"
85
+#define MSG_LOAD_EPROM                      "Carregar memoria"
86
+#define MSG_RESTORE_FAILSAFE                "Rest. de emergen."
87
+#define MSG_REFRESH                         "\004Recarregar"
88
+#define MSG_WATCH                           "Monitorar   \003"
89
+#define MSG_PREPARE                         "Preparar \x7E"
90
+#define MSG_TUNE                            "Tune    \x7E"
91
+#define MSG_PAUSE_PRINT                     "Pausar impressao"
92
+#define MSG_RESUME_PRINT                    "Resumir impressao"
93
+#define MSG_STOP_PRINT                      "Parar impressao"
94
+#define MSG_CARD_MENU                       "Menu cartao SD"
95
+#define MSG_NO_CARD                         "Sem cartao SD"
96
+#define MSG_DWELL                           "Repouso..."
97
+#define MSG_USERWAIT                        "Esperando ordem"
98
+#define MSG_RESUMING                        "Resuming print"
99
+#define MSG_PRINT_ABORTED                   "Print aborted"
100
+#define MSG_NO_MOVE                         "Sem movimento"
101
+#define MSG_KILLED                          "PARADA DE EMERG."
102
+#define MSG_STOPPED                         "PARADA. "
103
+#define MSG_CONTROL_RETRACT                 " Retrair mm"
104
+#define MSG_CONTROL_RETRACT_SWAP            "Troca Retrair mm"
105
+#define MSG_CONTROL_RETRACTF                " Retrair  V"
106
+#define MSG_CONTROL_RETRACT_ZLIFT           " Levantar mm"
107
+#define MSG_CONTROL_RETRACT_RECOVER         " DesRet +mm"
108
+#define MSG_CONTROL_RETRACT_RECOVER_SWAP    "Troca DesRet +mm"
109
+#define MSG_CONTROL_RETRACT_RECOVERF        " DesRet  V"
110
+#define MSG_AUTORETRACT                     " AutoRetr."
111
+#define MSG_FILAMENTCHANGE                  "Change filament"
112
+#define MSG_INIT_SDCARD                     "Init. SD-Card"
113
+#define MSG_CNG_SDCARD                      "Change SD-Card"
114
+#define MSG_ZPROBE_OUT                      "Son. fora da mesa"
115
+#define MSG_POSITION_UNKNOWN                "XY antes de Z"
116
+#define MSG_ZPROBE_ZOFFSET                  "Z Offset"
117
+#define MSG_BABYSTEP_X                      "Babystep X"
118
+#define MSG_BABYSTEP_Y                      "Babystep Y"
119
+#define MSG_BABYSTEP_Z                      "Babystep Z"
120
+#define MSG_ENDSTOP_ABORT                   "Endstop abort"
121
+
122
+#ifdef DELTA_CALIBRATION_MENU
123
+    #define MSG_DELTA_CALIBRATE             "Delta Calibration"
124
+    #define MSG_DELTA_CALIBRATE_X           "Calibrate X"
125
+    #define MSG_DELTA_CALIBRATE_Y           "Calibrate Y"
126
+    #define MSG_DELTA_CALIBRATE_Z           "Calibrate Z"
127
+    #define MSG_DELTA_CALIBRATE_CENTER      "Calibrate Center"
128
+#endif // DELTA_CALIBRATION_MENU
129
+
130
+#endif // LANGUAGE_PT_BR_H

+ 81
- 99
Marlin/language_pt.h Ver fichero

@@ -8,141 +8,123 @@
8 8
 #ifndef LANGUAGE_PT_H
9 9
 #define LANGUAGE_PT_H
10 10
 
11
-#define WELCOME_MSG							MACHINE_NAME " pronto."
11
+#define WELCOME_MSG                         MACHINE_NAME " pronto."
12 12
 #define MSG_SD_INSERTED                     "Cartao inserido"
13 13
 #define MSG_SD_REMOVED                      "Cartao removido"
14 14
 #define MSG_MAIN                            " Menu principal \003"
15 15
 #define MSG_AUTOSTART                       "Autostart"
16
-#define MSG_DISABLE_STEPPERS                " Apagar motores"
17
-#define MSG_AUTO_HOME                       "Ir para origen"
18
-#define MSG_SET_HOME_OFFSETS                "Set home offsets"
16
+#define MSG_DISABLE_STEPPERS                " Desligar motores"
17
+#define MSG_AUTO_HOME                       "Ir para home"
18
+#define MSG_SET_HOME_OFFSETS                "Def. home offsets"
19 19
 #define MSG_SET_ORIGIN                      "Estabelecer orig."
20 20
 #define MSG_PREHEAT_PLA                     "Pre-aquecer PLA"
21
-#define MSG_PREHEAT_PLA0                    " pre-aquecer PLA 1"
22
-#define MSG_PREHEAT_PLA1                    " pre-aquecer PLA 2"
23
-#define MSG_PREHEAT_PLA2                    " pre-aquecer PLA 3"
24
-#define MSG_PREHEAT_PLA012                  " pre-aq. PLA Tudo"
25
-#define MSG_PREHEAT_PLA_BEDONLY             " pre-aq. PLA \002Base"
26
-#define MSG_PREHEAT_PLA_SETTINGS            "PLA setting"
21
+#define MSG_PREHEAT_PLA_N                   "Pre-aquecer PLA "
22
+#define MSG_PREHEAT_PLA_ALL                 "Pre-aq. PLA Tudo"
23
+#define MSG_PREHEAT_PLA_BEDONLY             "Pre-aq. PLA \002Base"
24
+#define MSG_PREHEAT_PLA_SETTINGS            "PLA definicoes"
27 25
 #define MSG_PREHEAT_ABS                     "Pre-aquecer ABS"
28
-#define MSG_PREHEAT_ABS0                    " pre-aquecer ABS 1"
29
-#define MSG_PREHEAT_ABS1                    " pre-aquecer ABS 2"
30
-#define MSG_PREHEAT_ABS2                    " pre-aquecer ABS 3"
31
-#define MSG_PREHEAT_ABS012                  " pre-aq. ABS Tudo"
32
-#define MSG_PREHEAT_ABS_BEDONLY             " pre-aq. ABS \002Base"
33
-#define MSG_PREHEAT_ABS_SETTINGS            "ABS setting"
34
-#define MSG_COOLDOWN                        "Esfriar"
35
-#define MSG_SWITCH_PS_ON                    "Switch Power On"
36
-#define MSG_SWITCH_PS_OFF                   "Switch Power Off"
37
-#define MSG_EXTRUDE                         "Extrudar"
26
+#define MSG_PREHEAT_ABS_N                   "Pre-aquecer ABS "
27
+#define MSG_PREHEAT_ABS_ALL                 "Pre-aq. ABS Tudo"
28
+#define MSG_PREHEAT_ABS_BEDONLY             "Pre-aq. ABS \002Base"
29
+#define MSG_PREHEAT_ABS_SETTINGS            "ABS definicoes"
30
+#define MSG_COOLDOWN                        "Arrefecer"
31
+#define MSG_SWITCH_PS_ON                    "Ligar"
32
+#define MSG_SWITCH_PS_OFF                   "Desligar"
33
+#define MSG_EXTRUDE                         "Extrudir"
38 34
 #define MSG_RETRACT                         "Retrair"
39 35
 #define MSG_MOVE_AXIS                       "Mover eixo      \x7E"
40
-#define MSG_MOVE_X                          "Move X"
41
-#define MSG_MOVE_Y                          "Move Y"
42
-#define MSG_MOVE_Z                          "Move Z"
43
-#define MSG_MOVE_E                          "Extruder"
44
-#define MSG_MOVE_E1                         "Extruder2"
45
-#define MSG_MOVE_E2                         "Extruder3"
46
-#define MSG_MOVE_01MM                       "Move 0.1mm"
47
-#define MSG_MOVE_1MM                        "Move 1mm"
48
-#define MSG_MOVE_10MM                       "Move 10mm"
49
-#define MSG_SPEED                           "Velocidade:"
50
-#define MSG_NOZZLE                          "\002Nozzle:"
51
-#define MSG_NOZZLE1                         "\002Nozzle2:"
52
-#define MSG_NOZZLE2                         "\002Nozzle3:"
53
-#define MSG_BED                             "\002Base:"
54
-#define MSG_FAN_SPEED                       "Velocidade vento."
55
-#define MSG_FLOW                            "Fluxo:"
56
-#define MSG_FLOW0                           "Fluxo0:"
57
-#define MSG_FLOW1                           "Fluxo1:"
58
-#define MSG_FLOW2                           "Fluxo2:"
59
-#define MSG_CONTROL                         "Controle \003"
60
-#define MSG_MIN                             "\002 Min:"
61
-#define MSG_MAX                             "\002 Max:"
62
-#define MSG_FACTOR                          "\002 Fact:"
63
-#define MSG_AUTOTEMP                        "Autotemp:"
36
+#define MSG_MOVE_X                          "Mover X"
37
+#define MSG_MOVE_Y                          "Mover Y"
38
+#define MSG_MOVE_Z                          "Mover Z"
39
+#define MSG_MOVE_E                          "Extrusor"
40
+#define MSG_MOVE_01MM                       "Mover 0.1mm"
41
+#define MSG_MOVE_1MM                        "Mover 1mm"
42
+#define MSG_MOVE_10MM                       "Mover 10mm"
43
+#define MSG_SPEED                           "Velocidade"
44
+#define MSG_NOZZLE                          "\002Bico"
45
+#define MSG_BED                             "\002Base"
46
+#define MSG_FAN_SPEED                       "Velocidade do ar."
47
+#define MSG_FLOW                            "Fluxo"
48
+#define MSG_CONTROL                         "Controlo \003"
49
+#define MSG_MIN                             "\002 Min"
50
+#define MSG_MAX                             "\002 Max"
51
+#define MSG_FACTOR                          "\002 Fact"
52
+#define MSG_AUTOTEMP                        "Autotemp"
64 53
 #define MSG_ON                              "On "
65 54
 #define MSG_OFF                             "Off"
66
-#define MSG_PID_P                           "PID-P: "
67
-#define MSG_PID_I                           "PID-I: "
68
-#define MSG_PID_D                           "PID-D: "
69
-#define MSG_PID_C                           "PID-C: "
70
-#define MSG_ACC                             "Acc:"
71
-#define MSG_VXY_JERK                        "Vxy-jerk: "
55
+#define MSG_PID_P                           "PID-P"
56
+#define MSG_PID_I                           "PID-I"
57
+#define MSG_PID_D                           "PID-D"
58
+#define MSG_PID_C                           "PID-C"
59
+#define MSG_ACC                             "Acc"
60
+#define MSG_VXY_JERK                        "Vxy-jerk"
72 61
 #define MSG_VZ_JERK                         "Vz-jerk"
73 62
 #define MSG_VE_JERK                         "Ve-jerk"
74 63
 #define MSG_VMAX                            " Vmax "
75
-#define MSG_X                               "x:"
76
-#define MSG_Y                               "y:"
77
-#define MSG_Z                               "z:"
78
-#define MSG_E                               "e:"
79
-#define MSG_VMIN                            "Vmin:"
80
-#define MSG_VTRAV_MIN                       "VTrav min:"
64
+#define MSG_X                               "x"
65
+#define MSG_Y                               "y"
66
+#define MSG_Z                               "z"
67
+#define MSG_E                               "e"
68
+#define MSG_VMIN                            "Vmin"
69
+#define MSG_VTRAV_MIN                       "VTrav min"
81 70
 #define MSG_AMAX                            "Amax "
82
-#define MSG_A_RETRACT                       "A-retract:"
83
-#define MSG_XSTEPS                          "Xpasso/mm:"
84
-#define MSG_YSTEPS                          "Ypasso/mm:"
85
-#define MSG_ZSTEPS                          "Zpasso/mm:"
86
-#define MSG_ESTEPS                          "Epasso/mm:"
71
+#define MSG_A_RETRACT                       "A-retract"
72
+#define MSG_XSTEPS                          "Xpasso/mm"
73
+#define MSG_YSTEPS                          "Ypasso/mm"
74
+#define MSG_ZSTEPS                          "Zpasso/mm"
75
+#define MSG_ESTEPS                          "Epasso/mm"
87 76
 #define MSG_TEMPERATURE                     "Temperatura"
88 77
 #define MSG_MOTION                          "Movimento"
89
-#define MSG_VOLUMETRIC                      "Filament"
78
+#define MSG_VOLUMETRIC                      "Filamento"
90 79
 #define MSG_VOLUMETRIC_ENABLED		        "E in mm3"
91
-#define MSG_FILAMENT_SIZE_EXTRUDER_0        "Fil. Dia. 1"
92
-#define MSG_FILAMENT_SIZE_EXTRUDER_1        "Fil. Dia. 2"
93
-#define MSG_FILAMENT_SIZE_EXTRUDER_2        "Fil. Dia. 3"
94
-#define MSG_CONTRAST                        "Contrast"
95
-#define MSG_STORE_EPROM                     "Guardar memoria"
96
-#define MSG_LOAD_EPROM                      "Carregar memoria"
80
+#define MSG_FILAMENT_SIZE_EXTRUDER_0        "Fil. Diam. 1"
81
+#define MSG_FILAMENT_SIZE_EXTRUDER_1        "Fil. Diam. 2"
82
+#define MSG_FILAMENT_SIZE_EXTRUDER_2        "Fil. Diam. 3"
83
+#define MSG_CONTRAST                        "Contraste"
84
+#define MSG_STORE_EPROM                     "Guardar na memoria"
85
+#define MSG_LOAD_EPROM                      "Carregar da memoria"
97 86
 #define MSG_RESTORE_FAILSAFE                "Rest. de emergen."
98 87
 #define MSG_REFRESH                         "\004Recarregar"
99 88
 #define MSG_WATCH                           "Monitorar   \003"
100 89
 #define MSG_PREPARE                         "Preparar \x7E"
101
-#define MSG_TUNE                            "Tune    \x7E"
90
+#define MSG_TUNE                            "Afinar    \x7E"
102 91
 #define MSG_PAUSE_PRINT                     "Pausar impressao"
103 92
 #define MSG_RESUME_PRINT                    "Resumir impressao"
104 93
 #define MSG_STOP_PRINT                      "Parar impressao"
105 94
 #define MSG_CARD_MENU                       "Menu cartao SD"
106 95
 #define MSG_NO_CARD                         "Sem cartao SD"
107 96
 #define MSG_DWELL                           "Repouso..."
108
-#define MSG_USERWAIT                        "Esperando ordem"
109
-#define MSG_RESUMING                        "Resuming print"
110
-#define MSG_PRINT_ABORTED                   "Print aborted"
97
+#define MSG_USERWAIT                        "A espera de ordem"
98
+#define MSG_RESUMING                        "Resumir impressao"
99
+#define MSG_PRINT_ABORTED                   "Impr. Cancelada"
111 100
 #define MSG_NO_MOVE                         "Sem movimento"
112
-#define MSG_KILLED                          "PARADA DE EMERG."
113
-#define MSG_STOPPED                         "PARADA. "
114
-#define MSG_CONTROL_RETRACT                 " Retrair mm:"
115
-#define MSG_CONTROL_RETRACT_SWAP            "Troca Retrair mm:"
116
-#define MSG_CONTROL_RETRACTF                " Retrair  V:"
117
-#define MSG_CONTROL_RETRACT_ZLIFT           " Levantar mm:"
118
-#define MSG_CONTROL_RETRACT_RECOVER         " DesRet +mm:"
119
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP    "Troca DesRet +mm:"
120
-#define MSG_CONTROL_RETRACT_RECOVERF        " DesRet  V:"
121
-#define MSG_AUTORETRACT                     " AutoRetr.:"
122
-#define MSG_FILAMENTCHANGE                  "Change filament"
123
-#define MSG_INIT_SDCARD                     "Init. SD-Card"
124
-#define MSG_CNG_SDCARD                      "Change SD-Card"
125
-#define MSG_ZPROBE_OUT                      "Son. fora da mesa"
101
+#define MSG_KILLED                          "INTRRP. DE EMERG."
102
+#define MSG_STOPPED                         "PARADO. "
103
+#define MSG_CONTROL_RETRACT                 " Retrair mm"
104
+#define MSG_CONTROL_RETRACT_SWAP            "Troca Retrair mm"
105
+#define MSG_CONTROL_RETRACTF                " Retrair  V"
106
+#define MSG_CONTROL_RETRACT_ZLIFT           " Levantar mm"
107
+#define MSG_CONTROL_RETRACT_RECOVER         " DesRet +mm"
108
+#define MSG_CONTROL_RETRACT_RECOVER_SWAP    "Troca DesRet +mm"
109
+#define MSG_CONTROL_RETRACT_RECOVERF        " DesRet  V"
110
+#define MSG_AUTORETRACT                     " AutoRetr."
111
+#define MSG_FILAMENTCHANGE                  "Trocar filamento"
112
+#define MSG_INIT_SDCARD                     "Inic. SD-Card"
113
+#define MSG_CNG_SDCARD                      "Trocar SD-Card"
114
+#define MSG_ZPROBE_OUT                      "Sens. fora da Base"
126 115
 #define MSG_POSITION_UNKNOWN                "XY antes de Z"
127 116
 #define MSG_ZPROBE_ZOFFSET                  "Z Offset"
128 117
 #define MSG_BABYSTEP_X                      "Babystep X"
129 118
 #define MSG_BABYSTEP_Y                      "Babystep Y"
130 119
 #define MSG_BABYSTEP_Z                      "Babystep Z"
131
-#define MSG_ENDSTOP_ABORT                   "Endstop abort"
132
-
133
-#define MSG_RECTRACT                        "Retrair"
134
-#define MSG_MAIN_WIDE                       "Menu Principal  \003"
135
-#define MSG_PREPARE_ALT                     "Preparar \003"
136
-#define MSG_CONTROL_ARROW                   "Controle \x7E"
137
-#define MSG_RETRACT_ARROW                   "Retrair \x7E"
138
-#define MSG_STEPPER_RELEASED                "Lancado."
120
+#define MSG_ENDSTOP_ABORT                   "Endstop abort."
139 121
 
140 122
 #ifdef DELTA_CALIBRATION_MENU
141
-    #define MSG_DELTA_CALIBRATE             "Delta Calibration"
142
-    #define MSG_DELTA_CALIBRATE_X           "Calibrate X"
143
-    #define MSG_DELTA_CALIBRATE_Y           "Calibrate Y"
144
-    #define MSG_DELTA_CALIBRATE_Z           "Calibrate Z"
145
-    #define MSG_DELTA_CALIBRATE_CENTER      "Calibrate Center"
123
+    #define MSG_DELTA_CALIBRATE             "Delta Calibracao"
124
+    #define MSG_DELTA_CALIBRATE_X           "Calibrar X"
125
+    #define MSG_DELTA_CALIBRATE_Y           "Calibrar Y"
126
+    #define MSG_DELTA_CALIBRATE_Z           "Calibrar Z"
127
+    #define MSG_DELTA_CALIBRATE_CENTER      "Calibrar Centro"
146 128
 #endif // DELTA_CALIBRATION_MENU
147 129
 
148 130
 #endif // LANGUAGE_PT_H

+ 39
- 52
Marlin/language_ru.h Ver fichero

@@ -10,7 +10,7 @@
10 10
 
11 11
 #define LANGUAGE_RU
12 12
 
13
-#define WELCOME_MSG                         MACHINE_NAME "Готов."
13
+#define WELCOME_MSG                         MACHINE_NAME " Готов."
14 14
 #define MSG_SD_INSERTED                     "Карта вставлена"
15 15
 #define MSG_SD_REMOVED                      "Карта извлечена"
16 16
 #define MSG_MAIN                            "Меню \003"
@@ -20,17 +20,13 @@
20 20
 #define MSG_SET_HOME_OFFSETS                "Set home offsets"
21 21
 #define MSG_SET_ORIGIN                      "Запомнить ноль"
22 22
 #define MSG_PREHEAT_PLA                     "Преднагрев PLA"
23
-#define MSG_PREHEAT_PLA0                    "Преднагрев PLA0"
24
-#define MSG_PREHEAT_PLA1                    "Преднагрев PLA1"
25
-#define MSG_PREHEAT_PLA2                    "Преднагрев PLA2"
26
-#define MSG_PREHEAT_PLA012                  "Преднаг. PLA все"
23
+#define MSG_PREHEAT_PLA_N                   "Преднагрев PLA"
24
+#define MSG_PREHEAT_PLA_ALL                 "Преднаг. PLA все"
27 25
 #define MSG_PREHEAT_PLA_BEDONLY             "Пред. PLA Кровать"
28 26
 #define MSG_PREHEAT_PLA_SETTINGS            "Настройки PLA"
29 27
 #define MSG_PREHEAT_ABS                     "Преднагрев ABS"
30
-#define MSG_PREHEAT_ABS0                    "Преднагрев ABS0"
31
-#define MSG_PREHEAT_ABS1                    "Преднагрев ABS1"
32
-#define MSG_PREHEAT_ABS2                    "Преднагрев ABS2"
33
-#define MSG_PREHEAT_ABS012                  "Преднаг. ABS все "
28
+#define MSG_PREHEAT_ABS_N                   "Преднагрев ABS"
29
+#define MSG_PREHEAT_ABS_ALL                 "Преднаг. ABS все "
34 30
 #define MSG_PREHEAT_ABS_BEDONLY             "Пред. ABS Кровать"
35 31
 #define MSG_PREHEAT_ABS_SETTINGS            "Настройки ABS"
36 32
 #define MSG_COOLDOWN                        "Охлаждение"
@@ -43,49 +39,42 @@
43 39
 #define MSG_MOVE_Y                          "Move Y"
44 40
 #define MSG_MOVE_Z                          "Move Z"
45 41
 #define MSG_MOVE_E                          "Extruder"
46
-#define MSG_MOVE_E1                         "Extruder2"
47
-#define MSG_MOVE_E2                         "Extruder3"
48 42
 #define MSG_MOVE_01MM                       "Move 0.1mm"
49 43
 #define MSG_MOVE_1MM                        "Move 1mm"
50 44
 #define MSG_MOVE_10MM                       "Move 10mm"
51
-#define MSG_SPEED                           "Скорость:"
52
-#define MSG_NOZZLE                          "\002 Фильера:"
53
-#define MSG_NOZZLE1                         "\002 Фильера2:"
54
-#define MSG_NOZZLE2                         "\002 Фильера3:"
55
-#define MSG_BED                             "\002 Кровать:"
56
-#define MSG_FAN_SPEED                       "Куллер:"
57
-#define MSG_FLOW                            "Поток:"
58
-#define MSG_FLOW0                           " Поток0:"
59
-#define MSG_FLOW1                           " Поток1:"
60
-#define MSG_FLOW2                           " Поток2:"
45
+#define MSG_SPEED                           "Скорость"
46
+#define MSG_NOZZLE                          "\002 Фильера"
47
+#define MSG_BED                             "\002 Кровать"
48
+#define MSG_FAN_SPEED                       "Куллер"
49
+#define MSG_FLOW                            "Поток"
61 50
 #define MSG_CONTROL                         "Настройки \003"
62
-#define MSG_MIN                             "\002 Минимум:"
63
-#define MSG_MAX                             "\002 Максимум:"
64
-#define MSG_FACTOR                          "\002 Фактор:"
65
-#define MSG_AUTOTEMP                        "Autotemp:"
51
+#define MSG_MIN                             "\002 Минимум"
52
+#define MSG_MAX                             "\002 Максимум"
53
+#define MSG_FACTOR                          "\002 Фактор"
54
+#define MSG_AUTOTEMP                        "Autotemp"
66 55
 #define MSG_ON                              "Вкл. "
67 56
 #define MSG_OFF                             "Выкл. "
68
-#define MSG_PID_P                           "PID-P: "
69
-#define MSG_PID_I                           "PID-I: "
70
-#define MSG_PID_D                           "PID-D: "
71
-#define MSG_PID_C                           "PID-C: "
72
-#define MSG_ACC                             "Acc:"
73
-#define MSG_VXY_JERK                        "Vxy-jerk: "
57
+#define MSG_PID_P                           "PID-P"
58
+#define MSG_PID_I                           "PID-I"
59
+#define MSG_PID_D                           "PID-D"
60
+#define MSG_PID_C                           "PID-C"
61
+#define MSG_ACC                             "Acc"
62
+#define MSG_VXY_JERK                        "Vxy-jerk"
74 63
 #define MSG_VZ_JERK                         "Vz-jerk"
75 64
 #define MSG_VE_JERK                         "Ve-jerk"
76 65
 #define MSG_VMAX                            "Vmax "
77
-#define MSG_X                               "x:"
78
-#define MSG_Y                               "y:"
79
-#define MSG_Z                               "z:"
80
-#define MSG_E                               "e:"
81
-#define MSG_VMIN                            "Vmin:"
82
-#define MSG_VTRAV_MIN                       "VTrav min:"
66
+#define MSG_X                               "x"
67
+#define MSG_Y                               "y"
68
+#define MSG_Z                               "z"
69
+#define MSG_E                               "e"
70
+#define MSG_VMIN                            "Vmin"
71
+#define MSG_VTRAV_MIN                       "VTrav min"
83 72
 #define MSG_AMAX                            "Amax "
84
-#define MSG_A_RETRACT                       "A-retract:"
85
-#define MSG_XSTEPS                          "X шаг/mm:"
86
-#define MSG_YSTEPS                          "Y шаг/mm:"
87
-#define MSG_ZSTEPS                          "Z шаг/mm:"
88
-#define MSG_ESTEPS                          "E шаг/mm:"
73
+#define MSG_A_RETRACT                       "A-retract"
74
+#define MSG_XSTEPS                          "X шаг/mm"
75
+#define MSG_YSTEPS                          "Y шаг/mm"
76
+#define MSG_ZSTEPS                          "Z шаг/mm"
77
+#define MSG_ESTEPS                          "E шаг/mm"
89 78
 #define MSG_TEMPERATURE                     "Температура     \x7E"
90 79
 #define MSG_MOTION                          "Скорости        \x7E"
91 80
 #define MSG_VOLUMETRIC                      "Filament"
@@ -113,14 +102,14 @@
113 102
 #define MSG_NO_MOVE                         "Нет движения."
114 103
 #define MSG_KILLED                          "УБИТО."
115 104
 #define MSG_STOPPED                         "ОСТАНОВЛЕНО."
116
-#define MSG_CONTROL_RETRACT                 "Откат mm:"
117
-#define MSG_CONTROL_RETRACT_SWAP            "своп Откат mm:"
118
-#define MSG_CONTROL_RETRACTF                "Откат  V:"
119
-#define MSG_CONTROL_RETRACT_ZLIFT           "Прыжок mm:"
120
-#define MSG_CONTROL_RETRACT_RECOVER         "Возврат +mm:"
121
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP    "своп Возврат +mm:"
122
-#define MSG_CONTROL_RETRACT_RECOVERF        "Возврат  V:"
123
-#define MSG_AUTORETRACT                     "АвтоОткат:"
105
+#define MSG_CONTROL_RETRACT                 "Откат mm"
106
+#define MSG_CONTROL_RETRACT_SWAP            "своп Откат mm"
107
+#define MSG_CONTROL_RETRACTF                "Откат  V"
108
+#define MSG_CONTROL_RETRACT_ZLIFT           "Прыжок mm"
109
+#define MSG_CONTROL_RETRACT_RECOVER         "Возврат +mm"
110
+#define MSG_CONTROL_RETRACT_RECOVER_SWAP    "своп Возврат +mm"
111
+#define MSG_CONTROL_RETRACT_RECOVERF        "Возврат  V"
112
+#define MSG_AUTORETRACT                     "АвтоОткат"
124 113
 #define MSG_FILAMENTCHANGE                  "Change filament"
125 114
 #define MSG_INIT_SDCARD                     "Init. SD-Card"
126 115
 #define MSG_CNG_SDCARD                      "Change SD-Card"
@@ -132,8 +121,6 @@
132 121
 #define MSG_BABYSTEP_Z                      "Babystep Z"
133 122
 #define MSG_ENDSTOP_ABORT                   "Endstop abort"
134 123
 
135
-#define MSG_RECTRACT                        "Откат подачи    \x7E"
136
-
137 124
 #ifdef DELTA_CALIBRATION_MENU
138 125
     #define MSG_DELTA_CALIBRATE             "Delta Calibration"
139 126
     #define MSG_DELTA_CALIBRATE_X           "Calibrate X"

+ 120
- 2907
Marlin/pins.h
La diferencia del archivo ha sido suprimido porque es demasiado grande
Ver fichero


+ 37
- 0
Marlin/pins_3DRAG.h Ver fichero

@@ -0,0 +1,37 @@
1
+/**
2
+ * 3DRAG (and K8200) Arduino Mega with RAMPS v1.3 pin assignments
3
+ */
4
+
5
+#include "pins_RAMPS_13.h"
6
+
7
+#define X_MAX_PIN          2
8
+#define Y_MAX_PIN          15
9
+#define Z_MAX_PIN          -1
10
+
11
+#define SDSS               25//53
12
+
13
+#define BEEPER             33
14
+
15
+#define FAN_PIN            8
16
+
17
+#define HEATER_0_PIN       10
18
+#define HEATER_1_PIN       12
19
+#define HEATER_2_PIN       6
20
+
21
+#define HEATER_BED_PIN     9    // BED
22
+
23
+#if defined(ULTRA_LCD) && defined(NEWPANEL)
24
+  #define BEEPER -1
25
+
26
+  #define LCD_PINS_RS 27
27
+  #define LCD_PINS_ENABLE 29
28
+  #define LCD_PINS_D4 37
29
+  #define LCD_PINS_D5 35
30
+  #define LCD_PINS_D6 33
31
+  #define LCD_PINS_D7 31
32
+
33
+  // Buttons
34
+  #define BTN_EN1 16
35
+  #define BTN_EN2 17
36
+  #define BTN_ENC 23 //the click
37
+#endif // ULTRA_LCD && NEWPANEL

+ 75
- 0
Marlin/pins_5DPRINT.h Ver fichero

@@ -0,0 +1,75 @@
1
+/**
2
+ * 5DPrint D8 Driver board pin assignments
3
+ *
4
+ * https://bitbucket.org/makible/5dprint-d8-controller-board
5
+ */
6
+
7
+#ifndef __AVR_AT90USB1286__
8
+  #error Oops!  Make sure you have 'Teensy++ 2.0' selected from the 'Tools -> Boards' menu.
9
+#endif
10
+
11
+#define AT90USB 1286  // Disable MarlinSerial etc.
12
+
13
+#define LARGE_FLASH        true
14
+
15
+#define X_STEP_PIN          0
16
+#define X_DIR_PIN           1
17
+#define X_ENABLE_PIN       23
18
+#define X_STOP_PIN         37
19
+
20
+#define Y_STEP_PIN          2
21
+#define Y_DIR_PIN           3
22
+#define Y_ENABLE_PIN       19
23
+#define Y_STOP_PIN         36
24
+
25
+#define Z_STEP_PIN          4
26
+#define Z_DIR_PIN           5
27
+#define Z_ENABLE_PIN       18
28
+#define Z_STOP_PIN         39
29
+
30
+#define E0_STEP_PIN         6
31
+#define E0_DIR_PIN          7
32
+#define E0_ENABLE_PIN      17
33
+
34
+#define HEATER_0_PIN       21  // Extruder
35
+#define HEATER_1_PIN       -1
36
+#define HEATER_2_PIN       -1
37
+#define HEATER_BED_PIN     20  // Bed
38
+// You may need to change FAN_PIN to 16 because Marlin isn't using fastio.h
39
+// for the fan and Teensyduino uses a different pin mapping.
40
+#define FAN_PIN            16  // Fan
41
+
42
+#define TEMP_0_PIN          1  // Extruder / Analog pin numbering
43
+#define TEMP_BED_PIN        0  // Bed / Analog pin numbering
44
+
45
+#define TEMP_1_PIN         -1
46
+#define TEMP_2_PIN         -1
47
+
48
+#define SDPOWER            -1
49
+#define LED_PIN            -1
50
+#define PS_ON_PIN          -1
51
+#define KILL_PIN           -1
52
+#define ALARM_PIN          -1
53
+
54
+// The SDSS pin uses a different pin mapping from file Sd2PinMap.h
55
+#define SDSS               20
56
+
57
+#ifndef SDSUPPORT
58
+// these pins are defined in the SD library if building with SD support
59
+  #define SCK_PIN           9
60
+  #define MISO_PIN         11
61
+  #define MOSI_PIN         10
62
+#endif
63
+
64
+// Microstepping pins
65
+// Note that the pin mapping is not from fastio.h
66
+// See Sd2PinMap.h for the pin configurations
67
+#define X_MS1_PIN 25
68
+#define X_MS2_PIN 26
69
+#define Y_MS1_PIN 9
70
+#define Y_MS2_PIN 8
71
+#define Z_MS1_PIN 7
72
+#define Z_MS2_PIN 6
73
+#define E0_MS1_PIN 5
74
+#define E0_MS2_PIN 4
75
+

+ 38
- 0
Marlin/pins_99.h Ver fichero

@@ -0,0 +1,38 @@
1
+/**
2
+ * Board 99 pin assignments
3
+ */
4
+
5
+#define X_STEP_PIN          2
6
+#define X_DIR_PIN           3
7
+#define X_ENABLE_PIN        -1
8
+#define X_STOP_PIN          16
9
+
10
+#define Y_STEP_PIN          5
11
+#define Y_DIR_PIN           6
12
+#define Y_ENABLE_PIN       -1
13
+#define Y_STOP_PIN          67
14
+
15
+#define Z_STEP_PIN          62
16
+#define Z_DIR_PIN           63
17
+#define Z_ENABLE_PIN       -1
18
+#define Z_STOP_PIN          59
19
+
20
+#define E0_STEP_PIN         65
21
+#define E0_DIR_PIN          66
22
+#define E0_ENABLE_PIN      -1
23
+
24
+#define SDPOWER            -1
25
+#define SDSS               53
26
+#define LED_PIN            -1
27
+#define FAN_PIN            -1
28
+#define PS_ON_PIN           9
29
+#define KILL_PIN           -1
30
+
31
+#define HEATER_0_PIN        13
32
+#define HEATER_1_PIN       -1
33
+#define HEATER_2_PIN       -1
34
+#define TEMP_0_PIN          6   // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!!
35
+#define TEMP_1_PIN         -1   // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!!
36
+#define TEMP_2_PIN         -1   // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!!
37
+#define HEATER_BED_PIN      4
38
+#define TEMP_BED_PIN       10

+ 7
- 0
Marlin/pins_AZTEEG_X1.h Ver fichero

@@ -0,0 +1,7 @@
1
+/**
2
+ * Azteeg X1 pin assignments
3
+ */
4
+
5
+#define SANGUINOLOLU_V_1_2
6
+
7
+#include "pins_SANGUINOLOLU_11.h"

+ 5
- 0
Marlin/pins_AZTEEG_X3.h Ver fichero

@@ -0,0 +1,5 @@
1
+/**
2
+ * AZTEEG_X3 Arduino Mega with RAMPS v1.3 pin assignments
3
+ */
4
+
5
+#include "pins_RAMPS_13.h"

+ 30
- 0
Marlin/pins_AZTEEG_X3_PRO.h Ver fichero

@@ -0,0 +1,30 @@
1
+/**
2
+ * AZTEEG_X3_PRO (Arduino Mega) pin assignments
3
+ */
4
+
5
+#include "pins_RAMPS_13.h"
6
+
7
+#define E2_STEP_PIN        23
8
+#define E2_DIR_PIN         25
9
+#define E2_ENABLE_PIN      40
10
+
11
+#define E3_STEP_PIN        27
12
+#define E3_DIR_PIN         29
13
+#define E3_ENABLE_PIN      41
14
+
15
+#define E4_STEP_PIN        43
16
+#define E4_DIR_PIN         37
17
+#define E4_ENABLE_PIN      42
18
+
19
+#define HEATER_2_PIN       16
20
+#define HEATER_3_PIN       17
21
+#define HEATER_4_PIN       4
22
+#define HEATER_5_PIN       5
23
+#define HEATER_6_PIN       6
24
+#define HEATER_7_PIN       11
25
+
26
+#define TEMP_2_PIN         12   // ANALOG NUMBERING
27
+#define TEMP_3_PIN         11   // ANALOG NUMBERING
28
+#define TEMP_4_PIN         10   // ANALOG NUMBERING
29
+#define TC1                4    // ANALOG NUMBERING Thermo couple on Azteeg X3Pro
30
+#define TC2                5    // ANALOG NUMBERING Thermo couple on Azteeg X3Pro

+ 61
- 0
Marlin/pins_BRAINWAVE.h Ver fichero

@@ -0,0 +1,61 @@
1
+/**
2
+ * Brainwave 1.0 pin assignments (AT90USB646)
3
+ *
4
+ * Requires hardware bundle for Arduino:
5
+ * https://github.com/unrepentantgeek/brainwave-arduino
6
+ */
7
+
8
+#ifndef __AVR_AT90USB646__
9
+  #error Oops!  Make sure you have 'Brainwave' selected from the 'Tools -> Boards' menu.
10
+#endif
11
+
12
+#define AT90USB 646  // Disable MarlinSerial etc.
13
+
14
+#define X_STEP_PIN         27
15
+#define X_DIR_PIN          29
16
+#define X_ENABLE_PIN       28
17
+#define X_STOP_PIN          7
18
+#define X_ATT_PIN          26
19
+
20
+#define Y_STEP_PIN         31
21
+#define Y_DIR_PIN          33
22
+#define Y_ENABLE_PIN       32
23
+#define Y_STOP_PIN          6
24
+#define Y_ATT_PIN          30
25
+
26
+#define Z_STEP_PIN         17
27
+#define Z_DIR_PIN          19
28
+#define Z_ENABLE_PIN       18
29
+#define Z_STOP_PIN          5
30
+#define Z_ATT_PIN          16
31
+
32
+#define E0_STEP_PIN        21
33
+#define E0_DIR_PIN         23
34
+#define E0_ENABLE_PIN      22
35
+#define E0_ATT_PIN         20
36
+
37
+#define HEATER_0_PIN        4  // Extruder
38
+#define HEATER_1_PIN       -1
39
+#define HEATER_2_PIN       -1
40
+#define HEATER_BED_PIN     38  // Bed
41
+#define FAN_PIN             3  // Fan
42
+
43
+#define TEMP_0_PIN          7  // Extruder / Analog pin numbering
44
+#define TEMP_1_PIN         -1
45
+#define TEMP_2_PIN         -1
46
+#define TEMP_BED_PIN        6  // Bed / Analog pin numbering
47
+
48
+#define SDPOWER            -1
49
+#define SDSS               -1
50
+#define LED_PIN            39
51
+#define PS_ON_PIN          -1
52
+#define KILL_PIN           -1
53
+#define ALARM_PIN          -1
54
+
55
+#ifndef SDSUPPORT
56
+  // these pins are defined in the SD library if building with SD support
57
+  #define SCK_PIN           9
58
+  #define MISO_PIN         11
59
+  #define MOSI_PIN         10
60
+#endif
61
+

+ 95
- 0
Marlin/pins_CHEAPTRONIC.h Ver fichero

@@ -0,0 +1,95 @@
1
+/**
2
+ * Cheaptronic v1.0 pin assignments
3
+ */
4
+
5
+#ifndef __AVR_ATmega2560__
6
+  #error Oops!  Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu.
7
+#endif
8
+
9
+#define LARGE_FLASH        true
10
+
11
+// X motor stepper
12
+#define X_STEP_PIN 14
13
+#define X_DIR_PIN 15
14
+#define X_ENABLE_PIN 24
15
+
16
+// X endstop
17
+#define X_MIN_PIN 3
18
+#define X_MAX_PIN -1
19
+
20
+// Y motor stepper
21
+#define Y_STEP_PIN 35
22
+#define Y_DIR_PIN 36
23
+#define Y_ENABLE_PIN 31
24
+
25
+// Y endstop
26
+#define Y_MIN_PIN 2
27
+#define Y_MAX_PIN -1
28
+
29
+// Z motor stepper
30
+#define Z_STEP_PIN 40
31
+#define Z_DIR_PIN 41
32
+#define Z_ENABLE_PIN 37
33
+
34
+// Z endstop
35
+#define Z_MIN_PIN 5
36
+#define Z_MAX_PIN -1
37
+
38
+// Extruder 0 stepper
39
+#define E0_STEP_PIN 26
40
+#define E0_DIR_PIN 28
41
+#define E0_ENABLE_PIN 25
42
+
43
+// Extruder 1 stepper
44
+#define E1_STEP_PIN 33
45
+#define E1_DIR_PIN 34
46
+#define E1_ENABLE_PIN 30
47
+
48
+#define SDPOWER -1
49
+#define SDSS -1
50
+#define LED_PIN -1
51
+
52
+// FAN
53
+#define FAN_PIN -1
54
+
55
+#define PS_ON_PIN -1
56
+#define KILL_PIN -1
57
+
58
+#define HEATER_0_PIN 19 // EXTRUDER 1
59
+#define HEATER_1_PIN 23 // EXTRUDER 2
60
+// HeatedBad
61
+#define HEATER_BED_PIN 22
62
+// Cheaptronic v1.0 hasent EXTRUDER 3
63
+#define HEATER_2_PIN -1
64
+
65
+// Temperature sensors
66
+#define TEMP_0_PIN 15
67
+#define TEMP_1_PIN 14
68
+#define TEMP_2_PIN -1
69
+#define TEMP_BED_PIN 13
70
+
71
+// Cheaptronic v1.0 doesn't support LCD
72
+#define LCD_PINS_RS -1
73
+#define LCD_PINS_ENABLE -1
74
+#define LCD_PINS_D4 -1
75
+#define LCD_PINS_D5 -1
76
+#define LCD_PINS_D6 -1
77
+#define LCD_PINS_D7 -1
78
+
79
+// Cheaptronic v1.0 doesn't support keypad
80
+#define BTN_EN1 -1
81
+#define BTN_EN2 -1
82
+#define BTN_ENC -1
83
+
84
+#define BLEN_C 2
85
+#define BLEN_B 1
86
+#define BLEN_A 0
87
+
88
+// Cheaptronic v1.0 does not use this port
89
+#define SDCARDDETECT -1
90
+
91
+// Encoder rotation values
92
+#define encrot0 0
93
+#define encrot1 2
94
+#define encrot2 3
95
+#define encrot3 1

+ 43
- 0
Marlin/pins_DUEMILANOVE_328P.h Ver fichero

@@ -0,0 +1,43 @@
1
+/**
2
+ * Duemilanove w/ ATMega328P pin assignments
3
+ */
4
+
5
+#ifndef __AVR_ATmega328P__
6
+  #error Oops!  Make sure you have 'Arduino Duemilanove w/ ATMega328' selected from the 'Tools -> Boards' menu.
7
+#endif
8
+
9
+#define X_STEP_PIN         19
10
+#define X_DIR_PIN          18
11
+#define X_ENABLE_PIN       -1
12
+#define X_STOP_PIN         17
13
+
14
+#define Y_STEP_PIN         10
15
+#define Y_DIR_PIN           7
16
+#define Y_ENABLE_PIN       -1
17
+#define Y_STOP_PIN          8
18
+
19
+#define Z_STEP_PIN         13
20
+#define Z_DIR_PIN           3
21
+#define Z_ENABLE_PIN        2
22
+#define Z_STOP_PIN          4
23
+
24
+#define E0_STEP_PIN         11
25
+#define E0_DIR_PIN          12
26
+#define E0_ENABLE_PIN       -1
27
+
28
+#define SDPOWER          -1
29
+#define SDSS          -1
30
+#define LED_PIN            -1
31
+#define FAN_PIN             5
32
+#define PS_ON_PIN          -1
33
+#define KILL_PIN           -1
34
+
35
+#define HEATER_0_PIN        6
36
+#define HEATER_1_PIN        -1
37
+#define HEATER_2_PIN        -1
38
+#define TEMP_0_PIN          0    // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!!
39
+#define TEMP_1_PIN          -1
40
+#define TEMP_2_PIN          -1
41
+#define HEATER_BED_PIN      -1
42
+#define TEMP_BED_PIN        -1
43
+

+ 116
- 0
Marlin/pins_ELEFU_3.h Ver fichero

@@ -0,0 +1,116 @@
1
+/**
2
+ * Elefu RA Board Pin Assignments
3
+ */
4
+
5
+#ifndef __AVR_ATmega2560__
6
+  #error Oops!  Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu.
7
+#endif
8
+
9
+#define X_STEP_PIN         49
10
+#define X_DIR_PIN          13
11
+#define X_ENABLE_PIN       48
12
+#define X_MIN_PIN          35
13
+#define X_MAX_PIN          34
14
+
15
+#define Y_STEP_PIN         11
16
+#define Y_DIR_PIN          9
17
+#define Y_ENABLE_PIN       12
18
+#define Y_MIN_PIN          33
19
+#define Y_MAX_PIN          32
20
+
21
+#define Z_STEP_PIN         7
22
+#define Z_DIR_PIN          6
23
+#define Z_ENABLE_PIN       8
24
+#define Z_MIN_PIN          31
25
+#define Z_MAX_PIN          30
26
+
27
+#define E2_STEP_PIN        43
28
+#define E2_DIR_PIN         47
29
+#define E2_ENABLE_PIN      42
30
+
31
+#define E1_STEP_PIN        18
32
+#define E1_DIR_PIN         19
33
+#define E1_ENABLE_PIN      38
34
+
35
+#define E0_STEP_PIN        40
36
+#define E0_DIR_PIN         41
37
+#define E0_ENABLE_PIN      37
38
+
39
+#define SDPOWER            -1
40
+#define LED_PIN            -1 //Use +12V Aux port for LED Ring
41
+
42
+#define FAN_PIN            16 //5V PWM
43
+
44
+#define PS_ON_PIN          10 //Set to -1 if using a manual switch on the PWRSW Connector
45
+#define SLEEP_WAKE_PIN     26 //This feature still needs work
46
+
47
+#define HEATER_0_PIN       45 //12V PWM1
48
+#define HEATER_1_PIN       46 //12V PWM2
49
+#define HEATER_2_PIN       17 //12V PWM3
50
+#define HEATER_BED_PIN     44 //DOUBLE 12V PWM
51
+#define TEMP_0_PIN         3  //ANALOG NUMBERING
52
+#define TEMP_1_PIN         2  //ANALOG NUMBERING
53
+#define TEMP_2_PIN         1  //ANALOG NUMBERING
54
+#define TEMP_BED_PIN       0  //ANALOG NUMBERING
55
+
56
+#define BEEPER             36
57
+
58
+#define KILL_PIN           -1
59
+
60
+// M240  Triggers a camera by emulating a Canon RC-1 Remote
61
+// Data from: http://www.doc-diy.net/photo/rc-1_hacked/
62
+#define PHOTOGRAPH_PIN     29
63
+
64
+#ifdef RA_CONTROL_PANEL
65
+
66
+  #define SDSS             53
67
+  #define SDCARDDETECT     28
68
+
69
+  #define BTN_EN1          14
70
+  #define BTN_EN2          39
71
+  #define BTN_ENC          15  //the click
72
+
73
+  #define BLEN_C           2
74
+  #define BLEN_B           1
75
+  #define BLEN_A           0
76
+
77
+  //encoder rotation values
78
+  #define encrot0          0
79
+  #define encrot1          2
80
+  #define encrot2          3
81
+  #define encrot3          1
82
+
83
+#endif // RA_CONTROL_PANEL
84
+
85
+#ifdef RA_DISCO
86
+  //variables for which pins the TLC5947 is using
87
+  #define TLC_CLOCK_PIN    25
88
+  #define TLC_BLANK_PIN    23
89
+  #define TLC_XLAT_PIN     22
90
+  #define TLC_DATA_PIN     24
91
+
92
+  //We also need to define pin to port number mapping for the 2560 to match the pins listed above. If you change the TLC pins, update this as well per the 2560 datasheet!
93
+  //This currently only works with the RA Board.
94
+  #define TLC_CLOCK_BIT 3 //bit 3 on port A
95
+  #define TLC_CLOCK_PORT &PORTA //bit 3 on port A
96
+
97
+  #define TLC_BLANK_BIT 1 //bit 1 on port A
98
+  #define TLC_BLANK_PORT &PORTA //bit 1 on port A
99
+
100
+  #define TLC_DATA_BIT 2 //bit 2 on port A
101
+  #define TLC_DATA_PORT &PORTA //bit 2 on port A
102
+
103
+  #define TLC_XLAT_BIT 0 //bit 0 on port A
104
+  #define TLC_XLAT_PORT &PORTA //bit 0 on port A
105
+
106
+  //change this to match your situation. Lots of TLCs takes up the arduino SRAM very quickly, so be careful
107
+  //Leave it at at least 1 if you have enabled RA_LIGHTING
108
+  //The number of TLC5947 boards chained together for use with the animation, additional ones will repeat the animation on them, but are not individually addressable and mimic those before them. You can leave the default at 2 even if you only have 1 TLC5947 module.
109
+  #define NUM_TLCS 2
110
+
111
+  //These TRANS_ARRAY values let you change the order the LEDs on the lighting modules will animate for chase functions.
112
+  //Modify them according to your specific situation.
113
+  //NOTE: the array should be 8 long for every TLC you have. These defaults assume (2) TLCs.
114
+  #define TRANS_ARRAY {0, 1, 2, 3, 4, 5, 6, 7, 15, 14, 13, 12, 11, 10, 9, 8} //forwards
115
+  //#define TRANS_ARRAY {7, 6, 5, 4, 3, 2, 1, 0, 8, 9, 10, 11, 12, 13, 14, 15} //backwards
116
+#endif // RA_DISCO

+ 61
- 0
Marlin/pins_GEN3_MONOLITHIC.h Ver fichero

@@ -0,0 +1,61 @@
1
+/**
2
+ * Gen3 Monolithic Electronics pin assignments
3
+ */
4
+
5
+#ifndef __AVR_ATmega644P__
6
+  #error Oops!  Make sure you have 'Sanguino' selected from the 'Tools -> Boards' menu.
7
+#endif
8
+
9
+#define DEBUG_PIN 0
10
+
11
+// x axis
12
+#define X_STEP_PIN 15
13
+#define X_DIR_PIN 18
14
+#define X_MIN_PIN 20
15
+// Alex Checar #define X_STOP_PIN         20
16
+#define X_ENABLE_PIN 24 // actually uses Y_enable_pin
17
+#define X_MAX_PIN -1
18
+
19
+// y axis
20
+#define Y_STEP_PIN 23
21
+#define Y_DIR_PIN 22
22
+#define Y_MIN_PIN 25
23
+// Alex Checar #define Y_STOP_PIN         25
24
+#define Y_ENABLE_PIN 24 // shared with X_enable_pin
25
+#define Y_MAX_PIN -1
26
+
27
+// z axis
28
+#define Z_STEP_PIN 27
29
+#define Z_DIR_PIN 28
30
+#define Z_MIN_PIN 30
31
+// Alex Checar #define Z_STOP_PIN         30
32
+#define Z_ENABLE_PIN 29
33
+#define Z_MAX_PIN -1
34
+
35
+// extruder pins
36
+#define E0_STEP_PIN         12
37
+#define E0_DIR_PIN          17
38
+#define E0_ENABLE_PIN       3
39
+
40
+#define HEATER_0_PIN 16
41
+#define TEMP_0_PIN 0
42
+
43
+#define FAN_PIN -1
44
+
45
+// bed pins
46
+#define HEATER_BED_PIN -1
47
+#define TEMP_BED_PIN -1
48
+
49
+
50
+#define SDSS     -1
51
+#define SDPOWER          -1
52
+#define LED_PIN          -1
53
+
54
+// pin for controlling the PSU.
55
+#define PS_ON_PIN       14  // Alex, Do this work on the card?
56
+
57
+// Alex extras from Gen3+
58
+#define KILL_PIN           -1
59
+#define TEMP_1_PIN         -1
60
+#define TEMP_2_PIN         -1
61
+#define HEATER_2_PIN       -1

+ 45
- 0
Marlin/pins_GEN3_PLUS.h Ver fichero

@@ -0,0 +1,45 @@
1
+/**
2
+ * Gen3+ pin assignments
3
+ */
4
+
5
+#if !defined(__AVR_ATmega644P__) && !defined(__AVR_ATmega1284P__)
6
+  #error Oops!  Make sure you have 'Sanguino' selected from the 'Tools -> Boards' menu.
7
+#endif
8
+
9
+#define X_STEP_PIN         15
10
+#define X_DIR_PIN          18
11
+#define X_STOP_PIN         20
12
+
13
+#define Y_STEP_PIN         23
14
+#define Y_DIR_PIN          22
15
+#define Y_STOP_PIN         25
16
+
17
+#define Z_STEP_PIN         27
18
+#define Z_DIR_PIN          28
19
+#define Z_STOP_PIN         30
20
+
21
+#define E0_STEP_PIN        17
22
+#define E0_DIR_PIN         21
23
+
24
+#define LED_PIN            -1
25
+
26
+#define FAN_PIN            -1
27
+
28
+#define PS_ON_PIN         14
29
+#define KILL_PIN           -1
30
+
31
+#define HEATER_0_PIN       12 // (extruder)
32
+
33
+#define HEATER_BED_PIN     16 // (bed)
34
+#define X_ENABLE_PIN       19
35
+#define Y_ENABLE_PIN       24
36
+#define Z_ENABLE_PIN       29
37
+#define E0_ENABLE_PIN      13
38
+
39
+#define TEMP_0_PIN          0   // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! (pin 33 extruder)
40
+#define TEMP_1_PIN         -1   
41
+#define TEMP_2_PIN         -1
42
+#define TEMP_BED_PIN        5   // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! (pin 34 bed)  
43
+#define SDPOWER            -1
44
+#define SDSS               4
45
+#define HEATER_2_PIN       -1

+ 62
- 0
Marlin/pins_GEN6.h Ver fichero

@@ -0,0 +1,62 @@
1
+/**
2
+ * Gen6 pin assignments
3
+ */
4
+
5
+#ifndef __AVR_ATmega644P__
6
+  #ifndef __AVR_ATmega1284P__
7
+    #error Oops!  Make sure you have 'Sanguino' selected from the 'Tools -> Boards' menu.
8
+  #endif
9
+#endif
10
+
11
+//x axis pins
12
+#define X_STEP_PIN      15
13
+#define X_DIR_PIN       18
14
+#define X_ENABLE_PIN    19
15
+#define X_STOP_PIN      20
16
+
17
+//y axis pins
18
+#define Y_STEP_PIN      23
19
+#define Y_DIR_PIN       22
20
+#define Y_ENABLE_PIN    24
21
+#define Y_STOP_PIN      25
22
+
23
+//z axis pins
24
+#define Z_STEP_PIN      27
25
+#define Z_DIR_PIN       28
26
+#define Z_ENABLE_PIN    29
27
+#define Z_STOP_PIN      30
28
+
29
+//extruder pins
30
+#define E0_STEP_PIN      4    //Edited @ EJE Electronics 20100715
31
+#define E0_DIR_PIN       2    //Edited @ EJE Electronics 20100715
32
+#define E0_ENABLE_PIN    3    //Added @ EJE Electronics 20100715
33
+#define TEMP_0_PIN      5     //changed @ rkoeppl 20110410
34
+#define TEMP_1_PIN      -1    //changed @ rkoeppl 20110410
35
+
36
+
37
+#define TEMP_2_PIN      -1    //changed @ rkoeppl 20110410
38
+#define HEATER_0_PIN    14    //changed @ rkoeppl 20110410
39
+#define HEATER_1_PIN    -1
40
+#define HEATER_2_PIN    -1
41
+
42
+#if MB(GEN6)
43
+  #define HEATER_BED_PIN  -1    //changed @ rkoeppl 20110410
44
+  #define TEMP_BED_PIN    -1    //changed @ rkoeppl 20110410
45
+#else
46
+  #define HEATER_BED_PIN   1    //changed @ rkoeppl 20110410
47
+  #define TEMP_BED_PIN     0    //changed @ rkoeppl 20110410
48
+#endif
49
+
50
+#define SDPOWER          -1
51
+#define SDSS          17
52
+#define LED_PIN         -1    //changed @ rkoeppl 20110410
53
+#define FAN_PIN         -1    //changed @ rkoeppl 20110410
54
+#define PS_ON_PIN       -1    //changed @ rkoeppl 20110410
55
+#define KILL_PIN        -1    //changed @ drakelive 20120830
56
+//our pin for debugging.
57
+
58
+#define DEBUG_PIN        0
59
+
60
+//our RS485 pins
61
+#define TX_ENABLE_PIN 12
62
+#define RX_ENABLE_PIN 13

+ 5
- 0
Marlin/pins_GEN6_DELUXE.h Ver fichero

@@ -0,0 +1,5 @@
1
+/**
2
+ * Gen6 Deluxe pin assignments
3
+ */
4
+
5
+#include "pins_GEN6.h"

+ 72
- 0
Marlin/pins_GEN7_12.h Ver fichero

@@ -0,0 +1,72 @@
1
+/**
2
+ * Gen7 v1.1, v1.2, v1.3 pin assignments
3
+ */
4
+
5
+#if !defined(__AVR_ATmega644P__) && !defined(__AVR_ATmega644__) && !defined(__AVR_ATmega1284P__)
6
+  #error Oops!  Make sure you have 'Gen7' selected from the 'Tools -> Boards' menu.
7
+#endif
8
+
9
+#ifndef GEN7_VERSION
10
+  #define GEN7_VERSION 12 // v1.x
11
+#endif
12
+
13
+//x axis pins
14
+#define X_STEP_PIN 19
15
+#define X_DIR_PIN 18
16
+#define X_ENABLE_PIN 24
17
+#define X_STOP_PIN 7
18
+
19
+//y axis pins
20
+#define Y_STEP_PIN 23
21
+#define Y_DIR_PIN 22
22
+#define Y_ENABLE_PIN 24
23
+#define Y_STOP_PIN 5
24
+
25
+//z axis pins
26
+#define Z_STEP_PIN 26
27
+#define Z_DIR_PIN 25
28
+#define Z_ENABLE_PIN 24
29
+#define Z_MIN_PIN 1
30
+#define Z_MAX_PIN 0
31
+
32
+//extruder pins
33
+#define E0_STEP_PIN 28
34
+#define E0_DIR_PIN 27
35
+#define E0_ENABLE_PIN 24
36
+
37
+#define TEMP_0_PIN 1
38
+#define TEMP_1_PIN -1
39
+#define TEMP_2_PIN -1
40
+#define TEMP_BED_PIN 2
41
+
42
+#define HEATER_0_PIN 4
43
+#define HEATER_1_PIN -1
44
+#define HEATER_2_PIN -1
45
+#define HEATER_BED_PIN 3
46
+
47
+#define KILL_PIN -1
48
+
49
+#define SDPOWER -1
50
+#define SDSS -1 // SCL pin of I2C header
51
+#define LED_PIN -1
52
+
53
+#if (GEN7_VERSION >= 13)
54
+  // Gen7 v1.3 removed the fan pin
55
+  #define FAN_PIN -1
56
+#else
57
+  #define FAN_PIN 31
58
+#endif
59
+
60
+#define PS_ON_PIN 15
61
+
62
+//All these generations of Gen7 supply thermistor power
63
+//via PS_ON, so ignore bad thermistor readings
64
+#define BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
65
+
66
+//our pin for debugging.
67
+#define DEBUG_PIN 0
68
+
69
+//our RS485 pins
70
+#define TX_ENABLE_PIN 12
71
+#define RX_ENABLE_PIN 13
72
+

+ 8
- 0
Marlin/pins_GEN7_13.h Ver fichero

@@ -0,0 +1,8 @@
1
+/**
2
+ * Gen7 v1.3 pin assignments
3
+ */
4
+
5
+#define MOTHERBOARD BOARD_GEN7_12
6
+#define GEN7_VERSION 13 // v1.3
7
+
8
+#include "pins_GEN7_12.h"

+ 60
- 0
Marlin/pins_GEN7_14.h Ver fichero

@@ -0,0 +1,60 @@
1
+/**
2
+ * Gen7 v1.4 pin assignments
3
+ */
4
+
5
+#define GEN7_VERSION 14 // v1.4
6
+
7
+#if !defined(__AVR_ATmega644P__) && !defined(__AVR_ATmega644__) && !defined(__AVR_ATmega1284P__)
8
+  #error Oops!  Make sure you have 'Gen7' selected from the 'Tools -> Boards' menu.
9
+#endif
10
+
11
+//x axis pins
12
+#define X_STEP_PIN 29
13
+#define X_DIR_PIN 28
14
+#define X_ENABLE_PIN 25
15
+#define X_STOP_PIN 0
16
+
17
+//y axis pins
18
+#define Y_STEP_PIN 27
19
+#define Y_DIR_PIN 26
20
+#define Y_ENABLE_PIN 25
21
+#define Y_STOP_PIN 1
22
+
23
+//z axis pins
24
+#define Z_STEP_PIN 23
25
+#define Z_DIR_PIN 22
26
+#define Z_ENABLE_PIN 25
27
+#define Z_STOP_PIN 2
28
+
29
+//extruder pins
30
+#define E0_STEP_PIN 19
31
+#define E0_DIR_PIN 18
32
+#define E0_ENABLE_PIN 25
33
+
34
+#define TEMP_0_PIN 1
35
+#define TEMP_1_PIN -1
36
+#define TEMP_2_PIN -1
37
+#define TEMP_BED_PIN 0
38
+
39
+#define HEATER_0_PIN 4
40
+#define HEATER_1_PIN -1
41
+#define HEATER_2_PIN -1
42
+#define HEATER_BED_PIN 3
43
+
44
+#define KILL_PIN -1
45
+
46
+#define SDPOWER -1
47
+#define SDSS -1 // SCL pin of I2C header
48
+#define LED_PIN -1
49
+
50
+#define FAN_PIN -1
51
+
52
+#define PS_ON_PIN 15
53
+
54
+//our pin for debugging.
55
+#define DEBUG_PIN 0
56
+
57
+//our RS485 pins
58
+#define TX_ENABLE_PIN 12
59
+#define RX_ENABLE_PIN 13
60
+

+ 76
- 0
Marlin/pins_GEN7_CUSTOM.h Ver fichero

@@ -0,0 +1,76 @@
1
+/**
2
+ * Gen7 Alfons3 board pin assignments
3
+ *
4
+ * These Pins are assigned for the modified GEN7 Board from Alfons3.
5
+ * Please review the pins and adjust them for your needs.
6
+ */ 
7
+
8
+#if !defined(__AVR_ATmega644P__) && !defined(__AVR_ATmega644__) && !defined(__AVR_ATmega1284P__)
9
+  #error Oops!  Make sure you have 'Gen7' selected from the 'Tools -> Boards' menu.
10
+#endif
11
+
12
+//x axis pins
13
+#define X_STEP_PIN      21                  // different from standard GEN7
14
+#define X_DIR_PIN       20                  // different from standard GEN7
15
+#define X_ENABLE_PIN    24
16
+#define X_STOP_PIN      0
17
+
18
+//y axis pins
19
+#define Y_STEP_PIN      23
20
+#define Y_DIR_PIN       22
21
+#define Y_ENABLE_PIN    24
22
+#define Y_STOP_PIN      1
23
+
24
+//z axis pins
25
+#define Z_STEP_PIN      26
26
+#define Z_DIR_PIN       25
27
+#define Z_ENABLE_PIN    24
28
+#define Z_STOP_PIN      2
29
+
30
+//extruder pins
31
+#define E0_STEP_PIN     28
32
+#define E0_DIR_PIN      27
33
+#define E0_ENABLE_PIN   24
34
+
35
+#define TEMP_0_PIN      2
36
+#define TEMP_1_PIN      -1
37
+#define TEMP_2_PIN      -1
38
+#define TEMP_BED_PIN    1   // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! (pin 34 bed)
39
+
40
+#define HEATER_0_PIN    4
41
+#define HEATER_1_PIN    -1
42
+#define HEATER_2_PIN    -1
43
+#define HEATER_BED_PIN  3  // (bed)
44
+
45
+#define SDPOWER         -1
46
+#define SDSS            31                  // SCL pin of I2C header || CS Pin for SD Card support
47
+#define LED_PIN         -1
48
+
49
+#define FAN_PIN         -1
50
+#define PS_ON_PIN       19
51
+//our pin for debugging.
52
+
53
+#define DEBUG_PIN       -1
54
+
55
+//our RS485 pins
56
+//#define TX_ENABLE_PIN       12
57
+//#define RX_ENABLE_PIN       13
58
+
59
+#define BEEPER -1
60
+#define SDCARDDETECT -1
61
+#define SUICIDE_PIN -1    //has to be defined; otherwise Power_off doesn't work
62
+
63
+#define KILL_PIN -1
64
+//Pins for 4bit LCD Support
65
+#define LCD_PINS_RS 18
66
+#define LCD_PINS_ENABLE 17
67
+#define LCD_PINS_D4 16
68
+#define LCD_PINS_D5 15
69
+#define LCD_PINS_D6 13
70
+#define LCD_PINS_D7 14
71
+
72
+//buttons are directly attached
73
+#define BTN_EN1 11
74
+#define BTN_EN2 10
75
+#define BTN_ENC 12  //the click
76
+

+ 5
- 0
Marlin/pins_HEPHESTOS.h Ver fichero

@@ -0,0 +1,5 @@
1
+/**
2
+ * bq Prusa i3 Hephestos – Arduino Mega with RAMPS v1.3/1.4 pin assignments
3
+ */
4
+
5
+#include "pins_RAMPS_13.h"

+ 6
- 0
Marlin/pins_K8200.h Ver fichero

@@ -0,0 +1,6 @@
1
+/**
2
+ * K8200 Arduino Mega with RAMPS v1.3 pin assignments
3
+ * Identical to 3DRAG
4
+ */
5
+
6
+#include "pins_3DRAG.h"

+ 62
- 0
Marlin/pins_LEAPFROG.h Ver fichero

@@ -0,0 +1,62 @@
1
+/**
2
+ * Leapfrog Driver board pin assignments
3
+ */
4
+
5
+#if !defined(__AVR_ATmega1280__) && !defined(__AVR_ATmega2560__)
6
+  #error Oops!  Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu.
7
+#endif
8
+
9
+#define X_STEP_PIN         28
10
+#define X_DIR_PIN          63
11
+#define X_ENABLE_PIN       29
12
+#define X_MIN_PIN          47
13
+#define X_MAX_PIN          2 //Max endstops default to disabled "-1", set to commented value to enable.
14
+
15
+#define Y_STEP_PIN         14 // A6
16
+#define Y_DIR_PIN          15 // A0
17
+#define Y_ENABLE_PIN       39
18
+#define Y_MIN_PIN          48
19
+#define Y_MAX_PIN          15
20
+
21
+#define Z_STEP_PIN         31 // A2
22
+#define Z_DIR_PIN          32 // A6
23
+#define Z_ENABLE_PIN       30 // A1
24
+#define Z_MIN_PIN          49
25
+#define Z_MAX_PIN          -1
26
+
27
+#define E0_STEP_PIN         34  //34
28
+#define E0_DIR_PIN          35 //35
29
+#define E0_ENABLE_PIN       33 //33
30
+
31
+#define E1_STEP_PIN         37 //37
32
+#define E1_DIR_PIN          40 //40
33
+#define E1_ENABLE_PIN       36 //36
34
+
35
+#define Y2_STEP_PIN         37
36
+#define Y2_DIR_PIN          40
37
+#define Y2_ENABLE_PIN       36
38
+
39
+#define Z2_STEP_PIN         37
40
+#define Z2_DIR_PIN          40
41
+#define Z2_ENABLE_PIN       36
42
+
43
+#define SDPOWER            -1
44
+#define SDSS               11
45
+#define SDCARDDETECT       -1 // 10 optional also used as mode pin
46
+#define LED_PIN            13
47
+#define FAN_PIN            7
48
+#define PS_ON_PIN          -1
49
+#define KILL_PIN           -1
50
+#define SOL1_PIN   16
51
+#define SOL2_PIN    17
52
+
53
+#define HEATER_0_PIN       9
54
+#define HEATER_1_PIN       8 // 12
55
+#define HEATER_2_PIN       11 //-1 // 13
56
+#define TEMP_0_PIN         13 //D27   // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!!
57
+#define TEMP_1_PIN         15 // 1
58
+#define TEMP_2_PIN         -1 // 2
59
+#define HEATER_BED_PIN     10 // 14/15
60
+#define TEMP_BED_PIN       14 // 1,2 or I2C
61
+/*  Unused (1) (2) (3) 4 5 6 7 8 9 10 11 12 13 (14) (15) (16) 17 (18) (19) (20) (21) (22) (23) 24 (25) (26) (27) 28 (29) (30) (31)  */
62
+

+ 92
- 0
Marlin/pins_MEGATRONICS.h Ver fichero

@@ -0,0 +1,92 @@
1
+/**
2
+ * MegaTronics pin assignments
3
+ */
4
+
5
+#ifndef __AVR_ATmega2560__
6
+  #error Oops!  Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu.
7
+#endif
8
+
9
+#define LARGE_FLASH        true
10
+
11
+#define X_STEP_PIN         26
12
+#define X_DIR_PIN          28
13
+#define X_ENABLE_PIN       24
14
+#define X_MIN_PIN          41
15
+#define X_MAX_PIN          37
16
+
17
+#define Y_STEP_PIN         60 // A6
18
+#define Y_DIR_PIN          61 // A7
19
+#define Y_ENABLE_PIN       22
20
+#define Y_MIN_PIN          14
21
+#define Y_MAX_PIN          15
22
+
23
+#define Z_STEP_PIN         54 // A0
24
+#define Z_DIR_PIN          55 // A1
25
+#define Z_ENABLE_PIN       56 // A2
26
+#define Z_MIN_PIN          18
27
+#define Z_MAX_PIN          19
28
+
29
+#define E0_STEP_PIN        31
30
+#define E0_DIR_PIN         32
31
+#define E0_ENABLE_PIN      38
32
+
33
+#define E1_STEP_PIN        34
34
+#define E1_DIR_PIN         36
35
+#define E1_ENABLE_PIN      30
36
+
37
+#define SDPOWER            -1
38
+#define SDSS               53
39
+#define LED_PIN            13
40
+
41
+
42
+#define FAN_PIN            7 // IO pin. Buffer needed
43
+#define PS_ON_PIN          12
44
+#define KILL_PIN           -1
45
+
46
+#define HEATER_0_PIN       9    // EXTRUDER 1
47
+#define HEATER_1_PIN       8    // EXTRUDER 2 (FAN On Sprinter)
48
+#define HEATER_2_PIN       -1
49
+
50
+#if TEMP_SENSOR_0 == -1
51
+#define TEMP_0_PIN         8   // ANALOG NUMBERING
52
+#else
53
+#define TEMP_0_PIN         13   // ANALOG NUMBERING
54
+
55
+#endif
56
+
57
+#define TEMP_1_PIN         15   // ANALOG NUMBERING
58
+#define TEMP_2_PIN         -1   // ANALOG NUMBERING
59
+#define HEATER_BED_PIN     10   // BED
60
+#define TEMP_BED_PIN       14   // ANALOG NUMBERING
61
+
62
+#define BEEPER 33     // Beeper on AUX-4
63
+
64
+
65
+#if defined(ULTRA_LCD) && defined(NEWPANEL)
66
+  //arduino pin which triggers an piezzo beeper
67
+
68
+  #define LCD_PINS_RS 16
69
+  #define LCD_PINS_ENABLE 17
70
+  #define LCD_PINS_D4 23
71
+  #define LCD_PINS_D5 25
72
+  #define LCD_PINS_D6 27
73
+  #define LCD_PINS_D7 29
74
+
75
+  //buttons are directly attached using AUX-2
76
+  #define BTN_EN1 59
77
+  #define BTN_EN2 64
78
+  #define BTN_ENC 43  //the click
79
+
80
+  #define BLEN_C 2
81
+  #define BLEN_B 1
82
+  #define BLEN_A 0
83
+
84
+  #define SDCARDDETECT -1   // Ramps does not use this port
85
+
86
+    //encoder rotation values
87
+  #define encrot0 0
88
+  #define encrot1 2
89
+  #define encrot2 3
90
+  #define encrot3 1
91
+
92
+#endif // ULTRA_LCD && NEWPANEL

+ 88
- 0
Marlin/pins_MEGATRONICS_1.h Ver fichero

@@ -0,0 +1,88 @@
1
+/**
2
+ * Minitronics v1.0 pin assignments
3
+ */
4
+
5
+#ifndef __AVR_ATmega1281__
6
+  #error Oops!  Make sure you have 'Minitronics' selected from the 'Tools -> Boards' menu.
7
+#endif
8
+
9
+#define LARGE_FLASH        true
10
+
11
+#define X_STEP_PIN 48
12
+#define X_DIR_PIN 47
13
+#define X_ENABLE_PIN 49
14
+#define X_MIN_PIN 5
15
+#define X_MAX_PIN 2
16
+
17
+#define Y_STEP_PIN 39 // A6
18
+#define Y_DIR_PIN 40 // A0
19
+#define Y_ENABLE_PIN 38
20
+#define Y_MIN_PIN 2
21
+#define Y_MAX_PIN 15
22
+
23
+#define Z_STEP_PIN 42 // A2
24
+#define Z_DIR_PIN 43 // A6
25
+#define Z_ENABLE_PIN 41 // A1
26
+#define Z_MIN_PIN 6
27
+#define Z_MAX_PIN -1
28
+
29
+#define E0_STEP_PIN 45
30
+#define E0_DIR_PIN 44
31
+#define E0_ENABLE_PIN 27
32
+
33
+#define E1_STEP_PIN 36
34
+#define E1_DIR_PIN 35
35
+#define E1_ENABLE_PIN 37
36
+
37
+#define E2_STEP_PIN -1
38
+#define E2_DIR_PIN -1
39
+#define E2_ENABLE_PIN -1
40
+
41
+#define SDPOWER -1
42
+#define SDSS 16
43
+#define LED_PIN 46
44
+
45
+#define FAN_PIN 9
46
+#define FAN2_PIN -1
47
+#define PS_ON_PIN -1
48
+#define KILL_PIN -1
49
+
50
+#define HEATER_0_PIN 7 // EXTRUDER 1
51
+#define HEATER_1_PIN 8 // EXTRUDER 2
52
+#define HEATER_2_PIN -1
53
+
54
+
55
+#define TEMP_0_PIN 7 // ANALOG NUMBERING
56
+#define TEMP_1_PIN 6 // ANALOG NUMBERING
57
+#define TEMP_2_PIN -1 // ANALOG NUMBERING
58
+
59
+#define HEATER_BED_PIN 3 // BED
60
+#define TEMP_BED_PIN 6 // ANALOG NUMBERING
61
+
62
+#define BEEPER -1
63
+
64
+
65
+#define LCD_PINS_RS -1
66
+#define LCD_PINS_ENABLE -1
67
+#define LCD_PINS_D4 -1
68
+#define LCD_PINS_D5 -1
69
+#define LCD_PINS_D6 -1
70
+#define LCD_PINS_D7 -1
71
+
72
+
73
+// Buttons are directly attached using keypad
74
+#define BTN_EN1 -1
75
+#define BTN_EN2 -1
76
+#define BTN_ENC -1 // the click
77
+
78
+#define BLEN_C 2
79
+#define BLEN_B 1
80
+#define BLEN_A 0
81
+
82
+#define SDCARDDETECT -1  // Megatronics does not use this port
83
+
84
+// Encoder rotation values
85
+#define encrot0 0
86
+#define encrot1 2
87
+#define encrot2 3
88
+#define encrot3 1

+ 103
- 0
Marlin/pins_MEGATRONICS_2.h Ver fichero

@@ -0,0 +1,103 @@
1
+/**
2
+ * MegaTronics v2.0 pin assignments
3
+ */
4
+
5
+#ifndef __AVR_ATmega2560__
6
+  #error Oops!  Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu.
7
+#endif
8
+
9
+#define LARGE_FLASH        true
10
+
11
+#define X_STEP_PIN 26
12
+#define X_DIR_PIN 27
13
+#define X_ENABLE_PIN 25
14
+#define X_MIN_PIN 37
15
+#define X_MAX_PIN 40
16
+
17
+#define Y_STEP_PIN 4 // A6
18
+#define Y_DIR_PIN 54 // A0
19
+#define Y_ENABLE_PIN 5
20
+#define Y_MIN_PIN 41
21
+#define Y_MAX_PIN 38
22
+
23
+#define Z_STEP_PIN 56 // A2
24
+#define Z_DIR_PIN 60 // A6
25
+#define Z_ENABLE_PIN 55 // A1
26
+#define Z_MIN_PIN 18
27
+#define Z_MAX_PIN 19
28
+
29
+#define E0_STEP_PIN 35
30
+#define E0_DIR_PIN 36
31
+#define E0_ENABLE_PIN 34
32
+
33
+#define E1_STEP_PIN 29
34
+#define E1_DIR_PIN 39
35
+#define E1_ENABLE_PIN 28
36
+
37
+#define E2_STEP_PIN 23
38
+#define E2_DIR_PIN 24
39
+#define E2_ENABLE_PIN 22
40
+
41
+#define SDPOWER -1
42
+#define SDSS 53
43
+#define LED_PIN 13
44
+
45
+#define FAN_PIN 7
46
+#define FAN2_PIN 6
47
+#define PS_ON_PIN 12
48
+#define KILL_PIN -1
49
+
50
+#define HEATER_0_PIN 9 // EXTRUDER 1
51
+#define HEATER_1_PIN 8 // EXTRUDER 2
52
+#define HEATER_2_PIN -1
53
+
54
+#if TEMP_SENSOR_0 == -1
55
+  #define TEMP_0_PIN 4 // ANALOG NUMBERING
56
+#else
57
+  #define TEMP_0_PIN 13 // ANALOG NUMBERING
58
+#endif
59
+
60
+
61
+#if TEMP_SENSOR_1 == -1
62
+  #define TEMP_1_PIN 8 // ANALOG NUMBERING
63
+#else
64
+  #define TEMP_1_PIN 15 // ANALOG NUMBERING
65
+#endif
66
+
67
+#define TEMP_2_PIN -1 // ANALOG NUMBERING
68
+
69
+#define HEATER_BED_PIN 10 // BED
70
+
71
+#if TEMP_SENSOR_BED == -1
72
+  #define TEMP_BED_PIN 8 // ANALOG NUMBERING
73
+#else
74
+  #define TEMP_BED_PIN 14 // ANALOG NUMBERING
75
+#endif
76
+
77
+#define BEEPER 64
78
+
79
+
80
+#define LCD_PINS_RS 14
81
+#define LCD_PINS_ENABLE 15
82
+#define LCD_PINS_D4 30
83
+#define LCD_PINS_D5 31
84
+#define LCD_PINS_D6 32
85
+#define LCD_PINS_D7 33
86
+
87
+
88
+// Buttons are directly attached using keypad
89
+#define BTN_EN1 61
90
+#define BTN_EN2 59
91
+#define BTN_ENC 43 //the click
92
+
93
+#define BLEN_C 2
94
+#define BLEN_B 1
95
+#define BLEN_A 0
96
+
97
+#define SDCARDDETECT -1  // Megatronics does not use this port
98
+
99
+// Encoder rotation values
100
+#define encrot0 0
101
+#define encrot1 2
102
+#define encrot2 3
103
+#define encrot3 1

+ 89
- 0
Marlin/pins_MEGATRONICS_3.h Ver fichero

@@ -0,0 +1,89 @@
1
+/**
2
+ * MegaTronics v3.0 pin assignments
3
+ */
4
+
5
+#ifndef __AVR_ATmega2560__
6
+  #error Oops!  Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu.
7
+#endif
8
+
9
+#define LARGE_FLASH        true
10
+
11
+#define X_STEP_PIN         58
12
+#define X_DIR_PIN          57
13
+#define X_ENABLE_PIN       59
14
+#define X_MIN_PIN          37
15
+#define X_MAX_PIN          40   // 2 // Max endstops default to disabled "-1", set to commented value to enable.
16
+
17
+#define Y_STEP_PIN         5 // A6
18
+#define Y_DIR_PIN          17 // A0
19
+#define Y_ENABLE_PIN       4
20
+#define Y_MIN_PIN          41
21
+#define Y_MAX_PIN          38   // 15
22
+
23
+#define Z_STEP_PIN         16 // A2
24
+#define Z_DIR_PIN          11 // A6
25
+#define Z_ENABLE_PIN       3 // A1
26
+#define Z_MIN_PIN          18
27
+#define Z_MAX_PIN          19
28
+
29
+#define E0_STEP_PIN        28
30
+#define E0_DIR_PIN         27
31
+#define E0_ENABLE_PIN      29
32
+
33
+#define E1_STEP_PIN        25
34
+#define E1_DIR_PIN         24
35
+#define E1_ENABLE_PIN      26
36
+
37
+#define E2_STEP_PIN        22
38
+#define E2_DIR_PIN         60
39
+#define E2_ENABLE_PIN      23
40
+
41
+#define SDPOWER -1
42
+#define SDSS 53
43
+#define LED_PIN 13
44
+
45
+#define PS_ON_PIN 12
46
+#define KILL_PIN -1
47
+
48
+#define HEATER_0_PIN 2
49
+#define HEATER_1_PIN 9
50
+#define HEATER_2_PIN 8
51
+#define HEATER_BED_PIN 10
52
+#define FAN_PIN 6
53
+#define FAN2_PIN 7
54
+
55
+#define TEMP_0_PIN   (TEMP_SENSOR_0 == -1 ?  11 : 15) // ANALOG NUMBERING
56
+#define TEMP_1_PIN   (TEMP_SENSOR_1 == -1 ?  10 : 13) // ANALOG NUMBERING
57
+#define TEMP_2_PIN   (TEMP_SENSOR_2 == -1 ?   9 : 12) // ANALOG NUMBERING
58
+#define TEMP_BED_PIN (TEMP_SENSOR_BED == -1 ? 8 : 14) // ANALOG NUMBERING
59
+
60
+#define BEEPER 61
61
+
62
+#define LCD_PINS_RS 32
63
+#define LCD_PINS_ENABLE 31
64
+#define LCD_PINS_D4 14
65
+#define LCD_PINS_D5 30
66
+#define LCD_PINS_D6 39
67
+#define LCD_PINS_D7 15
68
+
69
+#define SHIFT_CLK 43
70
+#define SHIFT_LD 35
71
+#define SHIFT_OUT 34
72
+#define SHIFT_EN 44
73
+
74
+// Buttons are directly attached using keypad
75
+#define BTN_EN1 44
76
+#define BTN_EN2 45
77
+#define BTN_ENC 33 // the click
78
+
79
+#define BLEN_C 2
80
+#define BLEN_B 1
81
+#define BLEN_A 0
82
+
83
+#define SDCARDDETECT -1	// Megatronics does not use this port
84
+
85
+// Encoder rotation values
86
+#define encrot0 0
87
+#define encrot1 2
88
+#define encrot2 3
89
+#define encrot3 1

+ 11
- 0
Marlin/pins_MELZI.h Ver fichero

@@ -0,0 +1,11 @@
1
+/**
2
+ * Melzi pin assignments
3
+ */
4
+
5
+#define SANGUINOLOLU_V_1_2
6
+
7
+#if defined(__AVR_ATmega1284P__)
8
+  #define LARGE_FLASH true
9
+#endif
10
+
11
+#include "pins_SANGUINOLOLU_11.h"

+ 15
- 0
Marlin/pins_MELZI_1284.h Ver fichero

@@ -0,0 +1,15 @@
1
+/**
2
+ * Melzi with ATmega1284 (MaKr3d version) pin assignments
3
+ */
4
+
5
+#define MELZI
6
+
7
+#undef MOTHERBOARD
8
+#define MOTHERBOARD BOARD_SANGUINOLOLU_11
9
+#define SANGUINOLOLU_V_1_2
10
+
11
+#if defined(__AVR_ATmega1284P__)
12
+  #define LARGE_FLASH true
13
+#endif
14
+
15
+#include "pins_SANGUINOLOLU_11.h"

+ 91
- 0
Marlin/pins_OMCA.h Ver fichero

@@ -0,0 +1,91 @@
1
+/**
2
+ * Open Motion controller with enable based extruders (Final!)
3
+ *
4
+ *                        ATMega644
5
+ *
6
+ *                        +---\/---+
7
+ *            (D 0) PB0  1|        |40  PA0 (AI 0 / D31)
8
+ *            (D 1) PB1  2|        |39  PA1 (AI 1 / D30)
9
+ *       INT2 (D 2) PB2  3|        |38  PA2 (AI 2 / D29)
10
+ *        PWM (D 3) PB3  4|        |37  PA3 (AI 3 / D28)
11
+ *        PWM (D 4) PB4  5|        |36  PA4 (AI 4 / D27)
12
+ *       MOSI (D 5) PB5  6|        |35  PA5 (AI 5 / D26)
13
+ *       MISO (D 6) PB6  7|        |34  PA6 (AI 6 / D25)
14
+ *        SCK (D 7) PB7  8|        |33  PA7 (AI 7 / D24)
15
+ *                  RST  9|        |32  AREF
16
+ *                  VCC 10|        |31  GND
17
+ *                  GND 11|        |30  AVCC
18
+ *                XTAL2 12|        |29  PC7 (D 23)
19
+ *                XTAL1 13|        |28  PC6 (D 22)
20
+ *       RX0 (D 8)  PD0 14|        |27  PC5 (D 21) TDI
21
+ *       TX0 (D 9)  PD1 15|        |26  PC4 (D 20) TDO
22
+ *  INT0 RX1 (D 10) PD2 16|        |25  PC3 (D 19) TMS
23
+ *  INT1 TX1 (D 11) PD3 17|        |24  PC2 (D 18) TCK
24
+ *       PWM (D 12) PD4 18|        |23  PC1 (D 17) SDA
25
+ *       PWM (D 13) PD5 19|        |22  PC0 (D 16) SCL
26
+ *       PWM (D 14) PD6 20|        |21  PD7 (D 15) PWM
27
+ *                        +--------+
28
+ *
29
+ * REF http://sanguino.cc/hardware
30
+ */
31
+
32
+#if !defined(__AVR_ATmega644P__) && !defined(__AVR_ATmega644__)
33
+  #error Oops!  Make sure you have 'Sanguino' selected from the 'Tools -> Boards' menu. (Final OMCA board)
34
+#endif
35
+
36
+#define X_STEP_PIN         26
37
+#define X_DIR_PIN          25
38
+#define X_ENABLE_PIN       10
39
+#define X_STOP_PIN         0
40
+
41
+#define Y_STEP_PIN         28
42
+#define Y_DIR_PIN          27
43
+#define Y_ENABLE_PIN       10
44
+#define Y_STOP_PIN         1
45
+
46
+#define Z_STEP_PIN         23
47
+#define Z_DIR_PIN          22
48
+#define Z_ENABLE_PIN       10
49
+#define Z_STOP_PIN         2
50
+
51
+#define E0_STEP_PIN         24
52
+#define E0_DIR_PIN          21
53
+#define E0_ENABLE_PIN       10
54
+
55
+// future proofing
56
+#define __FS  20
57
+#define __FD  19
58
+#define __GS  18
59
+#define __GD  13
60
+
61
+#define UNUSED_PWM           14 // PWM on LEFT connector
62
+
63
+#define E1_STEP_PIN         -1 // 21
64
+#define E1_DIR_PIN          -1 // 20
65
+#define E1_ENABLE_PIN       -1 // 19
66
+
67
+#define E2_STEP_PIN         -1 // 21
68
+#define E2_DIR_PIN          -1 // 20
69
+#define E2_ENABLE_PIN       -1 // 18
70
+
71
+#define SDPOWER            -1
72
+#define SDSS               11
73
+#define SDCARDDETECT       -1 // 10 optional also used as mode pin
74
+#define LED_PIN            -1
75
+#define FAN_PIN            14 // PWM on MIDDLE connector
76
+#define PS_ON_PIN          -1
77
+#define KILL_PIN           -1
78
+
79
+#define HEATER_0_PIN        3 // DONE PWM on RIGHT connector
80
+#define HEATER_1_PIN       -1
81
+#define HEATER_2_PIN       -1
82
+#define HEATER_1_PIN       -1
83
+#define HEATER_2_PIN       -1
84
+#define TEMP_0_PIN          0 // ANALOG INPUT NUMBERING
85
+#define TEMP_1_PIN          1 // ANALOG
86
+#define TEMP_2_PIN         -1 // 2
87
+#define HEATER_BED_PIN      4
88
+#define TEMP_BED_PIN        2 // 1,2 or I2C
89
+
90
+#define I2C_SCL       16
91
+#define I2C_SDA       17

+ 78
- 0
Marlin/pins_OMCA_A.h Ver fichero

@@ -0,0 +1,78 @@
1
+/**
2
+ * Open Motion controller with enable based extruders (Alpha!)
3
+ *
4
+ *                        ATMega644
5
+ *
6
+ *                        +---\/---+
7
+ *            (D 0) PB0  1|        |40  PA0 (AI 0 / D31)
8
+ *            (D 1) PB1  2|        |39  PA1 (AI 1 / D30)
9
+ *       INT2 (D 2) PB2  3|        |38  PA2 (AI 2 / D29)
10
+ *        PWM (D 3) PB3  4|        |37  PA3 (AI 3 / D28)
11
+ *        PWM (D 4) PB4  5|        |36  PA4 (AI 4 / D27)
12
+ *       MOSI (D 5) PB5  6|        |35  PA5 (AI 5 / D26)
13
+ *       MISO (D 6) PB6  7|        |34  PA6 (AI 6 / D25)
14
+ *        SCK (D 7) PB7  8|        |33  PA7 (AI 7 / D24)
15
+ *                  RST  9|        |32  AREF
16
+ *                  VCC 10|        |31  GND
17
+ *                  GND 11|        |30  AVCC
18
+ *                XTAL2 12|        |29  PC7 (D 23)
19
+ *                XTAL1 13|        |28  PC6 (D 22)
20
+ *       RX0 (D 8)  PD0 14|        |27  PC5 (D 21) TDI
21
+ *       TX0 (D 9)  PD1 15|        |26  PC4 (D 20) TDO
22
+ *  INT0 RX1 (D 10) PD2 16|        |25  PC3 (D 19) TMS
23
+ *  INT1 TX1 (D 11) PD3 17|        |24  PC2 (D 18) TCK
24
+ *       PWM (D 12) PD4 18|        |23  PC1 (D 17) SDA
25
+ *       PWM (D 13) PD5 19|        |22  PC0 (D 16) SCL
26
+ *       PWM (D 14) PD6 20|        |21  PD7 (D 15) PWM
27
+ *                        +--------+
28
+ *
29
+ */
30
+
31
+#ifndef __AVR_ATmega644__
32
+  #error Oops!  Make sure you have 'SanguinoA' selected from the 'Tools -> Boards' menu.
33
+#endif
34
+
35
+#define X_STEP_PIN         21
36
+#define X_DIR_PIN          20
37
+#define X_ENABLE_PIN       24
38
+#define X_STOP_PIN         0
39
+
40
+#define Y_STEP_PIN         23
41
+#define Y_DIR_PIN          22
42
+#define Y_ENABLE_PIN       24
43
+#define Y_STOP_PIN         1
44
+
45
+#define Z_STEP_PIN         26
46
+#define Z_DIR_PIN          25
47
+#define Z_ENABLE_PIN       24
48
+#define Z_STOP_PIN         2
49
+
50
+#define E0_STEP_PIN         28
51
+#define E0_DIR_PIN          27
52
+#define E0_ENABLE_PIN       24
53
+
54
+#define E1_STEP_PIN         -1 // 19
55
+#define E1_DIR_PIN          -1 // 18
56
+#define E1_ENABLE_PIN       24
57
+
58
+#define E2_STEP_PIN         -1 // 17
59
+#define E2_DIR_PIN          -1 // 16
60
+#define E2_ENABLE_PIN       24
61
+
62
+#define SDPOWER            -1
63
+#define SDSS               11
64
+#define SDCARDDETECT       -1 // 10 optional also used as mode pin
65
+#define LED_PIN            -1
66
+#define FAN_PIN            3
67
+#define PS_ON_PIN          -1
68
+#define KILL_PIN           -1
69
+
70
+#define HEATER_0_PIN       4
71
+#define HEATER_1_PIN       -1 // 12
72
+#define HEATER_2_PIN       -1 // 13
73
+#define TEMP_0_PIN          0 //D27   // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!!
74
+#define TEMP_1_PIN         -1 // 1
75
+#define TEMP_2_PIN         -1 // 2
76
+#define HEATER_BED_PIN     -1 // 14/15
77
+#define TEMP_BED_PIN       -1 // 1,2 or I2C
78
+/*  Unused (1) (2) (3) 4 5 6 7 8 9 10 11 12 13 (14) (15) (16) 17 (18) (19) (20) (21) (22) (23) 24 (25) (26) (27) 28 (29) (30) (31)  */

+ 88
- 0
Marlin/pins_PRINTRBOARD.h Ver fichero

@@ -0,0 +1,88 @@
1
+/**
2
+ * Printrboard pin assignments (AT90USB1286)
3
+ * Requires the Teensyduino software with Teensy++ 2.0 selected in Arduino IDE!
4
+ * http://www.pjrc.com/teensy/teensyduino.html
5
+ * See http://reprap.org/wiki/Printrboard for more info
6
+ */
7
+
8
+#ifndef __AVR_AT90USB1286__
9
+  #error Oops!  Make sure you have 'Teensy++ 2.0' selected from the 'Tools -> Boards' menu.
10
+#endif
11
+
12
+#ifdef AT90USBxx_TEENSYPP_ASSIGNMENTS  // use Teensyduino Teensy++2.0 pin assignments instead of Marlin traditional.
13
+  #error These Printrboard assignments depend on traditional Marlin assignments, not AT90USBxx_TEENSYPP_ASSIGNMENTS in fastio.h
14
+#endif
15
+
16
+#define AT90USB 1286  // Disable MarlinSerial etc.
17
+
18
+#define LARGE_FLASH        true
19
+
20
+#define X_STEP_PIN          0
21
+#define X_DIR_PIN           1
22
+#define X_ENABLE_PIN       39
23
+
24
+#define Y_STEP_PIN          2
25
+#define Y_DIR_PIN           3
26
+#define Y_ENABLE_PIN       38
27
+
28
+#define Z_STEP_PIN          4
29
+#define Z_DIR_PIN           5
30
+#define Z_ENABLE_PIN       23
31
+
32
+#define E0_STEP_PIN         6
33
+#define E0_DIR_PIN          7
34
+#define E0_ENABLE_PIN      19
35
+
36
+#define HEATER_0_PIN       21  // Extruder
37
+#define HEATER_1_PIN       46
38
+#define HEATER_2_PIN       47
39
+#define HEATER_BED_PIN     20
40
+
41
+// If soft or fast PWM is off then use Teensyduino pin numbering, Marlin
42
+// fastio pin numbering otherwise
43
+#ifdef FAN_SOFT_PWM || FAST_PWM_FAN
44
+  #define FAN_PIN          22
45
+#else
46
+  #define FAN_PIN          16
47
+#endif
48
+
49
+#define X_STOP_PIN         35
50
+#define Y_STOP_PIN          8
51
+#define Z_STOP_PIN         36
52
+#define TEMP_0_PIN          1  // Extruder / Analog pin numbering
53
+#define TEMP_BED_PIN        0  // Bed / Analog pin numbering
54
+
55
+#ifdef FILAMENT_SENSOR
56
+  #define FILWIDTH_PIN      2
57
+#endif
58
+
59
+#define TEMP_1_PIN         -1
60
+#define TEMP_2_PIN         -1
61
+
62
+#define SDPOWER            -1
63
+#define SDSS                8
64
+#define LED_PIN            -1
65
+#define PS_ON_PIN          -1
66
+#define KILL_PIN           -1
67
+#define ALARM_PIN          -1
68
+
69
+#ifndef SDSUPPORT
70
+// these pins are defined in the SD library if building with SD support
71
+  #define SCK_PIN           9
72
+  #define MISO_PIN         11
73
+  #define MOSI_PIN         10
74
+#endif
75
+
76
+#if defined(ULTRA_LCD) && defined(NEWPANEL)
77
+  //we have no buzzer installed
78
+  #define BEEPER -1
79
+  //LCD Pins
80
+  #ifdef LCD_I2C_PANELOLU2
81
+    #define BTN_EN1 27  //RX1 - fastio.h pin mapping 27
82
+    #define BTN_EN2 26  //TX1 - fastio.h pin mapping 26
83
+    #define BTN_ENC 43 //A3 - fastio.h pin mapping 43
84
+    #define SDSS   40 //use SD card on Panelolu2 (Teensyduino pin mapping)
85
+  #endif // LCD_I2C_PANELOLU2
86
+  //not connected to a pin
87
+  #define SDCARDDETECT -1    
88
+#endif // ULTRA_LCD && NEWPANEL

+ 165
- 0
Marlin/pins_RAMBO.h Ver fichero

@@ -0,0 +1,165 @@
1
+/**
2
+ * Rambo pin assignments
3
+ */
4
+
5
+#ifndef __AVR_ATmega2560__
6
+  #error Oops!  Make sure you have 'Arduino Mega 2560' selected from the 'Tools -> Boards' menu.
7
+#endif
8
+
9
+#define LARGE_FLASH true
10
+
11
+// Servo support
12
+#ifdef NUM_SERVOS
13
+  #define SERVO0_PIN       22 //motor header MX1
14
+  #if NUM_SERVOS > 1
15
+    #define SERVO1_PIN     23 //Motor header MX2
16
+    #if NUM_SERVOS > 2
17
+      #define SERVO2_PIN   24 //Motor header MX3
18
+      #if NUM_SERVOS > 3
19
+        #define SERVO2_PIN  5 //pwm header pin 5
20
+      #endif
21
+    #endif
22
+  #endif
23
+#endif
24
+
25
+#define X_STEP_PIN 37
26
+#define X_DIR_PIN 48
27
+#define X_MIN_PIN 12
28
+#define X_MAX_PIN 24
29
+#define X_ENABLE_PIN 29
30
+#define X_MS1_PIN 40
31
+#define X_MS2_PIN 41
32
+
33
+#define Y_STEP_PIN 36
34
+#define Y_DIR_PIN 49
35
+#define Y_MIN_PIN 11
36
+#define Y_MAX_PIN 23
37
+#define Y_ENABLE_PIN 28
38
+#define Y_MS1_PIN 69
39
+#define Y_MS2_PIN 39
40
+
41
+#define Z_STEP_PIN 35
42
+#define Z_DIR_PIN 47
43
+#define Z_MIN_PIN 10
44
+#define Z_MAX_PIN 30
45
+#define Z_ENABLE_PIN 27
46
+#define Z_MS1_PIN 68
47
+#define Z_MS2_PIN 67
48
+
49
+#define HEATER_BED_PIN 3
50
+#define TEMP_BED_PIN 2
51
+
52
+#define HEATER_0_PIN  9
53
+#define TEMP_0_PIN 0
54
+
55
+#define HEATER_1_PIN 7
56
+#define TEMP_1_PIN 1
57
+
58
+#ifdef BARICUDA
59
+  #define HEATER_2_PIN 6
60
+#else
61
+  #define HEATER_2_PIN -1
62
+#endif
63
+
64
+#define TEMP_2_PIN -1
65
+
66
+#define E0_STEP_PIN         34
67
+#define E0_DIR_PIN          43
68
+#define E0_ENABLE_PIN       26
69
+#define E0_MS1_PIN 65
70
+#define E0_MS2_PIN 66
71
+
72
+#define E1_STEP_PIN         33
73
+#define E1_DIR_PIN          42
74
+#define E1_ENABLE_PIN       25
75
+#define E1_MS1_PIN 63
76
+#define E1_MS2_PIN 64
77
+
78
+#define DIGIPOTSS_PIN 38
79
+#define DIGIPOT_CHANNELS {4,5,3,0,1} // X Y Z E0 E1 digipot channels to stepper driver mapping
80
+
81
+#define SDPOWER            -1
82
+#define SDSS               53
83
+#define LED_PIN            13
84
+#define FAN_PIN            8  
85
+
86
+/**********************************************************
87
+  Fan Pins
88
+  Fan_0 8
89
+  Fan_1 6
90
+  Fan_2 2
91
+***********************************************************/
92
+#define PS_ON_PIN          4
93
+#define KILL_PIN           -1 //80 with Smart Controller LCD
94
+#define SUICIDE_PIN        -1  //PIN that has to be turned on right after start, to keep power flowing.
95
+
96
+#ifdef ULTRA_LCD
97
+  #define KILL_PIN 80
98
+  #ifdef NEWPANEL
99
+   //arduino pin which triggers an piezzo beeper
100
+    #define BEEPER 79      // Beeper on AUX-4
101
+    #define LCD_PINS_RS 70
102
+    #define LCD_PINS_ENABLE 71
103
+    #define LCD_PINS_D4 72
104
+    #define LCD_PINS_D5 73
105
+    #define LCD_PINS_D6 74
106
+    #define LCD_PINS_D7 75
107
+
108
+    //buttons are directly attached using AUX-2
109
+    #define BTN_EN1 76
110
+    #define BTN_EN2 77
111
+    #define BTN_ENC 78  //the click
112
+
113
+    #define BLEN_C 2
114
+    #define BLEN_B 1
115
+    #define BLEN_A 0
116
+
117
+    #define SDCARDDETECT 81    // Ramps does not use this port
118
+
119
+    //encoder rotation values
120
+    #define encrot0 0
121
+    #define encrot1 2
122
+    #define encrot2 3
123
+    #define encrot3 1
124
+  #else //!NEWPANEL - old style panel with shift register
125
+    //arduino pin witch triggers an piezzo beeper
126
+    #define BEEPER 33    No Beeper added
127
+    //buttons are attached to a shift register
128
+    // Not wired this yet
129
+    // #define SHIFT_CLK 38
130
+    // #define SHIFT_LD 42
131
+    // #define SHIFT_OUT 40
132
+    // #define SHIFT_EN 17
133
+
134
+    #define LCD_PINS_RS 75
135
+    #define LCD_PINS_ENABLE 17
136
+    #define LCD_PINS_D4 23
137
+    #define LCD_PINS_D5 25
138
+    #define LCD_PINS_D6 27
139
+    #define LCD_PINS_D7 29
140
+
141
+    //encoder rotation values
142
+    #define encrot0 0
143
+    #define encrot1 2
144
+    #define encrot2 3
145
+    #define encrot3 1
146
+
147
+    //bits in the shift register that carry the buttons for:
148
+    // left up center down right red
149
+    #define BL_LE 7
150
+    #define BL_UP 6
151
+    #define BL_MI 5
152
+    #define BL_DW 4
153
+    #define BL_RI 3
154
+    #define BL_ST 2
155
+    #define BLEN_B 1
156
+    #define BLEN_A 0
157
+
158
+  #endif // !NEWPANEL
159
+
160
+#endif // ULTRA_LCD
161
+
162
+#ifdef FILAMENT_SENSOR
163
+  //Filip added pin for Filament sensor analog input 
164
+  #define FILWIDTH_PIN        3
165
+#endif

+ 0
- 0
Marlin/pins_RAMPS_13.h Ver fichero


Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio

Loading…
Cancelar
Guardar