Merge https://github.com/MarlinFirmware/Marlin into Bulgarian
Conflicts: Marlin/Configuration.h Marlin/configurator/config/Configuration.h Marlin/example_configurations/Felix/Configuration.h Marlin/example_configurations/Felix/Configuration_DUAL.h Marlin/example_configurations/Hephestos/Configuration.h Marlin/example_configurations/K8200/Configuration.h Marlin/example_configurations/SCARA/Configuration.h Marlin/example_configurations/WITBOX/Configuration.h Marlin/example_configurations/delta/generic/Configuration.h Marlin/example_configurations/delta/kossel_mini/Configuration.h Marlin/example_configurations/makibox/Configuration.h Marlin/example_configurations/tvrrug/Round2/Configuration.h Conflicts with my Chinese implementation resolved.
This commit is contained in:
commit
b4b19a6cbd
|
@ -3,14 +3,14 @@
|
|||
1. Install the latest non-beta arduino software IDE/toolset: http://www.arduino.cc/en/Main/Software
|
||||
2. Download the Marlin firmware
|
||||
- [Latest developement version](https://github.com/MarlinFirmware/Marlin/tree/Development)
|
||||
- [Stable version](https://github.com/MarlinFirmware/Marlin/tree/Development)
|
||||
- [Stable version]()
|
||||
3. In both cases use the "Download Zip" button on the right.
|
||||
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.
|
||||
5. Start the arduino IDE.
|
||||
6. Select Tools -> Board -> Arduino Mega 2560 or your microcontroller
|
||||
6. Select Tools -> Board -> Arduino Mega 2560 or your microcontroller
|
||||
7. Select the correct serial port in Tools ->Serial Port
|
||||
8. Open Marlin.pde or .ino
|
||||
9. Click the Verify/Compile button
|
||||
10. Click the Upload button. If all goes well the firmware is uploading
|
||||
|
||||
That's ok. Enjoy Silky Smooth Printing.
|
||||
That's ok. Enjoy Silky Smooth Printing.
|
||||
|
|
|
@ -1,108 +1,176 @@
|
|||
# Implemented G Codes
|
||||
## Implemented G Codes
|
||||
|
||||
## G Codes
|
||||
### Movement G and M Codes
|
||||
```
|
||||
G0 -> G1
|
||||
G1 - Coordinated Movement X Y Z E
|
||||
G2 - CW ARC
|
||||
G3 - CCW ARC
|
||||
G4 - Dwell S[seconds] or P[milliseconds]
|
||||
G92 - Set the "current position" to coordinates: X<xpos> Y<ypos> Z<zpos> E<epos>
|
||||
M0 - Wait for user, with optional prompt message (requires LCD controller)
|
||||
M0 Click When Ready ; show "Click When Ready" until the button is pressed.
|
||||
M1 - Same as M0
|
||||
M400 - Finish all moves
|
||||
M999 - Restart after being stopped by error
|
||||
```
|
||||
### SD Card M Codes
|
||||
```
|
||||
M20 - List SD card
|
||||
M21 - Init SD card
|
||||
M22 - Release SD card
|
||||
M23 - Select SD file (M23 filename.g)
|
||||
M24 - Start/resume SD print
|
||||
M25 - Pause SD print
|
||||
M26 - Set SD position in bytes (M26 S12345)
|
||||
M27 - Report SD print status
|
||||
M28 - Start SD write (M28 filename.g)
|
||||
M29 - Stop SD write
|
||||
M30 - Delete file from SD (M30 filename.g)
|
||||
M31 - Output time since last M109 or SD card start to serial
|
||||
M32 - Select file and start SD print (Can be used _while_ printing from SD card files):
|
||||
syntax "M32 /path/filename#", or "M32 S<startpos bytes> !filename#"
|
||||
Call gcode file : "M32 P !filename#" and return to caller file after finishing (similar to #include).
|
||||
The '#' is necessary when calling from within sd files, as it stops buffer prereading
|
||||
M540 - Enable/Disable "Stop SD Print on Endstop Hit" (req. ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED)
|
||||
M540 S<0|1>
|
||||
M928 - Start SD logging (M928 filename.g) - ended by M29
|
||||
```
|
||||
### Hardware Control
|
||||
```
|
||||
M42 - Change pin status via gcode: P<pin> S<value>. If P is omitted the onboard LED pin will be used.
|
||||
M42 P9 S1 ; set PIN 9 to 1.
|
||||
M80 - Turn on Power Supply
|
||||
M81 - Turn off Power Supply
|
||||
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.
|
||||
M85 - Set inactivity shutdown timer with parameter S<seconds>. Disable with "M85" or "M85 S0".
|
||||
M112 - Emergency stop. Requires hardware reset!!
|
||||
M226 - Wait for a pin to be in some state: P<pin number> S<pin state>
|
||||
```
|
||||
### Temperature M Codes
|
||||
```
|
||||
M104 - Set extruder target temp
|
||||
M105 - Read current temp
|
||||
M106 - Fan on
|
||||
M107 - Fan off
|
||||
M109 - Sxxx Wait for extruder current temp to reach target temp. Waits only when heating
|
||||
Rxxx Wait for extruder current temp to reach target temp. Waits when heating and cooling
|
||||
IF AUTOTEMP is enabled, S<mintemp> B<maxtemp> F<factor>. Exit autotemp by any M109 without F
|
||||
M140 - Set bed target temp
|
||||
M190 - Sxxx Wait for bed current temp to reach target temp. Waits only when heating
|
||||
Rxxx Wait for bed current temp to reach target temp. Waits when heating and cooling
|
||||
M301 - Set PID parameters P I and D
|
||||
M302 - Allow cold extrudes, or set the minimum extrude S<temperature>.
|
||||
M303 - PID relay autotune S<temperature> sets the target temperature. (default target temperature = 150C)
|
||||
M304 - Set bed PID parameters P I and D
|
||||
```
|
||||
### Message M Codes
|
||||
```
|
||||
M114 - Output current position to serial port
|
||||
M115 - Capabilities string
|
||||
M117 - Display message text on the LCD
|
||||
M119 - Output Endstop status to serial port
|
||||
```
|
||||
### Endstops M Codes
|
||||
```
|
||||
M120 - Enable endstop detection
|
||||
M121 - Disable endstop detection
|
||||
```
|
||||
### Special Features M Codes
|
||||
```
|
||||
M126 - Solenoid Air Valve Open (BariCUDA support by jmil)
|
||||
M127 - Solenoid Air Valve Closed (BariCUDA vent to atmospheric pressure by jmil)
|
||||
M128 - EtoP Open (BariCUDA EtoP = electricity to air pressure transducer by jmil)
|
||||
M129 - EtoP Closed (BariCUDA EtoP = electricity to air pressure transducer by jmil)
|
||||
M150 - Set BlinkM Color: R<red> U<green> B<blue> via I2C. Range: 0-255
|
||||
M240 - Trigger a camera to take a photograph. (Add to your per-layer GCode.)
|
||||
M250 - Set LCD contrast: C<0-63>
|
||||
M280 - Set servo position absolute. P<servo index> S<angle or microseconds>
|
||||
M300 - Play beep sound S<frequency Hz> P<duration ms>
|
||||
M380 - Activate solenoid on active extruder
|
||||
M381 - Disable all solenoids
|
||||
M600 - Pause for filament change X<xpos> Y<ypos> Z<lift> E<initial retract> L<later retract for removal>
|
||||
```
|
||||
### Units and Measures G and M Codes
|
||||
```
|
||||
G90 - Use Absolute Coordinates
|
||||
G91 - Use Relative Coordinates
|
||||
M82 - Set E codes absolute (default)
|
||||
M83 - Set E codes relative while in Absolute Coordinates (G90) mode
|
||||
M92 - Set axis_steps_per_unit - same syntax as G92
|
||||
M200 - Set filament diameter and set E axis units to mm^3 (use S0 to set back to mm).: D<mm>
|
||||
M201 - Set max acceleration in units/s^2 for print moves (M201 X1000 Y1000)
|
||||
M202 - Set max acceleration in units/s^2 for travel moves (M202 X1000 Y1000) Unused in Marlin!!
|
||||
M203 - Set maximum feedrate that your machine can sustain (M203 X200 Y200 Z300 E10000) in mm/sec
|
||||
M204 - Set default acceleration: P for Printing moves, R for Retract only (no X, Y, Z) moves and T for Travel (non printing) moves (ex. M204 P800 T3000 R9000) in mm/sec^2
|
||||
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
|
||||
M206 - Set additional homing offset
|
||||
M218 - Set hotend offset (in mm): T<extruder_number> X<offset_on_X> Y<offset_on_Y>
|
||||
M220 - Set speed factor override percentage: S<factor in percent>
|
||||
M221 - Set extrude factor override percentage: S<factor in percent>
|
||||
```
|
||||
### Firmware Retraction G and M Codes
|
||||
```
|
||||
G10 - Retract filament according to settings of M207
|
||||
G11 - Retract recover filament according to settings of M208
|
||||
M207 - Set retract length S[positive mm] F[feedrate mm/min] Z[additional zlift/hop], stays in mm regardless of M200 setting
|
||||
M208 - Set recover=unretract length S[positive mm surplus to the M207 S*] F[feedrate mm/s]
|
||||
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
|
||||
```
|
||||
### Z Probe G and M Codes
|
||||
```
|
||||
G28 - Home all Axis
|
||||
G29 - Detailed Z-Probe, probes the bed at 3 or more points. The printer must be homed with G28 before G29.
|
||||
G30 - Single Z Probe, probes bed at current XY location.
|
||||
G31 - Dock Z Probe sled (if enabled)
|
||||
G32 - Undock Z Probe sled (if enabled)
|
||||
M48 - Measure Z_Probe repeatability: P<points> X<xpos> Y<ypos> V<verbosity> E=engage L<legs of travel>
|
||||
As with G29, the E flag causes the probe to stow after each probe.
|
||||
M401 - Lower Z-probe (if present)
|
||||
M402 - Raise Z-probe (if present)
|
||||
```
|
||||
### Filament Diameter M Codes
|
||||
```
|
||||
M404 - Set (or display) Nominal Filament Diameter in mm: [N<diameter>] (e.g., 3mm or 1.75mm)
|
||||
M405 - Turn on Filament Sensor extrusion control: [D<distance>] to set distance (in cm) from sensor to extruder
|
||||
M406 - Turn off Filament Sensor extrusion control
|
||||
M407 - Display measured Filament Diameter
|
||||
```
|
||||
### EEPROM Settings M Codes
|
||||
```
|
||||
M500 - Store parameters in EEPROM
|
||||
M501 - Read parameters from EEPROM (if you need reset them after you changed them temporarily).
|
||||
M502 - Revert to the default "factory settings". You still need to store them in EEPROM afterwards if you want to.
|
||||
M503 - Print the current settings (from memory not from EEPROM). Use S0 to leave off headings.
|
||||
```
|
||||
### Delta M Codes
|
||||
```
|
||||
M665 - Set Delta configurations: L<diagonal rod> R<delta radius> S<segments/s>
|
||||
M666 - Set Delta endstop adjustment: X<x-adjustment> Y<y-adjustment> Z<z-adjustment>
|
||||
M605 - Set dual x-carriage movement mode: S<mode> [ X<duplication x-offset> R<duplication temp offset> ]
|
||||
```
|
||||
### Stepper Driver M Codes
|
||||
```
|
||||
M17 - Enable/Power all stepper motors
|
||||
M18 - Disable all stepper motors. (same as M84)
|
||||
M907 - Set digital trimpot motor current using axis codes.
|
||||
M908 - Control digital trimpot directly.
|
||||
M350 - Set microstepping mode.
|
||||
M351 - Toggle MS1 MS2 pins directly.
|
||||
```
|
||||
### SCARA M-Codes
|
||||
__May change to suit future G-code standards__
|
||||
```
|
||||
M360 - SCARA calibration: Move to cal-position ThetaA (0 deg calibration)
|
||||
M361 - SCARA calibration: Move to cal-position ThetaB (90 deg calibration - steps per degree)
|
||||
M362 - SCARA calibration: Move to cal-position PsiA (0 deg calibration)
|
||||
M363 - SCARA calibration: Move to cal-position PsiB (90 deg calibration - steps per degree)
|
||||
M364 - SCARA calibration: Move to cal-position PSIC (90 deg to Theta calibration position)
|
||||
M365 - SCARA calibration: Scaling factor, X, Y, Z axis
|
||||
```
|
||||
|
||||
* G0 -> G1
|
||||
* G1 - Coordinated Movement X Y Z E
|
||||
* G2 - CW ARC
|
||||
* G3 - CCW ARC
|
||||
* G4 - Dwell S[seconds] or P[milliseconds]
|
||||
* G10 - retract filament according to settings of M207
|
||||
* G11 - retract recover filament according to settings of M208
|
||||
* G28 - Home all Axis
|
||||
* G29 - Detailed Z-Probe, probes the bed at 3 points. You must be at the home position for this to work correctly.
|
||||
* G30 - Single Z Probe, probes bed at current XY location.
|
||||
* G31 - Dock Z Probe sled (if enabled)
|
||||
* G32 - Undock Z Probe sled (if enabled)
|
||||
* G90 - Use Absolute Coordinates
|
||||
* G91 - Use Relative Coordinates
|
||||
* G92 - Set current position to cordinates given
|
||||
|
||||
## M Codes
|
||||
* M0 - Unconditional stop - Wait for user to press a button on the LCD (Only if ULTRA_LCD is enabled)
|
||||
* M1 - Same as M0
|
||||
* M17 - Enable/Power all stepper motors
|
||||
* M18 - Disable all stepper motors; same as M84
|
||||
* M20 - List SD card
|
||||
* M21 - Init SD card
|
||||
* M22 - Release SD card
|
||||
* M23 - Select SD file (M23 filename.g)
|
||||
* M24 - Start/resume SD print
|
||||
* M25 - Pause SD print
|
||||
* M26 - Set SD position in bytes (M26 S12345)
|
||||
* M27 - Report SD print status
|
||||
* M28 - Start SD write (M28 filename.g)
|
||||
* M29 - Stop SD write
|
||||
* M30 - Delete file from SD (M30 filename.g)
|
||||
* M31 - Output time since last M109 or SD card start to serial
|
||||
* M32 - Select file and start SD print (Can be used when printing from SD card)
|
||||
* 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.
|
||||
* M80 - Turn on Power Supply
|
||||
* M81 - Turn off Power Supply
|
||||
* M82 - Set E codes absolute (default)
|
||||
* M83 - Set E codes relative while in Absolute Coordinates (G90) mode
|
||||
* 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.
|
||||
* M85 - Set inactivity shutdown timer with parameter S[seconds]. To disable set zero (default)
|
||||
* M92 - Set axis_steps_per_unit - same syntax as G92
|
||||
* M104 - Set extruder target temp
|
||||
* M105 - Read current temp
|
||||
* M106 - Fan on
|
||||
* M107 - Fan off
|
||||
* M109 - Sxxx Wait for extruder current temp to reach target temp. Waits only when heating
|
||||
* Rxxx Wait for extruder current temp to reach target temp. Waits when heating and cooling
|
||||
* M112 - Emergency stop
|
||||
* M114 - Output current position to serial port
|
||||
* M115 - Capabilities string
|
||||
* M117 - display message
|
||||
* M119 - Output Endstop status to serial port
|
||||
* M126 - Solenoid Air Valve Open (BariCUDA support by jmil)
|
||||
* M127 - Solenoid Air Valve Closed (BariCUDA vent to atmospheric pressure by jmil)
|
||||
* M128 - EtoP Open (BariCUDA EtoP = electricity to air pressure transducer by jmil)
|
||||
* M129 - EtoP Closed (BariCUDA EtoP = electricity to air pressure transducer by jmil)
|
||||
* M140 - Set bed target temp
|
||||
* M190 - Sxxx Wait for bed current temp to reach target temp. Waits only when heating
|
||||
* Rxxx Wait for bed current temp to reach target temp. Waits when heating and cooling
|
||||
* M200 - D[millimeters]- set filament diameter and set E axis units to cubic millimeters (use S0 to set back to millimeters).
|
||||
* M201 - Set max acceleration in units/s^2 for print moves (M201 X1000 Y1000)
|
||||
* M202 - Set max acceleration in units/s^2 for travel moves (M202 X1000 Y1000) Unused in Marlin!!
|
||||
* M203 - Set maximum feedrate that your machine can sustain (M203 X200 Y200 Z300 E10000) in mm/sec
|
||||
* M204 - Set default acceleration: P for Printing moves, R for Retract only (no X, Y, Z) moves and T for Travel (non printing) moves (ex. M204 P800 T3000 R9000) in mm/sec^2
|
||||
* 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
|
||||
* M206 - set additional homing offset
|
||||
* M207 - set retract length S[positive mm] F[feedrate mm/min] Z[additional zlift/hop], stays in mm regardless of M200 setting
|
||||
* M208 - set recover=unretract length S[positive mm surplus to the M207 S*] F[feedrate mm/min]
|
||||
* 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.
|
||||
* M218 - set hotend offset (in mm): T[extruder_number] X[offset_on_X] Y[offset_on_Y]
|
||||
* M220 - S[factor in percent] - set speed factor override percentage
|
||||
* M221 - S[factor in percent] - set extrude factor override percentage
|
||||
* M240 - Trigger a camera to take a photograph
|
||||
* M280 - Position an RC Servo P[index] S[angle/microseconds], ommit S to report back current angle
|
||||
* M300 - Play beep sound S[frequency Hz] P[duration ms]
|
||||
* M301 - Set PID parameters P I and D
|
||||
* M302 - Allow cold extrudes
|
||||
* M303 - PID relay autotune S[temperature] sets the target temperature. (default target temperature = 150C)
|
||||
* M304 - Set bed PID parameters P I and D
|
||||
* M350 - Set microstepping mode.
|
||||
* M351 - Toggle MS1 MS2 pins directly.
|
||||
* M400 - Finish all moves
|
||||
* M401 - Lower z-probe if present
|
||||
* M402 - Raise z-probe if present
|
||||
* M404 - N[dia in mm] Enter the nominal filament width (3mm, 1.75mm) or will display nominal filament width without parameters
|
||||
* M405 - Turn on Filament Sensor extrusion control. Optional D[delay in cm] to set delay in centimeters between sensor and extruder
|
||||
* M406 - Turn off Filament Sensor extrusion control
|
||||
* M407 - Displays measured filament diameter
|
||||
* M500 - stores paramters in EEPROM
|
||||
* M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).
|
||||
* M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to.
|
||||
* M503 - print the current settings (from memory not from EEPROM)
|
||||
* M540 - Use S[0|1] to enable or disable the stop SD card print on endstop hit (requires ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED)
|
||||
* M600 - Pause for filament change X[pos] Y[pos] Z[relative lift] E[initial retract] L[later retract distance for removal]
|
||||
* M907 - Set digital trimpot motor current using axis codes.
|
||||
* M908 - Control digital trimpot directly.
|
||||
* M928 - Start SD logging (M928 filename.g) - ended by M29
|
||||
* M999 - Restart after being stopped by error
|
||||
|
||||
# Comments
|
||||
## Comments
|
||||
|
||||
Comments start at a `;` (semicolon) and end with the end of the line:
|
||||
|
||||
|
@ -122,4 +190,4 @@ If you need to use a literal `;` somewhere (for example within `M117`), you can
|
|||
|
||||
M117 backslash: \\;and a comment
|
||||
|
||||
Please note that hosts should strip any comments before sending GCODE to the printer in order to save bandwidth.
|
||||
Please note that hosts should strip any comments before sending GCODE to the printer in order to save bandwidth.
|
||||
|
|
|
@ -47,11 +47,9 @@ We have two different technologies for the displays:
|
|||
* nl Dutch
|
||||
* ca Catalan
|
||||
* eu Basque-Euskera
|
||||
* cn Chinese
|
||||
* jp Japanese (Katakana)
|
||||
|
||||
and recently on [Thingiverse](http://www.thingiverse.com/) a new port to
|
||||
* jp [Japanese](http://www.thingiverse.com/thing:664397)
|
||||
|
||||
appeared.
|
||||
|
||||
## The Problem
|
||||
All of this languages, except the English, normally use extended symbol sets, not contained in US-ASCII.
|
||||
|
@ -133,6 +131,9 @@ We have two different technologies for the displays:
|
|||
|
||||
You'll find all translatable strings in 'language_en.h'. Please don't translate any strings from 'language.h', this may break the serial protocol.
|
||||
|
||||
For information about fonts see: Marlin\fonts\README.fonts
|
||||
|
||||
|
||||
## User Instructions
|
||||
Define your hardware and the wanted language in 'Configuration.h'.
|
||||
To find out what charset your hardware is, define language 'test' and compile. In the menu you will see two lines from the upper half of the charset.
|
||||
|
|
|
@ -130,7 +130,6 @@
|
|||
#define NEWPANEL
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef ULTIPANEL
|
||||
#define NEWPANEL //enable this if you have a click-encoder panel
|
||||
#define SDSUPPORT
|
||||
|
@ -144,16 +143,45 @@
|
|||
#endif
|
||||
#else //no panel but just LCD
|
||||
#ifdef ULTRA_LCD
|
||||
#ifdef DOGLCD // Change number of lines to match the 128x64 graphics display
|
||||
#define LCD_WIDTH 22
|
||||
#define LCD_HEIGHT 5
|
||||
#else
|
||||
#define LCD_WIDTH 16
|
||||
#define LCD_HEIGHT 2
|
||||
#endif
|
||||
#ifdef DOGLCD // Change number of lines to match the 128x64 graphics display
|
||||
#define LCD_WIDTH 22
|
||||
#define LCD_HEIGHT 5
|
||||
#else
|
||||
#define LCD_WIDTH 16
|
||||
#define LCD_HEIGHT 2
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef DOGLCD
|
||||
/* Custom characters defined in font font_6x10_marlin_symbols */
|
||||
// \x00 intentionally skipped to avoid problems in strings
|
||||
#define LCD_STR_REFRESH "\x01"
|
||||
#define LCD_STR_FOLDER "\x02"
|
||||
#define LCD_STR_ARROW_RIGHT "\x03"
|
||||
#define LCD_STR_UPLEVEL "\x04"
|
||||
#define LCD_STR_CLOCK "\x05"
|
||||
#define LCD_STR_FEEDRATE "\x06"
|
||||
#define LCD_STR_BEDTEMP "\x07"
|
||||
#define LCD_STR_THERMOMETER "\x08"
|
||||
#define LCD_STR_DEGREE "\x09"
|
||||
|
||||
#define LCD_STR_SPECIAL_MAX '\x09'
|
||||
// Maximum here is 0x1f because 0x20 is ' ' (space) and the normal charsets begin.
|
||||
// Better stay below 0x10 because DISPLAY_CHARSET_HD44780_WESTERN begins here.
|
||||
#else
|
||||
/* Custom characters defined in the first 8 characters of the LCD */
|
||||
#define LCD_STR_BEDTEMP "\x00" // this will have 'unexpected' results when used in a string!
|
||||
#define LCD_STR_DEGREE "\x01"
|
||||
#define LCD_STR_THERMOMETER "\x02"
|
||||
#define LCD_STR_UPLEVEL "\x03"
|
||||
#define LCD_STR_REFRESH "\x04"
|
||||
#define LCD_STR_FOLDER "\x05"
|
||||
#define LCD_STR_FEEDRATE "\x06"
|
||||
#define LCD_STR_CLOCK "\x07"
|
||||
#define LCD_STR_ARROW_RIGHT ">" /* from the default character set */
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Default LCD contrast for dogm-like LCD displays
|
||||
*/
|
||||
|
@ -161,6 +189,13 @@
|
|||
#define DEFAULT_LCD_CONTRAST 32
|
||||
#endif
|
||||
|
||||
#ifdef DOGLCD
|
||||
#define HAS_LCD_CONTRAST
|
||||
#ifdef U8GLIB_ST7920
|
||||
#undef HAS_LCD_CONTRAST
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#else // CONFIGURATION_LCD
|
||||
|
||||
#define CONDITIONALS_H
|
||||
|
|
|
@ -41,7 +41,6 @@ Here are some standard links for getting your machine calibrated:
|
|||
// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
|
||||
// build by the user have been successfully uploaded into firmware.
|
||||
#define STRING_VERSION "1.0.3 dev"
|
||||
#define STRING_URL "reprap.org"
|
||||
#define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time
|
||||
#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes.
|
||||
#define STRING_SPLASH_LINE1 "v" STRING_VERSION // will be shown during bootup in line 1
|
||||
|
@ -68,8 +67,9 @@ Here are some standard links for getting your machine calibrated:
|
|||
#define MOTHERBOARD BOARD_RAMPS_13_EFB
|
||||
#endif
|
||||
|
||||
// Define this to set a custom name for your generic Mendel,
|
||||
// #define CUSTOM_MENDEL_NAME "This Mendel"
|
||||
// Optional custom name for your RepStrap or other custom machine
|
||||
// Displayed in the LCD "Ready" message
|
||||
// #define CUSTOM_MACHINE_NAME "3D Printer"
|
||||
|
||||
// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
|
||||
// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
|
||||
|
@ -363,6 +363,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic
|
|||
#define E_ENABLE_ON 0 // For all extruders
|
||||
|
||||
// Disables axis when it's not being used.
|
||||
// WARNING: When motors turn off there is a chance of losing position accuracy!
|
||||
#define DISABLE_X false
|
||||
#define DISABLE_Y false
|
||||
#define DISABLE_Z false
|
||||
|
@ -420,7 +421,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic
|
|||
//#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined.
|
||||
|
||||
//===========================================================================
|
||||
//============================ Manual Bed Leveling ==========================
|
||||
//============================ Mesh Bed Leveling ============================
|
||||
//===========================================================================
|
||||
|
||||
// #define MANUAL_BED_LEVELING // Add display menu option for bed leveling
|
||||
|
@ -640,7 +641,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic
|
|||
// @section lcd
|
||||
|
||||
// Define your display language below. Replace (en) with your language code and uncomment.
|
||||
// en, pl, fr, de, es, ru, bg, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, test
|
||||
// en, pl, fr, de, es, ru, bg, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, cn, test
|
||||
// See also language.h
|
||||
#define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en)
|
||||
|
||||
|
@ -660,10 +661,9 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic
|
|||
//#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking
|
||||
//#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
|
||||
//#define ULTIPANEL //the UltiPanel as on Thingiverse
|
||||
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
||||
//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click
|
||||
// 0 to disable buzzer feedback
|
||||
|
||||
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
||||
// 0 to disable buzzer feedback. Test with M300 S<frequency Hz> P<duration ms>
|
||||
// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
|
||||
// http://reprap.org/wiki/PanelOne
|
||||
//#define PANEL_ONE
|
||||
|
@ -791,13 +791,13 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic
|
|||
// Uncomment below to enable
|
||||
//#define FILAMENT_SENSOR
|
||||
|
||||
#define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2)
|
||||
#define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel
|
||||
#define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2)
|
||||
#define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel
|
||||
|
||||
#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
|
||||
#define MEASURED_UPPER_LIMIT 3.30 //upper limit factor used for sensor reading validation in mm
|
||||
#define MEASURED_LOWER_LIMIT 1.90 //lower limit factor for sensor reading validation in mm
|
||||
#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)
|
||||
#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
|
||||
#define MEASURED_UPPER_LIMIT 3.3 //upper limit factor used for sensor reading validation in mm
|
||||
#define MEASURED_LOWER_LIMIT 1.9 //lower limit factor for sensor reading validation in mm
|
||||
#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)
|
||||
|
||||
//defines used in the code
|
||||
#define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially
|
||||
|
|
|
@ -195,6 +195,9 @@
|
|||
#define HOMING_BUMP_DIVISOR {2, 2, 4} // Re-Bump Speed Divisor (Divides the Homing Feedrate)
|
||||
//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially.
|
||||
|
||||
// When G28 is called, this option will make Y home before X
|
||||
// #define HOME_Y_BEFORE_X
|
||||
|
||||
// @section machine
|
||||
|
||||
#define AXIS_RELATIVE_MODES {false, false, false, false}
|
||||
|
@ -258,7 +261,6 @@
|
|||
#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
|
||||
#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value
|
||||
#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value
|
||||
//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value
|
||||
|
||||
//#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/
|
||||
#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
|
||||
|
@ -355,7 +357,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
|||
//#define HEATERS_PARALLEL
|
||||
|
||||
//===========================================================================
|
||||
//=============================Buffers ============================
|
||||
//================================= Buffers =================================
|
||||
//===========================================================================
|
||||
|
||||
// @section hidden
|
||||
|
|
|
@ -267,8 +267,8 @@ endif
|
|||
CXXSRC = WMath.cpp WString.cpp Print.cpp Marlin_main.cpp \
|
||||
MarlinSerial.cpp Sd2Card.cpp SdBaseFile.cpp SdFatUtil.cpp \
|
||||
SdFile.cpp SdVolume.cpp motion_control.cpp planner.cpp \
|
||||
stepper.cpp temperature.cpp cardreader.cpp ConfigurationStore.cpp \
|
||||
watchdog.cpp SPI.cpp Servo.cpp Tone.cpp ultralcd.cpp digipot_mcp4451.cpp \
|
||||
stepper.cpp temperature.cpp cardreader.cpp configuration_store.cpp \
|
||||
watchdog.cpp SPI.cpp servo.cpp Tone.cpp ultralcd.cpp digipot_mcp4451.cpp \
|
||||
vector_3.cpp qr_solve.cpp
|
||||
ifeq ($(LIQUID_TWI2), 0)
|
||||
CXXSRC += LiquidCrystal.cpp
|
||||
|
|
|
@ -31,6 +31,10 @@
|
|||
#define TEST(n,b) (((n)&BIT(b))!=0)
|
||||
#define RADIANS(d) ((d)*M_PI/180.0)
|
||||
#define DEGREES(r) ((d)*180.0/M_PI)
|
||||
#define NOLESS(v,n) do{ if (v < n) v = n; }while(0)
|
||||
#define NOMORE(v,n) do{ if (v > n) v = n; }while(0)
|
||||
|
||||
typedef unsigned long millis_t;
|
||||
|
||||
// Arduino < 1.0.0 does not define this, so we need to do it ourselves
|
||||
#ifndef analogInputToDigitalPin
|
||||
|
@ -219,18 +223,30 @@ void Stop();
|
|||
void filrunout();
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Debug flags - not yet widely applied
|
||||
*/
|
||||
enum DebugFlags {
|
||||
DEBUG_ECHO = BIT(0),
|
||||
DEBUG_INFO = BIT(1),
|
||||
DEBUG_ERRORS = BIT(2),
|
||||
DEBUG_DRYRUN = BIT(3),
|
||||
DEBUG_COMMUNICATION = BIT(4)
|
||||
};
|
||||
extern uint8_t marlin_debug_flags;
|
||||
|
||||
extern bool Running;
|
||||
inline bool IsRunning() { return Running; }
|
||||
inline bool IsStopped() { return !Running; }
|
||||
|
||||
bool enquecommand(const char *cmd); //put a single ASCII command at the end of the current buffer or return false when it is full
|
||||
void enquecommands_P(const char *cmd); //put one or many ASCII commands at the end of the current buffer, read from flash
|
||||
bool enqueuecommand(const char *cmd); //put a single ASCII command at the end of the current buffer or return false when it is full
|
||||
void enqueuecommands_P(const char *cmd); //put one or many ASCII commands at the end of the current buffer, read from flash
|
||||
|
||||
void prepare_arc_move(char isclockwise);
|
||||
void clamp_to_software_endstops(float target[3]);
|
||||
|
||||
extern unsigned long previous_millis_cmd;
|
||||
inline void refresh_cmd_timeout() { previous_millis_cmd = millis(); }
|
||||
extern millis_t previous_cmd_ms;
|
||||
inline void refresh_cmd_timeout() { previous_cmd_ms = millis(); }
|
||||
|
||||
#ifdef FAST_PWM_FAN
|
||||
void setPwmFrequency(uint8_t pin, int val);
|
||||
|
@ -243,7 +259,7 @@ inline void refresh_cmd_timeout() { previous_millis_cmd = millis(); }
|
|||
|
||||
extern float homing_feedrate[];
|
||||
extern bool axis_relative_modes[];
|
||||
extern int feedmultiply;
|
||||
extern int feedrate_multiplier;
|
||||
extern bool volumetric_enabled;
|
||||
extern int extruder_multiply[EXTRUDERS]; // sets extrude multiply factor (in percent) for each extruder individually
|
||||
extern float filament_size[EXTRUDERS]; // cross-sectional area of filament (in millimeters), typically around 1.75 or 2.85, 0 disables the volumetric calculations for the extruder.
|
||||
|
@ -273,6 +289,10 @@ extern bool axis_known_position[3];
|
|||
extern float zprobe_zoffset;
|
||||
#endif
|
||||
|
||||
#ifdef PREVENT_DANGEROUS_EXTRUDE
|
||||
extern float extrude_min_temp;
|
||||
#endif
|
||||
|
||||
extern int fanSpeed;
|
||||
|
||||
#ifdef BARICUDA
|
||||
|
@ -301,8 +321,8 @@ extern int fanSpeed;
|
|||
extern float retract_recover_length, retract_recover_length_swap, retract_recover_feedrate;
|
||||
#endif
|
||||
|
||||
extern unsigned long starttime;
|
||||
extern unsigned long stoptime;
|
||||
extern millis_t print_job_start_ms;
|
||||
extern millis_t print_job_stop_ms;
|
||||
|
||||
// Handling multiple extruders pins
|
||||
extern uint8_t active_extruder;
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -87,8 +87,8 @@
|
|||
/**
|
||||
* Required LCD language
|
||||
*/
|
||||
#if !defined(DOGLCD) && defined(ULTRA_LCD) && !defined(DISPLAY_CHARSET_HD44780_JAPAN) && !defined(DISPLAY_CHARSET_HD44780_WESTERN)
|
||||
#error You must enable either DISPLAY_CHARSET_HD44780_JAPAN or DISPLAY_CHARSET_HD44780_WESTERN for your LCD controller.
|
||||
#if !defined(DOGLCD) && defined(ULTRA_LCD) && !defined(DISPLAY_CHARSET_HD44780_JAPAN) && !defined(DISPLAY_CHARSET_HD44780_WESTERN)&& !defined(DISPLAY_CHARSET_HD44780_CYRILLIC)
|
||||
#error You must enable either DISPLAY_CHARSET_HD44780_JAPAN or DISPLAY_CHARSET_HD44780_WESTERN or DISPLAY_CHARSET_HD44780_CYRILLIC for your LCD controller.
|
||||
#endif
|
||||
|
||||
/**
|
||||
|
@ -101,6 +101,9 @@
|
|||
#ifdef ENABLE_AUTO_BED_LEVELING
|
||||
#error Select ENABLE_AUTO_BED_LEVELING or MESH_BED_LEVELING, not both
|
||||
#endif
|
||||
#if MESH_NUM_X_POINTS > 7 || MESH_NUM_Y_POINTS > 7
|
||||
#error MESH_NUM_X_POINTS and MESH_NUM_Y_POINTS need to be less than 8
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/**
|
||||
|
@ -183,7 +186,7 @@
|
|||
#define Y_PROBE_ERROR
|
||||
#endif
|
||||
#ifdef Y_PROBE_ERROR
|
||||
#error The Y axis probing range is to small to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS
|
||||
#error The Y axis probing range is too small to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS
|
||||
#endif
|
||||
|
||||
#undef PROBE_SIZE_X
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Servo.cpp - Interrupt driven Servo library for Arduino using 16 bit timers- Version 2
|
||||
servo.cpp - Interrupt driven Servo library for Arduino using 16 bit timers- Version 2
|
||||
Copyright (c) 2009 Michael Margolis. All right reserved.
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Servo.h - Interrupt driven Servo library for Arduino using 16 bit timers- Version 2
|
||||
servo.h - Interrupt driven Servo library for Arduino using 16 bit timers- Version 2
|
||||
Copyright (c) 2009 Michael Margolis. All right reserved.
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
|
@ -42,8 +42,8 @@
|
|||
detach() - Stops an attached servos from pulsing its i/o pin.
|
||||
*/
|
||||
|
||||
#ifndef Servo_h
|
||||
#define Servo_h
|
||||
#ifndef servo_h
|
||||
#define servo_h
|
||||
|
||||
#include <inttypes.h>
|
||||
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
/*
|
||||
BlinkM.cpp - Library for controlling a BlinkM over i2c
|
||||
blinkm.cpp - Library for controlling a BlinkM over i2c
|
||||
Created by Tim Koster, August 21 2013.
|
||||
*/
|
||||
#include "Marlin.h"
|
||||
#ifdef BLINKM
|
||||
|
||||
#include "BlinkM.h"
|
||||
#include "blinkm.h"
|
||||
|
||||
void SendColors(byte red, byte grn, byte blu) {
|
||||
Wire.begin();
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
BlinkM.h
|
||||
blinkm.h
|
||||
Library header file for BlinkM library
|
||||
*/
|
||||
#if ARDUINO >= 100
|
|
@ -25,7 +25,7 @@ CardReader::CardReader() {
|
|||
OUT_WRITE(SDPOWER, HIGH);
|
||||
#endif //SDPOWER
|
||||
|
||||
autostart_atmillis = millis() + 5000;
|
||||
next_autostart_ms = millis() + 5000;
|
||||
}
|
||||
|
||||
char *createFilename(char *buffer, const dir_t &p) { //buffer > 12characters
|
||||
|
@ -397,7 +397,7 @@ void CardReader::write_command(char *buf) {
|
|||
}
|
||||
|
||||
void CardReader::checkautostart(bool force) {
|
||||
if (!force && (!autostart_stilltocheck || autostart_atmillis < millis()))
|
||||
if (!force && (!autostart_stilltocheck || next_autostart_ms < millis()))
|
||||
return;
|
||||
|
||||
autostart_stilltocheck = false;
|
||||
|
@ -421,8 +421,8 @@ void CardReader::checkautostart(bool force) {
|
|||
if (p.name[9] != '~' && strncmp((char*)p.name, autoname, 5) == 0) {
|
||||
char cmd[30];
|
||||
sprintf_P(cmd, PSTR("M23 %s"), autoname);
|
||||
enquecommand(cmd);
|
||||
enquecommands_P(PSTR("M24"));
|
||||
enqueuecommand(cmd);
|
||||
enqueuecommands_P(PSTR("M24"));
|
||||
found = true;
|
||||
}
|
||||
}
|
||||
|
@ -508,7 +508,7 @@ void CardReader::printingHasFinished() {
|
|||
sdprinting = false;
|
||||
if (SD_FINISHED_STEPPERRELEASE) {
|
||||
//finishAndDisableSteppers();
|
||||
enquecommands_P(PSTR(SD_FINISHED_RELEASECOMMAND));
|
||||
enqueuecommands_P(PSTR(SD_FINISHED_RELEASECOMMAND));
|
||||
}
|
||||
autotempShutdown();
|
||||
}
|
||||
|
|
|
@ -62,7 +62,7 @@ private:
|
|||
uint32_t filespos[SD_PROCEDURE_DEPTH];
|
||||
char filenames[SD_PROCEDURE_DEPTH][MAXPATHNAMELENGTH];
|
||||
uint32_t filesize;
|
||||
unsigned long autostart_atmillis;
|
||||
millis_t next_autostart_ms;
|
||||
uint32_t sdpos;
|
||||
|
||||
bool autostart_stilltocheck; //the sd start is delayed, because otherwise the serial cannot answer fast enought to make contact with the hostsoftware.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/**
|
||||
* ConfigurationStore.cpp
|
||||
* configuration_store.cpp
|
||||
*
|
||||
* Configuration and EEPROM storage
|
||||
*
|
||||
|
@ -20,72 +20,72 @@
|
|||
* V19 EEPROM Layout:
|
||||
*
|
||||
* ver
|
||||
* axis_steps_per_unit (x4)
|
||||
* max_feedrate (x4)
|
||||
* max_acceleration_units_per_sq_second (x4)
|
||||
* acceleration
|
||||
* retract_acceleration
|
||||
* travel_acceleration
|
||||
* minimumfeedrate
|
||||
* mintravelfeedrate
|
||||
* minsegmenttime
|
||||
* max_xy_jerk
|
||||
* max_z_jerk
|
||||
* max_e_jerk
|
||||
* home_offset (x3)
|
||||
* M92 XYZE axis_steps_per_unit (x4)
|
||||
* M203 XYZE max_feedrate (x4)
|
||||
* M201 XYZE max_acceleration_units_per_sq_second (x4)
|
||||
* M204 P acceleration
|
||||
* M204 R retract_acceleration
|
||||
* M204 T travel_acceleration
|
||||
* M205 S minimumfeedrate
|
||||
* M205 T mintravelfeedrate
|
||||
* M205 B minsegmenttime
|
||||
* M205 X max_xy_jerk
|
||||
* M205 Z max_z_jerk
|
||||
* M205 E max_e_jerk
|
||||
* M206 XYZ home_offset (x3)
|
||||
*
|
||||
* Mesh bed leveling:
|
||||
* active
|
||||
* mesh_num_x
|
||||
* mesh_num_y
|
||||
* z_values[][]
|
||||
* zprobe_zoffset
|
||||
* M420 S active
|
||||
* mesh_num_x (set in firmware)
|
||||
* mesh_num_y (set in firmware)
|
||||
* M421 XYZ z_values[][]
|
||||
* M851 zprobe_zoffset
|
||||
*
|
||||
* DELTA:
|
||||
* endstop_adj (x3)
|
||||
* delta_radius
|
||||
* delta_diagonal_rod
|
||||
* delta_segments_per_second
|
||||
* M666 XYZ endstop_adj (x3)
|
||||
* M665 R delta_radius
|
||||
* M665 L delta_diagonal_rod
|
||||
* M665 S delta_segments_per_second
|
||||
*
|
||||
* ULTIPANEL:
|
||||
* plaPreheatHotendTemp
|
||||
* plaPreheatHPBTemp
|
||||
* plaPreheatFanSpeed
|
||||
* absPreheatHotendTemp
|
||||
* absPreheatHPBTemp
|
||||
* absPreheatFanSpeed
|
||||
* M145 S0 H plaPreheatHotendTemp
|
||||
* M145 S0 B plaPreheatHPBTemp
|
||||
* M145 S0 F plaPreheatFanSpeed
|
||||
* M145 S1 H absPreheatHotendTemp
|
||||
* M145 S1 B absPreheatHPBTemp
|
||||
* M145 S1 F absPreheatFanSpeed
|
||||
*
|
||||
* PIDTEMP:
|
||||
* Kp[0], Ki[0], Kd[0], Kc[0]
|
||||
* Kp[1], Ki[1], Kd[1], Kc[1]
|
||||
* Kp[2], Ki[2], Kd[2], Kc[2]
|
||||
* Kp[3], Ki[3], Kd[3], Kc[3]
|
||||
* M301 E0 PIDC Kp[0], Ki[0], Kd[0], Kc[0]
|
||||
* M301 E1 PIDC Kp[1], Ki[1], Kd[1], Kc[1]
|
||||
* M301 E2 PIDC Kp[2], Ki[2], Kd[2], Kc[2]
|
||||
* M301 E3 PIDC Kp[3], Ki[3], Kd[3], Kc[3]
|
||||
*
|
||||
* PIDTEMPBED:
|
||||
* bedKp, bedKi, bedKd
|
||||
* M304 PID bedKp, bedKi, bedKd
|
||||
*
|
||||
* DOGLCD:
|
||||
* lcd_contrast
|
||||
* M250 C lcd_contrast
|
||||
*
|
||||
* SCARA:
|
||||
* axis_scaling (x3)
|
||||
* M365 XYZ axis_scaling (x3)
|
||||
*
|
||||
* FWRETRACT:
|
||||
* autoretract_enabled
|
||||
* retract_length
|
||||
* retract_length_swap
|
||||
* retract_feedrate
|
||||
* retract_zlift
|
||||
* retract_recover_length
|
||||
* retract_recover_length_swap
|
||||
* retract_recover_feedrate
|
||||
* M209 S autoretract_enabled
|
||||
* M207 S retract_length
|
||||
* M207 W retract_length_swap
|
||||
* M207 F retract_feedrate
|
||||
* M207 Z retract_zlift
|
||||
* M208 S retract_recover_length
|
||||
* M208 W retract_recover_length_swap
|
||||
* M208 F retract_recover_feedrate
|
||||
*
|
||||
* volumetric_enabled
|
||||
* M200 D volumetric_enabled (D>0 makes this enabled)
|
||||
*
|
||||
* filament_size (x4)
|
||||
* M200 T D filament_size (x4) (T0..3)
|
||||
*
|
||||
* Z_DUAL_ENDSTOPS
|
||||
* z_endstop_adj
|
||||
* Z_DUAL_ENDSTOPS:
|
||||
* M666 Z z_endstop_adj
|
||||
*
|
||||
*/
|
||||
#include "Marlin.h"
|
||||
|
@ -93,11 +93,11 @@
|
|||
#include "planner.h"
|
||||
#include "temperature.h"
|
||||
#include "ultralcd.h"
|
||||
#include "ConfigurationStore.h"
|
||||
#include "configuration_store.h"
|
||||
|
||||
#ifdef MESH_BED_LEVELING
|
||||
#include "mesh_bed_leveling.h"
|
||||
#endif // MESH_BED_LEVELING
|
||||
#include "mesh_bed_leveling.h"
|
||||
#endif
|
||||
|
||||
void _EEPROM_writeData(int &pos, uint8_t* value, uint8_t size) {
|
||||
uint8_t c;
|
||||
|
@ -122,7 +122,9 @@ void _EEPROM_readData(int &pos, uint8_t* value, uint8_t size) {
|
|||
#define EEPROM_WRITE_VAR(pos, value) _EEPROM_writeData(pos, (uint8_t*)&value, sizeof(value))
|
||||
#define EEPROM_READ_VAR(pos, value) _EEPROM_readData(pos, (uint8_t*)&value, sizeof(value))
|
||||
|
||||
//======================================================================================
|
||||
/**
|
||||
* Store Configuration Settings - M500
|
||||
*/
|
||||
|
||||
#define DUMMY_PID_VALUE 3000.0f
|
||||
|
||||
|
@ -166,9 +168,7 @@ void Config_StoreSettings() {
|
|||
EEPROM_WRITE_VAR(i, mesh_num_x);
|
||||
EEPROM_WRITE_VAR(i, mesh_num_y);
|
||||
dummy = 0.0f;
|
||||
for (int q=0; q<mesh_num_x*mesh_num_y; q++) {
|
||||
EEPROM_WRITE_VAR(i, dummy);
|
||||
}
|
||||
for (int q=0; q<mesh_num_x*mesh_num_y; q++) EEPROM_WRITE_VAR(i, dummy);
|
||||
#endif // MESH_BED_LEVELING
|
||||
|
||||
#ifndef ENABLE_AUTO_BED_LEVELING
|
||||
|
@ -235,7 +235,7 @@ void Config_StoreSettings() {
|
|||
EEPROM_WRITE_VAR(i, bedKi);
|
||||
EEPROM_WRITE_VAR(i, bedKd);
|
||||
|
||||
#ifndef DOGLCD
|
||||
#ifndef HAS_LCD_CONTRAST
|
||||
int lcd_contrast = 32;
|
||||
#endif
|
||||
EEPROM_WRITE_VAR(i, lcd_contrast);
|
||||
|
@ -286,6 +286,10 @@ void Config_StoreSettings() {
|
|||
SERIAL_ECHOLNPGM(" bytes)");
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Configuration Settings - M501
|
||||
*/
|
||||
|
||||
void Config_RetrieveSettings() {
|
||||
|
||||
int i = EEPROM_OFFSET;
|
||||
|
@ -319,30 +323,21 @@ void Config_RetrieveSettings() {
|
|||
EEPROM_READ_VAR(i, max_e_jerk);
|
||||
EEPROM_READ_VAR(i, home_offset);
|
||||
|
||||
uint8_t mesh_num_x = 0;
|
||||
uint8_t mesh_num_y = 0;
|
||||
uint8_t dummy_uint8 = 0, mesh_num_x = 0, mesh_num_y = 0;
|
||||
EEPROM_READ_VAR(i, dummy_uint8);
|
||||
EEPROM_READ_VAR(i, mesh_num_x);
|
||||
EEPROM_READ_VAR(i, mesh_num_y);
|
||||
#ifdef MESH_BED_LEVELING
|
||||
EEPROM_READ_VAR(i, mbl.active);
|
||||
EEPROM_READ_VAR(i, mesh_num_x);
|
||||
EEPROM_READ_VAR(i, mesh_num_y);
|
||||
if (mesh_num_x != MESH_NUM_X_POINTS ||
|
||||
mesh_num_y != MESH_NUM_Y_POINTS) {
|
||||
mbl.reset();
|
||||
for (int q=0; q<mesh_num_x*mesh_num_y; q++) {
|
||||
EEPROM_READ_VAR(i, dummy);
|
||||
}
|
||||
} else {
|
||||
mbl.active = dummy_uint8;
|
||||
if (mesh_num_x == MESH_NUM_X_POINTS && mesh_num_y == MESH_NUM_Y_POINTS) {
|
||||
EEPROM_READ_VAR(i, mbl.z_values);
|
||||
} else {
|
||||
mbl.reset();
|
||||
for (int q = 0; q < mesh_num_x * mesh_num_y; q++) EEPROM_READ_VAR(i, dummy);
|
||||
}
|
||||
#else
|
||||
uint8_t dummy_uint8 = 0;
|
||||
EEPROM_READ_VAR(i, dummy_uint8);
|
||||
EEPROM_READ_VAR(i, mesh_num_x);
|
||||
EEPROM_READ_VAR(i, mesh_num_y);
|
||||
for (int q=0; q<mesh_num_x*mesh_num_y; q++) {
|
||||
EEPROM_READ_VAR(i, dummy);
|
||||
}
|
||||
#endif // MESH_BED_LEVELING
|
||||
for (int q = 0; q < mesh_num_x * mesh_num_y; q++) EEPROM_READ_VAR(i, dummy);
|
||||
#endif // MESH_BED_LEVELING
|
||||
|
||||
#ifndef ENABLE_AUTO_BED_LEVELING
|
||||
float zprobe_zoffset = 0;
|
||||
|
@ -412,7 +407,7 @@ void Config_RetrieveSettings() {
|
|||
for (int q=2; q--;) EEPROM_READ_VAR(i, dummy); // bedKi, bedKd
|
||||
}
|
||||
|
||||
#ifndef DOGLCD
|
||||
#ifndef HAS_LCD_CONTRAST
|
||||
int lcd_contrast;
|
||||
#endif
|
||||
EEPROM_READ_VAR(i, lcd_contrast);
|
||||
|
@ -467,6 +462,10 @@ void Config_RetrieveSettings() {
|
|||
|
||||
#endif // EEPROM_SETTINGS
|
||||
|
||||
/**
|
||||
* Reset Configuration Settings - M502
|
||||
*/
|
||||
|
||||
void Config_ResetDefault() {
|
||||
float tmp1[] = DEFAULT_AXIS_STEPS_PER_UNIT;
|
||||
float tmp2[] = DEFAULT_MAX_FEEDRATE;
|
||||
|
@ -522,7 +521,7 @@ void Config_ResetDefault() {
|
|||
absPreheatFanSpeed = ABS_PREHEAT_FAN_SPEED;
|
||||
#endif
|
||||
|
||||
#ifdef DOGLCD
|
||||
#ifdef HAS_LCD_CONTRAST
|
||||
lcd_contrast = DEFAULT_LCD_CONTRAST;
|
||||
#endif
|
||||
|
||||
|
@ -584,14 +583,20 @@ void Config_ResetDefault() {
|
|||
|
||||
#ifndef DISABLE_M503
|
||||
|
||||
/**
|
||||
* Print Configuration Settings - M503
|
||||
*/
|
||||
|
||||
#define CONFIG_ECHO_START do{ if (!forReplay) SERIAL_ECHO_START; }while(0)
|
||||
|
||||
void Config_PrintSettings(bool forReplay) {
|
||||
// Always have this function, even with EEPROM_SETTINGS disabled, the current values will be shown
|
||||
|
||||
SERIAL_ECHO_START;
|
||||
CONFIG_ECHO_START;
|
||||
|
||||
if (!forReplay) {
|
||||
SERIAL_ECHOLNPGM("Steps per unit:");
|
||||
SERIAL_ECHO_START;
|
||||
CONFIG_ECHO_START;
|
||||
}
|
||||
SERIAL_ECHOPAIR(" M92 X", axis_steps_per_unit[X_AXIS]);
|
||||
SERIAL_ECHOPAIR(" Y", axis_steps_per_unit[Y_AXIS]);
|
||||
|
@ -599,23 +604,23 @@ void Config_PrintSettings(bool forReplay) {
|
|||
SERIAL_ECHOPAIR(" E", axis_steps_per_unit[E_AXIS]);
|
||||
SERIAL_EOL;
|
||||
|
||||
SERIAL_ECHO_START;
|
||||
CONFIG_ECHO_START;
|
||||
|
||||
#ifdef SCARA
|
||||
if (!forReplay) {
|
||||
SERIAL_ECHOLNPGM("Scaling factors:");
|
||||
SERIAL_ECHO_START;
|
||||
CONFIG_ECHO_START;
|
||||
}
|
||||
SERIAL_ECHOPAIR(" M365 X", axis_scaling[X_AXIS]);
|
||||
SERIAL_ECHOPAIR(" Y", axis_scaling[Y_AXIS]);
|
||||
SERIAL_ECHOPAIR(" Z", axis_scaling[Z_AXIS]);
|
||||
SERIAL_EOL;
|
||||
SERIAL_ECHO_START;
|
||||
CONFIG_ECHO_START;
|
||||
#endif // SCARA
|
||||
|
||||
if (!forReplay) {
|
||||
SERIAL_ECHOLNPGM("Maximum feedrates (mm/s):");
|
||||
SERIAL_ECHO_START;
|
||||
CONFIG_ECHO_START;
|
||||
}
|
||||
SERIAL_ECHOPAIR(" M203 X", max_feedrate[X_AXIS]);
|
||||
SERIAL_ECHOPAIR(" Y", max_feedrate[Y_AXIS]);
|
||||
|
@ -623,160 +628,224 @@ void Config_PrintSettings(bool forReplay) {
|
|||
SERIAL_ECHOPAIR(" E", max_feedrate[E_AXIS]);
|
||||
SERIAL_EOL;
|
||||
|
||||
SERIAL_ECHO_START;
|
||||
CONFIG_ECHO_START;
|
||||
if (!forReplay) {
|
||||
SERIAL_ECHOLNPGM("Maximum Acceleration (mm/s2):");
|
||||
SERIAL_ECHO_START;
|
||||
CONFIG_ECHO_START;
|
||||
}
|
||||
SERIAL_ECHOPAIR(" M201 X", max_acceleration_units_per_sq_second[X_AXIS] );
|
||||
SERIAL_ECHOPAIR(" Y", max_acceleration_units_per_sq_second[Y_AXIS] );
|
||||
SERIAL_ECHOPAIR(" Z", max_acceleration_units_per_sq_second[Z_AXIS] );
|
||||
SERIAL_ECHOPAIR(" M201 X", max_acceleration_units_per_sq_second[X_AXIS]);
|
||||
SERIAL_ECHOPAIR(" Y", max_acceleration_units_per_sq_second[Y_AXIS]);
|
||||
SERIAL_ECHOPAIR(" Z", max_acceleration_units_per_sq_second[Z_AXIS]);
|
||||
SERIAL_ECHOPAIR(" E", max_acceleration_units_per_sq_second[E_AXIS]);
|
||||
SERIAL_EOL;
|
||||
SERIAL_ECHO_START;
|
||||
CONFIG_ECHO_START;
|
||||
if (!forReplay) {
|
||||
SERIAL_ECHOLNPGM("Accelerations: P=printing, R=retract and T=travel");
|
||||
SERIAL_ECHO_START;
|
||||
CONFIG_ECHO_START;
|
||||
}
|
||||
SERIAL_ECHOPAIR(" M204 P", acceleration );
|
||||
SERIAL_ECHOPAIR(" M204 P", acceleration);
|
||||
SERIAL_ECHOPAIR(" R", retract_acceleration);
|
||||
SERIAL_ECHOPAIR(" T", travel_acceleration);
|
||||
SERIAL_EOL;
|
||||
|
||||
SERIAL_ECHO_START;
|
||||
CONFIG_ECHO_START;
|
||||
if (!forReplay) {
|
||||
SERIAL_ECHOLNPGM("Advanced variables: S=Min feedrate (mm/s), T=Min travel feedrate (mm/s), B=minimum segment time (ms), X=maximum XY jerk (mm/s), Z=maximum Z jerk (mm/s), E=maximum E jerk (mm/s)");
|
||||
SERIAL_ECHO_START;
|
||||
CONFIG_ECHO_START;
|
||||
}
|
||||
SERIAL_ECHOPAIR(" M205 S", minimumfeedrate );
|
||||
SERIAL_ECHOPAIR(" T", mintravelfeedrate );
|
||||
SERIAL_ECHOPAIR(" B", minsegmenttime );
|
||||
SERIAL_ECHOPAIR(" X", max_xy_jerk );
|
||||
SERIAL_ECHOPAIR(" M205 S", minimumfeedrate);
|
||||
SERIAL_ECHOPAIR(" T", mintravelfeedrate);
|
||||
SERIAL_ECHOPAIR(" B", minsegmenttime);
|
||||
SERIAL_ECHOPAIR(" X", max_xy_jerk);
|
||||
SERIAL_ECHOPAIR(" Z", max_z_jerk);
|
||||
SERIAL_ECHOPAIR(" E", max_e_jerk);
|
||||
SERIAL_EOL;
|
||||
|
||||
SERIAL_ECHO_START;
|
||||
CONFIG_ECHO_START;
|
||||
if (!forReplay) {
|
||||
SERIAL_ECHOLNPGM("Home offset (mm):");
|
||||
SERIAL_ECHO_START;
|
||||
CONFIG_ECHO_START;
|
||||
}
|
||||
SERIAL_ECHOPAIR(" M206 X", home_offset[X_AXIS] );
|
||||
SERIAL_ECHOPAIR(" Y", home_offset[Y_AXIS] );
|
||||
SERIAL_ECHOPAIR(" Z", home_offset[Z_AXIS] );
|
||||
SERIAL_ECHOPAIR(" M206 X", home_offset[X_AXIS]);
|
||||
SERIAL_ECHOPAIR(" Y", home_offset[Y_AXIS]);
|
||||
SERIAL_ECHOPAIR(" Z", home_offset[Z_AXIS]);
|
||||
SERIAL_EOL;
|
||||
|
||||
#ifdef DELTA
|
||||
SERIAL_ECHO_START;
|
||||
#ifdef MESH_BED_LEVELING
|
||||
if (!forReplay) {
|
||||
SERIAL_ECHOLNPGM("Endstop adjustement (mm):");
|
||||
SERIAL_ECHO_START;
|
||||
SERIAL_ECHOLNPGM("Mesh bed leveling:");
|
||||
CONFIG_ECHO_START;
|
||||
}
|
||||
SERIAL_ECHOPAIR(" M666 X", endstop_adj[X_AXIS] );
|
||||
SERIAL_ECHOPAIR(" Y", endstop_adj[Y_AXIS] );
|
||||
SERIAL_ECHOPAIR(" Z", endstop_adj[Z_AXIS] );
|
||||
SERIAL_ECHOPAIR(" M420 S", (int32_t)mbl.active);
|
||||
SERIAL_ECHOPAIR(" X", MESH_NUM_X_POINTS);
|
||||
SERIAL_ECHOPAIR(" Y", MESH_NUM_Y_POINTS);
|
||||
SERIAL_EOL;
|
||||
SERIAL_ECHO_START;
|
||||
for (int y=0; y<MESH_NUM_Y_POINTS; y++) {
|
||||
for (int x=0; x<MESH_NUM_X_POINTS; x++) {
|
||||
CONFIG_ECHO_START;
|
||||
SERIAL_ECHOPAIR(" M421 X", mbl.get_x(x));
|
||||
SERIAL_ECHOPAIR(" Y", mbl.get_y(y));
|
||||
SERIAL_ECHOPAIR(" Z", mbl.z_values[y][x]);
|
||||
SERIAL_EOL;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef DELTA
|
||||
CONFIG_ECHO_START;
|
||||
if (!forReplay) {
|
||||
SERIAL_ECHOLNPGM("Endstop adjustment (mm):");
|
||||
CONFIG_ECHO_START;
|
||||
}
|
||||
SERIAL_ECHOPAIR(" M666 X", endstop_adj[X_AXIS]);
|
||||
SERIAL_ECHOPAIR(" Y", endstop_adj[Y_AXIS]);
|
||||
SERIAL_ECHOPAIR(" Z", endstop_adj[Z_AXIS]);
|
||||
SERIAL_EOL;
|
||||
CONFIG_ECHO_START;
|
||||
SERIAL_ECHOLNPGM("Delta settings: L=delta_diagonal_rod, R=delta_radius, S=delta_segments_per_second");
|
||||
SERIAL_ECHO_START;
|
||||
SERIAL_ECHOPAIR(" M665 L", delta_diagonal_rod );
|
||||
SERIAL_ECHOPAIR(" R", delta_radius );
|
||||
SERIAL_ECHOPAIR(" S", delta_segments_per_second );
|
||||
CONFIG_ECHO_START;
|
||||
SERIAL_ECHOPAIR(" M665 L", delta_diagonal_rod);
|
||||
SERIAL_ECHOPAIR(" R", delta_radius);
|
||||
SERIAL_ECHOPAIR(" S", delta_segments_per_second);
|
||||
SERIAL_EOL;
|
||||
#elif defined(Z_DUAL_ENDSTOPS)
|
||||
SERIAL_ECHO_START;
|
||||
CONFIG_ECHO_START;
|
||||
if (!forReplay) {
|
||||
SERIAL_ECHOLNPGM("Z2 Endstop adjustement (mm):");
|
||||
SERIAL_ECHO_START;
|
||||
SERIAL_ECHOLNPGM("Z2 Endstop adjustment (mm):");
|
||||
CONFIG_ECHO_START;
|
||||
}
|
||||
SERIAL_ECHOPAIR(" M666 Z", z_endstop_adj );
|
||||
SERIAL_ECHOPAIR(" M666 Z", z_endstop_adj);
|
||||
SERIAL_EOL;
|
||||
#endif // DELTA
|
||||
|
||||
#ifdef ULTIPANEL
|
||||
CONFIG_ECHO_START;
|
||||
if (!forReplay) {
|
||||
SERIAL_ECHOLNPGM("Material heatup parameters:");
|
||||
CONFIG_ECHO_START;
|
||||
}
|
||||
SERIAL_ECHOPAIR(" M145 M0 H", (unsigned long)plaPreheatHotendTemp);
|
||||
SERIAL_ECHOPAIR(" B", (unsigned long)plaPreheatHPBTemp);
|
||||
SERIAL_ECHOPAIR(" F", (unsigned long)plaPreheatFanSpeed);
|
||||
SERIAL_EOL;
|
||||
CONFIG_ECHO_START;
|
||||
SERIAL_ECHOPAIR(" M145 M1 H", (unsigned long)absPreheatHotendTemp);
|
||||
SERIAL_ECHOPAIR(" B", (unsigned long)absPreheatHPBTemp);
|
||||
SERIAL_ECHOPAIR(" F", (unsigned long)absPreheatFanSpeed);
|
||||
SERIAL_EOL;
|
||||
#endif // ULTIPANEL
|
||||
|
||||
#if defined(PIDTEMP) || defined(PIDTEMPBED)
|
||||
SERIAL_ECHO_START;
|
||||
|
||||
CONFIG_ECHO_START;
|
||||
if (!forReplay) {
|
||||
SERIAL_ECHOLNPGM("PID settings:");
|
||||
SERIAL_ECHO_START;
|
||||
}
|
||||
#if defined(PIDTEMP) && defined(PIDTEMPBED)
|
||||
SERIAL_EOL;
|
||||
#endif
|
||||
#ifdef PIDTEMP
|
||||
SERIAL_ECHOPAIR(" M301 P", PID_PARAM(Kp, 0)); // for compatibility with hosts, only echos values for E0
|
||||
SERIAL_ECHOPAIR(" I", unscalePID_i(PID_PARAM(Ki, 0)));
|
||||
SERIAL_ECHOPAIR(" D", unscalePID_d(PID_PARAM(Kd, 0)));
|
||||
SERIAL_EOL;
|
||||
#endif
|
||||
#if EXTRUDERS > 1
|
||||
if (forReplay) {
|
||||
for (uint8_t i = 0; i < EXTRUDERS; i++) {
|
||||
CONFIG_ECHO_START;
|
||||
SERIAL_ECHOPAIR(" M301 E", (unsigned long)i);
|
||||
SERIAL_ECHOPAIR(" P", PID_PARAM(Kp, i));
|
||||
SERIAL_ECHOPAIR(" I", unscalePID_i(PID_PARAM(Ki, i)));
|
||||
SERIAL_ECHOPAIR(" D", unscalePID_d(PID_PARAM(Kd, i)));
|
||||
#ifdef PID_ADD_EXTRUSION_RATE
|
||||
SERIAL_ECHOPAIR(" C", PID_PARAM(Kc, i));
|
||||
#endif
|
||||
SERIAL_EOL;
|
||||
}
|
||||
}
|
||||
else
|
||||
#endif // EXTRUDERS > 1
|
||||
// !forReplay || EXTRUDERS == 1
|
||||
{
|
||||
CONFIG_ECHO_START;
|
||||
SERIAL_ECHOPAIR(" M301 P", PID_PARAM(Kp, 0)); // for compatibility with hosts, only echo values for E0
|
||||
SERIAL_ECHOPAIR(" I", unscalePID_i(PID_PARAM(Ki, 0)));
|
||||
SERIAL_ECHOPAIR(" D", unscalePID_d(PID_PARAM(Kd, 0)));
|
||||
#ifdef PID_ADD_EXTRUSION_RATE
|
||||
SERIAL_ECHOPAIR(" C", PID_PARAM(Kc, 0));
|
||||
#endif
|
||||
SERIAL_EOL;
|
||||
}
|
||||
#endif // PIDTEMP
|
||||
|
||||
#ifdef PIDTEMPBED
|
||||
SERIAL_ECHOPAIR(" M304 P", bedKp); // for compatibility with hosts, only echos values for E0
|
||||
CONFIG_ECHO_START;
|
||||
SERIAL_ECHOPAIR(" M304 P", bedKp);
|
||||
SERIAL_ECHOPAIR(" I", unscalePID_i(bedKi));
|
||||
SERIAL_ECHOPAIR(" D", unscalePID_d(bedKd));
|
||||
SERIAL_EOL;
|
||||
#endif
|
||||
|
||||
#endif // PIDTEMP || PIDTEMPBED
|
||||
|
||||
#ifdef HAS_LCD_CONTRAST
|
||||
CONFIG_ECHO_START;
|
||||
if (!forReplay) {
|
||||
SERIAL_ECHOLNPGM("LCD Contrast:");
|
||||
CONFIG_ECHO_START;
|
||||
}
|
||||
SERIAL_ECHOPAIR(" M250 C", (unsigned long)lcd_contrast);
|
||||
SERIAL_EOL;
|
||||
#endif
|
||||
|
||||
#ifdef FWRETRACT
|
||||
|
||||
SERIAL_ECHO_START;
|
||||
CONFIG_ECHO_START;
|
||||
if (!forReplay) {
|
||||
SERIAL_ECHOLNPGM("Retract: S=Length (mm) F:Speed (mm/m) Z: ZLift (mm)");
|
||||
SERIAL_ECHO_START;
|
||||
CONFIG_ECHO_START;
|
||||
}
|
||||
SERIAL_ECHOPAIR(" M207 S", retract_length);
|
||||
#if EXTRUDERS > 1
|
||||
SERIAL_ECHOPAIR(" W", retract_length_swap);
|
||||
#endif
|
||||
SERIAL_ECHOPAIR(" F", retract_feedrate*60);
|
||||
SERIAL_ECHOPAIR(" Z", retract_zlift);
|
||||
SERIAL_EOL;
|
||||
SERIAL_ECHO_START;
|
||||
CONFIG_ECHO_START;
|
||||
if (!forReplay) {
|
||||
SERIAL_ECHOLNPGM("Recover: S=Extra length (mm) F:Speed (mm/m)");
|
||||
SERIAL_ECHO_START;
|
||||
CONFIG_ECHO_START;
|
||||
}
|
||||
SERIAL_ECHOPAIR(" M208 S", retract_recover_length);
|
||||
#if EXTRUDERS > 1
|
||||
SERIAL_ECHOPAIR(" W", retract_recover_length_swap);
|
||||
#endif
|
||||
SERIAL_ECHOPAIR(" F", retract_recover_feedrate*60);
|
||||
SERIAL_EOL;
|
||||
SERIAL_ECHO_START;
|
||||
CONFIG_ECHO_START;
|
||||
if (!forReplay) {
|
||||
SERIAL_ECHOLNPGM("Auto-Retract: S=0 to disable, 1 to interpret extrude-only moves as retracts or recoveries");
|
||||
SERIAL_ECHO_START;
|
||||
CONFIG_ECHO_START;
|
||||
}
|
||||
SERIAL_ECHOPAIR(" M209 S", (unsigned long)(autoretract_enabled ? 1 : 0));
|
||||
SERIAL_EOL;
|
||||
|
||||
#if EXTRUDERS > 1
|
||||
if (!forReplay) {
|
||||
SERIAL_ECHO_START;
|
||||
SERIAL_ECHOLNPGM("Multi-extruder settings:");
|
||||
SERIAL_ECHO_START;
|
||||
SERIAL_ECHOPAIR(" Swap retract length (mm): ", retract_length_swap);
|
||||
SERIAL_EOL;
|
||||
SERIAL_ECHO_START;
|
||||
SERIAL_ECHOPAIR(" Swap rec. addl. length (mm): ", retract_recover_length_swap);
|
||||
SERIAL_EOL;
|
||||
}
|
||||
#endif // EXTRUDERS > 1
|
||||
|
||||
#endif // FWRETRACT
|
||||
|
||||
SERIAL_ECHO_START;
|
||||
if (volumetric_enabled) {
|
||||
if (!forReplay) {
|
||||
CONFIG_ECHO_START;
|
||||
SERIAL_ECHOLNPGM("Filament settings:");
|
||||
SERIAL_ECHO_START;
|
||||
}
|
||||
|
||||
CONFIG_ECHO_START;
|
||||
SERIAL_ECHOPAIR(" M200 D", filament_size[0]);
|
||||
SERIAL_EOL;
|
||||
|
||||
#if EXTRUDERS > 1
|
||||
SERIAL_ECHO_START;
|
||||
CONFIG_ECHO_START;
|
||||
SERIAL_ECHOPAIR(" M200 T1 D", filament_size[1]);
|
||||
SERIAL_EOL;
|
||||
#if EXTRUDERS > 2
|
||||
SERIAL_ECHO_START;
|
||||
CONFIG_ECHO_START;
|
||||
SERIAL_ECHOPAIR(" M200 T2 D", filament_size[2]);
|
||||
SERIAL_EOL;
|
||||
#if EXTRUDERS > 3
|
||||
SERIAL_ECHO_START;
|
||||
CONFIG_ECHO_START;
|
||||
SERIAL_ECHOPAIR(" M200 T3 D", filament_size[3]);
|
||||
SERIAL_EOL;
|
||||
#endif
|
||||
|
@ -785,21 +854,23 @@ void Config_PrintSettings(bool forReplay) {
|
|||
|
||||
} else {
|
||||
if (!forReplay) {
|
||||
CONFIG_ECHO_START;
|
||||
SERIAL_ECHOLNPGM("Filament settings: Disabled");
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef ENABLE_AUTO_BED_LEVELING
|
||||
SERIAL_ECHO_START;
|
||||
#ifdef CUSTOM_M_CODES
|
||||
if (!forReplay) {
|
||||
CONFIG_ECHO_START;
|
||||
SERIAL_ECHOLNPGM("Z-Probe Offset (mm):");
|
||||
SERIAL_ECHO_START;
|
||||
}
|
||||
CONFIG_ECHO_START;
|
||||
SERIAL_ECHOPAIR(" M", (unsigned long)CUSTOM_M_CODE_SET_Z_PROBE_OFFSET);
|
||||
SERIAL_ECHOPAIR(" Z", -zprobe_zoffset);
|
||||
#else
|
||||
if (!forReplay) {
|
||||
CONFIG_ECHO_START;
|
||||
SERIAL_ECHOPAIR("Z-Probe Offset (mm):", -zprobe_zoffset);
|
||||
}
|
||||
#endif
|
|
@ -1,5 +1,5 @@
|
|||
#ifndef CONFIGURATIONSTORE_H
|
||||
#define CONFIGURATIONSTORE_H
|
||||
#ifndef CONFIGURATION_STORE_H
|
||||
#define CONFIGURATION_STORE_H
|
||||
|
||||
#include "Configuration.h"
|
||||
|
||||
|
@ -19,4 +19,4 @@ void Config_ResetDefault();
|
|||
FORCE_INLINE void Config_RetrieveSettings() { Config_ResetDefault(); Config_PrintSettings(); }
|
||||
#endif
|
||||
|
||||
#endif //CONFIGURATIONSTORE_H
|
||||
#endif //CONFIGURATION_STORE_H
|
|
@ -41,7 +41,6 @@ Here are some standard links for getting your machine calibrated:
|
|||
// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
|
||||
// build by the user have been successfully uploaded into firmware.
|
||||
#define STRING_VERSION "1.0.3 dev"
|
||||
#define STRING_URL "reprap.org"
|
||||
#define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time
|
||||
#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes.
|
||||
#define STRING_SPLASH_LINE1 "v" STRING_VERSION // will be shown during bootup in line 1
|
||||
|
@ -68,8 +67,9 @@ Here are some standard links for getting your machine calibrated:
|
|||
#define MOTHERBOARD BOARD_RAMPS_13_EFB
|
||||
#endif
|
||||
|
||||
// Define this to set a custom name for your generic Mendel,
|
||||
// #define CUSTOM_MENDEL_NAME "This Mendel"
|
||||
// Optional custom name for your RepStrap or other custom machine
|
||||
// Displayed in the LCD "Ready" message
|
||||
// #define CUSTOM_MACHINE_NAME "3D Printer"
|
||||
|
||||
// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
|
||||
// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
|
||||
|
@ -363,6 +363,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic
|
|||
#define E_ENABLE_ON 0 // For all extruders
|
||||
|
||||
// Disables axis when it's not being used.
|
||||
// WARNING: When motors turn off there is a chance of losing position accuracy!
|
||||
#define DISABLE_X false
|
||||
#define DISABLE_Y false
|
||||
#define DISABLE_Z false
|
||||
|
@ -639,7 +640,8 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic
|
|||
// @section lcd
|
||||
|
||||
// Define your display language below. Replace (en) with your language code and uncomment.
|
||||
// en, pl, fr, de, es, ru, bg, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, test
|
||||
|
||||
// en, pl, fr, de, es, ru, bg, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, cn, test
|
||||
// See also language.h
|
||||
#define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en)
|
||||
|
||||
|
@ -659,9 +661,9 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic
|
|||
//#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking
|
||||
//#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
|
||||
//#define ULTIPANEL //the UltiPanel as on Thingiverse
|
||||
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
||||
//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click
|
||||
// 0 to disable buzzer feedback
|
||||
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
||||
// 0 to disable buzzer feedback. Test with M300 S<frequency Hz> P<duration ms>
|
||||
|
||||
// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
|
||||
// http://reprap.org/wiki/PanelOne
|
||||
|
|
|
@ -195,6 +195,9 @@
|
|||
#define HOMING_BUMP_DIVISOR {2, 2, 4} // Re-Bump Speed Divisor (Divides the Homing Feedrate)
|
||||
//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially.
|
||||
|
||||
// When G28 is called, this option will make Y home before X
|
||||
// #define HOME_Y_BEFORE_X
|
||||
|
||||
// @section machine
|
||||
|
||||
#define AXIS_RELATIVE_MODES {false, false, false, false}
|
||||
|
@ -258,7 +261,6 @@
|
|||
#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
|
||||
#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value
|
||||
#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value
|
||||
//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value
|
||||
|
||||
//#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/
|
||||
#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
|
||||
|
@ -355,7 +357,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
|||
//#define HEATERS_PARALLEL
|
||||
|
||||
//===========================================================================
|
||||
//=============================Buffers ============================
|
||||
//================================= Buffers =================================
|
||||
//===========================================================================
|
||||
|
||||
// @section hidden
|
||||
|
|
|
@ -70,12 +70,12 @@
|
|||
#endif
|
||||
#else
|
||||
#ifndef MACHINE_NAME
|
||||
#define MACHINE_NAME "Mendel"
|
||||
#define MACHINE_NAME "3D Printer"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef CUSTOM_MENDEL_NAME
|
||||
#warning CUSTOM_MENDEL_NAME deprecated - use CUSTOM_MACHINE_NAME
|
||||
#error CUSTOM_MENDEL_NAME deprecated - use CUSTOM_MACHINE_NAME
|
||||
#define CUSTOM_MACHINE_NAME CUSTOM_MENDEL_NAME
|
||||
#endif
|
||||
|
||||
|
@ -110,7 +110,7 @@
|
|||
|
||||
// Serial Console Messages (do not translate those!)
|
||||
|
||||
#define MSG_Enqueing "enqueing \""
|
||||
#define MSG_Enqueueing "enqueueing \""
|
||||
#define MSG_POWERUP "PowerUp"
|
||||
#define MSG_EXTERNAL_RESET " External Reset"
|
||||
#define MSG_BROWNOUT_RESET " Brown out Reset"
|
||||
|
@ -122,7 +122,8 @@
|
|||
#define MSG_PLANNER_BUFFER_BYTES " PlannerBufferBytes: "
|
||||
#define MSG_OK "ok"
|
||||
#define MSG_FILE_SAVED "Done saving file."
|
||||
#define MSG_ERR_LINE_NO "Line Number is not Last Line Number+1, Last Line: "
|
||||
#define MSG_ERR_LINE_NO1 "Line Number out of sequence. Expected: "
|
||||
#define MSG_ERR_LINE_NO2 " Got: "
|
||||
#define MSG_ERR_CHECKSUM_MISMATCH "checksum mismatch, Last Line: "
|
||||
#define MSG_ERR_NO_CHECKSUM "No Checksum with line number, Last Line: "
|
||||
#define MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM "No Line Number with checksum, Last Line: "
|
||||
|
@ -157,6 +158,9 @@
|
|||
#define MSG_Z_MAX "z_max: "
|
||||
#define MSG_Z2_MAX "z2_max: "
|
||||
#define MSG_Z_PROBE "z_probe: "
|
||||
#define MSG_ERR_MATERIAL_INDEX "M145 S<index> out of range (0-1)"
|
||||
#define MSG_ERR_M421_REQUIRES_XYZ "M421 requires XYZ parameters"
|
||||
#define MSG_ERR_MESH_INDEX_OOB "Mesh XY index is out of bounds"
|
||||
#define MSG_M119_REPORT "Reporting endstop status"
|
||||
#define MSG_ENDSTOP_HIT "TRIGGERED"
|
||||
#define MSG_ENDSTOP_OPEN "open"
|
||||
|
@ -209,7 +213,7 @@
|
|||
#define MSG_OK_B "ok B:"
|
||||
#define MSG_OK_T "ok T:"
|
||||
#define MSG_AT " @:"
|
||||
#define MSG_PID_AUTOTUNE_FINISHED MSG_PID_AUTOTUNE " finished! Put the last Kp, Ki and Kd constants from above into Configuration.h"
|
||||
#define MSG_PID_AUTOTUNE_FINISHED MSG_PID_AUTOTUNE " finished! Put the last Kp, Ki and Kd constants from below into Configuration.h"
|
||||
#define MSG_PID_DEBUG " PID_DEBUG "
|
||||
#define MSG_PID_DEBUG_INPUT ": Input "
|
||||
#define MSG_PID_DEBUG_OUTPUT " Output "
|
||||
|
|
|
@ -46,7 +46,7 @@
|
|||
|
||||
<label class="newline">Motherboard:</label><select name="MOTHERBOARD"></select>
|
||||
|
||||
<label class="newline">Custom Name:</label><input name="CUSTOM_MENDEL_NAME" type="text" size="14" maxlength="12" value="" />
|
||||
<label class="newline">Custom Name:</label><input name="CUSTOM_MACHINE_NAME" type="text" size="14" maxlength="12" value="" />
|
||||
|
||||
<label class="newline">Machine UUID:</label><input name="MACHINE_UUID" type="text" size="38" maxlength="36" value="" />
|
||||
|
||||
|
|
270
Marlin/dogm_font_data_ISO10646_CN.h
Normal file
270
Marlin/dogm_font_data_ISO10646_CN.h
Normal file
|
@ -0,0 +1,270 @@
|
|||
/*
|
||||
Fontname: ISO10646_CN
|
||||
Copyright: A. Hardtung, public domain
|
||||
Capital A Height: 7, '1' Height: 7
|
||||
Calculated Max Values w=11 h=11 x= 2 y=10 dx=12 dy= 0 ascent=10 len=22
|
||||
Font Bounding box w=12 h=11 x= 0 y=-2
|
||||
Calculated Min Values x= 0 y=-1 dx= 0 dy= 0
|
||||
Pure Font ascent = 7 descent=-1
|
||||
X Font ascent = 7 descent=-1
|
||||
Max Font ascent =10 descent=-1
|
||||
*/
|
||||
#include <utility/u8g.h>
|
||||
const u8g_fntpgm_uint8_t ISO10646_CN[4105] U8G_SECTION(".progmem.ISO10646_CN") = {
|
||||
0,12,11,0,254,7,1,146,3,33,32,255,255,10,255,7,
|
||||
255,0,0,0,6,0,10,1,7,7,6,2,0,128,128,128,
|
||||
128,128,0,128,3,2,2,6,1,5,160,160,5,7,7,6,
|
||||
0,0,80,80,248,80,248,80,80,5,7,7,6,0,0,32,
|
||||
120,160,112,40,240,32,5,7,7,6,0,0,192,200,16,32,
|
||||
64,152,24,5,7,7,6,0,0,96,144,160,64,168,144,104,
|
||||
2,3,3,6,1,4,192,64,128,3,7,7,6,1,0,32,
|
||||
64,128,128,128,64,32,3,7,7,6,1,0,128,64,32,32,
|
||||
32,64,128,5,5,5,6,0,1,32,168,112,168,32,5,5,
|
||||
5,6,0,1,32,32,248,32,32,2,3,3,6,2,255,192,
|
||||
64,128,5,1,1,6,0,3,248,2,2,2,6,2,0,192,
|
||||
192,5,5,5,6,0,1,8,16,32,64,128,5,7,7,6,
|
||||
0,0,112,136,152,168,200,136,112,3,7,7,6,1,0,64,
|
||||
192,64,64,64,64,224,5,7,7,6,0,0,112,136,8,112,
|
||||
128,128,248,5,7,7,6,0,0,248,16,32,16,8,8,240,
|
||||
5,7,7,6,0,0,16,48,80,144,248,16,16,5,7,7,
|
||||
6,0,0,248,128,240,8,8,136,112,5,7,7,6,0,0,
|
||||
112,128,128,240,136,136,112,5,7,7,6,0,0,248,8,16,
|
||||
32,32,32,32,5,7,7,6,0,0,112,136,136,112,136,136,
|
||||
112,5,7,7,6,0,0,112,136,136,120,8,8,112,2,5,
|
||||
5,6,2,0,192,192,0,192,192,2,6,6,6,2,255,192,
|
||||
192,0,192,64,128,4,7,7,6,0,0,16,32,64,128,64,
|
||||
32,16,5,3,3,6,0,2,248,0,248,4,7,7,6,0,
|
||||
0,128,64,32,16,32,64,128,5,7,7,6,0,0,112,136,
|
||||
8,16,32,0,32,5,7,7,6,0,0,112,136,8,104,168,
|
||||
168,112,5,7,7,6,0,0,112,136,136,248,136,136,136,5,
|
||||
7,7,6,0,0,240,136,136,240,136,136,240,5,7,7,6,
|
||||
0,0,112,136,128,128,128,136,112,5,7,7,6,0,0,240,
|
||||
136,136,136,136,136,240,5,7,7,6,0,0,248,128,128,240,
|
||||
128,128,248,5,7,7,6,0,0,248,128,128,240,128,128,128,
|
||||
5,7,7,6,0,0,112,136,128,184,136,136,112,5,7,7,
|
||||
6,0,0,136,136,136,248,136,136,136,1,7,7,6,2,0,
|
||||
128,128,128,128,128,128,128,5,7,7,6,0,0,56,16,16,
|
||||
16,16,144,96,5,7,7,6,0,0,136,144,160,192,160,144,
|
||||
136,5,7,7,6,0,0,128,128,128,128,128,128,248,5,7,
|
||||
7,6,0,0,136,216,168,136,136,136,136,5,7,7,6,0,
|
||||
0,136,136,200,168,152,136,136,5,7,7,6,0,0,112,136,
|
||||
136,136,136,136,112,5,7,7,6,0,0,240,136,136,240,128,
|
||||
128,128,5,7,7,6,0,0,112,136,136,136,168,144,104,5,
|
||||
7,7,6,0,0,240,136,136,240,160,144,136,5,7,7,6,
|
||||
0,0,120,128,128,112,8,8,240,5,7,7,6,0,0,248,
|
||||
32,32,32,32,32,32,5,7,7,6,0,0,136,136,136,136,
|
||||
136,136,112,5,7,7,6,0,0,136,136,136,136,136,80,32,
|
||||
5,7,7,6,0,0,136,136,136,136,136,168,80,5,7,7,
|
||||
6,0,0,136,136,80,32,80,136,136,5,7,7,6,0,0,
|
||||
136,136,136,80,32,32,32,5,7,7,6,0,0,248,8,16,
|
||||
32,64,128,248,3,7,7,6,0,0,224,128,128,128,128,128,
|
||||
224,5,5,5,6,0,1,128,64,32,16,8,3,7,7,6,
|
||||
0,0,224,32,32,32,32,32,224,5,3,3,6,0,4,32,
|
||||
80,136,5,1,1,6,0,0,248,2,2,2,6,2,5,128,
|
||||
64,5,5,5,6,0,0,112,8,120,136,120,5,7,7,6,
|
||||
0,0,128,128,176,200,136,136,240,5,5,5,6,0,0,112,
|
||||
128,128,136,112,5,7,7,6,0,0,8,8,104,152,136,136,
|
||||
120,5,5,5,6,0,0,112,136,248,128,112,5,7,7,6,
|
||||
0,0,48,72,224,64,64,64,64,5,6,6,6,0,255,112,
|
||||
136,136,120,8,112,5,7,7,6,0,0,128,128,176,200,136,
|
||||
136,136,1,7,7,6,2,0,128,0,128,128,128,128,128,3,
|
||||
8,8,6,1,255,32,0,32,32,32,32,160,64,4,7,7,
|
||||
6,1,0,128,128,144,160,192,160,144,3,7,7,6,1,0,
|
||||
192,64,64,64,64,64,224,5,5,5,6,0,0,208,168,168,
|
||||
168,168,5,5,5,6,0,0,176,200,136,136,136,5,5,5,
|
||||
6,0,0,112,136,136,136,112,5,6,6,6,0,255,240,136,
|
||||
136,240,128,128,5,6,6,6,0,255,120,136,136,120,8,8,
|
||||
5,5,5,6,0,0,176,200,128,128,128,5,5,5,6,0,
|
||||
0,112,128,112,8,240,4,7,7,6,0,0,64,64,224,64,
|
||||
64,64,48,5,5,5,6,0,0,136,136,136,152,104,5,5,
|
||||
5,6,0,0,136,136,136,80,32,5,5,5,6,0,0,136,
|
||||
136,168,168,80,5,5,5,6,0,0,136,80,32,80,136,5,
|
||||
6,6,6,0,255,136,136,136,120,8,112,5,5,5,6,0,
|
||||
0,248,16,32,64,248,3,7,7,6,1,0,32,64,64,128,
|
||||
64,64,32,1,7,7,6,2,0,128,128,128,128,128,128,128,
|
||||
3,7,7,6,1,0,128,64,64,32,64,64,128,5,2,2,
|
||||
6,0,3,104,144,0,0,0,6,0,10,0,0,0,12,0,
|
||||
10,0,0,0,12,0,10,0,0,0,12,0,10,0,0,0,
|
||||
12,0,10,0,0,0,12,0,10,0,0,0,12,0,10,0,
|
||||
0,0,12,0,10,0,0,0,12,0,10,0,0,0,12,0,
|
||||
10,0,0,0,12,0,10,0,0,0,12,0,10,0,0,0,
|
||||
12,0,10,0,0,0,12,0,10,0,0,0,12,0,10,0,
|
||||
0,0,12,0,10,0,0,0,12,0,10,0,0,0,12,0,
|
||||
10,0,0,0,12,0,10,0,0,0,12,0,10,0,0,0,
|
||||
12,0,10,0,0,0,12,0,10,0,0,0,12,0,10,0,
|
||||
0,0,12,0,10,0,0,0,12,0,10,0,0,0,12,0,
|
||||
10,0,0,0,12,0,10,0,0,0,12,0,10,0,0,0,
|
||||
12,0,10,0,0,0,12,0,10,11,11,22,12,0,255,255,
|
||||
224,2,0,2,0,4,0,13,0,20,128,36,64,196,32,4,
|
||||
0,4,0,4,0,11,11,22,12,0,255,249,0,138,0,171,
|
||||
224,172,64,170,64,170,64,170,64,170,128,33,0,82,128,140,
|
||||
96,11,11,22,12,0,255,36,0,36,0,63,128,68,0,132,
|
||||
0,4,0,255,224,10,0,17,0,32,128,192,96,11,11,22,
|
||||
12,0,255,36,0,36,0,63,192,68,0,4,0,255,224,9,
|
||||
0,9,0,17,32,33,32,64,224,11,11,22,12,0,255,32,
|
||||
0,61,224,81,32,145,32,17,32,255,32,17,32,41,32,37,
|
||||
224,69,32,128,0,11,11,22,12,0,255,32,128,127,192,8,
|
||||
64,255,224,17,0,32,128,95,64,128,32,63,128,0,0,127,
|
||||
192,11,11,22,12,0,255,34,64,71,224,148,128,228,128,47,
|
||||
224,68,128,244,128,7,224,52,128,196,128,7,224,11,11,22,
|
||||
12,0,255,4,128,143,224,73,0,25,0,47,192,9,0,9,
|
||||
0,47,192,73,0,137,0,15,224,11,11,22,12,0,255,16,
|
||||
0,63,128,81,0,14,0,49,128,192,96,63,128,36,128,63,
|
||||
128,36,128,63,128,11,11,22,12,0,255,34,128,250,64,7,
|
||||
224,250,128,138,128,138,128,250,128,34,128,178,128,170,160,100,
|
||||
224,11,11,22,12,0,255,34,32,71,64,146,128,239,224,34,
|
||||
0,71,192,236,64,7,192,52,64,199,192,4,64,11,11,22,
|
||||
12,0,255,8,0,15,192,8,0,8,0,255,224,8,0,14,
|
||||
0,9,128,8,64,8,0,8,0,10,11,22,12,0,255,255,
|
||||
128,0,128,0,128,128,128,128,128,255,128,128,0,128,0,128,
|
||||
64,128,64,127,192,11,11,22,12,0,255,71,192,65,0,239,
|
||||
224,65,0,69,0,105,96,201,32,77,96,73,32,79,224,200,
|
||||
32,11,11,22,12,0,255,8,0,4,0,4,0,10,0,10,
|
||||
0,10,0,17,0,17,0,32,128,64,64,128,32,11,11,22,
|
||||
12,0,255,34,64,34,0,247,224,34,0,35,224,53,32,229,
|
||||
32,37,64,40,128,41,64,114,32,11,10,20,12,0,0,68,
|
||||
64,68,64,68,64,127,192,4,0,4,0,132,32,132,32,132,
|
||||
32,255,224,11,11,22,12,0,255,4,0,0,0,127,192,4,
|
||||
0,4,0,4,0,127,192,4,0,4,0,4,0,255,224,11,
|
||||
11,22,12,0,255,255,224,17,0,1,192,254,0,72,128,37,
|
||||
0,4,0,255,224,21,0,36,128,196,96,11,11,22,12,0,
|
||||
255,17,0,127,192,68,64,127,192,68,64,127,192,4,0,255,
|
||||
224,4,0,4,0,4,0,9,11,22,12,0,255,16,0,255,
|
||||
128,128,128,128,128,255,128,128,128,128,128,255,128,128,128,128,
|
||||
128,255,128,11,11,22,12,0,255,113,0,1,0,3,224,249,
|
||||
32,33,32,65,32,81,32,137,32,250,32,2,32,4,192,11,
|
||||
11,22,12,0,255,127,192,17,0,17,0,17,0,17,0,255,
|
||||
224,17,0,17,0,33,0,33,0,65,0,11,11,22,12,0,
|
||||
255,33,0,34,0,244,64,87,224,80,32,87,192,148,64,84,
|
||||
64,36,64,87,192,148,64,11,11,22,12,0,255,17,0,10,
|
||||
0,127,192,4,0,4,0,255,224,4,0,10,0,17,0,32,
|
||||
128,192,96,10,11,22,12,0,255,95,192,0,64,132,64,132,
|
||||
64,191,64,132,64,140,64,148,64,164,64,140,64,129,192,11,
|
||||
11,22,12,0,255,36,0,39,192,36,0,36,0,255,224,0,
|
||||
0,20,64,36,128,71,0,12,0,112,0,11,11,22,12,0,
|
||||
255,36,128,4,128,15,192,228,128,36,128,63,224,36,128,36,
|
||||
128,40,128,80,0,143,224,11,11,22,12,0,255,8,0,8,
|
||||
0,255,128,136,128,136,128,255,128,136,128,136,128,255,160,136,
|
||||
32,7,224,11,11,22,12,0,255,39,128,36,128,244,128,36,
|
||||
128,116,128,108,128,164,128,36,128,36,160,40,160,48,96,10,
|
||||
11,22,12,0,255,255,192,128,64,128,64,158,64,146,64,146,
|
||||
64,158,64,128,64,128,64,255,192,128,64,11,11,22,12,0,
|
||||
255,127,192,68,0,95,192,80,64,95,192,80,64,95,192,66,
|
||||
0,74,128,82,64,166,32,11,11,22,12,0,255,4,0,7,
|
||||
224,4,0,127,192,64,64,64,64,64,64,127,192,0,0,82,
|
||||
64,137,32,11,11,22,12,0,255,71,128,36,128,4,128,4,
|
||||
128,232,96,32,0,47,192,36,64,34,128,49,0,38,192,11,
|
||||
11,22,12,0,255,127,192,74,64,127,192,4,0,255,224,4,
|
||||
0,63,128,32,128,36,128,36,128,255,224,11,11,22,12,0,
|
||||
255,34,0,79,224,72,32,79,224,200,0,79,224,74,160,90,
|
||||
160,111,224,74,160,72,96,11,11,22,12,0,255,243,192,36,
|
||||
64,42,128,241,0,34,128,101,224,114,32,165,64,32,128,35,
|
||||
0,44,0,11,11,22,12,0,255,4,0,255,224,128,32,0,
|
||||
0,255,224,4,0,36,0,39,192,36,0,84,0,143,224,11,
|
||||
11,22,12,0,255,115,224,16,128,81,0,35,224,250,32,42,
|
||||
160,34,160,34,160,32,128,33,64,98,32,11,11,22,12,0,
|
||||
255,34,0,247,128,34,128,54,128,226,160,37,160,36,96,104,
|
||||
32,0,0,82,64,137,32,11,11,22,12,0,255,115,192,66,
|
||||
0,66,0,123,224,74,64,74,64,122,64,74,64,66,64,68,
|
||||
64,136,64,11,11,22,12,0,255,8,0,255,224,8,0,31,
|
||||
192,48,64,95,192,144,64,31,192,16,64,16,64,16,192,11,
|
||||
11,22,12,0,255,2,0,127,224,66,0,66,0,95,192,66,
|
||||
0,71,0,74,128,82,64,98,32,130,0,11,11,22,12,0,
|
||||
255,243,192,150,64,145,128,166,96,161,0,151,192,145,0,149,
|
||||
0,231,224,129,0,129,0,11,11,22,12,0,255,15,128,136,
|
||||
128,79,128,8,128,143,128,64,0,31,192,53,64,85,64,149,
|
||||
64,63,224,11,11,22,12,0,255,39,224,32,128,248,128,32,
|
||||
128,32,128,56,128,224,128,32,128,32,128,32,128,97,128,11,
|
||||
11,22,12,0,255,31,224,145,0,87,192,20,64,23,192,148,
|
||||
64,87,192,17,0,85,64,153,32,35,0,11,11,22,12,0,
|
||||
255,32,128,39,224,242,64,33,128,34,64,52,32,226,64,34,
|
||||
64,34,64,34,64,100,64,11,11,22,12,0,255,65,0,65,
|
||||
0,79,224,233,32,73,32,73,32,111,224,201,32,73,32,73,
|
||||
32,207,224,11,11,22,12,0,255,33,0,241,0,79,224,169,
|
||||
32,249,32,47,224,57,32,233,32,41,32,47,224,40,32,11,
|
||||
11,22,12,0,255,143,224,73,32,9,32,203,160,73,32,79,
|
||||
224,72,32,75,160,74,160,107,160,80,224,11,11,22,12,0,
|
||||
255,127,192,4,0,68,64,36,64,36,128,4,0,255,224,4,
|
||||
0,4,0,4,0,4,0,11,11,22,12,0,255,130,0,66,
|
||||
0,31,224,194,0,95,192,82,64,95,192,71,0,74,128,82,
|
||||
64,191,224,11,11,22,12,0,255,4,0,127,224,72,128,127,
|
||||
224,72,128,79,128,64,0,95,192,72,64,71,128,152,96,11,
|
||||
11,22,12,0,255,1,0,239,224,161,0,164,64,175,224,164,
|
||||
64,175,224,169,32,233,32,2,128,12,96,11,11,22,12,0,
|
||||
255,20,192,246,160,188,96,167,128,168,128,191,224,169,32,239,
|
||||
224,9,32,15,224,9,32,11,11,22,12,0,255,127,128,64,
|
||||
128,66,128,98,128,84,128,72,128,72,128,84,160,98,160,64,
|
||||
96,128,32,11,11,22,12,0,255,4,0,127,224,64,32,127,
|
||||
224,64,0,125,224,84,32,76,160,84,96,100,160,141,96,11,
|
||||
11,22,12,0,255,130,0,95,224,4,0,8,64,159,224,64,
|
||||
32,10,128,10,128,74,160,146,160,34,96,11,11,22,12,0,
|
||||
255,65,0,79,224,232,32,66,128,68,64,104,32,199,192,65,
|
||||
0,65,0,65,0,207,224,11,11,22,12,0,255,80,32,125,
|
||||
32,145,32,255,32,17,32,125,32,85,32,85,32,84,32,92,
|
||||
32,16,224,11,11,22,12,0,255,63,128,32,128,63,128,32,
|
||||
128,255,224,72,0,123,192,73,64,121,64,72,128,251,96,11,
|
||||
11,22,12,0,255,4,0,4,0,4,0,36,128,36,64,68,
|
||||
64,68,32,132,32,4,0,4,0,28,0,11,11,22,12,0,
|
||||
255,4,0,4,0,4,0,255,224,4,0,10,0,10,0,17,
|
||||
0,17,0,32,128,192,96,9,10,20,10,0,0,136,128,73,
|
||||
0,8,0,255,128,0,128,0,128,127,128,0,128,0,128,255,
|
||||
128,11,11,22,12,0,255,33,0,18,0,255,224,0,0,120,
|
||||
128,74,128,122,128,74,128,122,128,72,128,89,128,11,11,22,
|
||||
12,0,255,39,192,0,0,0,0,239,224,33,0,34,0,36,
|
||||
64,47,224,32,32,80,0,143,224,11,11,22,12,0,255,32,
|
||||
128,39,0,249,0,33,192,119,0,33,0,249,224,39,0,113,
|
||||
32,169,32,32,224,11,11,22,12,0,255,16,64,16,64,253,
|
||||
224,16,64,56,192,53,64,82,64,148,64,16,64,16,64,16,
|
||||
192,11,11,22,12,0,255,0,64,248,64,11,224,8,64,136,
|
||||
64,82,64,81,64,33,64,80,64,72,64,137,192,10,11,22,
|
||||
12,0,255,132,0,132,64,132,128,245,0,134,0,132,0,132,
|
||||
0,148,0,164,64,196,64,131,192,11,11,22,12,0,255,17,
|
||||
32,125,0,17,0,255,224,41,0,253,64,73,64,124,128,8,
|
||||
160,253,96,10,32,11,11,22,12,0,255,23,192,36,64,36,
|
||||
64,103,192,161,0,47,224,33,0,35,128,37,64,41,32,33,
|
||||
0,11,11,22,12,0,255,8,0,255,224,16,0,39,192,32,
|
||||
128,97,0,175,224,33,0,33,0,33,0,35,0,11,11,22,
|
||||
12,0,255,36,0,47,224,180,0,164,128,164,160,170,192,42,
|
||||
128,40,128,41,64,50,64,36,32,11,11,22,12,0,255,127,
|
||||
224,128,0,63,192,32,64,63,192,16,0,31,192,16,64,40,
|
||||
128,71,0,56,224,11,11,22,12,0,255,127,224,64,0,64,
|
||||
0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,128,
|
||||
0,11,11,22,12,0,255,255,224,4,0,127,192,68,64,127,
|
||||
192,68,64,127,192,68,0,36,0,24,0,231,224,11,11,22,
|
||||
12,0,255,17,224,253,0,69,0,41,224,253,64,17,64,125,
|
||||
64,17,64,85,64,146,64,52,64,11,11,22,12,0,255,33,
|
||||
0,95,224,64,0,207,192,64,0,79,192,64,0,79,192,72,
|
||||
64,79,192,72,64,11,11,22,12,0,255,4,0,127,192,64,
|
||||
64,127,192,64,64,127,192,64,64,127,192,4,64,82,32,191,
|
||||
160,11,11,22,12,0,255,127,192,68,64,127,192,68,64,127,
|
||||
192,4,0,27,0,224,224,17,0,17,0,97,0,11,11,22,
|
||||
12,0,255,255,224,4,0,8,0,127,224,73,32,79,32,73,
|
||||
32,79,32,73,32,73,32,127,224,11,11,22,12,0,255,253,
|
||||
224,86,64,121,64,56,128,85,64,146,32,255,224,4,0,39,
|
||||
192,36,0,255,224,11,11,22,12,0,255,251,128,82,0,123,
|
||||
224,18,64,250,64,20,64,63,128,32,128,63,128,32,128,63,
|
||||
128,11,11,22,12,0,255,31,224,32,0,39,192,100,64,167,
|
||||
192,32,0,47,224,40,32,39,192,33,0,35,0,11,11,22,
|
||||
12,0,255,243,224,130,32,130,32,250,32,130,32,130,32,138,
|
||||
32,178,32,194,224,2,0,2,0,11,11,22,12,0,255,36,
|
||||
128,70,160,149,192,228,128,39,224,68,128,245,192,6,160,52,
|
||||
128,196,128,7,224,11,11,22,12,0,255,39,192,65,0,135,
|
||||
224,224,32,34,128,69,128,242,128,15,224,48,128,193,64,2,
|
||||
32,11,11,22,12,0,255,2,0,2,0,34,0,35,192,34,
|
||||
0,34,0,34,0,34,0,34,0,34,0,255,224,9,11,22,
|
||||
12,0,255,8,0,8,0,255,128,136,128,136,128,136,128,255,
|
||||
128,136,128,136,128,136,128,255,128,11,11,22,12,0,255,33,
|
||||
0,83,160,65,0,247,224,81,0,83,192,86,64,83,192,90,
|
||||
64,83,192,66,64,11,11,22,12,0,255,127,192,4,0,4,
|
||||
0,4,0,255,224,10,0,10,0,18,0,34,32,66,32,129,
|
||||
224,11,11,22,12,0,255,17,0,33,0,47,224,97,0,163,
|
||||
128,35,128,37,64,37,64,41,32,33,0,33,0,11,11,22,
|
||||
12,0,255,247,224,148,32,244,32,151,224,148,128,244,128,151,
|
||||
224,148,128,244,160,150,96,4,32,11,11,22,12,0,255,123,
|
||||
224,148,128,4,0,127,192,4,0,255,224,1,0,255,224,33,
|
||||
0,17,0,7,0,11,11,22,12,0,255,33,0,71,192,145,
|
||||
0,47,224,96,128,175,224,32,128,36,128,34,128,32,128,35,
|
||||
128,11,11,22,12,0,255,39,192,36,64,247,192,46,224,42,
|
||||
160,62,224,225,0,47,224,35,128,37,64,105,32,11,11,22,
|
||||
12,0,255,20,0,39,224,42,0,98,0,163,192,34,0,34,
|
||||
0,35,224,34,0,34,0,34,0};
|
|
@ -29,7 +29,7 @@
|
|||
#endif
|
||||
|
||||
#include <U8glib.h>
|
||||
#include "DOGMbitmaps.h"
|
||||
#include "dogm_bitmaps.h"
|
||||
|
||||
#include "ultralcd.h"
|
||||
#include "ultralcd_st7920_u8glib_rrd.h"
|
||||
|
@ -64,6 +64,10 @@
|
|||
#elif defined( DISPLAY_CHARSET_ISO10646_KANA )
|
||||
#include "dogm_font_data_ISO10646_Kana.h"
|
||||
#define FONT_MENU_NAME ISO10646_Kana_5x7
|
||||
#elif defined( DISPLAY_CHARSET_ISO10646_CN )
|
||||
#include "dogm_font_data_ISO10646_CN.h"
|
||||
#define FONT_MENU_NAME ISO10646_CN
|
||||
#define TALL_FONT_CORRECTION 1
|
||||
#else // fall-back
|
||||
#include "dogm_font_data_ISO10646_1.h"
|
||||
#define FONT_MENU_NAME ISO10646_1_5x7
|
||||
|
@ -106,24 +110,12 @@
|
|||
#define LCD_WIDTH_EDIT 22
|
||||
#endif
|
||||
|
||||
#ifndef TALL_FONT_CORRECTION
|
||||
#define TALL_FONT_CORRECTION 0
|
||||
#endif
|
||||
|
||||
#define START_ROW 0
|
||||
|
||||
/* Custom characters defined in font font_6x10_marlin_symbols */
|
||||
// \x00 intentionally skipped to avoid problems in strings
|
||||
#define LCD_STR_REFRESH "\x01"
|
||||
#define LCD_STR_FOLDER "\x02"
|
||||
#define LCD_STR_ARROW_RIGHT "\x03"
|
||||
#define LCD_STR_UPLEVEL "\x04"
|
||||
#define LCD_STR_CLOCK "\x05"
|
||||
#define LCD_STR_FEEDRATE "\x06"
|
||||
#define LCD_STR_BEDTEMP "\x07"
|
||||
#define LCD_STR_THERMOMETER "\x08"
|
||||
#define LCD_STR_DEGREE "\x09"
|
||||
|
||||
#define LCD_STR_SPECIAL_MAX '\x09'
|
||||
// Maximum here is 0x1f because 0x20 is ' ' (space) and the normal charsets begin.
|
||||
// Better stay below 0x10 because DISPLAY_CHARSET_HD44780_WESTERN begins here.
|
||||
|
||||
// LCD selection
|
||||
#ifdef U8GLIB_ST7920
|
||||
//U8GLIB_ST7920_128X64_RRD u8g(0,0,0);
|
||||
|
@ -139,6 +131,13 @@
|
|||
U8GLIB_DOGM128 u8g(DOGLCD_CS, DOGLCD_A0); // HW-SPI Com: CS, A0
|
||||
#endif
|
||||
|
||||
#ifndef LCD_PIXEL_WIDTH
|
||||
#define LCD_PIXEL_WIDTH 128
|
||||
#endif
|
||||
#ifndef LCD_PIXEL_HEIGHT
|
||||
#define LCD_PIXEL_HEIGHT 64
|
||||
#endif
|
||||
|
||||
#include "utf_mapper.h"
|
||||
|
||||
int lcd_contrast;
|
||||
|
@ -188,6 +187,7 @@ char lcd_printPGM(const char* str) {
|
|||
|
||||
static bool show_splashscreen = true;
|
||||
|
||||
/* Warning: This function is called from interrupt context */
|
||||
static void lcd_implementation_init() {
|
||||
|
||||
#ifdef LCD_PIN_BL // Enable LCD backlight
|
||||
|
@ -268,25 +268,26 @@ static void lcd_implementation_status_screen() {
|
|||
|
||||
#ifdef SDSUPPORT
|
||||
// SD Card Symbol
|
||||
u8g.drawBox(42,42,8,7);
|
||||
u8g.drawBox(50,44,2,5);
|
||||
u8g.drawFrame(42,49,10,4);
|
||||
u8g.drawPixel(50,43);
|
||||
u8g.drawBox(42, 42 - TALL_FONT_CORRECTION, 8, 7);
|
||||
u8g.drawBox(50, 44 - TALL_FONT_CORRECTION, 2, 5);
|
||||
u8g.drawFrame(42, 49 - TALL_FONT_CORRECTION, 10, 4);
|
||||
u8g.drawPixel(50, 43 - TALL_FONT_CORRECTION);
|
||||
|
||||
|
||||
// Progress bar frame
|
||||
u8g.drawFrame(54,49,73,4);
|
||||
u8g.drawFrame(54, 49, 73, 4 - TALL_FONT_CORRECTION);
|
||||
|
||||
// SD Card Progress bar and clock
|
||||
lcd_setFont(FONT_STATUSMENU);
|
||||
|
||||
if (IS_SD_PRINTING) {
|
||||
// Progress bar solid part
|
||||
u8g.drawBox(55, 50, (unsigned int)(71.f * card.percentDone() / 100.f), 2);
|
||||
u8g.drawBox(55, 50, (unsigned int)(71.f * card.percentDone() / 100.f), 2 - TALL_FONT_CORRECTION);
|
||||
}
|
||||
|
||||
u8g.setPrintPos(80,48);
|
||||
if (starttime != 0) {
|
||||
uint16_t time = (millis() - starttime) / 60000;
|
||||
if (print_job_start_ms != 0) {
|
||||
uint16_t time = (millis() - print_job_start_ms) / 60000;
|
||||
lcd_print(itostr2(time/60));
|
||||
lcd_print(':');
|
||||
lcd_print(itostr2(time%60));
|
||||
|
@ -322,9 +323,9 @@ static void lcd_implementation_status_screen() {
|
|||
lcd_setFont(FONT_STATUSMENU);
|
||||
|
||||
#ifdef USE_SMALL_INFOFONT
|
||||
u8g.drawBox(0,30,128,10);
|
||||
u8g.drawBox(0,30,LCD_PIXEL_WIDTH,10);
|
||||
#else
|
||||
u8g.drawBox(0,30,128,9);
|
||||
u8g.drawBox(0,30,LCD_PIXEL_WIDTH,9);
|
||||
#endif
|
||||
u8g.setColorIndex(0); // white on black
|
||||
u8g.setPrintPos(2,XYZ_BASELINE);
|
||||
|
@ -353,7 +354,7 @@ static void lcd_implementation_status_screen() {
|
|||
lcd_print(LCD_STR_FEEDRATE[0]);
|
||||
lcd_setFont(FONT_STATUSMENU);
|
||||
u8g.setPrintPos(12,49);
|
||||
lcd_print(itostr3(feedmultiply));
|
||||
lcd_print(itostr3(feedrate_multiplier));
|
||||
lcd_print('%');
|
||||
|
||||
// Status line
|
||||
|
@ -366,7 +367,7 @@ static void lcd_implementation_status_screen() {
|
|||
#ifndef FILAMENT_LCD_DISPLAY
|
||||
lcd_print(lcd_status_message);
|
||||
#else
|
||||
if (millis() < message_millis + 5000) { //Display both Status message line and Filament display on the last line
|
||||
if (millis() < previous_lcd_status_ms + 5000) { //Display both Status message line and Filament display on the last line
|
||||
lcd_print(lcd_status_message);
|
||||
}
|
||||
else {
|
||||
|
@ -382,7 +383,7 @@ static void lcd_implementation_status_screen() {
|
|||
static void lcd_implementation_mark_as_selected(uint8_t row, bool isSelected) {
|
||||
if (isSelected) {
|
||||
u8g.setColorIndex(1); // black on white
|
||||
u8g.drawBox(0, row * DOG_CHAR_HEIGHT + 3, 128, DOG_CHAR_HEIGHT);
|
||||
u8g.drawBox(0, row * DOG_CHAR_HEIGHT + 3 - TALL_FONT_CORRECTION, LCD_PIXEL_WIDTH, DOG_CHAR_HEIGHT);
|
||||
u8g.setColorIndex(0); // following text must be white on black
|
||||
}
|
||||
else {
|
||||
|
@ -402,13 +403,15 @@ static void lcd_implementation_drawmenu_generic(bool isSelected, uint8_t row, co
|
|||
pstr++;
|
||||
}
|
||||
while (n--) lcd_print(' ');
|
||||
u8g.setPrintPos(LCD_PIXEL_WIDTH - DOG_CHAR_WIDTH, (row + 1) * DOG_CHAR_HEIGHT);
|
||||
lcd_print(post_char);
|
||||
lcd_print(' ');
|
||||
}
|
||||
|
||||
static void _drawmenu_setting_edit_generic(bool isSelected, uint8_t row, const char* pstr, const char* data, bool pgm) {
|
||||
char c;
|
||||
uint8_t n = LCD_WIDTH - 2 - (pgm ? lcd_strlen_P(data) : (lcd_strlen((char*)data)));
|
||||
uint8_t vallen = (pgm ? lcd_strlen_P(data) : (lcd_strlen((char*)data)));
|
||||
uint8_t n = LCD_WIDTH - 2 - vallen;
|
||||
|
||||
lcd_implementation_mark_as_selected(row, isSelected);
|
||||
|
||||
|
@ -418,6 +421,7 @@ static void _drawmenu_setting_edit_generic(bool isSelected, uint8_t row, const c
|
|||
}
|
||||
lcd_print(':');
|
||||
while (n--) lcd_print(' ');
|
||||
u8g.setPrintPos(LCD_PIXEL_WIDTH - DOG_CHAR_WIDTH * vallen, (row + 1) * DOG_CHAR_HEIGHT);
|
||||
if (pgm) { lcd_printPGM(data); } else { lcd_print((char *)data); }
|
||||
}
|
||||
|
||||
|
|
|
@ -39,7 +39,6 @@ Here are some standard links for getting your machine calibrated:
|
|||
// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
|
||||
// build by the user have been successfully uploaded into firmware.
|
||||
#define STRING_VERSION "1.0.3 dev"
|
||||
#define STRING_URL "reprap.org"
|
||||
#define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time
|
||||
#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes.
|
||||
#define STRING_SPLASH_LINE1 "v" STRING_VERSION // will be shown during bootup in line 1
|
||||
|
@ -62,8 +61,9 @@ Here are some standard links for getting your machine calibrated:
|
|||
#define MOTHERBOARD BOARD_FELIX2
|
||||
#endif
|
||||
|
||||
// Define this to set a custom name for your generic Mendel,
|
||||
// #define CUSTOM_MENDEL_NAME "This Mendel"
|
||||
// Optional custom name for your RepStrap or other custom machine
|
||||
// Displayed in the LCD "Ready" message
|
||||
#define CUSTOM_MACHINE_NAME "Felix"
|
||||
|
||||
// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
|
||||
// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
|
||||
|
@ -305,6 +305,7 @@ const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic o
|
|||
const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||
#define DISABLE_MAX_ENDSTOPS
|
||||
//#define DISABLE_MIN_ENDSTOPS
|
||||
|
||||
|
@ -315,6 +316,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
#define E_ENABLE_ON 0 // For all extruders
|
||||
|
||||
// Disables axis when it's not being used.
|
||||
// WARNING: When motors turn off there is a chance of losing position accuracy!
|
||||
#define DISABLE_X false
|
||||
#define DISABLE_Y false
|
||||
#define DISABLE_Z false
|
||||
|
@ -572,7 +574,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
//==============================LCD and SD support=============================
|
||||
|
||||
// Define your display language below. Replace (en) with your language code and uncomment.
|
||||
// en, pl, fr, de, es, ru, bg, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, test
|
||||
// en, pl, fr, de, es, ru, bg, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, cn, test
|
||||
// See also language.h
|
||||
//#define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en)
|
||||
|
||||
|
@ -592,9 +594,9 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
//#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking
|
||||
//#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
|
||||
//#define ULTIPANEL //the UltiPanel as on Thingiverse
|
||||
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
||||
//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click
|
||||
// 0 to disable buzzer feedback
|
||||
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
||||
// 0 to disable buzzer feedback. Test with M300 S<frequency Hz> P<duration ms>
|
||||
|
||||
// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
|
||||
// http://reprap.org/wiki/PanelOne
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#ifndef CONFIGURATION_H
|
||||
#ifndef CONFIGURATION_H
|
||||
#define CONFIGURATION_H
|
||||
|
||||
#include "boards.h"
|
||||
|
@ -39,7 +39,6 @@ Here are some standard links for getting your machine calibrated:
|
|||
// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
|
||||
// build by the user have been successfully uploaded into firmware.
|
||||
#define STRING_VERSION "1.0.3 dev"
|
||||
#define STRING_URL "reprap.org"
|
||||
#define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time
|
||||
#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes.
|
||||
#define STRING_SPLASH_LINE1 "v" STRING_VERSION // will be shown during bootup in line 1
|
||||
|
@ -62,8 +61,9 @@ Here are some standard links for getting your machine calibrated:
|
|||
#define MOTHERBOARD BOARD_FELIX2
|
||||
#endif
|
||||
|
||||
// Define this to set a custom name for your generic Mendel,
|
||||
// #define CUSTOM_MENDEL_NAME "This Mendel"
|
||||
// Optional custom name for your RepStrap or other custom machine
|
||||
// Displayed in the LCD "Ready" message
|
||||
#define CUSTOM_MACHINE_NAME "Felix Dual"
|
||||
|
||||
// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
|
||||
// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
|
||||
|
@ -305,6 +305,7 @@ const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic o
|
|||
const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||
#define DISABLE_MAX_ENDSTOPS
|
||||
//#define DISABLE_MIN_ENDSTOPS
|
||||
|
||||
|
@ -315,6 +316,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
#define E_ENABLE_ON 0 // For all extruders
|
||||
|
||||
// Disables axis when it's not being used.
|
||||
// WARNING: When motors turn off there is a chance of losing position accuracy!
|
||||
#define DISABLE_X false
|
||||
#define DISABLE_Y false
|
||||
#define DISABLE_Z false
|
||||
|
@ -568,7 +570,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
//==============================LCD and SD support=============================
|
||||
|
||||
// Define your display language below. Replace (en) with your language code and uncomment.
|
||||
// en, pl, fr, de, es, ru, bg, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, test
|
||||
// en, pl, fr, de, es, ru, bg, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, cn, test
|
||||
// See also language.h
|
||||
//#define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en)
|
||||
|
||||
|
@ -588,9 +590,9 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
//#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking
|
||||
//#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
|
||||
//#define ULTIPANEL //the UltiPanel as on Thingiverse
|
||||
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
||||
//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click
|
||||
// 0 to disable buzzer feedback
|
||||
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
||||
// 0 to disable buzzer feedback. Test with M300 S<frequency Hz> P<duration ms>
|
||||
|
||||
// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
|
||||
// http://reprap.org/wiki/PanelOne
|
||||
|
|
|
@ -195,6 +195,9 @@
|
|||
#define HOMING_BUMP_DIVISOR {2, 2, 4} // Re-Bump Speed Divisor (Divides the Homing Feedrate)
|
||||
//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially.
|
||||
|
||||
// When G28 is called, this option will make Y home before X
|
||||
// #define HOME_Y_BEFORE_X
|
||||
|
||||
// @section machine
|
||||
|
||||
#define AXIS_RELATIVE_MODES {false, false, false, false}
|
||||
|
@ -258,7 +261,6 @@
|
|||
#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
|
||||
#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value
|
||||
#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value
|
||||
//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value
|
||||
|
||||
//#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/
|
||||
#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
|
||||
|
@ -355,7 +357,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
|||
//#define HEATERS_PARALLEL
|
||||
|
||||
//===========================================================================
|
||||
//=============================Buffers ============================
|
||||
//================================= Buffers =================================
|
||||
//===========================================================================
|
||||
|
||||
// @section hidden
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#ifndef CONFIGURATION_H
|
||||
#ifndef CONFIGURATION_H
|
||||
#define CONFIGURATION_H
|
||||
|
||||
#include "boards.h"
|
||||
|
@ -39,7 +39,6 @@ Here are some standard links for getting your machine calibrated:
|
|||
// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
|
||||
// build by the user have been successfully uploaded into firmware.
|
||||
#define STRING_VERSION "1.0.3 dev"
|
||||
#define STRING_URL "reprap.org"
|
||||
#define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time
|
||||
#define STRING_CONFIG_H_AUTHOR "(bq Hephestos)" // Who made the changes.
|
||||
#define STRING_SPLASH_LINE1 "v" STRING_VERSION // will be shown during bootup in line 1
|
||||
|
@ -58,13 +57,12 @@ Here are some standard links for getting your machine calibrated:
|
|||
|
||||
// The following define selects which electronics board you have.
|
||||
// Please choose the name from boards.h that matches your setup
|
||||
#ifndef MOTHERBOARD
|
||||
#define MOTHERBOARD BOARD_HEPHESTOS
|
||||
#endif
|
||||
|
||||
// Define this to set a custom name for your generic Mendel,
|
||||
// #define CUSTOM_MENDEL_NAME "This Mendel"
|
||||
#define MOTHERBOARD BOARD_HEPHESTOS
|
||||
|
||||
// Optional custom name for your RepStrap or other custom machine
|
||||
// Displayed in the LCD "Ready" message
|
||||
// #define CUSTOM_MACHINE_NAME "3D Printer"
|
||||
|
||||
// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
|
||||
// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
|
||||
// #define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
|
||||
|
@ -328,6 +326,7 @@ const bool Z_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Z_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
//#define DISABLE_MAX_ENDSTOPS
|
||||
//#define DISABLE_MIN_ENDSTOPS
|
||||
|
||||
|
@ -338,6 +337,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
#define E_ENABLE_ON 0 // For all extruders
|
||||
|
||||
// Disables axis when it's not being used.
|
||||
// WARNING: When motors turn off there is a chance of losing position accuracy!
|
||||
#define DISABLE_X false
|
||||
#define DISABLE_Y false
|
||||
#define DISABLE_Z false
|
||||
|
@ -594,7 +594,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
//==============================LCD and SD support=============================
|
||||
|
||||
// Define your display language below. Replace (en) with your language code and uncomment.
|
||||
// en, pl, fr, de, es, ru, bg, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, test
|
||||
// en, pl, fr, de, es, ru, bg, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, cn, test
|
||||
// See also language.h
|
||||
//#define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en)
|
||||
|
||||
|
@ -614,9 +614,9 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
//#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking
|
||||
//#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
|
||||
//#define ULTIPANEL //the UltiPanel as on Thingiverse
|
||||
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
||||
//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click
|
||||
// 0 to disable buzzer feedback
|
||||
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
||||
// 0 to disable buzzer feedback. Test with M300 S<frequency Hz> P<duration ms>
|
||||
|
||||
// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
|
||||
// http://reprap.org/wiki/PanelOne
|
||||
|
|
|
@ -195,6 +195,9 @@
|
|||
#define HOMING_BUMP_DIVISOR {2, 2, 4} // Re-Bump Speed Divisor (Divides the Homing Feedrate)
|
||||
//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially.
|
||||
|
||||
// When G28 is called, this option will make Y home before X
|
||||
// #define HOME_Y_BEFORE_X
|
||||
|
||||
// @section machine
|
||||
|
||||
#define AXIS_RELATIVE_MODES {false, false, false, false}
|
||||
|
@ -258,7 +261,6 @@
|
|||
#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
|
||||
#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value
|
||||
#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value
|
||||
//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value
|
||||
|
||||
//#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/
|
||||
#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
|
||||
|
@ -355,7 +357,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
|||
//#define HEATERS_PARALLEL
|
||||
|
||||
//===========================================================================
|
||||
//=============================Buffers ============================
|
||||
//================================= Buffers =================================
|
||||
//===========================================================================
|
||||
|
||||
// @section hidden
|
||||
|
|
|
@ -1,4 +1,9 @@
|
|||
#ifndef CONFIGURATION_H
|
||||
// Example configuration file for Vellemann K8200
|
||||
// tested on K8200 with VM8201 (Display)
|
||||
// and Arduino 1.6.1 (Win) by @CONSULitAS, 2015-04-14
|
||||
// https://github.com/CONSULitAS/Marlin-K8200/archive/K8200_stable_2015-04-14.zip
|
||||
|
||||
#ifndef CONFIGURATION_H
|
||||
#define CONFIGURATION_H
|
||||
|
||||
#include "boards.h"
|
||||
|
@ -31,26 +36,31 @@ Here are some standard links for getting your machine calibrated:
|
|||
//===========================================================================
|
||||
//============================= SCARA Printer ===============================
|
||||
//===========================================================================
|
||||
// For a Delta printer replace the configuration files with the files in the
|
||||
// For a Scara printer replace the configuration files with the files in the
|
||||
// example_configurations/SCARA directory.
|
||||
//
|
||||
|
||||
// @section info
|
||||
|
||||
// User-specified version info of this build to display in [Pronterface, etc] terminal window during
|
||||
// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
|
||||
// build by the user have been successfully uploaded into firmware.
|
||||
#define STRING_VERSION "1.0.3 dev"
|
||||
#define STRING_URL "reprap.org"
|
||||
#define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time
|
||||
#define STRING_CONFIG_H_AUTHOR "(K8200, CONSULitAS)" // Who made the changes.
|
||||
#define STRING_SPLASH_LINE1 "v" STRING_VERSION // will be shown during bootup in line 1
|
||||
//#define STRING_SPLASH_LINE2 STRING_VERSION_CONFIG_H // will be shown during bootup in line2
|
||||
|
||||
// @section machine
|
||||
|
||||
// SERIAL_PORT selects which serial port should be used for communication with the host.
|
||||
// This allows the connection of wireless adapters (for instance) to non-default port pins.
|
||||
// Serial port 0 is still used by the Arduino bootloader regardless of this setting.
|
||||
// :[0,1,2,3,4,5,6,7]
|
||||
#define SERIAL_PORT 0
|
||||
|
||||
// This determines the communication speed of the printer
|
||||
// :[2400,9600,19200,38400,57600,115200,250000]
|
||||
#define BAUDRATE 250000
|
||||
|
||||
// This enables the serial port associated to the Bluetooth interface
|
||||
|
@ -62,25 +72,36 @@ Here are some standard links for getting your machine calibrated:
|
|||
#define MOTHERBOARD BOARD_K8200
|
||||
#endif
|
||||
|
||||
// Define this to set a custom name for your generic Mendel,
|
||||
// #define CUSTOM_MENDEL_NAME "This Mendel"
|
||||
// Optional custom name for your RepStrap or other custom machine
|
||||
// Displayed in the LCD "Ready" message
|
||||
// #define CUSTOM_MACHINE_NAME "3D Printer"
|
||||
|
||||
// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
|
||||
// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
|
||||
// #define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
|
||||
|
||||
// This defines the number of extruders
|
||||
// :[1,2,3,4]
|
||||
#define EXTRUDERS 1
|
||||
|
||||
// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
|
||||
// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
|
||||
// For the other hotends it is their distance from the extruder 0 hotend.
|
||||
//#define EXTRUDER_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
|
||||
//#define EXTRUDER_OFFSET_Y {0.0, 5.00} // (in mm) for each extruder, offset of the hotend on the Y axis
|
||||
|
||||
//// The following define selects which power supply you have. Please choose the one that matches your setup
|
||||
// 1 = ATX
|
||||
// 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC)
|
||||
// :{1:'ATX',2:'X-Box 360'}
|
||||
|
||||
#define POWER_SUPPLY 1
|
||||
|
||||
// Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it.
|
||||
// #define PS_DEFAULT_OFF
|
||||
|
||||
// @section temperature
|
||||
|
||||
//===========================================================================
|
||||
//============================= Thermal Settings ============================
|
||||
//===========================================================================
|
||||
|
@ -244,7 +265,7 @@ Here are some standard links for getting your machine calibrated:
|
|||
// #define DEFAULT_bedKi 1.41
|
||||
// #define DEFAULT_bedKd 1675.16
|
||||
|
||||
//Vellemann K8200 PCB heatbed with standard PCU - calculated with PID Autotune and tested
|
||||
//Vellemann K8200 PCB heatbed with standard PCU at 60 degreesC - calculated with PID Autotune and tested
|
||||
//from pidautotune
|
||||
#define DEFAULT_bedKp 341.88
|
||||
#define DEFAULT_bedKi 25.32
|
||||
|
@ -253,6 +274,7 @@ Here are some standard links for getting your machine calibrated:
|
|||
// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles.
|
||||
#endif // PIDTEMPBED
|
||||
|
||||
// @section extruder
|
||||
|
||||
//this prevents dangerous Extruder moves, i.e. if the temperature is under the limit
|
||||
//can be software-disabled for whatever purposes by
|
||||
|
@ -307,12 +329,16 @@ your extruder heater takes 2 minutes to hit the target on heating.
|
|||
//============================= Mechanical Settings =========================
|
||||
//===========================================================================
|
||||
|
||||
// @section machine
|
||||
|
||||
// Uncomment this option to enable CoreXY kinematics
|
||||
// #define COREXY
|
||||
|
||||
// Enable this option for Toshiba steppers
|
||||
// #define CONFIG_STEPPERS_TOSHIBA
|
||||
|
||||
// @section homing
|
||||
|
||||
// coarse Endstop Settings
|
||||
#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors
|
||||
|
||||
|
@ -324,6 +350,7 @@ your extruder heater takes 2 minutes to hit the target on heating.
|
|||
#define ENDSTOPPULLUP_XMIN
|
||||
#define ENDSTOPPULLUP_YMIN
|
||||
#define ENDSTOPPULLUP_ZMIN
|
||||
// #define ENDSTOPPULLUP_ZPROBE
|
||||
#endif
|
||||
|
||||
// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup).
|
||||
|
@ -333,33 +360,55 @@ const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic o
|
|||
const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||
#define DISABLE_MAX_ENDSTOPS
|
||||
//#define DISABLE_MIN_ENDSTOPS
|
||||
|
||||
// @section machine
|
||||
// If you want to enable the Z Probe pin, but disable its use, uncomment the line below.
|
||||
// This only affects a Z Probe Endstop if you have separate Z min endstop as well and have
|
||||
// activated Z_PROBE_ENDSTOP below. If you are using the Z Min endstop on your Z Probe,
|
||||
// this has no effect.
|
||||
//#define DISABLE_Z_PROBE_ENDSTOP
|
||||
|
||||
// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
|
||||
// :{0:'Low',1:'High'}
|
||||
#define X_ENABLE_ON 0
|
||||
#define Y_ENABLE_ON 0
|
||||
#define Z_ENABLE_ON 0
|
||||
#define E_ENABLE_ON 0 // For all extruders
|
||||
|
||||
// Disables axis when it's not being used.
|
||||
// WARNING: When motors turn off there is a chance of losing position accuracy!
|
||||
#define DISABLE_X false
|
||||
#define DISABLE_Y false
|
||||
#define DISABLE_Z true
|
||||
|
||||
// @section extruder
|
||||
|
||||
#define DISABLE_E false // For all extruders
|
||||
#define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled
|
||||
|
||||
// @section machine
|
||||
|
||||
// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way.
|
||||
#define INVERT_X_DIR false
|
||||
#define INVERT_Y_DIR false
|
||||
#define INVERT_Z_DIR false
|
||||
#define INVERT_E0_DIR true
|
||||
|
||||
// @section extruder
|
||||
|
||||
// For direct drive extruder v9 set to true, for geared extruder set to false.
|
||||
#define INVERT_E0_DIR true // K8200: true for geared default extruder!
|
||||
#define INVERT_E1_DIR true
|
||||
#define INVERT_E2_DIR true
|
||||
#define INVERT_E3_DIR true
|
||||
|
||||
// @section homing
|
||||
|
||||
// ENDSTOP SETTINGS:
|
||||
// Sets direction of endstops when homing; 1=MAX, -1=MIN
|
||||
// :[-1,1]
|
||||
#define X_HOME_DIR -1
|
||||
#define Y_HOME_DIR -1
|
||||
#define Z_HOME_DIR -1
|
||||
|
@ -367,6 +416,8 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
#define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS.
|
||||
#define max_software_endstops true // If true, axis won't move to coordinates greater than the defined lengths below.
|
||||
|
||||
// @section machine
|
||||
|
||||
// Travel limits after homing (units are in mm)
|
||||
#define X_MIN_POS 0
|
||||
#define Y_MIN_POS 0
|
||||
|
@ -386,14 +437,14 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
//#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined.
|
||||
|
||||
//===========================================================================
|
||||
//============================ Manual Bed Leveling ==========================
|
||||
//============================ Mesh Bed Leveling ============================
|
||||
//===========================================================================
|
||||
|
||||
// #define MANUAL_BED_LEVELING // Add display menu option for bed leveling
|
||||
// #define MESH_BED_LEVELING // Enable mesh bed leveling
|
||||
|
||||
#ifdef MANUAL_BED_LEVELING
|
||||
#define MBL_Z_STEP 0.025
|
||||
#define MBL_Z_STEP 0.025 // Step size while manually probing Z axis
|
||||
#endif // MANUAL_BED_LEVELING
|
||||
|
||||
#ifdef MESH_BED_LEVELING
|
||||
|
@ -410,6 +461,8 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
//============================= Bed Auto Leveling ===========================
|
||||
//===========================================================================
|
||||
|
||||
// @section bedlevel
|
||||
|
||||
//#define ENABLE_AUTO_BED_LEVELING // Delete the comment to enable (remove // at the start of the line)
|
||||
#define Z_PROBE_REPEATABILITY_TEST // If not commented out, Z-Probe Repeatability test will be included if Auto Bed Leveling is Enabled.
|
||||
|
||||
|
@ -518,6 +571,8 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
#endif // ENABLE_AUTO_BED_LEVELING
|
||||
|
||||
|
||||
// @section homing
|
||||
|
||||
// The position of the homing switches
|
||||
//#define MANUAL_HOME_POSITIONS // If defined, MANUAL_*_HOME_POS below will be used
|
||||
//#define BED_CENTER_AT_0_0 // If defined, the center of the bed is at (X=0, Y=0)
|
||||
|
@ -531,6 +586,8 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
//#define MANUAL_Z_HOME_POS 402 // For delta: Distance between nozzle and print surface after homing.
|
||||
#endif
|
||||
|
||||
// @section movement
|
||||
|
||||
/**
|
||||
* MOVEMENT SETTINGS
|
||||
*/
|
||||
|
@ -547,13 +604,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
#define DEFAULT_RETRACT_ACCELERATION 1000 // E acceleration in mm/s^2 for retracts
|
||||
#define DEFAULT_TRAVEL_ACCELERATION 1000 // X, Y, Z acceleration in mm/s^2 for travel (non printing) moves
|
||||
|
||||
|
||||
// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
|
||||
// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
|
||||
// For the other hotends it is their distance from the extruder 0 hotend.
|
||||
// #define EXTRUDER_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
|
||||
// #define EXTRUDER_OFFSET_Y {0.0, 5.00} // (in mm) for each extruder, offset of the hotend on the Y axis
|
||||
|
||||
// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously)
|
||||
#define DEFAULT_XYJERK 20.0 // (mm/sec)
|
||||
#define DEFAULT_ZJERK 0.4 // (mm/sec)
|
||||
|
@ -564,6 +614,8 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
//============================= Additional Features ===========================
|
||||
//=============================================================================
|
||||
|
||||
// @section more
|
||||
|
||||
// Custom M code points
|
||||
#define CUSTOM_M_CODES
|
||||
#ifdef CUSTOM_M_CODES
|
||||
|
@ -574,6 +626,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
#endif
|
||||
#endif
|
||||
|
||||
// @section extras
|
||||
|
||||
// EEPROM
|
||||
// The microcontroller can store settings in the EEPROM, e.g. max velocity...
|
||||
|
@ -588,26 +641,30 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
#define EEPROM_CHITCHAT // please keep turned on if you can.
|
||||
#endif
|
||||
|
||||
|
||||
// @section temperature
|
||||
|
||||
// Preheat Constants
|
||||
#define PLA_PREHEAT_HOTEND_TEMP 190
|
||||
#define PLA_PREHEAT_HPB_TEMP 50
|
||||
#define PLA_PREHEAT_HPB_TEMP 50 // K8200: set back to 70 if you have an upgraded heatbed power supply
|
||||
#define PLA_PREHEAT_FAN_SPEED 0 // Insert Value between 0 and 255
|
||||
|
||||
#define ABS_PREHEAT_HOTEND_TEMP 240
|
||||
#define ABS_PREHEAT_HPB_TEMP 60
|
||||
#define ABS_PREHEAT_HPB_TEMP 60 // K8200: set back to 110 if you have an upgraded heatbed power supply
|
||||
#define ABS_PREHEAT_FAN_SPEED 0 // Insert Value between 0 and 255
|
||||
|
||||
//==============================LCD and SD support=============================
|
||||
// @section lcd
|
||||
|
||||
// Define your display language below. Replace (en) with your language code and uncomment.
|
||||
// en, pl, fr, de, es, ru, bg, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, test
|
||||
// en, pl, fr, de, es, ru, bg, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, cn, test
|
||||
// See also language.h
|
||||
//#define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en)
|
||||
#define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en)
|
||||
|
||||
// Choose ONE of these 3 charsets. This has to match your hardware. Ignored for full graphic display.
|
||||
// To find out what type you have - compile with (test) - upload - click to get the menu. You'll see two typical lines from the upper half of the charset.
|
||||
// See also documentation/LCDLanguageFont.md
|
||||
#define DISPLAY_CHARSET_HD44780_JAPAN // this is the most common hardware
|
||||
#define DISPLAY_CHARSET_HD44780_JAPAN // K8200: for Display VM8201 // this is the most common hardware
|
||||
//#define DISPLAY_CHARSET_HD44780_WESTERN
|
||||
//#define DISPLAY_CHARSET_HD44780_CYRILLIC
|
||||
|
||||
|
@ -618,11 +675,11 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
//#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication
|
||||
//#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder
|
||||
//#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking
|
||||
#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
|
||||
#define ULTIMAKERCONTROLLER // K8200: for Display VM8201 // as available from the Ultimaker online store.
|
||||
//#define ULTIPANEL //the UltiPanel as on Thingiverse
|
||||
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
||||
//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click
|
||||
// 0 to disable buzzer feedback
|
||||
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
||||
// 0 to disable buzzer feedback. Test with M300 S<frequency Hz> P<duration ms>
|
||||
|
||||
// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
|
||||
// http://reprap.org/wiki/PanelOne
|
||||
|
@ -681,6 +738,8 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
|
||||
//#define SAV_3DLCD
|
||||
|
||||
// @section extras
|
||||
|
||||
// Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino
|
||||
//#define FAST_PWM_FAN
|
||||
|
||||
|
@ -704,7 +763,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
// Data from: http://www.doc-diy.net/photo/rc-1_hacked/
|
||||
// #define PHOTOGRAPH_PIN 23
|
||||
|
||||
// SF send wrong arc g-codes when using Arc Point as fillet procedure
|
||||
// SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure
|
||||
//#define SF_ARC_FIX
|
||||
|
||||
// Support for the BariCUDA Paste Extruder.
|
||||
|
@ -758,7 +817,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
#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)
|
||||
|
||||
//defines used in the code
|
||||
#define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially
|
||||
#define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially
|
||||
|
||||
//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.
|
||||
//#define FILAMENT_LCD_DISPLAY
|
||||
|
|
|
@ -195,6 +195,9 @@
|
|||
#define HOMING_BUMP_DIVISOR {2, 2, 4} // Re-Bump Speed Divisor (Divides the Homing Feedrate)
|
||||
//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially.
|
||||
|
||||
// When G28 is called, this option will make Y home before X
|
||||
// #define HOME_Y_BEFORE_X
|
||||
|
||||
// @section machine
|
||||
|
||||
#define AXIS_RELATIVE_MODES {false, false, false, false}
|
||||
|
@ -258,7 +261,6 @@
|
|||
#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
|
||||
#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value
|
||||
#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value
|
||||
//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value
|
||||
|
||||
//#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/
|
||||
#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
|
||||
|
@ -355,7 +357,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
|||
//#define HEATERS_PARALLEL
|
||||
|
||||
//===========================================================================
|
||||
//=============================Buffers ============================
|
||||
//================================= Buffers =================================
|
||||
//===========================================================================
|
||||
|
||||
// @section hidden
|
||||
|
|
|
@ -1,13 +1,20 @@
|
|||
# Example Configuration for Vellemann K8200
|
||||
* Configuration files for **Vellemann K8200** (with VM8201 - LCD Option for K8200)
|
||||
# Example Configuration for Vellemann [K8200](http://www.k8200.eu/)
|
||||
* Configuration files for **Vellemann K8200** (with [VM8201](http://www.vellemanprojects.eu/products/view/?id=416158) - LCD Option for K8200)
|
||||
* K8200 is a 3Drag clone - configuration should work with 3Drag http://reprap.org/wiki/3drag, too. Please report.
|
||||
|
||||
* updated manually with parameters form genuine Vellemann Firmware "firmware_k8200_marlinv2" based on the recent development branch
|
||||
* updated manually with parameters from genuine Vellemann Firmware "firmware_k8200_marlinv2" based on the recent development branch
|
||||
|
||||
* VM8201 uses "DISPLAY_CHARSET_HD44870_JAPAN" and "ULTIMAKERCONTROLLER"
|
||||
* german (de) translation with umlaut is supported now - thanks to @AnHardt for the great hardware based umlaut support
|
||||
|
||||
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.
|
||||
I [@CONSULitAS](https://github.com/CONSULitAS) tested the changes on my K8200 with 20x4-LCD and Arduino 1.6.1 for Windows (SD library added to IDE manually) - everything works well.
|
||||
|
||||
**Source for genuine Vellemann Firmware V2 (with LCD/SD-Support):**
|
||||
* [firmware_k8200_marlinv2.zip](http://www.k8200.eu/downloads/files/downloads/firmware_k8200_marlinv2.zip)
|
||||
**Source for genuine [Vellemann Firmware](http://www.k8200.eu/support/downloads/)**
|
||||
* V2.1.1 (for z axis upgrade, date branched: 2013-06-05): [firmware_k8200_v2.1.1.zip](http://www.k8200.eu/downloads/files/downloads/firmware_k8200_v2.1.1.zip)
|
||||
* see also https://github.com/CONSULitAS/Marlin-K8200/tree/Vellemann_firmware_k8200_v2.1.1.zip
|
||||
|
||||
* V2 (with LCD/SD-Support, date branched: 2013-06-05): [firmware_k8200_marlinv2.zip](http://www.k8200.eu/downloads/files/downloads/firmware_k8200_marlinv2.zip)
|
||||
* see also https://github.com/CONSULitAS/Marlin-K8200/tree/Vellemann_firmware_k8200_marlinv2.zip
|
||||
|
||||
* V1 (without LCD/SD-Support, date branched: 2012-10-02): [firmware_k8200_marlinv1.zip](http://www.k8200.eu/downloads/files/downloads/firmware_k8200_marlinv1.zip)
|
||||
* see also https://github.com/CONSULitAS/Marlin-K8200/tree/Vellemann_firmware_k8200_marlinv1.zip
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#ifndef CONFIGURATION_H
|
||||
#ifndef CONFIGURATION_H
|
||||
#define CONFIGURATION_H
|
||||
|
||||
#include "boards.h"
|
||||
|
@ -57,7 +57,6 @@ Here are some standard links for getting your machine calibrated:
|
|||
// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
|
||||
// build by the user have been successfully uploaded into firmware.
|
||||
#define STRING_VERSION "1.0.3 dev"
|
||||
#define STRING_URL "reprap.org"
|
||||
#define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time
|
||||
#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes.
|
||||
#define STRING_SPLASH_LINE1 "v" STRING_VERSION // will be shown during bootup in line 1
|
||||
|
@ -80,8 +79,9 @@ Here are some standard links for getting your machine calibrated:
|
|||
#define MOTHERBOARD BOARD_RAMPS_13_EFB
|
||||
#endif
|
||||
|
||||
// Define this to set a custom name for your generic Mendel,
|
||||
// #define CUSTOM_MENDEL_NAME "This Mendel"
|
||||
// Optional custom name for your RepStrap or other custom machine
|
||||
// Displayed in the LCD "Ready" message
|
||||
// #define CUSTOM_MACHINE_NAME "3D Printer"
|
||||
|
||||
// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
|
||||
// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
|
||||
|
@ -357,6 +357,7 @@ const bool Z_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||
//#define DISABLE_MAX_ENDSTOPS
|
||||
//#define DISABLE_MIN_ENDSTOPS
|
||||
|
||||
|
@ -367,6 +368,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
#define E_ENABLE_ON 0 // For all extruders
|
||||
|
||||
// Disables axis when it's not being used.
|
||||
// WARNING: When motors turn off there is a chance of losing position accuracy!
|
||||
#define DISABLE_X false
|
||||
#define DISABLE_Y false
|
||||
#define DISABLE_Z false
|
||||
|
@ -623,7 +625,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
//==============================LCD and SD support=============================
|
||||
|
||||
// Define your display language below. Replace (en) with your language code and uncomment.
|
||||
// en, pl, fr, de, es, ru, bg, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, test
|
||||
// en, pl, fr, de, es, ru, bg, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, cn, test
|
||||
// See also language.h
|
||||
//#define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en)
|
||||
|
||||
|
@ -643,9 +645,9 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
//#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking
|
||||
//#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
|
||||
//#define ULTIPANEL //the UltiPanel as on Thingiverse
|
||||
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
||||
//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click
|
||||
// 0 to disable buzzer feedback
|
||||
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
||||
// 0 to disable buzzer feedback. Test with M300 S<frequency Hz> P<duration ms>
|
||||
|
||||
// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
|
||||
// http://reprap.org/wiki/PanelOne
|
||||
|
|
|
@ -195,6 +195,9 @@
|
|||
#define HOMING_BUMP_DIVISOR {2, 2, 4} // Re-Bump Speed Divisor (Divides the Homing Feedrate)
|
||||
//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially.
|
||||
|
||||
// When G28 is called, this option will make Y home before X
|
||||
// #define HOME_Y_BEFORE_X
|
||||
|
||||
// @section machine
|
||||
|
||||
#define AXIS_RELATIVE_MODES {false, false, false, false}
|
||||
|
@ -258,7 +261,6 @@
|
|||
#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
|
||||
#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value
|
||||
#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value
|
||||
//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value
|
||||
|
||||
//#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/
|
||||
#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
|
||||
|
@ -355,7 +357,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
|||
//#define HEATERS_PARALLEL
|
||||
|
||||
//===========================================================================
|
||||
//=============================Buffers ============================
|
||||
//================================= Buffers =================================
|
||||
//===========================================================================
|
||||
|
||||
// @section hidden
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#ifndef CONFIGURATION_H
|
||||
#ifndef CONFIGURATION_H
|
||||
#define CONFIGURATION_H
|
||||
|
||||
#include "boards.h"
|
||||
|
@ -39,7 +39,6 @@ Here are some standard links for getting your machine calibrated:
|
|||
// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
|
||||
// build by the user have been successfully uploaded into firmware.
|
||||
#define STRING_VERSION "1.0.3 dev"
|
||||
#define STRING_URL "reprap.org"
|
||||
#define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time
|
||||
#define STRING_CONFIG_H_AUTHOR "(bq Witbox)" // Who made the changes.
|
||||
#define STRING_SPLASH_LINE1 "v" STRING_VERSION // will be shown during bootup in line 1
|
||||
|
@ -58,12 +57,11 @@ Here are some standard links for getting your machine calibrated:
|
|||
|
||||
// The following define selects which electronics board you have.
|
||||
// Please choose the name from boards.h that matches your setup
|
||||
#ifndef MOTHERBOARD
|
||||
#define MOTHERBOARD BOARD_WITBOX
|
||||
#endif
|
||||
#define MOTHERBOARD BOARD_WITBOX
|
||||
|
||||
// Define this to set a custom name for your generic Mendel,
|
||||
// #define CUSTOM_MENDEL_NAME "This Mendel"
|
||||
// Optional custom name for your RepStrap or other custom machine
|
||||
// Displayed in the LCD "Ready" message
|
||||
// #define CUSTOM_MACHINE_NAME "3D Printer"
|
||||
|
||||
// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
|
||||
// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
|
||||
|
@ -327,6 +325,7 @@ const bool Z_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Z_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
//#define DISABLE_MAX_ENDSTOPS
|
||||
//#define DISABLE_MIN_ENDSTOPS
|
||||
|
||||
|
@ -337,6 +336,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
#define E_ENABLE_ON 0 // For all extruders
|
||||
|
||||
// Disables axis when it's not being used.
|
||||
// WARNING: When motors turn off there is a chance of losing position accuracy!
|
||||
#define DISABLE_X false
|
||||
#define DISABLE_Y false
|
||||
#define DISABLE_Z true
|
||||
|
@ -593,7 +593,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
//==============================LCD and SD support=============================
|
||||
|
||||
// Define your display language below. Replace (en) with your language code and uncomment.
|
||||
// en, pl, fr, de, es, ru, bg, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, test
|
||||
// en, pl, fr, de, es, ru, bg, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, cn, test
|
||||
// See also language.h
|
||||
//#define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en)
|
||||
|
||||
|
@ -613,9 +613,9 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
//#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking
|
||||
//#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
|
||||
//#define ULTIPANEL //the UltiPanel as on Thingiverse
|
||||
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
||||
//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click
|
||||
// 0 to disable buzzer feedback
|
||||
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
||||
// 0 to disable buzzer feedback. Test with M300 S<frequency Hz> P<duration ms>
|
||||
|
||||
// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
|
||||
// http://reprap.org/wiki/PanelOne
|
||||
|
|
|
@ -195,6 +195,9 @@
|
|||
#define HOMING_BUMP_DIVISOR {2, 2, 4} // Re-Bump Speed Divisor (Divides the Homing Feedrate)
|
||||
//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially.
|
||||
|
||||
// When G28 is called, this option will make Y home before X
|
||||
// #define HOME_Y_BEFORE_X
|
||||
|
||||
// @section machine
|
||||
|
||||
#define AXIS_RELATIVE_MODES {false, false, false, false}
|
||||
|
@ -258,7 +261,6 @@
|
|||
#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
|
||||
#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value
|
||||
#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value
|
||||
//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value
|
||||
|
||||
//#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/
|
||||
#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
|
||||
|
@ -355,7 +357,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
|||
//#define HEATERS_PARALLEL
|
||||
|
||||
//===========================================================================
|
||||
//=============================Buffers ============================
|
||||
//================================= Buffers =================================
|
||||
//===========================================================================
|
||||
|
||||
// @section hidden
|
||||
|
|
|
@ -39,7 +39,6 @@ Here are some standard links for getting your machine calibrated:
|
|||
// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
|
||||
// build by the user have been successfully uploaded into firmware.
|
||||
#define STRING_VERSION "1.0.3 dev"
|
||||
#define STRING_URL "reprap.org"
|
||||
#define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time
|
||||
#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes.
|
||||
#define STRING_SPLASH_LINE1 "v" STRING_VERSION // will be shown during bootup in line 1
|
||||
|
@ -62,8 +61,9 @@ Here are some standard links for getting your machine calibrated:
|
|||
#define MOTHERBOARD BOARD_RAMPS_13_EFB
|
||||
#endif
|
||||
|
||||
// Define this to set a custom name for your generic Mendel,
|
||||
// #define CUSTOM_MENDEL_NAME "This Mendel"
|
||||
// Optional custom name for your RepStrap or other custom machine
|
||||
// Displayed in the LCD "Ready" message
|
||||
#define CUSTOM_MACHINE_NAME "Deltabot"
|
||||
|
||||
// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
|
||||
// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
|
||||
|
@ -355,6 +355,7 @@ const bool Z_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Z_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
//#define DISABLE_MAX_ENDSTOPS
|
||||
#define DISABLE_MIN_ENDSTOPS // Deltas only use min endstops for probing
|
||||
|
||||
|
@ -365,6 +366,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
#define E_ENABLE_ON 0 // For all extruders
|
||||
|
||||
// Disables axis when it's not being used.
|
||||
// WARNING: When motors turn off there is a chance of losing position accuracy!
|
||||
#define DISABLE_X false
|
||||
#define DISABLE_Y false
|
||||
#define DISABLE_Z false
|
||||
|
@ -640,7 +642,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
//==============================LCD and SD support=============================
|
||||
|
||||
// Define your display language below. Replace (en) with your language code and uncomment.
|
||||
// en, pl, fr, de, es, ru, bg, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, test
|
||||
// en, pl, fr, de, es, ru, bg, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, cn, test
|
||||
// See also language.h
|
||||
#define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en)
|
||||
|
||||
|
@ -660,9 +662,9 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
//#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking
|
||||
//#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
|
||||
//#define ULTIPANEL //the UltiPanel as on Thingiverse
|
||||
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
||||
//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click
|
||||
// 0 to disable buzzer feedback
|
||||
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
||||
// 0 to disable buzzer feedback. Test with M300 S<frequency Hz> P<duration ms>
|
||||
|
||||
// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
|
||||
// http://reprap.org/wiki/PanelOne
|
||||
|
|
|
@ -195,6 +195,9 @@
|
|||
#define HOMING_BUMP_DIVISOR {10, 10, 20} // Re-Bump Speed Divisor (Divides the Homing Feedrate)
|
||||
//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially.
|
||||
|
||||
// When G28 is called, this option will make Y home before X
|
||||
// #define HOME_Y_BEFORE_X
|
||||
|
||||
// @section machine
|
||||
|
||||
#define AXIS_RELATIVE_MODES {false, false, false, false}
|
||||
|
@ -259,7 +262,6 @@
|
|||
#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
|
||||
#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value
|
||||
#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value
|
||||
//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value
|
||||
|
||||
//#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/
|
||||
#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
|
||||
|
@ -356,7 +358,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
|||
//#define HEATERS_PARALLEL
|
||||
|
||||
//===========================================================================
|
||||
//=============================Buffers ============================
|
||||
//================================= Buffers =================================
|
||||
//===========================================================================
|
||||
|
||||
// @section hidden
|
||||
|
|
|
@ -39,7 +39,6 @@ Here are some standard links for getting your machine calibrated:
|
|||
// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
|
||||
// build by the user have been successfully uploaded into firmware.
|
||||
#define STRING_VERSION "1.0.3 dev"
|
||||
#define STRING_URL "reprap.org"
|
||||
#define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time
|
||||
#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes.
|
||||
#define STRING_SPLASH_LINE1 "v" STRING_VERSION // will be shown during bootup in line 1
|
||||
|
@ -62,8 +61,9 @@ Here are some standard links for getting your machine calibrated:
|
|||
#define MOTHERBOARD BOARD_RAMPS_13_EFB
|
||||
#endif
|
||||
|
||||
// Define this to set a custom name for your generic Mendel,
|
||||
#define CUSTOM_MENDEL_NAME "Mini Kossel"
|
||||
// Optional custom name for your RepStrap or other custom machine
|
||||
// Displayed in the LCD "Ready" message
|
||||
#define CUSTOM_MACHINE_NAME "Mini Kossel"
|
||||
|
||||
// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
|
||||
// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
|
||||
|
@ -355,6 +355,7 @@ const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic o
|
|||
const bool X_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||
const bool Y_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||
const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||
//#define DISABLE_MAX_ENDSTOPS
|
||||
//#define DISABLE_MIN_ENDSTOPS // Deltas only use min endstops for probing
|
||||
|
||||
|
@ -365,6 +366,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic o
|
|||
#define E_ENABLE_ON 0 // For all extruders
|
||||
|
||||
// Disables axis when it's not being used.
|
||||
// WARNING: When motors turn off there is a chance of losing position accuracy!
|
||||
#define DISABLE_X false
|
||||
#define DISABLE_Y false
|
||||
#define DISABLE_Z false
|
||||
|
@ -644,7 +646,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic o
|
|||
//==============================LCD and SD support=============================
|
||||
|
||||
// Define your display language below. Replace (en) with your language code and uncomment.
|
||||
// en, pl, fr, de, es, ru, bg, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, test
|
||||
// en, pl, fr, de, es, ru, bg, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, cn, test
|
||||
// See also language.h
|
||||
#define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en)
|
||||
|
||||
|
@ -664,9 +666,9 @@ const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic o
|
|||
//#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking
|
||||
//#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
|
||||
//#define ULTIPANEL //the UltiPanel as on Thingiverse
|
||||
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
||||
//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click
|
||||
// 0 to disable buzzer feedback
|
||||
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
||||
// 0 to disable buzzer feedback. Test with M300 S<frequency Hz> P<duration ms>
|
||||
|
||||
// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
|
||||
// http://reprap.org/wiki/PanelOne
|
||||
|
|
|
@ -195,6 +195,9 @@
|
|||
#define HOMING_BUMP_DIVISOR {10, 10, 20} // Re-Bump Speed Divisor (Divides the Homing Feedrate)
|
||||
//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially.
|
||||
|
||||
// When G28 is called, this option will make Y home before X
|
||||
// #define HOME_Y_BEFORE_X
|
||||
|
||||
// @section machine
|
||||
|
||||
#define AXIS_RELATIVE_MODES {false, false, false, false}
|
||||
|
@ -258,7 +261,6 @@
|
|||
#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
|
||||
#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value
|
||||
#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value
|
||||
//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value
|
||||
|
||||
//#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/
|
||||
#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
|
||||
|
@ -355,7 +357,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
|||
//#define HEATERS_PARALLEL
|
||||
|
||||
//===========================================================================
|
||||
//=============================Buffers ============================
|
||||
//================================= Buffers =================================
|
||||
//===========================================================================
|
||||
|
||||
// @section hidden
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#ifndef CONFIGURATION_H
|
||||
#ifndef CONFIGURATION_H
|
||||
#define CONFIGURATION_H
|
||||
|
||||
#include "boards.h"
|
||||
|
@ -39,7 +39,6 @@ Here are some standard links for getting your machine calibrated:
|
|||
// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
|
||||
// build by the user have been successfully uploaded into firmware.
|
||||
#define STRING_VERSION "1.0.3 dev"
|
||||
#define STRING_URL "reprap.org"
|
||||
#define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time
|
||||
#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes.
|
||||
#define STRING_SPLASH_LINE1 "v" STRING_VERSION // will be shown during bootup in line 1
|
||||
|
@ -62,8 +61,9 @@ Here are some standard links for getting your machine calibrated:
|
|||
#define MOTHERBOARD BOARD_5DPRINT
|
||||
#endif
|
||||
|
||||
// Define this to set a custom name for your generic Mendel,
|
||||
// #define CUSTOM_MENDEL_NAME "This Mendel"
|
||||
// Optional custom name for your RepStrap or other custom machine
|
||||
// Displayed in the LCD "Ready" message
|
||||
// #define CUSTOM_MACHINE_NAME "3D Printer"
|
||||
|
||||
// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
|
||||
// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
|
||||
|
@ -325,6 +325,7 @@ const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic o
|
|||
const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||
//#define DISABLE_MAX_ENDSTOPS
|
||||
//#define DISABLE_MIN_ENDSTOPS
|
||||
|
||||
|
@ -335,6 +336,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
#define E_ENABLE_ON 0 // For all extruders
|
||||
|
||||
// Disables axis when it's not being used.
|
||||
// WARNING: When motors turn off there is a chance of losing position accuracy!
|
||||
#define DISABLE_X false
|
||||
#define DISABLE_Y false
|
||||
#define DISABLE_Z false
|
||||
|
@ -591,7 +593,8 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
//==============================LCD and SD support=============================
|
||||
|
||||
// Define your display language below. Replace (en) with your language code and uncomment.
|
||||
// en, pl, fr, de, es, ru, bg, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, test
|
||||
// en, pl, fr, de, es, ru, bg, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, cn, test
|
||||
|
||||
// See also language.h
|
||||
//#define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en)
|
||||
|
||||
|
@ -611,9 +614,9 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
//#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking
|
||||
//#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
|
||||
//#define ULTIPANEL //the UltiPanel as on Thingiverse
|
||||
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
||||
//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click
|
||||
// 0 to disable buzzer feedback
|
||||
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
||||
// 0 to disable buzzer feedback. Test with M300 S<frequency Hz> P<duration ms>
|
||||
|
||||
// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
|
||||
// http://reprap.org/wiki/PanelOne
|
||||
|
|
|
@ -195,6 +195,9 @@
|
|||
#define HOMING_BUMP_DIVISOR {2, 2, 4} // Re-Bump Speed Divisor (Divides the Homing Feedrate)
|
||||
//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially.
|
||||
|
||||
// When G28 is called, this option will make Y home before X
|
||||
// #define HOME_Y_BEFORE_X
|
||||
|
||||
// @section machine
|
||||
|
||||
#define AXIS_RELATIVE_MODES {false, false, false, false}
|
||||
|
@ -258,7 +261,6 @@
|
|||
#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
|
||||
#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value
|
||||
#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value
|
||||
//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value
|
||||
|
||||
//#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/
|
||||
#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
|
||||
|
@ -355,7 +357,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
|||
//#define HEATERS_PARALLEL
|
||||
|
||||
//===========================================================================
|
||||
//=============================Buffers ============================
|
||||
//================================= Buffers =================================
|
||||
//===========================================================================
|
||||
|
||||
// @section hidden
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#ifndef CONFIGURATION_H
|
||||
#ifndef CONFIGURATION_H
|
||||
#define CONFIGURATION_H
|
||||
|
||||
#include "boards.h"
|
||||
|
@ -39,7 +39,6 @@ Here are some standard links for getting your machine calibrated:
|
|||
// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
|
||||
// build by the user have been successfully uploaded into firmware.
|
||||
#define STRING_VERSION "1.0.3 dev"
|
||||
#define STRING_URL "reprap.org"
|
||||
#define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time
|
||||
#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes.
|
||||
#define STRING_SPLASH_LINE1 "v" STRING_VERSION // will be shown during bootup in line 1
|
||||
|
@ -62,8 +61,9 @@ Here are some standard links for getting your machine calibrated:
|
|||
#define MOTHERBOARD BOARD_OMCA
|
||||
#endif
|
||||
|
||||
// Define this to set a custom name for your generic Mendel,
|
||||
// #define CUSTOM_MENDEL_NAME "This Mendel"
|
||||
// Optional custom name for your RepStrap or other custom machine
|
||||
// Displayed in the LCD "Ready" message
|
||||
// #define CUSTOM_MACHINE_NAME "3D Printer"
|
||||
|
||||
// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
|
||||
// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
|
||||
|
@ -327,6 +327,7 @@ const bool Z_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Z_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
//#define DISABLE_MAX_ENDSTOPS
|
||||
//#define DISABLE_MIN_ENDSTOPS
|
||||
|
||||
|
@ -337,6 +338,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
#define E_ENABLE_ON 1 // For all extruders
|
||||
|
||||
// Disables axis when it's not being used.
|
||||
// WARNING: When motors turn off there is a chance of losing position accuracy!
|
||||
#define DISABLE_X false
|
||||
#define DISABLE_Y false
|
||||
#define DISABLE_Z false
|
||||
|
@ -597,7 +599,8 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
//==============================LCD and SD support=============================
|
||||
|
||||
// Define your display language below. Replace (en) with your language code and uncomment.
|
||||
// en, pl, fr, de, es, ru, bg, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, test
|
||||
// en, pl, fr, de, es, ru, bg, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, cn, test
|
||||
|
||||
// See also language.h
|
||||
//#define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en)
|
||||
|
||||
|
@ -617,9 +620,9 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
//#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking
|
||||
//#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
|
||||
//#define ULTIPANEL //the UltiPanel as on Thingiverse
|
||||
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
||||
//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click
|
||||
// 0 to disable buzzer feedback
|
||||
//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click
|
||||
// 0 to disable buzzer feedback. Test with M300 S<frequency Hz> P<duration ms>
|
||||
|
||||
// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
|
||||
// http://reprap.org/wiki/PanelOne
|
||||
|
|
|
@ -195,6 +195,9 @@
|
|||
#define HOMING_BUMP_DIVISOR {2, 2, 4} // Re-Bump Speed Divisor (Divides the Homing Feedrate)
|
||||
//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially.
|
||||
|
||||
// When G28 is called, this option will make Y home before X
|
||||
// #define HOME_Y_BEFORE_X
|
||||
|
||||
// @section machine
|
||||
|
||||
#define AXIS_RELATIVE_MODES {false, false, false, false}
|
||||
|
@ -258,7 +261,6 @@
|
|||
#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
|
||||
#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value
|
||||
#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value
|
||||
//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value
|
||||
|
||||
//#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/
|
||||
#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
|
||||
|
@ -355,7 +357,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st
|
|||
//#define HEATERS_PARALLEL
|
||||
|
||||
//===========================================================================
|
||||
//=============================Buffers ============================
|
||||
//================================= Buffers =================================
|
||||
//===========================================================================
|
||||
|
||||
// @section hidden
|
||||
|
|
BIN
Marlin/fonts/ISO10646_CN.fon
Normal file
BIN
Marlin/fonts/ISO10646_CN.fon
Normal file
Binary file not shown.
|
@ -3,4 +3,24 @@ In Fony export the fonts to bdf-format. Maybe another one can edit them with Fon
|
|||
Then run make_fonts.bat what calls bdf2u8g.exe with the needed parameters to produce the .h files.
|
||||
The .h files must be edited to replace '#include "u8g.h"' with '#include <utility/u8g.h>', replace 'U8G_FONT_SECTION' with 'U8G_SECTION', insert '.progmem.' right behind the first '"' and moved to the main directory.
|
||||
|
||||
Especially the Kana and Cyrillic fonts should be revised by someone who knows what he/she does. I am only a west-European with very little knowledge about this scripts.
|
||||
How to integrate a new font:
|
||||
Currently we are limited to 256 symbols per font. We use a menu system with 5 lines, on a display with 64 pixel height. That means we have 12 pixel for a line. To have some space in between the lines we can't use more then 10 pixel height for the symbols. For up to 11 pixel set TALL_FONT_CORRECTION 1 when loading the font.
|
||||
To fit 22 Symbols on the 128 pixel wide screen, the symbols can't be wider than 5 pixel, for the first 128 symbols.
|
||||
For the second half of the font we now support up to 11x11 pixel.
|
||||
|
||||
* Get 'Fony.exe'
|
||||
* Copy one of the existing *.fon files and work with this.
|
||||
* Change the pixels. Don't change width or height.
|
||||
* Export as *.bdf
|
||||
* Use 'bdf2u8g.exe' to produce the *.h file. Examples for the existing fonts are in 'make_fonts.bat'
|
||||
* Edit the produced .h file to match our needs. See hints in 'README.fonts' or the other 'dogm_font_data_.h' files.
|
||||
* Make a new entry in the font list in 'dogm_lcd_implementation.h' before the '#else // fall back'
|
||||
#elif defined( DISPLAY_CHARSET_NEWNAME )
|
||||
#include "dogm_font_data_yourfont.h"
|
||||
#define FONT_MENU_NAME YOURFONTNAME
|
||||
#else // fall-back
|
||||
* Add your font to the list of permitted fonts in 'language_en.h'
|
||||
... || defined(DISPLAY_CHARSET_YOUR_NEW_FONT) ... )
|
||||
|
||||
|
||||
Especially the Kana font should be revised by someone who knows what he/she does. I am only a west-European with very little knowledge about this script.
|
||||
|
|
|
@ -5,3 +5,4 @@
|
|||
.\bdf2u8g.exe -b 32 -e 255 ISO10646-1.bdf ISO10646_1_5x7 dogm_font_data_ISO10646_1.h
|
||||
.\bdf2u8g.exe -b 32 -e 255 ISO10646_5_Cyrillic.bdf ISO10646_5_Cyrillic_5x7 dogm_font_data_ISO10646_5_Cyrillic.h
|
||||
.\bdf2u8g.exe -b 32 -e 255 ISO10646_Kana.bdf ISO10646_Kana_5x7 dogm_font_data_ISO10646_Kana.h
|
||||
.\bdf2u8g.exe -b 32 -e 255 ISO10646_CN.bdf ISO10646_CN dogm_font_data_ISO10646_CN.h
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
// eu Basque-Euskera
|
||||
// kana Japanese
|
||||
// kana_utf Japanese
|
||||
// cn Chinese
|
||||
|
||||
#ifndef LANGUAGE_INCLUDE
|
||||
// pick your language from the list above
|
||||
|
@ -71,12 +72,12 @@
|
|||
#endif
|
||||
#else
|
||||
#ifndef MACHINE_NAME
|
||||
#define MACHINE_NAME "Mendel"
|
||||
#define MACHINE_NAME "3D Printer"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef CUSTOM_MENDEL_NAME
|
||||
#warning CUSTOM_MENDEL_NAME deprecated - use CUSTOM_MACHINE_NAME
|
||||
#error CUSTOM_MENDEL_NAME deprecated - use CUSTOM_MACHINE_NAME
|
||||
#define CUSTOM_MACHINE_NAME CUSTOM_MENDEL_NAME
|
||||
#endif
|
||||
|
||||
|
@ -111,7 +112,7 @@
|
|||
|
||||
// Serial Console Messages (do not translate those!)
|
||||
|
||||
#define MSG_Enqueing "enqueing \""
|
||||
#define MSG_Enqueueing "enqueueing \""
|
||||
#define MSG_POWERUP "PowerUp"
|
||||
#define MSG_EXTERNAL_RESET " External Reset"
|
||||
#define MSG_BROWNOUT_RESET " Brown out Reset"
|
||||
|
@ -123,7 +124,8 @@
|
|||
#define MSG_PLANNER_BUFFER_BYTES " PlannerBufferBytes: "
|
||||
#define MSG_OK "ok"
|
||||
#define MSG_FILE_SAVED "Done saving file."
|
||||
#define MSG_ERR_LINE_NO "Line Number is not Last Line Number+1, Last Line: "
|
||||
#define MSG_ERR_LINE_NO1 "Line Number out of sequence. Expected: "
|
||||
#define MSG_ERR_LINE_NO2 " Got: "
|
||||
#define MSG_ERR_CHECKSUM_MISMATCH "checksum mismatch, Last Line: "
|
||||
#define MSG_ERR_NO_CHECKSUM "No Checksum with line number, Last Line: "
|
||||
#define MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM "No Line Number with checksum, Last Line: "
|
||||
|
@ -158,6 +160,9 @@
|
|||
#define MSG_Z_MAX "z_max: "
|
||||
#define MSG_Z2_MAX "z2_max: "
|
||||
#define MSG_Z_PROBE "z_probe: "
|
||||
#define MSG_ERR_MATERIAL_INDEX "M145 S<index> out of range (0-1)"
|
||||
#define MSG_ERR_M421_REQUIRES_XYZ "M421 requires XYZ parameters"
|
||||
#define MSG_ERR_MESH_INDEX_OOB "Mesh XY index is out of bounds"
|
||||
#define MSG_M119_REPORT "Reporting endstop status"
|
||||
#define MSG_ENDSTOP_HIT "TRIGGERED"
|
||||
#define MSG_ENDSTOP_OPEN "open"
|
||||
|
@ -210,7 +215,7 @@
|
|||
#define MSG_OK_B "ok B:"
|
||||
#define MSG_OK_T "ok T:"
|
||||
#define MSG_AT " @:"
|
||||
#define MSG_PID_AUTOTUNE_FINISHED MSG_PID_AUTOTUNE " finished! Put the last Kp, Ki and Kd constants from above into Configuration.h"
|
||||
#define MSG_PID_AUTOTUNE_FINISHED MSG_PID_AUTOTUNE " finished! Put the last Kp, Ki and Kd constants from below into Configuration.h"
|
||||
#define MSG_PID_DEBUG " PID_DEBUG "
|
||||
#define MSG_PID_DEBUG_INPUT ": Input "
|
||||
#define MSG_PID_DEBUG_OUTPUT " Output "
|
||||
|
|
159
Marlin/language_cn.h
Normal file
159
Marlin/language_cn.h
Normal file
|
@ -0,0 +1,159 @@
|
|||
/**
|
||||
* Chinese
|
||||
*
|
||||
* LCD Menu Messages
|
||||
* Se also documentation/LCDLanguageFont.md
|
||||
*
|
||||
*/
|
||||
#ifndef LANGUAGE_CN_H
|
||||
#define LANGUAGE_CN_H
|
||||
|
||||
#define MAPPER_NON // For direct asci codes
|
||||
#define DISPLAY_CHARSET_ISO10646_CN
|
||||
|
||||
#define WELCOME_MSG "\xa4\xa5\xa6\xa7"
|
||||
#define MSG_SD_INSERTED "\xa8\xa9\xaa\xab"
|
||||
#define MSG_SD_REMOVED "\xa8\xa9\xac\xad"
|
||||
#define MSG_MAIN "\xae\xaf\xb0"
|
||||
#define MSG_AUTOSTART "\xb1\xb2\xb3\xb4"
|
||||
#define MSG_DISABLE_STEPPERS "\xb5\xb6\xb7\xb8\xb9\xba"
|
||||
#define MSG_AUTO_HOME "\xbb\xbc\xbd"
|
||||
#define MSG_SET_HOME_OFFSETS "\xbe\xbf\xbb\xbc\xbd\xc0\xc1"
|
||||
#define MSG_SET_ORIGIN "\xbe\xbf\xbc\xbd"
|
||||
#define MSG_PREHEAT_PLA "\xc3\xc4 PLA"
|
||||
#define MSG_PREHEAT_PLA_N MSG_PREHEAT_PLA " "
|
||||
#define MSG_PREHEAT_PLA_ALL MSG_PREHEAT_PLA " \xc5\xc6"
|
||||
#define MSG_PREHEAT_PLA_BEDONLY MSG_PREHEAT_PLA " \xc4\xc7"
|
||||
#define MSG_PREHEAT_PLA_SETTINGS MSG_PREHEAT_PLA " \xbe\xbf"
|
||||
#define MSG_PREHEAT_ABS "\xc3\xc4 ABS"
|
||||
#define MSG_PREHEAT_ABS_N MSG_PREHEAT_ABS " "
|
||||
#define MSG_PREHEAT_ABS_ALL MSG_PREHEAT_ABS " \xc5\xc6"
|
||||
#define MSG_PREHEAT_ABS_BEDONLY MSG_PREHEAT_ABS " \xbe\xc6"
|
||||
#define MSG_PREHEAT_ABS_SETTINGS MSG_PREHEAT_ABS " \xbe\xbf"
|
||||
#define MSG_H1 "1"
|
||||
#define MSG_H2 "2"
|
||||
#define MSG_H3 "3"
|
||||
#define MSG_H4 "4"
|
||||
#define MSG_COOLDOWN "\xc8\xc9"
|
||||
#define MSG_SWITCH_PS_ON "\xb9\xcb\xca\xb3"
|
||||
#define MSG_SWITCH_PS_OFF "\xb9\xcb\xb5\xb6"
|
||||
#define MSG_EXTRUDE "\xcc\xad"
|
||||
#define MSG_RETRACT "\xbb\xcd"
|
||||
#define MSG_MOVE_AXIS "\xc1\xb2\xce"
|
||||
#define MSG_LEVEL_BED "\xcf\xe0\xc4\xc7"
|
||||
#define MSG_MOVE_X "\xc1\xb2 X"
|
||||
#define MSG_MOVE_Y "\xc1\xb2 Y"
|
||||
#define MSG_MOVE_Z "\xc1\xb2 Z"
|
||||
#define MSG_MOVE_E "\xcc\xad\xba"
|
||||
#define MSG_MOVE_01MM "\xc1\xb2 0.1mm"
|
||||
#define MSG_MOVE_1MM "\xc1\xb2 1mm"
|
||||
#define MSG_MOVE_10MM "\xc1\xb2 10mm"
|
||||
#define MSG_SPEED "\xd1\xd2"
|
||||
#define MSG_NOZZLE "\xd3\xd4"
|
||||
#define MSG_N2 " 2"
|
||||
#define MSG_N3 " 3"
|
||||
#define MSG_N4 " 4"
|
||||
#define MSG_BED "\xc4\xc7"
|
||||
#define MSG_FAN_SPEED "\xd5\xd6\xd1\xd2"
|
||||
#define MSG_FLOW "\xcc\xad\xd1\xd2"
|
||||
#define MSG_F0 " 0"
|
||||
#define MSG_F1 " 1"
|
||||
#define MSG_F2 " 2"
|
||||
#define MSG_F3 " 3"
|
||||
#define MSG_CONTROL "\xd8\xd9"
|
||||
#define MSG_MIN LCD_STR_THERMOMETER " \xda\xdb"
|
||||
#define MSG_MAX LCD_STR_THERMOMETER " \xda\xdc"
|
||||
#define MSG_FACTOR LCD_STR_THERMOMETER " \xdd\xde"
|
||||
#define MSG_AUTOTEMP "\xb1\xb2\xd8\xc9"
|
||||
#define MSG_ON "\xb3 " // intentional space to shift wide symbol to the left
|
||||
#define MSG_OFF "\xb5 " // intentional space to shift wide symbol to the left
|
||||
#define MSG_PID_P "PID-P"
|
||||
#define MSG_PID_I "PID-I"
|
||||
#define MSG_PID_D "PID-D"
|
||||
#define MSG_PID_C "PID-C"
|
||||
#define MSG_E2 " E2"
|
||||
#define MSG_E3 " E3"
|
||||
#define MSG_E4 " E4"
|
||||
#define MSG_ACC "Accel"
|
||||
#define MSG_VXY_JERK "Vxy-jerk"
|
||||
#define MSG_VZ_JERK "Vz-jerk"
|
||||
#define MSG_VE_JERK "Ve-jerk"
|
||||
#define MSG_VMAX "Vmax "
|
||||
#define MSG_X "x"
|
||||
#define MSG_Y "y"
|
||||
#define MSG_Z "z"
|
||||
#define MSG_E "e"
|
||||
#define MSG_VMIN "Vmin"
|
||||
#define MSG_VTRAV_MIN "VTrav min"
|
||||
#define MSG_AMAX "Amax "
|
||||
#define MSG_A_RETRACT "A-retract"
|
||||
#define MSG_A_TRAVEL "A-travel"
|
||||
#define MSG_XSTEPS "Xsteps/mm"
|
||||
#define MSG_YSTEPS "Ysteps/mm"
|
||||
#define MSG_ZSTEPS "Zsteps/mm"
|
||||
#define MSG_ESTEPS "Esteps/mm"
|
||||
#define MSG_TEMPERATURE "\xc9\xd2"
|
||||
#define MSG_MOTION "\xdf\xb2"
|
||||
#define MSG_VOLUMETRIC "Filament"
|
||||
#define MSG_VOLUMETRIC_ENABLED "E in mm3"
|
||||
#define MSG_FILAMENT_SIZE_EXTRUDER_0 "Fil. Dia. 1"
|
||||
#define MSG_FILAMENT_SIZE_EXTRUDER_1 "Fil. Dia. 2"
|
||||
#define MSG_FILAMENT_SIZE_EXTRUDER_2 "Fil. Dia. 3"
|
||||
#define MSG_FILAMENT_SIZE_EXTRUDER_3 "Fil. Dia. 4"
|
||||
#define MSG_CONTRAST "LCD contrast"
|
||||
#define MSG_STORE_EPROM "Store memory"
|
||||
#define MSG_LOAD_EPROM "Load memory"
|
||||
#define MSG_RESTORE_FAILSAFE "Restore failsafe"
|
||||
#define MSG_REFRESH "Refresh"
|
||||
#define MSG_WATCH "\xec\xed\xee\xef"
|
||||
#define MSG_PREPARE "\xa4\xa5"
|
||||
#define MSG_TUNE "\xcf\xf0"
|
||||
#define MSG_PAUSE_PRINT "\xf1\xf2\xca\xf3"
|
||||
#define MSG_RESUME_PRINT "\xf4\xf5\xca\xf3"
|
||||
#define MSG_STOP_PRINT "\xf2\xf6\xca\xf3"
|
||||
#define MSG_CARD_MENU "\xaf\xb0"
|
||||
#define MSG_NO_CARD "\xf9\xa8"
|
||||
#define MSG_DWELL "Sleep..."
|
||||
#define MSG_USERWAIT "Wait for user..."
|
||||
#define MSG_RESUMING "Resuming print"
|
||||
#define MSG_PRINT_ABORTED "Print aborted"
|
||||
#define MSG_NO_MOVE "No move."
|
||||
#define MSG_KILLED "KILLED. "
|
||||
#define MSG_STOPPED "STOPPED. "
|
||||
#define MSG_CONTROL_RETRACT "Retract mm"
|
||||
#define MSG_CONTROL_RETRACT_SWAP "Swap Re.mm"
|
||||
#define MSG_CONTROL_RETRACTF "Retract V"
|
||||
#define MSG_CONTROL_RETRACT_ZLIFT "Hop mm"
|
||||
#define MSG_CONTROL_RETRACT_RECOVER "UnRet +mm"
|
||||
#define MSG_CONTROL_RETRACT_RECOVER_SWAP "S UnRet+mm"
|
||||
#define MSG_CONTROL_RETRACT_RECOVERF "UnRet V"
|
||||
#define MSG_AUTORETRACT "AutoRetr."
|
||||
#define MSG_FILAMENTCHANGE "Change filament"
|
||||
#define MSG_INIT_SDCARD "Init. SD card"
|
||||
#define MSG_CNG_SDCARD "Change SD card"
|
||||
#define MSG_ZPROBE_OUT "Z probe out. bed"
|
||||
#define MSG_POSITION_UNKNOWN "Home X/Y before Z"
|
||||
#define MSG_ZPROBE_ZOFFSET "Z Offset"
|
||||
#define MSG_BABYSTEP_X "Babystep X"
|
||||
#define MSG_BABYSTEP_Y "Babystep Y"
|
||||
#define MSG_BABYSTEP_Z "Babystep Z"
|
||||
#define MSG_ENDSTOP_ABORT "Endstop abort"
|
||||
#define MSG_HEATING_FAILED_LCD "Heating failed"
|
||||
#define MSG_ERR_REDUNDANT_TEMP "Err: REDUNDANT TEMP ERROR"
|
||||
#define MSG_THERMAL_RUNAWAY "THERMAL RUNAWAY"
|
||||
#define MSG_ERR_MAXTEMP "Err: MAXTEMP"
|
||||
#define MSG_ERR_MINTEMP "Err: MINTEMP"
|
||||
#define MSG_ERR_MAXTEMP_BED "Err: MAXTEMP BED"
|
||||
#define MSG_END_HOUR "hours"
|
||||
#define MSG_END_MINUTE "minutes"
|
||||
|
||||
#ifdef DELTA_CALIBRATION_MENU
|
||||
#define MSG_DELTA_CALIBRATE "Delta Calibration"
|
||||
#define MSG_DELTA_CALIBRATE_X "Calibrate X"
|
||||
#define MSG_DELTA_CALIBRATE_Y "Calibrate Y"
|
||||
#define MSG_DELTA_CALIBRATE_Z "Calibrate Z"
|
||||
#define MSG_DELTA_CALIBRATE_CENTER "Calibrate Center"
|
||||
#endif // DELTA_CALIBRATION_MENU
|
||||
|
||||
#endif // LANGUAGE_CN_H
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
//#define SIMULATE_ROMFONT
|
||||
#define DISPLAY_CHARSET_ISO10646_1
|
||||
|
||||
#define WELCOME_MSG MACHINE_NAME " Bereit."
|
||||
#define WELCOME_MSG MACHINE_NAME " bereit."
|
||||
#define MSG_SD_INSERTED "SDKarte erkannt."
|
||||
#define MSG_SD_REMOVED "SDKarte entfernt."
|
||||
#define MSG_MAIN "Hauptmenü"
|
||||
|
@ -61,9 +61,9 @@
|
|||
#define MSG_PID_D "PID D"
|
||||
#define MSG_PID_C "PID C"
|
||||
#define MSG_ACC "A"
|
||||
#define MSG_VXY_JERK "V xy jerk"
|
||||
#define MSG_VZ_JERK "V z jerk"
|
||||
#define MSG_VE_JERK "V e jerk"
|
||||
#define MSG_VXY_JERK "V xy Ruck"
|
||||
#define MSG_VZ_JERK "V z Ruck"
|
||||
#define MSG_VE_JERK "V e Ruck"
|
||||
#define MSG_VMAX "V max " // space by purpose
|
||||
#define MSG_X "x"
|
||||
#define MSG_Y "y"
|
||||
|
@ -84,7 +84,7 @@
|
|||
#define MSG_FILAMENT_SIZE_EXTRUDER_0 "Filament D 1"
|
||||
#define MSG_FILAMENT_SIZE_EXTRUDER_1 "Filament D 2"
|
||||
#define MSG_FILAMENT_SIZE_EXTRUDER_2 "Filament D 3"
|
||||
#define MSG_CONTRAST "LCD contrast"
|
||||
#define MSG_CONTRAST "LCD Kontrast"
|
||||
#define MSG_STORE_EPROM "EPROM speichern"
|
||||
#define MSG_LOAD_EPROM "EPROM laden"
|
||||
#define MSG_RESTORE_FAILSAFE "Standardkonfig."
|
||||
|
@ -116,7 +116,7 @@
|
|||
#define MSG_INIT_SDCARD "SDKarte erkennen"// Manually initialize the SD-card via user interface
|
||||
#define MSG_CNG_SDCARD "SDKarte erkennen"// SD-card changed by user. For machines with no autocarddetect. Both send "M21"
|
||||
#define MSG_ZPROBE_OUT "Sensor ausserhalb"
|
||||
#define MSG_POSITION_UNKNOWN "X/Y vor Z Homen."
|
||||
#define MSG_POSITION_UNKNOWN "X/Y vor Z homen."
|
||||
#define MSG_ZPROBE_ZOFFSET "Z Offset"
|
||||
#define MSG_BABYSTEP_X "Babystep X"
|
||||
#define MSG_BABYSTEP_Y "Babystep Y"
|
||||
|
@ -126,7 +126,7 @@
|
|||
#define MSG_END_MINUTE "Minuten"
|
||||
|
||||
#ifdef DELTA_CALIBRATION_MENU
|
||||
#define MSG_DELTA_CALIBRATE "Delta Kalibrieren"
|
||||
#define MSG_DELTA_CALIBRATE "Delta kalibrieren"
|
||||
#define MSG_DELTA_CALIBRATE_X "Kalibriere X"
|
||||
#define MSG_DELTA_CALIBRATE_Y "Kalibriere Y"
|
||||
#define MSG_DELTA_CALIBRATE_Z "Kalibriere Z"
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
#endif
|
||||
|
||||
//#define SIMULATE_ROMFONT //Comment in to see what is seen on the character based displays
|
||||
#if !( defined(SIMULATE_ROMFONT)|| defined(DISPLAY_CHARSET_ISO10646_1)|| defined(DISPLAY_CHARSET_ISO10646_5)|| defined(DISPLAY_CHARSET_ISO10646_KANA) )
|
||||
#if !( defined(SIMULATE_ROMFONT)|| defined(DISPLAY_CHARSET_ISO10646_1)|| defined(DISPLAY_CHARSET_ISO10646_5)|| defined(DISPLAY_CHARSET_ISO10646_KANA)|| defined(DISPLAY_CHARSET_ISO10646_CN) )
|
||||
#define DISPLAY_CHARSET_ISO10646_1 // use the better font on full graphic displays.
|
||||
#endif
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
#define MSG_SD_INSERTED "Tarjeta colocada"
|
||||
#define MSG_SD_REMOVED "Tarjeta retirada"
|
||||
#define MSG_MAIN "Menu principal"
|
||||
#define MSG_AUTOSTART " Autostart"
|
||||
#define MSG_AUTOSTART "Autostart"
|
||||
#define MSG_DISABLE_STEPPERS "Apagar motores"
|
||||
#define MSG_AUTO_HOME "Llevar al origen"
|
||||
#define MSG_SET_HOME_OFFSETS "Ajustar offsets"
|
||||
|
@ -46,7 +46,7 @@
|
|||
#define MSG_MOVE_1MM "Mover 1mm"
|
||||
#define MSG_MOVE_10MM "Mover 10mm"
|
||||
#define MSG_SPEED "Velocidad"
|
||||
#define MSG_NOZZLE "Nozzle"
|
||||
#define MSG_NOZZLE "Fusor"
|
||||
#define MSG_BED "Base"
|
||||
#define MSG_FAN_SPEED "Ventilador"
|
||||
#define MSG_FLOW "Flujo"
|
||||
|
@ -80,7 +80,7 @@
|
|||
#define MSG_ESTEPS "E pasos/mm"
|
||||
#define MSG_TEMPERATURE "Temperatura"
|
||||
#define MSG_MOTION "Movimiento"
|
||||
#define MSG_VOLUMETRIC "Filament"
|
||||
#define MSG_VOLUMETRIC "Filamento"
|
||||
#define MSG_VOLUMETRIC_ENABLED "E in mm3"
|
||||
#define MSG_FILAMENT_SIZE_EXTRUDER_0 "Fil. Dia. 1"
|
||||
#define MSG_FILAMENT_SIZE_EXTRUDER_1 "Fil. Dia. 2"
|
||||
|
@ -116,22 +116,22 @@
|
|||
#define MSG_FILAMENTCHANGE "Cambiar filamento"
|
||||
#define MSG_INIT_SDCARD "Iniciando tarjeta"
|
||||
#define MSG_CNG_SDCARD "Cambiar tarjeta"
|
||||
#define MSG_ZPROBE_OUT "sonda Z fuera"
|
||||
#define MSG_ZPROBE_OUT "Sonda Z fuera"
|
||||
#define MSG_POSITION_UNKNOWN "Reiniciar X/Y y Z"
|
||||
#define MSG_ZPROBE_ZOFFSET "Offset Z"
|
||||
#define MSG_BABYSTEP_X "Babystep X"
|
||||
#define MSG_BABYSTEP_Y "Babystep Y"
|
||||
#define MSG_BABYSTEP_Z "Babystep Z"
|
||||
#define MSG_BABYSTEP_X "Micropaso X"
|
||||
#define MSG_BABYSTEP_Y "Micropaso Y"
|
||||
#define MSG_BABYSTEP_Z "Micropaso Z"
|
||||
#define MSG_ENDSTOP_ABORT "Endstop abort"
|
||||
#define MSG_END_HOUR "horas"
|
||||
#define MSG_END_MINUTE "minutos"
|
||||
|
||||
#ifdef DELTA_CALIBRATION_MENU
|
||||
#define MSG_DELTA_CALIBRATE "Delta Calibration"
|
||||
#define MSG_DELTA_CALIBRATE_X "Calibrate X"
|
||||
#define MSG_DELTA_CALIBRATE_Y "Calibrate Y"
|
||||
#define MSG_DELTA_CALIBRATE_Z "Calibrate Z"
|
||||
#define MSG_DELTA_CALIBRATE_CENTER "Calibrate Center"
|
||||
#define MSG_DELTA_CALIBRATE "Calibracion Delta"
|
||||
#define MSG_DELTA_CALIBRATE_X "Calibrar X"
|
||||
#define MSG_DELTA_CALIBRATE_Y "Calibrar Y"
|
||||
#define MSG_DELTA_CALIBRATE_Z "Calibrar Z"
|
||||
#define MSG_DELTA_CALIBRATE_CENTER "Calibrar Centro"
|
||||
#endif // DELTA_CALIBRATION_MENU
|
||||
|
||||
#endif // LANGUAGE_ES_H
|
||||
|
|
|
@ -76,6 +76,8 @@
|
|||
#include "pins_PRINTRBOARD.h"
|
||||
#elif MB(BRAINWAVE)
|
||||
#include "pins_BRAINWAVE.h"
|
||||
#elif MB(BRAINWAVE_PRO)
|
||||
#include "pins_BRAINWAVE_PRO.h"
|
||||
#elif MB(SAV_MKI)
|
||||
#include "pins_SAV_MKI.h"
|
||||
#elif MB(TEENSY2)
|
||||
|
|
|
@ -28,9 +28,7 @@
|
|||
#define STAT_LED_RED 64
|
||||
#define STAT_LED_BLUE 63
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#elif define TEMP_STAT_LEDS
|
||||
#elif defined(TEMP_STAT_LEDS)
|
||||
#define STAT_LED_RED 6
|
||||
#define STAT_LED_BLUE 11
|
||||
#endif
|
||||
|
|
63
Marlin/pins_BRAINWAVE_PRO.h
Normal file
63
Marlin/pins_BRAINWAVE_PRO.h
Normal file
|
@ -0,0 +1,63 @@
|
|||
/**
|
||||
* Brainwave Pro pin assignments (AT90USB186)
|
||||
*
|
||||
* Requires hardware bundle for Arduino:
|
||||
* https://github.com/unrepentantgeek/brainwave-arduino
|
||||
*/
|
||||
|
||||
#ifndef __AVR_AT90USB1286__
|
||||
#error Oops! Make sure you have 'Brainwave Pro' selected from the 'Tools -> Boards' menu.
|
||||
#endif
|
||||
|
||||
#ifndef AT90USBxx_TEENSYPP_ASSIGNMENTS // use Teensyduino Teensy++2.0 pin assignments instead of Marlin alphabetical.
|
||||
#error Uncomment #define AT90USBxx_TEENSYPP_ASSIGNMENTS in fastio.h for this config
|
||||
#endif
|
||||
|
||||
#define AT90USB 1286 // Disable MarlinSerial etc.
|
||||
|
||||
#define X_STEP_PIN 33
|
||||
#define X_DIR_PIN 32
|
||||
#define X_ENABLE_PIN 11
|
||||
#define X_STOP_PIN 47
|
||||
|
||||
#define Y_STEP_PIN 31
|
||||
#define Y_DIR_PIN 30
|
||||
#define Y_ENABLE_PIN 8
|
||||
#define Y_STOP_PIN 18
|
||||
|
||||
#define Z_STEP_PIN 29
|
||||
#define Z_DIR_PIN 28
|
||||
#define Z_ENABLE_PIN 37
|
||||
#define Z_MAX_PIN 36
|
||||
#define Z_MIN_PIN 17 // Bed probe
|
||||
|
||||
#define E0_STEP_PIN 35
|
||||
#define E0_DIR_PIN 34
|
||||
#define E0_ENABLE_PIN 13
|
||||
|
||||
#define HEATER_0_PIN 15
|
||||
#define HEATER_1_PIN -1
|
||||
#define HEATER_2_PIN -1
|
||||
#define HEATER_BED_PIN 14 // Bed
|
||||
#define FAN_PIN 16 // Fan, PWM
|
||||
|
||||
#define TEMP_0_PIN 2 // Extruder / Analog pin numbering
|
||||
#define TEMP_1_PIN 1 // Spare / Analog pin numbering
|
||||
#define TEMP_2_PIN -1
|
||||
#define TEMP_BED_PIN 0 // Bed / Analog pin numbering
|
||||
|
||||
#define SDPOWER -1
|
||||
#define SDSS 20
|
||||
#define LED_PIN 19
|
||||
#define PS_ON_PIN -1
|
||||
#define KILL_PIN -1
|
||||
#define ALARM_PIN -1
|
||||
#define SDCARDDETECT 12
|
||||
|
||||
#ifndef SDSUPPORT
|
||||
// these pins are defined in the SD library if building with SD support
|
||||
#define SCK_PIN 21
|
||||
#define MISO_PIN 23
|
||||
#define MOSI_PIN 22
|
||||
#endif
|
||||
|
|
@ -82,7 +82,7 @@
|
|||
#define HOME_PIN -1 // A4 = marlin 44 - teensy = 42
|
||||
|
||||
#ifdef NUM_SERVOS
|
||||
#define SERVO0_PIN 41 // In teensy's pin definition for pinMode (in Servo.cpp)
|
||||
#define SERVO0_PIN 41 // In teensy's pin definition for pinMode (in servo.cpp)
|
||||
#endif
|
||||
|
||||
#endif // SAV_3DLCD
|
||||
|
|
|
@ -1,54 +1,51 @@
|
|||
/*
|
||||
planner.c - buffers movement commands and manages the acceleration profile plan
|
||||
Part of Grbl
|
||||
|
||||
Copyright (c) 2009-2011 Simen Svale Skogsrud
|
||||
|
||||
Grbl is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Grbl is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Grbl. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* The ring buffer implementation gleaned from the wiring_serial library by David A. Mellis. */
|
||||
|
||||
/*
|
||||
Reasoning behind the mathematics in this module (in the key of 'Mathematica'):
|
||||
|
||||
s == speed, a == acceleration, t == time, d == distance
|
||||
|
||||
Basic definitions:
|
||||
|
||||
Speed[s_, a_, t_] := s + (a*t)
|
||||
Travel[s_, a_, t_] := Integrate[Speed[s, a, t], t]
|
||||
|
||||
Distance to reach a specific speed with a constant acceleration:
|
||||
|
||||
Solve[{Speed[s, a, t] == m, Travel[s, a, t] == d}, d, t]
|
||||
d -> (m^2 - s^2)/(2 a) --> estimate_acceleration_distance()
|
||||
|
||||
Speed after a given distance of travel with constant acceleration:
|
||||
|
||||
Solve[{Speed[s, a, t] == m, Travel[s, a, t] == d}, m, t]
|
||||
m -> Sqrt[2 a d + s^2]
|
||||
|
||||
DestinationSpeed[s_, a_, d_] := Sqrt[2 a d + s^2]
|
||||
|
||||
When to start braking (di) to reach a specified destionation speed (s2) after accelerating
|
||||
from initial speed s1 without ever stopping at a plateau:
|
||||
|
||||
Solve[{DestinationSpeed[s1, a, di] == DestinationSpeed[s2, a, d - di]}, di]
|
||||
di -> (2 a d - s1^2 + s2^2)/(4 a) --> intersection_distance()
|
||||
|
||||
IntersectionDistance[s1_, s2_, a_, d_] := (2 a d - s1^2 + s2^2)/(4 a)
|
||||
/**
|
||||
* planner.cpp - Buffer movement commands and manage the acceleration profile plan
|
||||
* Part of Grbl
|
||||
*
|
||||
* Copyright (c) 2009-2011 Simen Svale Skogsrud
|
||||
*
|
||||
* Grbl is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Grbl is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Grbl. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*
|
||||
* The ring buffer implementation gleaned from the wiring_serial library by David A. Mellis.
|
||||
*
|
||||
*
|
||||
* Reasoning behind the mathematics in this module (in the key of 'Mathematica'):
|
||||
*
|
||||
* s == speed, a == acceleration, t == time, d == distance
|
||||
*
|
||||
* Basic definitions:
|
||||
* Speed[s_, a_, t_] := s + (a*t)
|
||||
* Travel[s_, a_, t_] := Integrate[Speed[s, a, t], t]
|
||||
*
|
||||
* Distance to reach a specific speed with a constant acceleration:
|
||||
* Solve[{Speed[s, a, t] == m, Travel[s, a, t] == d}, d, t]
|
||||
* d -> (m^2 - s^2)/(2 a) --> estimate_acceleration_distance()
|
||||
*
|
||||
* Speed after a given distance of travel with constant acceleration:
|
||||
* Solve[{Speed[s, a, t] == m, Travel[s, a, t] == d}, m, t]
|
||||
* m -> Sqrt[2 a d + s^2]
|
||||
*
|
||||
* DestinationSpeed[s_, a_, d_] := Sqrt[2 a d + s^2]
|
||||
*
|
||||
* When to start braking (di) to reach a specified destination speed (s2) after accelerating
|
||||
* from initial speed s1 without ever stopping at a plateau:
|
||||
* Solve[{DestinationSpeed[s1, a, di] == DestinationSpeed[s2, a, d - di]}, di]
|
||||
* di -> (2 a d - s1^2 + s2^2)/(4 a) --> intersection_distance()
|
||||
*
|
||||
* IntersectionDistance[s1_, s2_, a_, d_] := (2 a d - s1^2 + s2^2)/(4 a)
|
||||
*
|
||||
*/
|
||||
|
||||
#include "Marlin.h"
|
||||
|
@ -60,28 +57,28 @@
|
|||
|
||||
#ifdef MESH_BED_LEVELING
|
||||
#include "mesh_bed_leveling.h"
|
||||
#endif // MESH_BED_LEVELING
|
||||
#endif
|
||||
|
||||
//===========================================================================
|
||||
//============================= public variables ============================
|
||||
//===========================================================================
|
||||
|
||||
unsigned long minsegmenttime;
|
||||
millis_t minsegmenttime;
|
||||
float max_feedrate[NUM_AXIS]; // Max speeds in mm per minute
|
||||
float axis_steps_per_unit[NUM_AXIS];
|
||||
unsigned long max_acceleration_units_per_sq_second[NUM_AXIS]; // Use M201 to override by software
|
||||
float minimumfeedrate;
|
||||
float acceleration; // Normal acceleration mm/s^2 THIS IS THE DEFAULT ACCELERATION for all printing moves. M204 SXXXX
|
||||
float retract_acceleration; // mm/s^2 filament pull-pack and push-forward while standing still in the other axis M204 TXXXX
|
||||
float travel_acceleration; // Travel acceleration mm/s^2 THIS IS THE DEFAULT ACCELERATION for all NON printing moves. M204 MXXXX
|
||||
float max_xy_jerk; //speed than can be stopped at once, if i understand correctly.
|
||||
float acceleration; // Normal acceleration mm/s^2 DEFAULT ACCELERATION for all printing moves. M204 SXXXX
|
||||
float retract_acceleration; // Retract acceleration mm/s^2 filament pull-back and push-forward while standing still in the other axes M204 TXXXX
|
||||
float travel_acceleration; // Travel acceleration mm/s^2 DEFAULT ACCELERATION for all NON printing moves. M204 MXXXX
|
||||
float max_xy_jerk; // The largest speed change requiring no acceleration
|
||||
float max_z_jerk;
|
||||
float max_e_jerk;
|
||||
float mintravelfeedrate;
|
||||
unsigned long axis_steps_per_sqr_second[NUM_AXIS];
|
||||
|
||||
#ifdef ENABLE_AUTO_BED_LEVELING
|
||||
// this holds the required transform to compensate for bed level
|
||||
// Transform required to compensate for bed level
|
||||
matrix_3x3 plan_bed_level_matrix = {
|
||||
1.0, 0.0, 0.0,
|
||||
0.0, 1.0, 0.0,
|
||||
|
@ -89,11 +86,6 @@ unsigned long axis_steps_per_sqr_second[NUM_AXIS];
|
|||
};
|
||||
#endif // ENABLE_AUTO_BED_LEVELING
|
||||
|
||||
// The current position of the tool in absolute steps
|
||||
long position[NUM_AXIS]; //rescaled from extern when axis_steps_per_unit are changed by gcode
|
||||
static float previous_speed[NUM_AXIS]; // Speed of previous path line segment
|
||||
static float previous_nominal_speed; // Nominal speed of previous path line segment
|
||||
|
||||
#ifdef AUTOTEMP
|
||||
float autotemp_max = 250;
|
||||
float autotemp_min = 210;
|
||||
|
@ -101,21 +93,25 @@ static float previous_nominal_speed; // Nominal speed of previous path line segm
|
|||
bool autotemp_enabled = false;
|
||||
#endif
|
||||
|
||||
unsigned char g_uc_extruder_last_move[4] = {0,0,0,0};
|
||||
//===========================================================================
|
||||
//============ semi-private variables, used in inline functions =============
|
||||
//===========================================================================
|
||||
|
||||
//===========================================================================
|
||||
//=================semi-private variables, used in inline functions =====
|
||||
//===========================================================================
|
||||
block_t block_buffer[BLOCK_BUFFER_SIZE]; // A ring buffer for motion instfructions
|
||||
volatile unsigned char block_buffer_head; // Index of the next block to be pushed
|
||||
volatile unsigned char block_buffer_tail; // Index of the block to process now
|
||||
|
||||
//===========================================================================
|
||||
//=============================private variables ============================
|
||||
//============================ private variables ============================
|
||||
//===========================================================================
|
||||
#ifdef PREVENT_DANGEROUS_EXTRUDE
|
||||
float extrude_min_temp = EXTRUDE_MINTEMP;
|
||||
#endif
|
||||
|
||||
// The current position of the tool in absolute steps
|
||||
long position[NUM_AXIS]; // Rescaled from extern when axis_steps_per_unit are changed by gcode
|
||||
static float previous_speed[NUM_AXIS]; // Speed of previous path line segment
|
||||
static float previous_nominal_speed; // Nominal speed of previous path line segment
|
||||
|
||||
unsigned char g_uc_extruder_last_move[4] = {0,0,0,0};
|
||||
|
||||
#ifdef XY_FREQUENCY_LIMIT
|
||||
// Used for the frequency limit
|
||||
#define MAX_FREQ_TIME (1000000.0/XY_FREQUENCY_LIMIT)
|
||||
|
@ -129,15 +125,15 @@ volatile unsigned char block_buffer_tail; // Index of the block to pro
|
|||
static char meas_sample; //temporary variable to hold filament measurement sample
|
||||
#endif
|
||||
|
||||
//===========================================================================
|
||||
//================================ functions ================================
|
||||
//===========================================================================
|
||||
|
||||
// Get the next / previous index of the next block in the ring buffer
|
||||
// NOTE: Using & here (not %) because BLOCK_BUFFER_SIZE is always a power of 2
|
||||
FORCE_INLINE int8_t next_block_index(int8_t block_index) { return BLOCK_MOD(block_index + 1); }
|
||||
FORCE_INLINE int8_t prev_block_index(int8_t block_index) { return BLOCK_MOD(block_index - 1); }
|
||||
|
||||
//===========================================================================
|
||||
//================================ Functions ================================
|
||||
//===========================================================================
|
||||
|
||||
// Calculates the distance (not time) it takes to accelerate from initial_rate to target_rate using the
|
||||
// given acceleration:
|
||||
FORCE_INLINE float estimate_acceleration_distance(float initial_rate, float target_rate, float acceleration) {
|
||||
|
@ -162,8 +158,8 @@ void calculate_trapezoid_for_block(block_t *block, float entry_factor, float exi
|
|||
unsigned long final_rate = ceil(block->nominal_rate * exit_factor); // (step/min)
|
||||
|
||||
// Limit minimal step rate (Otherwise the timer will overflow.)
|
||||
if (initial_rate < 120) initial_rate = 120;
|
||||
if (final_rate < 120) final_rate = 120;
|
||||
NOLESS(initial_rate, 120);
|
||||
NOLESS(final_rate, 120);
|
||||
|
||||
long acceleration = block->acceleration_st;
|
||||
int32_t accelerate_steps = ceil(estimate_acceleration_distance(initial_rate, block->nominal_rate, acceleration));
|
||||
|
@ -385,16 +381,18 @@ void plan_init() {
|
|||
}
|
||||
|
||||
float t = autotemp_min + high * autotemp_factor;
|
||||
if (t < autotemp_min) t = autotemp_min;
|
||||
if (t > autotemp_max) t = autotemp_max;
|
||||
if (oldt > t) t = AUTOTEMP_OLDWEIGHT * oldt + (1 - AUTOTEMP_OLDWEIGHT) * t;
|
||||
t = constrain(t, autotemp_min, autotemp_max);
|
||||
if (oldt > t) {
|
||||
t *= (1 - AUTOTEMP_OLDWEIGHT);
|
||||
t += AUTOTEMP_OLDWEIGHT * oldt;
|
||||
}
|
||||
oldt = t;
|
||||
setTargetHotend0(t);
|
||||
}
|
||||
#endif
|
||||
|
||||
void check_axes_activity() {
|
||||
unsigned char axis_active[NUM_AXIS],
|
||||
unsigned char axis_active[NUM_AXIS] = { 0 },
|
||||
tail_fan_speed = fanSpeed;
|
||||
#ifdef BARICUDA
|
||||
unsigned char tail_valve_pressure = ValvePressure,
|
||||
|
@ -429,7 +427,7 @@ void check_axes_activity() {
|
|||
|
||||
#if HAS_FAN
|
||||
#ifdef FAN_KICKSTART_TIME
|
||||
static unsigned long fan_kick_end;
|
||||
static millis_t fan_kick_end;
|
||||
if (tail_fan_speed) {
|
||||
if (fan_kick_end == 0) {
|
||||
// Just starting up fan - run at full power.
|
||||
|
@ -507,8 +505,8 @@ float junction_deviation = 0.1;
|
|||
|
||||
#ifdef PREVENT_DANGEROUS_EXTRUDE
|
||||
if (de) {
|
||||
if (degHotend(active_extruder) < extrude_min_temp) {
|
||||
position[E_AXIS] = target[E_AXIS]; //behave as if the move really took place, but ignore E part
|
||||
if (degHotend(extruder) < extrude_min_temp) {
|
||||
position[E_AXIS] = target[E_AXIS]; // Behave as if the move really took place, but ignore E part
|
||||
de = 0; // no difference
|
||||
SERIAL_ECHO_START;
|
||||
SERIAL_ECHOLNPGM(MSG_ERR_COLD_EXTRUDE_STOP);
|
||||
|
@ -544,8 +542,8 @@ float junction_deviation = 0.1;
|
|||
|
||||
block->steps[Z_AXIS] = labs(dz);
|
||||
block->steps[E_AXIS] = labs(de);
|
||||
block->steps[E_AXIS] *= volumetric_multiplier[active_extruder];
|
||||
block->steps[E_AXIS] *= extruder_multiply[active_extruder];
|
||||
block->steps[E_AXIS] *= volumetric_multiplier[extruder];
|
||||
block->steps[E_AXIS] *= extruder_multiply[extruder];
|
||||
block->steps[E_AXIS] /= 100;
|
||||
block->step_event_count = max(block->steps[X_AXIS], max(block->steps[Y_AXIS], max(block->steps[Z_AXIS], block->steps[E_AXIS])));
|
||||
|
||||
|
@ -654,10 +652,10 @@ float junction_deviation = 0.1;
|
|||
}
|
||||
}
|
||||
|
||||
if (block->steps[E_AXIS]) {
|
||||
if (feed_rate < minimumfeedrate) feed_rate = minimumfeedrate;
|
||||
}
|
||||
else if (feed_rate < mintravelfeedrate) feed_rate = mintravelfeedrate;
|
||||
if (block->steps[E_AXIS])
|
||||
NOLESS(feed_rate, minimumfeedrate);
|
||||
else
|
||||
NOLESS(feed_rate, mintravelfeedrate);
|
||||
|
||||
/**
|
||||
* This part of the code calculates the total length of the movement.
|
||||
|
@ -679,7 +677,7 @@ float junction_deviation = 0.1;
|
|||
delta_mm[Y_AXIS] = dy / axis_steps_per_unit[Y_AXIS];
|
||||
#endif
|
||||
delta_mm[Z_AXIS] = dz / axis_steps_per_unit[Z_AXIS];
|
||||
delta_mm[E_AXIS] = (de / axis_steps_per_unit[E_AXIS]) * volumetric_multiplier[active_extruder] * extruder_multiply[active_extruder] / 100.0;
|
||||
delta_mm[E_AXIS] = (de / axis_steps_per_unit[E_AXIS]) * volumetric_multiplier[extruder] * extruder_multiply[extruder] / 100.0;
|
||||
|
||||
if (block->steps[X_AXIS] <= dropsegments && block->steps[Y_AXIS] <= dropsegments && block->steps[Z_AXIS] <= dropsegments) {
|
||||
block->millimeters = fabs(delta_mm[E_AXIS]);
|
||||
|
@ -998,10 +996,6 @@ void plan_set_e_position(const float &e) {
|
|||
st_set_e_position(position[E_AXIS]);
|
||||
}
|
||||
|
||||
#ifdef PREVENT_DANGEROUS_EXTRUDE
|
||||
void set_extrude_min_temp(float temp) { extrude_min_temp = temp; }
|
||||
#endif
|
||||
|
||||
// Calculate the steps/s^2 acceleration rates, based on the mm/s^s
|
||||
void reset_acceleration_rates() {
|
||||
for (int i = 0; i < NUM_AXIS; i++)
|
||||
|
|
|
@ -115,15 +115,19 @@ FORCE_INLINE uint8_t movesplanned() { return BLOCK_MOD(block_buffer_head - block
|
|||
|
||||
void plan_set_e_position(const float &e);
|
||||
|
||||
extern unsigned long minsegmenttime;
|
||||
extern float max_feedrate[NUM_AXIS]; // set the max speeds
|
||||
//===========================================================================
|
||||
//============================= public variables ============================
|
||||
//===========================================================================
|
||||
|
||||
extern millis_t minsegmenttime;
|
||||
extern float max_feedrate[NUM_AXIS]; // Max speeds in mm per minute
|
||||
extern float axis_steps_per_unit[NUM_AXIS];
|
||||
extern unsigned long max_acceleration_units_per_sq_second[NUM_AXIS]; // Use M201 to override by software
|
||||
extern float minimumfeedrate;
|
||||
extern float acceleration; // Normal acceleration mm/s^2 THIS IS THE DEFAULT ACCELERATION for all moves. M204 SXXXX
|
||||
extern float retract_acceleration; // mm/s^2 filament pull-pack and push-forward while standing still in the other axis M204 TXXXX
|
||||
extern float travel_acceleration; // Travel acceleration mm/s^2 THIS IS THE DEFAULT ACCELERATION for all NON printing moves. M204 MXXXX
|
||||
extern float max_xy_jerk; //speed than can be stopped at once, if i understand correctly.
|
||||
extern float acceleration; // Normal acceleration mm/s^2 DEFAULT ACCELERATION for all printing moves. M204 SXXXX
|
||||
extern float retract_acceleration; // Retract acceleration mm/s^2 filament pull-back and push-forward while standing still in the other axes M204 TXXXX
|
||||
extern float travel_acceleration; // Travel acceleration mm/s^2 DEFAULT ACCELERATION for all NON printing moves. M204 MXXXX
|
||||
extern float max_xy_jerk; // The largest speed change requiring no acceleration
|
||||
extern float max_z_jerk;
|
||||
extern float max_e_jerk;
|
||||
extern float mintravelfeedrate;
|
||||
|
@ -161,10 +165,6 @@ FORCE_INLINE block_t *plan_get_current_block() {
|
|||
return NULL;
|
||||
}
|
||||
|
||||
#ifdef PREVENT_DANGEROUS_EXTRUDE
|
||||
void set_extrude_min_temp(float temp);
|
||||
#endif
|
||||
|
||||
void reset_acceleration_rates();
|
||||
|
||||
#endif //PLANNER_H
|
||||
#endif // PLANNER_H
|
||||
|
|
|
@ -46,7 +46,7 @@ block_t *current_block; // A pointer to the block currently being traced
|
|||
|
||||
// Variables used by The Stepper Driver Interrupt
|
||||
static unsigned char out_bits; // The next stepping-bits to be output
|
||||
static unsigned int cleaning_buffer_counter;
|
||||
static unsigned int cleaning_buffer_counter;
|
||||
|
||||
#ifdef Z_DUAL_ENDSTOPS
|
||||
static bool performing_homing = false,
|
||||
|
@ -54,7 +54,7 @@ static unsigned int cleaning_buffer_counter;
|
|||
locked_z2_motor = false;
|
||||
#endif
|
||||
|
||||
// Counter variables for the bresenham line tracer
|
||||
// Counter variables for the Bresenham line tracer
|
||||
static long counter_x, counter_y, counter_z, counter_e;
|
||||
volatile static unsigned long step_events_completed; // The number of step events executed in the current block
|
||||
|
||||
|
@ -66,7 +66,7 @@ volatile static unsigned long step_events_completed; // The number of step event
|
|||
|
||||
static long acceleration_time, deceleration_time;
|
||||
//static unsigned long accelerate_until, decelerate_after, acceleration_rate, initial_rate, final_rate, nominal_rate;
|
||||
static unsigned short acc_step_rate; // needed for deccelaration start point
|
||||
static unsigned short acc_step_rate; // needed for deceleration start point
|
||||
static char step_loops;
|
||||
static unsigned short OCR1A_nominal;
|
||||
static unsigned short step_loops_nominal;
|
||||
|
@ -98,19 +98,13 @@ static volatile bool endstop_z_probe_hit = false; // Leaving this in even if Z_P
|
|||
#if HAS_Y_MAX
|
||||
static bool old_y_max_endstop = false;
|
||||
#endif
|
||||
#if HAS_Z_MIN
|
||||
static bool old_z_min_endstop = false;
|
||||
#endif
|
||||
#if HAS_Z_MAX
|
||||
static bool old_z_max_endstop = false;
|
||||
#endif
|
||||
|
||||
static bool old_z_min_endstop = false;
|
||||
static bool old_z_max_endstop = false;
|
||||
|
||||
#ifdef Z_DUAL_ENDSTOPS
|
||||
// #if HAS_Z2_MIN
|
||||
static bool old_z2_min_endstop = false;
|
||||
// #endif
|
||||
// #if HAS_Z2_MAX
|
||||
static bool old_z2_max_endstop = false;
|
||||
// #endif
|
||||
static bool old_z2_min_endstop = false;
|
||||
static bool old_z2_max_endstop = false;
|
||||
#endif
|
||||
|
||||
#ifdef Z_PROBE_ENDSTOP // No need to check for valid pin, SanityCheck.h already does this.
|
||||
|
@ -211,8 +205,14 @@ volatile signed char count_direction[NUM_AXIS] = { 1, 1, 1, 1 };
|
|||
// intRes = longIn1 * longIn2 >> 24
|
||||
// uses:
|
||||
// r26 to store 0
|
||||
// r27 to store the byte 1 of the 48bit result
|
||||
#define MultiU24X24toH16(intRes, longIn1, longIn2) \
|
||||
// r27 to store bits 16-23 of the 48bit result. The top bit is used to round the two byte result.
|
||||
// note that the lower two bytes and the upper byte of the 48bit result are not calculated.
|
||||
// this can cause the result to be out by one as the lower bytes may cause carries into the upper ones.
|
||||
// B0 A0 are bits 24-39 and are the returned value
|
||||
// C1 B1 A1 is longIn1
|
||||
// D2 C2 B2 A2 is longIn2
|
||||
//
|
||||
#define MultiU24X32toH16(intRes, longIn1, longIn2) \
|
||||
asm volatile ( \
|
||||
"clr r26 \n\t" \
|
||||
"mul %A1, %B2 \n\t" \
|
||||
|
@ -243,6 +243,11 @@ volatile signed char count_direction[NUM_AXIS] = { 1, 1, 1, 1 };
|
|||
"lsr r27 \n\t" \
|
||||
"adc %A0, r26 \n\t" \
|
||||
"adc %B0, r26 \n\t" \
|
||||
"mul %D2, %A1 \n\t" \
|
||||
"add %A0, r0 \n\t" \
|
||||
"adc %B0, r1 \n\t" \
|
||||
"mul %D2, %B1 \n\t" \
|
||||
"add %B0, r0 \n\t" \
|
||||
"clr r1 \n\t" \
|
||||
: \
|
||||
"=&r" (intRes) \
|
||||
|
@ -280,8 +285,8 @@ void checkHitEndstops() {
|
|||
}
|
||||
#ifdef Z_PROBE_ENDSTOP
|
||||
if (endstop_z_probe_hit) {
|
||||
SERIAL_ECHOPAIR(" Z_PROBE:", (float)endstops_trigsteps[Z_AXIS] / axis_steps_per_unit[Z_AXIS]);
|
||||
LCD_MESSAGEPGM(MSG_ENDSTOPS_HIT "ZP");
|
||||
SERIAL_ECHOPAIR(" Z_PROBE:", (float)endstops_trigsteps[Z_AXIS] / axis_steps_per_unit[Z_AXIS]);
|
||||
LCD_MESSAGEPGM(MSG_ENDSTOPS_HIT "ZP");
|
||||
}
|
||||
#endif
|
||||
SERIAL_EOL;
|
||||
|
@ -319,7 +324,7 @@ void enable_endstops(bool check) { check_endstops = check; }
|
|||
// The trapezoid is the shape the speed curve over time. It starts at block->initial_rate, accelerates
|
||||
// first block->accelerate_until step_events_completed, then keeps going at constant speed until
|
||||
// step_events_completed reaches block->decelerate_after after which it decelerates until the trapezoid generator is reset.
|
||||
// The slope of acceleration is calculated with the leib ramp alghorithm.
|
||||
// The slope of acceleration is calculated using v = u + at where t is the accumulated timer values of the steps so far.
|
||||
|
||||
void st_wake_up() {
|
||||
// TCNT1 = 0;
|
||||
|
@ -400,13 +405,13 @@ ISR(TIMER1_COMPA_vect) {
|
|||
current_block = NULL;
|
||||
plan_discard_current_block();
|
||||
#ifdef SD_FINISHED_RELEASECOMMAND
|
||||
if ((cleaning_buffer_counter == 1) && (SD_FINISHED_STEPPERRELEASE)) enquecommands_P(PSTR(SD_FINISHED_RELEASECOMMAND));
|
||||
if ((cleaning_buffer_counter == 1) && (SD_FINISHED_STEPPERRELEASE)) enqueuecommands_P(PSTR(SD_FINISHED_RELEASECOMMAND));
|
||||
#endif
|
||||
cleaning_buffer_counter--;
|
||||
OCR1A = 200;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// If there is no current block, attempt to pop one from the buffer
|
||||
if (!current_block) {
|
||||
// Anything in the buffer?
|
||||
|
@ -458,14 +463,22 @@ ISR(TIMER1_COMPA_vect) {
|
|||
count_direction[Y_AXIS] = 1;
|
||||
}
|
||||
|
||||
#define _ENDSTOP(axis, minmax) axis ##_## minmax ##_endstop
|
||||
#define _ENDSTOP_PIN(AXIS, MINMAX) AXIS ##_## MINMAX ##_PIN
|
||||
#define _ENDSTOP_INVERTING(AXIS, MINMAX) AXIS ##_## MINMAX ##_ENDSTOP_INVERTING
|
||||
#define _OLD_ENDSTOP(axis, minmax) old_## axis ##_## minmax ##_endstop
|
||||
#define _AXIS(AXIS) AXIS ##_AXIS
|
||||
#define _ENDSTOP_HIT(axis) endstop_## axis ##_hit
|
||||
|
||||
#define UPDATE_ENDSTOP(axis,AXIS,minmax,MINMAX) \
|
||||
bool axis ##_## minmax ##_endstop = (READ(AXIS ##_## MINMAX ##_PIN) != AXIS ##_## MINMAX ##_ENDSTOP_INVERTING); \
|
||||
if (axis ##_## minmax ##_endstop && old_## axis ##_## minmax ##_endstop && (current_block->steps[AXIS ##_AXIS] > 0)) { \
|
||||
endstops_trigsteps[AXIS ##_AXIS] = count_position[AXIS ##_AXIS]; \
|
||||
endstop_## axis ##_hit = true; \
|
||||
bool _ENDSTOP(axis, minmax) = (READ(_ENDSTOP_PIN(AXIS, MINMAX)) != _ENDSTOP_INVERTING(AXIS, MINMAX)); \
|
||||
if (_ENDSTOP(axis, minmax) && _OLD_ENDSTOP(axis, minmax) && (current_block->steps[_AXIS(AXIS)] > 0)) { \
|
||||
endstops_trigsteps[_AXIS(AXIS)] = count_position[_AXIS(AXIS)]; \
|
||||
_ENDSTOP_HIT(axis) = true; \
|
||||
step_events_completed = current_block->step_event_count; \
|
||||
} \
|
||||
old_## axis ##_## minmax ##_endstop = axis ##_## minmax ##_endstop;
|
||||
_OLD_ENDSTOP(axis, minmax) = _ENDSTOP(axis, minmax);
|
||||
|
||||
|
||||
// Check X and Y endstops
|
||||
if (check_endstops) {
|
||||
|
@ -475,13 +488,13 @@ ISR(TIMER1_COMPA_vect) {
|
|||
if ((current_block->steps[A_AXIS] != current_block->steps[B_AXIS]) || (TEST(out_bits, A_AXIS) == TEST(out_bits, B_AXIS))) {
|
||||
if (TEST(out_bits, X_HEAD))
|
||||
#else
|
||||
if (TEST(out_bits, X_AXIS)) // stepping along -X axis (regular cartesians bot)
|
||||
if (TEST(out_bits, X_AXIS)) // stepping along -X axis (regular Cartesian bot)
|
||||
#endif
|
||||
{ // -direction
|
||||
#ifdef DUAL_X_CARRIAGE
|
||||
// with 2 x-carriages, endstops are only checked in the homing direction for the active extruder
|
||||
if ((current_block->active_extruder == 0 && X_HOME_DIR == -1) || (current_block->active_extruder != 0 && X2_HOME_DIR == -1))
|
||||
#endif
|
||||
#endif
|
||||
{
|
||||
#if HAS_X_MIN
|
||||
UPDATE_ENDSTOP(x, X, min, MIN);
|
||||
|
@ -567,14 +580,14 @@ ISR(TIMER1_COMPA_vect) {
|
|||
z_probe_endstop=(READ(Z_PROBE_PIN) != Z_PROBE_ENDSTOP_INVERTING);
|
||||
if(z_probe_endstop && old_z_probe_endstop)
|
||||
{
|
||||
endstops_trigsteps[Z_AXIS] = count_position[Z_AXIS];
|
||||
endstop_z_probe_hit=true;
|
||||
endstops_trigsteps[Z_AXIS] = count_position[Z_AXIS];
|
||||
endstop_z_probe_hit=true;
|
||||
|
||||
// if (z_probe_endstop && old_z_probe_endstop) SERIAL_ECHOLN("z_probe_endstop = true");
|
||||
// if (z_probe_endstop && old_z_probe_endstop) SERIAL_ECHOLN("z_probe_endstop = true");
|
||||
}
|
||||
old_z_probe_endstop = z_probe_endstop;
|
||||
#endif
|
||||
|
||||
|
||||
} // check_endstops
|
||||
|
||||
}
|
||||
|
@ -620,15 +633,15 @@ ISR(TIMER1_COMPA_vect) {
|
|||
#endif // !Z_DUAL_ENDSTOPS
|
||||
|
||||
#endif // Z_MAX_PIN
|
||||
|
||||
|
||||
#ifdef Z_PROBE_ENDSTOP
|
||||
UPDATE_ENDSTOP(z, Z, probe, PROBE);
|
||||
z_probe_endstop=(READ(Z_PROBE_PIN) != Z_PROBE_ENDSTOP_INVERTING);
|
||||
if(z_probe_endstop && old_z_probe_endstop)
|
||||
{
|
||||
endstops_trigsteps[Z_AXIS] = count_position[Z_AXIS];
|
||||
endstop_z_probe_hit=true;
|
||||
// if (z_probe_endstop && old_z_probe_endstop) SERIAL_ECHOLN("z_probe_endstop = true");
|
||||
endstops_trigsteps[Z_AXIS] = count_position[Z_AXIS];
|
||||
endstop_z_probe_hit=true;
|
||||
// if (z_probe_endstop && old_z_probe_endstop) SERIAL_ECHOLN("z_probe_endstop = true");
|
||||
}
|
||||
old_z_probe_endstop = z_probe_endstop;
|
||||
#endif
|
||||
|
@ -662,6 +675,11 @@ ISR(TIMER1_COMPA_vect) {
|
|||
}
|
||||
#endif //ADVANCE
|
||||
|
||||
#define _COUNTER(axis) counter_## axis
|
||||
#define _WRITE_STEP(AXIS, HIGHLOW) AXIS ##_STEP_WRITE(HIGHLOW)
|
||||
#define _APPLY_STEP(AXIS) AXIS ##_APPLY_STEP
|
||||
#define _INVERT_STEP_PIN(AXIS) INVERT_## AXIS ##_STEP_PIN
|
||||
|
||||
#ifdef CONFIG_STEPPERS_TOSHIBA
|
||||
/**
|
||||
* The Toshiba stepper controller require much longer pulses.
|
||||
|
@ -670,8 +688,8 @@ ISR(TIMER1_COMPA_vect) {
|
|||
* lag to allow it work with without needing NOPs
|
||||
*/
|
||||
#define STEP_ADD(axis, AXIS) \
|
||||
counter_## axis += current_block->steps[AXIS ##_AXIS]; \
|
||||
if (counter_## axis > 0) { AXIS ##_STEP_WRITE(HIGH); }
|
||||
_COUNTER(axis) += current_block->steps[_AXIS(AXIS)]; \
|
||||
if (_COUNTER(axis) > 0) { _WRITE_STEP(AXIS, HIGH); }
|
||||
STEP_ADD(x,X);
|
||||
STEP_ADD(y,Y);
|
||||
STEP_ADD(z,Z);
|
||||
|
@ -680,10 +698,10 @@ ISR(TIMER1_COMPA_vect) {
|
|||
#endif
|
||||
|
||||
#define STEP_IF_COUNTER(axis, AXIS) \
|
||||
if (counter_## axis > 0) { \
|
||||
counter_## axis -= current_block->step_event_count; \
|
||||
count_position[AXIS ##_AXIS] += count_direction[AXIS ##_AXIS]; \
|
||||
AXIS ##_STEP_WRITE(LOW); \
|
||||
if (_COUNTER(axis) > 0) { \
|
||||
_COUNTER(axis) -= current_block->step_event_count; \
|
||||
count_position[_AXIS(AXIS)] += count_direction[_AXIS(AXIS)]; \
|
||||
_WRITE_STEP(AXIS, LOW); \
|
||||
}
|
||||
|
||||
STEP_IF_COUNTER(x, X);
|
||||
|
@ -696,12 +714,12 @@ ISR(TIMER1_COMPA_vect) {
|
|||
#else // !CONFIG_STEPPERS_TOSHIBA
|
||||
|
||||
#define APPLY_MOVEMENT(axis, AXIS) \
|
||||
counter_## axis += current_block->steps[AXIS ##_AXIS]; \
|
||||
if (counter_## axis > 0) { \
|
||||
AXIS ##_APPLY_STEP(!INVERT_## AXIS ##_STEP_PIN,0); \
|
||||
counter_## axis -= current_block->step_event_count; \
|
||||
count_position[AXIS ##_AXIS] += count_direction[AXIS ##_AXIS]; \
|
||||
AXIS ##_APPLY_STEP(INVERT_## AXIS ##_STEP_PIN,0); \
|
||||
_COUNTER(axis) += current_block->steps[_AXIS(AXIS)]; \
|
||||
if (_COUNTER(axis) > 0) { \
|
||||
_APPLY_STEP(AXIS)(!_INVERT_STEP_PIN(AXIS),0); \
|
||||
_COUNTER(axis) -= current_block->step_event_count; \
|
||||
count_position[_AXIS(AXIS)] += count_direction[_AXIS(AXIS)]; \
|
||||
_APPLY_STEP(AXIS)(_INVERT_STEP_PIN(AXIS),0); \
|
||||
}
|
||||
|
||||
APPLY_MOVEMENT(x, X);
|
||||
|
@ -718,9 +736,9 @@ ISR(TIMER1_COMPA_vect) {
|
|||
// Calculate new timer value
|
||||
unsigned short timer;
|
||||
unsigned short step_rate;
|
||||
if (step_events_completed <= (unsigned long int)current_block->accelerate_until) {
|
||||
if (step_events_completed <= (unsigned long)current_block->accelerate_until) {
|
||||
|
||||
MultiU24X24toH16(acc_step_rate, acceleration_time, current_block->acceleration_rate);
|
||||
MultiU24X32toH16(acc_step_rate, acceleration_time, current_block->acceleration_rate);
|
||||
acc_step_rate += current_block->initial_rate;
|
||||
|
||||
// upper limit
|
||||
|
@ -742,8 +760,8 @@ ISR(TIMER1_COMPA_vect) {
|
|||
|
||||
#endif
|
||||
}
|
||||
else if (step_events_completed > (unsigned long int)current_block->decelerate_after) {
|
||||
MultiU24X24toH16(step_rate, deceleration_time, current_block->acceleration_rate);
|
||||
else if (step_events_completed > (unsigned long)current_block->decelerate_after) {
|
||||
MultiU24X32toH16(step_rate, deceleration_time, current_block->acceleration_rate);
|
||||
|
||||
if (step_rate > acc_step_rate) { // Check step_rate stays positive
|
||||
step_rate = current_block->final_rate;
|
||||
|
@ -869,7 +887,7 @@ void st_init() {
|
|||
#ifdef HAVE_L6470DRIVER
|
||||
L6470_init();
|
||||
#endif
|
||||
|
||||
|
||||
// Initialize Dir Pins
|
||||
#if HAS_X_DIR
|
||||
X_DIR_INIT;
|
||||
|
@ -915,11 +933,11 @@ void st_init() {
|
|||
#if HAS_Y_ENABLE
|
||||
Y_ENABLE_INIT;
|
||||
if (!Y_ENABLE_ON) Y_ENABLE_WRITE(HIGH);
|
||||
|
||||
#if defined(Y_DUAL_STEPPER_DRIVERS) && HAS_Y2_ENABLE
|
||||
Y2_ENABLE_INIT;
|
||||
if (!Y_ENABLE_ON) Y2_ENABLE_WRITE(HIGH);
|
||||
#endif
|
||||
|
||||
#if defined(Y_DUAL_STEPPER_DRIVERS) && HAS_Y2_ENABLE
|
||||
Y2_ENABLE_INIT;
|
||||
if (!Y_ENABLE_ON) Y2_ENABLE_WRITE(HIGH);
|
||||
#endif
|
||||
#endif
|
||||
#if HAS_Z_ENABLE
|
||||
Z_ENABLE_INIT;
|
||||
|
@ -996,8 +1014,8 @@ void st_init() {
|
|||
#ifdef ENDSTOPPULLUP_ZMAX
|
||||
WRITE(Z2_MAX_PIN,HIGH);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#if (defined(Z_PROBE_PIN) && Z_PROBE_PIN >= 0) && defined(Z_PROBE_ENDSTOP) // Check for Z_PROBE_ENDSTOP so we don't pull a pin high unless it's to be used.
|
||||
SET_INPUT(Z_PROBE_PIN);
|
||||
#ifdef ENDSTOPPULLUP_ZPROBE
|
||||
|
@ -1005,10 +1023,13 @@ void st_init() {
|
|||
#endif
|
||||
#endif
|
||||
|
||||
#define _STEP_INIT(AXIS) AXIS ##_STEP_INIT
|
||||
#define _DISABLE(axis) disable_## axis()
|
||||
|
||||
#define AXIS_INIT(axis, AXIS, PIN) \
|
||||
AXIS ##_STEP_INIT; \
|
||||
AXIS ##_STEP_WRITE(INVERT_## PIN ##_STEP_PIN); \
|
||||
disable_## axis()
|
||||
_STEP_INIT(AXIS); \
|
||||
_WRITE_STEP(AXIS, _INVERT_STEP_PIN(PIN)); \
|
||||
_DISABLE(axis)
|
||||
|
||||
#define E_AXIS_INIT(NUM) AXIS_INIT(e## NUM, E## NUM, E)
|
||||
|
||||
|
@ -1072,10 +1093,7 @@ void st_init() {
|
|||
TCCR0A &= ~BIT(WGM01);
|
||||
TCCR0A &= ~BIT(WGM00);
|
||||
#endif
|
||||
e_steps[0] = 0;
|
||||
e_steps[1] = 0;
|
||||
e_steps[2] = 0;
|
||||
e_steps[3] = 0;
|
||||
e_steps[0] = e_steps[1] = e_steps[2] = e_steps[3] = 0;
|
||||
TIMSK0 |= BIT(OCIE0A);
|
||||
#endif //ADVANCE
|
||||
|
||||
|
@ -1144,14 +1162,19 @@ void quickStop() {
|
|||
// No other ISR should ever interrupt this!
|
||||
void babystep(const uint8_t axis, const bool direction) {
|
||||
|
||||
#define _ENABLE(axis) enable_## axis()
|
||||
#define _READ_DIR(AXIS) AXIS ##_DIR_READ
|
||||
#define _INVERT_DIR(AXIS) INVERT_## AXIS ##_DIR
|
||||
#define _APPLY_DIR(AXIS, INVERT) AXIS ##_APPLY_DIR(INVERT, true)
|
||||
|
||||
#define BABYSTEP_AXIS(axis, AXIS, INVERT) { \
|
||||
enable_## axis(); \
|
||||
uint8_t old_pin = AXIS ##_DIR_READ; \
|
||||
AXIS ##_APPLY_DIR(INVERT_## AXIS ##_DIR^direction^INVERT, true); \
|
||||
AXIS ##_APPLY_STEP(!INVERT_## AXIS ##_STEP_PIN, true); \
|
||||
_delay_us(1U); \
|
||||
AXIS ##_APPLY_STEP(INVERT_## AXIS ##_STEP_PIN, true); \
|
||||
AXIS ##_APPLY_DIR(old_pin, true); \
|
||||
_ENABLE(axis); \
|
||||
uint8_t old_pin = _READ_DIR(AXIS); \
|
||||
_APPLY_DIR(AXIS, _INVERT_DIR(AXIS)^direction^INVERT); \
|
||||
_APPLY_STEP(AXIS)(!_INVERT_STEP_PIN(AXIS), true); \
|
||||
delayMicroseconds(2); \
|
||||
_APPLY_STEP(AXIS)(_INVERT_STEP_PIN(AXIS), true); \
|
||||
_APPLY_DIR(AXIS, old_pin); \
|
||||
}
|
||||
|
||||
switch(axis) {
|
||||
|
@ -1163,7 +1186,7 @@ void quickStop() {
|
|||
case Y_AXIS:
|
||||
BABYSTEP_AXIS(y, Y, false);
|
||||
break;
|
||||
|
||||
|
||||
case Z_AXIS: {
|
||||
|
||||
#ifndef DELTA
|
||||
|
@ -1188,7 +1211,7 @@ void quickStop() {
|
|||
X_STEP_WRITE(!INVERT_X_STEP_PIN);
|
||||
Y_STEP_WRITE(!INVERT_Y_STEP_PIN);
|
||||
Z_STEP_WRITE(!INVERT_Z_STEP_PIN);
|
||||
_delay_us(1U);
|
||||
delayMicroseconds(2);
|
||||
X_STEP_WRITE(INVERT_X_STEP_PIN);
|
||||
Y_STEP_WRITE(INVERT_Y_STEP_PIN);
|
||||
Z_STEP_WRITE(INVERT_Z_STEP_PIN);
|
||||
|
@ -1200,7 +1223,7 @@ void quickStop() {
|
|||
#endif
|
||||
|
||||
} break;
|
||||
|
||||
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
@ -1264,7 +1287,7 @@ void microstep_init() {
|
|||
|
||||
#if HAS_MICROSTEPS
|
||||
pinMode(X_MS1_PIN,OUTPUT);
|
||||
pinMode(X_MS2_PIN,OUTPUT);
|
||||
pinMode(X_MS2_PIN,OUTPUT);
|
||||
pinMode(Y_MS1_PIN,OUTPUT);
|
||||
pinMode(Y_MS2_PIN,OUTPUT);
|
||||
pinMode(Z_MS1_PIN,OUTPUT);
|
||||
|
|
|
@ -77,20 +77,21 @@ unsigned char soft_pwm_bed;
|
|||
#define HAS_BED_THERMAL_PROTECTION (defined(THERMAL_RUNAWAY_PROTECTION_BED_PERIOD) && THERMAL_RUNAWAY_PROTECTION_BED_PERIOD > 0 && TEMP_SENSOR_BED != 0)
|
||||
#if HAS_HEATER_THERMAL_PROTECTION || HAS_BED_THERMAL_PROTECTION
|
||||
enum TRState { TRReset, TRInactive, TRFirstHeating, TRStable, TRRunaway };
|
||||
void thermal_runaway_protection(TRState *state, unsigned long *timer, float temperature, float target_temperature, int heater_id, int period_seconds, int hysteresis_degc);
|
||||
void thermal_runaway_protection(TRState *state, millis_t *timer, float temperature, float target_temperature, int heater_id, int period_seconds, int hysteresis_degc);
|
||||
#if HAS_HEATER_THERMAL_PROTECTION
|
||||
static TRState thermal_runaway_state_machine[4] = { TRReset, TRReset, TRReset, TRReset };
|
||||
static unsigned long thermal_runaway_timer[4]; // = {0,0,0,0};
|
||||
static millis_t thermal_runaway_timer[4]; // = {0,0,0,0};
|
||||
#endif
|
||||
#if HAS_BED_THERMAL_PROTECTION
|
||||
static TRState thermal_runaway_bed_state_machine = TRReset;
|
||||
static unsigned long thermal_runaway_bed_timer;
|
||||
static millis_t thermal_runaway_bed_timer;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
//===========================================================================
|
||||
//=============================private variables============================
|
||||
//============================ private variables ============================
|
||||
//===========================================================================
|
||||
|
||||
static volatile bool temp_meas_ready = false;
|
||||
|
||||
#ifdef PIDTEMP
|
||||
|
@ -118,7 +119,7 @@ static volatile bool temp_meas_ready = false;
|
|||
static float temp_iState_min_bed;
|
||||
static float temp_iState_max_bed;
|
||||
#else //PIDTEMPBED
|
||||
static unsigned long previous_millis_bed_heater;
|
||||
static millis_t next_bed_check_ms;
|
||||
#endif //PIDTEMPBED
|
||||
static unsigned char soft_pwm[EXTRUDERS];
|
||||
|
||||
|
@ -126,7 +127,7 @@ static volatile bool temp_meas_ready = false;
|
|||
static unsigned char soft_pwm_fan;
|
||||
#endif
|
||||
#if HAS_AUTO_FAN
|
||||
static unsigned long extruder_autofan_last_check;
|
||||
static millis_t next_auto_fan_check_ms;
|
||||
#endif
|
||||
|
||||
#ifdef PIDTEMP
|
||||
|
@ -171,7 +172,7 @@ static void updateTemperaturesFromRawValues();
|
|||
|
||||
#ifdef WATCH_TEMP_PERIOD
|
||||
int watch_start_temp[EXTRUDERS] = { 0 };
|
||||
unsigned long watchmillis[EXTRUDERS] = { 0 };
|
||||
millis_t watchmillis[EXTRUDERS] = { 0 };
|
||||
#endif //WATCH_TEMP_PERIOD
|
||||
|
||||
#ifndef SOFT_PWM_SCALE
|
||||
|
@ -187,7 +188,7 @@ static void updateTemperaturesFromRawValues();
|
|||
#endif
|
||||
|
||||
//===========================================================================
|
||||
//============================= functions ============================
|
||||
//================================ Functions ================================
|
||||
//===========================================================================
|
||||
|
||||
void PID_autotune(float temp, int extruder, int ncycles)
|
||||
|
@ -196,7 +197,7 @@ void PID_autotune(float temp, int extruder, int ncycles)
|
|||
int cycles = 0;
|
||||
bool heating = true;
|
||||
|
||||
unsigned long temp_millis = millis(), t1 = temp_millis, t2 = temp_millis;
|
||||
millis_t temp_ms = millis(), t1 = temp_ms, t2 = temp_ms;
|
||||
long t_high = 0, t_low = 0;
|
||||
|
||||
long bias, d;
|
||||
|
@ -205,7 +206,7 @@ void PID_autotune(float temp, int extruder, int ncycles)
|
|||
float max = 0, min = 10000;
|
||||
|
||||
#if HAS_AUTO_FAN
|
||||
unsigned long extruder_autofan_last_check = temp_millis;
|
||||
millis_t next_auto_fan_check_ms = temp_ms + 2500;
|
||||
#endif
|
||||
|
||||
if (extruder >= EXTRUDERS
|
||||
|
@ -219,7 +220,7 @@ void PID_autotune(float temp, int extruder, int ncycles)
|
|||
|
||||
SERIAL_ECHOLN(MSG_PID_AUTOTUNE_START);
|
||||
|
||||
disable_heater(); // switch off all heaters.
|
||||
disable_all_heaters(); // switch off all heaters.
|
||||
|
||||
if (extruder < 0)
|
||||
soft_pwm_bed = bias = d = MAX_BED_POWER / 2;
|
||||
|
@ -229,7 +230,7 @@ void PID_autotune(float temp, int extruder, int ncycles)
|
|||
// PID Tuning loop
|
||||
for (;;) {
|
||||
|
||||
unsigned long ms = millis();
|
||||
millis_t ms = millis();
|
||||
|
||||
if (temp_meas_ready) { // temp sample ready
|
||||
updateTemperaturesFromRawValues();
|
||||
|
@ -240,9 +241,9 @@ void PID_autotune(float temp, int extruder, int ncycles)
|
|||
min = min(min, input);
|
||||
|
||||
#if HAS_AUTO_FAN
|
||||
if (ms > extruder_autofan_last_check + 2500) {
|
||||
if (ms > next_auto_fan_check_ms) {
|
||||
checkExtruderAutoFans();
|
||||
extruder_autofan_last_check = ms;
|
||||
next_auto_fan_check_ms = ms + 2500;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -317,7 +318,7 @@ void PID_autotune(float temp, int extruder, int ncycles)
|
|||
return;
|
||||
}
|
||||
// Every 2 seconds...
|
||||
if (ms > temp_millis + 2000) {
|
||||
if (ms > temp_ms + 2000) {
|
||||
int p;
|
||||
if (extruder < 0) {
|
||||
p = soft_pwm_bed;
|
||||
|
@ -332,7 +333,7 @@ void PID_autotune(float temp, int extruder, int ncycles)
|
|||
SERIAL_PROTOCOLPGM(MSG_AT);
|
||||
SERIAL_PROTOCOLLN(p);
|
||||
|
||||
temp_millis = ms;
|
||||
temp_ms = ms;
|
||||
} // every 2 seconds
|
||||
// Over 2 minutes?
|
||||
if (((ms - t1) + (ms - t2)) > (10L*60L*1000L*2L)) {
|
||||
|
@ -341,6 +342,10 @@ void PID_autotune(float temp, int extruder, int ncycles)
|
|||
}
|
||||
if (cycles > ncycles) {
|
||||
SERIAL_PROTOCOLLNPGM(MSG_PID_AUTOTUNE_FINISHED);
|
||||
const char *estring = extruder < 0 ? "bed" : "";
|
||||
SERIAL_PROTOCOLPGM("#define DEFAULT_"); SERIAL_PROTOCOL(estring); SERIAL_PROTOCOLPGM("Kp "); SERIAL_PROTOCOLLN(Kp);
|
||||
SERIAL_PROTOCOLPGM("#define DEFAULT_"); SERIAL_PROTOCOL(estring); SERIAL_PROTOCOLPGM("Ki "); SERIAL_PROTOCOLLN(Ki);
|
||||
SERIAL_PROTOCOLPGM("#define DEFAULT_"); SERIAL_PROTOCOL(estring); SERIAL_PROTOCOLPGM("Kd "); SERIAL_PROTOCOLLN(Kd);
|
||||
return;
|
||||
}
|
||||
lcd_update();
|
||||
|
@ -458,11 +463,11 @@ inline void _temp_error(int e, const char *msg1, const char *msg2) {
|
|||
}
|
||||
|
||||
void max_temp_error(uint8_t e) {
|
||||
disable_heater();
|
||||
disable_all_heaters();
|
||||
_temp_error(e, PSTR(MSG_MAXTEMP_EXTRUDER_OFF), PSTR(MSG_ERR_MAXTEMP));
|
||||
}
|
||||
void min_temp_error(uint8_t e) {
|
||||
disable_heater();
|
||||
disable_all_heaters();
|
||||
_temp_error(e, PSTR(MSG_MINTEMP_EXTRUDER_OFF), PSTR(MSG_ERR_MINTEMP));
|
||||
}
|
||||
void bed_max_temp_error(void) {
|
||||
|
@ -579,6 +584,14 @@ float get_pid_output(int e) {
|
|||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Manage heating activities for extruder hot-ends and a heated bed
|
||||
* - Acquire updated temperature readings
|
||||
* - Invoke thermal runaway protection
|
||||
* - Manage extruder auto-fan
|
||||
* - Apply filament width to the extrusion rate (may move)
|
||||
* - Update the heated bed PID output value
|
||||
*/
|
||||
void manage_heater() {
|
||||
|
||||
if (!temp_meas_ready) return;
|
||||
|
@ -592,7 +605,7 @@ void manage_heater() {
|
|||
#endif //HEATER_0_USES_MAX6675
|
||||
|
||||
#if defined(WATCH_TEMP_PERIOD) || !defined(PIDTEMPBED) || HAS_AUTO_FAN
|
||||
unsigned long ms = millis();
|
||||
millis_t ms = millis();
|
||||
#endif
|
||||
|
||||
// Loop through all extruders
|
||||
|
@ -623,7 +636,7 @@ void manage_heater() {
|
|||
|
||||
#ifdef TEMP_SENSOR_1_AS_REDUNDANT
|
||||
if (fabs(current_temperature[0] - redundant_temperature) > MAX_REDUNDANT_TEMP_SENSOR_DIFF) {
|
||||
disable_heater();
|
||||
disable_all_heaters();
|
||||
_temp_error(0, PSTR(MSG_EXTRUDER_SWITCHED_OFF), PSTR(MSG_ERR_REDUNDANT_TEMP));
|
||||
}
|
||||
#endif // TEMP_SENSOR_1_AS_REDUNDANT
|
||||
|
@ -631,52 +644,12 @@ void manage_heater() {
|
|||
} // Extruders Loop
|
||||
|
||||
#if HAS_AUTO_FAN
|
||||
if (ms > extruder_autofan_last_check + 2500) { // only need to check fan state very infrequently
|
||||
if (ms > next_auto_fan_check_ms) { // only need to check fan state very infrequently
|
||||
checkExtruderAutoFans();
|
||||
extruder_autofan_last_check = ms;
|
||||
next_auto_fan_check_ms = ms + 2500;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef PIDTEMPBED
|
||||
if (ms < previous_millis_bed_heater + BED_CHECK_INTERVAL) return;
|
||||
previous_millis_bed_heater = ms;
|
||||
#endif //PIDTEMPBED
|
||||
|
||||
#if TEMP_SENSOR_BED != 0
|
||||
|
||||
#if HAS_BED_THERMAL_PROTECTION
|
||||
thermal_runaway_protection(&thermal_runaway_bed_state_machine, &thermal_runaway_bed_timer, current_temperature_bed, target_temperature_bed, -1, THERMAL_RUNAWAY_PROTECTION_BED_PERIOD, THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS);
|
||||
#endif
|
||||
|
||||
#ifdef PIDTEMPBED
|
||||
float pid_output = get_pid_output_bed();
|
||||
|
||||
soft_pwm_bed = current_temperature_bed > BED_MINTEMP && current_temperature_bed < BED_MAXTEMP ? (int)pid_output >> 1 : 0;
|
||||
|
||||
#elif !defined(BED_LIMIT_SWITCHING)
|
||||
// Check if temperature is within the correct range
|
||||
if (current_temperature_bed > BED_MINTEMP && current_temperature_bed < BED_MAXTEMP) {
|
||||
soft_pwm_bed = current_temperature_bed < target_temperature_bed ? MAX_BED_POWER >> 1 : 0;
|
||||
}
|
||||
else {
|
||||
soft_pwm_bed = 0;
|
||||
WRITE_HEATER_BED(LOW);
|
||||
}
|
||||
#else //#ifdef BED_LIMIT_SWITCHING
|
||||
// Check if temperature is within the correct band
|
||||
if (current_temperature_bed > BED_MINTEMP && current_temperature_bed < BED_MAXTEMP) {
|
||||
if (current_temperature_bed >= target_temperature_bed + BED_HYSTERESIS)
|
||||
soft_pwm_bed = 0;
|
||||
else if (current_temperature_bed <= target_temperature_bed - BED_HYSTERESIS)
|
||||
soft_pwm_bed = MAX_BED_POWER >> 1;
|
||||
}
|
||||
else {
|
||||
soft_pwm_bed = 0;
|
||||
WRITE_HEATER_BED(LOW);
|
||||
}
|
||||
#endif
|
||||
#endif //TEMP_SENSOR_BED != 0
|
||||
|
||||
// Control the extruder rate based on the width sensor
|
||||
#ifdef FILAMENT_SENSOR
|
||||
if (filament_sensor) {
|
||||
|
@ -691,41 +664,76 @@ void manage_heater() {
|
|||
volumetric_multiplier[FILAMENT_SENSOR_EXTRUDER_NUM] = vm;
|
||||
}
|
||||
#endif //FILAMENT_SENSOR
|
||||
|
||||
#ifndef PIDTEMPBED
|
||||
if (ms < next_bed_check_ms) return;
|
||||
next_bed_check_ms = ms + BED_CHECK_INTERVAL;
|
||||
#endif
|
||||
|
||||
#if TEMP_SENSOR_BED != 0
|
||||
|
||||
#if HAS_BED_THERMAL_PROTECTION
|
||||
thermal_runaway_protection(&thermal_runaway_bed_state_machine, &thermal_runaway_bed_timer, current_temperature_bed, target_temperature_bed, -1, THERMAL_RUNAWAY_PROTECTION_BED_PERIOD, THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS);
|
||||
#endif
|
||||
|
||||
#ifdef PIDTEMPBED
|
||||
float pid_output = get_pid_output_bed();
|
||||
|
||||
soft_pwm_bed = current_temperature_bed > BED_MINTEMP && current_temperature_bed < BED_MAXTEMP ? (int)pid_output >> 1 : 0;
|
||||
|
||||
#elif defined(BED_LIMIT_SWITCHING)
|
||||
// Check if temperature is within the correct band
|
||||
if (current_temperature_bed > BED_MINTEMP && current_temperature_bed < BED_MAXTEMP) {
|
||||
if (current_temperature_bed >= target_temperature_bed + BED_HYSTERESIS)
|
||||
soft_pwm_bed = 0;
|
||||
else if (current_temperature_bed <= target_temperature_bed - BED_HYSTERESIS)
|
||||
soft_pwm_bed = MAX_BED_POWER >> 1;
|
||||
}
|
||||
else {
|
||||
soft_pwm_bed = 0;
|
||||
WRITE_HEATER_BED(LOW);
|
||||
}
|
||||
#else // BED_LIMIT_SWITCHING
|
||||
// Check if temperature is within the correct range
|
||||
if (current_temperature_bed > BED_MINTEMP && current_temperature_bed < BED_MAXTEMP) {
|
||||
soft_pwm_bed = current_temperature_bed < target_temperature_bed ? MAX_BED_POWER >> 1 : 0;
|
||||
}
|
||||
else {
|
||||
soft_pwm_bed = 0;
|
||||
WRITE_HEATER_BED(LOW);
|
||||
}
|
||||
#endif
|
||||
#endif //TEMP_SENSOR_BED != 0
|
||||
}
|
||||
|
||||
#define PGM_RD_W(x) (short)pgm_read_word(&x)
|
||||
// Derived from RepRap FiveD extruder::getTemperature()
|
||||
// For hot end temperature measurement.
|
||||
static float analog2temp(int raw, uint8_t e) {
|
||||
#ifdef TEMP_SENSOR_1_AS_REDUNDANT
|
||||
if (e > EXTRUDERS)
|
||||
#else
|
||||
if (e >= EXTRUDERS)
|
||||
#endif
|
||||
{
|
||||
#ifdef TEMP_SENSOR_1_AS_REDUNDANT
|
||||
if (e > EXTRUDERS)
|
||||
#else
|
||||
if (e >= EXTRUDERS)
|
||||
#endif
|
||||
{
|
||||
SERIAL_ERROR_START;
|
||||
SERIAL_ERROR((int)e);
|
||||
SERIAL_ERRORLNPGM(MSG_INVALID_EXTRUDER_NUM);
|
||||
kill();
|
||||
return 0.0;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef HEATER_0_USES_MAX6675
|
||||
if (e == 0)
|
||||
{
|
||||
return 0.25 * raw;
|
||||
}
|
||||
if (e == 0) return 0.25 * raw;
|
||||
#endif
|
||||
|
||||
if(heater_ttbl_map[e] != NULL)
|
||||
{
|
||||
if (heater_ttbl_map[e] != NULL) {
|
||||
float celsius = 0;
|
||||
uint8_t i;
|
||||
short (*tt)[][2] = (short (*)[][2])(heater_ttbl_map[e]);
|
||||
|
||||
for (i=1; i<heater_ttbllen_map[e]; i++)
|
||||
{
|
||||
if (PGM_RD_W((*tt)[i][0]) > raw)
|
||||
{
|
||||
for (i = 1; i < heater_ttbllen_map[e]; i++) {
|
||||
if (PGM_RD_W((*tt)[i][0]) > raw) {
|
||||
celsius = PGM_RD_W((*tt)[i-1][1]) +
|
||||
(raw - PGM_RD_W((*tt)[i-1][0])) *
|
||||
(float)(PGM_RD_W((*tt)[i][1]) - PGM_RD_W((*tt)[i-1][1])) /
|
||||
|
@ -749,10 +757,8 @@ static float analog2tempBed(int raw) {
|
|||
float celsius = 0;
|
||||
byte i;
|
||||
|
||||
for (i=1; i<BEDTEMPTABLE_LEN; i++)
|
||||
{
|
||||
if (PGM_RD_W(BEDTEMPTABLE[i][0]) > raw)
|
||||
{
|
||||
for (i = 1; i < BEDTEMPTABLE_LEN; i++) {
|
||||
if (PGM_RD_W(BEDTEMPTABLE[i][0]) > raw) {
|
||||
celsius = PGM_RD_W(BEDTEMPTABLE[i-1][1]) +
|
||||
(raw - PGM_RD_W(BEDTEMPTABLE[i-1][0])) *
|
||||
(float)(PGM_RD_W(BEDTEMPTABLE[i][1]) - PGM_RD_W(BEDTEMPTABLE[i-1][1])) /
|
||||
|
@ -816,11 +822,11 @@ static void updateTemperaturesFromRawValues() {
|
|||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void tp_init()
|
||||
{
|
||||
/**
|
||||
* Initialize the temperature manager
|
||||
* The manager is implemented by periodic calls to manage_heater()
|
||||
*/
|
||||
void tp_init() {
|
||||
#if MB(RUMBA) && ((TEMP_SENSOR_0==-1)||(TEMP_SENSOR_1==-1)||(TEMP_SENSOR_2==-1)||(TEMP_SENSOR_BED==-1))
|
||||
//disable RUMBA JTAG in case the thermocouple extension is plugged on top of JTAG connector
|
||||
MCUCR=BIT(JTD);
|
||||
|
@ -992,7 +998,7 @@ void tp_init()
|
|||
|
||||
void setWatch() {
|
||||
#ifdef WATCH_TEMP_PERIOD
|
||||
unsigned long ms = millis();
|
||||
millis_t ms = millis();
|
||||
for (int e = 0; e < EXTRUDERS; e++) {
|
||||
if (degHotend(e) < degTargetHotend(e) - (WATCH_TEMP_INCREASE * 2)) {
|
||||
watch_start_temp[e] = degHotend(e);
|
||||
|
@ -1004,7 +1010,7 @@ void setWatch() {
|
|||
|
||||
#if HAS_HEATER_THERMAL_PROTECTION || HAS_BED_THERMAL_PROTECTION
|
||||
|
||||
void thermal_runaway_protection(TRState *state, unsigned long *timer, float temperature, float target_temperature, int heater_id, int period_seconds, int hysteresis_degc) {
|
||||
void thermal_runaway_protection(TRState *state, millis_t *timer, float temperature, float target_temperature, int heater_id, int period_seconds, int hysteresis_degc) {
|
||||
|
||||
static float tr_target_temperature[EXTRUDERS+1] = { 0.0 };
|
||||
|
||||
|
@ -1059,7 +1065,7 @@ void setWatch() {
|
|||
SERIAL_ERRORLNPGM(MSG_THERMAL_RUNAWAY_STOP);
|
||||
if (heater_id < 0) SERIAL_ERRORLNPGM("bed"); else SERIAL_ERRORLN(heater_id);
|
||||
LCD_ALERTMESSAGEPGM(MSG_THERMAL_RUNAWAY);
|
||||
disable_heater();
|
||||
disable_all_heaters();
|
||||
disable_all_steppers();
|
||||
for (;;) {
|
||||
manage_heater();
|
||||
|
@ -1070,7 +1076,7 @@ void setWatch() {
|
|||
|
||||
#endif // HAS_HEATER_THERMAL_PROTECTION || HAS_BED_THERMAL_PROTECTION
|
||||
|
||||
void disable_heater() {
|
||||
void disable_all_heaters() {
|
||||
for (int i=0; i<EXTRUDERS; i++) setTargetHotend(0, i);
|
||||
setTargetBed(0);
|
||||
|
||||
|
@ -1109,16 +1115,18 @@ void disable_heater() {
|
|||
|
||||
#ifdef HEATER_0_USES_MAX6675
|
||||
#define MAX6675_HEAT_INTERVAL 250u
|
||||
unsigned long max6675_previous_millis = MAX6675_HEAT_INTERVAL;
|
||||
static millis_t next_max6675_ms = 0;
|
||||
int max6675_temp = 2000;
|
||||
|
||||
static int read_max6675() {
|
||||
|
||||
unsigned long ms = millis();
|
||||
if (ms < max6675_previous_millis + MAX6675_HEAT_INTERVAL)
|
||||
millis_t ms = millis();
|
||||
|
||||
if (ms < next_max6675_ms)
|
||||
return max6675_temp;
|
||||
|
||||
max6675_previous_millis = ms;
|
||||
next_max6675_ms = ms + MAX6675_HEAT_INTERVAL;
|
||||
|
||||
max6675_temp = 0;
|
||||
|
||||
#ifdef PRR
|
||||
|
@ -1206,11 +1214,15 @@ static void set_current_temp_raw() {
|
|||
temp_meas_ready = true;
|
||||
}
|
||||
|
||||
//
|
||||
// Timer 0 is shared with millies
|
||||
//
|
||||
/**
|
||||
* Timer 0 is shared with millies
|
||||
* - Manage PWM to all the heaters and fan
|
||||
* - Update the raw temperature values
|
||||
* - Check new temperature values for MIN/MAX errors
|
||||
* - Step the babysteps value for each axis towards 0
|
||||
*/
|
||||
ISR(TIMER0_COMPB_vect) {
|
||||
//these variables are only accesible from the ISR, but static, so they don't lose their value
|
||||
|
||||
static unsigned char temp_count = 0;
|
||||
static TempState temp_state = StartupDelay;
|
||||
static unsigned char pwm_count = BIT(SOFT_PWM_SCALE);
|
||||
|
@ -1412,6 +1424,7 @@ ISR(TIMER0_COMPB_vect) {
|
|||
#define START_ADC(pin) ADCSRB = 0; SET_ADMUX_ADCSRA(pin)
|
||||
#endif
|
||||
|
||||
// Prepare or measure a sensor, each one every 12th frame
|
||||
switch(temp_state) {
|
||||
case PrepareTemp_0:
|
||||
#if HAS_TEMP_0
|
||||
|
@ -1580,16 +1593,16 @@ ISR(TIMER0_COMPB_vect) {
|
|||
} // temp_count >= OVERSAMPLENR
|
||||
|
||||
#ifdef BABYSTEPPING
|
||||
for (uint8_t axis=X_AXIS; axis<=Z_AXIS; axis++) {
|
||||
int curTodo=babystepsTodo[axis]; //get rid of volatile for performance
|
||||
for (uint8_t axis = X_AXIS; axis <= Z_AXIS; axis++) {
|
||||
int curTodo = babystepsTodo[axis]; //get rid of volatile for performance
|
||||
|
||||
if (curTodo > 0) {
|
||||
babystep(axis,/*fwd*/true);
|
||||
babystepsTodo[axis]--; //less to do next time
|
||||
babystepsTodo[axis]--; //fewer to do next time
|
||||
}
|
||||
else if(curTodo < 0) {
|
||||
else if (curTodo < 0) {
|
||||
babystep(axis,/*fwd*/false);
|
||||
babystepsTodo[axis]++; //less to do next time
|
||||
babystepsTodo[axis]++; //fewer to do next time
|
||||
}
|
||||
}
|
||||
#endif //BABYSTEPPING
|
||||
|
|
|
@ -129,7 +129,7 @@ HOTEND_ROUTINES(0);
|
|||
#endif
|
||||
|
||||
int getHeaterPower(int heater);
|
||||
void disable_heater();
|
||||
void disable_all_heaters();
|
||||
void setWatch();
|
||||
void updatePID();
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -8,6 +8,7 @@
|
|||
int lcd_strlen_P(const char *s);
|
||||
void lcd_update();
|
||||
void lcd_init();
|
||||
bool lcd_hasstatus();
|
||||
void lcd_setstatus(const char* message, const bool persist=false);
|
||||
void lcd_setstatuspgm(const char* message, const uint8_t level=0);
|
||||
void lcd_setalertstatuspgm(const char* message);
|
||||
|
@ -49,10 +50,11 @@
|
|||
extern bool cancel_heatup;
|
||||
|
||||
#ifdef FILAMENT_LCD_DISPLAY
|
||||
extern unsigned long message_millis;
|
||||
extern millis_t previous_lcd_status_ms;
|
||||
#endif
|
||||
|
||||
void lcd_buzz(long duration,uint16_t freq);
|
||||
void lcd_quick_feedback(); // Audible feedback for a button click - could also be visual
|
||||
bool lcd_clicked();
|
||||
|
||||
void lcd_ignore_click(bool b=true);
|
||||
|
@ -99,6 +101,7 @@
|
|||
#else //no LCD
|
||||
FORCE_INLINE void lcd_update() {}
|
||||
FORCE_INLINE void lcd_init() {}
|
||||
FORCE_INLINE bool lcd_hasstatus() { return false; }
|
||||
FORCE_INLINE void lcd_setstatus(const char* message, const bool persist=false) {}
|
||||
FORCE_INLINE void lcd_setstatuspgm(const char* message, const uint8_t level=0) {}
|
||||
FORCE_INLINE void lcd_buttons_update() {}
|
||||
|
@ -106,8 +109,8 @@
|
|||
FORCE_INLINE void lcd_buzz(long duration,uint16_t freq) {}
|
||||
FORCE_INLINE bool lcd_detected(void) { return true; }
|
||||
|
||||
#define LCD_MESSAGEPGM(x)
|
||||
#define LCD_ALERTMESSAGEPGM(x)
|
||||
#define LCD_MESSAGEPGM(x) do{}while(0)
|
||||
#define LCD_ALERTMESSAGEPGM(x) do{}while(0)
|
||||
|
||||
#endif //ULTRA_LCD
|
||||
|
||||
|
|
|
@ -194,25 +194,13 @@
|
|||
#include "utf_mapper.h"
|
||||
|
||||
#ifdef LCD_PROGRESS_BAR
|
||||
static uint16_t progressBarTick = 0;
|
||||
static millis_t progress_bar_ms = 0;
|
||||
#if PROGRESS_MSG_EXPIRE > 0
|
||||
static uint16_t expireStatusMillis = 0;
|
||||
static millis_t expire_status_ms = 0;
|
||||
#endif
|
||||
#define LCD_STR_PROGRESS "\x03\x04\x05"
|
||||
#endif
|
||||
|
||||
/* Custom characters defined in the first 8 characters of the LCD */
|
||||
#define LCD_STR_BEDTEMP "\x00" // this will have 'unexpected' results when used in a string!
|
||||
#define LCD_STR_DEGREE "\x01"
|
||||
#define LCD_STR_THERMOMETER "\x02"
|
||||
#define LCD_STR_UPLEVEL "\x03"
|
||||
#define LCD_STR_REFRESH "\x04"
|
||||
#define LCD_STR_FOLDER "\x05"
|
||||
#define LCD_STR_FEEDRATE "\x06"
|
||||
#define LCD_STR_CLOCK "\x07"
|
||||
//#define LCD_STR_ARROW_RIGHT "\x7E" /* from the default character set. Only available on DISPLAY_CHARSET_HD44780_JAPAN - at this place!*/
|
||||
#define LCD_STR_ARROW_RIGHT ">" /* from the default character set */
|
||||
|
||||
static void lcd_set_custom_characters(
|
||||
#ifdef LCD_PROGRESS_BAR
|
||||
bool progress_bar_set=true
|
||||
|
@ -562,7 +550,7 @@ static void lcd_implementation_status_screen() {
|
|||
|
||||
lcd.setCursor(0, 2);
|
||||
lcd.print(LCD_STR_FEEDRATE[0]);
|
||||
lcd.print(itostr3(feedmultiply));
|
||||
lcd.print(itostr3(feedrate_multiplier));
|
||||
lcd.print('%');
|
||||
|
||||
#if LCD_WIDTH > 19 && defined(SDSUPPORT)
|
||||
|
@ -579,8 +567,8 @@ static void lcd_implementation_status_screen() {
|
|||
|
||||
lcd.setCursor(LCD_WIDTH - 6, 2);
|
||||
lcd.print(LCD_STR_CLOCK[0]);
|
||||
if (starttime != 0) {
|
||||
uint16_t time = millis()/60000 - starttime/60000;
|
||||
if (print_job_start_ms != 0) {
|
||||
uint16_t time = millis()/60000 - print_job_start_ms/60000;
|
||||
lcd.print(itostr2(time/60));
|
||||
lcd.print(':');
|
||||
lcd.print(itostr2(time%60));
|
||||
|
@ -600,8 +588,9 @@ static void lcd_implementation_status_screen() {
|
|||
#ifdef LCD_PROGRESS_BAR
|
||||
|
||||
if (card.isFileOpen()) {
|
||||
if (millis() >= progressBarTick + PROGRESS_BAR_MSG_TIME || !lcd_status_message[0]) {
|
||||
// draw the progress bar
|
||||
// Draw the progress bar if the message has shown long enough
|
||||
// or if there is no message set.
|
||||
if (millis() >= progress_bar_ms + PROGRESS_BAR_MSG_TIME || !lcd_status_message[0]) {
|
||||
int tix = (int)(card.percentDone() * LCD_WIDTH * 3) / 100,
|
||||
cel = tix / 3, rem = tix % 3, i = LCD_WIDTH;
|
||||
char msg[LCD_WIDTH+1], b = ' ';
|
||||
|
@ -622,7 +611,7 @@ static void lcd_implementation_status_screen() {
|
|||
|
||||
// Show Filament Diameter and Volumetric Multiplier %
|
||||
// After allowing lcd_status_message to show for 5 seconds
|
||||
if (millis() >= message_millis + 5000) {
|
||||
if (millis() >= previous_lcd_status_ms + 5000) {
|
||||
lcd_printPGM(PSTR("Dia "));
|
||||
lcd.print(ftostr12ns(filament_width_meas));
|
||||
lcd_printPGM(PSTR(" V"));
|
||||
|
@ -736,46 +725,45 @@ static void lcd_implementation_drawmenu_sddirectory(bool sel, uint8_t row, const
|
|||
#define lcd_implementation_drawmenu_function(sel, row, pstr, data) lcd_implementation_drawmenu_generic(sel, row, pstr, '>', ' ')
|
||||
|
||||
#ifdef LCD_HAS_STATUS_INDICATORS
|
||||
static void lcd_implementation_update_indicators()
|
||||
{
|
||||
#if defined(LCD_I2C_PANELOLU2) || defined(LCD_I2C_VIKI)
|
||||
//set the LEDS - referred to as backlights by the LiquidTWI2 library
|
||||
static uint8_t ledsprev = 0;
|
||||
uint8_t leds = 0;
|
||||
if (target_temperature_bed > 0) leds |= LED_A;
|
||||
if (target_temperature[0] > 0) leds |= LED_B;
|
||||
if (fanSpeed) leds |= LED_C;
|
||||
#if EXTRUDERS > 1
|
||||
if (target_temperature[1] > 0) leds |= LED_C;
|
||||
|
||||
static void lcd_implementation_update_indicators() {
|
||||
#if defined(LCD_I2C_PANELOLU2) || defined(LCD_I2C_VIKI)
|
||||
//set the LEDS - referred to as backlights by the LiquidTWI2 library
|
||||
static uint8_t ledsprev = 0;
|
||||
uint8_t leds = 0;
|
||||
if (target_temperature_bed > 0) leds |= LED_A;
|
||||
if (target_temperature[0] > 0) leds |= LED_B;
|
||||
if (fanSpeed) leds |= LED_C;
|
||||
#if EXTRUDERS > 1
|
||||
if (target_temperature[1] > 0) leds |= LED_C;
|
||||
#endif
|
||||
if (leds != ledsprev) {
|
||||
lcd.setBacklight(leds);
|
||||
ledsprev = leds;
|
||||
}
|
||||
#endif
|
||||
if (leds != ledsprev) {
|
||||
lcd.setBacklight(leds);
|
||||
ledsprev = leds;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif // LCD_HAS_STATUS_INDICATORS
|
||||
|
||||
#ifdef LCD_HAS_SLOW_BUTTONS
|
||||
extern uint32_t blocking_enc;
|
||||
|
||||
static uint8_t lcd_implementation_read_slow_buttons()
|
||||
{
|
||||
#ifdef LCD_I2C_TYPE_MCP23017
|
||||
uint8_t slow_buttons;
|
||||
// Reading these buttons this is likely to be too slow to call inside interrupt context
|
||||
// so they are called during normal lcd_update
|
||||
slow_buttons = lcd.readButtons() << B_I2C_BTN_OFFSET;
|
||||
#if defined(LCD_I2C_VIKI)
|
||||
if(slow_buttons & (B_MI|B_RI)) { //LCD clicked
|
||||
if(blocking_enc > millis()) {
|
||||
slow_buttons &= ~(B_MI|B_RI); // Disable LCD clicked buttons if screen is updated
|
||||
}
|
||||
}
|
||||
extern millis_t next_button_update_ms;
|
||||
|
||||
static uint8_t lcd_implementation_read_slow_buttons() {
|
||||
#ifdef LCD_I2C_TYPE_MCP23017
|
||||
uint8_t slow_buttons;
|
||||
// Reading these buttons this is likely to be too slow to call inside interrupt context
|
||||
// so they are called during normal lcd_update
|
||||
slow_buttons = lcd.readButtons() << B_I2C_BTN_OFFSET;
|
||||
#ifdef LCD_I2C_VIKI
|
||||
if ((slow_buttons & (B_MI|B_RI)) && millis() < next_button_update_ms) // LCD clicked
|
||||
slow_buttons &= ~(B_MI|B_RI); // Disable LCD clicked buttons if screen is updated
|
||||
#endif
|
||||
return slow_buttons;
|
||||
#endif
|
||||
return slow_buttons;
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif // LCD_HAS_SLOW_BUTTONS
|
||||
|
||||
#endif //__ULTRALCD_IMPLEMENTATION_HITACHI_HD44780_H
|
||||
|
|
|
@ -16,8 +16,8 @@
|
|||
//#define PAGE_HEIGHT 16 //256 byte framebuffer
|
||||
#define PAGE_HEIGHT 32 //512 byte framebuffer
|
||||
|
||||
#define WIDTH 128
|
||||
#define HEIGHT 64
|
||||
#define LCD_PIXEL_WIDTH 128
|
||||
#define LCD_PIXEL_HEIGHT 64
|
||||
|
||||
#include <U8glib.h>
|
||||
|
||||
|
@ -64,12 +64,12 @@ uint8_t u8g_dev_rrd_st7920_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, vo
|
|||
ST7920_WRITE_BYTE(0x01); //clear CGRAM ram
|
||||
u8g_Delay(15); //delay for CGRAM clear
|
||||
ST7920_WRITE_BYTE(0x3E); //extended mode + GDRAM active
|
||||
for(y=0;y<HEIGHT/2;y++) //clear GDRAM
|
||||
for(y=0;y<LCD_PIXEL_HEIGHT/2;y++) //clear GDRAM
|
||||
{
|
||||
ST7920_WRITE_BYTE(0x80|y); //set y
|
||||
ST7920_WRITE_BYTE(0x80); //set x = 0
|
||||
ST7920_SET_DAT();
|
||||
for(i=0;i<2*WIDTH/8;i++) //2x width clears both segments
|
||||
for(i=0;i<2*LCD_PIXEL_WIDTH/8;i++) //2x width clears both segments
|
||||
ST7920_WRITE_BYTE(0);
|
||||
ST7920_SET_CMD();
|
||||
}
|
||||
|
@ -103,7 +103,7 @@ uint8_t u8g_dev_rrd_st7920_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, vo
|
|||
}
|
||||
|
||||
ST7920_SET_DAT();
|
||||
ST7920_WRITE_BYTES(ptr,WIDTH/8); //ptr is incremented inside of macro
|
||||
ST7920_WRITE_BYTES(ptr,LCD_PIXEL_WIDTH/8); //ptr is incremented inside of macro
|
||||
y++;
|
||||
}
|
||||
ST7920_NCS();
|
||||
|
@ -119,8 +119,8 @@ uint8_t u8g_dev_rrd_st7920_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, vo
|
|||
#endif
|
||||
}
|
||||
|
||||
uint8_t u8g_dev_st7920_128x64_rrd_buf[WIDTH*(PAGE_HEIGHT/8)] U8G_NOCOMMON;
|
||||
u8g_pb_t u8g_dev_st7920_128x64_rrd_pb = {{PAGE_HEIGHT,HEIGHT,0,0,0},WIDTH,u8g_dev_st7920_128x64_rrd_buf};
|
||||
uint8_t u8g_dev_st7920_128x64_rrd_buf[LCD_PIXEL_WIDTH*(PAGE_HEIGHT/8)] U8G_NOCOMMON;
|
||||
u8g_pb_t u8g_dev_st7920_128x64_rrd_pb = {{PAGE_HEIGHT,LCD_PIXEL_HEIGHT,0,0,0},LCD_PIXEL_WIDTH,u8g_dev_st7920_128x64_rrd_buf};
|
||||
u8g_dev_t u8g_dev_st7920_128x64_rrd_sw_spi = {u8g_dev_rrd_st7920_128x64_fn,&u8g_dev_st7920_128x64_rrd_pb,&u8g_com_null_fn};
|
||||
|
||||
class U8GLIB_ST7920_128X64_RRD : public U8GLIB
|
||||
|
|
|
@ -7,11 +7,11 @@
|
|||
#include "ultralcd.h"
|
||||
|
||||
//===========================================================================
|
||||
//=============================private variables ============================
|
||||
//============================ private variables ============================
|
||||
//===========================================================================
|
||||
|
||||
//===========================================================================
|
||||
//=============================functinos ============================
|
||||
//================================ functions ================================
|
||||
//===========================================================================
|
||||
|
||||
|
||||
|
@ -36,7 +36,7 @@ void watchdog_reset()
|
|||
}
|
||||
|
||||
//===========================================================================
|
||||
//=============================ISR ============================
|
||||
//=================================== ISR ===================================
|
||||
//===========================================================================
|
||||
|
||||
//Watchdog timer interrupt, called if main program blocks >1sec and manual reset is enabled.
|
||||
|
|
14
README.md
14
README.md
|
@ -24,14 +24,13 @@ This firmware is a mashup between [Sprinter](https://github.com/kliment/Sprinter
|
|||
## Current Status: Bug Fixing
|
||||
|
||||
The Marlin development is currently revived. There's a long list of reported issues and pull requests, which we are working on currently.
|
||||
We are actively looking for testers. So please try the current development version and report new issues and feedback.
|
||||
|
||||
[![Coverity Scan Build Status](https://scan.coverity.com/projects/2224/badge.svg)](https://scan.coverity.com/projects/2224)
|
||||
[![Travis Build Status](https://travis-ci.org/MarlinFirmware/Marlin.svg)](https://travis-ci.org/MarlinFirmware/Marlin)
|
||||
|
||||
## Contact
|
||||
|
||||
__Google Hangout:__ <a href="https://plus.google.com/hangouts/_/g2wp5duzb2y6ahikg6tmwao3kua" target="_blank">Hangout</a>
|
||||
__Google Hangout:__ <a href="https://plus.google.com/hangouts/_/gxn3wrea5gdhoo223yimsiforia" target="_blank">Hangout</a>
|
||||
|
||||
## Credits
|
||||
|
||||
|
@ -40,10 +39,9 @@ The current Marlin dev team consists of:
|
|||
- Scott Lahteine [@thinkyhead]
|
||||
-
|
||||
|
||||
Sprinters lead developers are Kliment and caru.
|
||||
Grbl's lead developer is Simen Svale Skogsrud.
|
||||
Sonney Jeon (Chamnit) improved some parts of grbl.
|
||||
A fork by bkubicek for the Ultimaker was merged.
|
||||
## Donation
|
||||
|
||||
If you find our work usefull please consider donating. Donations will be used to pay for our website http://www.marlinfirmware.org/ and to pay some food or rent money for the very active Collaborators
|
||||
|
||||
More features have been added by:
|
||||
- Lampmaker,
|
||||
|
@ -52,7 +50,7 @@ More features have been added by:
|
|||
|
||||
## License
|
||||
|
||||
Marlin is published under the [GPL license](/Documentation/COPYING.md) because I believe in open development.
|
||||
Please do not use this code in products (3D printers, CNC etc) that are closed source or are crippled by a patent.
|
||||
Marlin is published under the [GPL license](/Documentation/COPYING.md) because We believe in open development.
|
||||
Do not use this code in products (3D printers, CNC etc) that are closed source or are crippled by a patent.
|
||||
|
||||
[![Flattr this git repo](http://api.flattr.com/button/flattr-badge-large.png)](https://flattr.com/submit/auto?user_id=ErikZalm&url=https://github.com/MarlinFirmware/Marlin&title=Marlin&language=&tags=github&category=software)
|
||||
|
|
Loading…
Reference in a new issue