+ ### G28 - Home all Axes one at a time <a href="https://reprap.org/wiki/G-code#G28:_Move_to_Origin_.28Home.29">G28: Move to Origin (Home)</a>
+ Using `G28` without any parameters will perfom homing of all axes AND mesh bed leveling, while `G28 W` will just home all axes (no mesh bed leveling).
+ #### Usage
+
+ G28 [ X | Y | Z | W | C ]
+
+ #### Parameters
+ - `X` - Flag to go back to the X axis origin
+ - `Y` - Flag to go back to the Y axis origin
+ - `Z` - Flag to go back to the Z axis origin
+ - `W` - Suppress mesh bed leveling if `X`, `Y` or `Z` are not provided
+ - `C` - Calibrate X and Y origin (home) - Only on MK3/s
- * WARNING! USE WITH CAUTION! If you'll try to probe where is no leveling pad, nasty things can happen!
- *
-*/
+ /*!
+ ### G82: Single Z probe at current location - Not active <a href="https://reprap.org/wiki/G-code#G82:_Single_Z_probe_at_current_location">G82: Single Z probe at current location</a>
+
+ WARNING! USE WITH CAUTION! If you'll try to probe where is no leveling pad, nasty things can happen!
+ In Prusa Firmware this G-code is deactivated by default, must be turned on in the source code.
- * G83: Prusa3D specific: Babystep in Z and store to EEPROM
- */
+ /*!
+ ### G83: Babystep in Z and store to EEPROM - Not active <a href="https://reprap.org/wiki/G-code#G83:_Babystep_in_Z_and_store_to_EEPROM">G83: Babystep in Z and store to EEPROM</a>
+ In Prusa Firmware this G-code is deactivated by default, must be turned on in the source code.
+ */
case 83:
case 83:
{
{
int babystepz = code_seen('S') ? code_value() : 0;
int babystepz = code_seen('S') ? code_value() : 0;
- * G84: Prusa3D specific: UNDO Babystep Z (move Z axis back)
- */
+ /*!
+ ### G84: UNDO Babystep Z (move Z axis back) - Not active <a href="https://reprap.org/wiki/G-code#G84:_UNDO_Babystep_Z_.28move_Z_axis_back.29">G84: UNDO Babystep Z (move Z axis back)</a>
+ In Prusa Firmware this G-code is deactivated by default, must be turned on in the source code.
+ */
case 84:
case 84:
babystepsTodoZsubtract(babystepLoadZ);
babystepsTodoZsubtract(babystepLoadZ);
// babystepLoadZ = 0;
// babystepLoadZ = 0;
break;
break;
- /*
- * G85: Prusa3D specific: Pick best babystep
- */
+ /*!
+ ### G85: Pick best babystep - Not active <a href="https://reprap.org/wiki/G-code#G85:_Pick_best_babystep">G85: Pick best babystep</a>
+ In Prusa Firmware this G-code is deactivated by default, must be turned on in the source code.
+ */
case 85:
case 85:
lcd_pick_babystep();
lcd_pick_babystep();
break;
break;
#endif
#endif
- /**
- * ### G86 - Disable babystep correction after home
- *
- * This G-code will be performed at the start of a calibration script.
- * (Prusa3D specific)
- */
+ /*!
+ ### G86 - Disable babystep correction after home <a href="https://reprap.org/wiki/G-code#G86:_Disable_babystep_correction_after_home">G86: Disable babystep correction after home</a>
+
+ This G-code will be performed at the start of a calibration script.
+ ### G91 - Switch on relative mode <a href="https://reprap.org/wiki/G-code#G91:_Set_to_Relative_Positioning">G91: Set to Relative Positioning</a>
+ All coordinates from now on are relative to the last position. E axis is also switched to relative mode.
+ */
+ case 91: {
+ for(uint8_t i = 0; i != NUM_AXIS; ++i)
+ axis_relative_modes[i] = true;
+ }
+ break;
+ /*!
+ ### G92 - Set position <a href="https://reprap.org/wiki/G-code#G92:_Set_Position">G92: Set Position</a>
+
+ It is used for setting the current position of each axis. The parameters are always absolute to the origin.
+ If a parameter is omitted, that axis will not be affected.
+ If `X`, `Y`, or `Z` axis are specified, the move afterwards might stutter because of Mesh Bed Leveling. `E` axis is not affected if the target position is 0 (`G92 E0`).
+ A G92 without coordinates will reset all axes to zero on some firmware. This is not the case for Prusa-Firmware!
+ ### M31 - Report current print time <a href="https://reprap.org/wiki/G-code#M31:_Output_time_since_last_M109_or_SD_card_start_to_serial">M31: Output time since last M109 or SD card start to serial</a>
+ */
case 31: //M31 take time since the start of the SD print or an M109 command
case 31: //M31 take time since the start of the SD print or an M109 command
- case 44: // M44: Prusa3D: Reset the bed skew and offset calibration.
+ /*!
+ ### M44 - Reset the bed skew and offset calibration <a href="https://reprap.org/wiki/G-code#M44:_Reset_the_bed_skew_and_offset_calibration">M44: Reset the bed skew and offset calibration</a>
+ */
+ case 44: // M44: Prusa3D: Reset the bed skew and offset calibration.
// Reset the baby step value and the baby step applied flag.
// Reset the baby step value and the baby step applied flag.
+ ### M45 - Bed skew and offset with manual Z up <a href="https://reprap.org/wiki/G-code#M45:_Bed_skew_and_offset_with_manual_Z_up">M45: Bed skew and offset with manual Z up</a>
+ #### Usage
+
+ M45 [ V ]
+ #### Parameters
+ - `V` - Verbosity level 1, 10 and 20 (low, mid, high). Only when SUPPORT_VERBOSITY is defined. Optional.
+ - `Z` - If it is provided, only Z calibration will run. Otherwise full calibration is executed.
+ */
case 45: // M45: Prusa3D: bed skew and offset with manual Z up
case 45: // M45: Prusa3D: bed skew and offset with manual Z up
+ ### M46 - Show the assigned IP address <a href="https://reprap.org/wiki/G-code#M46:_Show_the_assigned_IP_address">M46: Show the assigned IP address.</a>
+ ### M47 - Show end stops dialog on the display <a href="https://reprap.org/wiki/G-code#M47:_Show_end_stops_dialog_on_the_display">M47: Show end stops dialog on the display</a>
+ This function assumes the bed has been homed. Specifically, that a G28 command as been issued prior to invoking the M48 Z-Probe repeatability measurement function. Any information generated by a prior G29 Bed leveling command will be lost and needs to be regenerated.
+
+ The number of samples will default to 10 if not specified. You can use upper or lower case letters for any of the options EXCEPT n. n must be in lower case because Marlin uses a capital N for its communication protocol and will get horribly confused if you send it a capital N.
+ @todo Why would you check for both uppercase and lowercase? Seems wasteful.
+
+ #### Usage
+
+ M48 [ n | X | Y | V | L ]
+
+ #### Parameters
+ - `n` - Number of samples. Valid values 4-50
+ - `X` - X position for samples
+ - `Y` - Y position for samples
+ - `V` - Verbose level. Valid values 1-4
+ - `L` - Legs of movementprior to doing probe. Valid values 1-15
+ ### M109 - Wait for extruder temperature <a href="https://reprap.org/wiki/G-code#M109:_Set_Extruder_Temperature_and_Wait">M109: Set Extruder Temperature and Wait</a>
+ #### Usage
+
+ M104 [ B | R | S ]
+
+ #### Parameters (not mandatory)
+
+ - `S` - Set extruder temperature
+ - `R` - Set extruder temperature
+ - `B` - Set max. extruder temperature, while `S` is min. temperature. Not active in default, only if AUTOTEMP is defined in source code.
+
+ Parameters S and R are treated identically.
+ Command always waits for both cool down and heat up.
+ If no parameters are supplied waits for previously set extruder temperature.
+ */
case 109:
case 109:
{
{
uint8_t extruder;
uint8_t extruder;
@@ -6065,12 +6405,19 @@ Sigma_Exit:
}
}
break;
break;
- //! ### M190 - Wait for bed temperature
- //! Parameters (not mandatory):
- //! * S \<temp\> set extruder temperature and wait for heating
- //! * R \<temp\> set extruder temperature and wait for heating or cooling
- //!
- //! If no parameter is supplied, waits for heating or cooling to previously set temperature.
+ /*!
+ ### M190 - Wait for bed temperature <a href="https://reprap.org/wiki/G-code#M190:_Wait_for_bed_temperature_to_reach_target_temp">M190: Wait for bed temperature to reach target temp</a>
+ #### Usage
+
+ M190 [ R | S ]
+
+ #### Parameters (not mandatory)
+
+ - `S` - Set extruder temperature and wait for heating
+ - `R` - Set extruder temperature and wait for heating or cooling
+
+ If no parameter is supplied, waits for heating or cooling to previously set temperature.
+ */
case 190:
case 190:
#if defined(TEMP_BED_PIN) && TEMP_BED_PIN > -1
#if defined(TEMP_BED_PIN) && TEMP_BED_PIN > -1
{
{
@@ -6125,8 +6472,15 @@ Sigma_Exit:
#if defined(FAN_PIN) && FAN_PIN > -1
#if defined(FAN_PIN) && FAN_PIN > -1
- //! ### M106 - Set fan speed
- // -------------------------------------------
+ /*!
+ ### M106 - Set fan speed <a href="https://reprap.org/wiki/G-code#M106:_Fan_On">M106: Fan On</a>
+ #### Usage
+
+ M106 [ S ]
+
+ #### Parameters
+ - `S` - Specifies the duty cycle of the print fan. Allowed values are 0-255. If it's omitted, a value of 255 is used.
+ */
case 106: // M106 Sxxx Fan On S<speed> 0 .. 255
case 106: // M106 Sxxx Fan On S<speed> 0 .. 255
if (code_seen('S')){
if (code_seen('S')){
fanSpeed=constrain(code_value(),0,255);
fanSpeed=constrain(code_value(),0,255);
@@ -6136,8 +6490,9 @@ Sigma_Exit:
}
}
break;
break;
- //! ### M107 - Fan off
- // -------------------------------
+ /*!
+ ### M107 - Fan off <a href="https://reprap.org/wiki/G-code#M107:_Fan_Off">M107: Fan Off</a>
+ */
case 107:
case 107:
fanSpeed = 0;
fanSpeed = 0;
break;
break;
@@ -6145,8 +6500,10 @@ Sigma_Exit:
#if defined(PS_ON_PIN) && PS_ON_PIN > -1
#if defined(PS_ON_PIN) && PS_ON_PIN > -1
- //! ### M80 - Turn on the Power Supply
- // -------------------------------
+ /*!
+ ### M80 - Turn on the Power Supply <a href="https://reprap.org/wiki/G-code#M80:_ATX_Power_On">M80: ATX Power On</a>
+ Only works if the firmware is compiled with PS_ON_PIN defined.
+ */
case 80:
case 80:
SET_OUTPUT(PS_ON_PIN); //GND
SET_OUTPUT(PS_ON_PIN); //GND
WRITE(PS_ON_PIN, PS_ON_AWAKE);
WRITE(PS_ON_PIN, PS_ON_AWAKE);
@@ -6163,10 +6520,11 @@ Sigma_Exit:
LCD_MESSAGERPGM(_T(WELCOME_MSG));
LCD_MESSAGERPGM(_T(WELCOME_MSG));
lcd_update(0);
lcd_update(0);
break;
break;
- #endif
- //! ### M81 - Turn off Power Supply
- // --------------------------------------
+ /*!
+ ### M81 - Turn off Power Supply <a href="https://reprap.org/wiki/G-code#M81:_ATX_Power_Off">M81: ATX Power Off</a>
+ Only works if the firmware is compiled with PS_ON_PIN defined.
+ ### M82 - Set E axis to absolute mode <a href="https://reprap.org/wiki/G-code#M82:_Set_extruder_to_absolute_mode">M82: Set extruder to absolute mode</a>
+ Makes the extruder interpret extrusion as absolute positions.
+ */
case 82:
case 82:
- axis_relative_modes[3] = false;
+ axis_relative_modes[E_AXIS] = false;
break;
break;
- //! ### M83 - Set E axis to relative mode
- // ---------------------------------------
+ /*!
+ ### M83 - Set E axis to relative mode <a href="https://reprap.org/wiki/G-code#M83:_Set_extruder_to_relative_mode">M83: Set extruder to relative mode</a>
+ Makes the extruder interpret extrusion values as relative positions.
+ */
case 83:
case 83:
- axis_relative_modes[3] = true;
+ axis_relative_modes[E_AXIS] = true;
break;
break;
- //! ### M84, M18 - Disable steppers
- //---------------------------------------
- //! This command can be used to set the stepper inactivity timeout (`S`) or to disable steppers (`X`,`Y`,`Z`,`E`)
+ ### M85 - Set max inactive time <a href="https://reprap.org/wiki/G-code#M85:_Set_Inactivity_Shutdown_Timer">M85: Set Inactivity Shutdown Timer</a>
+ #### Usage
+
+ M85 [ S ]
+
+ #### Parameters
+ - `S` - specifies the time in seconds. If a value of 0 is specified, the timer is disabled.
+ */
case 85: // M85
case 85: // M85
if(code_seen('S')) {
if(code_seen('S')) {
max_inactive_time = code_value() * 1000;
max_inactive_time = code_value() * 1000;
@@ -6251,13 +6633,16 @@ Sigma_Exit:
break;
break;
#ifdef SAFETYTIMER
#ifdef SAFETYTIMER
- //! ### M86 - Set safety timer expiration time
- //!
- //! _Usage:_
- //! M86 S<seconds>
- //!
- //! Sets the safety timer expiration time in seconds. M86 S0 will disable safety timer.
- //! When safety timer expires, heatbed and nozzle target temperatures are set to zero.
+ /*!
+ ### M86 - Set safety timer expiration time <a href="https://reprap.org/wiki/G-code#M86:_Set_Safety_Timer_expiration_time">M86: Set Safety Timer expiration time</a>
+ When safety timer expires, heatbed and nozzle target temperatures are set to zero.
+ #### Usage
+
+ M86 [ S ]
+
+ #### Parameters
+ - `S` - specifies the time in seconds. If a value of 0 is specified, the timer is disabled.
+ */
case 86:
case 86:
if (code_seen('S')) {
if (code_seen('S')) {
safetytimer_inactive_time = code_value() * 1000;
safetytimer_inactive_time = code_value() * 1000;
@@ -6266,9 +6651,19 @@ Sigma_Exit:
break;
break;
#endif
#endif
- //! ### M92 Set Axis steps-per-unit
- // ---------------------------------------
- //! Same syntax as G92
+ /*!
+ ### M92 Set Axis steps-per-unit <a href="https://reprap.org/wiki/G-code#M92:_Set_axis_steps_per_unit">M92: Set axis_steps_per_unit</a>
+ Allows programming of steps per unit (usually mm) for motor drives. These values are reset to firmware defaults on power on, unless saved to EEPROM if available (M500 in Marlin)
+ #### Usage
+
+ M92 [ X | Y | Z | E ]
+
+ #### Parameters
+ - `X` - Steps per unit for the X drive
+ - `Y` - Steps per unit for the Y drive
+ - `Z` - Steps per unit for the Z drive
+ - `E` - Steps per unit for the extruder drive
+ */
case 92:
case 92:
for(int8_t i=0; i < NUM_AXIS; i++)
for(int8_t i=0; i < NUM_AXIS; i++)
{
{
@@ -6291,15 +6686,31 @@ Sigma_Exit:
}
}
break;
break;
- //! ### M110 - Set Line number
- // ---------------------------------------
+ /*!
+ ### M110 - Set Line number <a href="https://reprap.org/wiki/G-code#M110:_Set_Current_Line_Number">M110: Set Current Line Number</a>
+ Sets the line number in G-code
+ #### Usage
+
+ M110 [ N ]
+
+ #### Parameters
+ - `N` - Line number
+ */
case 110:
case 110:
if (code_seen('N'))
if (code_seen('N'))
gcode_LastN = code_value_long();
gcode_LastN = code_value_long();
break;
break;
- //! ### M113 - Get or set host keep-alive interval
- // ------------------------------------------
+ /*!
+ ### M113 - Get or set host keep-alive interval <a href="https://reprap.org/wiki/G-code#M113:_Host_Keepalive">M113: Host Keepalive</a>
+ During some lengthy processes, such as G29, Marlin may appear to the host to have “gone away.” The “host keepalive” feature will send messages to the host when Marlin is busy or waiting for user response so the host won’t try to reconnect (or disconnect).
+ #### Usage
+
+ M113 [ S ]
+
+ #### Parameters
+ - `S` - Seconds. Default is 2 seconds between "busy" messages
- //! Without any arguments, prints Prusa firmware version number, machine type, extruder count and UUID.
- //! `M115 U` Checks the firmware version provided. If the firmware version provided by the U code is higher than the currently running firmware,
- //! pause the print for 30s and ask the user to upgrade the firmware.
- case 115: // M115
+ /*!
+ ### M115 - Firmware info <a href="https://reprap.org/wiki/G-code#M115:_Get_Firmware_Version_and_Capabilities">M115: Get Firmware Version and Capabilities</a>
+ Print the firmware info and capabilities
+ Without any arguments, prints Prusa firmware version number, machine type, extruder count and UUID.
+ `M115 U` Checks the firmware version provided. If the firmware version provided by the U code is higher than the currently running firmware, it will pause the print for 30s and ask the user to upgrade the firmware.
+
+ _Examples:_
+
+ `M115` results:
+
+ `FIRMWARE_NAME:Prusa-Firmware 3.8.1 based on Marlin FIRMWARE_URL:https://github.com/prusa3d/Prusa-Firmware PROTOCOL_VERSION:1.0 MACHINE_TYPE:Prusa i3 MK3S EXTRUDER_COUNT:1 UUID:00000000-0000-0000-0000-000000000000`
+
+ `M115 V` results:
+
+ `3.8.1`
+
+ `M115 U3.8.2-RC1` results on LCD display for 30s or user interaction:
+
+ `New firmware version available: 3.8.2-RC1 Please upgrade.`
+ #### Usage
+
+ M115 [ V | U ]
+
+ #### Parameters
+ - V - Report current installed firmware version
+ - U - Firmware version provided by G-code to be compared to current one.
+ */
+ case 115: // M115
if (code_seen('V')) {
if (code_seen('V')) {
// Report the Prusa version number.
// Report the Prusa version number.
SERIAL_PROTOCOLLNRPGM(FW_VERSION_STR_P());
SERIAL_PROTOCOLLNRPGM(FW_VERSION_STR_P());
@@ -6343,16 +6772,13 @@ Sigma_Exit:
}
}
break;
break;
- //! ### M114 - Get current position
- // -------------------------------------
+ /*!
+ ### M114 - Get current position <a href="https://reprap.org/wiki/G-code#M114:_Get_Current_Position">M114: Get Current Position</a>
+ ### M119 - Get endstop states <a href="https://reprap.org/wiki/G-code#M119:_Get_Endstop_Status">M119: Get Endstop Status</a>
+ Returns the current state of the configured X, Y, Z endstops. Takes into account any 'inverted endstop' settings, so one can confirm that the machine is interpreting the endstops correctly.
+ ### M201 - Set Print Max Acceleration <a href="https://reprap.org/wiki/G-code#M201:_Set_max_printing_acceleration">M201: Set max printing acceleration</a>
+ For each axis individually.
+ */
case 201:
case 201:
for (int8_t i = 0; i < NUM_AXIS; i++)
for (int8_t i = 0; i < NUM_AXIS; i++)
{
{
@@ -6533,8 +6983,10 @@ Sigma_Exit:
break;
break;
#endif
#endif
- //! ### M203 - Set Max Feedrate
- // ---------------------------------------
+ /*!
+ ### M203 - Set Max Feedrate <a href="https://reprap.org/wiki/G-code#M203:_Set_maximum_feedrate">M203: Set maximum feedrate</a>
+ For each axis individually.
+ */
case 203: // M203 max feedrate mm/sec
case 203: // M203 max feedrate mm/sec
for (int8_t i = 0; i < NUM_AXIS; i++)
for (int8_t i = 0; i < NUM_AXIS; i++)
{
{
@@ -6559,15 +7011,28 @@ Sigma_Exit:
}
}
break;
break;
- //! ### M204 - Acceleration settings
- // ------------------------------------------
- //! Supporting old format:
- //!
- //! M204 S[normal moves] T[filmanent only moves]
- //!
- //! and new format:
- //!
- //! M204 P[printing moves] R[filmanent only moves] T[travel moves] (as of now T is ignored)
+ This boolean value S 1=true or 0=false enables automatic retract detect if the slicer did not support G10/G11: every normal extrude-only move will be classified as retract depending on the direction.
+ #### Usage
+
+ M209 [ S ]
+
+ #### Parameters
+ - `S` - 1=true or 0=false
+ */
case 209: // 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.
case 209: // 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.
{
{
if(code_seen('S'))
if(code_seen('S'))
@@ -6703,8 +7209,17 @@ Sigma_Exit:
#endif // FWRETRACT
#endif // FWRETRACT
#if EXTRUDERS > 1
#if EXTRUDERS > 1
- // ### M218 - Set hotend offset
- // ----------------------------------------
+ /*!
+ ### M218 - Set hotend offset <a href="https://reprap.org/wiki/G-code#M218:_Set_Hotend_Offset">M218: Set Hotend Offset</a>
+ In Prusa Firmware this G-code is only active if `EXTRUDERS` is higher then 1 in the source code. On Original i3 Prusa MK2/s MK2.5/s MK3/s it is not active.
+ #### Usage
+
+ M218 [ X | Y ]
+
+ #### Parameters
+ - `X` - X offset
+ - `Y` - Y offset
+ */
case 218: // M218 - set hotend offset (in mm), T<extruder_number> X<offset_on_X> Y<offset_on_Y>
case 218: // M218 - set hotend offset (in mm), T<extruder_number> X<offset_on_X> Y<offset_on_Y>
+ ### M302 - Allow cold extrude, or set minimum extrude temperature <a href="https://reprap.org/wiki/G-code#M302:_Allow_cold_extrudes">M302: Allow cold extrudes</a>
+ This tells the printer to allow movement of the extruder motor above a certain temperature, or if disabled, to allow extruder movement when the hotend is below a safe printing temperature.
+ PID Tuning refers to a control algorithm used in some repraps to tune heating behavior for hot ends and heated beds. This command generates Proportional (Kp), Integral (Ki), and Derivative (Kd) values for the hotend or bed. Send the appropriate code and wait for the output to update the firmware values.
+ #### Usage
+
+ M303 [ E | S | C ]
+
+ #### Parameters
+ - `E` - Extruder, default `E0`. Use `E-1` to calibrate the bed PID
+ - `S` - Target temperature, default `210°C` for hotend, 70 for bed
+ - `C` - Cycles, default `5`
+ */
case 303:
case 303:
{
{
float temp = 150.0;
float temp = 150.0;
@@ -7007,17 +7612,30 @@ Sigma_Exit:
}
}
break;
break;
- //! ### M400 - Wait for all moves to finish
- // -----------------------------------------
+ /*!
+ ### M400 - Wait for all moves to finish <a href="https://reprap.org/wiki/G-code#M400:_Wait_for_current_moves_to_finish">M400: Wait for current moves to finish</a>
+ Finishes all current moves and and thus clears the buffer.
+ Equivalent to `G4` with no parameters.
+ */
case 400:
case 400:
{
{
st_synchronize();
st_synchronize();
}
}
break;
break;
- //! ### M403 - Set filament type (material) for particular extruder and notify the MMU
+ ### M403 - Set filament type (material) for particular extruder and notify the MMU <a href="https://reprap.org/wiki/G-code#M403:_Set_filament_type_.28material.29_for_particular_extruder_and_notify_the_MMU.">M403 - Set filament type (material) for particular extruder and notify the MMU</a>
+ Currently three different materials are needed (default, flex and PVA).
+ And storing this information for different load/unload profiles etc. in the future firmware does not have to wait for "ok" from MMU.
+ #### Usage
+
+ M403 [ E | F ]
+
+ #### Parameters
+ - `E` - Extruder number. 0-indexed.
+ - `F` - Filament type
+ */
+ case 403:
{
{
// currently three different materials are needed (default, flex and PVA)
// currently three different materials are needed (default, flex and PVA)
// add storing this information for different load/unload profiles etc. in the future
// add storing this information for different load/unload profiles etc. in the future
@@ -7033,40 +7651,51 @@ Sigma_Exit:
}
}
break;
break;
- //! ### M500 - Store settings in EEPROM
- // -----------------------------------------
+ /*!
+ ### M500 - Store settings in EEPROM <a href="https://reprap.org/wiki/G-code#M500:_Store_parameters_in_non-volatile_storage">M500: Store parameters in non-volatile storage</a>
+ Save current parameters to EEPROM.
+ */
case 500:
case 500:
{
{
Config_StoreSettings();
Config_StoreSettings();
}
}
break;
break;
- //! ### M501 - Read settings from EEPROM
- // ----------------------------------------
+ /*!
+ ### M501 - Read settings from EEPROM <a href="https://reprap.org/wiki/G-code#M501:_Read_parameters_from_EEPROM">M501: Read parameters from EEPROM</a>
+ Set the active parameters to those stored in the EEPROM. This is useful to revert parameters after experimenting with them.
+ */
case 501:
case 501:
{
{
Config_RetrieveSettings();
Config_RetrieveSettings();
}
}
break;
break;
- //! ### M502 - Revert all settings to factory default
+ ### M502 - Revert all settings to factory default <a href="https://reprap.org/wiki/G-code#M502:_Restore_Default_Settings">M502: Restore Default Settings</a>
+ This command resets all tunable parameters to their default values, as set in the firmware's configuration files. This doesn't reset any parameters stored in the EEPROM, so it must be followed by M500 to write the default settings.
+ */
case 502:
case 502:
{
{
Config_ResetDefault();
Config_ResetDefault();
}
}
break;
break;
- //! ### M503 - Repport all settings currently in memory
+ ### M503 - Repport all settings currently in memory <a href="https://reprap.org/wiki/G-code#M503:_Report_Current_Settings">M503: Report Current Settings</a>
+ This command asks the firmware to reply with the current print settings as set in memory. Settings will differ from EEPROM contents if changed since the last load / save. The reply output includes the G-Code commands to produce each setting. For example, Steps-Per-Unit values are displayed as an M92 command.
+ ### M540 - Abort print on endstop hit (enable/disable) <a href="https://reprap.org/wiki/G-code#M540_in_Marlin:_Enable.2FDisable_.22Stop_SD_Print_on_Endstop_Hit.22">M540 in Marlin: Enable/Disable "Stop SD Print on Endstop Hit"</a>
+ In Prusa Firmware this G-code is deactivated by default, must be turned on in the source code. You must define `ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED`.
+ ### M851 - Set Z-Probe Offset <a href="https://reprap.org/wiki/G-code#M851:_Set_Z-Probe_Offset">M851: Set Z-Probe Offset"</a>
+ Sets the Z-probe Z offset. This offset is used to determine the actual Z position of the nozzle when using a probe to home Z with G28. This value may also be used by G81 (Prusa) / G29 (Marlin) to apply correction to the Z position.
+ This value represents the distance from nozzle to the bed surface at the point where the probe is triggered. This value will be negative for typical switch probes, inductive probes, and setups where the nozzle makes a circuit with a raised metal contact. This setting will be greater than zero on machines where the nozzle itself is used as the probe, pressing down on the bed to press a switch. (This is a common setup on delta machines.)
- Wait for PINDA thermistor to reach target temperature
-
- M860 [S<target_temperature>]
-
- */
+ /*!
+ ### M860 - Wait for extruder temperature (PINDA) <a href="https://reprap.org/wiki/G-code#M860_Wait_for_Probe_Temperature">M860 Wait for Probe Temperature</a>
+ Wait for PINDA thermistor to reach target temperature
+ #### Usage
+
+ M860 [ S ]
+
+ #### Parameters
+ - `S` - Target temperature
+ */
case 860:
case 860:
{
{
int set_target_pinda = 0;
int set_target_pinda = 0;
@@ -7275,17 +7954,20 @@ Sigma_Exit:
break;
break;
}
}
- //! ### M861 - Set/Get PINDA temperature compensation offsets
+ ### M900 - Set Linear advance options <a href="https://reprap.org/wiki/G-code#M900_Set_Linear_Advance_Scaling_Factors">M900 Set Linear Advance Scaling Factors</a>
+ Sets the advance extrusion factors for Linear Advance. If any of the R, W, H, or D parameters are set to zero the ratio will be computed dynamically during printing.
+ #### Usage
+
+ M900 [ K | R | W | H | D]
+
+ #### Parameters
+ - `K` - Advance K factor
+ - `R` - Set ratio directly (overrides WH/D)
+ - `W` - Width
+ - `H` - Height
+ - `D` - Diameter Set ratio from WH/D
+ */
case 900:
case 900:
gcode_M900();
gcode_M900();
break;
break;
#endif
#endif
- //! ### M907 - Set digital trimpot motor current in mA using axis codes
+ ### M907 - Set digital trimpot motor current in mA using axis codes <a href="https://reprap.org/wiki/G-code#M907:_Set_digital_trimpot_motor">M907: Set digital trimpot motor</a>
+ Set digital trimpot motor current using axis codes (X, Y, Z, E, B, S).
+ #### Usage
+
+ M907 [ X | Y | Z | E | B | S ]
+
+ #### Parameters
+ - `X` - X motor driver
+ - `Y` - Y motor driver
+ - `Z` - Z motor driver
+ - `E` - Extruder motor driver
+ - `B` - Second Extruder motor driver
+ - `S` - All motors
+ */
case 907:
case 907:
{
{
#ifdef TMC2130
#ifdef TMC2130
- //! See tmc2130_cur2val() for translation to 0 .. 63 range
+ // See tmc2130_cur2val() for translation to 0 .. 63 range
+ ### M908 - Control digital trimpot directly <a href="https://reprap.org/wiki/G-code#M908:_Control_digital_trimpot_directly">M908: Control digital trimpot directly</a>
+ In Prusa Firmware this G-code is deactivated by default, must be turned on in the source code. Not usable on Prusa printers.
+ - `U` - Unload all filaments used in current print
+ - `C` - Unload just current filament
+ - without any parameters unload all filaments
+ */
case 702:
case 702:
{
{
#ifdef SNMM
#ifdef SNMM
@@ -7710,14 +8527,19 @@ Sigma_Exit:
}
}
break;
break;
- //! ### M999 - Restart after being stopped
- // ------------------------------------
+ /*!
+ ### M999 - Restart after being stopped <a href="https://reprap.org/wiki/G-code#M999:_Restart_after_being_stopped_by_error">M999: Restart after being stopped by error</a>
+ @todo Usually doesn't work. Should be fixed or removed. Most of the time, if `Stopped` it set, the print fails and is unrecoverable.
+ */
case 999:
case 999:
Stopped = false;
Stopped = false;
lcd_reset_alert_level();
lcd_reset_alert_level();
gcode_LastN = Stopped_gcode_LastN;
gcode_LastN = Stopped_gcode_LastN;
FlushSerialRequestResend();
FlushSerialRequestResend();
break;
break;
+ /*!
+ #### End of M-Commands
+ */
default:
default:
printf_P(PSTR("Unknown M code: %s \n"), cmdbuffer + bufindr + CMDHDRSIZE);
printf_P(PSTR("Unknown M code: %s \n"), cmdbuffer + bufindr + CMDHDRSIZE);
+ ### D106 - Print measured fan speed for different pwm values <a href="https://reprap.org/wiki/G-code#D106:_Print_measured_fan_speed_for_different_pwm_values">D106: Print measured fan speed for different pwm values</a>
const char MSG_BABYSTEP_Z_NOT_SET[] PROGMEM_I1 = ISTR("Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."); ////c=20 r=12
const char MSG_BABYSTEP_Z_NOT_SET[] PROGMEM_I1 = ISTR("Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."); ////c=20 r=12
const char MSG_FOLLOW_CALIBRATION_FLOW[] PROGMEM_I1 = ISTR("Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."); ////c=20 r=8
const char MSG_FOLLOW_CALIBRATION_FLOW[] PROGMEM_I1 = ISTR("Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."); ////c=20 r=8
const char MSG_FOLLOW_Z_CALIBRATION_FLOW[] PROGMEM_I1 = ISTR("There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."); ////c=20 r=8
const char MSG_FOLLOW_Z_CALIBRATION_FLOW[] PROGMEM_I1 = ISTR("There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."); ////c=20 r=8
const char MSG_TEMP_CALIBRATION_DONE[] PROGMEM_I1 = ISTR("Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."); ////c=20 r=12
const char MSG_TEMP_CALIBRATION_DONE[] PROGMEM_I1 = ISTR("Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."); ////c=20 r=12
- if(timer < 100) { timer = 100; MYSERIAL.print(_N("Steprate too high: ")); MYSERIAL.println(step_rate); }//(20kHz this should never happen)////MSG_STEPPER_TOO_HIGH
- return timer;
-}
-
// "The Stepper Driver Interrupt" - This timer interrupt is the workhorse.
// "The Stepper Driver Interrupt" - This timer interrupt is the workhorse.
// It pops blocks from the block_buffer and executes them by pulsing the stepper pins appropriately.
// It pops blocks from the block_buffer and executes them by pulsing the stepper pins appropriately.
ISR(TIMER1_COMPA_vect) {
ISR(TIMER1_COMPA_vect) {
@@ -361,53 +246,10 @@ ISR(TIMER1_COMPA_vect) {
#endif //DEBUG_STACK_MONITOR
#endif //DEBUG_STACK_MONITOR
#ifdef LIN_ADVANCE
#ifdef LIN_ADVANCE
- // If there are any e_steps planned, tick them.
- bool run_main_isr = false;
- if (e_steps) {
- //WRITE_NC(LOGIC_ANALYZER_CH7, true);
- uint8_t cnt = 0;
- for (uint8_t i = estep_loops; e_steps && i --;) {
// Call this function just before re-enabling the stepper driver interrupt and the global interrupts
// Call this function just before re-enabling the stepper driver interrupt and the global interrupts
// to avoid a stepper timer overflow.
// to avoid a stepper timer overflow.
-FORCE_INLINE void st_reset_timer()
-{
- // Clear a possible pending interrupt on OCR1A overflow.
- TIFR1 |= 1 << OCF1A;
- // Reset the counter.
- TCNT1 = 0;
- // Wake up after 1ms from now.
- OCR1A = 2000;
-}
+void st_reset_timer();
void checkHitEndstops(); //call from somewhere to create an serial error message with the locations the endstops where hit, in case they were triggered
void checkHitEndstops(); //call from somewhere to create an serial error message with the locations the endstops where hit, in case they were triggered
bool endstops_hit_on_purpose(); //avoid creation of the message, i.e. after homing and before a routine call of checkHitEndstops();
bool endstops_hit_on_purpose(); //avoid creation of the message, i.e. after homing and before a routine call of checkHitEndstops();
- lcd_printf_P(_i("[%.7s]Live adj. Z\nvalue set, continue\nor start from zero?\n%cContinue%cReset"), //// \n denotes line break, %.7s is replaced by 7 character long sheet name, %+1.3f is replaced by 6 character long floating point number, %c is replaced by > or white space (one character) based on whether first or second option is selected. % denoted place holders can not be reordered. r=4
+ lcd_printf_P(_i("Sheet %.7s\nZ offset: %+1.3f mm\n%cContinue\n%cStart from zero"), //// \n denotes line break, %.7s is replaced by 7 character long sheet name, %+1.3f is replaced by 6 character long floating point number, %c is replaced by > or white space (one character) based on whether first or second option is selected. % denoted place holders can not be reordered. r=4
- lcd_show_fullscreen_message_and_wait_P(_i("Please insert filament to the first tube of MMU, then press the knob to load it."));////c=20 r=8
+ lcd_show_fullscreen_message_and_wait_P(_i("Please insert filament into the first tube of the MMU, then press the knob to load it."));////c=20 r=8
tmp_extruder = 0;
tmp_extruder = 0;
}
}
else
else
{
{
- lcd_show_fullscreen_message_and_wait_P(_i("Please insert filament to the extruder, then press knob to load it."));////MSG_WIZARD_LOAD_FILAMENT c=20 r=8
+ lcd_show_fullscreen_message_and_wait_P(_i("Please insert filament into the extruder, then press the knob to load it."));////MSG_WIZARD_LOAD_FILAMENT c=20 r=8
_i("Select temperature which matches your material."));
_i("Select temperature which matches your material."));
}
}
lcd_show_fullscreen_message_and_wait_P(
lcd_show_fullscreen_message_and_wait_P(
- _i("I will start to print line and you will gradually lower the nozzle by rotating the knob, until you reach optimal height. Check the pictures in our handbook in chapter Calibration.")); ////MSG_WIZARD_V2_CAL_2 c=20 r=12
+ _i("The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter).")); ////MSG_WIZARD_V2_CAL_2 c=20 r=12
}
}
//! @brief Printer first run wizard (Selftest and calibration)
//! @brief Printer first run wizard (Selftest and calibration)
- lcd_show_fullscreen_message_and_wait_P(_i("If you have more steel sheets you can calibrate additional presets in Settings / HW Setup / Steel sheets."));
+ lcd_show_fullscreen_message_and_wait_P(_i("If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."));
+ planner_abort_hard(); //needs to be done since plan_buffer_line resets waiting_inside_plan_buffer_line_print_aborted to false. Also copies current to destination.
+
+ axis_relative_modes[X_AXIS] = false;
+ axis_relative_modes[Y_AXIS] = false;
+ axis_relative_modes[Z_AXIS] = false;
+ axis_relative_modes[E_AXIS] = true;
+
+ isPrintPaused = false; //clear isPrintPaused flag to allow starting next print after pause->stop scenario.
#define MMU_DEBUG //print communication between MMU2 and printer on serial
#define MMU_DEBUG //print communication between MMU2 and printer on serial
-//#define MMU_HAS_CUTTER
+#define MMU_HAS_CUTTER
#define MMU_IDLER_SENSOR_ATTEMPTS_NR 21 //max. number of attempts to load filament if first load failed; value for max bowden length and case when loading fails right at the beginning
#define MMU_IDLER_SENSOR_ATTEMPTS_NR 21 //max. number of attempts to load filament if first load failed; value for max bowden length and case when loading fails right at the beginning
#define MMU_DEBUG //print communication between MMU2 and printer on serial
#define MMU_DEBUG //print communication between MMU2 and printer on serial
-//#define MMU_HAS_CUTTER
+#define MMU_HAS_CUTTER
#define MMU_IDLER_SENSOR_ATTEMPTS_NR 21 //max. number of attempts to load filament if first load failed; value for max bowden length and case when loading fails right at the beginning
#define MMU_IDLER_SENSOR_ATTEMPTS_NR 21 //max. number of attempts to load filament if first load failed; value for max bowden length and case when loading fails right at the beginning
//new settings is possible for vsense = 1, running current value > 31 set vsense to zero and shift both currents by 1 bit right (Z axis only)
//new settings is possible for vsense = 1, running current value > 31 set vsense to zero and shift both currents by 1 bit right (Z axis only)
#define TMC2130_CURRENTS_H {16, 20, 35, 30} // default holding currents for all axes
#define TMC2130_CURRENTS_H {16, 20, 35, 30} // default holding currents for all axes
#define TMC2130_CURRENTS_R {16, 20, 35, 30} // default running currents for all axes
#define TMC2130_CURRENTS_R {16, 20, 35, 30} // default running currents for all axes
-#define TMC2130_UNLOAD_CURRENT_R 12 // lowe current for M600 to protect filament sensor
+#define TMC2130_CURRENTS_R_HOME {8, 10, 20, 18} // homing running currents for all axes
+// #define TMC2130_UNLOAD_CURRENT_R 12 // lower current for M600 to protect filament sensor - Unused
#define TMC2130_STEALTH_Z
#define TMC2130_STEALTH_Z
@@ -628,7 +630,7 @@
#define MMU_REQUIRED_FW_BUILDNR 83
#define MMU_REQUIRED_FW_BUILDNR 83
#define MMU_HWRESET
#define MMU_HWRESET
#define MMU_DEBUG //print communication between MMU2 and printer on serial
#define MMU_DEBUG //print communication between MMU2 and printer on serial
-//#define MMU_HAS_CUTTER
+#define MMU_HAS_CUTTER
#define MMU_IDLER_SENSOR_ATTEMPTS_NR 21 //max. number of attempts to load filament if first load failed; value for max bowden length and case when loading fails right at the beginning
#define MMU_IDLER_SENSOR_ATTEMPTS_NR 21 //max. number of attempts to load filament if first load failed; value for max bowden length and case when loading fails right at the beginning
"Select nozzle preheat temperature which matches your material."
"Select nozzle preheat temperature which matches your material."
-#
-"Select PLA filament:"
-
#MSG_SET_TEMPERATURE c=19 r=1
#MSG_SET_TEMPERATURE c=19 r=1
"Set temperature:"
"Set temperature:"
@@ -706,38 +690,38 @@
#MSG_FILE_CNT c=20 r=4
#MSG_FILE_CNT c=20 r=4
"Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
"Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
-#MSG_SORT_NONE c=17 r=1
-"Sort [none]"
+#MSG_SORT
+"Sort"
-#MSG_SORT_TIME c=17 r=1
-"Sort [time]"
+#MSG_NONE
+"None"
+
+#MSG_SORT_TIME
+"Time"
#
#
"Severe skew:"
"Severe skew:"
-#MSG_SORT_ALPHA c=17 r=1
-"Sort [alphabet]"
+#MSG_SORT_ALPHA
+"Alphabet"
#MSG_SORTING c=20 r=1
#MSG_SORTING c=20 r=1
"Sorting files"
"Sorting files"
-#MSG_SOUND_LOUD c=17 r=1
-"Sound [loud]"
+#MSG_SOUND_LOUD
+"Loud"
#
#
"Slight skew:"
"Slight skew:"
-#MSG_SOUND_MUTE c=17 r=1
-"Sound [mute]"
+#MSG_SOUND
+"Sound"
#
#
"Some problem encountered, Z-leveling enforced ..."
"Some problem encountered, Z-leveling enforced ..."
-#MSG_SOUND_ONCE c=17 r=1
-"Sound [once]"
-
-#MSG_SOUND_SILENT c=17 r=1
-"Sound [silent]"
+#MSG_SOUND_ONCE
+"Once"
#MSG_SPEED
#MSG_SPEED
"Speed"
"Speed"
@@ -763,14 +747,14 @@
#MSG_SELFTEST_SWAPPED
#MSG_SELFTEST_SWAPPED
"Swapped"
"Swapped"
-#MSG_TEMP_CALIBRATION c=20 r=1
-"Temp. cal. "
+#
+"Select filament:"
-#MSG_TEMP_CALIBRATION_ON c=20 r=1
-"Temp. cal. [on]"
+#MSG_TEMP_CALIBRATION c=12 r=1
+"Temp. cal."
-#MSG_TEMP_CALIBRATION_OFF c=20 r=1
-"Temp. cal. [off]"
+#
+"Select temperature which matches your material."
#MSG_CALIBRATION_PINDA_MENU c=17 r=1
#MSG_CALIBRATION_PINDA_MENU c=17 r=1
"Temp. calibration"
"Temp. calibration"
@@ -904,11 +888,17 @@
#
#
"Y distance from min"
"Y distance from min"
+#
+"The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
+"The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
+"Tiskarna zacne tisknout lomenou caru. Otacenim tlacitka nastavte optimalni vysku. Postupujte podle obrazku v handbooku (kapitola Kalibrace)."
+"Select temperature which matches your material."
+"Waehlen Sie die Temperatur, die zu Ihrem Material passt."
#MSG_CALIBRATION_PINDA_MENU c=17 r=1
#MSG_CALIBRATION_PINDA_MENU c=17 r=1
"Temp. calibration"
"Temp. calibration"
@@ -1202,18 +1182,25 @@
"XYZ calibration failed. Right front calibration point not reachable."
"XYZ calibration failed. Right front calibration point not reachable."
"XYZ-Kalibrierung fehlgeschlagen. Rechter vorderer Kalibrierpunkt ist nicht erreichbar."
"XYZ-Kalibrierung fehlgeschlagen. Rechter vorderer Kalibrierpunkt ist nicht erreichbar."
-
#
#
"Y distance from min"
"Y distance from min"
"Y Entfernung vom Min"
"Y Entfernung vom Min"
+#
+"The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
+"Der Drucker beginnt mit dem Drucken einer Zickzacklinie. Drehen Sie den Knopf, bis Sie die optimale Hoehe erreicht haben. Ueberpruefen Sie die Bilder im Handbuch (Kapitel Kalibrierung)."
"Select nozzle preheat temperature which matches your material."
"Select nozzle preheat temperature which matches your material."
"Selecciona la temperatura para precalentar la boquilla que se ajuste a tu material. "
"Selecciona la temperatura para precalentar la boquilla que se ajuste a tu material. "
-#
-"Select PLA filament:"
-"Seleccionar filamento PLA:"
-
#MSG_SET_TEMPERATURE c=19 r=1
#MSG_SET_TEMPERATURE c=19 r=1
"Set temperature:"
"Set temperature:"
"Establecer temp.:"
"Establecer temp.:"
@@ -942,49 +922,49 @@
"Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
"Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
"Algunos archivos no se ordenaran. Maximo 100 archivos por carpeta para ordenar. "
"Algunos archivos no se ordenaran. Maximo 100 archivos por carpeta para ordenar. "
-#MSG_SORT_NONE c=17 r=1
-"Sort [none]"
-"Ordenar [ninguno]"
+#MSG_SORT
+"Sort"
+"Ordenar"
-#MSG_SORT_TIME c=17 r=1
-"Sort [time]"
-"Ordenar [fecha]"
+#MSG_NONE
+"None"
+"Ninguno"
+
+#MSG_SORT_TIME
+"Time"
+"Fecha"
#
#
"Severe skew:"
"Severe skew:"
"Incl.severa:"
"Incl.severa:"
-#MSG_SORT_ALPHA c=17 r=1
-"Sort [alphabet]"
-"Ordenar [alfabet]"
+#MSG_SORT_ALPHA
+"Alphabet"
+"Alfabet"
#MSG_SORTING c=20 r=1
#MSG_SORTING c=20 r=1
"Sorting files"
"Sorting files"
"Ordenando archivos"
"Ordenando archivos"
-#MSG_SOUND_LOUD c=17 r=1
-"Sound [loud]"
-"Sonido [alto]"
+#MSG_SOUND_LOUD
+"Loud"
+"Alto"
#
#
"Slight skew:"
"Slight skew:"
"Liger.incl.:"
"Liger.incl.:"
-#MSG_SOUND_MUTE c=17 r=1
-"Sound [mute]"
-"Sonido[silenciad]"
+#MSG_SOUND
+"Sound"
+"Sonido"
#
#
"Some problem encountered, Z-leveling enforced ..."
"Some problem encountered, Z-leveling enforced ..."
"Problema encontrado, nivelacion Z forzosa ..."
"Problema encontrado, nivelacion Z forzosa ..."
-#MSG_SOUND_ONCE c=17 r=1
-"Sound [once]"
-"Sonido [una vez]"
-
-#MSG_SOUND_SILENT c=17 r=1
-"Sound [silent]"
-"Sonido[silencios]"
+#MSG_SOUND_ONCE
+"Once"
+"Una vez"
#MSG_SPEED
#MSG_SPEED
"Speed"
"Speed"
@@ -1018,17 +998,17 @@
"Swapped"
"Swapped"
"Intercambiado"
"Intercambiado"
-#MSG_TEMP_CALIBRATION c=20 r=1
-"Temp. cal. "
-"Cal. temp. "
+#
+"Select filament:"
+"Selecciona filamento:"
-#MSG_TEMP_CALIBRATION_ON c=20 r=1
-"Temp. cal. [on]"
-"Cal. temp. [on]"
+#MSG_TEMP_CALIBRATION c=12 r=1
+"Temp. cal."
+"Cal. temp."
-#MSG_TEMP_CALIBRATION_OFF c=20 r=1
-"Temp. cal. [off]"
-"Cal. temp. [off]"
+#
+"Select temperature which matches your material."
+"Selecciona la temperatura adecuada a tu material."
#MSG_CALIBRATION_PINDA_MENU c=17 r=1
#MSG_CALIBRATION_PINDA_MENU c=17 r=1
"Temp. calibration"
"Temp. calibration"
@@ -1206,13 +1186,21 @@
"Y distance from min"
"Y distance from min"
"Distancia en Y desde el min"
"Distancia en Y desde el min"
+#
+"The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
+"La impresora comenzara a imprimir una linea en zig-zag. Gira el dial hasta que la linea alcance la altura optima. Mira las fotos del manual (Capitulo de calibracion)."
"Select nozzle preheat temperature which matches your material."
"Select nozzle preheat temperature which matches your material."
"Selectionnez la temperature de prechauffage de la buse qui correspond a votre materiau."
"Selectionnez la temperature de prechauffage de la buse qui correspond a votre materiau."
-#
-"Select PLA filament:"
-"Selectionnez le fil. PLA:"
-
#MSG_SET_TEMPERATURE c=19 r=1
#MSG_SET_TEMPERATURE c=19 r=1
"Set temperature:"
"Set temperature:"
"Regler temp.:"
"Regler temp.:"
@@ -942,50 +920,49 @@
"Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
"Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
"Certains fichiers ne seront pas tries. Max 100 fichiers tries par dossier."
"Certains fichiers ne seront pas tries. Max 100 fichiers tries par dossier."
-#MSG_SORT_NONE c=17 r=1
-"Sort [none]"
-"Tri [aucun]"
+#MSG_SORT
+"Sort"
+"Tri"
-#MSG_SORT_TIME c=17 r=1
-"Sort [time]"
-"Tri [heure]"
+#MSG_NONE
+"None"
+"Aucun"
+
+#MSG_SORT_TIME
+"Time"
+"Heure"
#
#
"Severe skew:"
"Severe skew:"
"Deviat.sev.:"
"Deviat.sev.:"
-#MSG_SORT_ALPHA c=17 r=1
-"Sort [alphabet]"
-"Tri [alphabet]"
+#MSG_SORT_ALPHA
+"Alphabet"
+"\x00"
#MSG_SORTING c=20 r=1
#MSG_SORTING c=20 r=1
"Sorting files"
"Sorting files"
"Tri des fichiers"
"Tri des fichiers"
-#MSG_SOUND_LOUD c=17 r=1
-"Sound [loud]"
-"Son [fort]"
+#MSG_SOUND_LOUD
+"Loud"
+"Fort"
#
#
"Slight skew:"
"Slight skew:"
"Deviat.leg.:"
"Deviat.leg.:"
-#MSG_SOUND_MUTE c=17 r=1
-"Sound [mute]"
-"Son [muet]"
+#MSG_SOUND
+"Sound"
+"Son"
#
#
"Some problem encountered, Z-leveling enforced ..."
"Some problem encountered, Z-leveling enforced ..."
"Probleme rencontre, cliquez sur le bouton pour niveller l'axe Z..."
"Probleme rencontre, cliquez sur le bouton pour niveller l'axe Z..."
-#MSG_SOUND_ONCE c=17 r=1
-"Sound [once]"
-"Son [une fois]"
-
-#MSG_SOUND_SILENT c=17 r=1
-"Sound [silent]"
-"Son [feutre]"
-
+#MSG_SOUND_ONCE
+"Once"
+"Une fois"
#MSG_SPEED
#MSG_SPEED
"Speed"
"Speed"
"Vitesse"
"Vitesse"
@@ -1018,17 +995,17 @@
"Swapped"
"Swapped"
"Echange"
"Echange"
-#MSG_TEMP_CALIBRATION c=20 r=1
-"Temp. cal. "
-"Calib. Temp."
+#
+"Select filament:"
+"Selectionnez le filament:"
-#MSG_TEMP_CALIBRATION_ON c=20 r=1
-"Temp. cal. [on]"
-"Calib. Temp. [on]"
+#MSG_TEMP_CALIBRATION c=12 r=1
+"Temp. cal."
+"Calib. Temp."
-#MSG_TEMP_CALIBRATION_OFF c=20 r=1
-"Temp. cal. [off]"
-"Calib. Temp.[off]"
+#
+"Select temperature which matches your material."
+"Selectionnez la temperature qui correspond a votre materiau."
#MSG_CALIBRATION_PINDA_MENU c=17 r=1
#MSG_CALIBRATION_PINDA_MENU c=17 r=1
"Temp. calibration"
"Temp. calibration"
@@ -1206,13 +1183,21 @@
"Y distance from min"
"Y distance from min"
"Distance Y du min"
"Distance Y du min"
+#
+"The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
+"L'imprimante commencera a imprimer une ligne en zig-zag. Tournez le bouton jusqu'a atteindre la hauteur optimale. Consultez les photos dans le manuel (chapitre Calibration)."
"Select nozzle preheat temperature which matches your material."
"Select nozzle preheat temperature which matches your material."
"Selezionate la temperatura per il preriscaldamento dell'ugello adatta al vostro materiale."
"Selezionate la temperatura per il preriscaldamento dell'ugello adatta al vostro materiale."
-#
-"Select PLA filament:"
-"Selezionate filamento PLA:"
-
#MSG_SET_TEMPERATURE c=19 r=1
#MSG_SET_TEMPERATURE c=19 r=1
"Set temperature:"
"Set temperature:"
"Imposta temperatura:"
"Imposta temperatura:"
@@ -942,49 +921,49 @@
"Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
"Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
"Alcuni file non saranno ordinati. Il numero massimo di file in una cartella e 100 perche siano ordinati."
"Alcuni file non saranno ordinati. Il numero massimo di file in una cartella e 100 perche siano ordinati."
-#MSG_SORT_NONE c=17 r=1
-"Sort [none]"
-"Ordina [nessuno]"
+#MSG_SORT
+"Sort"
+"Ordina"
+
+#MSG_NONE
+"None"
+"Nessuno"
-#MSG_SORT_TIME c=17 r=1
-"Sort [time]"
-"Ordina [cron.]"
+#MSG_SORT_TIME
+"Time"
+"Cron."
#
#
"Severe skew:"
"Severe skew:"
"Devia.grave:"
"Devia.grave:"
-#MSG_SORT_ALPHA c=17 r=1
-"Sort [alphabet]"
-"Ordine [alfabeti]"
+#MSG_SORT_ALPHA
+"Alphabet"
+"Alfabeti"
#MSG_SORTING c=20 r=1
#MSG_SORTING c=20 r=1
"Sorting files"
"Sorting files"
"Ordinando i file"
"Ordinando i file"
-#MSG_SOUND_LOUD c=17 r=1
-"Sound [loud]"
-"Suono [forte]"
+#MSG_SOUND_LOUD
+"Loud"
+"Forte"
#
#
"Slight skew:"
"Slight skew:"
"Devia.lieve:"
"Devia.lieve:"
-#MSG_SOUND_MUTE c=17 r=1
-"Sound [mute]"
-"Suono [mute]"
+#MSG_SOUND
+"Sound"
+"Suono"
#
#
"Some problem encountered, Z-leveling enforced ..."
"Some problem encountered, Z-leveling enforced ..."
"Sono stati rilevati problemi, avviato livellamento Z ..."
"Sono stati rilevati problemi, avviato livellamento Z ..."
-#MSG_SOUND_ONCE c=17 r=1
-"Sound [once]"
-"Suono [singolo]"
-
-#MSG_SOUND_SILENT c=17 r=1
-"Sound [silent]"
-"Suono[silenzioso]"
+#MSG_SOUND_ONCE
+"Once"
+"Singolo"
#MSG_SPEED
#MSG_SPEED
"Speed"
"Speed"
@@ -1018,17 +997,17 @@
"Swapped"
"Swapped"
"Scambiato"
"Scambiato"
-#MSG_TEMP_CALIBRATION c=20 r=1
-"Temp. cal. "
-"Calib. temp. "
+#
+"Select filament:"
+"Seleziona il filamento:"
-#MSG_TEMP_CALIBRATION_ON c=20 r=1
-"Temp. cal. [on]"
-"Calib. temp. [on]"
+#MSG_TEMP_CALIBRATION c=12 r=1
+"Temp. cal."
+"Calib. temp."
-#MSG_TEMP_CALIBRATION_OFF c=20 r=1
-"Temp. cal. [off]"
-"Calib. temp.[off]"
+#
+"Select temperature which matches your material."
+"Seleziona la temperatura appropriata per il tuo materiale."
#MSG_CALIBRATION_PINDA_MENU c=17 r=1
#MSG_CALIBRATION_PINDA_MENU c=17 r=1
"Temp. calibration"
"Temp. calibration"
@@ -1206,12 +1185,20 @@
"Y distance from min"
"Y distance from min"
"Distanza Y dal min"
"Distanza Y dal min"
+#
+"The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
+"La stampante iniziera a stampare una linea a zig-zag. Gira la manopola fino a che non hai raggiungo l'altezza ottimale. Verifica con le immagini nel manuale (capitolo sulla calibrazione):"
"Select nozzle preheat temperature which matches your material."
"Select nozzle preheat temperature which matches your material."
"Wybierz temperature grzania dyszy odpowiednia dla materialu."
"Wybierz temperature grzania dyszy odpowiednia dla materialu."
-#
-"Select PLA filament:"
-"Wybierz filament PLA:"
-
#MSG_SET_TEMPERATURE c=19 r=1
#MSG_SET_TEMPERATURE c=19 r=1
"Set temperature:"
"Set temperature:"
"Ustaw temperature:"
"Ustaw temperature:"
@@ -942,50 +922,49 @@
"Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
"Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
"Niektore pliki nie zostana posortowane. Max. liczba plikow w 1 folderze = 100."
"Niektore pliki nie zostana posortowane. Max. liczba plikow w 1 folderze = 100."
-#MSG_SORT_NONE c=17 r=1
-"Sort [none]"
-"Sortowanie [brak]"
+#MSG_SORT
+"Sort"
+"Sortowanie"
+
+#MSG_NONE
+"None"
+"Brak"
-#MSG_SORT_TIME c=17 r=1
-"Sort [time]"
-"Sortowanie [czas]"
+#MSG_SORT_TIME
+"Time"
+"Czas"
#
#
"Severe skew:"
"Severe skew:"
"Znaczny skos:"
"Znaczny skos:"
-#MSG_SORT_ALPHA c=17 r=1
-"Sort [alphabet]"
-"Sortowanie[alfab]"
+#MSG_SORT_ALPHA
+"Alphabet"
+"Alfab"
#MSG_SORTING c=20 r=1
#MSG_SORTING c=20 r=1
"Sorting files"
"Sorting files"
"Sortowanie plikow"
"Sortowanie plikow"
-#MSG_SOUND_LOUD c=17 r=1
-"Sound [loud]"
-"Dzwiek [glosny]"
+#MSG_SOUND_LOUD
+"Loud"
+"Glosny"
#
#
"Slight skew:"
"Slight skew:"
"Lekki skos:"
"Lekki skos:"
-#MSG_SOUND_MUTE c=17 r=1
-"Sound [mute]"
-"Dzwiek[wylaczony]"
+#MSG_SOUND
+"Sound"
+"Dzwiek"
#
#
"Some problem encountered, Z-leveling enforced ..."
"Some problem encountered, Z-leveling enforced ..."
"Wykryto problem, wymuszono poziomowanie osi Z."
"Wykryto problem, wymuszono poziomowanie osi Z."
-#MSG_SOUND_ONCE c=17 r=1
-"Sound [once]"
-"Dzwiek [1-raz]"
-
-#MSG_SOUND_SILENT c=17 r=1
-"Sound [silent]"
-"Dzwiek [cichy]"
-
+#MSG_SOUND_ONCE
+"Once"
+"1-raz"
#MSG_SPEED
#MSG_SPEED
"Speed"
"Speed"
"Predkosc"
"Predkosc"
@@ -1018,17 +997,17 @@
"Swapped"
"Swapped"
"Zamieniono"
"Zamieniono"
-#MSG_TEMP_CALIBRATION c=20 r=1
-"Temp. cal. "
-"Kalibracja temp."
+#
+"Select filament:"
+"Wybierz filament:"
-#MSG_TEMP_CALIBRATION_ON c=20 r=1
-"Temp. cal. [on]"
-"Kalibr.temp. [wl]"
+#MSG_TEMP_CALIBRATION c=12 r=1
+"Temp. cal."
+"Kalibracja temp."
-#MSG_TEMP_CALIBRATION_OFF c=20 r=1
-"Temp. cal. [off]"
-"Kalibr.temp.[wyl]"
+#
+"Select temperature which matches your material."
+"Wybierz temperature, ktora odpowiada Twojemu filamentowi."
#MSG_CALIBRATION_PINDA_MENU c=17 r=1
#MSG_CALIBRATION_PINDA_MENU c=17 r=1
"Temp. calibration"
"Temp. calibration"
@@ -1206,13 +1185,21 @@
"Y distance from min"
"Y distance from min"
"Dystans od 0 w osi Y"
"Dystans od 0 w osi Y"
+#
+"The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
+"Drukarka zacznie drukowanie linii w ksztalcie zygzaka. Ustaw optymalna wysokosc obracajac pokretlo. Porownaj z ilustracjami w Podreczniku (rozdzial Kalibracja)."