Merge branch 'MK3' into fix_missing_mmu_attention
This commit is contained in:
commit
3b396fb8bf
|
|
@ -50,3 +50,5 @@ Firmware/Doc
|
|||
/lang/textaddr.txt
|
||||
/build-env/
|
||||
/Firmware/Firmware.vcxproj
|
||||
/Firmware/Configuration_prusa_bckp.h
|
||||
/Firmware/variants/printers.h
|
||||
|
|
|
|||
16
.travis.yml
16
.travis.yml
|
|
@ -1,11 +1,27 @@
|
|||
dist: trusty
|
||||
before_install:
|
||||
- sudo apt-get install -y ninja-build
|
||||
# Arduino IDE adds a lot of noise caused by network traffic, trying to firewall it off
|
||||
- sudo iptables -P INPUT DROP
|
||||
- sudo iptables -P FORWARD DROP
|
||||
- sudo iptables -P OUTPUT ACCEPT
|
||||
- sudo iptables -A INPUT -i lo -j ACCEPT
|
||||
- sudo iptables -A OUTPUT -o lo -j ACCEPT
|
||||
- sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
|
||||
script:
|
||||
- bash -x test.sh
|
||||
- cp Firmware/variants/1_75mm_MK3S-EINSy10a-E3Dv6full.h Firmware/Configuration_prusa.h
|
||||
- bash -x build.sh || { echo "1_75mm_MK3S-EINSy10a-E3Dv6full variant failed" && false; }
|
||||
- rm Firmware/Configuration_prusa.h
|
||||
- cp Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h Firmware/Configuration_prusa.h
|
||||
- bash -x build.sh || { echo "1_75mm_MK3-EINSy10a-E3Dv6full variant failed" && false; }
|
||||
- rm Firmware/Configuration_prusa.h
|
||||
- cp Firmware/variants/1_75mm_MK25S-RAMBo13a-E3Dv6full.h Firmware/Configuration_prusa.h
|
||||
- bash -x build.sh || { echo "1_75mm_MK25S-RAMBo13a-E3Dv6full variant failed" && false; }
|
||||
- rm Firmware/Configuration_prusa.h
|
||||
- cp Firmware/variants/1_75mm_MK25S-RAMBo10a-E3Dv6full.h Firmware/Configuration_prusa.h
|
||||
- bash -x build.sh || { echo "1_75mm_MK25S-RAMBo10a-E3Dv6full variant failed" && false; }
|
||||
- rm Firmware/Configuration_prusa.h
|
||||
- cp Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h Firmware/Configuration_prusa.h
|
||||
- bash -x build.sh || { echo "1_75mm_MK25-RAMBo13a-E3Dv6full variant failed" && false; }
|
||||
- rm Firmware/Configuration_prusa.h
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ set(TEST_SOURCES
|
|||
Tests/Example_test.cpp
|
||||
Tests/Timer_test.cpp
|
||||
Tests/AutoDeplete_test.cpp
|
||||
Tests/PrusaStatistics_test.cpp
|
||||
Firmware/Timer.cpp
|
||||
Firmware/AutoDeplete.cpp
|
||||
)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,10 @@
|
|||
#include "Configuration.h"
|
||||
#include "Configuration_prusa.h"
|
||||
|
||||
const uint16_t _nPrinterType PROGMEM=PRINTER_TYPE;
|
||||
const char _sPrinterName[] PROGMEM=PRINTER_NAME;
|
||||
const uint16_t _nPrinterMmuType PROGMEM=PRINTER_MMU_TYPE;
|
||||
const char _sPrinterMmuName[] PROGMEM=PRINTER_MMU_NAME;
|
||||
|
||||
uint16_t nPrinterType;
|
||||
PGM_P sPrinterName;
|
||||
|
|
@ -6,15 +6,27 @@
|
|||
#define STR_HELPER(x) #x
|
||||
#define STR(x) STR_HELPER(x)
|
||||
|
||||
//-//
|
||||
#include <avr/pgmspace.h>
|
||||
extern const uint16_t _nPrinterType;
|
||||
extern const char _sPrinterName[] PROGMEM;
|
||||
extern const uint16_t _nPrinterMmuType;
|
||||
extern const char _sPrinterMmuName[] PROGMEM;
|
||||
extern uint16_t nPrinterType;
|
||||
extern PGM_P sPrinterName;
|
||||
|
||||
// Firmware version
|
||||
#define FW_VERSION "3.5.2-RC1"
|
||||
#define FW_COMMIT_NR 1993
|
||||
#define FW_VERSION "3.7.2"
|
||||
#define FW_COMMIT_NR 2363
|
||||
// FW_VERSION_UNKNOWN means this is an unofficial build.
|
||||
// The firmware should only be checked into github with this symbol.
|
||||
#define FW_DEV_VERSION FW_VERSION_UNKNOWN
|
||||
#define FW_REPOSITORY "Unknown"
|
||||
#define FW_VERSION_FULL FW_VERSION "-" STR(FW_COMMIT_NR)
|
||||
|
||||
// G-code language level
|
||||
#define GCODE_LEVEL 1
|
||||
|
||||
// Debug version has debugging enabled (the symbol DEBUG_BUILD is set).
|
||||
// The debug build may be a bit slower than the non-debug build, therefore the debug build should
|
||||
// not be shipped to a customer.
|
||||
|
|
@ -132,7 +144,7 @@
|
|||
//#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX
|
||||
//#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay
|
||||
#define PID_INTEGRAL_DRIVE_MAX PID_MAX //limit for the integral term
|
||||
#define K1 0.95 //smoothing factor within the PID
|
||||
#define PID_K1 0.95 //smoothing factor within the PID
|
||||
#define PID_dT ((OVERSAMPLENR * 10.0)/(F_CPU / 64.0 / 256.0)) //sampling period of the temperature routine
|
||||
|
||||
// If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it
|
||||
|
|
@ -446,7 +458,9 @@ your extruder heater takes 2 minutes to hit the target on heating.
|
|||
// When enabled Marlin will send a busy status message to the host
|
||||
// every couple of seconds when it can't accept commands.
|
||||
//
|
||||
#ifndef HEATBED_ANALYSIS
|
||||
#define HOST_KEEPALIVE_FEATURE // Disable this if your host doesn't like keepalive messages
|
||||
#endif //HEATBED_ANALYSIS
|
||||
#define HOST_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113.
|
||||
|
||||
//LCD and SD support
|
||||
|
|
@ -478,6 +492,9 @@ your extruder heater takes 2 minutes to hit the target on heating.
|
|||
#define FAN_SOFT_PWM
|
||||
#define FAN_SOFT_PWM_BITS 4 //PWM bit resolution = 4bits, freq = 62.5Hz
|
||||
|
||||
// Bed soft pwm
|
||||
#define HEATER_BED_SOFT_PWM_BITS 5 //PWM bit resolution = 5bits, freq = 31.25Hz
|
||||
|
||||
// Incrementing this by 1 will double the software PWM frequency,
|
||||
// affecting heaters, and the fan if FAN_SOFT_PWM is enabled.
|
||||
// However, control resolution will be halved for each increment;
|
||||
|
|
|
|||
|
|
@ -11,6 +11,11 @@
|
|||
#include "mesh_bed_leveling.h"
|
||||
#endif
|
||||
|
||||
#ifdef TMC2130
|
||||
#include "tmc2130.h"
|
||||
#endif
|
||||
|
||||
|
||||
M500_conf cs;
|
||||
|
||||
//! @brief Write data to EEPROM
|
||||
|
|
@ -86,6 +91,7 @@ void Config_PrintSettings(uint8_t level)
|
|||
#ifdef TMC2130
|
||||
printf_P(PSTR(
|
||||
"%SSteps per unit:\n%S M92 X%.2f Y%.2f Z%.2f E%.2f\n"
|
||||
"%SUStep resolution: \n%S M350 X%d Y%d Z%d E%d\n"
|
||||
"%SMaximum feedrates - normal (mm/s):\n%S M203 X%.2f Y%.2f Z%.2f E%.2f\n"
|
||||
"%SMaximum feedrates - stealth (mm/s):\n%S M203 X%.2f Y%.2f Z%.2f E%.2f\n"
|
||||
"%SMaximum acceleration - normal (mm/s2):\n%S M201 X%lu Y%lu Z%lu E%lu\n"
|
||||
|
|
@ -95,6 +101,7 @@ void Config_PrintSettings(uint8_t level)
|
|||
"%SHome offset (mm):\n%S M206 X%.2f Y%.2f Z%.2f\n"
|
||||
),
|
||||
echomagic, echomagic, cs.axis_steps_per_unit[X_AXIS], cs.axis_steps_per_unit[Y_AXIS], cs.axis_steps_per_unit[Z_AXIS], cs.axis_steps_per_unit[E_AXIS],
|
||||
echomagic, echomagic, cs.axis_ustep_resolution[X_AXIS], cs.axis_ustep_resolution[Y_AXIS], cs.axis_ustep_resolution[Z_AXIS], cs.axis_ustep_resolution[E_AXIS],
|
||||
echomagic, echomagic, cs.max_feedrate_normal[X_AXIS], cs.max_feedrate_normal[Y_AXIS], cs.max_feedrate_normal[Z_AXIS], cs.max_feedrate_normal[E_AXIS],
|
||||
echomagic, echomagic, cs.max_feedrate_silent[X_AXIS], cs.max_feedrate_silent[Y_AXIS], cs.max_feedrate_silent[Z_AXIS], cs.max_feedrate_silent[E_AXIS],
|
||||
echomagic, echomagic, cs.max_acceleration_units_per_sq_second_normal[X_AXIS], cs.max_acceleration_units_per_sq_second_normal[Y_AXIS], cs.max_acceleration_units_per_sq_second_normal[Z_AXIS], cs.max_acceleration_units_per_sq_second_normal[E_AXIS],
|
||||
|
|
@ -177,7 +184,7 @@ static_assert (false, "zprobe_zoffset was not initialized in printers in field t
|
|||
"0.0, if this is not acceptable, increment EEPROM_VERSION to force use default_conf");
|
||||
#endif
|
||||
|
||||
static_assert (sizeof(M500_conf) == 188, "sizeof(M500_conf) has changed, ensure that EEPROM_VERSION has been incremented, "
|
||||
static_assert (sizeof(M500_conf) == 192, "sizeof(M500_conf) has changed, ensure that EEPROM_VERSION has been incremented, "
|
||||
"or if you added members in the end of struct, ensure that historically uninitialized values will be initialized."
|
||||
"If this is caused by change to more then 8bit processor, decide whether make this struct packed to save EEPROM,"
|
||||
"leave as it is to keep fast code, or reorder struct members to pack more tightly.");
|
||||
|
|
@ -220,6 +227,11 @@ static const M500_conf default_conf PROGMEM =
|
|||
},
|
||||
DEFAULT_MAX_FEEDRATE_SILENT,
|
||||
DEFAULT_MAX_ACCELERATION_SILENT,
|
||||
#ifdef TMC2130
|
||||
{ TMC2130_USTEPS_XY, TMC2130_USTEPS_XY, TMC2130_USTEPS_Z, TMC2130_USTEPS_E },
|
||||
#else // TMC2130
|
||||
{16,16,16,16},
|
||||
#endif
|
||||
};
|
||||
|
||||
//! @brief Read M500 configuration
|
||||
|
|
@ -269,6 +281,16 @@ bool Config_RetrieveSettings()
|
|||
if (cs.max_acceleration_units_per_sq_second_silent[j] > SILENT_MAX_ACCEL_XY)
|
||||
cs.max_acceleration_units_per_sq_second_silent[j] = SILENT_MAX_ACCEL_XY;
|
||||
}
|
||||
|
||||
if(cs.axis_ustep_resolution[X_AXIS] == 0xff){ cs.axis_ustep_resolution[X_AXIS] = TMC2130_USTEPS_XY; }
|
||||
if(cs.axis_ustep_resolution[Y_AXIS] == 0xff){ cs.axis_ustep_resolution[Y_AXIS] = TMC2130_USTEPS_XY; }
|
||||
if(cs.axis_ustep_resolution[Z_AXIS] == 0xff){ cs.axis_ustep_resolution[Z_AXIS] = TMC2130_USTEPS_Z; }
|
||||
if(cs.axis_ustep_resolution[E_AXIS] == 0xff){ cs.axis_ustep_resolution[E_AXIS] = TMC2130_USTEPS_E; }
|
||||
|
||||
tmc2130_set_res(X_AXIS, cs.axis_ustep_resolution[X_AXIS]);
|
||||
tmc2130_set_res(Y_AXIS, cs.axis_ustep_resolution[Y_AXIS]);
|
||||
tmc2130_set_res(Z_AXIS, cs.axis_ustep_resolution[Z_AXIS]);
|
||||
tmc2130_set_res(E_AXIS, cs.axis_ustep_resolution[E_AXIS]);
|
||||
#endif //TMC2130
|
||||
|
||||
reset_acceleration_rates();
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@ typedef struct
|
|||
float filament_size[1]; //!< cross-sectional area of filament (in millimeters), typically around 1.75 or 2.85, 0 disables the volumetric calculations for the extruder.
|
||||
float max_feedrate_silent[4]; //!< max speeds for silent mode
|
||||
unsigned long max_acceleration_units_per_sq_second_silent[4];
|
||||
unsigned char axis_ustep_resolution[4];
|
||||
} M500_conf;
|
||||
|
||||
extern M500_conf cs;
|
||||
|
|
|
|||
|
|
@ -5,6 +5,9 @@
|
|||
#include <stdio.h>
|
||||
#include <avr/pgmspace.h>
|
||||
|
||||
#define SHOW_TEMP_ADC_VALUES
|
||||
#include "temperature.h"
|
||||
|
||||
|
||||
#define DBG(args...) printf_P(args)
|
||||
|
||||
|
|
@ -150,7 +153,7 @@ void dcode_3()
|
|||
#include <avr/wdt.h>
|
||||
#include "bootapp.h"
|
||||
|
||||
/*
|
||||
#if 0
|
||||
#define FLASHSIZE 0x40000
|
||||
|
||||
#define RAMSIZE 0x2000
|
||||
|
|
@ -169,18 +172,19 @@ extern float current_temperature_pinda;
|
|||
extern float axis_steps_per_unit[NUM_AXIS];
|
||||
|
||||
|
||||
//#define LOG(args...) printf(args)
|
||||
#define LOG(args...) printf(args)
|
||||
#endif //0
|
||||
#define LOG(args...)
|
||||
*/
|
||||
#ifdef DEBUG_DCODES
|
||||
|
||||
void dcode__1()
|
||||
{
|
||||
printf("D-1 - Endless loop\n");
|
||||
cli();
|
||||
printf_P(PSTR("D-1 - Endless loop\n"));
|
||||
// cli();
|
||||
while (1);
|
||||
}
|
||||
|
||||
#ifdef DEBUG_DCODES
|
||||
|
||||
void dcode_0()
|
||||
{
|
||||
if (*(strchr_pointer + 1) == 0) return;
|
||||
|
|
@ -227,7 +231,7 @@ void dcode_2()
|
|||
count = parse_hex(strchr_pointer + 1, data, 16);
|
||||
if (count > 0)
|
||||
{
|
||||
for (int i = 0; i < count; i++)
|
||||
for (uint16_t i = 0; i < count; i++)
|
||||
*((uint8_t*)(address + i)) = data[i];
|
||||
LOG("%d bytes written to RAM at address %04x", count, address);
|
||||
}
|
||||
|
|
@ -380,7 +384,7 @@ void dcode_8()
|
|||
{
|
||||
uint16_t offs = 0;
|
||||
if (i > 0) offs = eeprom_read_word(((uint16_t*)EEPROM_PROBE_TEMP_SHIFT) + (i - 1));
|
||||
float foffs = ((float)offs) / axis_steps_per_unit[Z_AXIS];
|
||||
float foffs = ((float)offs) / cs.axis_steps_per_unit[Z_AXIS];
|
||||
offs = 1000 * foffs;
|
||||
printf_P(PSTR("temp_pinda=%dC temp_shift=%dum\n"), 35 + i * 5, offs);
|
||||
}
|
||||
|
|
@ -423,10 +427,6 @@ const char* dcode_9_ADC_name(uint8_t i)
|
|||
return 0;
|
||||
}
|
||||
|
||||
extern int current_temperature_raw[EXTRUDERS];
|
||||
extern int current_temperature_bed_raw;
|
||||
extern int current_temperature_raw_pinda;
|
||||
|
||||
#ifdef AMBIENT_THERMISTOR
|
||||
extern int current_temperature_raw_ambient;
|
||||
#endif //AMBIENT_THERMISTOR
|
||||
|
|
@ -606,16 +606,16 @@ void dcode_2130()
|
|||
else if (strncmp(strchr_pointer + 7, "mres", 4) == 0)
|
||||
{
|
||||
uint8_t mres = strchr_pointer[11] - '0';
|
||||
if ((mres >= 0) && (mres <= 8))
|
||||
if (mres <= 8)
|
||||
{
|
||||
st_synchronize();
|
||||
uint16_t res = tmc2130_get_res(axis);
|
||||
uint16_t res_new = tmc2130_mres2usteps(mres);
|
||||
tmc2130_set_res(axis, res_new);
|
||||
if (res_new > res)
|
||||
axis_steps_per_unit[axis] *= (res_new / res);
|
||||
cs.axis_steps_per_unit[axis] *= (res_new / res);
|
||||
else
|
||||
axis_steps_per_unit[axis] /= (res / res_new);
|
||||
cs.axis_steps_per_unit[axis] /= (res / res_new);
|
||||
}
|
||||
}
|
||||
else if (strncmp(strchr_pointer + 7, "wave", 4) == 0)
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@
|
|||
#include "Configuration.h"
|
||||
#include "pins.h"
|
||||
#include "Timer.h"
|
||||
extern uint8_t mbl_z_probe_nr;
|
||||
|
||||
#ifndef AT90USB
|
||||
#define HardwareSerial_h // trick to disable the standard HWserial
|
||||
|
|
@ -78,9 +79,9 @@ extern FILE _uartout;
|
|||
#define SERIAL_PROTOCOL_F(x,y) (MYSERIAL.print(x,y))
|
||||
#define SERIAL_PROTOCOLPGM(x) (serialprintPGM(PSTR(x)))
|
||||
#define SERIAL_PROTOCOLRPGM(x) (serialprintPGM((x)))
|
||||
#define SERIAL_PROTOCOLLN(x) (MYSERIAL.print(x),MYSERIAL.write('\n'))
|
||||
#define SERIAL_PROTOCOLLNPGM(x) (serialprintPGM(PSTR(x)),MYSERIAL.write('\n'))
|
||||
#define SERIAL_PROTOCOLLNRPGM(x) (serialprintPGM((x)),MYSERIAL.write('\n'))
|
||||
#define SERIAL_PROTOCOLLN(x) (MYSERIAL.println(x)/*,MYSERIAL.write('\n')*/)
|
||||
#define SERIAL_PROTOCOLLNPGM(x) (serialprintPGM(PSTR(x)),MYSERIAL.println()/*write('\n')*/)
|
||||
#define SERIAL_PROTOCOLLNRPGM(x) (serialprintPGM((x)),MYSERIAL.println()/*write('\n')*/)
|
||||
|
||||
|
||||
extern const char errormagic[] PROGMEM;
|
||||
|
|
@ -110,15 +111,9 @@ void serial_echopair_P(const char *s_P, unsigned long v);
|
|||
|
||||
|
||||
//Things to write to serial from Program memory. Saves 400 to 2k of RAM.
|
||||
FORCE_INLINE void serialprintPGM(const char *str)
|
||||
{
|
||||
char ch=pgm_read_byte(str);
|
||||
while(ch)
|
||||
{
|
||||
MYSERIAL.write(ch);
|
||||
ch=pgm_read_byte(++str);
|
||||
}
|
||||
}
|
||||
// Making this FORCE_INLINE is not a good idea when running out of FLASH
|
||||
// I'd rather skip a few CPU ticks than 5.5KB (!!) of FLASH
|
||||
void serialprintPGM(const char *str);
|
||||
|
||||
bool is_buffer_empty();
|
||||
void get_command();
|
||||
|
|
@ -171,6 +166,17 @@ void manage_inactivity(bool ignore_stepper_queue=false);
|
|||
#define disable_z() {}
|
||||
#endif
|
||||
|
||||
#ifdef PSU_Delta
|
||||
void init_force_z();
|
||||
void check_force_z();
|
||||
#undef disable_z
|
||||
#define disable_z() disable_force_z()
|
||||
void disable_force_z();
|
||||
#undef enable_z
|
||||
#define enable_z() enable_force_z()
|
||||
void enable_force_z();
|
||||
#endif // PSU_Delta
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -213,6 +219,9 @@ void manage_inactivity(bool ignore_stepper_queue=false);
|
|||
#endif
|
||||
|
||||
|
||||
#define FARM_FILAMENT_COLOR_NONE 99;
|
||||
|
||||
|
||||
enum AxisEnum {X_AXIS=0, Y_AXIS=1, Z_AXIS=2, E_AXIS=3, X_HEAD=4, Y_HEAD=5};
|
||||
#define X_AXIS_MASK 1
|
||||
#define Y_AXIS_MASK 2
|
||||
|
|
@ -284,6 +293,7 @@ void setPwmFrequency(uint8_t pin, int val);
|
|||
#define CRITICAL_SECTION_END SREG = _sreg;
|
||||
#endif //CRITICAL_SECTION_START
|
||||
|
||||
extern bool fans_check_enabled;
|
||||
extern float homing_feedrate[];
|
||||
extern bool axis_relative_modes[];
|
||||
extern int feedmultiply;
|
||||
|
|
@ -296,9 +306,19 @@ extern float min_pos[3];
|
|||
extern float max_pos[3];
|
||||
extern bool axis_known_position[3];
|
||||
extern int fanSpeed;
|
||||
extern void homeaxis(int axis, uint8_t cnt = 1, uint8_t* pstep = 0);
|
||||
extern int8_t lcd_change_fil_state;
|
||||
|
||||
const char smooth1[] PROGMEM = "Smooth1";
|
||||
const char smooth2[] PROGMEM = "Smooth2";
|
||||
const char textured[] PROGMEM = "Textur1";
|
||||
const char *const defaultSheetNames[] PROGMEM = {smooth1,smooth2,textured};
|
||||
|
||||
#ifdef TMC2130
|
||||
void homeaxis(int axis, uint8_t cnt = 1, uint8_t* pstep = 0);
|
||||
#else
|
||||
void homeaxis(int axis, uint8_t cnt = 1);
|
||||
#endif //TMC2130
|
||||
|
||||
|
||||
#ifdef FAN_SOFT_PWM
|
||||
extern unsigned char fanSpeedSoftPwm;
|
||||
|
|
@ -310,9 +330,8 @@ extern float retract_length_swap;
|
|||
extern float retract_recover_length_swap;
|
||||
#endif
|
||||
|
||||
#ifdef HOST_KEEPALIVE_FEATURE
|
||||
|
||||
extern uint8_t host_keepalive_interval;
|
||||
#endif
|
||||
|
||||
extern unsigned long starttime;
|
||||
extern unsigned long stoptime;
|
||||
|
|
@ -382,7 +401,15 @@ extern bool wizard_active; //autoload temporarily disabled during wizard
|
|||
extern LongTimer safetyTimer;
|
||||
|
||||
#define PRINT_PERCENT_DONE_INIT 0xff
|
||||
#define PRINTER_ACTIVE (IS_SD_PRINTING || is_usb_printing || isPrintPaused || (custom_message_type == CUSTOM_MSG_TYPE_TEMCAL) || saved_printing || (lcd_commands_type == LCD_COMMAND_V2_CAL) || card.paused || mmu_print_saved)
|
||||
#define PRINTER_ACTIVE (IS_SD_PRINTING || is_usb_printing || isPrintPaused || (custom_message_type == CustomMsg::TempCal) || saved_printing || (lcd_commands_type == LcdCommands::Layer1Cal) || card.paused || mmu_print_saved)
|
||||
|
||||
//! Beware - mcode_in_progress is set as soon as the command gets really processed,
|
||||
//! which is not the same as posting the M600 command into the command queue
|
||||
//! There can be a considerable lag between posting M600 and its real processing which might result
|
||||
//! in posting multiple M600's into the command queue
|
||||
//! Instead, the fsensor uses another state variable :( , which is set to true, when the M600 command is enqued
|
||||
//! and is reset to false when the fsensor returns into its filament runout finished handler
|
||||
//! I'd normally change this macro, but who knows what would happen in the MMU :)
|
||||
#define CHECK_FSENSOR ((IS_SD_PRINTING || is_usb_printing) && (mcode_in_progress != 600) && !saved_printing && e_active())
|
||||
|
||||
extern void calculate_extruder_multipliers();
|
||||
|
|
@ -396,13 +423,12 @@ extern void check_babystep();
|
|||
extern void long_pause();
|
||||
extern void crashdet_stop_and_save_print();
|
||||
|
||||
#ifdef DIS
|
||||
|
||||
#ifdef HEATBED_ANALYSIS
|
||||
void d_setup();
|
||||
float d_ReadData();
|
||||
void bed_analysis(float x_dimension, float y_dimension, int x_points_num, int y_points_num, float shift_x, float shift_y);
|
||||
|
||||
#endif
|
||||
void bed_check(float x_dimension, float y_dimension, int x_points_num, int y_points_num, float shift_x, float shift_y);
|
||||
#endif //HEATBED_ANALYSIS
|
||||
float temp_comp_interpolation(float temperature);
|
||||
void temp_compensation_apply();
|
||||
void temp_compensation_start();
|
||||
|
|
@ -442,7 +468,7 @@ extern void restore_print_from_ram_and_continue(float e_move);
|
|||
extern uint16_t print_time_remaining();
|
||||
extern uint8_t calc_percent_done();
|
||||
|
||||
#ifdef HOST_KEEPALIVE_FEATURE
|
||||
|
||||
|
||||
// States for managing Marlin and host communication
|
||||
// Marlin sends messages if blocked or busy
|
||||
|
|
@ -463,9 +489,8 @@ extern uint8_t calc_percent_done();
|
|||
#define KEEPALIVE_STATE(n) do { busy_state = n;} while (0)
|
||||
extern void host_keepalive();
|
||||
//extern MarlinBusyState busy_state;
|
||||
extern int busy_state;
|
||||
extern int8_t busy_state;
|
||||
|
||||
#endif //HOST_KEEPALIVE_FEATURE
|
||||
|
||||
#ifdef TMC2130
|
||||
|
||||
|
|
@ -477,8 +502,6 @@ void force_high_power_mode(bool start_high_power_section);
|
|||
#endif //TMC2130
|
||||
|
||||
// G-codes
|
||||
void gcode_G28(bool home_x_axis, long home_x_value, bool home_y_axis, long home_y_value, bool home_z_axis, long home_z_value, bool calib, bool without_mbl);
|
||||
void gcode_G28(bool home_x_axis, bool home_y_axis, bool home_z_axis);
|
||||
|
||||
bool gcode_M45(bool onlyZ, int8_t verbosity_level);
|
||||
void gcode_M114();
|
||||
|
|
@ -492,5 +515,7 @@ void proc_commands();
|
|||
void M600_load_filament();
|
||||
void M600_load_filament_movements();
|
||||
void M600_wait_for_user(float HotendTempBckp);
|
||||
void M600_check_state();
|
||||
void M600_check_state(float nozzle_temp);
|
||||
void load_filament_final_feed();
|
||||
void marlin_wait_for_click();
|
||||
void marlin_rise_z(void);
|
||||
|
|
|
|||
|
|
@ -96,7 +96,7 @@ class MarlinSerial //: public Stream
|
|||
static int read(void);
|
||||
static void flush(void);
|
||||
|
||||
static FORCE_INLINE int available(void)
|
||||
static /*FORCE_INLINE*/ int available(void)
|
||||
{
|
||||
return (unsigned int)(RX_BUFFER_SIZE + rx_buffer.head - rx_buffer.tail) % RX_BUFFER_SIZE;
|
||||
}
|
||||
|
|
@ -184,14 +184,14 @@ class MarlinSerial //: public Stream
|
|||
|
||||
public:
|
||||
|
||||
static FORCE_INLINE void write(const char *str)
|
||||
static /*FORCE_INLINE*/ void write(const char *str)
|
||||
{
|
||||
while (*str)
|
||||
write(*str++);
|
||||
}
|
||||
|
||||
|
||||
static FORCE_INLINE void write(const uint8_t *buffer, size_t size)
|
||||
static /*FORCE_INLINE*/ void write(const uint8_t *buffer, size_t size)
|
||||
{
|
||||
while (size--)
|
||||
write(*buffer++);
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -94,7 +94,7 @@ void CardReader::lsDive(const char *prepend, SdFile parent, const char * const m
|
|||
if (!dir.open(parent, lfilename, O_READ)) {
|
||||
if (lsAction == LS_SerialPrint) {
|
||||
//SERIAL_ECHO_START();
|
||||
//SERIAL_ECHOPGM(_i("Cannot open subdir"));////MSG_SD_CANT_OPEN_SUBDIR c=0 r=0
|
||||
//SERIAL_ECHOPGM(_i("Cannot open subdir"));////MSG_SD_CANT_OPEN_SUBDIR
|
||||
//SERIAL_ECHOLN(lfilename);
|
||||
}
|
||||
}
|
||||
|
|
@ -183,23 +183,23 @@ void CardReader::initsd()
|
|||
{
|
||||
//if (!card.init(SPI_HALF_SPEED,SDSS))
|
||||
SERIAL_ECHO_START;
|
||||
SERIAL_ECHOLNRPGM(_n("SD init fail"));////MSG_SD_INIT_FAIL c=0 r=0
|
||||
SERIAL_ECHOLNRPGM(_n("SD init fail"));////MSG_SD_INIT_FAIL
|
||||
}
|
||||
else if (!volume.init(&card))
|
||||
{
|
||||
SERIAL_ERROR_START;
|
||||
SERIAL_ERRORLNRPGM(_n("volume.init failed"));////MSG_SD_VOL_INIT_FAIL c=0 r=0
|
||||
SERIAL_ERRORLNRPGM(_n("volume.init failed"));////MSG_SD_VOL_INIT_FAIL
|
||||
}
|
||||
else if (!root.openRoot(&volume))
|
||||
{
|
||||
SERIAL_ERROR_START;
|
||||
SERIAL_ERRORLNRPGM(_n("openRoot failed"));////MSG_SD_OPENROOT_FAIL c=0 r=0
|
||||
SERIAL_ERRORLNRPGM(_n("openRoot failed"));////MSG_SD_OPENROOT_FAIL
|
||||
}
|
||||
else
|
||||
{
|
||||
cardOK = true;
|
||||
SERIAL_ECHO_START;
|
||||
SERIAL_ECHOLNRPGM(_n("SD card ok"));////MSG_SD_CARD_OK c=0 r=0
|
||||
SERIAL_ECHOLNRPGM(_n("SD card ok"));////MSG_SD_CARD_OK
|
||||
}
|
||||
workDir=root;
|
||||
curDir=&root;
|
||||
|
|
@ -242,6 +242,7 @@ void CardReader::startFileprint()
|
|||
{
|
||||
sdprinting = true;
|
||||
paused = false;
|
||||
Stopped = false;
|
||||
#ifdef SDCARD_SORT_ALPHA
|
||||
//flush_presort();
|
||||
#endif
|
||||
|
|
@ -418,13 +419,13 @@ void CardReader::openFile(const char* name,bool read, bool replace_current/*=tru
|
|||
if (file.open(curDir, fname, O_READ))
|
||||
{
|
||||
filesize = file.fileSize();
|
||||
SERIAL_PROTOCOLRPGM(_N("File opened: "));////MSG_SD_FILE_OPENED c=0 r=0
|
||||
SERIAL_PROTOCOLRPGM(_N("File opened: "));////MSG_SD_FILE_OPENED
|
||||
SERIAL_PROTOCOL(fname);
|
||||
SERIAL_PROTOCOLRPGM(_n(" Size: "));////MSG_SD_SIZE c=0 r=0
|
||||
SERIAL_PROTOCOLRPGM(_n(" Size: "));////MSG_SD_SIZE
|
||||
SERIAL_PROTOCOLLN(filesize);
|
||||
sdpos = 0;
|
||||
|
||||
SERIAL_PROTOCOLLNRPGM(_N("File selected"));////MSG_SD_FILE_SELECTED c=0 r=0
|
||||
SERIAL_PROTOCOLLNRPGM(_N("File selected"));////MSG_SD_FILE_SELECTED
|
||||
getfilename(0, fname);
|
||||
lcd_setstatus(longFilename[0] ? longFilename : fname);
|
||||
lcd_setstatus("SD-PRINTING ");
|
||||
|
|
@ -447,7 +448,7 @@ void CardReader::openFile(const char* name,bool read, bool replace_current/*=tru
|
|||
else
|
||||
{
|
||||
saving = true;
|
||||
SERIAL_PROTOCOLRPGM(_N("Writing to file: "));////MSG_SD_WRITE_TO_FILE c=0 r=0
|
||||
SERIAL_PROTOCOLRPGM(_N("Writing to file: "));////MSG_SD_WRITE_TO_FILE
|
||||
SERIAL_PROTOCOLLN(name);
|
||||
lcd_setstatus(fname);
|
||||
}
|
||||
|
|
@ -493,7 +494,7 @@ void CardReader::getStatus()
|
|||
if(sdprinting){
|
||||
SERIAL_PROTOCOL(longFilename);
|
||||
SERIAL_PROTOCOLPGM("\n");
|
||||
SERIAL_PROTOCOLRPGM(_N("SD printing byte "));////MSG_SD_PRINTING_BYTE c=0 r=0
|
||||
SERIAL_PROTOCOLRPGM(_N("SD printing byte "));////MSG_SD_PRINTING_BYTE
|
||||
SERIAL_PROTOCOL(sdpos);
|
||||
SERIAL_PROTOCOLPGM("/");
|
||||
SERIAL_PROTOCOLLN(filesize);
|
||||
|
|
@ -659,7 +660,7 @@ void CardReader::chdir(const char * relpath)
|
|||
if(!newfile.open(*parent,relpath, O_READ))
|
||||
{
|
||||
SERIAL_ECHO_START;
|
||||
SERIAL_ECHORPGM(_n("Cannot enter subdir: "));////MSG_SD_CANT_ENTER_SUBDIR c=0 r=0
|
||||
SERIAL_ECHORPGM(_n("Cannot enter subdir: "));////MSG_SD_CANT_ENTER_SUBDIR
|
||||
SERIAL_ECHOLN(relpath);
|
||||
}
|
||||
else
|
||||
|
|
|
|||
|
|
@ -161,6 +161,7 @@ private:
|
|||
void flush_presort();
|
||||
#endif
|
||||
};
|
||||
extern bool Stopped;
|
||||
extern CardReader card;
|
||||
#define IS_SD_PRINTING (card.sdprinting)
|
||||
|
||||
|
|
|
|||
|
|
@ -94,7 +94,11 @@ void cmdqueue_reset()
|
|||
bufindr = 0;
|
||||
bufindw = 0;
|
||||
buflen = 0;
|
||||
cmdbuffer_front_already_processed = false;
|
||||
|
||||
//commands are removed from command queue after process_command() function is finished
|
||||
//reseting command queue and enqueing new commands during some (usually long running) command processing would cause that new commands are immediately removed from queue (or damaged)
|
||||
//this will ensure that all new commands which are enqueued after cmdqueue reset, will be always executed
|
||||
cmdbuffer_front_already_processed = true;
|
||||
}
|
||||
|
||||
// How long a string could be pushed to the front of the command queue?
|
||||
|
|
@ -425,7 +429,7 @@ void get_command()
|
|||
// M110 - set current line number.
|
||||
// Line numbers not sent in succession.
|
||||
SERIAL_ERROR_START;
|
||||
SERIAL_ERRORRPGM(_n("Line Number is not Last Line Number+1, Last Line: "));////MSG_ERR_LINE_NO c=0 r=0
|
||||
SERIAL_ERRORRPGM(_n("Line Number is not Last Line Number+1, Last Line: "));////MSG_ERR_LINE_NO
|
||||
SERIAL_ERRORLN(gcode_LastN);
|
||||
//Serial.println(gcode_N);
|
||||
FlushSerialRequestResend();
|
||||
|
|
@ -441,7 +445,7 @@ void get_command()
|
|||
checksum = checksum^(*p++);
|
||||
if (int(strtol(strchr_pointer+1, NULL, 10)) != int(checksum)) {
|
||||
SERIAL_ERROR_START;
|
||||
SERIAL_ERRORRPGM(_n("checksum mismatch, Last Line: "));////MSG_ERR_CHECKSUM_MISMATCH c=0 r=0
|
||||
SERIAL_ERRORRPGM(_n("checksum mismatch, Last Line: "));////MSG_ERR_CHECKSUM_MISMATCH
|
||||
SERIAL_ERRORLN(gcode_LastN);
|
||||
FlushSerialRequestResend();
|
||||
serial_count = 0;
|
||||
|
|
@ -453,7 +457,7 @@ void get_command()
|
|||
else
|
||||
{
|
||||
SERIAL_ERROR_START;
|
||||
SERIAL_ERRORRPGM(_n("No Checksum with line number, Last Line: "));////MSG_ERR_NO_CHECKSUM c=0 r=0
|
||||
SERIAL_ERRORRPGM(_n("No Checksum with line number, Last Line: "));////MSG_ERR_NO_CHECKSUM
|
||||
SERIAL_ERRORLN(gcode_LastN);
|
||||
FlushSerialRequestResend();
|
||||
serial_count = 0;
|
||||
|
|
@ -470,7 +474,7 @@ void get_command()
|
|||
{
|
||||
|
||||
SERIAL_ERROR_START;
|
||||
SERIAL_ERRORRPGM(_n("No Line Number with checksum, Last Line: "));////MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM c=0 r=0
|
||||
SERIAL_ERRORRPGM(_n("No Line Number with checksum, Last Line: "));////MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM
|
||||
SERIAL_ERRORLN(gcode_LastN);
|
||||
FlushSerialRequestResend();
|
||||
serial_count = 0;
|
||||
|
|
@ -575,7 +579,7 @@ void get_command()
|
|||
serial_count >= (MAX_CMD_SIZE - 1) || n==-1)
|
||||
{
|
||||
if(card.eof()){
|
||||
SERIAL_PROTOCOLLNRPGM(_n("Done printing file"));////MSG_FILE_PRINTED c=0 r=0
|
||||
SERIAL_PROTOCOLLNRPGM(_n("Done printing file"));////MSG_FILE_PRINTED
|
||||
stoptime=_millis();
|
||||
char time[30];
|
||||
unsigned long t=(stoptime-starttime-pause_time)/1000;
|
||||
|
|
@ -594,7 +598,7 @@ void get_command()
|
|||
if (farm_mode)
|
||||
{
|
||||
prusa_statistics(6);
|
||||
lcd_commands_type = LCD_COMMAND_FARM_MODE_CONFIRM;
|
||||
lcd_commands_type = LcdCommands::FarmModeConfirm;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,10 +42,14 @@
|
|||
#define W25X20CL_SPCR SPI_SPCR(W25X20CL_SPI_RATE, 1, 1, 1, 0)
|
||||
#define W25X20CL_SPSR SPI_SPSR(W25X20CL_SPI_RATE)
|
||||
|
||||
#include "boards.h"
|
||||
#include "Configuration_prusa.h"
|
||||
|
||||
//LANG - Multi-language support
|
||||
//#define LANG_MODE 0 // primary language only
|
||||
#define LANG_MODE 1 // sec. language support
|
||||
#define LANG_SIZE_RESERVED 0x2f00 // reserved space for secondary language (12032 bytes)
|
||||
|
||||
#define LANG_SIZE_RESERVED 0x2800 // reserved space for secondary language (10240 bytes)
|
||||
|
||||
|
||||
#endif //_CONFIG_H
|
||||
|
|
|
|||
|
|
@ -2050,7 +2050,7 @@ PERLMOD_MAKEVAR_PREFIX =
|
|||
# C-preprocessor directives found in the sources and include files.
|
||||
# The default value is: YES.
|
||||
|
||||
ENABLE_PREPROCESSING = YES
|
||||
ENABLE_PREPROCESSING = NO
|
||||
|
||||
# If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names
|
||||
# in the source code. If set to NO, only conditional compilation will be
|
||||
|
|
|
|||
|
|
@ -0,0 +1,95 @@
|
|||
//! @file
|
||||
//! @date Jun 20, 2019
|
||||
//! @author Marek Běl
|
||||
|
||||
#include "eeprom.h"
|
||||
#include "Marlin.h"
|
||||
|
||||
#include <avr/eeprom.h>
|
||||
#include <stdint.h>
|
||||
|
||||
|
||||
#include "language.h"
|
||||
|
||||
#if 0
|
||||
template <typename T>
|
||||
static T eeprom_read(T *address);
|
||||
|
||||
template<>
|
||||
char eeprom_read<char>(char *address)
|
||||
{
|
||||
return eeprom_read_byte(reinterpret_cast<uint8_t*>(address));
|
||||
}
|
||||
#endif
|
||||
|
||||
template <typename T>
|
||||
static void eeprom_write(T *address, T value);
|
||||
|
||||
template<>
|
||||
void eeprom_write<char>(char *addres, char value)
|
||||
{
|
||||
eeprom_write_byte(reinterpret_cast<uint8_t*>(addres), static_cast<uint8_t>(value));
|
||||
}
|
||||
|
||||
|
||||
template <typename T>
|
||||
static bool eeprom_is_uninitialized(T *address);
|
||||
|
||||
template <>
|
||||
bool eeprom_is_uninitialized<char>(char *address)
|
||||
{
|
||||
return (0xff == eeprom_read_byte(reinterpret_cast<uint8_t*>(address)));
|
||||
}
|
||||
|
||||
bool is_sheet_initialized(uint8_t sheet_num){
|
||||
return (0xffff != eeprom_read_word(reinterpret_cast<uint16_t*>(&(EEPROM_Sheets_base->
|
||||
s[sheet_num].z_offset))));
|
||||
}
|
||||
|
||||
void eeprom_init()
|
||||
{
|
||||
if (eeprom_read_byte((uint8_t*)EEPROM_POWER_COUNT) == 0xff) eeprom_write_byte((uint8_t*)EEPROM_POWER_COUNT, 0);
|
||||
if (eeprom_read_byte((uint8_t*)EEPROM_CRASH_COUNT_X) == 0xff) eeprom_write_byte((uint8_t*)EEPROM_CRASH_COUNT_X, 0);
|
||||
if (eeprom_read_byte((uint8_t*)EEPROM_CRASH_COUNT_Y) == 0xff) eeprom_write_byte((uint8_t*)EEPROM_CRASH_COUNT_Y, 0);
|
||||
if (eeprom_read_byte((uint8_t*)EEPROM_FERROR_COUNT) == 0xff) eeprom_write_byte((uint8_t*)EEPROM_FERROR_COUNT, 0);
|
||||
if (eeprom_read_word((uint16_t*)EEPROM_POWER_COUNT_TOT) == 0xffff) eeprom_write_word((uint16_t*)EEPROM_POWER_COUNT_TOT, 0);
|
||||
if (eeprom_read_word((uint16_t*)EEPROM_CRASH_COUNT_X_TOT) == 0xffff) eeprom_write_word((uint16_t*)EEPROM_CRASH_COUNT_X_TOT, 0);
|
||||
if (eeprom_read_word((uint16_t*)EEPROM_CRASH_COUNT_Y_TOT) == 0xffff) eeprom_write_word((uint16_t*)EEPROM_CRASH_COUNT_Y_TOT, 0);
|
||||
if (eeprom_read_word((uint16_t*)EEPROM_FERROR_COUNT_TOT) == 0xffff) eeprom_write_word((uint16_t*)EEPROM_FERROR_COUNT_TOT, 0);
|
||||
|
||||
if (eeprom_read_word((uint16_t*)EEPROM_MMU_FAIL_TOT) == 0xffff) eeprom_update_word((uint16_t *)EEPROM_MMU_FAIL_TOT, 0);
|
||||
if (eeprom_read_word((uint16_t*)EEPROM_MMU_LOAD_FAIL_TOT) == 0xffff) eeprom_update_word((uint16_t *)EEPROM_MMU_LOAD_FAIL_TOT, 0);
|
||||
if (eeprom_read_byte((uint8_t*)EEPROM_MMU_FAIL) == 0xff) eeprom_update_byte((uint8_t *)EEPROM_MMU_FAIL, 0);
|
||||
if (eeprom_read_byte((uint8_t*)EEPROM_MMU_LOAD_FAIL) == 0xff) eeprom_update_byte((uint8_t *)EEPROM_MMU_LOAD_FAIL, 0);
|
||||
if (eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet)) == 0xff) eeprom_update_byte(&(EEPROM_Sheets_base->active_sheet), 0);
|
||||
|
||||
for (uint_least8_t i = 0; i < (sizeof(Sheets::s)/sizeof(Sheets::s[0])); ++i)
|
||||
{
|
||||
bool is_uninitialized = true;
|
||||
for (uint_least8_t j = 0; j < (sizeof(Sheet::name)/sizeof(Sheet::name[0])); ++j)
|
||||
{
|
||||
if (!eeprom_is_uninitialized(&(EEPROM_Sheets_base->s[i].name[j]))) is_uninitialized = false;
|
||||
}
|
||||
if(is_uninitialized)
|
||||
{
|
||||
|
||||
char sheet_PROGMEM_buffer[8];
|
||||
strcpy_P(sheet_PROGMEM_buffer, (char *)pgm_read_word(&(defaultSheetNames[i])));
|
||||
for (uint_least8_t a = 0; a < sizeof(Sheet::name); ++a){
|
||||
eeprom_write(&(EEPROM_Sheets_base->s[i].name[a]), sheet_PROGMEM_buffer[a]);
|
||||
}
|
||||
|
||||
// When upgrading from version older version (before multiple sheets were implemented in v3.8.0)
|
||||
// Sheet 1 uses the previous Live adjust Z (@EEPROM_BABYSTEP_Z)
|
||||
if(i == 0){
|
||||
int last_babystep = eeprom_read_word((uint16_t *)EEPROM_BABYSTEP_Z);
|
||||
eeprom_write_word(reinterpret_cast<uint16_t *>(&(EEPROM_Sheets_base->s[i].z_offset)), last_babystep);
|
||||
}
|
||||
}
|
||||
}
|
||||
check_babystep();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,6 +1,36 @@
|
|||
#ifndef EEPROM_H
|
||||
#define EEPROM_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
void eeprom_init();
|
||||
extern bool is_sheet_initialized(uint8_t sheet_num);
|
||||
#endif
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
char name[7]; //!< Can be null terminated, doesn't need to be null terminated
|
||||
int16_t z_offset; //!< Z_BABYSTEP_MIN .. Z_BABYSTEP_MAX = Z_BABYSTEP_MIN*2/1000 [mm] .. Z_BABYSTEP_MAX*2/1000 [mm]
|
||||
uint8_t bed_temp; //!< 0 .. 254 [°C]
|
||||
uint8_t pinda_temp; //!< 0 .. 254 [°C]
|
||||
} Sheet;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Sheet s[3];
|
||||
uint8_t active_sheet;
|
||||
} Sheets;
|
||||
// sizeof(Sheets). Do not change it unless EEPROM_Sheets_base is last item in EEPROM.
|
||||
// Otherwise it would move following items.
|
||||
#define EEPROM_SHEETS_SIZEOF 34
|
||||
|
||||
#ifdef __cplusplus
|
||||
static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEPROM_SHEETS_SIZEOF.");
|
||||
#endif
|
||||
|
||||
#define EEPROM_EMPTY_VALUE 0xFF
|
||||
// The total size of the EEPROM is
|
||||
// 4096 for the Atmega2560
|
||||
#define EEPROM_TOP 4096
|
||||
|
|
@ -153,32 +183,34 @@
|
|||
|
||||
#define EEPROM_MMU_LOAD_FAIL_TOT (EEPROM_MMU_FAIL - 2) //uint16_t
|
||||
#define EEPROM_MMU_LOAD_FAIL (EEPROM_MMU_LOAD_FAIL_TOT - 1) //uint8_t
|
||||
#define EEPROM_MMU_CUTTER_ENABLED (EEPROM_MMU_LOAD_FAIL - 1)
|
||||
#define EEPROM_UVLO_MESH_BED_LEVELING_FULL (EEPROM_MMU_CUTTER_ENABLED - 12*12*2) //allow 12 calibration points for future expansion
|
||||
|
||||
#define EEPROM_MBL_TYPE (EEPROM_UVLO_MESH_BED_LEVELING_FULL-1) //uint8_t for mesh bed leveling precision
|
||||
#define EEPROM_MBL_MAGNET_ELIMINATION (EEPROM_MBL_TYPE -1)
|
||||
#define EEPROM_MBL_POINTS_NR (EEPROM_MBL_MAGNET_ELIMINATION -1) //uint8_t number of points in one exis for mesh bed leveling
|
||||
#define EEPROM_MBL_PROBE_NR (EEPROM_MBL_POINTS_NR-1) //number of measurements for each point
|
||||
|
||||
#define EEPROM_MMU_STEALTH (EEPROM_MBL_PROBE_NR-1)
|
||||
|
||||
#define EEPROM_CHECK_MODE (EEPROM_MMU_STEALTH-1) // uint8
|
||||
#define EEPROM_NOZZLE_DIAMETER (EEPROM_CHECK_MODE-1) // uint8
|
||||
#define EEPROM_NOZZLE_DIAMETER_uM (EEPROM_NOZZLE_DIAMETER-2) // uint16
|
||||
#define EEPROM_CHECK_MODEL (EEPROM_NOZZLE_DIAMETER_uM-1) // uint8
|
||||
#define EEPROM_CHECK_VERSION (EEPROM_CHECK_MODEL-1) // uint8
|
||||
#define EEPROM_CHECK_GCODE (EEPROM_CHECK_VERSION-1) // uint8
|
||||
|
||||
#define EEPROM_SHEETS_BASE (EEPROM_CHECK_GCODE - EEPROM_SHEETS_SIZEOF) // Sheets
|
||||
static Sheets * const EEPROM_Sheets_base = (Sheets*)(EEPROM_SHEETS_BASE);
|
||||
|
||||
|
||||
//This is supposed to point to last item to allow EEPROM overrun check. Please update when adding new items.
|
||||
#define EEPROM_LAST_ITEM EEPROM_SHEETS_BASE
|
||||
// !!!!!
|
||||
// !!!!! this is end of EEPROM section ... all updates MUST BE inserted before this mark !!!!!
|
||||
// !!!!!
|
||||
|
||||
//TMC2130 configuration
|
||||
#define EEPROM_TMC_AXIS_SIZE //axis configuration block size
|
||||
#define EEPROM_TMC_X (EEPROM_TMC + 0 * EEPROM_TMC_AXIS_SIZE) //X axis configuration blok
|
||||
#define EEPROM_TMC_Y (EEPROM_TMC + 1 * EEPROM_TMC_AXIS_SIZE) //Y axis
|
||||
#define EEPROM_TMC_Z (EEPROM_TMC + 2 * EEPROM_TMC_AXIS_SIZE) //Z axis
|
||||
#define EEPROM_TMC_E (EEPROM_TMC + 3 * EEPROM_TMC_AXIS_SIZE) //E axis
|
||||
//TMC2130 - X axis
|
||||
#define EEPROM_TMC_X_USTEPS_INTPOL (EEPROM_TMC_X + 0) // 1byte, bit 0..4 USTEPS, bit 7 INTPOL
|
||||
#define EEPROM_TMC_X_PWM_AMPL (EEPROM_TMC_X + 1) // 1byte (0..255)
|
||||
#define EEPROM_TMC_X_PWM_GRAD_FREQ (EEPROM_TMC_X + 2) // 1byte, bit 0..3 GRAD, bit 4..5 FREQ
|
||||
#define EEPROM_TMC_X_TCOOLTHRS (EEPROM_TMC_X + 3) // 2bytes (0..)
|
||||
#define EEPROM_TMC_X_SG_THRS (EEPROM_TMC_X + 5) // 1byte, (-64..+63)
|
||||
#define EEPROM_TMC_X_CURRENT_H (EEPROM_TMC_X + 6) // 1byte, (0..63)
|
||||
#define EEPROM_TMC_X_CURRENT_R (EEPROM_TMC_X + 7) // 1byte, (0..63)
|
||||
#define EEPROM_TMC_X_HOME_SG_THRS (EEPROM_TMC_X + 8) // 1byte, (-64..+63)
|
||||
#define EEPROM_TMC_X_HOME_CURRENT_R (EEPROM_TMC_X + 9) // 1byte, (-64..+63)
|
||||
#define EEPROM_TMC_X_HOME_DTCOOLTHRS (EEPROM_TMC_X + 10) // 1byte (-128..+127)
|
||||
#define EEPROM_TMC_X_DTCOOLTHRS_LOW (EEPROM_TMC_X + 11) // 1byte (-128..+127)
|
||||
#define EEPROM_TMC_X_DTCOOLTHRS_HIGH (EEPROM_TMC_X + 12) // 1byte (-128..+127)
|
||||
#define EEPROM_TMC_X_SG_THRS_LOW (EEPROM_TMC_X + 13) // 1byte, (-64..+63)
|
||||
#define EEPROM_TMC_X_SG_THRS_HIGH (EEPROM_TMC_X + 14) // 1byte, (-64..+63)
|
||||
|
||||
|
||||
// Currently running firmware, each digit stored as uint16_t.
|
||||
// The flavor differentiates a dev, alpha, beta, release candidate or a release version.
|
||||
|
|
@ -192,8 +224,16 @@
|
|||
|
||||
#ifdef __cplusplus
|
||||
#include "ConfigurationStore.h"
|
||||
static M500_conf * const EEPROM_M500_base = reinterpret_cast<M500_conf*>(20); //offset for storing settings using M500
|
||||
static_assert(EEPROM_FIRMWARE_VERSION_END < 20, "Firmware version EEPROM address conflicts with EEPROM_M500_base");
|
||||
static constexpr M500_conf * const EEPROM_M500_base = reinterpret_cast<M500_conf*>(20); //offset for storing settings using M500
|
||||
static_assert(((sizeof(M500_conf) + 20) < EEPROM_LAST_ITEM), "M500_conf address space conflicts with previous items.");
|
||||
#endif
|
||||
|
||||
enum
|
||||
{
|
||||
EEPROM_MMU_CUTTER_ENABLED_enabled = 1,
|
||||
EEPROM_MMU_CUTTER_ENABLED_always = 2,
|
||||
};
|
||||
|
||||
|
||||
#endif // EEPROM_H
|
||||
|
|
|
|||
|
|
@ -0,0 +1,214 @@
|
|||
//! @file
|
||||
//! @date Jun 10, 2019
|
||||
//! @author Marek Bel
|
||||
//! @brief First layer (Z offset) calibration
|
||||
|
||||
#include "first_lay_cal.h"
|
||||
#include "Configuration_prusa.h"
|
||||
#include "language.h"
|
||||
#include "Marlin.h"
|
||||
#include "mmu.h"
|
||||
#include <avr/pgmspace.h>
|
||||
|
||||
//! @brief Preheat
|
||||
void lay1cal_preheat()
|
||||
{
|
||||
static const char cmd_preheat_0[] PROGMEM = "M107";
|
||||
static const char cmd_preheat_1[] PROGMEM = "M104 S" STRINGIFY(PLA_PREHEAT_HOTEND_TEMP);
|
||||
static const char cmd_preheat_2[] PROGMEM = "M140 S" STRINGIFY(PLA_PREHEAT_HPB_TEMP);
|
||||
static const char cmd_preheat_3[] PROGMEM = "M190 S" STRINGIFY(PLA_PREHEAT_HPB_TEMP);
|
||||
static const char cmd_preheat_4[] PROGMEM = "M109 S" STRINGIFY(PLA_PREHEAT_HOTEND_TEMP);
|
||||
static const char cmd_preheat_5[] PROGMEM = "G28";
|
||||
static const char cmd_preheat_6[] PROGMEM = "G92 E0.0";
|
||||
|
||||
static const char * const preheat_cmd[] PROGMEM =
|
||||
{
|
||||
cmd_preheat_0,
|
||||
cmd_preheat_1,
|
||||
cmd_preheat_2,
|
||||
cmd_preheat_3,
|
||||
cmd_preheat_4,
|
||||
cmd_preheat_5, //call MSG_M117_V2_CALIBRATION before
|
||||
cmd_preheat_6,
|
||||
};
|
||||
|
||||
for (uint8_t i = 0; i < (sizeof(preheat_cmd)/sizeof(preheat_cmd[0])); ++i)
|
||||
{
|
||||
if (5 == i) enquecommand_P(_T(MSG_M117_V2_CALIBRATION));
|
||||
enquecommand_P(static_cast<char*>(pgm_read_ptr(&preheat_cmd[i])));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//! @brief Print intro line
|
||||
//! @param cmd_buffer character buffer needed to format gcodes
|
||||
//! @param filament filament to use (applies for MMU only)
|
||||
void lay1cal_intro_line(char *cmd_buffer, uint8_t filament)
|
||||
{
|
||||
static const char cmd_intro_mmu_0[] PROGMEM = "M83";
|
||||
static const char cmd_intro_mmu_1[] PROGMEM = "G1 Y-3.0 F1000.0";
|
||||
static const char cmd_intro_mmu_2[] PROGMEM = "G1 Z0.4 F1000.0";
|
||||
static const char cmd_intro_mmu_3[] PROGMEM = "G1 X55.0 E32.0 F1073.0"; // call T code before
|
||||
static const char cmd_intro_mmu_4[] PROGMEM = "G1 X5.0 E32.0 F1800.0";
|
||||
static const char cmd_intro_mmu_5[] PROGMEM = "G1 X55.0 E8.0 F2000.0";
|
||||
static const char cmd_intro_mmu_6[] PROGMEM = "G1 Z0.3 F1000.0";
|
||||
static const char cmd_intro_mmu_7[] PROGMEM = "G92 E0.0";
|
||||
static const char cmd_intro_mmu_8[] PROGMEM = "G1 X240.0 E25.0 F2200.0";
|
||||
static const char cmd_intro_mmu_9[] PROGMEM = "G1 Y-2.0 F1000.0";
|
||||
static const char cmd_intro_mmu_10[] PROGMEM = "G1 X55.0 E25 F1400.0";
|
||||
static const char cmd_intro_mmu_11[] PROGMEM = "G1 Z0.20 F1000.0";
|
||||
static const char cmd_intro_mmu_12[] PROGMEM = "G1 X5.0 E4.0 F1000.0";
|
||||
|
||||
static const char * const intro_mmu_cmd[] PROGMEM =
|
||||
{
|
||||
cmd_intro_mmu_0,
|
||||
cmd_intro_mmu_1,
|
||||
cmd_intro_mmu_2,
|
||||
cmd_intro_mmu_3, // call T code before
|
||||
cmd_intro_mmu_4,
|
||||
cmd_intro_mmu_5,
|
||||
cmd_intro_mmu_6,
|
||||
cmd_intro_mmu_7,
|
||||
cmd_intro_mmu_8,
|
||||
cmd_intro_mmu_9,
|
||||
cmd_intro_mmu_10,
|
||||
cmd_intro_mmu_11,
|
||||
cmd_intro_mmu_12,
|
||||
};
|
||||
|
||||
if (mmu_enabled)
|
||||
{
|
||||
for (uint8_t i = 0; i < (sizeof(intro_mmu_cmd)/sizeof(intro_mmu_cmd[0])); ++i)
|
||||
{
|
||||
if (3 == i)
|
||||
{
|
||||
sprintf_P(cmd_buffer, PSTR("T%d"), filament);
|
||||
enquecommand(cmd_buffer);
|
||||
}
|
||||
enquecommand_P(static_cast<char*>(pgm_read_ptr(&intro_mmu_cmd[i])));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
enquecommand_P(PSTR("G1 X60.0 E9.0 F1000.0"));
|
||||
enquecommand_P(PSTR("G1 X100.0 E12.5 F1000.0"));
|
||||
}
|
||||
}
|
||||
|
||||
//! @brief Setup for printing meander
|
||||
void lay1cal_before_meander()
|
||||
{
|
||||
static const char cmd_pre_meander_0[] PROGMEM = "G92 E0.0";
|
||||
static const char cmd_pre_meander_1[] PROGMEM = "G21"; //set units to millimeters TODO unsupported command
|
||||
static const char cmd_pre_meander_2[] PROGMEM = "G90"; //use absolute coordinates
|
||||
static const char cmd_pre_meander_3[] PROGMEM = "M83"; //use relative distances for extrusion TODO: duplicate
|
||||
static const char cmd_pre_meander_4[] PROGMEM = "G1 E-1.50000 F2100.00000";
|
||||
static const char cmd_pre_meander_5[] PROGMEM = "G1 Z5 F7200.000";
|
||||
static const char cmd_pre_meander_6[] PROGMEM = "M204 S1000"; //set acceleration
|
||||
static const char cmd_pre_meander_7[] PROGMEM = "G1 F4000";
|
||||
|
||||
static const char * const cmd_pre_meander[] PROGMEM =
|
||||
{
|
||||
cmd_pre_meander_0,
|
||||
cmd_pre_meander_1,
|
||||
cmd_pre_meander_2,
|
||||
cmd_pre_meander_3,
|
||||
cmd_pre_meander_4,
|
||||
cmd_pre_meander_5,
|
||||
cmd_pre_meander_6,
|
||||
cmd_pre_meander_7,
|
||||
};
|
||||
|
||||
for (uint8_t i = 0; i < (sizeof(cmd_pre_meander)/sizeof(cmd_pre_meander[0])); ++i)
|
||||
{
|
||||
enquecommand_P(static_cast<char*>(pgm_read_ptr(&cmd_pre_meander[i])));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//! @brief Count extrude length
|
||||
//!
|
||||
//! @param layer_height layer height in mm
|
||||
//! @param extrusion_width extrusion width in mm
|
||||
//! @param extrusion_length extrusion length in mm
|
||||
//! @return filament length in mm which needs to be extruded to form line
|
||||
static constexpr float count_e(float layer_height, float extrusion_width, float extrusion_length)
|
||||
{
|
||||
return (extrusion_length * layer_height * extrusion_width / (M_PI * pow(1.75, 2) / 4));
|
||||
}
|
||||
|
||||
static const float width = 0.4; //!< line width
|
||||
static const float length = 20 - width; //!< line length
|
||||
static const float height = 0.2; //!< layer height TODO This is wrong, as current Z height is 0.15 mm
|
||||
static const float extr = count_e(height, width, length); //!< E axis movement needed to print line
|
||||
|
||||
//! @brief Print meander
|
||||
//! @param cmd_buffer character buffer needed to format gcodes
|
||||
void lay1cal_meander(char *cmd_buffer)
|
||||
{
|
||||
static const char cmd_meander_0[] PROGMEM = "G1 X50 Y155";
|
||||
static const char cmd_meander_1[] PROGMEM = "G1 Z0.150 F7200.000";
|
||||
static const char cmd_meander_2[] PROGMEM = "G1 F1080";
|
||||
static const char cmd_meander_3[] PROGMEM = "G1 X75 Y155 E2.5";
|
||||
static const char cmd_meander_4[] PROGMEM = "G1 X100 Y155 E2";
|
||||
static const char cmd_meander_5[] PROGMEM = "G1 X200 Y155 E2.62773";
|
||||
static const char cmd_meander_6[] PROGMEM = "G1 X200 Y135 E0.66174";
|
||||
static const char cmd_meander_7[] PROGMEM = "G1 X50 Y135 E3.62773";
|
||||
static const char cmd_meander_8[] PROGMEM = "G1 X50 Y115 E0.49386";
|
||||
static const char cmd_meander_9[] PROGMEM = "G1 X200 Y115 E3.62773";
|
||||
static const char cmd_meander_10[] PROGMEM = "G1 X200 Y95 E0.49386";
|
||||
static const char cmd_meander_11[] PROGMEM = "G1 X50 Y95 E3.62773";
|
||||
static const char cmd_meander_12[] PROGMEM = "G1 X50 Y75 E0.49386";
|
||||
static const char cmd_meander_13[] PROGMEM = "G1 X200 Y75 E3.62773";
|
||||
static const char cmd_meander_14[] PROGMEM = "G1 X200 Y55 E0.49386";
|
||||
static const char cmd_meander_15[] PROGMEM = "G1 X50 Y55 E3.62773";
|
||||
|
||||
static const char * const cmd_meander[] PROGMEM =
|
||||
{
|
||||
cmd_meander_0,
|
||||
cmd_meander_1,
|
||||
cmd_meander_2,
|
||||
cmd_meander_3,
|
||||
cmd_meander_4,
|
||||
cmd_meander_5,
|
||||
cmd_meander_6,
|
||||
cmd_meander_7,
|
||||
cmd_meander_8,
|
||||
cmd_meander_9,
|
||||
cmd_meander_10,
|
||||
cmd_meander_11,
|
||||
cmd_meander_12,
|
||||
cmd_meander_13,
|
||||
cmd_meander_14,
|
||||
cmd_meander_15,
|
||||
};
|
||||
|
||||
for (uint8_t i = 0; i < (sizeof(cmd_meander)/sizeof(cmd_meander[0])); ++i)
|
||||
{
|
||||
enquecommand_P(static_cast<char*>(pgm_read_ptr(&cmd_meander[i])));
|
||||
}
|
||||
sprintf_P(cmd_buffer, PSTR("G1 X50 Y35 E%-.3f"), extr);
|
||||
enquecommand(cmd_buffer);
|
||||
}
|
||||
|
||||
//! @brief Print square
|
||||
//!
|
||||
//! This function needs to be called 16 times for i from 0 to 15.
|
||||
//!
|
||||
//! @param cmd_buffer character buffer needed to format gcodes
|
||||
//! @param i iteration
|
||||
void lay1cal_square(char *cmd_buffer, uint8_t i)
|
||||
{
|
||||
const float extr_short_segment = count_e(height, width, width);
|
||||
|
||||
static const char fmt1[] PROGMEM = "G1 X%d Y%-.2f E%-.3f";
|
||||
static const char fmt2[] PROGMEM = "G1 Y%-.2f E%-.3f";
|
||||
sprintf_P(cmd_buffer, fmt1, 70, (35 - i*width * 2), extr);
|
||||
enquecommand(cmd_buffer);
|
||||
sprintf_P(cmd_buffer, fmt2, (35 - (2 * i + 1)*width), extr_short_segment);
|
||||
enquecommand(cmd_buffer);
|
||||
sprintf_P(cmd_buffer, fmt1, 50, (35 - (2 * i + 1)*width), extr);
|
||||
enquecommand(cmd_buffer);
|
||||
sprintf_P(cmd_buffer, fmt2, (35 - (i + 1)*width * 2), extr_short_segment);
|
||||
enquecommand(cmd_buffer);
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
//! @file
|
||||
//! @date Jun 10, 2019
|
||||
//! @author Marek Bel
|
||||
|
||||
#ifndef FIRMWARE_FIRST_LAY_CAL_H_
|
||||
#define FIRMWARE_FIRST_LAY_CAL_H_
|
||||
#include <stdint.h>
|
||||
|
||||
void lay1cal_preheat();
|
||||
void lay1cal_intro_line(char *cmd_buffer, uint8_t filament);
|
||||
void lay1cal_before_meander();
|
||||
void lay1cal_meander(char *cmd_buffer);
|
||||
void lay1cal_square(char *cmd_buffer, uint8_t i);
|
||||
|
||||
#endif /* FIRMWARE_FIRST_LAY_CAL_H_ */
|
||||
|
|
@ -57,6 +57,11 @@ bool fsensor_not_responding = false;
|
|||
bool fsensor_printing_saved = false;
|
||||
//! enable/disable quality meassurement
|
||||
bool fsensor_oq_meassure_enabled = false;
|
||||
//! as explained in the CHECK_FSENSOR macro: this flag is set to true when fsensor posts
|
||||
//! the M600 into the command queue, which elliminates the hazard of having posted multiple M600's
|
||||
//! before the first one gets read and started processing.
|
||||
//! Btw., the IR fsensor could do up to 6 posts before the command queue managed to start processing the first M600 ;)
|
||||
static bool fsensor_m600_enqueued = false;
|
||||
|
||||
//! number of errors, updated in ISR
|
||||
uint8_t fsensor_err_cnt = 0;
|
||||
|
|
@ -123,6 +128,7 @@ void fsensor_restore_print_and_continue(void)
|
|||
printf_P(PSTR("fsensor_restore_print_and_continue\n"));
|
||||
fsensor_watch_runout = true;
|
||||
fsensor_err_cnt = 0;
|
||||
fsensor_m600_enqueued = false;
|
||||
restore_print_from_ram_and_continue(0); //XYZ = orig, E - no change
|
||||
}
|
||||
|
||||
|
|
@ -516,6 +522,18 @@ void fsensor_st_block_chunk(block_t* bl, int cnt)
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
//! Common code for enqueing M600 and supplemental codes into the command queue.
|
||||
//! Used both for the IR sensor and the PAT9125
|
||||
void fsensor_enque_M600(){
|
||||
printf_P(PSTR("fsensor_update - M600\n"));
|
||||
eeprom_update_byte((uint8_t*)EEPROM_FERROR_COUNT, eeprom_read_byte((uint8_t*)EEPROM_FERROR_COUNT) + 1);
|
||||
eeprom_update_word((uint16_t*)EEPROM_FERROR_COUNT_TOT, eeprom_read_word((uint16_t*)EEPROM_FERROR_COUNT_TOT) + 1);
|
||||
enquecommand_front_P(PSTR("PRUSA fsensor_recover"));
|
||||
fsensor_m600_enqueued = true;
|
||||
enquecommand_front_P((PSTR("M600")));
|
||||
}
|
||||
|
||||
//! @brief filament sensor update (perform M600 on filament runout)
|
||||
//!
|
||||
//! Works only if filament sensor is enabled.
|
||||
|
|
@ -524,7 +542,7 @@ void fsensor_st_block_chunk(block_t* bl, int cnt)
|
|||
void fsensor_update(void)
|
||||
{
|
||||
#ifdef PAT9125
|
||||
if (fsensor_enabled && fsensor_watch_runout && (fsensor_err_cnt > FSENSOR_ERR_MAX))
|
||||
if (fsensor_enabled && fsensor_watch_runout && (fsensor_err_cnt > FSENSOR_ERR_MAX) && ( ! fsensor_m600_enqueued) )
|
||||
{
|
||||
bool autoload_enabled_tmp = fsensor_autoload_enabled;
|
||||
fsensor_autoload_enabled = false;
|
||||
|
|
@ -564,25 +582,17 @@ void fsensor_update(void)
|
|||
}
|
||||
else
|
||||
{
|
||||
printf_P(PSTR("fsensor_update - M600\n"));
|
||||
eeprom_update_byte((uint8_t*)EEPROM_FERROR_COUNT, eeprom_read_byte((uint8_t*)EEPROM_FERROR_COUNT) + 1);
|
||||
eeprom_update_word((uint16_t*)EEPROM_FERROR_COUNT_TOT, eeprom_read_word((uint16_t*)EEPROM_FERROR_COUNT_TOT) + 1);
|
||||
enquecommand_front_P(PSTR("FSENSOR_RECOVER"));
|
||||
enquecommand_front_P((PSTR("M600")));
|
||||
fsensor_enque_M600();
|
||||
fsensor_watch_runout = false;
|
||||
}
|
||||
fsensor_autoload_enabled = autoload_enabled_tmp;
|
||||
fsensor_oq_meassure_enabled = oq_meassure_enabled_tmp;
|
||||
}
|
||||
#else //PAT9125
|
||||
if ((digitalRead(IR_SENSOR_PIN) == 1) && CHECK_FSENSOR && fsensor_enabled && ir_sensor_detected)
|
||||
{
|
||||
fsensor_stop_and_save_print();
|
||||
printf_P(PSTR("fsensor_update - M600\n"));
|
||||
eeprom_update_byte((uint8_t*)EEPROM_FERROR_COUNT, eeprom_read_byte((uint8_t*)EEPROM_FERROR_COUNT) + 1);
|
||||
eeprom_update_word((uint16_t*)EEPROM_FERROR_COUNT_TOT, eeprom_read_word((uint16_t*)EEPROM_FERROR_COUNT_TOT) + 1);
|
||||
enquecommand_front_P(PSTR("FSENSOR_RECOVER"));
|
||||
enquecommand_front_P((PSTR("M600")));
|
||||
if ((digitalRead(IR_SENSOR_PIN) == 1) && CHECK_FSENSOR && fsensor_enabled && ir_sensor_detected && ( ! fsensor_m600_enqueued) )
|
||||
{
|
||||
fsensor_stop_and_save_print();
|
||||
fsensor_enque_M600();
|
||||
}
|
||||
#endif //PAT9125
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ extern bool fsensor_oq_meassure_enabled;
|
|||
//! @name save restore printing
|
||||
//! @{
|
||||
extern void fsensor_stop_and_save_print(void);
|
||||
//! restore print - restore position and heatup to original temperature
|
||||
extern void fsensor_restore_print_and_continue(void);
|
||||
//! @}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,109 @@
|
|||
#include <avr/io.h>
|
||||
#include <avr/interrupt.h>
|
||||
#include "io_atmega2560.h"
|
||||
|
||||
// All this is about silencing the heat bed, as it behaves like a loudspeaker.
|
||||
// Basically, we want the PWM heating switched at 30Hz (or so) which is a well ballanced
|
||||
// frequency for both power supply units (i.e. both PSUs are reasonably silent).
|
||||
// The only trouble is the rising or falling edge of bed heating - that creates an audible click.
|
||||
// This audible click may be suppressed by making the rising or falling edge NOT sharp.
|
||||
// Of course, making non-sharp edges in digital technology is not easy, but there is a solution.
|
||||
// It is possible to do a fast PWM sequence with duty starting from 0 to 255.
|
||||
// Doing this at higher frequency than the bed "loudspeaker" can handle makes the click barely audible.
|
||||
// Technically:
|
||||
// timer0 is set to fast PWM mode at 62.5kHz (timer0 is linked to the bed heating pin) (zero prescaler)
|
||||
// To keep the bed switching at 30Hz - we don't want the PWM running at 62kHz all the time
|
||||
// since it would burn the heatbed's MOSFET:
|
||||
// 16MHz/256 levels of PWM duty gives us 62.5kHz
|
||||
// 62.5kHz/256 gives ~244Hz, that is still too fast - 244/8 gives ~30Hz, that's what we need
|
||||
// So the automaton runs atop of inner 8 (or 16) cycles.
|
||||
// The finite automaton is running in the ISR(TIMER0_OVF_vect)
|
||||
|
||||
///! Definition off finite automaton states
|
||||
enum class States : uint8_t {
|
||||
ZERO = 0,
|
||||
RISE = 1,
|
||||
ONE = 2,
|
||||
FALL = 3
|
||||
};
|
||||
|
||||
///! State table for the inner part of the finite automaton
|
||||
///! Basically it specifies what shall happen if the outer automaton is requesting setting the heat pin to 0 (OFF) or 1 (ON)
|
||||
///! ZERO: steady 0 (OFF), no change for the whole period
|
||||
///! RISE: 8 (16) fast PWM cycles with increasing duty up to steady ON
|
||||
///! ONE: steady 1 (ON), no change for the whole period
|
||||
///! FALL: 8 (16) fast PWM cycles with decreasing duty down to steady OFF
|
||||
///! @@TODO move it into progmem
|
||||
static States stateTable[4*2] = {
|
||||
// off on
|
||||
States::ZERO, States::RISE, // ZERO
|
||||
States::FALL, States::ONE, // RISE
|
||||
States::FALL, States::ONE, // ONE
|
||||
States::ZERO, States::RISE // FALL
|
||||
};
|
||||
|
||||
///! Inner states of the finite automaton
|
||||
static States state = States::ZERO;
|
||||
|
||||
///! Inner and outer PWM counters
|
||||
static uint8_t outer = 0;
|
||||
static uint8_t inner = 0;
|
||||
static uint8_t pwm = 0;
|
||||
|
||||
///! the slow PWM duty for the next 30Hz cycle
|
||||
///! Set in the whole firmware at various places
|
||||
extern unsigned char soft_pwm_bed;
|
||||
|
||||
/// Fine tuning of automaton cycles
|
||||
#if 1
|
||||
static const uint8_t innerMax = 16;
|
||||
static const uint8_t innerShift = 4;
|
||||
#else
|
||||
static const uint8_t innerMax = 8;
|
||||
static const uint8_t innerShift = 5;
|
||||
#endif
|
||||
|
||||
ISR(TIMER0_OVF_vect) // timer compare interrupt service routine
|
||||
{
|
||||
if( inner ){
|
||||
switch(state){
|
||||
case States::ZERO:
|
||||
OCR0B = 255;
|
||||
// Commenting the following code saves 6B, but it is left here for reference
|
||||
// It is not necessary to set it all over again, because we can only get into the ZERO state from the FALL state (which sets this register)
|
||||
// TCCR0A |= (1 << COM0B1) | (1 << COM0B0);
|
||||
break;
|
||||
case States::RISE:
|
||||
OCR0B = (innerMax - inner) << innerShift;
|
||||
// TCCR0A |= (1 << COM0B1); // this bit is always 1
|
||||
TCCR0A &= ~(1 << COM0B0);
|
||||
break;
|
||||
case States::ONE:
|
||||
OCR0B = 255;
|
||||
// again - may be skipped, because we get into the ONE state only from RISE (which sets this register)
|
||||
// TCCR0A |= (1 << COM0B1);
|
||||
TCCR0A &= ~(1 << COM0B0);
|
||||
break;
|
||||
case States::FALL:
|
||||
OCR0B = (innerMax - inner) << innerShift; // this is the same as in RISE, because now we are setting the zero part of duty due to inverting mode
|
||||
// must switch to inverting mode already here, because it takes a whole PWM cycle and it would make a "1" at the end of this pwm cycle
|
||||
TCCR0A |= /*(1 << COM0B1) |*/ (1 << COM0B0);
|
||||
break;
|
||||
}
|
||||
--inner;
|
||||
} else {
|
||||
if( ! outer ){ // at the end of 30Hz PWM period
|
||||
// synchro is not needed (almost), soft_pwm_bed is just 1 byte, 1-byte write instruction is atomic
|
||||
pwm = soft_pwm_bed << 1;
|
||||
}
|
||||
if( pwm > outer || pwm >= 254 ){
|
||||
// soft_pwm_bed has a range of 0-127, that why a <<1 is done here. That also means that we may get only up to 254 which we want to be full-time 1 (ON)
|
||||
state = stateTable[ uint8_t(state) * 2 + 1 ];
|
||||
} else {
|
||||
// switch OFF
|
||||
state = stateTable[ uint8_t(state) * 2 + 0 ];
|
||||
}
|
||||
++outer;
|
||||
inner = innerMax;
|
||||
}
|
||||
}
|
||||
|
|
@ -368,6 +368,7 @@
|
|||
#define PIN_SET(pin) PORT(pin) |= __MSK(pin)
|
||||
#define PIN_VAL(pin, val) if (val) PIN_SET(pin); else PIN_CLR(pin);
|
||||
#define PIN_GET(pin) (PIN(pin) & __MSK(pin))
|
||||
#define PIN_INQ(pin) (PORT(pin) & __MSK(pin))
|
||||
|
||||
|
||||
#endif //_IO_ATMEGA2560
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@ uint8_t lang_select(uint8_t lang)
|
|||
if (lang_check(table))
|
||||
if (pgm_read_dword(((uint32_t*)(table + 12))) == pgm_read_dword(((uint32_t*)(_PRI_LANG_SIGNATURE)))) //signature valid
|
||||
{
|
||||
lang_table = table; // set table pointer
|
||||
lang_table = (lang_table_t*)table; // set table pointer
|
||||
lang_selected = lang; // set language id
|
||||
}
|
||||
}
|
||||
|
|
@ -157,7 +157,7 @@ uint8_t lang_get_header(uint8_t lang, lang_table_header_t* header, uint32_t* off
|
|||
if (lang == LANG_ID_SEC)
|
||||
{
|
||||
uint16_t ui = _SEC_LANG_TABLE; //table pointer
|
||||
memcpy_P(header, ui, sizeof(lang_table_header_t)); //read table header from progmem
|
||||
memcpy_P(header, (lang_table_header_t*)ui, sizeof(lang_table_header_t)); //read table header from progmem
|
||||
if (offset) *offset = ui;
|
||||
return (header->magic == LANG_MAGIC)?1:0; //return 1 if magic valid
|
||||
}
|
||||
|
|
|
|||
347
Firmware/lcd.cpp
347
Firmware/lcd.cpp
|
|
@ -10,12 +10,19 @@
|
|||
#include "Configuration.h"
|
||||
#include "pins.h"
|
||||
#include <binary.h>
|
||||
//#include <Arduino.h>
|
||||
#include <Arduino.h>
|
||||
#include "Marlin.h"
|
||||
#include "fastio.h"
|
||||
//-//
|
||||
#include "sound.h"
|
||||
|
||||
#define LCD_DEFAULT_DELAY 100
|
||||
|
||||
#if (defined(LCD_PINS_D0) && defined(LCD_PINS_D1) && defined(LCD_PINS_D2) && defined(LCD_PINS_D3))
|
||||
#define LCD_8BIT
|
||||
#endif
|
||||
|
||||
// #define VT100
|
||||
|
||||
// commands
|
||||
#define LCD_CLEARDISPLAY 0x01
|
||||
|
|
@ -55,242 +62,202 @@
|
|||
#define LCD_5x10DOTS 0x04
|
||||
#define LCD_5x8DOTS 0x00
|
||||
|
||||
// bitmasks for flag argument settings
|
||||
#define LCD_RS_FLAG 0x01
|
||||
#define LCD_HALF_FLAG 0x02
|
||||
|
||||
FILE _lcdout; // = {0}; Global variable is always zero initialized, no need to explicitly state that.
|
||||
|
||||
uint8_t lcd_displayfunction = 0;
|
||||
uint8_t lcd_displaycontrol = 0;
|
||||
uint8_t lcd_displaymode = 0;
|
||||
|
||||
uint8_t lcd_rs_pin; // LOW: command. HIGH: character.
|
||||
uint8_t lcd_rw_pin; // LOW: write to LCD. HIGH: read from LCD.
|
||||
uint8_t lcd_enable_pin; // activated by a HIGH pulse.
|
||||
uint8_t lcd_data_pins[8];
|
||||
|
||||
uint8_t lcd_displayfunction;
|
||||
uint8_t lcd_displaycontrol;
|
||||
uint8_t lcd_displaymode;
|
||||
|
||||
uint8_t lcd_numlines;
|
||||
uint8_t lcd_currline;
|
||||
|
||||
#ifdef VT100
|
||||
uint8_t lcd_escape[8];
|
||||
#endif
|
||||
|
||||
static void lcd_display(void);
|
||||
|
||||
void lcd_pulseEnable(void)
|
||||
{
|
||||
digitalWrite(lcd_enable_pin, LOW);
|
||||
delayMicroseconds(1);
|
||||
digitalWrite(lcd_enable_pin, HIGH);
|
||||
delayMicroseconds(1); // enable pulse must be >450ns
|
||||
digitalWrite(lcd_enable_pin, LOW);
|
||||
delayMicroseconds(100); // commands need > 37us to settle
|
||||
#if 0
|
||||
static void lcd_no_display(void);
|
||||
static void lcd_no_cursor(void);
|
||||
static void lcd_cursor(void);
|
||||
static void lcd_no_blink(void);
|
||||
static void lcd_blink(void);
|
||||
static void lcd_scrollDisplayLeft(void);
|
||||
static void lcd_scrollDisplayRight(void);
|
||||
static void lcd_leftToRight(void);
|
||||
static void lcd_rightToLeft(void);
|
||||
static void lcd_autoscroll(void);
|
||||
static void lcd_no_autoscroll(void);
|
||||
#endif
|
||||
|
||||
#ifdef VT100
|
||||
void lcd_escape_write(uint8_t chr);
|
||||
#endif
|
||||
|
||||
static void lcd_pulseEnable(void)
|
||||
{
|
||||
WRITE(LCD_PINS_ENABLE,HIGH);
|
||||
_delay_us(1); // enable pulse must be >450ns
|
||||
WRITE(LCD_PINS_ENABLE,LOW);
|
||||
}
|
||||
|
||||
void lcd_write4bits(uint8_t value)
|
||||
static void lcd_writebits(uint8_t value)
|
||||
{
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
pinMode(lcd_data_pins[i], OUTPUT);
|
||||
digitalWrite(lcd_data_pins[i], (value >> i) & 0x01);
|
||||
}
|
||||
#ifdef LCD_8BIT
|
||||
WRITE(LCD_PINS_D0, value & 0x01);
|
||||
WRITE(LCD_PINS_D1, value & 0x02);
|
||||
WRITE(LCD_PINS_D2, value & 0x04);
|
||||
WRITE(LCD_PINS_D3, value & 0x08);
|
||||
#endif
|
||||
WRITE(LCD_PINS_D4, value & 0x10);
|
||||
WRITE(LCD_PINS_D5, value & 0x20);
|
||||
WRITE(LCD_PINS_D6, value & 0x40);
|
||||
WRITE(LCD_PINS_D7, value & 0x80);
|
||||
|
||||
lcd_pulseEnable();
|
||||
}
|
||||
|
||||
void lcd_write8bits(uint8_t value)
|
||||
static void lcd_send(uint8_t data, uint8_t flags, uint16_t duration = LCD_DEFAULT_DELAY)
|
||||
{
|
||||
for (int i = 0; i < 8; i++)
|
||||
WRITE(LCD_PINS_RS,flags&LCD_RS_FLAG);
|
||||
_delay_us(5);
|
||||
lcd_writebits(data);
|
||||
#ifndef LCD_8BIT
|
||||
if (!(flags & LCD_HALF_FLAG))
|
||||
{
|
||||
pinMode(lcd_data_pins[i], OUTPUT);
|
||||
digitalWrite(lcd_data_pins[i], (value >> i) & 0x01);
|
||||
_delay_us(LCD_DEFAULT_DELAY);
|
||||
lcd_writebits(data<<4);
|
||||
}
|
||||
lcd_pulseEnable();
|
||||
#endif
|
||||
delayMicroseconds(duration);
|
||||
}
|
||||
|
||||
// write either command or data, with automatic 4/8-bit selection
|
||||
void lcd_send(uint8_t value, uint8_t mode)
|
||||
static void lcd_command(uint8_t value, uint16_t delayExtra = 0)
|
||||
{
|
||||
digitalWrite(lcd_rs_pin, mode);
|
||||
// if there is a RW pin indicated, set it low to Write
|
||||
if (lcd_rw_pin != 255) digitalWrite(lcd_rw_pin, LOW);
|
||||
if (lcd_displayfunction & LCD_8BITMODE)
|
||||
lcd_write8bits(value);
|
||||
else
|
||||
{
|
||||
lcd_write4bits(value>>4);
|
||||
lcd_write4bits(value);
|
||||
}
|
||||
lcd_send(value, LOW, LCD_DEFAULT_DELAY + delayExtra);
|
||||
}
|
||||
|
||||
void lcd_command(uint8_t value)
|
||||
static void lcd_write(uint8_t value)
|
||||
{
|
||||
lcd_send(value, LOW);
|
||||
}
|
||||
|
||||
void lcd_clear(void);
|
||||
void lcd_home(void);
|
||||
void lcd_no_display(void);
|
||||
void lcd_display(void);
|
||||
void lcd_no_cursor(void);
|
||||
void lcd_cursor(void);
|
||||
void lcd_no_blink(void);
|
||||
void lcd_blink(void);
|
||||
void lcd_scrollDisplayLeft(void);
|
||||
void lcd_scrollDisplayRight(void);
|
||||
void lcd_leftToRight(void);
|
||||
void lcd_rightToLeft(void);
|
||||
void lcd_autoscroll(void);
|
||||
void lcd_no_autoscroll(void);
|
||||
void lcd_set_cursor(uint8_t col, uint8_t row);
|
||||
void lcd_createChar_P(uint8_t location, const uint8_t* charmap);
|
||||
|
||||
uint8_t lcd_escape_write(uint8_t chr);
|
||||
|
||||
uint8_t lcd_write(uint8_t value)
|
||||
{
|
||||
if (value == '\n')
|
||||
if (value == '\n' || value == '\r')
|
||||
{
|
||||
if (lcd_currline > 3) lcd_currline = -1;
|
||||
lcd_set_cursor(0, lcd_currline + 1); // LF
|
||||
return 1;
|
||||
return;
|
||||
}
|
||||
if (lcd_escape[0] || (value == 0x1b))
|
||||
return lcd_escape_write(value);
|
||||
#ifdef VT100
|
||||
if (lcd_escape[0] || (value == 0x1b)){
|
||||
lcd_escape_write(value);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
lcd_send(value, HIGH);
|
||||
return 1; // assume sucess
|
||||
}
|
||||
|
||||
static void lcd_begin(uint8_t lines, uint8_t dotsize, uint8_t clear)
|
||||
static void lcd_begin(uint8_t clear)
|
||||
{
|
||||
if (lines > 1) lcd_displayfunction |= LCD_2LINE;
|
||||
lcd_numlines = lines;
|
||||
lcd_currline = 0;
|
||||
// for some 1 line displays you can select a 10 pixel high font
|
||||
if ((dotsize != 0) && (lines == 1)) lcd_displayfunction |= LCD_5x10DOTS;
|
||||
// SEE PAGE 45/46 FOR INITIALIZATION SPECIFICATION!
|
||||
// according to datasheet, we need at least 40ms after power rises above 2.7V
|
||||
// before sending commands. Arduino can turn on way befer 4.5V so we'll wait 50
|
||||
_delay_us(50000);
|
||||
// Now we pull both RS and R/W low to begin commands
|
||||
digitalWrite(lcd_rs_pin, LOW);
|
||||
digitalWrite(lcd_enable_pin, LOW);
|
||||
if (lcd_rw_pin != 255)
|
||||
digitalWrite(lcd_rw_pin, LOW);
|
||||
//put the LCD into 4 bit or 8 bit mode
|
||||
if (!(lcd_displayfunction & LCD_8BITMODE))
|
||||
{
|
||||
// this is according to the hitachi HD44780 datasheet
|
||||
// figure 24, pg 46
|
||||
// we start in 8bit mode, try to set 4 bit mode
|
||||
lcd_write4bits(0x03);
|
||||
_delay_us(4500); // wait min 4.1ms
|
||||
// second try
|
||||
lcd_write4bits(0x03);
|
||||
_delay_us(4500); // wait min 4.1ms
|
||||
// third go!
|
||||
lcd_write4bits(0x03);
|
||||
_delay_us(150);
|
||||
// finally, set to 4-bit interface
|
||||
lcd_write4bits(0x02);
|
||||
}
|
||||
else
|
||||
{
|
||||
// this is according to the hitachi HD44780 datasheet
|
||||
// page 45 figure 23
|
||||
// Send function set command sequence
|
||||
lcd_command(LCD_FUNCTIONSET | lcd_displayfunction);
|
||||
_delay_us(4500); // wait more than 4.1ms
|
||||
// second try
|
||||
lcd_command(LCD_FUNCTIONSET | lcd_displayfunction);
|
||||
_delay_us(150);
|
||||
// third go
|
||||
lcd_command(LCD_FUNCTIONSET | lcd_displayfunction);
|
||||
}
|
||||
// finally, set # lines, font size, etc.
|
||||
lcd_command(LCD_FUNCTIONSET | lcd_displayfunction);
|
||||
_delay_us(60);
|
||||
|
||||
lcd_send(LCD_FUNCTIONSET | LCD_8BITMODE, LOW | LCD_HALF_FLAG, 4500); // wait min 4.1ms
|
||||
// second try
|
||||
lcd_send(LCD_FUNCTIONSET | LCD_8BITMODE, LOW | LCD_HALF_FLAG, 150);
|
||||
// third go!
|
||||
lcd_send(LCD_FUNCTIONSET | LCD_8BITMODE, LOW | LCD_HALF_FLAG, 150);
|
||||
#ifndef LCD_8BIT
|
||||
// set to 4-bit interface
|
||||
lcd_send(LCD_FUNCTIONSET | LCD_4BITMODE, LOW | LCD_HALF_FLAG, 150);
|
||||
#endif
|
||||
|
||||
// finally, set # lines, font size, etc.0
|
||||
lcd_command(LCD_FUNCTIONSET | lcd_displayfunction);
|
||||
// turn the display on with no cursor or blinking default
|
||||
lcd_displaycontrol = LCD_DISPLAYON | LCD_CURSOROFF | LCD_BLINKOFF;
|
||||
lcd_displaycontrol = LCD_CURSOROFF | LCD_BLINKOFF;
|
||||
lcd_display();
|
||||
_delay_us(60);
|
||||
// clear it off
|
||||
if (clear) lcd_clear();
|
||||
_delay_us(3000);
|
||||
// Initialize to default text direction (for romance languages)
|
||||
lcd_displaymode = LCD_ENTRYLEFT | LCD_ENTRYSHIFTDECREMENT;
|
||||
// set the entry mode
|
||||
lcd_command(LCD_ENTRYMODESET | lcd_displaymode);
|
||||
_delay_us(60);
|
||||
|
||||
#ifdef VT100
|
||||
lcd_escape[0] = 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
int lcd_putchar(char c, FILE *)
|
||||
static void lcd_putchar(char c, FILE *)
|
||||
{
|
||||
lcd_write(c);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void lcd_init(void)
|
||||
{
|
||||
uint8_t fourbitmode = 1;
|
||||
lcd_rs_pin = LCD_PINS_RS;
|
||||
lcd_rw_pin = 255;
|
||||
lcd_enable_pin = LCD_PINS_ENABLE;
|
||||
lcd_data_pins[0] = LCD_PINS_D4;
|
||||
lcd_data_pins[1] = LCD_PINS_D5;
|
||||
lcd_data_pins[2] = LCD_PINS_D6;
|
||||
lcd_data_pins[3] = LCD_PINS_D7;
|
||||
lcd_data_pins[4] = 0;
|
||||
lcd_data_pins[5] = 0;
|
||||
lcd_data_pins[6] = 0;
|
||||
lcd_data_pins[7] = 0;
|
||||
pinMode(lcd_rs_pin, OUTPUT);
|
||||
// we can save 1 pin by not using RW. Indicate by passing 255 instead of pin#
|
||||
if (lcd_rw_pin != 255) pinMode(lcd_rw_pin, OUTPUT);
|
||||
pinMode(lcd_enable_pin, OUTPUT);
|
||||
if (fourbitmode) lcd_displayfunction = LCD_4BITMODE | LCD_1LINE | LCD_5x8DOTS;
|
||||
else lcd_displayfunction = LCD_8BITMODE | LCD_1LINE | LCD_5x8DOTS;
|
||||
lcd_begin(LCD_HEIGHT, LCD_5x8DOTS, 1);
|
||||
//lcd_clear();
|
||||
WRITE(LCD_PINS_ENABLE,LOW);
|
||||
SET_OUTPUT(LCD_PINS_RS);
|
||||
SET_OUTPUT(LCD_PINS_ENABLE);
|
||||
|
||||
#ifdef LCD_8BIT
|
||||
SET_OUTPUT(LCD_PINS_D0);
|
||||
SET_OUTPUT(LCD_PINS_D1);
|
||||
SET_OUTPUT(LCD_PINS_D2);
|
||||
SET_OUTPUT(LCD_PINS_D3);
|
||||
#endif
|
||||
SET_OUTPUT(LCD_PINS_D4);
|
||||
SET_OUTPUT(LCD_PINS_D5);
|
||||
SET_OUTPUT(LCD_PINS_D6);
|
||||
SET_OUTPUT(LCD_PINS_D7);
|
||||
|
||||
#ifdef LCD_8BIT
|
||||
lcd_displayfunction |= LCD_8BITMODE;
|
||||
#endif
|
||||
lcd_displayfunction |= LCD_2LINE;
|
||||
_delay_us(50000);
|
||||
lcd_begin(1); //first time init
|
||||
fdev_setup_stream(lcdout, lcd_putchar, NULL, _FDEV_SETUP_WRITE); //setup lcdout stream
|
||||
}
|
||||
|
||||
void lcd_refresh(void)
|
||||
{
|
||||
lcd_begin(LCD_HEIGHT, LCD_5x8DOTS, 1);
|
||||
lcd_begin(1);
|
||||
lcd_set_custom_characters();
|
||||
}
|
||||
|
||||
void lcd_refresh_noclear(void)
|
||||
{
|
||||
lcd_begin(LCD_HEIGHT, LCD_5x8DOTS, 0);
|
||||
lcd_begin(0);
|
||||
lcd_set_custom_characters();
|
||||
}
|
||||
|
||||
|
||||
|
||||
void lcd_clear(void)
|
||||
{
|
||||
lcd_command(LCD_CLEARDISPLAY); // clear display, set cursor position to zero
|
||||
_delay_us(1600); // this command takes a long time
|
||||
lcd_command(LCD_CLEARDISPLAY, 1600); // clear display, set cursor position to zero
|
||||
lcd_currline = 0;
|
||||
}
|
||||
|
||||
void lcd_home(void)
|
||||
{
|
||||
lcd_command(LCD_RETURNHOME); // set cursor position to zero
|
||||
_delay_us(1600); // this command takes a long time!
|
||||
lcd_command(LCD_RETURNHOME, 1600); // set cursor position to zero
|
||||
lcd_currline = 0;
|
||||
}
|
||||
|
||||
// Turn the display on/off (quickly)
|
||||
void lcd_display(void)
|
||||
{
|
||||
lcd_displaycontrol |= LCD_DISPLAYON;
|
||||
lcd_command(LCD_DISPLAYCONTROL | lcd_displaycontrol);
|
||||
}
|
||||
|
||||
#if 0
|
||||
void lcd_no_display(void)
|
||||
{
|
||||
lcd_displaycontrol &= ~LCD_DISPLAYON;
|
||||
lcd_command(LCD_DISPLAYCONTROL | lcd_displaycontrol);
|
||||
}
|
||||
|
||||
void lcd_display(void)
|
||||
{
|
||||
lcd_displaycontrol |= LCD_DISPLAYON;
|
||||
lcd_command(LCD_DISPLAYCONTROL | lcd_displaycontrol);
|
||||
}
|
||||
|
||||
// Turns the underline cursor on/off
|
||||
void lcd_no_cursor(void)
|
||||
{
|
||||
|
|
@ -355,12 +322,13 @@ void lcd_no_autoscroll(void)
|
|||
lcd_displaymode &= ~LCD_ENTRYSHIFTINCREMENT;
|
||||
lcd_command(LCD_ENTRYMODESET | lcd_displaymode);
|
||||
}
|
||||
#endif
|
||||
|
||||
void lcd_set_cursor(uint8_t col, uint8_t row)
|
||||
{
|
||||
int row_offsets[] = { 0x00, 0x40, 0x14, 0x54 };
|
||||
if ( row >= lcd_numlines )
|
||||
row = lcd_numlines-1; // we count rows starting w/0
|
||||
if (row >= LCD_HEIGHT)
|
||||
row = LCD_HEIGHT - 1; // we count rows starting w/0
|
||||
lcd_currline = row;
|
||||
lcd_command(LCD_SETDDRAMADDR | (col + row_offsets[row]));
|
||||
}
|
||||
|
|
@ -375,12 +343,14 @@ void lcd_createChar_P(uint8_t location, const uint8_t* charmap)
|
|||
lcd_send(pgm_read_byte(&charmap[i]), HIGH);
|
||||
}
|
||||
|
||||
#ifdef VT100
|
||||
|
||||
//Supported VT100 escape codes:
|
||||
//EraseScreen "\x1b[2J"
|
||||
//CursorHome "\x1b[%d;%dH"
|
||||
//CursorShow "\x1b[?25h"
|
||||
//CursorHide "\x1b[?25l"
|
||||
uint8_t lcd_escape_write(uint8_t chr)
|
||||
void lcd_escape_write(uint8_t chr)
|
||||
{
|
||||
#define escape_cnt (lcd_escape[0]) //escape character counter
|
||||
#define is_num_msk (lcd_escape[1]) //numeric character bit mask
|
||||
|
|
@ -410,26 +380,26 @@ uint8_t lcd_escape_write(uint8_t chr)
|
|||
switch (escape_cnt++)
|
||||
{
|
||||
case 0:
|
||||
if (chr == 0x1b) return 1; // escape = "\x1b"
|
||||
if (chr == 0x1b) return; // escape = "\x1b"
|
||||
break;
|
||||
case 1:
|
||||
is_num_msk = 0x00; // reset 'is number' bit mask
|
||||
if (chr == '[') return 1; // escape = "\x1b["
|
||||
if (chr == '[') return; // escape = "\x1b["
|
||||
break;
|
||||
case 2:
|
||||
switch (chr)
|
||||
{
|
||||
case '2': return 1; // escape = "\x1b[2"
|
||||
case '?': return 1; // escape = "\x1b[?"
|
||||
case '2': return; // escape = "\x1b[2"
|
||||
case '?': return; // escape = "\x1b[?"
|
||||
default:
|
||||
if (chr_is_num) return 1; // escape = "\x1b[%1d"
|
||||
if (chr_is_num) return; // escape = "\x1b[%1d"
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
switch (lcd_escape[2])
|
||||
{
|
||||
case '?': // escape = "\x1b[?"
|
||||
if (chr == '2') return 1; // escape = "\x1b[?2"
|
||||
if (chr == '2') return; // escape = "\x1b[?2"
|
||||
break;
|
||||
case '2':
|
||||
if (chr == 'J') // escape = "\x1b[2J"
|
||||
|
|
@ -438,20 +408,20 @@ uint8_t lcd_escape_write(uint8_t chr)
|
|||
if (e_2_is_num && // escape = "\x1b[%1d"
|
||||
((chr == ';') || // escape = "\x1b[%1d;"
|
||||
chr_is_num)) // escape = "\x1b[%2d"
|
||||
return 1;
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
switch (lcd_escape[2])
|
||||
{
|
||||
case '?': // "\x1b[?"
|
||||
if ((lcd_escape[3] == '2') && (chr == '5')) return 1; // escape = "\x1b[?25"
|
||||
if ((lcd_escape[3] == '2') && (chr == '5')) return; // escape = "\x1b[?25"
|
||||
break;
|
||||
default:
|
||||
if (e_2_is_num) // escape = "\x1b[%1d"
|
||||
{
|
||||
if ((lcd_escape[3] == ';') && chr_is_num) return 1; // escape = "\x1b[%1d;%1d"
|
||||
else if (e_3_is_num && (chr == ';')) return 1; // escape = "\x1b[%2d;"
|
||||
if ((lcd_escape[3] == ';') && chr_is_num) return; // escape = "\x1b[%1d;%1d"
|
||||
else if (e_3_is_num && (chr == ';')) return; // escape = "\x1b[%2d;"
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
@ -478,10 +448,10 @@ uint8_t lcd_escape_write(uint8_t chr)
|
|||
if (chr == 'H') // escape = "\x1b%1d;%1dH"
|
||||
lcd_set_cursor(e4_num, e2_num); // CursorHome
|
||||
else if (chr_is_num)
|
||||
return 1; // escape = "\x1b%1d;%2d"
|
||||
return; // escape = "\x1b%1d;%2d"
|
||||
}
|
||||
else if (e_3_is_num && (lcd_escape[4] == ';') && chr_is_num)
|
||||
return 1; // escape = "\x1b%2d;%1d"
|
||||
return; // escape = "\x1b%2d;%1d"
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
@ -495,7 +465,7 @@ uint8_t lcd_escape_write(uint8_t chr)
|
|||
if (chr == 'H') // escape = "\x1b%2d;%1dH"
|
||||
lcd_set_cursor(e5_num, e23_num); // CursorHome
|
||||
else if (chr_is_num) // "\x1b%2d;%2d"
|
||||
return 1;
|
||||
return;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
@ -506,10 +476,9 @@ uint8_t lcd_escape_write(uint8_t chr)
|
|||
break;
|
||||
}
|
||||
escape_cnt = 0; // reset escape
|
||||
return 1; // assume sucess
|
||||
}
|
||||
|
||||
|
||||
#endif //VT100
|
||||
|
||||
|
||||
int lcd_putc(int c)
|
||||
|
|
@ -648,16 +617,6 @@ void lcd_printFloat(double number, uint8_t digits)
|
|||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
uint8_t lcd_draw_update = 2;
|
||||
int32_t lcd_encoder = 0;
|
||||
uint8_t lcd_encoder_bits = 0;
|
||||
|
|
@ -704,16 +663,13 @@ uint8_t lcd_clicked(void)
|
|||
|
||||
void lcd_beeper_quick_feedback(void)
|
||||
{
|
||||
SET_OUTPUT(BEEPER);
|
||||
//-//
|
||||
Sound_MakeSound(e_SOUND_TYPE_ButtonEcho);
|
||||
/*
|
||||
for(int8_t i = 0; i < 10; i++)
|
||||
{
|
||||
WRITE(BEEPER,HIGH);
|
||||
delayMicroseconds(100);
|
||||
WRITE(BEEPER,LOW);
|
||||
delayMicroseconds(100);
|
||||
Sound_MakeCustom(100,0,false);
|
||||
_delay_us(100);
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
|
@ -725,13 +681,6 @@ void lcd_quick_feedback(void)
|
|||
lcd_beeper_quick_feedback();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void lcd_update(uint8_t lcdDrawUpdateOverride)
|
||||
{
|
||||
if (lcd_draw_update < lcdDrawUpdateOverride)
|
||||
|
|
|
|||
|
|
@ -11,8 +11,7 @@
|
|||
extern FILE _lcdout;
|
||||
|
||||
#define lcdout (&_lcdout)
|
||||
extern int lcd_putchar(char c, FILE *stream);
|
||||
|
||||
extern void lcd_putchar(char c, FILE *stream);
|
||||
|
||||
extern void lcd_init(void);
|
||||
|
||||
|
|
@ -20,13 +19,10 @@ extern void lcd_refresh(void);
|
|||
|
||||
extern void lcd_refresh_noclear(void);
|
||||
|
||||
|
||||
|
||||
extern void lcd_clear(void);
|
||||
|
||||
extern void lcd_home(void);
|
||||
|
||||
|
||||
/*extern void lcd_no_display(void);
|
||||
extern void lcd_display(void);
|
||||
extern void lcd_no_blink(void);
|
||||
|
|
@ -45,7 +41,6 @@ extern void lcd_set_cursor(uint8_t col, uint8_t row);
|
|||
extern void lcd_createChar_P(uint8_t, const uint8_t*);
|
||||
|
||||
|
||||
|
||||
extern int lcd_putc(int c);
|
||||
extern int lcd_puts_P(const char* str);
|
||||
extern int lcd_puts_at_P(uint8_t c, uint8_t r, const char* str);
|
||||
|
|
@ -64,23 +59,19 @@ extern void lcd_print(long, int = 10);
|
|||
extern void lcd_print(unsigned long, int = 10);
|
||||
extern void lcd_print(double, int = 2);
|
||||
|
||||
//! @brief Clear screen
|
||||
#define ESC_2J "\x1b[2J"
|
||||
//! @brief Show cursor
|
||||
#define ESC_25h "\x1b[?25h"
|
||||
//! @brief Hide cursor
|
||||
#define ESC_25l "\x1b[?25l"
|
||||
//! @brief Set cursor to
|
||||
//! @param c column
|
||||
//! @param r row
|
||||
#define ESC_H(c,r) "\x1b["#r";"#c"H"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#define LCD_UPDATE_INTERVAL 100
|
||||
#define LCD_TIMEOUT_TO_STATUS 30000ul //!< Generic timeout to status screen in ms, when no user action.
|
||||
#define LCD_TIMEOUT_TO_STATUS_BABYSTEP_Z 90000ul //!< Specific timeout for lcd_babystep_z screen in ms.
|
||||
|
|
@ -124,9 +115,6 @@ extern lcd_lcdupdate_func_t lcd_lcdupdate_func;
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
extern uint8_t lcd_clicked(void);
|
||||
|
||||
extern void lcd_beeper_quick_feedback(void);
|
||||
|
|
@ -134,13 +122,6 @@ extern void lcd_beeper_quick_feedback(void);
|
|||
//Cause an LCD refresh, and give the user visual or audible feedback that something has happened
|
||||
extern void lcd_quick_feedback(void);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
extern void lcd_update(uint8_t lcdDrawUpdateOverride);
|
||||
|
||||
extern void lcd_update_enable(uint8_t enabled);
|
||||
|
|
@ -171,29 +152,6 @@ private:
|
|||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Implementation of the LCD display routines for a Hitachi HD44780 display. These are common LCD character displays.
|
||||
* When selecting the Russian language, a slightly different LCD implementation is used to handle UTF8 characters.
|
||||
**/
|
||||
|
||||
|
||||
////////////////////////////////////
|
||||
// Setup button and encode mappings for each panel (into 'lcd_buttons' variable
|
||||
//
|
||||
|
|
@ -229,8 +187,6 @@ private:
|
|||
#define encrot3 1
|
||||
|
||||
|
||||
|
||||
|
||||
//Custom characters defined in the first 8 characters of the LCD
|
||||
#define LCD_STR_BEDTEMP "\x00"
|
||||
#define LCD_STR_DEGREE "\x01"
|
||||
|
|
|
|||
|
|
@ -11,12 +11,11 @@
|
|||
#include "ultralcd.h"
|
||||
#include "language.h"
|
||||
#include "static_assert.h"
|
||||
|
||||
|
||||
#include "sound.h"
|
||||
|
||||
extern int32_t lcd_encoder;
|
||||
|
||||
#define MENU_DEPTH_MAX 4
|
||||
#define MENU_DEPTH_MAX 6
|
||||
|
||||
static menu_record_t menu_stack[MENU_DEPTH_MAX];
|
||||
|
||||
|
|
@ -26,7 +25,7 @@ uint8_t menu_data[MENU_DATA_SIZE];
|
|||
#endif
|
||||
|
||||
uint8_t menu_depth = 0;
|
||||
|
||||
uint8_t menu_block_entering_on_serious_errors = SERIOUS_ERR_NONE;
|
||||
uint8_t menu_line = 0;
|
||||
uint8_t menu_item = 0;
|
||||
uint8_t menu_row = 0;
|
||||
|
|
@ -65,7 +64,11 @@ void menu_goto(menu_func_t menu, const uint32_t encoder, const bool feedback, bo
|
|||
void menu_start(void)
|
||||
{
|
||||
if (lcd_encoder > 0x8000) lcd_encoder = 0;
|
||||
if (lcd_encoder < 0) lcd_encoder = 0;
|
||||
if (lcd_encoder < 0)
|
||||
{
|
||||
lcd_encoder = 0;
|
||||
Sound_MakeSound(e_SOUND_TYPE_BlindAlert);
|
||||
}
|
||||
if (lcd_encoder < menu_top)
|
||||
menu_top = lcd_encoder;
|
||||
menu_line = menu_top;
|
||||
|
|
@ -75,7 +78,10 @@ void menu_start(void)
|
|||
void menu_end(void)
|
||||
{
|
||||
if (lcd_encoder >= menu_item)
|
||||
{
|
||||
lcd_encoder = menu_item - 1;
|
||||
Sound_MakeSound(e_SOUND_TYPE_BlindAlert);
|
||||
}
|
||||
if (((uint8_t)lcd_encoder) >= menu_top + LCD_HEIGHT)
|
||||
{
|
||||
menu_top = lcd_encoder - LCD_HEIGHT + 1;
|
||||
|
|
@ -85,13 +91,15 @@ void menu_end(void)
|
|||
}
|
||||
}
|
||||
|
||||
void menu_back(uint8_t nLevel)
|
||||
{
|
||||
menu_depth = ((menu_depth > nLevel) ? (menu_depth - nLevel) : 0);
|
||||
menu_goto(menu_stack[menu_depth].menu, menu_stack[menu_depth].position, true, true);
|
||||
}
|
||||
|
||||
void menu_back(void)
|
||||
{
|
||||
if (menu_depth > 0)
|
||||
{
|
||||
menu_depth--;
|
||||
menu_goto(menu_stack[menu_depth].menu, menu_stack[menu_depth].position, true, true);
|
||||
}
|
||||
menu_back(1);
|
||||
}
|
||||
|
||||
static void menu_back_no_reset(void)
|
||||
|
|
@ -120,7 +128,7 @@ void menu_back_if_clicked_fb(void)
|
|||
|
||||
void menu_submenu(menu_func_t submenu)
|
||||
{
|
||||
if (menu_depth <= MENU_DEPTH_MAX)
|
||||
if (menu_depth < MENU_DEPTH_MAX)
|
||||
{
|
||||
menu_stack[menu_depth].menu = menu_menu;
|
||||
menu_stack[menu_depth++].position = lcd_encoder;
|
||||
|
|
@ -130,7 +138,7 @@ void menu_submenu(menu_func_t submenu)
|
|||
|
||||
static void menu_submenu_no_reset(menu_func_t submenu)
|
||||
{
|
||||
if (menu_depth <= MENU_DEPTH_MAX)
|
||||
if (menu_depth < MENU_DEPTH_MAX)
|
||||
{
|
||||
menu_stack[menu_depth].menu = menu_menu;
|
||||
menu_stack[menu_depth++].position = lcd_encoder;
|
||||
|
|
@ -166,11 +174,64 @@ int menu_draw_item_printf_P(char type_char, const char* format, ...)
|
|||
}
|
||||
*/
|
||||
|
||||
static int menu_draw_item_puts_P(char type_char, const char* str)
|
||||
static char menu_selection_mark(){
|
||||
return (lcd_encoder == menu_item)?'>':' ';
|
||||
}
|
||||
|
||||
static void menu_draw_item_puts_P(char type_char, const char* str)
|
||||
{
|
||||
lcd_set_cursor(0, menu_row);
|
||||
int cnt = lcd_printf_P(PSTR("%c%-18S%c"), (lcd_encoder == menu_item)?'>':' ', str, type_char);
|
||||
return cnt;
|
||||
lcd_printf_P(PSTR("%c%-18.18S%c"), menu_selection_mark(), str, type_char);
|
||||
}
|
||||
|
||||
//! @brief Format sheet name
|
||||
//!
|
||||
//! @param[in] sheet_E Sheet in EEPROM
|
||||
//! @param[out] buffer for formatted output
|
||||
void menu_format_sheet_E(const Sheet &sheet_E, SheetFormatBuffer &buffer)
|
||||
{
|
||||
uint_least8_t index = sprintf_P(buffer.c, PSTR("%.10S "), _T(MSG_SHEET));
|
||||
eeprom_read_block(&(buffer.c[index]), sheet_E.name, 7);
|
||||
//index += 7;
|
||||
buffer.c[index + 7] = '\0';
|
||||
}
|
||||
|
||||
//! @brief Format sheet name in select menu
|
||||
//!
|
||||
//! @param[in] sheet_E Sheet in EEPROM
|
||||
//! @param[out] buffer for formatted output
|
||||
void menu_format_sheet_select_E(const Sheet &sheet_E, SheetFormatBuffer &buffer)
|
||||
{
|
||||
uint_least8_t index = sprintf_P(buffer.c,PSTR("%-9.9S["), _T(MSG_SHEET));
|
||||
eeprom_read_block(&(buffer.c[index]), sheet_E.name, 7);
|
||||
buffer.c[index + 7] = ']';
|
||||
buffer.c[index + 8] = '\0';
|
||||
}
|
||||
|
||||
static void menu_draw_item_select_sheet_E(char type_char, const Sheet &sheet)
|
||||
{
|
||||
lcd_set_cursor(0, menu_row);
|
||||
SheetFormatBuffer buffer;
|
||||
menu_format_sheet_select_E(sheet, buffer);
|
||||
lcd_printf_P(PSTR("%c%-18.18s%c"), menu_selection_mark(), buffer.c, type_char);
|
||||
}
|
||||
|
||||
|
||||
static void menu_draw_item_puts_E(char type_char, const Sheet &sheet)
|
||||
{
|
||||
lcd_set_cursor(0, menu_row);
|
||||
SheetFormatBuffer buffer;
|
||||
menu_format_sheet_E(sheet, buffer);
|
||||
lcd_printf_P(PSTR("%c%-18.18s%c"), menu_selection_mark(), buffer.c, type_char);
|
||||
}
|
||||
|
||||
static void menu_draw_item_puts_P(char type_char, const char* str, char num)
|
||||
{
|
||||
lcd_set_cursor(0, menu_row);
|
||||
lcd_printf_P(PSTR("%c%-.16S "), menu_selection_mark(), str);
|
||||
lcd_putc(num);
|
||||
lcd_set_cursor(19, menu_row);
|
||||
lcd_putc(type_char);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
@ -214,6 +275,36 @@ uint8_t menu_item_submenu_P(const char* str, menu_func_t submenu)
|
|||
return 0;
|
||||
}
|
||||
|
||||
uint8_t menu_item_submenu_E(const Sheet &sheet, menu_func_t submenu)
|
||||
{
|
||||
if (menu_item == menu_line)
|
||||
{
|
||||
if (lcd_draw_update) menu_draw_item_puts_E(LCD_STR_ARROW_RIGHT[0], sheet);
|
||||
if (menu_clicked && (lcd_encoder == menu_item))
|
||||
{
|
||||
menu_submenu(submenu);
|
||||
return menu_item_ret();
|
||||
}
|
||||
}
|
||||
menu_item++;
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint8_t menu_item_submenu_select_sheet_E(const Sheet &sheet, menu_func_t submenu)
|
||||
{
|
||||
if (menu_item == menu_line)
|
||||
{
|
||||
if (lcd_draw_update) menu_draw_item_select_sheet_E(LCD_STR_ARROW_RIGHT[0], sheet);
|
||||
if (menu_clicked && (lcd_encoder == menu_item))
|
||||
{
|
||||
menu_submenu(submenu);
|
||||
return menu_item_ret();
|
||||
}
|
||||
}
|
||||
menu_item++;
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint8_t menu_item_back_P(const char* str)
|
||||
{
|
||||
if (menu_item == menu_line)
|
||||
|
|
@ -248,6 +339,34 @@ uint8_t menu_item_function_P(const char* str, menu_func_t func)
|
|||
return 0;
|
||||
}
|
||||
|
||||
//! @brief Menu item function taking single parameter
|
||||
//!
|
||||
//! Ideal for numbered lists calling functions with number parameter.
|
||||
//! @param str Item caption
|
||||
//! @param number aditional character to be added after str, e.g. number
|
||||
//! @param func pointer to function taking uint8_t with no return value
|
||||
//! @param fn_par value to be passed to function
|
||||
//! @retval 0
|
||||
//! @retval 1 Item was clicked
|
||||
uint8_t menu_item_function_P(const char* str, char number, void (*func)(uint8_t), uint8_t fn_par)
|
||||
{
|
||||
if (menu_item == menu_line)
|
||||
{
|
||||
if (lcd_draw_update) menu_draw_item_puts_P(' ', str, number);
|
||||
if (menu_clicked && (lcd_encoder == menu_item))
|
||||
{
|
||||
menu_clicked = false;
|
||||
lcd_consume_click();
|
||||
lcd_update_enabled = 0;
|
||||
if (func) func(fn_par);
|
||||
lcd_update_enabled = 1;
|
||||
return menu_item_ret();
|
||||
}
|
||||
}
|
||||
menu_item++;
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint8_t menu_item_gcode_P(const char* str, const char* str_gcode)
|
||||
{
|
||||
if (menu_item == menu_line)
|
||||
|
|
@ -268,11 +387,11 @@ const char menu_20x_space[] PROGMEM = " ";
|
|||
|
||||
const char menu_fmt_int3[] PROGMEM = "%c%.15S:%s%3d";
|
||||
|
||||
const char menu_fmt_float31[] PROGMEM = "%c%.12S:%s%+06.1f";
|
||||
const char menu_fmt_float31[] PROGMEM = "%-12.12S%+8.1f";
|
||||
|
||||
const char menu_fmt_float13[] PROGMEM = "%c%.12S:%s%+06.3f";
|
||||
const char menu_fmt_float13[] PROGMEM = "%c%-13.13S%+5.3f";
|
||||
|
||||
const char menu_fmt_float13off[] PROGMEM = "%c%.12S:%s%";
|
||||
const char menu_fmt_float13off[] PROGMEM = "%c%-13.13S%6.6s";
|
||||
|
||||
template<typename T>
|
||||
static void menu_draw_P(char chr, const char* str, int16_t val);
|
||||
|
|
@ -293,43 +412,45 @@ template<>
|
|||
void menu_draw_P<uint8_t*>(char chr, const char* str, int16_t val)
|
||||
{
|
||||
menu_data_edit_t* _md = (menu_data_edit_t*)&(menu_data[0]);
|
||||
int text_len = strlen_P(str);
|
||||
if (text_len > 15) text_len = 15;
|
||||
char spaces[21];
|
||||
strcpy_P(spaces, menu_20x_space);
|
||||
spaces[12 - text_len] = 0;
|
||||
float factor = 1.0 + static_cast<float>(val) / 1000.0;
|
||||
float factor = 1.0f + static_cast<float>(val) / 1000.0f;
|
||||
if (val <= _md->minEditValue)
|
||||
{
|
||||
lcd_printf_P(menu_fmt_float13off, chr, str, spaces);
|
||||
lcd_puts_P(_i(" [off]"));
|
||||
lcd_printf_P(menu_fmt_float13off, chr, str, " [off]");
|
||||
}
|
||||
else
|
||||
{
|
||||
lcd_printf_P(menu_fmt_float13, chr, str, spaces, factor);
|
||||
lcd_printf_P(menu_fmt_float13, chr, str, factor);
|
||||
}
|
||||
}
|
||||
|
||||
//draw up to 12 chars of text, ':' and float number in format +123.0
|
||||
void menu_draw_float31(char chr, const char* str, float val)
|
||||
//! @brief Draw up to 10 chars of text and a float number in format from +0.0 to +12345.0. The increased range is necessary
|
||||
//! for displaying large values of extruder positions, which caused text overflow in the previous implementation.
|
||||
//!
|
||||
//! @param str string label to print
|
||||
//! @param val value to print aligned to the right side of the display
|
||||
//!
|
||||
//! Implementation comments:
|
||||
//! The text needs to come with a colon ":", this function does not append it anymore.
|
||||
//! That resulted in a much shorter implementation (234628B -> 234476B)
|
||||
//! There are similar functions around which may be shortened in a similar way
|
||||
void menu_draw_float31(const char* str, float val)
|
||||
{
|
||||
int text_len = strlen_P(str);
|
||||
if (text_len > 12) text_len = 12;
|
||||
char spaces[21];
|
||||
strcpy_P(spaces, menu_20x_space);
|
||||
spaces[12 - text_len] = 0;
|
||||
lcd_printf_P(menu_fmt_float31, chr, str, spaces, val);
|
||||
lcd_printf_P(menu_fmt_float31, str, val);
|
||||
}
|
||||
|
||||
//draw up to 12 chars of text, ':' and float number in format +1.234
|
||||
void menu_draw_float13(char chr, const char* str, float val)
|
||||
//! @brief Draw up to 14 chars of text and a float number in format +1.234
|
||||
//!
|
||||
//! @param str string label to print
|
||||
//! @param val value to print aligned to the right side of the display
|
||||
//!
|
||||
//! Implementation comments:
|
||||
//! This function uses similar optimization principles as menu_draw_float31
|
||||
//! (i.e. str must include a ':' at its end)
|
||||
//! FLASH usage dropped 234476B -> 234392B
|
||||
//! Moreover, this function gets inlined in the final code, so removing it doesn't really help ;)
|
||||
void menu_draw_float13(const char* str, float val)
|
||||
{
|
||||
int text_len = strlen_P(str);
|
||||
if (text_len > 12) text_len = 12;
|
||||
char spaces[21];
|
||||
strcpy_P(spaces, menu_20x_space);
|
||||
spaces[12 - text_len] = 0;
|
||||
lcd_printf_P(menu_fmt_float13, chr, str, spaces, val);
|
||||
lcd_printf_P(menu_fmt_float13, ' ', str, val);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
|
|
@ -359,7 +480,7 @@ uint8_t menu_item_edit_P(const char* str, T pval, int16_t min_val, int16_t max_v
|
|||
if (lcd_draw_update)
|
||||
{
|
||||
lcd_set_cursor(0, menu_row);
|
||||
menu_draw_P<T>((lcd_encoder == menu_item)?'>':' ', str, *pval);
|
||||
menu_draw_P<T>(menu_selection_mark(), str, *pval);
|
||||
}
|
||||
if (menu_clicked && (lcd_encoder == menu_item))
|
||||
{
|
||||
|
|
@ -380,8 +501,3 @@ template uint8_t menu_item_edit_P<int16_t*>(const char* str, int16_t *pval, int1
|
|||
template uint8_t menu_item_edit_P<uint8_t*>(const char* str, uint8_t *pval, int16_t min_val, int16_t max_val);
|
||||
|
||||
#undef _menu_data
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
#define _MENU_H
|
||||
|
||||
#include <inttypes.h>
|
||||
#include "eeprom.h"
|
||||
|
||||
#define MENU_DATA_SIZE 32
|
||||
|
||||
|
|
@ -28,6 +29,27 @@ extern uint8_t menu_data[MENU_DATA_SIZE];
|
|||
|
||||
extern uint8_t menu_depth;
|
||||
|
||||
//! definition of serious errors possibly blocking the main menu
|
||||
//! Use them as bit mask, so that the code may set various errors at the same time
|
||||
enum ESeriousErrors {
|
||||
SERIOUS_ERR_NONE = 0,
|
||||
SERIOUS_ERR_MINTEMP_HEATER = 0x01,
|
||||
SERIOUS_ERR_MINTEMP_BED = 0x02
|
||||
}; // and possibly others in the future.
|
||||
|
||||
//! this is a flag for disabling entering the main menu. If this is set
|
||||
//! to anything != 0, the only the main status screen will be shown on the
|
||||
//! LCD and the user will be prevented from entering the menu.
|
||||
//! Now used only to block doing anything with the printer when there is
|
||||
//! the infamous MINTEMP error (SERIOUS_ERR_MINTEMP).
|
||||
extern uint8_t menu_block_entering_on_serious_errors;
|
||||
|
||||
//! a pair of macros for manipulating the serious errors
|
||||
//! a c++ class would have been better
|
||||
#define menu_set_serious_error(x) menu_block_entering_on_serious_errors |= x;
|
||||
#define menu_unset_serious_error(x) menu_block_entering_on_serious_errors &= ~x;
|
||||
#define menu_is_serious_error(x) (menu_block_entering_on_serious_errors & x) != 0
|
||||
|
||||
extern uint8_t menu_line;
|
||||
extern uint8_t menu_item;
|
||||
extern uint8_t menu_row;
|
||||
|
|
@ -54,6 +76,7 @@ void menu_start(void);
|
|||
extern void menu_end(void);
|
||||
|
||||
extern void menu_back(void);
|
||||
extern void menu_back(uint8_t nLevel);
|
||||
|
||||
extern void menu_back_if_clicked(void);
|
||||
|
||||
|
|
@ -77,12 +100,24 @@ extern uint8_t menu_item_text_P(const char* str);
|
|||
#define MENU_ITEM_SUBMENU_P(str, submenu) do { if (menu_item_submenu_P(str, submenu)) return; } while (0)
|
||||
extern uint8_t menu_item_submenu_P(const char* str, menu_func_t submenu);
|
||||
|
||||
#define MENU_ITEM_SUBMENU_E(sheet, submenu) do { if (menu_item_submenu_E(sheet, submenu)) return; } while (0)
|
||||
extern uint8_t menu_item_submenu_E(const Sheet &sheet, menu_func_t submenu);
|
||||
|
||||
#define MENU_ITEM_SUBMENU_SELECT_SHEET_E(sheet, submenu) do { if (menu_item_submenu_select_sheet_E(sheet, submenu)) return; } while (0)
|
||||
extern uint8_t menu_item_submenu_select_sheet_E(const Sheet &sheet, menu_func_t submenu);
|
||||
|
||||
#define MENU_ITEM_BACK_P(str) do { if (menu_item_back_P(str)) return; } while (0)
|
||||
extern uint8_t menu_item_back_P(const char* str);
|
||||
|
||||
// leaving menu - this condition must be immediately before MENU_ITEM_BACK_P
|
||||
#define ON_MENU_LEAVE(func) do { if (((menu_item == menu_line) && menu_clicked && (lcd_encoder == menu_item)) || menu_leaving){ func } } while (0)
|
||||
|
||||
#define MENU_ITEM_FUNCTION_P(str, func) do { if (menu_item_function_P(str, func)) return; } while (0)
|
||||
extern uint8_t menu_item_function_P(const char* str, menu_func_t func);
|
||||
|
||||
#define MENU_ITEM_FUNCTION_NR_P(str, number, func, fn_par) do { if (menu_item_function_P(str, number, func, fn_par)) return; } while (0)
|
||||
extern uint8_t menu_item_function_P(const char* str, char number, void (*func)(uint8_t), uint8_t fn_par);
|
||||
|
||||
#define MENU_ITEM_GCODE_P(str, str_gcode) do { if (menu_item_gcode_P(str, str_gcode)) return; } while (0)
|
||||
extern uint8_t menu_item_gcode_P(const char* str, const char* str_gcode);
|
||||
|
||||
|
|
@ -90,11 +125,19 @@ extern uint8_t menu_item_gcode_P(const char* str, const char* str_gcode);
|
|||
extern const char menu_fmt_int3[];
|
||||
|
||||
extern const char menu_fmt_float31[];
|
||||
extern const char menu_fmt_float13[];
|
||||
|
||||
|
||||
extern void menu_draw_float31(char chr, const char* str, float val);
|
||||
extern void menu_draw_float31(const char* str, float val);
|
||||
|
||||
extern void menu_draw_float13(char chr, const char* str, float val);
|
||||
extern void menu_draw_float13(const char* str, float val);
|
||||
|
||||
struct SheetFormatBuffer
|
||||
{
|
||||
char c[19];
|
||||
};
|
||||
|
||||
extern void menu_format_sheet_E(const Sheet &sheet_E, SheetFormatBuffer &buffer);
|
||||
|
||||
|
||||
#define MENU_ITEM_EDIT_int3_P(str, pval, minval, maxval) do { if (menu_item_edit_P(str, pval, minval, maxval)) return; } while (0)
|
||||
|
|
|
|||
|
|
@ -23,8 +23,7 @@ float world2machine_shift[2];
|
|||
#define WEIGHT_FIRST_ROW_Y_HIGH (0.3f)
|
||||
#define WEIGHT_FIRST_ROW_Y_LOW (0.0f)
|
||||
|
||||
#define BED_ZERO_REF_X (- 22.f + X_PROBE_OFFSET_FROM_EXTRUDER) // -22 + 23 = 1
|
||||
#define BED_ZERO_REF_Y (- 0.6f + Y_PROBE_OFFSET_FROM_EXTRUDER + 4.f) // -0.6 + 5 + 4 = 8.4
|
||||
|
||||
|
||||
// Scaling of the real machine axes against the programmed dimensions in the firmware.
|
||||
// The correction is tiny, here around 0.5mm on 250mm length.
|
||||
|
|
@ -89,19 +88,6 @@ const float bed_ref_points_4[] PROGMEM = {
|
|||
210.4f - BED_PRINT_ZERO_REF_Y - Y_PROBE_OFFSET_FROM_EXTRUDER - SHEET_PRINT_ZERO_REF_Y
|
||||
};
|
||||
|
||||
const float bed_ref_points[] PROGMEM = {
|
||||
13.f - BED_ZERO_REF_X, 10.4f - BED_ZERO_REF_Y,
|
||||
115.f - BED_ZERO_REF_X, 10.4f - BED_ZERO_REF_Y,
|
||||
216.f - BED_ZERO_REF_X, 10.4f - BED_ZERO_REF_Y,
|
||||
|
||||
216.f - BED_ZERO_REF_X, 106.4f - BED_ZERO_REF_Y,
|
||||
115.f - BED_ZERO_REF_X, 106.4f - BED_ZERO_REF_Y,
|
||||
13.f - BED_ZERO_REF_X, 106.4f - BED_ZERO_REF_Y,
|
||||
|
||||
13.f - BED_ZERO_REF_X, 202.4f - BED_ZERO_REF_Y,
|
||||
115.f - BED_ZERO_REF_X, 202.4f - BED_ZERO_REF_Y,
|
||||
216.f - BED_ZERO_REF_X, 202.4f - BED_ZERO_REF_Y
|
||||
};
|
||||
#else
|
||||
|
||||
// Positions of the bed reference points in the machine coordinates, referenced to the P.I.N.D.A sensor.
|
||||
|
|
@ -113,22 +99,9 @@ const float bed_ref_points_4[] PROGMEM = {
|
|||
13.f - BED_ZERO_REF_X, 104.4f - BED_ZERO_REF_Y
|
||||
};
|
||||
|
||||
const float bed_ref_points[] PROGMEM = {
|
||||
13.f - BED_ZERO_REF_X, 8.4f - BED_ZERO_REF_Y,
|
||||
115.f - BED_ZERO_REF_X, 8.4f - BED_ZERO_REF_Y,
|
||||
216.f - BED_ZERO_REF_X, 8.4f - BED_ZERO_REF_Y,
|
||||
|
||||
216.f - BED_ZERO_REF_X, 104.4f - BED_ZERO_REF_Y,
|
||||
115.f - BED_ZERO_REF_X, 104.4f - BED_ZERO_REF_Y,
|
||||
13.f - BED_ZERO_REF_X, 104.4f - BED_ZERO_REF_Y,
|
||||
|
||||
13.f - BED_ZERO_REF_X, 202.4f - BED_ZERO_REF_Y,
|
||||
115.f - BED_ZERO_REF_X, 202.4f - BED_ZERO_REF_Y,
|
||||
216.f - BED_ZERO_REF_X, 202.4f - BED_ZERO_REF_Y
|
||||
};
|
||||
|
||||
#endif //not HEATBED_V2
|
||||
|
||||
|
||||
static inline float sqr(float x) { return x * x; }
|
||||
|
||||
#ifdef HEATBED_V2
|
||||
|
|
@ -705,11 +678,13 @@ void reset_bed_offset_and_skew()
|
|||
|
||||
bool is_bed_z_jitter_data_valid()
|
||||
// offsets of the Z heiths of the calibration points from the first point are saved as 16bit signed int, scaled to tenths of microns
|
||||
{
|
||||
for (int8_t i = 0; i < 8; ++ i)
|
||||
if (eeprom_read_word((uint16_t*)(EEPROM_BED_CALIBRATION_Z_JITTER+i*2)) == 0x0FFFF)
|
||||
return false;
|
||||
return true;
|
||||
// if at least one 16bit integer has different value then -1 (0x0FFFF), data are considered valid and function returns true, otherwise it returns false
|
||||
{
|
||||
bool data_valid = false;
|
||||
for (int8_t i = 0; i < 8; ++i) {
|
||||
if (eeprom_read_word((uint16_t*)(EEPROM_BED_CALIBRATION_Z_JITTER + i * 2)) != 0x0FFFF) data_valid = true;
|
||||
}
|
||||
return data_valid;
|
||||
}
|
||||
|
||||
static void world2machine_update(const float vec_x[2], const float vec_y[2], const float cntr[2])
|
||||
|
|
@ -963,16 +938,18 @@ static inline void update_current_position_z()
|
|||
}
|
||||
|
||||
// At the current position, find the Z stop.
|
||||
|
||||
inline bool find_bed_induction_sensor_point_z(float minimum_z, uint8_t n_iter, int
|
||||
#ifdef SUPPORT_VERBOSITY
|
||||
verbosity_level
|
||||
#endif //SUPPORT_VERBOSITY
|
||||
)
|
||||
{
|
||||
bool high_deviation_occured = false;
|
||||
#ifdef TMC2130
|
||||
FORCE_HIGH_POWER_START;
|
||||
#endif
|
||||
|
||||
//printf_P(PSTR("Min. Z: %f\n"), minimum_z);
|
||||
#ifdef SUPPORT_VERBOSITY
|
||||
if(verbosity_level >= 10) SERIAL_ECHOLNPGM("find bed induction sensor point z");
|
||||
#endif // SUPPORT_VERBOSITY
|
||||
|
|
@ -987,32 +964,74 @@ inline bool find_bed_induction_sensor_point_z(float minimum_z, uint8_t n_iter, i
|
|||
// we have to let the planner know where we are right now as it is not where we said to go.
|
||||
update_current_position_z();
|
||||
if (! endstop_z_hit_on_purpose())
|
||||
goto error;
|
||||
{
|
||||
//printf_P(PSTR("endstop not hit 1, current_pos[Z]: %f \n"), current_position[Z_AXIS]);
|
||||
goto error;
|
||||
}
|
||||
#ifdef TMC2130
|
||||
if (READ(Z_TMC2130_DIAG) != 0) goto error; //crash Z detected
|
||||
if (READ(Z_TMC2130_DIAG) != 0)
|
||||
{
|
||||
//printf_P(PSTR("crash detected 1, current_pos[Z]: %f \n"), current_position[Z_AXIS]);
|
||||
goto error; //crash Z detected
|
||||
}
|
||||
#endif //TMC2130
|
||||
for (uint8_t i = 0; i < n_iter; ++ i)
|
||||
{
|
||||
// Move up the retract distance.
|
||||
current_position[Z_AXIS] += .5f;
|
||||
go_to_current(homing_feedrate[Z_AXIS]/60);
|
||||
// Move back down slowly to find bed.
|
||||
|
||||
current_position[Z_AXIS] += high_deviation_occured ? 0.5 : 0.2;
|
||||
float z_bckp = current_position[Z_AXIS];
|
||||
go_to_current(homing_feedrate[Z_AXIS]/60);
|
||||
// Move back down slowly to find bed.
|
||||
current_position[Z_AXIS] = minimum_z;
|
||||
//printf_P(PSTR("init Z = %f, min_z = %f, i = %d\n"), z_bckp, minimum_z, i);
|
||||
go_to_current(homing_feedrate[Z_AXIS]/(4*60));
|
||||
// we have to let the planner know where we are right now as it is not where we said to go.
|
||||
update_current_position_z();
|
||||
if (! endstop_z_hit_on_purpose())
|
||||
goto error;
|
||||
//printf_P(PSTR("Zs: %f, Z: %f, delta Z: %f"), z_bckp, current_position[Z_AXIS], (z_bckp - current_position[Z_AXIS]));
|
||||
if (abs(current_position[Z_AXIS] - z_bckp) < 0.025) {
|
||||
//printf_P(PSTR("PINDA triggered immediately, move Z higher and repeat measurement\n"));
|
||||
current_position[Z_AXIS] += 0.5;
|
||||
go_to_current(homing_feedrate[Z_AXIS]/60);
|
||||
current_position[Z_AXIS] = minimum_z;
|
||||
go_to_current(homing_feedrate[Z_AXIS]/(4*60));
|
||||
// we have to let the planner know where we are right now as it is not where we said to go.
|
||||
update_current_position_z();
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (!endstop_z_hit_on_purpose())
|
||||
{
|
||||
//printf_P(PSTR("i = %d, endstop not hit 2, current_pos[Z]: %f \n"), i, current_position[Z_AXIS]);
|
||||
goto error;
|
||||
}
|
||||
#ifdef TMC2130
|
||||
if (READ(Z_TMC2130_DIAG) != 0) goto error; //crash Z detected
|
||||
if (READ(Z_TMC2130_DIAG) != 0) {
|
||||
//printf_P(PSTR("crash detected 2, current_pos[Z]: %f \n"), current_position[Z_AXIS]);
|
||||
goto error; //crash Z detected
|
||||
}
|
||||
#endif //TMC2130
|
||||
// SERIAL_ECHOPGM("Bed find_bed_induction_sensor_point_z low, height: ");
|
||||
// MYSERIAL.print(current_position[Z_AXIS], 5);
|
||||
// SERIAL_ECHOLNPGM("");
|
||||
float dz = i?abs(current_position[Z_AXIS] - (z / i)):0;
|
||||
z += current_position[Z_AXIS];
|
||||
// printf_P(PSTR(" Z[%d] = %d, dz=%d\n"), i, (int)(current_position[Z_AXIS] * 1000), (int)(dz * 1000));
|
||||
if (dz > 0.05) goto error;//deviation > 50um
|
||||
//printf_P(PSTR("Z[%d] = %d, dz=%d\n"), i, (int)(current_position[Z_AXIS] * 1000), (int)(dz * 1000));
|
||||
//printf_P(PSTR("Z- measurement deviation from avg value %f um\n"), dz);
|
||||
if (dz > 0.05) { //deviation > 50um
|
||||
if (high_deviation_occured == false) { //first occurence may be caused in some cases by mechanic resonance probably especially if printer is placed on unstable surface
|
||||
//printf_P(PSTR("high dev. first occurence\n"));
|
||||
delay_keep_alive(500); //damping
|
||||
//start measurement from the begining, but this time with higher movements in Z axis which should help to reduce mechanical resonance
|
||||
high_deviation_occured = true;
|
||||
i = -1;
|
||||
z = 0;
|
||||
}
|
||||
else {
|
||||
goto error;
|
||||
}
|
||||
}
|
||||
//printf_P(PSTR("PINDA triggered at %f\n"), current_position[Z_AXIS]);
|
||||
}
|
||||
current_position[Z_AXIS] = z;
|
||||
if (n_iter > 1)
|
||||
|
|
@ -2220,7 +2239,7 @@ BedSkewOffsetDetectionResultType find_bed_offset_and_skew(int8_t verbosity_level
|
|||
lcd_puts_P(_T(MSG_FIND_BED_OFFSET_AND_SKEW_LINE2));
|
||||
|
||||
if (iteration > 0) {
|
||||
lcd_puts_at_P(0, next_line + 1, _i("Iteration "));////MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION c=20 r=0
|
||||
lcd_puts_at_P(0, next_line + 1, _i("Iteration "));////MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION c=20
|
||||
lcd_print(int(iteration + 1));
|
||||
}
|
||||
#endif /* MESH_BED_CALIBRATION_SHOW_LCD */
|
||||
|
|
@ -2428,8 +2447,11 @@ BedSkewOffsetDetectionResultType find_bed_offset_and_skew(int8_t verbosity_level
|
|||
refresh_cmd_timeout();
|
||||
// Go to the measurement point.
|
||||
// Use the coorrected coordinate, which is a result of find_bed_offset_and_skew().
|
||||
current_position[X_AXIS] = pgm_read_float(bed_ref_points + mesh_point * 2);
|
||||
current_position[Y_AXIS] = pgm_read_float(bed_ref_points + mesh_point * 2 + 1);
|
||||
uint8_t ix = mesh_point % MESH_MEAS_NUM_X_POINTS; // from 0 to MESH_NUM_X_POINTS - 1
|
||||
uint8_t iy = mesh_point / MESH_MEAS_NUM_X_POINTS;
|
||||
if (iy & 1) ix = (MESH_MEAS_NUM_X_POINTS - 1) - ix;
|
||||
current_position[X_AXIS] = BED_X(ix, MESH_MEAS_NUM_X_POINTS);
|
||||
current_position[Y_AXIS] = BED_Y(iy, MESH_MEAS_NUM_Y_POINTS);
|
||||
go_to_current(homing_feedrate[X_AXIS] / 60);
|
||||
delay_keep_alive(3000);
|
||||
}
|
||||
|
|
@ -2478,7 +2500,7 @@ BedSkewOffsetDetectionResultType improve_bed_offset_and_skew(int8_t method, int8
|
|||
|
||||
#ifdef MESH_BED_CALIBRATION_SHOW_LCD
|
||||
uint8_t next_line;
|
||||
lcd_display_message_fullscreen_P(_i("Improving bed calibration point"), next_line);////MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=60 r=0
|
||||
lcd_display_message_fullscreen_P(_i("Improving bed calibration point"), next_line);////MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=60
|
||||
if (next_line > 3)
|
||||
next_line = 3;
|
||||
#endif /* MESH_BED_CALIBRATION_SHOW_LCD */
|
||||
|
|
@ -2492,7 +2514,7 @@ BedSkewOffsetDetectionResultType improve_bed_offset_and_skew(int8_t method, int8
|
|||
#ifdef MESH_BED_CALIBRATION_SHOW_LCD
|
||||
lcd_set_cursor(0, next_line);
|
||||
lcd_print(mesh_point+1);
|
||||
lcd_puts_P(_T(MSG_FIND_BED_OFFSET_AND_SKEW_LINE2));////MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14 r=0
|
||||
lcd_puts_P(_T(MSG_FIND_BED_OFFSET_AND_SKEW_LINE2));////MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
|
||||
#endif /* MESH_BED_CALIBRATION_SHOW_LCD */
|
||||
|
||||
// Move up.
|
||||
|
|
@ -2771,7 +2793,7 @@ void go_home_with_z_lift()
|
|||
current_position[Y_AXIS] = Y_MIN_POS+0.2;
|
||||
// Clamp to the physical coordinates.
|
||||
world2machine_clamp(current_position[X_AXIS], current_position[Y_AXIS]);
|
||||
go_to_current(homing_feedrate[X_AXIS]/60);
|
||||
go_to_current(homing_feedrate[X_AXIS]/20);
|
||||
// Third move up to a safe height.
|
||||
current_position[Z_AXIS] = Z_MIN_POS;
|
||||
go_to_current(homing_feedrate[Z_AXIS]/60);
|
||||
|
|
@ -2806,8 +2828,8 @@ bool sample_mesh_and_store_reference()
|
|||
// The first point defines the reference.
|
||||
current_position[Z_AXIS] = MESH_HOME_Z_SEARCH;
|
||||
go_to_current(homing_feedrate[Z_AXIS]/60);
|
||||
current_position[X_AXIS] = pgm_read_float(bed_ref_points);
|
||||
current_position[Y_AXIS] = pgm_read_float(bed_ref_points+1);
|
||||
current_position[X_AXIS] = BED_X0;
|
||||
current_position[Y_AXIS] = BED_Y0;
|
||||
world2machine_clamp(current_position[X_AXIS], current_position[Y_AXIS]);
|
||||
go_to_current(homing_feedrate[X_AXIS]/60);
|
||||
memcpy(destination, current_position, sizeof(destination));
|
||||
|
|
@ -2836,8 +2858,11 @@ bool sample_mesh_and_store_reference()
|
|||
// Print the decrasing ID of the measurement point.
|
||||
current_position[Z_AXIS] = MESH_HOME_Z_SEARCH;
|
||||
go_to_current(homing_feedrate[Z_AXIS]/60);
|
||||
current_position[X_AXIS] = pgm_read_float(bed_ref_points+2*mesh_point);
|
||||
current_position[Y_AXIS] = pgm_read_float(bed_ref_points+2*mesh_point+1);
|
||||
int8_t ix = mesh_point % MESH_MEAS_NUM_X_POINTS;
|
||||
int8_t iy = mesh_point / MESH_MEAS_NUM_X_POINTS;
|
||||
if (iy & 1) ix = (MESH_MEAS_NUM_X_POINTS - 1) - ix; // Zig zag
|
||||
current_position[X_AXIS] = BED_X(ix, MESH_MEAS_NUM_X_POINTS);
|
||||
current_position[Y_AXIS] = BED_Y(iy, MESH_MEAS_NUM_Y_POINTS);
|
||||
world2machine_clamp(current_position[X_AXIS], current_position[Y_AXIS]);
|
||||
go_to_current(homing_feedrate[X_AXIS]/60);
|
||||
#ifdef MESH_BED_CALIBRATION_SHOW_LCD
|
||||
|
|
@ -2852,9 +2877,7 @@ bool sample_mesh_and_store_reference()
|
|||
return false;
|
||||
}
|
||||
// Get cords of measuring point
|
||||
int8_t ix = mesh_point % MESH_MEAS_NUM_X_POINTS;
|
||||
int8_t iy = mesh_point / MESH_MEAS_NUM_X_POINTS;
|
||||
if (iy & 1) ix = (MESH_MEAS_NUM_X_POINTS - 1) - ix; // Zig zag
|
||||
|
||||
mbl.set_z(ix, iy, current_position[Z_AXIS]);
|
||||
}
|
||||
{
|
||||
|
|
@ -2956,8 +2979,13 @@ bool scan_bed_induction_points(int8_t verbosity_level)
|
|||
go_to_current(homing_feedrate[Z_AXIS]/60);
|
||||
// Go to the measurement point.
|
||||
// Use the coorrected coordinate, which is a result of find_bed_offset_and_skew().
|
||||
current_position[X_AXIS] = vec_x[0] * pgm_read_float(bed_ref_points+mesh_point*2) + vec_y[0] * pgm_read_float(bed_ref_points+mesh_point*2+1) + cntr[0];
|
||||
current_position[Y_AXIS] = vec_x[1] * pgm_read_float(bed_ref_points+mesh_point*2) + vec_y[1] * pgm_read_float(bed_ref_points+mesh_point*2+1) + cntr[1];
|
||||
uint8_t ix = mesh_point % MESH_MEAS_NUM_X_POINTS; // from 0 to MESH_NUM_X_POINTS - 1
|
||||
uint8_t iy = mesh_point / MESH_MEAS_NUM_X_POINTS;
|
||||
if (iy & 1) ix = (MESH_MEAS_NUM_X_POINTS - 1) - ix;
|
||||
float bedX = BED_X(ix, MESH_MEAS_NUM_X_POINTS);
|
||||
float bedY = BED_Y(iy, MESH_MEAS_NUM_Y_POINTS);
|
||||
current_position[X_AXIS] = vec_x[0] * bedX + vec_y[0] * bedY + cntr[0];
|
||||
current_position[Y_AXIS] = vec_x[1] * bedX + vec_y[1] * bedY + cntr[1];
|
||||
// The calibration points are very close to the min Y.
|
||||
if (current_position[Y_AXIS] < Y_MIN_POS_FOR_BED_CALIBRATION)
|
||||
current_position[Y_AXIS] = Y_MIN_POS_FOR_BED_CALIBRATION;
|
||||
|
|
@ -3003,7 +3031,8 @@ void babystep_load()
|
|||
check_babystep(); //checking if babystep is in allowed range, otherwise setting babystep to 0
|
||||
|
||||
// End of G80: Apply the baby stepping value.
|
||||
EEPROM_read_B(EEPROM_BABYSTEP_Z, &babystepLoadZ);
|
||||
babystepLoadZ = eeprom_read_word(reinterpret_cast<uint16_t *>(&(EEPROM_Sheets_base->
|
||||
s[(eeprom_read_byte(&(EEPROM_Sheets_base->active_sheet)))].z_offset)));
|
||||
|
||||
#if 0
|
||||
SERIAL_ECHO("Z baby step: ");
|
||||
|
|
@ -3065,4 +3094,97 @@ void count_xyz_details(float (&distanceMin)[2]) {
|
|||
distanceMin[mesh_point] = (y - Y_MIN_POS_CALIBRATION_POINT_OUT_OF_REACH);
|
||||
}
|
||||
}
|
||||
/*
|
||||
e_MBL_TYPE e_mbl_type = e_MBL_OPTIMAL;
|
||||
|
||||
void mbl_mode_set() {
|
||||
switch (e_mbl_type) {
|
||||
case e_MBL_OPTIMAL: e_mbl_type = e_MBL_PREC; break;
|
||||
case e_MBL_PREC: e_mbl_type = e_MBL_FAST; break;
|
||||
case e_MBL_FAST: e_mbl_type = e_MBL_OPTIMAL; break;
|
||||
default: e_mbl_type = e_MBL_OPTIMAL; break;
|
||||
}
|
||||
eeprom_update_byte((uint8_t*)EEPROM_MBL_TYPE,(uint8_t)e_mbl_type);
|
||||
}
|
||||
|
||||
void mbl_mode_init() {
|
||||
uint8_t mbl_type = eeprom_read_byte((uint8_t*)EEPROM_MBL_TYPE);
|
||||
if (mbl_type == 0xFF) e_mbl_type = e_MBL_OPTIMAL;
|
||||
else e_mbl_type = mbl_type;
|
||||
}
|
||||
*/
|
||||
|
||||
void mbl_settings_init() {
|
||||
//3x3 mesh; 3 Z-probes on each point, magnet elimination on
|
||||
//magnet elimination: use aaproximate Z-coordinate instead of measured values for points which are near magnets
|
||||
if (eeprom_read_byte((uint8_t*)EEPROM_MBL_MAGNET_ELIMINATION) == 0xFF) {
|
||||
eeprom_update_byte((uint8_t*)EEPROM_MBL_MAGNET_ELIMINATION, 1);
|
||||
}
|
||||
if (eeprom_read_byte((uint8_t*)EEPROM_MBL_POINTS_NR) == 0xFF) {
|
||||
eeprom_update_byte((uint8_t*)EEPROM_MBL_POINTS_NR, 3);
|
||||
}
|
||||
mbl_z_probe_nr = eeprom_read_byte((uint8_t*)EEPROM_MBL_PROBE_NR);
|
||||
if (mbl_z_probe_nr == 0xFF) {
|
||||
mbl_z_probe_nr = 3;
|
||||
eeprom_update_byte((uint8_t*)EEPROM_MBL_PROBE_NR, mbl_z_probe_nr);
|
||||
}
|
||||
}
|
||||
|
||||
//parameter ix: index of mesh bed leveling point in X-axis (for meas_points == 7 is valid range from 0 to 6; for meas_points == 3 is valid range from 0 to 2 )
|
||||
//parameter iy: index of mesh bed leveling point in Y-axis (for meas_points == 7 is valid range from 0 to 6; for meas_points == 3 is valid range from 0 to 2 )
|
||||
//parameter meas_points: number of mesh bed leveling points in one axis; currently designed and tested for values 3 and 7
|
||||
//parameter zigzag: false if ix is considered 0 on left side of bed and ix rises with rising X coordinate; true if ix is considered 0 on the right side of heatbed for odd iy values (zig zag mesh bed leveling movements)
|
||||
//function returns true if point is considered valid (typicaly in safe distance from magnet or another object which inflences PINDA measurements)
|
||||
bool mbl_point_measurement_valid(uint8_t ix, uint8_t iy, uint8_t meas_points, bool zigzag) {
|
||||
//"human readable" heatbed plan
|
||||
//magnet proximity influence Z coordinate measurements significantly (40 - 100 um)
|
||||
//0 - measurement point is above magnet and Z coordinate can be influenced negatively
|
||||
//1 - we should be in safe distance from magnets, measurement should be accurate
|
||||
if ((ix >= meas_points) || (iy >= meas_points)) return false;
|
||||
|
||||
uint8_t valid_points_mask[7] = {
|
||||
//[X_MAX,Y_MAX]
|
||||
//0123456
|
||||
0b1111111,//6
|
||||
0b1111111,//5
|
||||
0b1110111,//4
|
||||
0b1111011,//3
|
||||
0b1110111,//2
|
||||
0b1111111,//1
|
||||
0b1111111,//0
|
||||
//[0,0]
|
||||
};
|
||||
if (meas_points == 3) {
|
||||
ix *= 3;
|
||||
iy *= 3;
|
||||
}
|
||||
if (zigzag) {
|
||||
if ((iy % 2) == 0) return (valid_points_mask[6 - iy] & (1 << (6 - ix)));
|
||||
else return (valid_points_mask[6 - iy] & (1 << ix));
|
||||
}
|
||||
else {
|
||||
return (valid_points_mask[6 - iy] & (1 << (6 - ix)));
|
||||
}
|
||||
}
|
||||
|
||||
void mbl_single_point_interpolation(uint8_t x, uint8_t y, uint8_t meas_points) {
|
||||
//printf_P(PSTR("x = %d; y = %d \n"), x, y);
|
||||
uint8_t count = 0;
|
||||
float z = 0;
|
||||
if (mbl_point_measurement_valid(x, y + 1, meas_points, false)) { z += mbl.z_values[y + 1][x]; /*printf_P(PSTR("x; y+1: Z = %f \n"), mbl.z_values[y + 1][x]);*/ count++; }
|
||||
if (mbl_point_measurement_valid(x, y - 1, meas_points, false)) { z += mbl.z_values[y - 1][x]; /*printf_P(PSTR("x; y-1: Z = %f \n"), mbl.z_values[y - 1][x]);*/ count++; }
|
||||
if (mbl_point_measurement_valid(x + 1, y, meas_points, false)) { z += mbl.z_values[y][x + 1]; /*printf_P(PSTR("x+1; y: Z = %f \n"), mbl.z_values[y][x + 1]);*/ count++; }
|
||||
if (mbl_point_measurement_valid(x - 1, y, meas_points, false)) { z += mbl.z_values[y][x - 1]; /*printf_P(PSTR("x-1; y: Z = %f \n"), mbl.z_values[y][x - 1]);*/ count++; }
|
||||
if(count != 0) mbl.z_values[y][x] = z / count; //if we have at least one valid point in surrounding area use average value, otherwise use inaccurately measured Z-coordinate
|
||||
//printf_P(PSTR("result: Z = %f \n\n"), mbl.z_values[y][x]);
|
||||
}
|
||||
|
||||
void mbl_interpolation(uint8_t meas_points) {
|
||||
for (uint8_t x = 0; x < meas_points; x++) {
|
||||
for (uint8_t y = 0; y < meas_points; y++) {
|
||||
if (!mbl_point_measurement_valid(x, y, meas_points, false)) {
|
||||
mbl_single_point_interpolation(x, y, meas_points);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,10 +1,31 @@
|
|||
#ifndef MESH_BED_CALIBRATION_H
|
||||
#define MESH_BED_CALIBRATION_H
|
||||
|
||||
#define BED_ZERO_REF_X (- 22.f + X_PROBE_OFFSET_FROM_EXTRUDER) // -22 + 23 = 1
|
||||
#define BED_ZERO_REF_Y (- 0.6f + Y_PROBE_OFFSET_FROM_EXTRUDER + 4.f) // -0.6 + 5 + 4 = 8.4
|
||||
|
||||
#ifdef HEATBED_V2
|
||||
|
||||
#define BED_X0 (2.f - BED_ZERO_REF_X) //1
|
||||
#define BED_Y0 (9.4f - BED_ZERO_REF_Y) //1
|
||||
#define BED_Xn (206.f - BED_ZERO_REF_X) //205
|
||||
#define BED_Yn (213.4f - BED_ZERO_REF_Y) //205
|
||||
|
||||
#else
|
||||
|
||||
#define BED_X0 (13.f - BED_ZERO_REF_X)
|
||||
#define BED_Y0 (8.4f - BED_ZERO_REF_Y)
|
||||
#define BED_Xn (216.f - BED_ZERO_REF_X)
|
||||
#define BED_Yn (202.4f - BED_ZERO_REF_Y)
|
||||
|
||||
#endif //not HEATBED_V2
|
||||
|
||||
#define BED_X(i, n) ((float)i * (BED_Xn - BED_X0) / (n - 1) + BED_X0)
|
||||
#define BED_Y(i, n) ((float)i * (BED_Yn - BED_Y0) / (n - 1) + BED_Y0)
|
||||
|
||||
// Exact positions of the print head above the bed reference points, in the world coordinates.
|
||||
// The world coordinates match the machine coordinates only in case, when the machine
|
||||
// is built properly, the end stops are at the correct positions and the axes are perpendicular.
|
||||
extern const float bed_ref_points[] PROGMEM;
|
||||
extern const float bed_ref_points_4[] PROGMEM;
|
||||
|
||||
extern const float bed_skew_angle_mild;
|
||||
|
|
@ -179,5 +200,17 @@ extern void babystep_reset();
|
|||
|
||||
extern void count_xyz_details(float (&distanceMin)[2]);
|
||||
extern bool sample_z();
|
||||
/*
|
||||
typedef enum
|
||||
{
|
||||
e_MBL_FAST, e_MBL_OPTIMAL, e_MBL_PREC
|
||||
} e_MBL_TYPE;
|
||||
*/
|
||||
//extern e_MBL_TYPE e_mbl_type;
|
||||
//extern void mbl_mode_set();
|
||||
//extern void mbl_mode_init();
|
||||
extern void mbl_settings_init();
|
||||
|
||||
extern bool mbl_point_measurement_valid(uint8_t ix, uint8_t iy, uint8_t meas_points, bool zigzag);
|
||||
extern void mbl_interpolation(uint8_t meas_points);
|
||||
#endif /* MESH_BED_CALIBRATION_H */
|
||||
|
|
|
|||
|
|
@ -21,78 +21,6 @@ static inline bool vec_undef(const float v[2])
|
|||
return vx[0] == 0x0FFFFFFFF || vx[1] == 0x0FFFFFFFF;
|
||||
}
|
||||
|
||||
void mesh_bed_leveling::get_meas_xy(int ix, int iy, float &x, float &y, bool /*use_default*/)
|
||||
{
|
||||
#if 0
|
||||
float cntr[2] = {
|
||||
eeprom_read_float((float*)(EEPROM_BED_CALIBRATION_CENTER+0)),
|
||||
eeprom_read_float((float*)(EEPROM_BED_CALIBRATION_CENTER+4))
|
||||
};
|
||||
float vec_x[2] = {
|
||||
eeprom_read_float((float*)(EEPROM_BED_CALIBRATION_VEC_X +0)),
|
||||
eeprom_read_float((float*)(EEPROM_BED_CALIBRATION_VEC_X +4))
|
||||
};
|
||||
float vec_y[2] = {
|
||||
eeprom_read_float((float*)(EEPROM_BED_CALIBRATION_VEC_Y +0)),
|
||||
eeprom_read_float((float*)(EEPROM_BED_CALIBRATION_VEC_Y +4))
|
||||
};
|
||||
|
||||
if (use_default || vec_undef(cntr) || vec_undef(vec_x) || vec_undef(vec_y)) {
|
||||
// Default, uncorrected positions of the calibration points. Works well for correctly built printers.
|
||||
x = float(MESH_MIN_X) + float(MEAS_NUM_X_DIST) * float(ix) - X_PROBE_OFFSET_FROM_EXTRUDER;
|
||||
//FIXME
|
||||
//x -= 5.f;
|
||||
y = float(MESH_MIN_Y) + float(MEAS_NUM_Y_DIST) * float(iy) - Y_PROBE_OFFSET_FROM_EXTRUDER;
|
||||
} else {
|
||||
#if 0
|
||||
SERIAL_ECHO("Running bed leveling. Calibration data: ");
|
||||
SERIAL_ECHO(cntr[0]);
|
||||
SERIAL_ECHO(",");
|
||||
SERIAL_ECHO(cntr[1]);
|
||||
SERIAL_ECHO(", x: ");
|
||||
SERIAL_ECHO(vec_x[0]);
|
||||
SERIAL_ECHO(",");
|
||||
SERIAL_ECHO(vec_x[1]);
|
||||
SERIAL_ECHO(", y: ");
|
||||
SERIAL_ECHO(vec_y[0]);
|
||||
SERIAL_ECHO(",");
|
||||
SERIAL_ECHO(vec_y[1]);
|
||||
SERIAL_ECHOLN("");
|
||||
#endif
|
||||
|
||||
x = cntr[0];
|
||||
y = cntr[1];
|
||||
if (ix < 1) {
|
||||
x -= vec_x[0];
|
||||
y -= vec_x[1];
|
||||
} else if (ix > 1) {
|
||||
x += vec_x[0];
|
||||
y += vec_x[1];
|
||||
}
|
||||
if (iy < 1) {
|
||||
x -= vec_y[0];
|
||||
y -= vec_y[1];
|
||||
} else if (iy > 1) {
|
||||
x += vec_y[0];
|
||||
y += vec_y[1];
|
||||
}
|
||||
|
||||
#if 0
|
||||
SERIAL_ECHO("Calibration point position: ");
|
||||
SERIAL_ECHO(x);
|
||||
SERIAL_ECHO(",");
|
||||
SERIAL_ECHO(y);
|
||||
SERIAL_ECHOLN("");
|
||||
#endif
|
||||
}
|
||||
#else
|
||||
// Default, uncorrected positions of the calibration points.
|
||||
// This coordinate will be corrected by the planner.
|
||||
x = pgm_read_float(bed_ref_points + 2 * (iy * 3 + ix));
|
||||
y = pgm_read_float(bed_ref_points + 2 * (iy * 3 + ix) + 1);
|
||||
#endif
|
||||
}
|
||||
|
||||
#if MESH_NUM_X_POINTS>=5 && MESH_NUM_Y_POINTS>=5 && (MESH_NUM_X_POINTS&1)==1 && (MESH_NUM_Y_POINTS&1)==1
|
||||
// Works for an odd number of MESH_NUM_X_POINTS and MESH_NUM_Y_POINTS
|
||||
|
||||
|
|
|
|||
|
|
@ -8,117 +8,125 @@
|
|||
#include "Configuration_prusa.h"
|
||||
|
||||
//internationalized messages
|
||||
const char MSG_AUTO_HOME[] PROGMEM_I1 = ISTR("Auto home"); ////c=0 r=0
|
||||
const char MSG_AUTO_MODE_ON[] PROGMEM_I1 = ISTR("Mode [auto power]"); ////c=0 r=0
|
||||
const char MSG_BABYSTEP_Z[] PROGMEM_I1 = ISTR("Live adjust Z"); ////c=0 r=0
|
||||
const char MSG_AUTO_HOME[] PROGMEM_I1 = ISTR("Auto home"); ////
|
||||
const char MSG_AUTO_MODE_ON[] PROGMEM_I1 = ISTR("Mode [auto power]"); ////
|
||||
const char MSG_BABYSTEP_Z[] PROGMEM_I1 = ISTR("Live adjust Z"); //// c=18
|
||||
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_BED[] PROGMEM_I1 = ISTR("Bed"); ////c=0 r=0
|
||||
const char MSG_BED_DONE[] PROGMEM_I1 = ISTR("Bed done"); ////c=0 r=0
|
||||
const char MSG_BED_HEATING[] PROGMEM_I1 = ISTR("Bed Heating"); ////c=0 r=0
|
||||
const char MSG_BED[] PROGMEM_I1 = ISTR("Bed"); ////
|
||||
const char MSG_BED_DONE[] PROGMEM_I1 = ISTR("Bed done"); ////
|
||||
const char MSG_BED_HEATING[] PROGMEM_I1 = ISTR("Bed Heating"); ////
|
||||
const char MSG_BED_LEVELING_FAILED_POINT_LOW[] PROGMEM_I1 = ISTR("Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."); ////c=20 r=4
|
||||
const char MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED[] PROGMEM_I1 = ISTR("XYZ calibration failed. Please consult the manual."); ////c=20 r=8
|
||||
const char MSG_CALIBRATE_Z_AUTO[] PROGMEM_I1 = ISTR("Calibrating Z"); ////c=20 r=2
|
||||
const char MSG_CARD_MENU[] PROGMEM_I1 = ISTR("Print from SD"); ////c=0 r=0
|
||||
const char MSG_CARD_MENU[] PROGMEM_I1 = ISTR("Print from SD"); ////
|
||||
const char MSG_CONFIRM_NOZZLE_CLEAN[] PROGMEM_I1 = ISTR("Please clean the nozzle for calibration. Click when done."); ////c=20 r=8
|
||||
const char MSG_COOLDOWN[] PROGMEM_I1 = ISTR("Cooldown"); ////c=0 r=0
|
||||
const char MSG_COOLDOWN[] PROGMEM_I1 = ISTR("Cooldown"); ////
|
||||
const char MSG_CRASH_DETECTED[] PROGMEM_I1 = ISTR("Crash detected."); ////c=20 r=1
|
||||
const char MSG_CRASHDETECT_NA[] PROGMEM_I1 = ISTR("Crash det. [N/A]"); ////c=0 r=0
|
||||
const char MSG_CRASHDETECT_OFF[] PROGMEM_I1 = ISTR("Crash det. [off]"); ////c=0 r=0
|
||||
const char MSG_CRASHDETECT_ON[] PROGMEM_I1 = ISTR("Crash det. [on]"); ////c=0 r=0
|
||||
const char MSG_ERROR[] PROGMEM_I1 = ISTR("ERROR:"); ////c=0 r=0
|
||||
const char MSG_CRASHDETECT_NA[] PROGMEM_I1 = ISTR("Crash det. [N/A]"); ////
|
||||
const char MSG_CRASHDETECT_OFF[] PROGMEM_I1 = ISTR("Crash det. [off]"); ////
|
||||
const char MSG_CRASHDETECT_ON[] PROGMEM_I1 = ISTR("Crash det. [on]"); ////
|
||||
const char MSG_ERROR[] PROGMEM_I1 = ISTR("ERROR:"); ////
|
||||
const char MSG_EXTRUDER[] PROGMEM_I1 = ISTR("Extruder"); ////c=17 r=1
|
||||
const char MSG_FILAMENT[] PROGMEM_I1 = ISTR("Filament"); ////c=17 r=1
|
||||
const char MSG_FAN_SPEED[] PROGMEM_I1 = ISTR("Fan speed"); ////c=14 r=0
|
||||
const char MSG_FAN_SPEED[] PROGMEM_I1 = ISTR("Fan speed"); ////c=14
|
||||
const char MSG_FILAMENT_CLEAN[] PROGMEM_I1 = ISTR("Filament extruding & with correct color?"); ////c=20 r=2
|
||||
const char MSG_FILAMENT_LOADING_T0[] PROGMEM_I1 = ISTR("Insert filament into extruder 1. Click when done."); ////c=20 r=4
|
||||
const char MSG_FILAMENT_LOADING_T1[] PROGMEM_I1 = ISTR("Insert filament into extruder 2. Click when done."); ////c=20 r=4
|
||||
const char MSG_FILAMENT_LOADING_T2[] PROGMEM_I1 = ISTR("Insert filament into extruder 3. Click when done."); ////c=20 r=4
|
||||
const char MSG_FILAMENT_LOADING_T3[] PROGMEM_I1 = ISTR("Insert filament into extruder 4. Click when done."); ////c=20 r=4
|
||||
const char MSG_FILAMENTCHANGE[] PROGMEM_I1 = ISTR("Change filament"); ////c=0 r=0
|
||||
const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE1[] PROGMEM_I1 = ISTR("Searching bed calibration point"); ////c=60 r=0
|
||||
const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE2[] PROGMEM_I1 = ISTR(" of 4"); ////c=14 r=0
|
||||
const char MSG_FILAMENTCHANGE[] PROGMEM_I1 = ISTR("Change filament"); ////
|
||||
const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE1[] PROGMEM_I1 = ISTR("Searching bed calibration point"); ////c=60
|
||||
const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE2[] PROGMEM_I1 = ISTR(" of 4"); ////c=14
|
||||
const char MSG_FINISHING_MOVEMENTS[] PROGMEM_I1 = ISTR("Finishing movements"); ////c=20 r=1
|
||||
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_FSENS_AUTOLOAD_NA[] PROGMEM_I1 = ISTR("F. autoload [N/A]"); ////c=17 r=1
|
||||
const char MSG_FSENSOR_OFF[] PROGMEM_I1 = ISTR("Fil. sensor [off]"); ////c=0 r=0
|
||||
const char MSG_FSENSOR_ON[] PROGMEM_I1 = ISTR("Fil. sensor [on]"); ////c=0 r=0
|
||||
const char MSG_HEATING[] PROGMEM_I1 = ISTR("Heating"); ////c=0 r=0
|
||||
const char MSG_HEATING_COMPLETE[] PROGMEM_I1 = ISTR("Heating done."); ////c=20 r=0
|
||||
const char MSG_HOMEYZ[] PROGMEM_I1 = ISTR("Calibrate Z"); ////c=0 r=0
|
||||
const char MSG_FSENSOR_OFF[] PROGMEM_I1 = ISTR("Fil. sensor [off]"); ////
|
||||
const char MSG_FSENSOR_ON[] PROGMEM_I1 = ISTR("Fil. sensor [on]"); ////
|
||||
const char MSG_HEATING[] PROGMEM_I1 = ISTR("Heating"); ////
|
||||
const char MSG_HEATING_COMPLETE[] PROGMEM_I1 = ISTR("Heating done."); ////c=20
|
||||
const char MSG_HOMEYZ[] PROGMEM_I1 = ISTR("Calibrate Z"); ////
|
||||
const char MSG_CHOOSE_EXTRUDER[] PROGMEM_I1 = ISTR("Choose extruder:"); ////c=20 r=1
|
||||
const char MSG_CHOOSE_FILAMENT[] PROGMEM_I1 = ISTR("Choose filament:"); ////c=20 r=1
|
||||
const char MSG_LOAD_FILAMENT[] PROGMEM_I1 = ISTR("Load filament"); ////c=17 r=0
|
||||
const char MSG_LOADING_FILAMENT[] PROGMEM_I1 = ISTR("Loading filament"); ////c=20 r=0
|
||||
const char MSG_LOAD_FILAMENT[] PROGMEM_I1 = ISTR("Load filament"); //// Number 1 to 5 is added behind text e.g. "Load filament 1" c=16
|
||||
const char MSG_LOADING_FILAMENT[] PROGMEM_I1 = ISTR("Loading filament"); ////c=20
|
||||
const char MSG_EJECT_FILAMENT[] PROGMEM_I1 = ISTR("Eject filament"); //// Number 1 to 5 is added behind text e.g. "Eject filament 1" c=16
|
||||
const char MSG_CUT_FILAMENT[] PROGMEM_I1 = ISTR("Cut filament"); //// Number 1 to 5 is added behind text e.g. "Cut filament 1" c=16
|
||||
const char MSG_M117_V2_CALIBRATION[] PROGMEM_I1 = ISTR("M117 First layer cal."); ////c=25 r=1
|
||||
const char MSG_MAIN[] PROGMEM_I1 = ISTR("Main"); ////c=0 r=0
|
||||
const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1[] PROGMEM_I1 = ISTR("Measuring reference height of calibration point"); ////c=60 r=0
|
||||
const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2[] PROGMEM_I1 = ISTR(" of 9"); ////c=14 r=0
|
||||
const char MSG_MENU_CALIBRATION[] PROGMEM_I1 = ISTR("Calibration"); ////c=0 r=0
|
||||
const char MSG_NO[] PROGMEM_I1 = ISTR("No"); ////c=0 r=0
|
||||
const char MSG_NOZZLE[] PROGMEM_I1 = ISTR("Nozzle"); ////c=0 r=0
|
||||
const char MSG_MAIN[] PROGMEM_I1 = ISTR("Main"); ////
|
||||
const char MSG_BACK[] PROGMEM_I1 = ISTR("Back"); ////
|
||||
const char MSG_SHEET[] PROGMEM_I1 = ISTR("Sheet"); ////c=10
|
||||
const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1[] PROGMEM_I1 = ISTR("Measuring reference height of calibration point"); ////c=60
|
||||
const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2[] PROGMEM_I1 = ISTR(" of 9"); ////c=14
|
||||
const char MSG_MENU_CALIBRATION[] PROGMEM_I1 = ISTR("Calibration"); ////
|
||||
const char MSG_NO[] PROGMEM_I1 = ISTR("No"); ////
|
||||
const char MSG_NOZZLE[] PROGMEM_I1 = ISTR("Nozzle"); ////
|
||||
const char MSG_PAPER[] PROGMEM_I1 = ISTR("Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."); ////c=20 r=8
|
||||
const char MSG_PLACE_STEEL_SHEET[] PROGMEM_I1 = ISTR("Please place steel sheet on heatbed."); ////c=20 r=4
|
||||
const char MSG_PLEASE_WAIT[] PROGMEM_I1 = ISTR("Please wait"); ////c=20 r=0
|
||||
const char MSG_PREHEAT_NOZZLE[] PROGMEM_I1 = ISTR("Preheat the nozzle!"); ////c=20 r=0
|
||||
const char MSG_PLEASE_WAIT[] PROGMEM_I1 = ISTR("Please wait"); ////c=20
|
||||
const char MSG_PREHEAT_NOZZLE[] PROGMEM_I1 = ISTR("Preheat the nozzle!"); ////c=20
|
||||
const char MSG_PRESS_TO_UNLOAD[] PROGMEM_I1 = ISTR("Please press the knob to unload filament"); ////c=20 r=4
|
||||
const char MSG_PRINT_ABORTED[] PROGMEM_I1 = ISTR("Print aborted"); ////c=20 r=0
|
||||
const char MSG_PRINT_ABORTED[] PROGMEM_I1 = ISTR("Print aborted"); ////c=20
|
||||
const char MSG_PULL_OUT_FILAMENT[] PROGMEM_I1 = ISTR("Please pull out filament immediately"); ////c=20 r=4
|
||||
const char MSG_RECOVER_PRINT[] PROGMEM_I1 = ISTR("Blackout occurred. Recover print?"); ////c=20 r=2
|
||||
const char MSG_REFRESH[] PROGMEM_I1 = ISTR("\xF8" "Refresh"); ////c=0 r=0
|
||||
const char MSG_RESUMING_PRINT[] PROGMEM_I1 = ISTR("Resuming print"); ////c=0 r=0
|
||||
const char MSG_REFRESH[] PROGMEM_I1 = ISTR("\xF8" "Refresh"); ////
|
||||
const char MSG_RESUMING_PRINT[] PROGMEM_I1 = ISTR("Resuming print"); ////
|
||||
const char MSG_REMOVE_STEEL_SHEET[] PROGMEM_I1 = ISTR("Please remove steel sheet from heatbed."); ////c=20 r=4
|
||||
const char MSG_SELFTEST_COOLING_FAN[] PROGMEM_I1 = ISTR("Front print fan?"); ////c=20 r=0
|
||||
const char MSG_SELFTEST_EXTRUDER_FAN[] PROGMEM_I1 = ISTR("Left hotend fan?"); ////c=20 r=0
|
||||
const char MSG_SELFTEST_FAILED[] PROGMEM_I1 = ISTR("Selftest failed "); ////c=20 r=0
|
||||
const char MSG_SELFTEST_FAN[] PROGMEM_I1 = ISTR("Fan test"); ////c=20 r=0
|
||||
const char MSG_SELFTEST_FAN_NO[] PROGMEM_I1 = ISTR("Not spinning"); ////c=19 r=0
|
||||
const char MSG_SELFTEST_FAN_YES[] PROGMEM_I1 = ISTR("Spinning"); ////c=19 r=0
|
||||
const char MSG_SELFTEST_CHECK_BED[] PROGMEM_I1 = ISTR("Checking bed "); ////c=20 r=0
|
||||
const char MSG_SELFTEST_CHECK_FSENSOR[] PROGMEM_I1 = ISTR("Checking sensors "); ////c=20 r=0
|
||||
const char MSG_SELFTEST_MOTOR[] PROGMEM_I1 = ISTR("Motor"); ////c=0 r=0
|
||||
const char MSG_SELFTEST_WIRINGERROR[] PROGMEM_I1 = ISTR("Wiring error"); ////c=0 r=0
|
||||
const char MSG_SETTINGS[] PROGMEM_I1 = ISTR("Settings"); ////c=0 r=0
|
||||
const char MSG_SILENT_MODE_OFF[] PROGMEM_I1 = ISTR("Mode [high power]"); ////c=0 r=0
|
||||
const char MSG_SILENT_MODE_ON[] PROGMEM_I1 = ISTR("Mode [silent]"); ////c=0 r=0
|
||||
const char MSG_STEALTH_MODE_OFF[] PROGMEM_I1 = ISTR("Mode [Normal]"); ////c=0 r=0
|
||||
const char MSG_STEALTH_MODE_ON[] PROGMEM_I1 = ISTR("Mode [Stealth]"); ////c=0 r=0
|
||||
const char MSG_SELFTEST_COOLING_FAN[] PROGMEM_I1 = ISTR("Front print fan?"); ////c=20
|
||||
const char MSG_SELFTEST_EXTRUDER_FAN[] PROGMEM_I1 = ISTR("Left hotend fan?"); ////c=20
|
||||
const char MSG_SELFTEST_FAILED[] PROGMEM_I1 = ISTR("Selftest failed "); ////c=20
|
||||
const char MSG_SELFTEST_FAN[] PROGMEM_I1 = ISTR("Fan test"); ////c=20
|
||||
const char MSG_SELFTEST_FAN_NO[] PROGMEM_I1 = ISTR("Not spinning"); ////c=19
|
||||
const char MSG_SELFTEST_FAN_YES[] PROGMEM_I1 = ISTR("Spinning"); ////c=19
|
||||
const char MSG_SELFTEST_CHECK_BED[] PROGMEM_I1 = ISTR("Checking bed "); ////c=20
|
||||
const char MSG_SELFTEST_CHECK_FSENSOR[] PROGMEM_I1 = ISTR("Checking sensors "); ////c=20
|
||||
const char MSG_SELFTEST_MOTOR[] PROGMEM_I1 = ISTR("Motor"); ////
|
||||
const char MSG_SELFTEST_FILAMENT_SENSOR[] PROGMEM_I1 = ISTR("Filament sensor"); ////c=17
|
||||
const char MSG_SELFTEST_WIRINGERROR[] PROGMEM_I1 = ISTR("Wiring error"); ////
|
||||
const char MSG_SETTINGS[] PROGMEM_I1 = ISTR("Settings"); ////
|
||||
const char MSG_HW_SETUP[] PROGMEM_I1 = ISTR("HW Setup"); ////
|
||||
const char MSG_SILENT_MODE_OFF[] PROGMEM_I1 = ISTR("Mode [high power]"); ////
|
||||
const char MSG_SILENT_MODE_ON[] PROGMEM_I1 = ISTR("Mode [silent]"); ////
|
||||
const char MSG_STEALTH_MODE_OFF[] PROGMEM_I1 = ISTR("Mode [Normal]"); ////
|
||||
const char MSG_STEALTH_MODE_ON[] PROGMEM_I1 = ISTR("Mode [Stealth]"); ////
|
||||
const char MSG_STEEL_SHEET_CHECK[] PROGMEM_I1 = ISTR("Is steel sheet on heatbed?"); ////c=20 r=2
|
||||
const char MSG_STOP_PRINT[] PROGMEM_I1 = ISTR("Stop print"); ////c=0 r=0
|
||||
const char MSG_STOPPED[] PROGMEM_I1 = ISTR("STOPPED. "); ////c=0 r=0
|
||||
const char MSG_STOP_PRINT[] PROGMEM_I1 = ISTR("Stop print"); ////
|
||||
const char MSG_STOPPED[] PROGMEM_I1 = ISTR("STOPPED. "); ////
|
||||
const char MSG_TEMP_CALIBRATION[] PROGMEM_I1 = ISTR("Temp. cal. "); ////c=20 r=1
|
||||
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_UNLOAD_FILAMENT[] PROGMEM_I1 = ISTR("Unload filament"); ////c=17 r=0
|
||||
const char MSG_UNLOAD_FILAMENT[] PROGMEM_I1 = ISTR("Unload filament"); ////c=17
|
||||
const char MSG_UNLOADING_FILAMENT[] PROGMEM_I1 = ISTR("Unloading filament"); ////c=20 r=1
|
||||
const char MSG_WATCH[] PROGMEM_I1 = ISTR("Info screen"); ////c=0 r=0
|
||||
const char MSG_WATCH[] PROGMEM_I1 = ISTR("Info screen"); ////
|
||||
const char MSG_WIZARD_CALIBRATION_FAILED[] PROGMEM_I1 = ISTR("Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."); ////c=20 r=8
|
||||
const char MSG_WIZARD_DONE[] PROGMEM_I1 = ISTR("All is done. Happy printing!"); ////c=20 r=8
|
||||
const char MSG_WIZARD_HEATING[] PROGMEM_I1 = ISTR("Preheating nozzle. Please wait."); ////c=20 r=3
|
||||
const char MSG_WIZARD_QUIT[] PROGMEM_I1 = ISTR("You can always resume the Wizard from Calibration -> Wizard."); ////c=20 r=8
|
||||
const char MSG_YES[] PROGMEM_I1 = ISTR("Yes"); ////c=0 r=0
|
||||
const char WELCOME_MSG[] PROGMEM_I1 = ISTR(CUSTOM_MENDEL_NAME " OK."); ////c=20 r=0
|
||||
const char MSG_YES[] PROGMEM_I1 = ISTR("Yes"); ////
|
||||
const char MSG_V2_CALIBRATION[] PROGMEM_I1 = ISTR("First layer cal."); ////c=17 r=1
|
||||
const char WELCOME_MSG[] PROGMEM_I1 = ISTR(CUSTOM_MENDEL_NAME " OK."); ////c=20
|
||||
//not internationalized messages
|
||||
const char MSG_SD_WORKDIR_FAIL[] PROGMEM_N1 = "workDir open failed"; ////c=0 r=0
|
||||
const char MSG_BROWNOUT_RESET[] PROGMEM_N1 = " Brown out Reset"; ////c=0 r=0
|
||||
const char MSG_EXTERNAL_RESET[] PROGMEM_N1 = " External Reset"; ////c=0 r=0
|
||||
const char MSG_FILE_SAVED[] PROGMEM_N1 = "Done saving file."; ////c=0 r=0
|
||||
const char MSG_OFF[] PROGMEM_N1 = "Off"; ////c=0 r=0
|
||||
const char MSG_ON[] PROGMEM_N1 = "On "; ////c=0 r=0
|
||||
const char MSG_POSITION_UNKNOWN[] PROGMEM_N1 = "Home X/Y before Z"; ////c=0 r=0
|
||||
const char MSG_SOFTWARE_RESET[] PROGMEM_N1 = " Software Reset"; ////c=0 r=0
|
||||
const char MSG_UNKNOWN_COMMAND[] PROGMEM_N1 = "Unknown command: \""; ////c=0 r=0
|
||||
const char MSG_WATCHDOG_RESET[] PROGMEM_N1 = " Watchdog Reset"; ////c=0 r=0
|
||||
const char MSG_Z_MAX[] PROGMEM_N1 = "z_max: "; ////c=0 r=0
|
||||
const char MSG_Z_MIN[] PROGMEM_N1 = "z_min: "; ////c=0 r=0
|
||||
const char MSG_ZPROBE_OUT[] PROGMEM_N1 = "Z probe out. bed"; ////c=0 r=0
|
||||
const char MSG_ZPROBE_ZOFFSET[] PROGMEM_N1 = "Z Offset"; ////c=0 r=0
|
||||
const char MSG_TMC_OVERTEMP[] PROGMEM_N1 = "TMC DRIVER OVERTEMP"; ////c=0 r=0
|
||||
const char MSG_Enqueing[] PROGMEM_N1 = "enqueing \""; ////c=0 r=0
|
||||
const char MSG_ENDSTOPS_HIT[] PROGMEM_N1 = "endstops hit: "; ////c=0 r=0
|
||||
const char MSG_SD_ERR_WRITE_TO_FILE[] PROGMEM_N1 = "error writing to file"; ////c=0 r=0
|
||||
const char MSG_OK[] PROGMEM_N1 = "ok"; ////c=0 r=0
|
||||
const char MSG_SD_OPEN_FILE_FAIL[] PROGMEM_N1 = "open failed, File: "; ////c=0 r=0
|
||||
const char MSG_ENDSTOP_OPEN[] PROGMEM_N1 = "open"; ////c=0 r=0
|
||||
const char MSG_POWERUP[] PROGMEM_N1 = "PowerUp"; ////c=0 r=0
|
||||
const char MSG_ERR_STOPPED[] PROGMEM_N1 = "Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)"; ////c=0 r=0
|
||||
const char MSG_ENDSTOP_HIT[] PROGMEM_N1 = "TRIGGERED"; ////c=0 r=0
|
||||
const char MSG_SD_WORKDIR_FAIL[] PROGMEM_N1 = "workDir open failed"; ////
|
||||
const char MSG_BROWNOUT_RESET[] PROGMEM_N1 = " Brown out Reset"; ////
|
||||
const char MSG_EXTERNAL_RESET[] PROGMEM_N1 = " External Reset"; ////
|
||||
const char MSG_FILE_SAVED[] PROGMEM_N1 = "Done saving file."; ////
|
||||
const char MSG_OFF[] PROGMEM_N1 = "Off"; ////
|
||||
const char MSG_ON[] PROGMEM_N1 = "On "; ////
|
||||
const char MSG_POSITION_UNKNOWN[] PROGMEM_N1 = "Home X/Y before Z"; ////
|
||||
const char MSG_SOFTWARE_RESET[] PROGMEM_N1 = " Software Reset"; ////
|
||||
const char MSG_UNKNOWN_COMMAND[] PROGMEM_N1 = "Unknown command: \""; ////
|
||||
const char MSG_WATCHDOG_RESET[] PROGMEM_N1 = " Watchdog Reset"; ////
|
||||
const char MSG_Z_MAX[] PROGMEM_N1 = "z_max: "; ////
|
||||
const char MSG_Z_MIN[] PROGMEM_N1 = "z_min: "; ////
|
||||
const char MSG_ZPROBE_OUT[] PROGMEM_N1 = "Z probe out. bed"; ////
|
||||
const char MSG_ZPROBE_ZOFFSET[] PROGMEM_N1 = "Z Offset"; ////
|
||||
const char MSG_TMC_OVERTEMP[] PROGMEM_N1 = "TMC DRIVER OVERTEMP"; ////
|
||||
const char MSG_Enqueing[] PROGMEM_N1 = "enqueing \""; ////
|
||||
const char MSG_ENDSTOPS_HIT[] PROGMEM_N1 = "endstops hit: "; ////
|
||||
const char MSG_SD_ERR_WRITE_TO_FILE[] PROGMEM_N1 = "error writing to file"; ////
|
||||
const char MSG_OK[] PROGMEM_N1 = "ok"; ////
|
||||
const char MSG_SD_OPEN_FILE_FAIL[] PROGMEM_N1 = "open failed, File: "; ////
|
||||
const char MSG_ENDSTOP_OPEN[] PROGMEM_N1 = "open"; ////
|
||||
const char MSG_POWERUP[] PROGMEM_N1 = "PowerUp"; ////
|
||||
const char MSG_ERR_STOPPED[] PROGMEM_N1 = "Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)"; ////
|
||||
const char MSG_ENDSTOP_HIT[] PROGMEM_N1 = "TRIGGERED"; ////
|
||||
const char MSG_OCTOPRINT_PAUSE[] PROGMEM_N1 = "// action:pause"; ////
|
||||
|
|
|
|||
|
|
@ -53,6 +53,8 @@ extern const char MSG_LOAD_FILAMENT[];
|
|||
extern const char MSG_LOADING_FILAMENT[];
|
||||
extern const char MSG_M117_V2_CALIBRATION[];
|
||||
extern const char MSG_MAIN[];
|
||||
extern const char MSG_BACK[];
|
||||
extern const char MSG_SHEET[];
|
||||
extern const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1[];
|
||||
extern const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2[];
|
||||
extern const char MSG_MENU_CALIBRATION[];
|
||||
|
|
@ -79,8 +81,10 @@ extern const char MSG_SELFTEST_FAN_YES[];
|
|||
extern const char MSG_SELFTEST_CHECK_BED[];
|
||||
extern const char MSG_SELFTEST_CHECK_FSENSOR[];
|
||||
extern const char MSG_SELFTEST_MOTOR[];
|
||||
extern const char MSG_SELFTEST_FILAMENT_SENSOR[];
|
||||
extern const char MSG_SELFTEST_WIRINGERROR[];
|
||||
extern const char MSG_SETTINGS[];
|
||||
extern const char MSG_HW_SETUP[];
|
||||
extern const char MSG_SILENT_MODE_OFF[];
|
||||
extern const char MSG_SILENT_MODE_ON[];
|
||||
extern const char MSG_STEALTH_MODE_OFF[];
|
||||
|
|
@ -98,6 +102,7 @@ extern const char MSG_WIZARD_DONE[];
|
|||
extern const char MSG_WIZARD_HEATING[];
|
||||
extern const char MSG_WIZARD_QUIT[];
|
||||
extern const char MSG_YES[];
|
||||
extern const char MSG_V2_CALIBRATION[];
|
||||
extern const char WELCOME_MSG[];
|
||||
//not internationalized messages
|
||||
extern const char MSG_BROWNOUT_RESET[];
|
||||
|
|
@ -123,6 +128,9 @@ extern const char MSG_ENDSTOP_OPEN[];
|
|||
extern const char MSG_POWERUP[];
|
||||
extern const char MSG_ERR_STOPPED[];
|
||||
extern const char MSG_ENDSTOP_HIT[];
|
||||
extern const char MSG_EJECT_FILAMENT[];
|
||||
extern const char MSG_CUT_FILAMENT[];
|
||||
extern const char MSG_OCTOPRINT_PAUSE[];
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,6 +15,8 @@
|
|||
#include <avr/pgmspace.h>
|
||||
#include "io_atmega2560.h"
|
||||
#include "AutoDeplete.h"
|
||||
//-//
|
||||
#include "util.h"
|
||||
|
||||
#ifdef TMC2130
|
||||
#include "tmc2130.h"
|
||||
|
|
@ -22,7 +24,7 @@
|
|||
|
||||
#define MMU_TODELAY 100
|
||||
#define MMU_TIMEOUT 10
|
||||
#define MMU_CMD_TIMEOUT 45000ul //5min timeout for mmu commands (except P0)
|
||||
#define MMU_CMD_TIMEOUT 45000ul //45s timeout for mmu commands (except P0)
|
||||
#define MMU_P0_TIMEOUT 3000ul //timeout for P0 command: 3seconds
|
||||
#define MMU_MAX_RESEND_ATTEMPTS 2
|
||||
|
||||
|
|
@ -45,6 +47,7 @@ namespace
|
|||
WaitCmd, //!< wait for command response
|
||||
Pause,
|
||||
GetDrvError, //!< get power failures count
|
||||
SwitchMode //switch mmu between stealth and normal mode
|
||||
};
|
||||
}
|
||||
|
||||
|
|
@ -57,9 +60,9 @@ static S mmu_state = S::Disabled;
|
|||
MmuCmd mmu_cmd = MmuCmd::None;
|
||||
|
||||
//idler ir sensor
|
||||
uint8_t mmu_idl_sens = 0;
|
||||
static uint8_t mmu_idl_sens = 0;
|
||||
bool ir_sensor_detected = false;
|
||||
bool mmu_loading_flag = false;
|
||||
static bool mmu_loading_flag = false; //when set to true, we assume that mmu2 unload was finished and loading phase is now performed; printer can send 'A' to mmu2 to abort loading process
|
||||
|
||||
uint8_t mmu_extruder = MMU_FILAMENT_UNKNOWN;
|
||||
|
||||
|
|
@ -80,9 +83,11 @@ uint16_t mmu_power_failures = 0;
|
|||
|
||||
|
||||
#ifdef MMU_DEBUG
|
||||
static const auto DEBUG_PUTCHAR = putchar;
|
||||
static const auto DEBUG_PUTS_P = puts_P;
|
||||
static const auto DEBUG_PRINTF_P = printf_P;
|
||||
#else //MMU_DEBUG
|
||||
#define DEBUG_PUTCHAR(c)
|
||||
#define DEBUG_PUTS_P(str)
|
||||
#define DEBUG_PRINTF_P( __fmt, ... )
|
||||
#endif //MMU_DEBUG
|
||||
|
|
@ -181,6 +186,15 @@ bool check_for_ir_sensor()
|
|||
#endif //IR_SENSOR
|
||||
}
|
||||
|
||||
static bool activate_stealth_mode()
|
||||
{
|
||||
#ifdef MMU_FORCE_STEALTH_MODE
|
||||
return true;
|
||||
#else
|
||||
return (eeprom_read_byte((uint8_t*)EEPROM_MMU_STEALTH) == 1);
|
||||
#endif
|
||||
}
|
||||
|
||||
//mmu main loop - state machine processing
|
||||
void mmu_loop(void)
|
||||
{
|
||||
|
|
@ -222,8 +236,8 @@ void mmu_loop(void)
|
|||
bool version_valid = mmu_check_version();
|
||||
if (!version_valid) mmu_show_warning();
|
||||
else puts_P(PSTR("MMU version valid"));
|
||||
|
||||
if ((PRINTER_TYPE == PRINTER_MK3) || (PRINTER_TYPE == PRINTER_MK3_SNMM))
|
||||
|
||||
if (!activate_stealth_mode())
|
||||
{
|
||||
FDEBUG_PUTS_P(PSTR("MMU <= 'P0'"));
|
||||
mmu_puts_P(PSTR("P0\n")); //send 'read finda' request
|
||||
|
|
@ -253,6 +267,9 @@ void mmu_loop(void)
|
|||
FDEBUG_PRINTF_P(PSTR("MMU => '%dok'\n"), mmu_finda);
|
||||
puts_P(PSTR("MMU - ENABLED"));
|
||||
mmu_enabled = true;
|
||||
//-//
|
||||
// ... PrinterType/Name
|
||||
fSetMmuMode(true);
|
||||
mmu_state = S::Idle;
|
||||
}
|
||||
return;
|
||||
|
|
@ -297,6 +314,14 @@ void mmu_loop(void)
|
|||
mmu_fil_loaded = false;
|
||||
mmu_state = S::WaitCmd;
|
||||
}
|
||||
else if ((mmu_cmd >= MmuCmd::K0) && (mmu_cmd <= MmuCmd::K4))
|
||||
{
|
||||
const uint8_t filament = mmu_cmd - MmuCmd::K0;
|
||||
DEBUG_PRINTF_P(PSTR("MMU <= 'K%d'\n"), filament);
|
||||
mmu_printf_P(PSTR("K%d\n"), filament); //send eject filament
|
||||
mmu_fil_loaded = false;
|
||||
mmu_state = S::WaitCmd;
|
||||
}
|
||||
else if (mmu_cmd == MmuCmd::R0)
|
||||
{
|
||||
DEBUG_PRINTF_P(PSTR("MMU <= 'R0'\n"));
|
||||
|
|
@ -318,6 +343,11 @@ void mmu_loop(void)
|
|||
mmu_last_cmd = mmu_cmd;
|
||||
mmu_cmd = MmuCmd::None;
|
||||
}
|
||||
else if ((eeprom_read_byte((uint8_t*)EEPROM_MMU_STEALTH) != SilentModeMenu_MMU) && mmu_ready) {
|
||||
DEBUG_PRINTF_P(PSTR("MMU <= 'M%d'\n"), SilentModeMenu_MMU);
|
||||
mmu_printf_P(PSTR("M%d\n"), SilentModeMenu_MMU);
|
||||
mmu_state = S::SwitchMode;
|
||||
}
|
||||
else if ((mmu_last_response + 300) < _millis()) //request every 300ms
|
||||
{
|
||||
#ifndef IR_SENSOR
|
||||
|
|
@ -329,6 +359,20 @@ void mmu_loop(void)
|
|||
}
|
||||
return;
|
||||
case S::GetFinda: //response to command P0
|
||||
if (mmu_idl_sens)
|
||||
{
|
||||
if (PIN_GET(IR_SENSOR_PIN) == 0 && mmu_loading_flag)
|
||||
{
|
||||
#ifdef MMU_DEBUG
|
||||
printf_P(PSTR("MMU <= 'A'\n"));
|
||||
#endif //MMU_DEBUG
|
||||
mmu_puts_P(PSTR("A\n")); //send 'abort' request
|
||||
mmu_idl_sens = 0;
|
||||
//printf_P(PSTR("MMU IDLER_SENSOR = 0 - ABORT\n"));
|
||||
}
|
||||
//else
|
||||
//printf_P(PSTR("MMU IDLER_SENSOR = 1 - WAIT\n"));
|
||||
}
|
||||
if (mmu_rx_ok() > 0)
|
||||
{
|
||||
fscanf_P(uart2io, PSTR("%hhu"), &mmu_finda); //scan finda from buffer
|
||||
|
|
@ -336,7 +380,7 @@ void mmu_loop(void)
|
|||
//printf_P(PSTR("Eact: %d\n"), int(e_active()));
|
||||
if (!mmu_finda && CHECK_FSENSOR && fsensor_enabled) {
|
||||
fsensor_stop_and_save_print();
|
||||
enquecommand_front_P(PSTR("FSENSOR_RECOVER")); //then recover
|
||||
enquecommand_front_P(PSTR("PRUSA fsensor_recover")); //then recover
|
||||
ad_markDepleted(mmu_extruder);
|
||||
if (lcd_autoDepleteEnabled() && !ad_allDepleted())
|
||||
{
|
||||
|
|
@ -421,9 +465,22 @@ void mmu_loop(void)
|
|||
mmu_state = S::Idle;
|
||||
}
|
||||
else if ((mmu_last_request + MMU_CMD_TIMEOUT) < _millis())
|
||||
{ //resend request after timeout (5 min)
|
||||
{ //timeout 45 s
|
||||
mmu_state = S::Idle;
|
||||
}
|
||||
return;
|
||||
case S::SwitchMode:
|
||||
if (mmu_rx_ok() > 0)
|
||||
{
|
||||
DEBUG_PRINTF_P(PSTR("MMU => 'ok'\n"));
|
||||
eeprom_update_byte((uint8_t*)EEPROM_MMU_STEALTH, SilentModeMenu_MMU);
|
||||
mmu_state = S::Idle;
|
||||
}
|
||||
else if ((mmu_last_request + MMU_CMD_TIMEOUT) < _millis())
|
||||
{ //timeout 45 s
|
||||
mmu_state = S::Idle;
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -505,11 +562,21 @@ bool can_extrude()
|
|||
return true;
|
||||
}
|
||||
|
||||
static void get_response_print_info(uint8_t move) {
|
||||
printf_P(PSTR("mmu_get_response - begin move: "), move);
|
||||
switch (move) {
|
||||
case MMU_LOAD_MOVE: printf_P(PSTR("load\n")); break;
|
||||
case MMU_UNLOAD_MOVE: printf_P(PSTR("unload\n")); break;
|
||||
case MMU_TCODE_MOVE: printf_P(PSTR("T-code\n")); break;
|
||||
case MMU_NO_MOVE: printf_P(PSTR("no move\n")); break;
|
||||
default: printf_P(PSTR("error: unknown move\n")); break;
|
||||
}
|
||||
}
|
||||
|
||||
bool mmu_get_response(uint8_t move)
|
||||
{
|
||||
mmu_loading_flag = false;
|
||||
|
||||
printf_P(PSTR("mmu_get_response - begin move:%d\n"), move);
|
||||
get_response_print_info(move);
|
||||
KEEPALIVE_STATE(IN_PROCESS);
|
||||
while (mmu_cmd != MmuCmd::None)
|
||||
{
|
||||
|
|
@ -563,7 +630,7 @@ bool mmu_get_response(uint8_t move)
|
|||
disable_e0(); //turn off E-stepper to prevent overheating and alow filament pull-out if necessary
|
||||
delay_keep_alive(MMU_LOAD_TIME_MS);
|
||||
move = MMU_LOAD_MOVE;
|
||||
printf_P(PSTR("mmu_get_response - begin move:%d\n"), move);
|
||||
get_response_print_info(move);
|
||||
}
|
||||
break;
|
||||
case MMU_NO_MOVE:
|
||||
|
|
@ -602,7 +669,7 @@ void manage_response(bool move_axes, bool turn_off_nozzle, uint8_t move)
|
|||
float x_position_bckp = current_position[X_AXIS];
|
||||
float y_position_bckp = current_position[Y_AXIS];
|
||||
uint8_t screen = 0; //used for showing multiscreen messages
|
||||
|
||||
mmu_loading_flag = false;
|
||||
while(!response)
|
||||
{
|
||||
response = mmu_get_response(move); //wait for "ok" from mmu
|
||||
|
|
@ -621,6 +688,7 @@ void manage_response(bool move_axes, bool turn_off_nozzle, uint8_t move)
|
|||
st_synchronize();
|
||||
mmu_print_saved = true;
|
||||
printf_P(PSTR("MMU not responding\n"));
|
||||
KEEPALIVE_STATE(PAUSED_FOR_USER);
|
||||
hotend_temp_bckp = degTargetHotend(active_extruder);
|
||||
if (move_axes) {
|
||||
z_position_bckp = current_position[Z_AXIS];
|
||||
|
|
@ -677,6 +745,8 @@ void manage_response(bool move_axes, bool turn_off_nozzle, uint8_t move)
|
|||
}
|
||||
else if (mmu_print_saved) {
|
||||
printf_P(PSTR("MMU starts responding\n"));
|
||||
KEEPALIVE_STATE(IN_HANDLER);
|
||||
mmu_loading_flag = false;
|
||||
if (turn_off_nozzle)
|
||||
{
|
||||
lcd_clear();
|
||||
|
|
@ -770,7 +840,7 @@ void mmu_M600_wait_and_beep() {
|
|||
}
|
||||
SET_OUTPUT(BEEPER);
|
||||
if (counterBeep == 0) {
|
||||
if((eSoundMode==e_SOUND_MODE_LOUD)||((eSoundMode==e_SOUND_MODE_ONCE)&&bFirst))
|
||||
if((eSoundMode==e_SOUND_MODE_BLIND)|| (eSoundMode==e_SOUND_MODE_LOUD)||((eSoundMode==e_SOUND_MODE_ONCE)&&bFirst))
|
||||
{
|
||||
bFirst=false;
|
||||
WRITE(BEEPER, HIGH);
|
||||
|
|
@ -788,37 +858,43 @@ void mmu_M600_wait_and_beep() {
|
|||
WRITE(BEEPER, LOW);
|
||||
}
|
||||
|
||||
void mmu_M600_load_filament(bool automatic)
|
||||
//! @brief load filament for mmu v2
|
||||
//! @par nozzle_temp nozzle temperature to load filament
|
||||
void mmu_M600_load_filament(bool automatic, float nozzle_temp)
|
||||
{
|
||||
//load filament for mmu v2
|
||||
tmp_extruder = mmu_extruder;
|
||||
if (!automatic) {
|
||||
#ifdef MMU_M600_SWITCH_EXTRUDER
|
||||
bool yes = lcd_show_fullscreen_message_yes_no_and_wait_P(_i("Do you want to switch extruder?"), false);
|
||||
if(yes) tmp_extruder = choose_extruder_menu();
|
||||
#endif //MMU_M600_SWITCH_EXTRUDER
|
||||
}
|
||||
else {
|
||||
tmp_extruder = ad_getAlternative(tmp_extruder);
|
||||
}
|
||||
lcd_update_enable(false);
|
||||
lcd_clear();
|
||||
lcd_set_cursor(0, 1); lcd_puts_P(_T(MSG_LOADING_FILAMENT));
|
||||
lcd_print(" ");
|
||||
lcd_print(tmp_extruder + 1);
|
||||
snmm_filaments_used |= (1 << tmp_extruder); //for stop print
|
||||
tmp_extruder = mmu_extruder;
|
||||
if (!automatic)
|
||||
{
|
||||
#ifdef MMU_M600_SWITCH_EXTRUDER
|
||||
bool yes = lcd_show_fullscreen_message_yes_no_and_wait_P(_i("Do you want to switch extruder?"), false);
|
||||
if(yes) tmp_extruder = choose_extruder_menu();
|
||||
#endif //MMU_M600_SWITCH_EXTRUDER
|
||||
}
|
||||
else
|
||||
{
|
||||
tmp_extruder = ad_getAlternative(tmp_extruder);
|
||||
}
|
||||
lcd_update_enable(false);
|
||||
lcd_clear();
|
||||
lcd_set_cursor(0, 1); lcd_puts_P(_T(MSG_LOADING_FILAMENT));
|
||||
lcd_print(" ");
|
||||
lcd_print(tmp_extruder + 1);
|
||||
snmm_filaments_used |= (1 << tmp_extruder); //for stop print
|
||||
|
||||
// printf_P(PSTR("T code: %d \n"), tmp_extruder);
|
||||
// mmu_printf_P(PSTR("T%d\n"), tmp_extruder);
|
||||
mmu_command(MmuCmd::T0 + tmp_extruder);
|
||||
//printf_P(PSTR("T code: %d \n"), tmp_extruder);
|
||||
//mmu_printf_P(PSTR("T%d\n"), tmp_extruder);
|
||||
setTargetHotend(nozzle_temp,active_extruder);
|
||||
mmu_wait_for_heater_blocking();
|
||||
|
||||
manage_response(false, true, MMU_LOAD_MOVE);
|
||||
mmu_continue_loading();
|
||||
mmu_extruder = tmp_extruder; //filament change is finished
|
||||
|
||||
mmu_load_to_nozzle();
|
||||
load_filament_final_feed();
|
||||
st_synchronize();
|
||||
mmu_command(MmuCmd::T0 + tmp_extruder);
|
||||
|
||||
manage_response(false, true, MMU_LOAD_MOVE);
|
||||
mmu_continue_loading(is_usb_printing);
|
||||
mmu_extruder = tmp_extruder; //filament change is finished
|
||||
|
||||
mmu_load_to_nozzle();
|
||||
load_filament_final_feed();
|
||||
st_synchronize();
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -898,7 +974,7 @@ void display_loading()
|
|||
}
|
||||
}
|
||||
|
||||
void extr_adj(int extruder) //loading filament for SNMM
|
||||
void extr_adj(uint8_t extruder) //loading filament for SNMM
|
||||
{
|
||||
#ifndef SNMM
|
||||
MmuCmd cmd = MmuCmd::L0 + extruder;
|
||||
|
|
@ -999,6 +1075,38 @@ void mmu_filament_ramming()
|
|||
}
|
||||
}
|
||||
|
||||
//-//
|
||||
void extr_unload_()
|
||||
{
|
||||
//if(bFilamentAction)
|
||||
if(0)
|
||||
{
|
||||
bFilamentAction=false;
|
||||
extr_unload();
|
||||
}
|
||||
else {
|
||||
eFilamentAction=FilamentAction::MmuUnLoad;
|
||||
bFilamentFirstRun=false;
|
||||
if(target_temperature[0]>=EXTRUDE_MINTEMP)
|
||||
{
|
||||
bFilamentPreheatState=true;
|
||||
mFilamentItem(target_temperature[0],target_temperature_bed);
|
||||
}
|
||||
// else menu_submenu(mFilamentMenu);
|
||||
else mFilamentMenu();
|
||||
}
|
||||
}
|
||||
|
||||
//! @brief show which filament is currently unloaded
|
||||
void extr_unload_view()
|
||||
{
|
||||
lcd_clear();
|
||||
lcd_set_cursor(0, 1); lcd_puts_P(_T(MSG_UNLOADING_FILAMENT));
|
||||
lcd_print(" ");
|
||||
if (mmu_extruder == MMU_FILAMENT_UNKNOWN) lcd_print(" ");
|
||||
else lcd_print(mmu_extruder + 1);
|
||||
}
|
||||
|
||||
void extr_unload()
|
||||
{ //unload just current filament for multimaterial printers
|
||||
#ifdef SNMM
|
||||
|
|
@ -1011,14 +1119,8 @@ void extr_unload()
|
|||
{
|
||||
#ifndef SNMM
|
||||
st_synchronize();
|
||||
|
||||
//show which filament is currently unloaded
|
||||
lcd_update_enable(false);
|
||||
lcd_clear();
|
||||
lcd_set_cursor(0, 1); lcd_puts_P(_T(MSG_UNLOADING_FILAMENT));
|
||||
lcd_print(" ");
|
||||
if (mmu_extruder == MMU_FILAMENT_UNKNOWN) lcd_print(" ");
|
||||
else lcd_print(mmu_extruder + 1);
|
||||
|
||||
menu_submenu(extr_unload_view);
|
||||
|
||||
mmu_filament_ramming();
|
||||
|
||||
|
|
@ -1026,7 +1128,7 @@ void extr_unload()
|
|||
// get response
|
||||
manage_response(false, true, MMU_UNLOAD_MOVE);
|
||||
|
||||
lcd_update_enable(true);
|
||||
menu_back();
|
||||
#else //SNMM
|
||||
|
||||
lcd_clear();
|
||||
|
|
@ -1084,7 +1186,6 @@ void extr_unload()
|
|||
{
|
||||
show_preheat_nozzle_warning();
|
||||
}
|
||||
//lcd_return_to_status();
|
||||
}
|
||||
|
||||
//wrapper functions for loading filament
|
||||
|
|
@ -1138,56 +1239,6 @@ void extr_adj_4()
|
|||
#endif
|
||||
}
|
||||
|
||||
void mmu_load_to_nozzle_0()
|
||||
{
|
||||
lcd_mmu_load_to_nozzle(0);
|
||||
}
|
||||
|
||||
void mmu_load_to_nozzle_1()
|
||||
{
|
||||
lcd_mmu_load_to_nozzle(1);
|
||||
}
|
||||
|
||||
void mmu_load_to_nozzle_2()
|
||||
{
|
||||
lcd_mmu_load_to_nozzle(2);
|
||||
}
|
||||
|
||||
void mmu_load_to_nozzle_3()
|
||||
{
|
||||
lcd_mmu_load_to_nozzle(3);
|
||||
}
|
||||
|
||||
void mmu_load_to_nozzle_4()
|
||||
{
|
||||
lcd_mmu_load_to_nozzle(4);
|
||||
}
|
||||
|
||||
void mmu_eject_fil_0()
|
||||
{
|
||||
mmu_eject_filament(0, true);
|
||||
}
|
||||
|
||||
void mmu_eject_fil_1()
|
||||
{
|
||||
mmu_eject_filament(1, true);
|
||||
}
|
||||
|
||||
void mmu_eject_fil_2()
|
||||
{
|
||||
mmu_eject_filament(2, true);
|
||||
}
|
||||
|
||||
void mmu_eject_fil_3()
|
||||
{
|
||||
mmu_eject_filament(3, true);
|
||||
}
|
||||
|
||||
void mmu_eject_fil_4()
|
||||
{
|
||||
mmu_eject_filament(4, true);
|
||||
}
|
||||
|
||||
void load_all()
|
||||
{
|
||||
#ifndef SNMM
|
||||
|
|
@ -1311,37 +1362,66 @@ void mmu_show_warning()
|
|||
|
||||
void lcd_mmu_load_to_nozzle(uint8_t filament_nr)
|
||||
{
|
||||
if (degHotend0() > EXTRUDE_MINTEMP)
|
||||
{
|
||||
tmp_extruder = filament_nr;
|
||||
lcd_update_enable(false);
|
||||
lcd_clear();
|
||||
lcd_set_cursor(0, 1); lcd_puts_P(_T(MSG_LOADING_FILAMENT));
|
||||
lcd_print(" ");
|
||||
lcd_print(tmp_extruder + 1);
|
||||
mmu_command(MmuCmd::T0 + tmp_extruder);
|
||||
manage_response(true, true, MMU_TCODE_MOVE);
|
||||
mmu_continue_loading();
|
||||
mmu_extruder = tmp_extruder; //filament change is finished
|
||||
mmu_load_to_nozzle();
|
||||
load_filament_final_feed();
|
||||
st_synchronize();
|
||||
custom_message_type = CUSTOM_MSG_TYPE_F_LOAD;
|
||||
lcd_setstatuspgm(_T(MSG_LOADING_FILAMENT));
|
||||
lcd_return_to_status();
|
||||
lcd_update_enable(true);
|
||||
lcd_load_filament_color_check();
|
||||
lcd_setstatuspgm(_T(WELCOME_MSG));
|
||||
custom_message_type = CUSTOM_MSG_TYPE_STATUS;
|
||||
}
|
||||
else
|
||||
{
|
||||
show_preheat_nozzle_warning();
|
||||
}
|
||||
menu_back();
|
||||
bFilamentAction = false; // NOT in "mmu_load_to_nozzle_menu()"
|
||||
if (degHotend0() > EXTRUDE_MINTEMP)
|
||||
{
|
||||
tmp_extruder = filament_nr;
|
||||
lcd_update_enable(false);
|
||||
lcd_clear();
|
||||
lcd_set_cursor(0, 1);
|
||||
lcd_puts_P(_T(MSG_LOADING_FILAMENT));
|
||||
lcd_print(" ");
|
||||
lcd_print(tmp_extruder + 1);
|
||||
mmu_command(MmuCmd::T0 + tmp_extruder);
|
||||
manage_response(true, true, MMU_TCODE_MOVE);
|
||||
mmu_continue_loading(false);
|
||||
mmu_extruder = tmp_extruder; //filament change is finished
|
||||
marlin_rise_z();
|
||||
mmu_load_to_nozzle();
|
||||
load_filament_final_feed();
|
||||
st_synchronize();
|
||||
custom_message_type = CustomMsg::FilamentLoading;
|
||||
lcd_setstatuspgm(_T(MSG_LOADING_FILAMENT));
|
||||
lcd_return_to_status();
|
||||
lcd_update_enable(true);
|
||||
lcd_load_filament_color_check();
|
||||
lcd_setstatuspgm(_T(WELCOME_MSG));
|
||||
custom_message_type = CustomMsg::Status;
|
||||
}
|
||||
else
|
||||
{
|
||||
show_preheat_nozzle_warning();
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef MMU_HAS_CUTTER
|
||||
void mmu_cut_filament(uint8_t filament_nr)
|
||||
{
|
||||
menu_back();
|
||||
bFilamentAction=false; // NOT in "mmu_load_to_nozzle_menu()"
|
||||
if (degHotend0() > EXTRUDE_MINTEMP)
|
||||
{
|
||||
LcdUpdateDisabler disableLcdUpdate;
|
||||
lcd_clear();
|
||||
lcd_set_cursor(0, 1); lcd_puts_P(_i("Cutting filament")); //// c=18 r=1
|
||||
lcd_print(" ");
|
||||
lcd_print(filament_nr + 1);
|
||||
mmu_filament_ramming();
|
||||
mmu_command(MmuCmd::K0 + filament_nr);
|
||||
manage_response(false, false, MMU_UNLOAD_MOVE);
|
||||
}
|
||||
else
|
||||
{
|
||||
show_preheat_nozzle_warning();
|
||||
}
|
||||
}
|
||||
#endif //MMU_HAS_CUTTER
|
||||
|
||||
void mmu_eject_filament(uint8_t filament, bool recover)
|
||||
{
|
||||
//-//
|
||||
bFilamentAction=false; // NOT in "mmu_fil_eject_menu()"
|
||||
if (filament < 5)
|
||||
{
|
||||
|
||||
|
|
@ -1353,9 +1433,7 @@ void mmu_eject_filament(uint8_t filament, bool recover)
|
|||
LcdUpdateDisabler disableLcdUpdate;
|
||||
lcd_clear();
|
||||
lcd_set_cursor(0, 1); lcd_puts_P(_i("Ejecting filament"));
|
||||
current_position[E_AXIS] -= 80;
|
||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 2500 / 60, active_extruder);
|
||||
st_synchronize();
|
||||
mmu_filament_ramming();
|
||||
mmu_command(MmuCmd::E0 + filament);
|
||||
manage_response(false, false, MMU_UNLOAD_MOVE);
|
||||
if (recover)
|
||||
|
|
@ -1378,62 +1456,180 @@ void mmu_eject_filament(uint8_t filament, bool recover)
|
|||
}
|
||||
}
|
||||
|
||||
static void load_more()
|
||||
//! @brief Fits filament tip into heatbreak?
|
||||
//!
|
||||
//! If PTFE tube is jammed, this causes filament to be unloaded and no longer
|
||||
//! being detected by the pulley IR sensor.
|
||||
//! @retval true Fits
|
||||
//! @retval false Doesn't fit
|
||||
static bool can_load()
|
||||
{
|
||||
current_position[E_AXIS] += 60;
|
||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS],
|
||||
current_position[E_AXIS], MMU_LOAD_FEEDRATE, active_extruder);
|
||||
current_position[E_AXIS] -= 52;
|
||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS],
|
||||
current_position[E_AXIS], MMU_LOAD_FEEDRATE, active_extruder);
|
||||
st_synchronize();
|
||||
|
||||
uint_least8_t filament_detected_count = 0;
|
||||
const float e_increment = 0.2;
|
||||
const uint_least8_t steps = 6.0 / e_increment;
|
||||
DEBUG_PUTS_P(PSTR("MMU can_load:"));
|
||||
for(uint_least8_t i = 0; i < steps; ++i)
|
||||
{
|
||||
current_position[E_AXIS] -= e_increment;
|
||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS],
|
||||
current_position[E_AXIS], MMU_LOAD_FEEDRATE, active_extruder);
|
||||
st_synchronize();
|
||||
if(0 == PIN_GET(IR_SENSOR_PIN))
|
||||
{
|
||||
++filament_detected_count;
|
||||
DEBUG_PUTCHAR('O');
|
||||
}
|
||||
else
|
||||
{
|
||||
DEBUG_PUTCHAR('o');
|
||||
}
|
||||
}
|
||||
if (filament_detected_count > steps - 4)
|
||||
{
|
||||
DEBUG_PUTS_P(PSTR(" succeeded."));
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
DEBUG_PUTS_P(PSTR(" failed."));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
//! @brief load more
|
||||
//!
|
||||
//! Try to feed more filament from MMU if it is not detected by filament sensor.
|
||||
//! @retval true Success, filament detected by IR sensor
|
||||
//! @retval false Failed, filament not detected by IR sensor after maximum number of attempts
|
||||
static bool load_more()
|
||||
{
|
||||
for (uint8_t i = 0; i < MMU_IDLER_SENSOR_ATTEMPTS_NR; i++)
|
||||
{
|
||||
if (PIN_GET(IR_SENSOR_PIN) == 0) return;
|
||||
if (PIN_GET(IR_SENSOR_PIN) == 0) return true;
|
||||
DEBUG_PRINTF_P(PSTR("Additional load attempt nr. %d\n"), i);
|
||||
mmu_command(MmuCmd::C0);
|
||||
manage_response(true, true, MMU_LOAD_MOVE);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void mmu_continue_loading()
|
||||
static void increment_load_fail()
|
||||
{
|
||||
if (ir_sensor_detected)
|
||||
uint8_t mmu_load_fail = eeprom_read_byte((uint8_t*)EEPROM_MMU_LOAD_FAIL);
|
||||
uint16_t mmu_load_fail_tot = eeprom_read_word((uint16_t*)EEPROM_MMU_LOAD_FAIL_TOT);
|
||||
if(mmu_load_fail < 255) eeprom_update_byte((uint8_t*)EEPROM_MMU_LOAD_FAIL, mmu_load_fail + 1);
|
||||
if(mmu_load_fail_tot < 65535) eeprom_update_word((uint16_t*)EEPROM_MMU_LOAD_FAIL_TOT, mmu_load_fail_tot + 1);
|
||||
}
|
||||
|
||||
//! @brief continue loading filament
|
||||
//! @par blocking
|
||||
//! * true blocking - do not return until successful load
|
||||
//! * false non-blocking - pause print and return on load failure
|
||||
//!
|
||||
//! @startuml
|
||||
//! [*] --> [*] : !ir_sensor_detected /\n send MmuCmd::C0
|
||||
//! [*] --> LoadMore
|
||||
//! LoadMore --> [*] : filament \ndetected
|
||||
//! LoadMore --> Retry : !filament detected /\n increment load fail
|
||||
//! Retry --> [*] : filament \ndetected
|
||||
//! Retry --> Unload : !filament \ndetected
|
||||
//! Unload --> [*] : non-blocking
|
||||
//! Unload --> Retry : button \nclicked
|
||||
//!
|
||||
//! Retry : Cut filament if enabled
|
||||
//! Retry : repeat last T-code
|
||||
//! Unload : unload filament
|
||||
//! Unload : pause print
|
||||
//! Unload : show error message
|
||||
//!
|
||||
//! @enduml
|
||||
void mmu_continue_loading(bool blocking)
|
||||
{
|
||||
if (!ir_sensor_detected)
|
||||
{
|
||||
load_more();
|
||||
mmu_command(MmuCmd::C0);
|
||||
return;
|
||||
}
|
||||
|
||||
if (PIN_GET(IR_SENSOR_PIN) != 0) {
|
||||
uint8_t mmu_load_fail = eeprom_read_byte((uint8_t*)EEPROM_MMU_LOAD_FAIL);
|
||||
uint16_t mmu_load_fail_tot = eeprom_read_word((uint16_t*)EEPROM_MMU_LOAD_FAIL_TOT);
|
||||
if(mmu_load_fail < 255) eeprom_update_byte((uint8_t*)EEPROM_MMU_LOAD_FAIL, mmu_load_fail + 1);
|
||||
if(mmu_load_fail_tot < 65535) eeprom_update_word((uint16_t*)EEPROM_MMU_LOAD_FAIL_TOT, mmu_load_fail_tot + 1);
|
||||
bool success = load_more();
|
||||
if (success) success = can_load();
|
||||
|
||||
enum class Ls : uint_least8_t
|
||||
{
|
||||
Enter,
|
||||
Retry,
|
||||
Unload,
|
||||
};
|
||||
Ls state = Ls::Enter;
|
||||
|
||||
const uint_least8_t max_retry = 2;
|
||||
uint_least8_t retry = 0;
|
||||
|
||||
while (!success)
|
||||
{
|
||||
switch (state)
|
||||
{
|
||||
case Ls::Enter:
|
||||
increment_load_fail();
|
||||
// no break
|
||||
case Ls::Retry:
|
||||
#ifdef MMU_HAS_CUTTER
|
||||
if (1 == eeprom_read_byte((uint8_t*)EEPROM_MMU_CUTTER_ENABLED))
|
||||
{
|
||||
mmu_command(MmuCmd::K0 + tmp_extruder);
|
||||
manage_response(true, true, MMU_UNLOAD_MOVE);
|
||||
}
|
||||
#endif //MMU_HAS_CUTTER
|
||||
mmu_command(MmuCmd::T0 + tmp_extruder);
|
||||
manage_response(true, true, MMU_TCODE_MOVE);
|
||||
load_more();
|
||||
success = load_more();
|
||||
if (success) success = can_load();
|
||||
++retry; // overflow not handled, as it is not dangerous.
|
||||
if (retry >= max_retry) state = Ls::Unload;
|
||||
break;
|
||||
case Ls::Unload:
|
||||
stop_and_save_print_to_ram(0, 0);
|
||||
|
||||
if (PIN_GET(IR_SENSOR_PIN) != 0)
|
||||
//lift z
|
||||
current_position[Z_AXIS] += Z_PAUSE_LIFT;
|
||||
if (current_position[Z_AXIS] > Z_MAX_POS) current_position[Z_AXIS] = Z_MAX_POS;
|
||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 15, active_extruder);
|
||||
st_synchronize();
|
||||
|
||||
//Move XY to side
|
||||
current_position[X_AXIS] = X_PAUSE_POS;
|
||||
current_position[Y_AXIS] = Y_PAUSE_POS;
|
||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 50, active_extruder);
|
||||
st_synchronize();
|
||||
|
||||
mmu_command(MmuCmd::U0);
|
||||
manage_response(false, true, MMU_UNLOAD_MOVE);
|
||||
|
||||
setAllTargetHotends(0);
|
||||
lcd_setstatuspgm(_i("MMU load failed "));////c=20 r=1
|
||||
|
||||
if (blocking)
|
||||
{
|
||||
marlin_wait_for_click();
|
||||
restore_print_from_ram_and_continue(0);
|
||||
state = Ls::Retry;
|
||||
}
|
||||
else
|
||||
{
|
||||
//pause print, show error message and then repeat last T-code
|
||||
stop_and_save_print_to_ram(0, 0);
|
||||
|
||||
//lift z
|
||||
current_position[Z_AXIS] += Z_PAUSE_LIFT;
|
||||
if (current_position[Z_AXIS] > Z_MAX_POS) current_position[Z_AXIS] = Z_MAX_POS;
|
||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 15, active_extruder);
|
||||
st_synchronize();
|
||||
|
||||
//Move XY to side
|
||||
current_position[X_AXIS] = X_PAUSE_POS;
|
||||
current_position[Y_AXIS] = Y_PAUSE_POS;
|
||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 50, active_extruder);
|
||||
st_synchronize();
|
||||
|
||||
mmu_command(MmuCmd::U0);
|
||||
manage_response(false, true, MMU_UNLOAD_MOVE);
|
||||
|
||||
setAllTargetHotends(0);
|
||||
lcd_setstatuspgm(_i("MMU load failed "));////MSG_RECOVERING_PRINT c=20 r=1
|
||||
mmu_fil_loaded = false; //so we can retry same T-code again
|
||||
isPrintPaused = true;
|
||||
mmu_command(MmuCmd::W0);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
else { //mmu_ir_sensor_detected == false
|
||||
mmu_command(MmuCmd::C0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,7 +15,6 @@ extern uint8_t tmp_extruder;
|
|||
|
||||
extern int8_t mmu_finda;
|
||||
extern bool ir_sensor_detected;
|
||||
extern bool mmu_loading_flag;
|
||||
|
||||
extern int16_t mmu_version;
|
||||
extern int16_t mmu_buildnr;
|
||||
|
|
@ -52,9 +51,14 @@ enum class MmuCmd : uint_least8_t
|
|||
E2,
|
||||
E3,
|
||||
E4,
|
||||
K0,
|
||||
K1,
|
||||
K2,
|
||||
K3,
|
||||
K4,
|
||||
R0,
|
||||
S3,
|
||||
W0,
|
||||
W0, //!< Wait and signal load error
|
||||
};
|
||||
|
||||
inline MmuCmd operator+ (MmuCmd cmd, uint8_t filament)
|
||||
|
|
@ -92,25 +96,22 @@ extern void manage_response(bool move_axes, bool turn_off_nozzle, uint8_t move =
|
|||
|
||||
extern void mmu_load_to_nozzle();
|
||||
|
||||
extern void mmu_M600_load_filament(bool automatic);
|
||||
extern void mmu_M600_load_filament(bool automatic, float nozzle_temp);
|
||||
extern void mmu_M600_wait_and_beep();
|
||||
|
||||
extern void extr_mov(float shift, float feed_rate);
|
||||
extern void change_extr(int extr);
|
||||
extern int get_ext_nr();
|
||||
extern void display_loading();
|
||||
extern void extr_adj(int extruder);
|
||||
extern void extr_adj(uint8_t extruder);
|
||||
extern void extr_unload();
|
||||
//-//
|
||||
extern void extr_unload_();
|
||||
extern void extr_adj_0();
|
||||
extern void extr_adj_1();
|
||||
extern void extr_adj_2();
|
||||
extern void extr_adj_3();
|
||||
extern void extr_adj_4();
|
||||
extern void mmu_load_to_nozzle_0();
|
||||
extern void mmu_load_to_nozzle_1();
|
||||
extern void mmu_load_to_nozzle_2();
|
||||
extern void mmu_load_to_nozzle_3();
|
||||
extern void mmu_load_to_nozzle_4();
|
||||
extern void load_all();
|
||||
extern void extr_change_0();
|
||||
extern void extr_change_1();
|
||||
|
|
@ -130,12 +131,10 @@ extern bool mmu_check_version();
|
|||
extern void mmu_show_warning();
|
||||
extern void lcd_mmu_load_to_nozzle(uint8_t filament_nr);
|
||||
extern void mmu_eject_filament(uint8_t filament, bool recover);
|
||||
extern void mmu_eject_fil_0();
|
||||
extern void mmu_eject_fil_1();
|
||||
extern void mmu_eject_fil_2();
|
||||
extern void mmu_eject_fil_3();
|
||||
extern void mmu_eject_fil_4();
|
||||
extern void mmu_continue_loading();
|
||||
#ifdef MMU_HAS_CUTTER
|
||||
extern void mmu_cut_filament(uint8_t filament_nr);
|
||||
#endif //MMU_HAS_CUTTER
|
||||
extern void mmu_continue_loading(bool blocking);
|
||||
extern void mmu_filament_ramming();
|
||||
extern void mmu_wait_for_heater_blocking();
|
||||
extern void mmu_load_step(bool synchronize = true);
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
//! @file
|
||||
// Based on the OptiBoot project
|
||||
// https://github.com/Optiboot/optiboot
|
||||
// Licence GLP 2 or later.
|
||||
|
|
@ -97,6 +98,7 @@ static const char entry_magic_cfm [] PROGMEM = "w25x20cl_cfm\n";
|
|||
struct block_t;
|
||||
extern struct block_t *block_buffer;
|
||||
|
||||
//! @brief Enter an STK500 compatible Optiboot boot loader waiting for flashing the languages to an external flash memory.
|
||||
void optiboot_w25x20cl_enter()
|
||||
{
|
||||
if (boot_app_flags & BOOT_APP_FLG_USER0) return;
|
||||
|
|
|
|||
|
|
@ -3,20 +3,6 @@
|
|||
|
||||
#include "boards.h"
|
||||
|
||||
#if !MB(5DPRINT)
|
||||
#define X_MS1_PIN -1
|
||||
#define X_MS2_PIN -1
|
||||
#define Y_MS1_PIN -1
|
||||
#define Y_MS2_PIN -1
|
||||
#define Z_MS1_PIN -1
|
||||
#define Z_MS2_PIN -1
|
||||
#define E0_MS1_PIN -1
|
||||
#define E0_MS2_PIN -1
|
||||
#define E1_MS1_PIN -1
|
||||
#define E1_MS2_PIN -1
|
||||
#define DIGIPOTSS_PIN -1
|
||||
#endif
|
||||
|
||||
#define LARGE_FLASH true
|
||||
|
||||
/*****************************************************************
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@
|
|||
|
||||
#define SDCARDDETECT 72
|
||||
|
||||
#define IR_SENSOR_PIN 62 //idler sensor @PK0 (digital pin 62/A8)
|
||||
#define IR_SENSOR_PIN 20 //idler sensor
|
||||
|
||||
// Support for an 8 bit logic analyzer, for example the Saleae.
|
||||
// Channels 0-2 are fast, they could generate 2.667Mhz waveform with a software loop.
|
||||
|
|
|
|||
|
|
@ -14,6 +14,12 @@
|
|||
#define SWI2C_SDA 20 //SDA on P3
|
||||
#define SWI2C_SCL 21 //SCL on P3
|
||||
|
||||
#ifdef MICROMETER_LOGGING
|
||||
#define D_DATACLOCK 24 //Y_MAX (green)
|
||||
#define D_DATA 30 //X_MAX (blue)
|
||||
#define D_REQUIRE 23 //Z_MAX (white)
|
||||
#endif //MICROMETER_LOGGING
|
||||
|
||||
|
||||
|
||||
#define X_STEP_PIN 37
|
||||
|
|
@ -102,7 +108,7 @@
|
|||
|
||||
#define SDCARDDETECT 15
|
||||
|
||||
#define IR_SENSOR_PIN 23 // idler sensor @PA1 (digital pin 23, "Z-MAX" connector)
|
||||
#define IR_SENSOR_PIN 20 //idler sensor
|
||||
|
||||
// Support for an 8 bit logic analyzer, for example the Saleae.
|
||||
// Channels 0-2 are fast, they could generate 2.667Mhz waveform with a software loop.
|
||||
|
|
|
|||
|
|
@ -764,7 +764,7 @@ void plan_buffer_line(float x, float y, float z, const float &e, float feed_rate
|
|||
de_float = 0;
|
||||
#endif
|
||||
SERIAL_ECHO_START;
|
||||
SERIAL_ECHOLNRPGM(_n(" cold extrusion prevented"));////MSG_ERR_COLD_EXTRUDE_STOP c=0 r=0
|
||||
SERIAL_ECHOLNRPGM(_n(" cold extrusion prevented"));////MSG_ERR_COLD_EXTRUDE_STOP
|
||||
}
|
||||
|
||||
#ifdef PREVENT_LENGTHY_EXTRUDE
|
||||
|
|
@ -776,7 +776,7 @@ void plan_buffer_line(float x, float y, float z, const float &e, float feed_rate
|
|||
de_float = 0;
|
||||
#endif
|
||||
SERIAL_ECHO_START;
|
||||
SERIAL_ECHOLNRPGM(_n(" too long extrusion prevented"));////MSG_ERR_LONG_EXTRUDE_STOP c=0 r=0
|
||||
SERIAL_ECHOLNRPGM(_n(" too long extrusion prevented"));////MSG_ERR_LONG_EXTRUDE_STOP
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,14 +3,38 @@
|
|||
|
||||
#define PRINTER_UNKNOWN 0
|
||||
|
||||
#define PRINTER_MK1 100
|
||||
#define PRINTER_MK2 200
|
||||
#define PRINTER_MK2_SNMM 201
|
||||
#define PRINTER_MK25 250
|
||||
#define PRINTER_MK25_SNMM 251
|
||||
#define PRINTER_MK25S 252
|
||||
#define PRINTER_MK3 300
|
||||
#define PRINTER_MK3_SNMM 301
|
||||
#define PRINTER_MK3S 302
|
||||
// *** MK1
|
||||
#define PRINTER_MK1 100
|
||||
#define PRINTER_MK1_NAME "MK1"
|
||||
// *** MK2
|
||||
#define PRINTER_MK2 200
|
||||
#define PRINTER_MK2_NAME "MK2"
|
||||
#define PRINTER_MK2_SNMM 201 // better is "10200"
|
||||
#define PRINTER_MK2_SNMM_NAME "MK2MM" // better is "MK2MMU1"
|
||||
// *** MK2S ??? is same as "MK2" ???
|
||||
#define PRINTER_MK2S 202
|
||||
#define PRINTER_MK2S_NAME "MK2S"
|
||||
#define PRINTER_MK2S_SNMM 203 // better is "10202"
|
||||
#define PRINTER_MK2S_SNMM_NAME "MK2SMM" // better is "MK2SMMU1"
|
||||
// *** MK2.5
|
||||
#define PRINTER_MK25 250
|
||||
#define PRINTER_MK25_NAME "MK2.5"
|
||||
#define PRINTER_MK25_MMU2 20250
|
||||
#define PRINTER_MK25_MMU2_NAME "MK2.5MMU2"
|
||||
// *** MK2.5S
|
||||
#define PRINTER_MK25S 252
|
||||
#define PRINTER_MK25S_NAME "MK2.5S"
|
||||
#define PRINTER_MK25S_MMU2 20252
|
||||
#define PRINTER_MK25S_MMU2_NAME "MK2.5SMMU2S"
|
||||
// *** MK3
|
||||
#define PRINTER_MK3 300
|
||||
#define PRINTER_MK3_NAME "MK3"
|
||||
#define PRINTER_MK3_MMU2 20300
|
||||
#define PRINTER_MK3_MMU2_NAME "MK3MMU2"
|
||||
// *** MK3S
|
||||
#define PRINTER_MK3S 302
|
||||
#define PRINTER_MK3S_NAME "MK3S"
|
||||
#define PRINTER_MK3S_MMU2 20302
|
||||
#define PRINTER_MK3S_MMU2_NAME "MK3SMMU2S"
|
||||
|
||||
#endif //PRINTERS_H
|
||||
|
|
|
|||
|
|
@ -17,7 +17,8 @@ static void Sound_SaveMode(void);
|
|||
static void Sound_DoSound_Echo(void);
|
||||
static void Sound_DoSound_Prompt(void);
|
||||
static void Sound_DoSound_Alert(bool bOnce);
|
||||
|
||||
static void Sound_DoSound_Encoder_Move(void);
|
||||
static void Sound_DoSound_Blind_Alert(void);
|
||||
|
||||
void Sound_Init(void)
|
||||
{
|
||||
|
|
@ -49,9 +50,9 @@ switch(eSoundMode)
|
|||
eSoundMode=e_SOUND_MODE_SILENT;
|
||||
break;
|
||||
case e_SOUND_MODE_SILENT:
|
||||
eSoundMode=e_SOUND_MODE_MUTE;
|
||||
eSoundMode=e_SOUND_MODE_BLIND;
|
||||
break;
|
||||
case e_SOUND_MODE_MUTE:
|
||||
case e_SOUND_MODE_BLIND:
|
||||
eSoundMode=e_SOUND_MODE_LOUD;
|
||||
break;
|
||||
default:
|
||||
|
|
@ -60,6 +61,37 @@ switch(eSoundMode)
|
|||
Sound_SaveMode();
|
||||
}
|
||||
|
||||
//if critical is true then silend and once mode is ignored
|
||||
void Sound_MakeCustom(uint16_t ms,uint16_t tone_,bool critical){
|
||||
if (!critical){
|
||||
if (eSoundMode != e_SOUND_MODE_SILENT){
|
||||
if(!tone_){
|
||||
WRITE(BEEPER, HIGH);
|
||||
_delay(ms);
|
||||
WRITE(BEEPER, LOW);
|
||||
}
|
||||
else{
|
||||
_tone(BEEPER, tone_);
|
||||
_delay(ms);
|
||||
_noTone(BEEPER);
|
||||
}
|
||||
}
|
||||
}
|
||||
else{
|
||||
if(!tone_){
|
||||
WRITE(BEEPER, HIGH);
|
||||
_delay(ms);
|
||||
WRITE(BEEPER, LOW);
|
||||
_delay(ms);
|
||||
}
|
||||
else{
|
||||
_tone(BEEPER, tone_);
|
||||
_delay(ms);
|
||||
_noTone(BEEPER);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Sound_MakeSound(eSOUND_TYPE eSoundType)
|
||||
{
|
||||
switch(eSoundMode)
|
||||
|
|
@ -84,13 +116,43 @@ switch(eSoundMode)
|
|||
if(eSoundType==e_SOUND_TYPE_StandardAlert)
|
||||
Sound_DoSound_Alert(true);
|
||||
break;
|
||||
case e_SOUND_MODE_MUTE:
|
||||
break;
|
||||
case e_SOUND_MODE_BLIND:
|
||||
if(eSoundType==e_SOUND_TYPE_ButtonEcho)
|
||||
Sound_DoSound_Echo();
|
||||
if(eSoundType==e_SOUND_TYPE_StandardPrompt)
|
||||
Sound_DoSound_Prompt();
|
||||
if(eSoundType==e_SOUND_TYPE_StandardAlert)
|
||||
Sound_DoSound_Alert(false);
|
||||
if(eSoundType==e_SOUND_TYPE_EncoderMove)
|
||||
Sound_DoSound_Encoder_Move();
|
||||
if(eSoundType==e_SOUND_TYPE_BlindAlert)
|
||||
Sound_DoSound_Blind_Alert();
|
||||
break;
|
||||
default:
|
||||
;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void Sound_DoSound_Blind_Alert(void)
|
||||
{
|
||||
_tone(BEEPER,300);
|
||||
_delay_ms(75);
|
||||
_noTone(BEEPER);
|
||||
_delay_ms(75);
|
||||
}
|
||||
|
||||
static void Sound_DoSound_Encoder_Move(void)
|
||||
{
|
||||
uint8_t nI;
|
||||
|
||||
for(nI=0;nI<5;nI++)
|
||||
{
|
||||
WRITE(BEEPER,HIGH);
|
||||
delayMicroseconds(75);
|
||||
WRITE(BEEPER,LOW);
|
||||
delayMicroseconds(75);
|
||||
}
|
||||
}
|
||||
|
||||
static void Sound_DoSound_Echo(void)
|
||||
{
|
||||
|
|
@ -108,7 +170,7 @@ for(nI=0;nI<10;nI++)
|
|||
static void Sound_DoSound_Prompt(void)
|
||||
{
|
||||
WRITE(BEEPER,HIGH);
|
||||
delay_keep_alive(500);
|
||||
_delay_ms(500);
|
||||
WRITE(BEEPER,LOW);
|
||||
}
|
||||
|
||||
|
|
@ -120,8 +182,8 @@ nMax=bOnce?1:3;
|
|||
for(nI=0;nI<nMax;nI++)
|
||||
{
|
||||
WRITE(BEEPER,HIGH);
|
||||
delay_keep_alive(200);
|
||||
delayMicroseconds(200);
|
||||
WRITE(BEEPER,LOW);
|
||||
delay_keep_alive(500);
|
||||
delayMicroseconds(500);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
#include <stdint.h>
|
||||
#ifndef SOUND_H
|
||||
#define SOUND_H
|
||||
|
||||
|
|
@ -5,16 +6,16 @@
|
|||
#define MSG_SOUND_MODE_LOUD "Sound [loud]"
|
||||
#define MSG_SOUND_MODE_ONCE "Sound [once]"
|
||||
#define MSG_SOUND_MODE_SILENT "Sound [silent]"
|
||||
#define MSG_SOUND_MODE_MUTE "Sound [mute]"
|
||||
#define MSG_SOUND_MODE_BLIND "Sound [blind]"
|
||||
|
||||
|
||||
#define e_SOUND_MODE_NULL 0xFF
|
||||
typedef enum
|
||||
{e_SOUND_MODE_LOUD,e_SOUND_MODE_ONCE,e_SOUND_MODE_SILENT,e_SOUND_MODE_MUTE} eSOUND_MODE;
|
||||
{e_SOUND_MODE_LOUD,e_SOUND_MODE_ONCE,e_SOUND_MODE_SILENT,e_SOUND_MODE_BLIND} eSOUND_MODE;
|
||||
#define e_SOUND_MODE_DEFAULT e_SOUND_MODE_LOUD
|
||||
|
||||
typedef enum
|
||||
{e_SOUND_TYPE_ButtonEcho,e_SOUND_TYPE_EncoderEcho,e_SOUND_TYPE_StandardPrompt,e_SOUND_TYPE_StandardConfirm,e_SOUND_TYPE_StandardWarning,e_SOUND_TYPE_StandardAlert} eSOUND_TYPE;
|
||||
{e_SOUND_TYPE_ButtonEcho,e_SOUND_TYPE_EncoderEcho,e_SOUND_TYPE_StandardPrompt,e_SOUND_TYPE_StandardConfirm,e_SOUND_TYPE_StandardWarning,e_SOUND_TYPE_StandardAlert,e_SOUND_TYPE_EncoderMove,e_SOUND_TYPE_BlindAlert} eSOUND_TYPE;
|
||||
typedef enum
|
||||
{e_SOUND_CLASS_Echo,e_SOUND_CLASS_Prompt,e_SOUND_CLASS_Confirm,e_SOUND_CLASS_Warning,e_SOUND_CLASS_Alert} eSOUND_CLASS;
|
||||
|
||||
|
|
@ -27,6 +28,7 @@ extern void Sound_Default(void);
|
|||
extern void Sound_Save(void);
|
||||
extern void Sound_CycleState(void);
|
||||
extern void Sound_MakeSound(eSOUND_TYPE eSoundType);
|
||||
extern void Sound_MakeCustom(uint16_t ms,uint16_t tone_ ,bool critical);
|
||||
|
||||
//static void Sound_DoSound_Echo(void);
|
||||
//static void Sound_DoSound_Prompt(void);
|
||||
|
|
|
|||
|
|
@ -92,10 +92,15 @@ bool abort_on_endstop_hit = false;
|
|||
int motor_current_setting_loud[3] = DEFAULT_PWM_MOTOR_CURRENT_LOUD;
|
||||
#endif
|
||||
|
||||
static bool old_x_min_endstop=false;
|
||||
#if ( (defined(X_MAX_PIN) && (X_MAX_PIN > -1)) || defined(TMC2130_SG_HOMING) ) && !defined(DEBUG_DISABLE_XMAXLIMIT)
|
||||
static bool old_x_max_endstop=false;
|
||||
static bool old_y_min_endstop=false;
|
||||
#endif
|
||||
#if ( (defined(Y_MAX_PIN) && (Y_MAX_PIN > -1)) || defined(TMC2130_SG_HOMING) ) && !defined(DEBUG_DISABLE_YMAXLIMIT)
|
||||
static bool old_y_max_endstop=false;
|
||||
#endif
|
||||
|
||||
static bool old_x_min_endstop=false;
|
||||
static bool old_y_min_endstop=false;
|
||||
static bool old_z_min_endstop=false;
|
||||
static bool old_z_max_endstop=false;
|
||||
|
||||
|
|
@ -343,7 +348,7 @@ FORCE_INLINE unsigned short calc_timer(uint16_t step_rate) {
|
|||
timer = (unsigned short)pgm_read_word_near(table_address);
|
||||
timer -= (((unsigned short)pgm_read_word_near(table_address+2) * (unsigned char)(step_rate & 0x0007))>>3);
|
||||
}
|
||||
if(timer < 100) { timer = 100; MYSERIAL.print(_N("Steprate too high: ")); MYSERIAL.println(step_rate); }//(20kHz this should never happen)////MSG_STEPPER_TOO_HIGH c=0 r=0
|
||||
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;
|
||||
}
|
||||
|
||||
|
|
@ -1117,7 +1122,7 @@ void clear_current_adv_vars() {
|
|||
}
|
||||
|
||||
#endif // LIN_ADVANCE
|
||||
|
||||
|
||||
void st_init()
|
||||
{
|
||||
#ifdef TMC2130
|
||||
|
|
@ -1301,6 +1306,9 @@ void st_init()
|
|||
SET_OUTPUT(Z2_STEP_PIN);
|
||||
WRITE(Z2_STEP_PIN,INVERT_Z_STEP_PIN);
|
||||
#endif
|
||||
#ifdef PSU_Delta
|
||||
init_force_z();
|
||||
#endif // PSU_Delta
|
||||
disable_z();
|
||||
#endif
|
||||
#if defined(E0_STEP_PIN) && (E0_STEP_PIN > -1)
|
||||
|
|
|
|||
|
|
@ -13,12 +13,15 @@
|
|||
#define _delay delay2
|
||||
#define _tone tone2
|
||||
#define _noTone noTone2
|
||||
|
||||
#define timer02_set_pwm0(pwm0)
|
||||
|
||||
#else //SYSTEM_TIMER_2
|
||||
#define _millis millis
|
||||
#define _micros micros
|
||||
#define _delay delay
|
||||
#define _tone tone
|
||||
#define _noTone noTone
|
||||
#define _tone(x, y) /*tone*/
|
||||
#define _noTone(x) /*noTone*/
|
||||
#define timer02_set_pwm0(pwm0)
|
||||
#endif //SYSTEM_TIMER_2
|
||||
|
||||
|
|
|
|||
|
|
@ -40,12 +40,10 @@
|
|||
#include <avr/wdt.h>
|
||||
#include "adc.h"
|
||||
#include "ConfigurationStore.h"
|
||||
|
||||
#include "messages.h"
|
||||
#include "Timer.h"
|
||||
#include "Configuration_prusa.h"
|
||||
|
||||
|
||||
|
||||
//===========================================================================
|
||||
//=============================public variables============================
|
||||
//===========================================================================
|
||||
|
|
@ -55,7 +53,8 @@ int current_temperature_raw[EXTRUDERS] = { 0 };
|
|||
float current_temperature[EXTRUDERS] = { 0.0 };
|
||||
|
||||
#ifdef PINDA_THERMISTOR
|
||||
int current_temperature_raw_pinda = 0 ;
|
||||
uint16_t current_temperature_raw_pinda = 0 ; //value with more averaging applied
|
||||
uint16_t current_temperature_raw_pinda_fast = 0; //value read from adc
|
||||
float current_temperature_pinda = 0.0;
|
||||
#endif //PINDA_THERMISTOR
|
||||
|
||||
|
|
@ -93,6 +92,9 @@ float current_temperature_bed = 0.0;
|
|||
unsigned char fanSpeedSoftPwm;
|
||||
#endif
|
||||
|
||||
#ifdef FANCHECK
|
||||
volatile uint8_t fan_check_error = EFCE_OK;
|
||||
#endif
|
||||
|
||||
unsigned char soft_pwm_bed;
|
||||
|
||||
|
|
@ -263,11 +265,13 @@ static void temp_runaway_stop(bool isPreheat, bool isBed);
|
|||
soft_pwm_bed = (MAX_BED_POWER)/2;
|
||||
timer02_set_pwm0(soft_pwm_bed << 1);
|
||||
bias = d = (MAX_BED_POWER)/2;
|
||||
target_temperature_bed = (int)temp; // to display the requested target bed temperature properly on the main screen
|
||||
}
|
||||
else
|
||||
{
|
||||
soft_pwm[extruder] = (PID_MAX)/2;
|
||||
bias = d = (PID_MAX)/2;
|
||||
target_temperature[extruder] = (int)temp; // to display the requested target extruder temperature properly on the main screen
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -428,7 +432,7 @@ static void temp_runaway_stop(bool isPreheat, bool isBed);
|
|||
void updatePID()
|
||||
{
|
||||
#ifdef PIDTEMP
|
||||
for(int e = 0; e < EXTRUDERS; e++) {
|
||||
for(uint_least8_t e = 0; e < EXTRUDERS; e++) {
|
||||
iState_sum_max[e] = PID_INTEGRAL_DRIVE_MAX / cs.Ki;
|
||||
}
|
||||
#endif
|
||||
|
|
@ -483,8 +487,6 @@ void countFanSpeed()
|
|||
fan_edge_counter[1] = 0;
|
||||
}
|
||||
|
||||
extern bool fans_check_enabled;
|
||||
|
||||
void checkFanSpeed()
|
||||
{
|
||||
uint8_t max_print_fan_errors = 0;
|
||||
|
|
@ -496,8 +498,9 @@ void checkFanSpeed()
|
|||
max_print_fan_errors = 15; //15 seconds
|
||||
max_extruder_fan_errors = 5; //5 seconds
|
||||
#endif //FAN_SOFT_PWM
|
||||
|
||||
fans_check_enabled = (eeprom_read_byte((uint8_t*)EEPROM_FAN_CHECK_ENABLED) > 0);
|
||||
|
||||
if(fans_check_enabled != false)
|
||||
fans_check_enabled = (eeprom_read_byte((uint8_t*)EEPROM_FAN_CHECK_ENABLED) > 0);
|
||||
static unsigned char fan_speed_errors[2] = { 0,0 };
|
||||
#if (defined(FANCHECK) && defined(TACH_0) && (TACH_0 >-1))
|
||||
if ((fan_speed[0] == 0) && (current_temperature[0] > EXTRUDER_AUTO_FAN_TEMPERATURE)) fan_speed_errors[0]++;
|
||||
|
|
@ -508,6 +511,12 @@ void checkFanSpeed()
|
|||
else fan_speed_errors[1] = 0;
|
||||
#endif
|
||||
|
||||
// drop the fan_check_error flag when both fans are ok
|
||||
if( fan_speed_errors[0] == 0 && fan_speed_errors[1] == 0 && fan_check_error == EFCE_REPORTED){
|
||||
// we may even send some info to the LCD from here
|
||||
fan_check_error = EFCE_OK;
|
||||
}
|
||||
|
||||
if ((fan_speed_errors[0] > max_extruder_fan_errors) && fans_check_enabled) {
|
||||
fan_speed_errors[0] = 0;
|
||||
fanSpeedError(0); //extruder fan
|
||||
|
|
@ -516,47 +525,48 @@ void checkFanSpeed()
|
|||
fan_speed_errors[1] = 0;
|
||||
fanSpeedError(1); //print fan
|
||||
}
|
||||
|
||||
SERIAL_PROTOCOLLNRPGM(MSG_OK); //for octoprint
|
||||
}
|
||||
|
||||
//! Prints serialMsg to serial port, displays lcdMsg onto the LCD and beeps.
|
||||
//! Extracted from fanSpeedError to save some space.
|
||||
//! @param serialMsg pointer into PROGMEM, this text will be printed to the serial port
|
||||
//! @param lcdMsg pointer into PROGMEM, this text will be printed onto the LCD
|
||||
static void fanSpeedErrorBeep(const char *serialMsg, const char *lcdMsg){
|
||||
SERIAL_ECHOLNRPGM(serialMsg);
|
||||
if (get_message_level() == 0) {
|
||||
Sound_MakeCustom(200,0,true);
|
||||
LCD_ALERTMESSAGERPGM(lcdMsg);
|
||||
}
|
||||
}
|
||||
|
||||
void fanSpeedError(unsigned char _fan) {
|
||||
if (get_message_level() != 0 && isPrintPaused) return;
|
||||
//to ensure that target temp. is not set to zero in case taht we are resuming print
|
||||
if (card.sdprinting) {
|
||||
if (card.sdprinting || is_usb_printing) {
|
||||
if (heating_status != 0) {
|
||||
lcd_print_stop();
|
||||
}
|
||||
else {
|
||||
lcd_pause_print();
|
||||
fan_check_error = EFCE_DETECTED;
|
||||
}
|
||||
}
|
||||
else {
|
||||
SERIAL_PROTOCOLLNRPGM(MSG_OCTOPRINT_PAUSE); //for octoprint
|
||||
setTargetHotend0(0);
|
||||
SERIAL_ECHOLNPGM("// action:pause"); //for octoprint
|
||||
heating_status = 0;
|
||||
fan_check_error = EFCE_REPORTED;
|
||||
}
|
||||
switch (_fan) {
|
||||
case 0:
|
||||
SERIAL_ECHOLNPGM("Extruder fan speed is lower then expected");
|
||||
if (get_message_level() == 0) {
|
||||
if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)||(eSoundMode==e_SOUND_MODE_SILENT))
|
||||
WRITE(BEEPER, HIGH);
|
||||
delayMicroseconds(200);
|
||||
WRITE(BEEPER, LOW);
|
||||
delayMicroseconds(100);
|
||||
LCD_ALERTMESSAGEPGM("Err: EXTR. FAN ERROR");
|
||||
}
|
||||
case 0: // extracting the same code from case 0 and case 1 into a function saves 72B
|
||||
fanSpeedErrorBeep(PSTR("Extruder fan speed is lower than expected"), PSTR("Err: EXTR. FAN ERROR") );
|
||||
break;
|
||||
case 1:
|
||||
SERIAL_ECHOLNPGM("Print fan speed is lower then expected");
|
||||
if (get_message_level() == 0) {
|
||||
if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)||(eSoundMode==e_SOUND_MODE_SILENT))
|
||||
WRITE(BEEPER, HIGH);
|
||||
delayMicroseconds(200);
|
||||
WRITE(BEEPER, LOW);
|
||||
delayMicroseconds(100);
|
||||
LCD_ALERTMESSAGEPGM("Err: PRINT FAN ERROR");
|
||||
}
|
||||
fanSpeedErrorBeep(PSTR("Print fan speed is lower than expected"), PSTR("Err: PRINT FAN ERROR") );
|
||||
break;
|
||||
}
|
||||
SERIAL_PROTOCOLLNRPGM(MSG_OK);
|
||||
}
|
||||
#endif //(defined(TACH_0) && TACH_0 >-1) || (defined(TACH_1) && TACH_1 > -1)
|
||||
|
||||
|
|
@ -662,9 +672,9 @@ void manage_heater()
|
|||
iState_sum[e] += pid_error[e];
|
||||
iState_sum[e] = constrain(iState_sum[e], iState_sum_min[e], iState_sum_max[e]);
|
||||
iTerm[e] = cs.Ki * iState_sum[e];
|
||||
// K1 defined in Configuration.h in the PID settings
|
||||
#define K2 (1.0-K1)
|
||||
dTerm[e] = (cs.Kd * (pid_input - dState_last[e]))*K2 + (K1 * dTerm[e]); // e.g. digital filtration of derivative term changes
|
||||
// PID_K1 defined in Configuration.h in the PID settings
|
||||
#define K2 (1.0-PID_K1)
|
||||
dTerm[e] = (cs.Kd * (pid_input - dState_last[e]))*K2 + (PID_K1 * dTerm[e]); // e.g. digital filtration of derivative term changes
|
||||
pid_output = pTerm[e] + iTerm[e] - dTerm[e]; // subtraction due to "Derivative on Measurement" method (i.e. derivative of input instead derivative of error is used)
|
||||
if (pid_output > PID_MAX) {
|
||||
if (pid_error[e] > 0 ) iState_sum[e] -= pid_error[e]; // conditional un-integration
|
||||
|
|
@ -811,9 +821,9 @@ void manage_heater()
|
|||
temp_iState_bed = constrain(temp_iState_bed, temp_iState_min_bed, temp_iState_max_bed);
|
||||
iTerm_bed = cs.bedKi * temp_iState_bed;
|
||||
|
||||
//K1 defined in Configuration.h in the PID settings
|
||||
#define K2 (1.0-K1)
|
||||
dTerm_bed= (cs.bedKd * (pid_input - temp_dState_bed))*K2 + (K1 * dTerm_bed);
|
||||
//PID_K1 defined in Configuration.h in the PID settings
|
||||
#define K2 (1.0-PID_K1)
|
||||
dTerm_bed= (cs.bedKd * (pid_input - temp_dState_bed))*K2 + (PID_K1 * dTerm_bed);
|
||||
temp_dState_bed = pid_input;
|
||||
|
||||
pid_output = pTerm_bed + iTerm_bed - dTerm_bed;
|
||||
|
|
@ -889,9 +899,7 @@ void manage_heater()
|
|||
}
|
||||
#endif
|
||||
|
||||
#ifdef HOST_KEEPALIVE_FEATURE
|
||||
host_keepalive();
|
||||
#endif
|
||||
}
|
||||
|
||||
#define PGM_RD_W(x) (short)pgm_read_word(&x)
|
||||
|
|
@ -1031,6 +1039,7 @@ static void updateTemperaturesFromRawValues()
|
|||
}
|
||||
|
||||
#ifdef PINDA_THERMISTOR
|
||||
current_temperature_raw_pinda = (uint16_t)((uint32_t)current_temperature_raw_pinda * 3 + current_temperature_raw_pinda_fast) >> 2;
|
||||
current_temperature_pinda = analog2tempBed(current_temperature_raw_pinda);
|
||||
#endif
|
||||
|
||||
|
|
@ -1048,11 +1057,6 @@ static void updateTemperaturesFromRawValues()
|
|||
redundant_temperature = analog2temp(redundant_temperature_raw, 1);
|
||||
#endif
|
||||
|
||||
//Reset the watchdog after we know we have a temperature measurement.
|
||||
#ifdef WATCHDOG
|
||||
wdt_reset();
|
||||
#endif //WATCHDOG
|
||||
|
||||
CRITICAL_SECTION_START;
|
||||
temp_meas_ready = false;
|
||||
CRITICAL_SECTION_END;
|
||||
|
|
@ -1124,18 +1128,9 @@ void tp_init()
|
|||
|
||||
adc_init();
|
||||
|
||||
#ifdef SYSTEM_TIMER_2
|
||||
timer02_init();
|
||||
timer0_init();
|
||||
OCR2B = 128;
|
||||
TIMSK2 |= (1<<OCIE2B);
|
||||
#else //SYSTEM_TIMER_2
|
||||
// Use timer0 for temperature measurement
|
||||
// Interleave temperature interrupt with millies interrupt
|
||||
OCR0B = 128;
|
||||
TIMSK0 |= (1<<OCIE0B);
|
||||
#endif //SYSTEM_TIMER_2
|
||||
|
||||
|
||||
|
||||
// Wait for temperature measurement to settle
|
||||
_delay(250);
|
||||
|
|
@ -1242,6 +1237,7 @@ void setWatch()
|
|||
#if (defined (TEMP_RUNAWAY_BED_HYSTERESIS) && TEMP_RUNAWAY_BED_TIMEOUT > 0) || (defined (TEMP_RUNAWAY_EXTRUDER_HYSTERESIS) && TEMP_RUNAWAY_EXTRUDER_TIMEOUT > 0)
|
||||
void temp_runaway_check(int _heater_id, float _target_temperature, float _current_temperature, float _output, bool _isbed)
|
||||
{
|
||||
float __delta;
|
||||
float __hysteresis = 0;
|
||||
int __timeout = 0;
|
||||
bool temp_runaway_check_active = false;
|
||||
|
|
@ -1301,9 +1297,20 @@ void temp_runaway_check(int _heater_id, float _target_temperature, float _curren
|
|||
SERIAL_ECHOPGM(" T:");
|
||||
MYSERIAL.print(_current_temperature);
|
||||
SERIAL_ECHOPGM(" Tstart:");
|
||||
MYSERIAL.print(__preheat_start[_heater_id]);*/
|
||||
MYSERIAL.print(__preheat_start[_heater_id]);
|
||||
SERIAL_ECHOPGM(" delta:");
|
||||
MYSERIAL.print(_current_temperature-__preheat_start[_heater_id]);*/
|
||||
|
||||
if (_current_temperature - __preheat_start[_heater_id] < 2) {
|
||||
//-// if (_current_temperature - __preheat_start[_heater_id] < 2) {
|
||||
//-// if (_current_temperature - __preheat_start[_heater_id] < ((_isbed && (_current_temperature>105.0))?0.6:2.0)) {
|
||||
__delta=2.0;
|
||||
if(_isbed)
|
||||
{
|
||||
__delta=3.0;
|
||||
if(_current_temperature>90.0) __delta=2.0;
|
||||
if(_current_temperature>105.0) __delta=0.6;
|
||||
}
|
||||
if (_current_temperature - __preheat_start[_heater_id] < __delta) {
|
||||
__preheat_errors[_heater_id]++;
|
||||
/*SERIAL_ECHOPGM(" Preheat errors:");
|
||||
MYSERIAL.println(__preheat_errors[_heater_id]);*/
|
||||
|
|
@ -1313,7 +1320,7 @@ void temp_runaway_check(int _heater_id, float _target_temperature, float _curren
|
|||
__preheat_errors[_heater_id] = 0;
|
||||
}
|
||||
|
||||
if (__preheat_errors[_heater_id] > ((_isbed) ? 2 : 5))
|
||||
if (__preheat_errors[_heater_id] > ((_isbed) ? 3 : 5))
|
||||
{
|
||||
if (farm_mode) { prusa_statistics(0); }
|
||||
temp_runaway_stop(true, _isbed);
|
||||
|
|
@ -1324,10 +1331,15 @@ void temp_runaway_check(int _heater_id, float _target_temperature, float _curren
|
|||
}
|
||||
}
|
||||
|
||||
if (_current_temperature >= _target_temperature && temp_runaway_status[_heater_id] == TempRunaway_PREHEAT)
|
||||
//-// if (_current_temperature >= _target_temperature && temp_runaway_status[_heater_id] == TempRunaway_PREHEAT)
|
||||
if ((_current_temperature > (_target_temperature - __hysteresis)) && temp_runaway_status[_heater_id] == TempRunaway_PREHEAT)
|
||||
{
|
||||
/*SERIAL_ECHOPGM("Heater:");
|
||||
MYSERIAL.print(_heater_id);
|
||||
MYSERIAL.println(" ->tempRunaway");*/
|
||||
temp_runaway_status[_heater_id] = TempRunaway_ACTIVE;
|
||||
temp_runaway_check_active = false;
|
||||
temp_runaway_error_counter[_heater_id] = 0;
|
||||
}
|
||||
|
||||
if (_output > 0)
|
||||
|
|
@ -1383,13 +1395,9 @@ void temp_runaway_stop(bool isPreheat, bool isBed)
|
|||
disable_e2();
|
||||
manage_heater();
|
||||
lcd_update(0);
|
||||
if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)||(eSoundMode==e_SOUND_MODE_SILENT))
|
||||
WRITE(BEEPER, HIGH);
|
||||
delayMicroseconds(500);
|
||||
WRITE(BEEPER, LOW);
|
||||
delayMicroseconds(100);
|
||||
|
||||
if (isPreheat)
|
||||
Sound_MakeCustom(200,0,true);
|
||||
|
||||
if (isPreheat)
|
||||
{
|
||||
Stop();
|
||||
isBed ? LCD_ALERTMESSAGEPGM("BED PREHEAT ERROR") : LCD_ALERTMESSAGEPGM("PREHEAT ERROR");
|
||||
|
|
@ -1449,11 +1457,20 @@ void disable_heater()
|
|||
target_temperature_bed=0;
|
||||
soft_pwm_bed=0;
|
||||
timer02_set_pwm0(soft_pwm_bed << 1);
|
||||
#if defined(HEATER_BED_PIN) && HEATER_BED_PIN > -1
|
||||
WRITE(HEATER_BED_PIN,LOW);
|
||||
#if defined(HEATER_BED_PIN) && HEATER_BED_PIN > -1
|
||||
//WRITE(HEATER_BED_PIN,LOW);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
//! codes of alert messages for the LCD - it is shorter to compare an uin8_t
|
||||
//! than raw const char * of the messages themselves.
|
||||
//! Could be used for MAXTEMP situations too - after reaching MAXTEMP and turning off the heater automagically
|
||||
//! the heater/bed may cool down and a similar alert message like "MAXTERM fixed..." may be displayed.
|
||||
enum { LCDALERT_NONE = 0, LCDALERT_HEATERMINTEMP, LCDALERT_BEDMINTEMP, LCDALERT_MINTEMPFIXED, LCDALERT_PLEASERESTART };
|
||||
|
||||
//! remember the last alert message sent to the LCD
|
||||
//! to prevent flicker and improve speed
|
||||
uint8_t last_alert_sent_to_lcd = LCDALERT_NONE;
|
||||
|
||||
void max_temp_error(uint8_t e) {
|
||||
disable_heater();
|
||||
|
|
@ -1474,7 +1491,6 @@ void max_temp_error(uint8_t e) {
|
|||
SET_OUTPUT(BEEPER);
|
||||
WRITE(FAN_PIN, 1);
|
||||
WRITE(EXTRUDER_0_AUTO_FAN_PIN, 1);
|
||||
if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE)||(eSoundMode==e_SOUND_MODE_SILENT))
|
||||
WRITE(BEEPER, 1);
|
||||
// fanSpeed will consumed by the check_axes_activity() routine.
|
||||
fanSpeed=255;
|
||||
|
|
@ -1487,13 +1503,23 @@ void min_temp_error(uint8_t e) {
|
|||
#endif
|
||||
//if (current_temperature_ambient < MINTEMP_MINAMBIENT) return;
|
||||
disable_heater();
|
||||
static const char err[] PROGMEM = "Err: MINTEMP";
|
||||
if(IsStopped() == false) {
|
||||
SERIAL_ERROR_START;
|
||||
SERIAL_ERRORLN((int)e);
|
||||
SERIAL_ERRORLNPGM(": Extruder switched off. MINTEMP triggered !");
|
||||
LCD_ALERTMESSAGEPGM("Err: MINTEMP");
|
||||
lcd_setalertstatuspgm(err);
|
||||
last_alert_sent_to_lcd = LCDALERT_HEATERMINTEMP;
|
||||
} else if( last_alert_sent_to_lcd != LCDALERT_HEATERMINTEMP ){ // only update, if the lcd message is to be changed (i.e. not the same as last time)
|
||||
// we are already stopped due to some error, only update the status message without flickering
|
||||
lcd_updatestatuspgm(err);
|
||||
last_alert_sent_to_lcd = LCDALERT_HEATERMINTEMP;
|
||||
}
|
||||
#ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
|
||||
// if( last_alert_sent_to_lcd != LCDALERT_HEATERMINTEMP ){
|
||||
// last_alert_sent_to_lcd = LCDALERT_HEATERMINTEMP;
|
||||
// lcd_print_stop();
|
||||
// }
|
||||
Stop();
|
||||
#endif
|
||||
if (farm_mode) { prusa_statistics(92); }
|
||||
|
|
@ -1502,7 +1528,7 @@ void min_temp_error(uint8_t e) {
|
|||
|
||||
void bed_max_temp_error(void) {
|
||||
#if HEATER_BED_PIN > -1
|
||||
WRITE(HEATER_BED_PIN, 0);
|
||||
//WRITE(HEATER_BED_PIN, 0);
|
||||
#endif
|
||||
if(IsStopped() == false) {
|
||||
SERIAL_ERROR_START;
|
||||
|
|
@ -1521,12 +1547,18 @@ void bed_min_temp_error(void) {
|
|||
#endif
|
||||
//if (current_temperature_ambient < MINTEMP_MINAMBIENT) return;
|
||||
#if HEATER_BED_PIN > -1
|
||||
WRITE(HEATER_BED_PIN, 0);
|
||||
//WRITE(HEATER_BED_PIN, 0);
|
||||
#endif
|
||||
static const char err[] PROGMEM = "Err: MINTEMP BED";
|
||||
if(IsStopped() == false) {
|
||||
SERIAL_ERROR_START;
|
||||
SERIAL_ERRORLNPGM("Temperature heated bed switched off. MINTEMP triggered !");
|
||||
LCD_ALERTMESSAGEPGM("Err: MINTEMP BED");
|
||||
lcd_setalertstatuspgm(err);
|
||||
last_alert_sent_to_lcd = LCDALERT_BEDMINTEMP;
|
||||
} else if( last_alert_sent_to_lcd != LCDALERT_BEDMINTEMP ){ // only update, if the lcd message is to be changed (i.e. not the same as last time)
|
||||
// we are already stopped due to some error, only update the status message without flickering
|
||||
lcd_updatestatuspgm(err);
|
||||
last_alert_sent_to_lcd = LCDALERT_BEDMINTEMP;
|
||||
}
|
||||
#ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
|
||||
Stop();
|
||||
|
|
@ -1596,7 +1628,7 @@ extern "C" {
|
|||
void adc_ready(void) //callback from adc when sampling finished
|
||||
{
|
||||
current_temperature_raw[0] = adc_values[ADC_PIN_IDX(TEMP_0_PIN)]; //heater
|
||||
current_temperature_raw_pinda = adc_values[ADC_PIN_IDX(TEMP_PINDA_PIN)];
|
||||
current_temperature_raw_pinda_fast = adc_values[ADC_PIN_IDX(TEMP_PINDA_PIN)];
|
||||
current_temperature_bed_raw = adc_values[ADC_PIN_IDX(TEMP_BED_PIN)];
|
||||
#ifdef VOLT_PWR_PIN
|
||||
current_voltage_raw_pwr = adc_values[ADC_PIN_IDX(VOLT_PWR_PIN)];
|
||||
|
|
@ -1612,7 +1644,6 @@ void adc_ready(void) //callback from adc when sampling finished
|
|||
|
||||
} // extern "C"
|
||||
|
||||
|
||||
// Timer2 (originaly timer0) is shared with millies
|
||||
#ifdef SYSTEM_TIMER_2
|
||||
ISR(TIMER2_COMPB_vect)
|
||||
|
|
@ -1628,8 +1659,8 @@ ISR(TIMER0_COMPB_vect)
|
|||
if (!temp_meas_ready) adc_cycle();
|
||||
lcd_buttons_update();
|
||||
|
||||
static unsigned char pwm_count = (1 << SOFT_PWM_SCALE);
|
||||
static unsigned char soft_pwm_0;
|
||||
static uint8_t pwm_count = (1 << SOFT_PWM_SCALE);
|
||||
static uint8_t soft_pwm_0;
|
||||
#ifdef SLOW_PWM_HEATERS
|
||||
static unsigned char slow_pwm_count = 0;
|
||||
static unsigned char state_heater_0 = 0;
|
||||
|
|
@ -1650,7 +1681,7 @@ ISR(TIMER0_COMPB_vect)
|
|||
#endif
|
||||
#endif
|
||||
#if HEATER_BED_PIN > -1
|
||||
static unsigned char soft_pwm_b;
|
||||
// @@DR static unsigned char soft_pwm_b;
|
||||
#ifdef SLOW_PWM_HEATERS
|
||||
static unsigned char state_heater_b = 0;
|
||||
static unsigned char state_timer_heater_b = 0;
|
||||
|
|
@ -1682,14 +1713,28 @@ ISR(TIMER0_COMPB_vect)
|
|||
#if EXTRUDERS > 2
|
||||
soft_pwm_2 = soft_pwm[2];
|
||||
if(soft_pwm_2 > 0) WRITE(HEATER_2_PIN,1); else WRITE(HEATER_2_PIN,0);
|
||||
#endif
|
||||
#if defined(HEATER_BED_PIN) && HEATER_BED_PIN > -1
|
||||
soft_pwm_b = soft_pwm_bed;
|
||||
#ifndef SYSTEM_TIMER_2
|
||||
if(soft_pwm_b > 0) WRITE(HEATER_BED_PIN,1); else WRITE(HEATER_BED_PIN,0);
|
||||
#endif //SYSTEM_TIMER_2
|
||||
#endif
|
||||
}
|
||||
#if defined(HEATER_BED_PIN) && HEATER_BED_PIN > -1
|
||||
|
||||
#if 0 // @@DR vypnuto pro hw pwm bedu
|
||||
// tuhle prasarnu bude potreba poustet ve stanovenych intervalech, jinak nemam moc sanci zareagovat
|
||||
// teoreticky by se tato cast uz vubec nemusela poustet
|
||||
if ((pwm_count & ((1 << HEATER_BED_SOFT_PWM_BITS) - 1)) == 0)
|
||||
{
|
||||
soft_pwm_b = soft_pwm_bed >> (7 - HEATER_BED_SOFT_PWM_BITS);
|
||||
# ifndef SYSTEM_TIMER_2
|
||||
// tady budu krokovat pomalou frekvenci na automatu - tohle je rizeni spinani a rozepinani
|
||||
// jako ridici frekvenci mam 2khz, jako vystupni frekvenci mam 30hz
|
||||
// 2kHz jsou ovsem ve slysitelnem pasmu, mozna bude potreba jit s frekvenci nahoru (a tomu taky prizpusobit ostatni veci)
|
||||
// Teoreticky bych mohl stahnout OCR0B citac na 6, cimz bych se dostal nekam ke 40khz a tady potom honit PWM rychleji nebo i pomaleji
|
||||
// to nicemu nevadi. Soft PWM scale by se 20x zvetsilo (no dobre, 16x), cimz by se to posunulo k puvodnimu 30Hz PWM
|
||||
//if(soft_pwm_b > 0) WRITE(HEATER_BED_PIN,1); else WRITE(HEATER_BED_PIN,0);
|
||||
# endif //SYSTEM_TIMER_2
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef FAN_SOFT_PWM
|
||||
if ((pwm_count & ((1 << FAN_SOFT_PWM_BITS) - 1)) == 0)
|
||||
{
|
||||
|
|
@ -1711,8 +1756,14 @@ ISR(TIMER0_COMPB_vect)
|
|||
#if EXTRUDERS > 2
|
||||
if(soft_pwm_2 < pwm_count) WRITE(HEATER_2_PIN,0);
|
||||
#endif
|
||||
|
||||
#if 0 // @@DR
|
||||
#if defined(HEATER_BED_PIN) && HEATER_BED_PIN > -1
|
||||
if(soft_pwm_b < pwm_count) WRITE(HEATER_BED_PIN,0);
|
||||
if (soft_pwm_b < (pwm_count & ((1 << HEATER_BED_SOFT_PWM_BITS) - 1))){
|
||||
//WRITE(HEATER_BED_PIN,0);
|
||||
}
|
||||
//WRITE(HEATER_BED_PIN, pwm_count & 1 );
|
||||
#endif
|
||||
#endif
|
||||
#ifdef FAN_SOFT_PWM
|
||||
if (soft_pwm_fan < (pwm_count & ((1 << FAN_SOFT_PWM_BITS) - 1))) WRITE(FAN_PIN,0);
|
||||
|
|
@ -1997,6 +2048,58 @@ void check_max_temp()
|
|||
#endif
|
||||
|
||||
}
|
||||
//! number of repeating the same state with consecutive step() calls
|
||||
//! used to slow down text switching
|
||||
struct alert_automaton_mintemp {
|
||||
private:
|
||||
enum { ALERT_AUTOMATON_SPEED_DIV = 5 };
|
||||
enum class States : uint8_t { Init = 0, TempAboveMintemp, ShowPleaseRestart, ShowMintemp };
|
||||
States state = States::Init;
|
||||
uint8_t repeat = ALERT_AUTOMATON_SPEED_DIV;
|
||||
|
||||
void substep(States next_state){
|
||||
if( repeat == 0 ){
|
||||
state = next_state; // advance to the next state
|
||||
repeat = ALERT_AUTOMATON_SPEED_DIV; // and prepare repeating for it too
|
||||
} else {
|
||||
--repeat;
|
||||
}
|
||||
}
|
||||
public:
|
||||
//! brief state automaton step routine
|
||||
//! @param current_temp current hotend/bed temperature (for computing simple hysteresis)
|
||||
//! @param mintemp minimal temperature including hysteresis to check current_temp against
|
||||
void step(float current_temp, float mintemp){
|
||||
static const char m2[] PROGMEM = "MINTEMP fixed";
|
||||
static const char m1[] PROGMEM = "Please restart";
|
||||
switch(state){
|
||||
case States::Init: // initial state - check hysteresis
|
||||
if( current_temp > mintemp ){
|
||||
state = States::TempAboveMintemp;
|
||||
}
|
||||
// otherwise keep the Err MINTEMP alert message on the display,
|
||||
// i.e. do not transfer to state 1
|
||||
break;
|
||||
case States::TempAboveMintemp: // the temperature has risen above the hysteresis check
|
||||
lcd_setalertstatuspgm(m2);
|
||||
substep(States::ShowMintemp);
|
||||
last_alert_sent_to_lcd = LCDALERT_MINTEMPFIXED;
|
||||
break;
|
||||
case States::ShowPleaseRestart: // displaying "Please restart"
|
||||
lcd_updatestatuspgm(m1);
|
||||
substep(States::ShowMintemp);
|
||||
last_alert_sent_to_lcd = LCDALERT_PLEASERESTART;
|
||||
break;
|
||||
case States::ShowMintemp: // displaying "MINTEMP fixed"
|
||||
lcd_updatestatuspgm(m2);
|
||||
substep(States::ShowPleaseRestart);
|
||||
last_alert_sent_to_lcd = LCDALERT_MINTEMPFIXED;
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
static alert_automaton_mintemp alert_automaton_hotend, alert_automaton_bed;
|
||||
|
||||
void check_min_temp_heater0()
|
||||
{
|
||||
|
|
@ -2006,7 +2109,17 @@ void check_min_temp_heater0()
|
|||
#else
|
||||
if (current_temperature_raw[0] <= minttemp_raw[0]) {
|
||||
#endif
|
||||
menu_set_serious_error(SERIOUS_ERR_MINTEMP_HEATER);
|
||||
min_temp_error(0);
|
||||
} else if( menu_is_serious_error(SERIOUS_ERR_MINTEMP_HEATER) ) {
|
||||
// no recovery, just force the user to restart the printer
|
||||
// which is a safer variant than just continuing printing
|
||||
// The automaton also checks for hysteresis - the temperature must have reached a few degrees above the MINTEMP, before
|
||||
// we shall signalize, that MINTEMP has been fixed
|
||||
// Code notice: normally the alert_automaton instance would have been placed here
|
||||
// as static alert_automaton_mintemp alert_automaton_hotend, but
|
||||
// due to stupid compiler that takes 16 more bytes.
|
||||
alert_automaton_hotend.step(current_temperature[0], minttemp[0] + TEMP_HYSTERESIS);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2017,7 +2130,12 @@ void check_min_temp_bed()
|
|||
#else
|
||||
if (current_temperature_bed_raw <= bed_minttemp_raw) {
|
||||
#endif
|
||||
menu_set_serious_error(SERIOUS_ERR_MINTEMP_BED);
|
||||
bed_min_temp_error();
|
||||
} else if( menu_is_serious_error(SERIOUS_ERR_MINTEMP_BED) ){
|
||||
// no recovery, just force the user to restart the printer
|
||||
// which is a safer variant than just continuing printing
|
||||
alert_automaton_bed.step(current_temperature_bed, BED_MINTEMP + TEMP_HYSTERESIS);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ extern int target_temperature_bed;
|
|||
extern float current_temperature_bed;
|
||||
|
||||
#ifdef PINDA_THERMISTOR
|
||||
//extern int current_temperature_raw_pinda;
|
||||
extern uint16_t current_temperature_raw_pinda;
|
||||
extern float current_temperature_pinda;
|
||||
#endif
|
||||
|
||||
|
|
@ -122,6 +122,7 @@ inline void babystepsTodoZsubtract(int n)
|
|||
//inline so that there is no performance decrease.
|
||||
//deg=degreeCelsius
|
||||
|
||||
// Doesn't save FLASH when FORCE_INLINE removed.
|
||||
FORCE_INLINE float degHotend(uint8_t extruder) {
|
||||
return current_temperature[extruder];
|
||||
};
|
||||
|
|
@ -140,6 +141,7 @@ FORCE_INLINE float degBed() {
|
|||
return current_temperature_bed;
|
||||
};
|
||||
|
||||
// Doesn't save FLASH when FORCE_INLINE removed.
|
||||
FORCE_INLINE float degTargetHotend(uint8_t extruder) {
|
||||
return target_temperature[extruder];
|
||||
};
|
||||
|
|
@ -148,11 +150,13 @@ FORCE_INLINE float degTargetBed() {
|
|||
return target_temperature_bed;
|
||||
};
|
||||
|
||||
// Doesn't save FLASH when FORCE_INLINE removed.
|
||||
FORCE_INLINE void setTargetHotend(const float &celsius, uint8_t extruder) {
|
||||
target_temperature[extruder] = celsius;
|
||||
resetPID(extruder);
|
||||
};
|
||||
|
||||
// Doesn't save FLASH when not inlined.
|
||||
static inline void setTargetHotendSafe(const float &celsius, uint8_t extruder)
|
||||
{
|
||||
if (extruder<EXTRUDERS) {
|
||||
|
|
@ -161,6 +165,7 @@ static inline void setTargetHotendSafe(const float &celsius, uint8_t extruder)
|
|||
}
|
||||
}
|
||||
|
||||
// Doesn't save FLASH when not inlined.
|
||||
static inline void setAllTargetHotends(const float &celsius)
|
||||
{
|
||||
for(int i=0;i<EXTRUDERS;i++) setTargetHotend(celsius,i);
|
||||
|
|
@ -238,6 +243,13 @@ void checkExtruderAutoFans();
|
|||
|
||||
#if (defined(FANCHECK) && defined(TACH_0) && (TACH_0 > -1))
|
||||
|
||||
enum {
|
||||
EFCE_OK = 0, //!< normal operation, both fans are ok
|
||||
EFCE_DETECTED, //!< fan error detected, but not reported yet
|
||||
EFCE_REPORTED //!< fan error detected and reported to LCD and serial
|
||||
};
|
||||
extern volatile uint8_t fan_check_error;
|
||||
|
||||
void countFanSpeed();
|
||||
void checkFanSpeed();
|
||||
void fanSpeedError(unsigned char _fan);
|
||||
|
|
|
|||
|
|
@ -2,50 +2,34 @@
|
|||
// use atmega timer2 as main system timer instead of timer0
|
||||
// timer0 is used for fast pwm (OC0B output)
|
||||
// original OVF handler is disabled
|
||||
|
||||
#include "system_timer.h"
|
||||
|
||||
#ifdef SYSTEM_TIMER_2
|
||||
|
||||
#include <avr/io.h>
|
||||
#include <avr/interrupt.h>
|
||||
#include "Arduino.h"
|
||||
#include "io_atmega2560.h"
|
||||
|
||||
#define BEEPER 84
|
||||
|
||||
uint8_t timer02_pwm0 = 0;
|
||||
|
||||
void timer02_set_pwm0(uint8_t pwm0)
|
||||
{
|
||||
if (timer02_pwm0 == pwm0) return;
|
||||
if (pwm0)
|
||||
{
|
||||
TCCR0A |= (2 << COM0B0);
|
||||
OCR0B = pwm0 - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
TCCR0A &= ~(2 << COM0B0);
|
||||
OCR0B = 0;
|
||||
}
|
||||
timer02_pwm0 = pwm0;
|
||||
}
|
||||
|
||||
void timer02_init(void)
|
||||
void timer0_init(void)
|
||||
{
|
||||
//save sreg
|
||||
uint8_t _sreg = SREG;
|
||||
//disable interrupts for sure
|
||||
cli();
|
||||
//mask timer0 interrupts - disable all
|
||||
TIMSK0 &= ~(1<<TOIE0);
|
||||
TIMSK0 &= ~(1<<OCIE0A);
|
||||
TIMSK0 &= ~(1<<OCIE0B);
|
||||
//setup timer0
|
||||
TCCR0A = 0x00; //COM_A-B=00, WGM_0-1=00
|
||||
TCCR0B = (1 << CS00); //WGM_2=0, CS_0-2=011
|
||||
//switch timer0 to fast pwm mode
|
||||
TCCR0A |= (3 << WGM00); //WGM_0-1=11
|
||||
//set OCR0B register to zero
|
||||
OCR0B = 0;
|
||||
//disable OCR0B output (will be enabled in timer02_set_pwm0)
|
||||
TCCR0A &= ~(2 << COM0B0);
|
||||
|
||||
TCNT0 = 0;
|
||||
// Fast PWM duty (0-255).
|
||||
// Due to invert mode (following rows) the duty is set to 255, which means zero all the time (bed not heating)
|
||||
OCR0B = 255;
|
||||
// Set fast PWM mode and inverting mode.
|
||||
TCCR0A = (1 << WGM01) | (1 << WGM00) | (1 << COM0B1) | (1 << COM0B0);
|
||||
TCCR0B = (1 << CS00); // no clock prescaling
|
||||
TIMSK0 |= (1 << TOIE0); // enable timer overflow interrupt
|
||||
|
||||
// Everything, that used to be on timer0 was moved to timer2 (delay, beeping, millis etc.)
|
||||
//setup timer2
|
||||
TCCR2A = 0x00; //COM_A-B=00, WGM_0-1=00
|
||||
TCCR2B = (4 << CS20); //WGM_2=0, CS_0-2=011
|
||||
|
|
@ -61,11 +45,9 @@ void timer02_init(void)
|
|||
}
|
||||
|
||||
|
||||
//following code is OVF handler for timer 2
|
||||
//it is copy-paste from wiring.c and modified for timer2
|
||||
//variables timer0_overflow_count and timer0_millis are declared in wiring.c
|
||||
|
||||
|
||||
// The following code is OVF handler for timer 2
|
||||
// it was copy-pasted from wiring.c and modified for timer2
|
||||
// variables timer0_overflow_count and timer0_millis are declared in wiring.c
|
||||
|
||||
// the prescaler is set so that timer0 ticks every 64 clock cycles, and the
|
||||
// the overflow handler is called every 256 ticks.
|
||||
|
|
@ -80,9 +62,6 @@ void timer02_init(void)
|
|||
#define FRACT_INC ((MICROSECONDS_PER_TIMER0_OVERFLOW % 1000) >> 3)
|
||||
#define FRACT_MAX (1000 >> 3)
|
||||
|
||||
//extern volatile unsigned long timer0_overflow_count;
|
||||
//extern volatile unsigned long timer0_millis;
|
||||
//unsigned char timer0_fract = 0;
|
||||
volatile unsigned long timer2_overflow_count;
|
||||
volatile unsigned long timer2_millis;
|
||||
unsigned char timer2_fract = 0;
|
||||
|
|
@ -157,12 +136,14 @@ void delay2(unsigned long ms)
|
|||
}
|
||||
}
|
||||
|
||||
void tone2(uint8_t _pin, unsigned int frequency/*, unsigned long duration*/)
|
||||
void tone2(__attribute__((unused)) uint8_t _pin, __attribute__((unused)) unsigned int frequency/*, unsigned long duration*/)
|
||||
{
|
||||
PIN_SET(BEEPER);
|
||||
}
|
||||
|
||||
void noTone2(uint8_t _pin)
|
||||
void noTone2(__attribute__((unused)) uint8_t _pin)
|
||||
{
|
||||
PIN_CLR(BEEPER);
|
||||
}
|
||||
|
||||
#endif //SYSTEM_TIMER_2
|
||||
|
|
|
|||
|
|
@ -11,24 +11,25 @@
|
|||
extern "C" {
|
||||
#endif //defined(__cplusplus)
|
||||
|
||||
///! Initializes TIMER0 for fast PWM mode-driven bed heating
|
||||
extern void timer0_init(void);
|
||||
|
||||
extern uint8_t timer02_pwm0;
|
||||
|
||||
extern void timer02_set_pwm0(uint8_t pwm0);
|
||||
|
||||
extern void timer02_init(void);
|
||||
|
||||
///! Reimplemented original millis() using timer2
|
||||
extern unsigned long millis2(void);
|
||||
|
||||
///! Reimplemented original micros() using timer2
|
||||
extern unsigned long micros2(void);
|
||||
|
||||
///! Reimplemented original delay() using timer2
|
||||
extern void delay2(unsigned long ms);
|
||||
|
||||
///! Reimplemented original tone() using timer2
|
||||
///! Does not perform any PWM tone generation, it just sets the beeper pin to 1
|
||||
extern void tone2(uint8_t _pin, unsigned int frequency/*, unsigned long duration*/);
|
||||
|
||||
///! Turn off beeping - set beeper pin to 0
|
||||
extern void noTone2(uint8_t _pin);
|
||||
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif //defined(__cplusplus)
|
||||
|
|
|
|||
|
|
@ -142,8 +142,11 @@ uint16_t __tcoolthrs(uint8_t axis)
|
|||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef PSU_Delta
|
||||
void tmc2130_init(bool bSupressFlag)
|
||||
#else
|
||||
void tmc2130_init()
|
||||
#endif
|
||||
{
|
||||
// DBG(_n("tmc2130_init(), mode=%S\n"), tmc2130_mode?_n("STEALTH"):_n("NORMAL"));
|
||||
WRITE(X_TMC2130_CS, HIGH);
|
||||
|
|
@ -158,7 +161,7 @@ void tmc2130_init()
|
|||
SET_INPUT(Y_TMC2130_DIAG);
|
||||
SET_INPUT(Z_TMC2130_DIAG);
|
||||
SET_INPUT(E0_TMC2130_DIAG);
|
||||
for (int axis = 0; axis < 2; axis++) // X Y axes
|
||||
for (uint_least8_t axis = 0; axis < 2; axis++) // X Y axes
|
||||
{
|
||||
tmc2130_setup_chopper(axis, tmc2130_mres[axis], tmc2130_current_h[axis], tmc2130_current_r[axis]);
|
||||
tmc2130_wr(axis, TMC2130_REG_TPOWERDOWN, 0x00000000);
|
||||
|
|
@ -169,7 +172,7 @@ void tmc2130_init()
|
|||
tmc2130_wr_TPWMTHRS(axis, TMC2130_TPWMTHRS);
|
||||
//tmc2130_wr_THIGH(axis, TMC2130_THIGH);
|
||||
}
|
||||
for (int axis = 2; axis < 3; axis++) // Z axis
|
||||
for (uint_least8_t axis = 2; axis < 3; axis++) // Z axis
|
||||
{
|
||||
tmc2130_setup_chopper(axis, tmc2130_mres[axis], tmc2130_current_h[axis], tmc2130_current_r[axis]);
|
||||
tmc2130_wr(axis, TMC2130_REG_TPOWERDOWN, 0x00000000);
|
||||
|
|
@ -183,7 +186,7 @@ void tmc2130_init()
|
|||
tmc2130_wr_TPWMTHRS(axis, TMC2130_TPWMTHRS);
|
||||
#endif //TMC2130_STEALTH_Z
|
||||
}
|
||||
for (int axis = 3; axis < 4; axis++) // E axis
|
||||
for (uint_least8_t axis = 3; axis < 4; axis++) // E axis
|
||||
{
|
||||
tmc2130_setup_chopper(axis, tmc2130_mres[axis], tmc2130_current_h[axis], tmc2130_current_r[axis]);
|
||||
tmc2130_wr(axis, TMC2130_REG_TPOWERDOWN, 0x00000000);
|
||||
|
|
@ -216,6 +219,11 @@ void tmc2130_init()
|
|||
tmc2130_set_wave(E_AXIS, 247, tmc2130_wave_fac[E_AXIS]);
|
||||
#endif //TMC2130_LINEARITY_CORRECTION
|
||||
|
||||
#ifdef PSU_Delta
|
||||
if(!bSupressFlag)
|
||||
check_force_z();
|
||||
#endif // PSU_Delta
|
||||
|
||||
}
|
||||
|
||||
uint8_t tmc2130_sample_diag()
|
||||
|
|
@ -383,7 +391,7 @@ void tmc2130_check_overtemp()
|
|||
static uint32_t checktime = 0;
|
||||
if (_millis() - checktime > 1000 )
|
||||
{
|
||||
for (int i = 0; i < 4; i++)
|
||||
for (uint_least8_t i = 0; i < 4; i++)
|
||||
{
|
||||
uint32_t drv_status = 0;
|
||||
skip_debug_msg = true;
|
||||
|
|
@ -392,7 +400,7 @@ void tmc2130_check_overtemp()
|
|||
{ // BIT 26 - over temp prewarning ~120C (+-20C)
|
||||
SERIAL_ERRORRPGM(MSG_TMC_OVERTEMP);
|
||||
SERIAL_ECHOLN(i);
|
||||
for (int j = 0; j < 4; j++)
|
||||
for (uint_least8_t j = 0; j < 4; j++)
|
||||
tmc2130_wr(j, TMC2130_REG_CHOPCONF, 0x00010000);
|
||||
kill(MSG_TMC_OVERTEMP);
|
||||
}
|
||||
|
|
@ -715,6 +723,9 @@ uint8_t tmc2130_get_pwr(uint8_t axis)
|
|||
return 0;
|
||||
}
|
||||
|
||||
//! @par pwr motor power
|
||||
//! * 0 disabled
|
||||
//! * non-zero enabled
|
||||
void tmc2130_set_pwr(uint8_t axis, uint8_t pwr)
|
||||
{
|
||||
switch (axis)
|
||||
|
|
|
|||
|
|
@ -51,7 +51,11 @@ typedef struct
|
|||
extern tmc2130_chopper_config_t tmc2130_chopper_config[4];
|
||||
|
||||
//initialize tmc2130
|
||||
#ifdef PSU_Delta
|
||||
extern void tmc2130_init(bool bSupressFlag=false);
|
||||
#else
|
||||
extern void tmc2130_init();
|
||||
#endif
|
||||
//check diag pins (called from stepper isr)
|
||||
extern void tmc2130_st_isr();
|
||||
//update stall guard (called from st_synchronize inside the loop)
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -7,9 +7,6 @@
|
|||
#include "menu.h"
|
||||
#include "mesh_bed_calibration.h"
|
||||
|
||||
extern int lcd_puts_P(const char* str);
|
||||
extern int lcd_printf_P(const char* format, ...);
|
||||
|
||||
extern void menu_lcd_longpress_func(void);
|
||||
extern void menu_lcd_charsetup_func(void);
|
||||
extern void menu_lcd_lcdupdate_func(void);
|
||||
|
|
@ -18,7 +15,16 @@ extern void menu_lcd_lcdupdate_func(void);
|
|||
void ultralcd_init();
|
||||
void lcd_setstatus(const char* message);
|
||||
void lcd_setstatuspgm(const char* message);
|
||||
//! return to the main status screen and display the alert message
|
||||
//! Beware - it has sideeffects:
|
||||
//! - always returns the display to the main status screen
|
||||
//! - always makes lcd_reset (which is slow and causes flicker)
|
||||
//! - does not update the message if there is already one (i.e. lcd_status_message_level > 0)
|
||||
void lcd_setalertstatuspgm(const char* message);
|
||||
//! only update the alert message on the main status screen
|
||||
//! has no sideeffects, may be called multiple times
|
||||
void lcd_updatestatuspgm(const char *message);
|
||||
|
||||
void lcd_reset_alert_level();
|
||||
uint8_t get_message_level();
|
||||
void lcd_adjust_z();
|
||||
|
|
@ -45,6 +51,9 @@ extern bool lcd_selftest();
|
|||
|
||||
void lcd_menu_statistics();
|
||||
|
||||
void lcd_menu_extruder_info(); // NOT static due to using inside "Marlin_main" module ("manage_inactivity()")
|
||||
void lcd_menu_show_sensors_state(); // NOT static due to using inside "Marlin_main" module ("manage_inactivity()")
|
||||
|
||||
extern const char* lcd_display_message_fullscreen_P(const char *msg, uint8_t &nlines);
|
||||
extern const char* lcd_display_message_fullscreen_P(const char *msg);
|
||||
|
||||
|
|
@ -77,31 +86,37 @@ extern void lcd_diag_show_end_stops();
|
|||
|
||||
|
||||
// To be used in lcd_commands_type.
|
||||
#define LCD_COMMAND_IDLE 0
|
||||
#define LCD_COMMAND_LOAD_FILAMENT 1
|
||||
#define LCD_COMMAND_STOP_PRINT 2
|
||||
#define LCD_COMMAND_FARM_MODE_CONFIRM 4
|
||||
#define LCD_COMMAND_LONG_PAUSE 5
|
||||
#define LCD_COMMAND_PID_EXTRUDER 7
|
||||
#define LCD_COMMAND_V2_CAL 8
|
||||
enum class LcdCommands : uint_least8_t
|
||||
{
|
||||
Idle,
|
||||
LoadFilament,
|
||||
StopPrint,
|
||||
FarmModeConfirm,
|
||||
LongPause,
|
||||
PidExtruder,
|
||||
Layer1Cal,
|
||||
};
|
||||
|
||||
extern int lcd_commands_type;
|
||||
extern LcdCommands lcd_commands_type;
|
||||
extern int8_t FSensorStateMenu;
|
||||
|
||||
#define CUSTOM_MSG_TYPE_STATUS 0 // status message from lcd_status_message variable
|
||||
#define CUSTOM_MSG_TYPE_MESHBL 1 // Mesh bed leveling in progress
|
||||
#define CUSTOM_MSG_TYPE_F_LOAD 2 // Loading filament in progress
|
||||
#define CUSTOM_MSG_TYPE_PIDCAL 3 // PID tuning in progress
|
||||
#define CUSTOM_MSG_TYPE_TEMCAL 4 // PINDA temp calibration
|
||||
#define CUSTOM_MSG_TYPE_TEMPRE 5 // Temp compensation preheat
|
||||
enum class CustomMsg : uint_least8_t
|
||||
{
|
||||
Status, //!< status message from lcd_status_message variable
|
||||
MeshBedLeveling, //!< Mesh bed leveling in progress
|
||||
FilamentLoading, //!< Loading filament in progress
|
||||
PidCal, //!< PID tuning in progress
|
||||
TempCal, //!< PINDA temperature calibration
|
||||
TempCompPreheat, //!< Temperature compensation preheat
|
||||
};
|
||||
|
||||
extern unsigned int custom_message_type;
|
||||
extern CustomMsg custom_message_type;
|
||||
extern unsigned int custom_message_state;
|
||||
|
||||
extern uint8_t farm_mode;
|
||||
extern int farm_no;
|
||||
extern int farm_timer;
|
||||
extern int farm_status;
|
||||
extern uint8_t farm_status;
|
||||
|
||||
#ifdef TMC2130
|
||||
#define SILENT_MODE_NORMAL 0
|
||||
|
|
@ -115,6 +130,7 @@ extern int farm_status;
|
|||
#endif
|
||||
|
||||
extern int8_t SilentModeMenu;
|
||||
extern uint8_t SilentModeMenu_MMU;
|
||||
|
||||
extern bool cancel_heatup;
|
||||
extern bool isPrintPaused;
|
||||
|
|
@ -124,8 +140,11 @@ void lcd_ignore_click(bool b=true);
|
|||
void lcd_commands();
|
||||
|
||||
|
||||
extern bool bSettings; // flag (i.e. 'fake parameter') for 'lcd_hw_setup_menu()' function
|
||||
void lcd_hw_setup_menu(void); // NOT static due to using inside "util" module ("nozzle_diameter_check()")
|
||||
|
||||
|
||||
void change_extr(int extr);
|
||||
void extr_adj(int extruder);
|
||||
|
||||
#ifdef SNMM
|
||||
void extr_unload_all();
|
||||
|
|
@ -133,11 +152,24 @@ void extr_unload_used();
|
|||
#endif //SNMM
|
||||
void extr_unload();
|
||||
|
||||
enum class FilamentAction : uint_least8_t
|
||||
{
|
||||
None, //!< 'none' state is used as flag for (filament) autoLoad (i.e. opposite for 'autoLoad' state)
|
||||
Load,
|
||||
AutoLoad,
|
||||
UnLoad,
|
||||
MmuLoad,
|
||||
MmuUnLoad,
|
||||
MmuEject,
|
||||
MmuCut,
|
||||
};
|
||||
|
||||
extern FilamentAction eFilamentAction;
|
||||
extern bool bFilamentFirstRun;
|
||||
extern bool bFilamentLoad;
|
||||
extern bool bFilamentPreheatState;
|
||||
extern bool bFilamentAutoloadFlag;
|
||||
void mFilamentItem(uint16_t nTemp);
|
||||
extern bool bFilamentAction;
|
||||
void mFilamentItem(uint16_t nTemp,uint16_t nTempBed);
|
||||
void mFilamentItemForce();
|
||||
void mFilamentMenu();
|
||||
void unload_filament();
|
||||
|
||||
|
|
|
|||
|
|
@ -229,7 +229,7 @@ inline bool parse_version_P(const char *str, uint16_t version[4])
|
|||
// 1 - yes, 0 - false, -1 - error;
|
||||
inline int8_t is_provided_version_newer(const char *version_string)
|
||||
{
|
||||
uint16_t ver_gcode[3], ver_current[3];
|
||||
uint16_t ver_gcode[4], ver_current[4];
|
||||
if (! parse_version(version_string, ver_gcode))
|
||||
return -1;
|
||||
if (! parse_version_P(FW_VERSION_STR, ver_current))
|
||||
|
|
@ -294,17 +294,11 @@ bool show_upgrade_dialog_if_version_newer(const char *version_string)
|
|||
lcd_puts_at_P(0, 2, PSTR(""));
|
||||
for (const char *c = version_string; ! is_whitespace_or_nl_or_eol(*c); ++ c)
|
||||
lcd_putc(*c);
|
||||
lcd_puts_at_P(0, 3, _i("Please upgrade."));////MSG_NEW_FIRMWARE_PLEASE_UPGRADE c=20 r=0
|
||||
if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE))
|
||||
_tone(BEEPER, 1000);
|
||||
delay_keep_alive(50);
|
||||
_noTone(BEEPER);
|
||||
lcd_puts_at_P(0, 3, _i("Please upgrade."));////MSG_NEW_FIRMWARE_PLEASE_UPGRADE c=20
|
||||
Sound_MakeCustom(50,1000,false);
|
||||
delay_keep_alive(500);
|
||||
if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE))
|
||||
_tone(BEEPER, 1000);
|
||||
delay_keep_alive(50);
|
||||
_noTone(BEEPER);
|
||||
lcd_wait_for_click();
|
||||
Sound_MakeCustom(50,1000,false);
|
||||
lcd_wait_for_click_delay(30);
|
||||
lcd_update_enable(true);
|
||||
lcd_clear();
|
||||
lcd_update(0);
|
||||
|
|
@ -327,3 +321,279 @@ void update_current_firmware_version_to_eeprom()
|
|||
eeprom_update_word((uint16_t*)EEPROM_FIRMWARE_VERSION_FLAVOR, ver_current[3]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//-//
|
||||
#define MSG_PRINT_CHECKING_FAILED_TIMEOUT 30
|
||||
|
||||
ClNozzleDiameter oNozzleDiameter=ClNozzleDiameter::_Diameter_400;
|
||||
ClCheckMode oCheckMode=ClCheckMode::_None;
|
||||
ClCheckModel oCheckModel=ClCheckModel::_None;
|
||||
ClCheckVersion oCheckVersion=ClCheckVersion::_None;
|
||||
ClCheckGcode oCheckGcode=ClCheckGcode::_None;
|
||||
|
||||
void fCheckModeInit()
|
||||
{
|
||||
oCheckMode=(ClCheckMode)eeprom_read_byte((uint8_t*)EEPROM_CHECK_MODE);
|
||||
if(oCheckMode==ClCheckMode::_Undef)
|
||||
{
|
||||
oCheckMode=ClCheckMode::_Warn;
|
||||
eeprom_update_byte((uint8_t*)EEPROM_CHECK_MODE,(uint8_t)oCheckMode);
|
||||
}
|
||||
if(farm_mode)
|
||||
oCheckMode=ClCheckMode::_Strict;
|
||||
oNozzleDiameter=(ClNozzleDiameter)eeprom_read_byte((uint8_t*)EEPROM_NOZZLE_DIAMETER);
|
||||
if((oNozzleDiameter==ClNozzleDiameter::_Diameter_Undef)&& !farm_mode)
|
||||
{
|
||||
oNozzleDiameter=ClNozzleDiameter::_Diameter_400;
|
||||
eeprom_update_byte((uint8_t*)EEPROM_NOZZLE_DIAMETER,(uint8_t)oNozzleDiameter);
|
||||
eeprom_update_word((uint16_t*)EEPROM_NOZZLE_DIAMETER_uM,400);
|
||||
}
|
||||
oCheckModel=(ClCheckModel)eeprom_read_byte((uint8_t*)EEPROM_CHECK_MODEL);
|
||||
if(oCheckModel==ClCheckModel::_Undef)
|
||||
{
|
||||
oCheckModel=ClCheckModel::_Warn;
|
||||
eeprom_update_byte((uint8_t*)EEPROM_CHECK_MODEL,(uint8_t)oCheckModel);
|
||||
}
|
||||
oCheckVersion=(ClCheckVersion)eeprom_read_byte((uint8_t*)EEPROM_CHECK_VERSION);
|
||||
if(oCheckVersion==ClCheckVersion::_Undef)
|
||||
{
|
||||
oCheckVersion=ClCheckVersion::_Warn;
|
||||
eeprom_update_byte((uint8_t*)EEPROM_CHECK_VERSION,(uint8_t)oCheckVersion);
|
||||
}
|
||||
oCheckGcode=(ClCheckGcode)eeprom_read_byte((uint8_t*)EEPROM_CHECK_GCODE);
|
||||
if(oCheckGcode==ClCheckGcode::_Undef)
|
||||
{
|
||||
oCheckGcode=ClCheckGcode::_Warn;
|
||||
eeprom_update_byte((uint8_t*)EEPROM_CHECK_GCODE,(uint8_t)oCheckGcode);
|
||||
}
|
||||
}
|
||||
|
||||
void nozzle_diameter_check(uint16_t nDiameter)
|
||||
{
|
||||
uint16_t nDiameter_um;
|
||||
|
||||
if(oCheckMode==ClCheckMode::_None)
|
||||
return;
|
||||
nDiameter_um=eeprom_read_word((uint16_t*)EEPROM_NOZZLE_DIAMETER_uM);
|
||||
if(nDiameter==nDiameter_um)
|
||||
return;
|
||||
//SERIAL_ECHO_START;
|
||||
//SERIAL_ECHOLNPGM("Printer nozzle diameter differs from the G-code ...");
|
||||
//SERIAL_ECHOPGM("actual : ");
|
||||
//SERIAL_ECHOLN((float)(nDiameter_um/1000.0));
|
||||
//SERIAL_ECHOPGM("expected: ");
|
||||
//SERIAL_ECHOLN((float)(nDiameter/1000.0));
|
||||
switch(oCheckMode)
|
||||
{
|
||||
case ClCheckMode::_Warn:
|
||||
// lcd_show_fullscreen_message_and_wait_P(_i("Printer nozzle diameter differs from the G-code. Continue?"));
|
||||
lcd_display_message_fullscreen_P(_i("Printer nozzle diameter differs from the G-code. Continue?"));
|
||||
lcd_wait_for_click_delay(MSG_PRINT_CHECKING_FAILED_TIMEOUT);
|
||||
//???custom_message_type=CUSTOM_MSG_TYPE_STATUS; // display / status-line recovery
|
||||
lcd_update_enable(true); // display / status-line recovery
|
||||
break;
|
||||
case ClCheckMode::_Strict:
|
||||
lcd_show_fullscreen_message_and_wait_P(_i("Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."));
|
||||
lcd_print_stop();
|
||||
break;
|
||||
case ClCheckMode::_None:
|
||||
case ClCheckMode::_Undef:
|
||||
break;
|
||||
}
|
||||
bSettings=false; // flag ('fake parameter') for 'lcd_hw_setup_menu()' function
|
||||
menu_submenu(lcd_hw_setup_menu);
|
||||
}
|
||||
|
||||
void printer_model_check(uint16_t nPrinterModel)
|
||||
{
|
||||
if(oCheckModel==ClCheckModel::_None)
|
||||
return;
|
||||
if(nPrinterModel==nPrinterType)
|
||||
return;
|
||||
//SERIAL_ECHO_START;
|
||||
//SERIAL_ECHOLNPGM("Printer model differs from the G-code ...");
|
||||
//SERIAL_ECHOPGM("actual : ");
|
||||
//SERIAL_ECHOLN(nPrinterType);
|
||||
//SERIAL_ECHOPGM("expected: ");
|
||||
//SERIAL_ECHOLN(nPrinterModel);
|
||||
switch(oCheckModel)
|
||||
{
|
||||
case ClCheckModel::_Warn:
|
||||
// lcd_show_fullscreen_message_and_wait_P(_i("Printer model differs from the G-code. Continue?"));
|
||||
lcd_display_message_fullscreen_P(_i("Printer model differs from the G-code. Continue?"));
|
||||
lcd_wait_for_click_delay(MSG_PRINT_CHECKING_FAILED_TIMEOUT);
|
||||
//???custom_message_type=CUSTOM_MSG_TYPE_STATUS; // display / status-line recovery
|
||||
lcd_update_enable(true); // display / status-line recovery
|
||||
break;
|
||||
case ClCheckModel::_Strict:
|
||||
lcd_show_fullscreen_message_and_wait_P(_i("Printer model differs from the G-code. Please check the value in settings. Print cancelled."));
|
||||
lcd_print_stop();
|
||||
break;
|
||||
case ClCheckModel::_None:
|
||||
case ClCheckModel::_Undef:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
uint8_t mCompareValue(uint16_t nX,uint16_t nY)
|
||||
{
|
||||
if(nX>nY)
|
||||
return((uint8_t)ClCompareValue::_Greater);
|
||||
if(nX<nY)
|
||||
return((uint8_t)ClCompareValue::_Less);
|
||||
return((uint8_t)ClCompareValue::_Equal);
|
||||
}
|
||||
|
||||
void fw_version_check(const char *pVersion)
|
||||
{
|
||||
uint16_t aVersion[4];
|
||||
uint8_t nCompareValueResult;
|
||||
|
||||
if(oCheckVersion==ClCheckVersion::_None)
|
||||
return;
|
||||
parse_version(pVersion,aVersion);
|
||||
nCompareValueResult=mCompareValue(aVersion[0],eeprom_read_word((uint16_t*)EEPROM_FIRMWARE_VERSION_MAJOR))<<6;
|
||||
nCompareValueResult+=mCompareValue(aVersion[1],eeprom_read_word((uint16_t*)EEPROM_FIRMWARE_VERSION_MINOR))<<4;
|
||||
nCompareValueResult+=mCompareValue(aVersion[2],eeprom_read_word((uint16_t*)EEPROM_FIRMWARE_VERSION_REVISION))<<2;
|
||||
nCompareValueResult+=mCompareValue(aVersion[3],eeprom_read_word((uint16_t*)EEPROM_FIRMWARE_VERSION_FLAVOR));
|
||||
if(nCompareValueResult==COMPARE_VALUE_EQUAL)
|
||||
return;
|
||||
if((nCompareValueResult<COMPARE_VALUE_EQUAL)&&oCheckVersion==ClCheckVersion::_Warn)
|
||||
return;
|
||||
//SERIAL_ECHO_START;
|
||||
//SERIAL_ECHOLNPGM("Printer FW version differs from the G-code ...");
|
||||
//SERIAL_ECHOPGM("actual : ");
|
||||
//SERIAL_ECHOLN(FW_VERSION);
|
||||
//SERIAL_ECHOPGM("expected: ");
|
||||
//SERIAL_ECHOLN(pVersion);
|
||||
switch(oCheckVersion)
|
||||
{
|
||||
case ClCheckVersion::_Warn:
|
||||
// lcd_show_fullscreen_message_and_wait_P(_i("Printer FW version differs from the G-code. Continue?"));
|
||||
lcd_display_message_fullscreen_P(_i("Printer FW version differs from the G-code. Continue?"));
|
||||
lcd_wait_for_click_delay(MSG_PRINT_CHECKING_FAILED_TIMEOUT);
|
||||
//???custom_message_type=CUSTOM_MSG_TYPE_STATUS; // display / status-line recovery
|
||||
lcd_update_enable(true); // display / status-line recovery
|
||||
break;
|
||||
case ClCheckVersion::_Strict:
|
||||
lcd_show_fullscreen_message_and_wait_P(_i("Printer FW version differs from the G-code. Please check the value in settings. Print cancelled."));
|
||||
lcd_print_stop();
|
||||
break;
|
||||
case ClCheckVersion::_None:
|
||||
case ClCheckVersion::_Undef:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void gcode_level_check(uint16_t nGcodeLevel)
|
||||
{
|
||||
if(oCheckGcode==ClCheckGcode::_None)
|
||||
return;
|
||||
if(nGcodeLevel==(uint16_t)GCODE_LEVEL)
|
||||
return;
|
||||
if((nGcodeLevel<(uint16_t)GCODE_LEVEL)&&(oCheckGcode==ClCheckGcode::_Warn))
|
||||
return;
|
||||
//SERIAL_ECHO_START;
|
||||
//SERIAL_ECHOLNPGM("Printer G-code level differs from the G-code ...");
|
||||
//SERIAL_ECHOPGM("actual : ");
|
||||
//SERIAL_ECHOLN(GCODE_LEVEL);
|
||||
//SERIAL_ECHOPGM("expected: ");
|
||||
//SERIAL_ECHOLN(nGcodeLevel);
|
||||
switch(oCheckGcode)
|
||||
{
|
||||
case ClCheckGcode::_Warn:
|
||||
// lcd_show_fullscreen_message_and_wait_P(_i("Printer G-code level differs from the G-code. Continue?"));
|
||||
lcd_display_message_fullscreen_P(_i("Printer G-code level differs from the G-code. Continue?"));
|
||||
lcd_wait_for_click_delay(MSG_PRINT_CHECKING_FAILED_TIMEOUT);
|
||||
//???custom_message_type=CUSTOM_MSG_TYPE_STATUS; // display / status-line recovery
|
||||
lcd_update_enable(true); // display / status-line recovery
|
||||
break;
|
||||
case ClCheckGcode::_Strict:
|
||||
lcd_show_fullscreen_message_and_wait_P(_i("Printer G-code level differs from the G-code. Please check the value in settings. Print cancelled."));
|
||||
lcd_print_stop();
|
||||
break;
|
||||
case ClCheckGcode::_None:
|
||||
case ClCheckGcode::_Undef:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//-// -> cmdqueue ???
|
||||
#define PRINTER_NAME_LENGTH ((sizeof(PRINTER_MMU_NAME)>sizeof(PRINTER_NAME))?(sizeof(PRINTER_MMU_NAME)-1):(sizeof(PRINTER_NAME)-1))
|
||||
#define GCODE_DELIMITER '"'
|
||||
#define ELLIPSIS "..."
|
||||
|
||||
char* code_string(char* pStr,size_t* nLength)
|
||||
{
|
||||
char* pStrBegin;
|
||||
char* pStrEnd;
|
||||
|
||||
pStrBegin=strchr(pStr,GCODE_DELIMITER);
|
||||
if(!pStrBegin)
|
||||
return(NULL);
|
||||
pStrBegin++;
|
||||
pStrEnd=strchr(pStrBegin,GCODE_DELIMITER);
|
||||
if(!pStrEnd)
|
||||
return(NULL);
|
||||
*nLength=pStrEnd-pStrBegin;
|
||||
return(pStrBegin);
|
||||
}
|
||||
|
||||
void printer_smodel_check(char* pStrPos)
|
||||
{
|
||||
char* pResult;
|
||||
size_t nLength,nPrinterNameLength;
|
||||
bool bCheckOK;
|
||||
char sPrinterName[PRINTER_NAME_LENGTH+sizeof(ELLIPSIS)-1+1]="";
|
||||
|
||||
nPrinterNameLength=strlen_P(::sPrinterName);
|
||||
pResult=code_string(pStrPos,&nLength);
|
||||
if(pResult!=NULL)
|
||||
{
|
||||
strlcpy(sPrinterName,pResult,min(nPrinterNameLength,nLength)+1);
|
||||
if(nLength>nPrinterNameLength)
|
||||
strcat(sPrinterName,ELLIPSIS);
|
||||
bCheckOK=(nLength==nPrinterNameLength);
|
||||
if(bCheckOK&&(!strncasecmp_P(pResult,::sPrinterName,nLength))) // i.e. string compare execute only if lengths are same
|
||||
return;
|
||||
}
|
||||
//SERIAL_ECHO_START;
|
||||
//SERIAL_ECHOLNPGM("Printer model differs from the G-code ...");
|
||||
//SERIAL_ECHOPGM("actual : \"");
|
||||
//serialprintPGM(::sPrinterName);
|
||||
//SERIAL_ECHOLNPGM("\"");
|
||||
//SERIAL_ECHOPGM("expected: \"");
|
||||
////SERIAL_ECHO(sPrinterName);
|
||||
//SERIAL_ECHOLNPGM("\"");
|
||||
switch(oCheckModel)
|
||||
{
|
||||
case ClCheckModel::_Warn:
|
||||
// lcd_show_fullscreen_message_and_wait_P(_i("Printer model differs from the G-code. Continue?"));
|
||||
lcd_display_message_fullscreen_P(_i("Printer model differs from the G-code. Continue?"));
|
||||
lcd_wait_for_click_delay(MSG_PRINT_CHECKING_FAILED_TIMEOUT);
|
||||
//???custom_message_type=CUSTOM_MSG_TYPE_STATUS; // display / status-line recovery
|
||||
lcd_update_enable(true); // display / status-line recovery
|
||||
break;
|
||||
case ClCheckModel::_Strict:
|
||||
lcd_show_fullscreen_message_and_wait_P(_i("Printer model differs from the G-code. Please check the value in settings. Print cancelled."));
|
||||
lcd_print_stop();
|
||||
break;
|
||||
case ClCheckModel::_None:
|
||||
case ClCheckModel::_Undef:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void fSetMmuMode(bool bMMu)
|
||||
{
|
||||
if(bMMu)
|
||||
{
|
||||
nPrinterType=pgm_read_word(&_nPrinterMmuType);
|
||||
sPrinterName=_sPrinterMmuName;
|
||||
}
|
||||
else {
|
||||
nPrinterType=pgm_read_word(&_nPrinterType);
|
||||
sPrinterName=_sPrinterName;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,4 +33,78 @@ inline void eeprom_update_int8(unsigned char* addr, int8_t v) {
|
|||
eeprom_update_byte(addr, *reinterpret_cast<uint8_t*>(&v));
|
||||
}
|
||||
|
||||
|
||||
//-//
|
||||
enum class ClPrintChecking:uint_least8_t
|
||||
{
|
||||
_Nozzle=1,
|
||||
_Model=2,
|
||||
_Smodel=3,
|
||||
_Version=4,
|
||||
_Gcode=5
|
||||
};
|
||||
|
||||
enum class ClNozzleDiameter:uint_least8_t
|
||||
{
|
||||
_Diameter_250=25,
|
||||
_Diameter_400=40,
|
||||
_Diameter_600=60,
|
||||
_Diameter_Undef=EEPROM_EMPTY_VALUE
|
||||
};
|
||||
|
||||
enum class ClCheckMode:uint_least8_t
|
||||
{
|
||||
_None,
|
||||
_Warn,
|
||||
_Strict,
|
||||
_Undef=EEPROM_EMPTY_VALUE
|
||||
};
|
||||
|
||||
enum class ClCheckModel:uint_least8_t
|
||||
{
|
||||
_None,
|
||||
_Warn,
|
||||
_Strict,
|
||||
_Undef=EEPROM_EMPTY_VALUE
|
||||
};
|
||||
|
||||
enum class ClCheckVersion:uint_least8_t
|
||||
{
|
||||
_None,
|
||||
_Warn,
|
||||
_Strict,
|
||||
_Undef=EEPROM_EMPTY_VALUE
|
||||
};
|
||||
|
||||
enum class ClCheckGcode:uint_least8_t
|
||||
{
|
||||
_None,
|
||||
_Warn,
|
||||
_Strict,
|
||||
_Undef=EEPROM_EMPTY_VALUE
|
||||
};
|
||||
|
||||
#define COMPARE_VALUE_EQUAL (((uint8_t)ClCompareValue::_Equal<<6)+((uint8_t)ClCompareValue::_Equal<<4)+((uint8_t)ClCompareValue::_Equal<<2)+((uint8_t)ClCompareValue::_Equal))
|
||||
enum class ClCompareValue:uint_least8_t
|
||||
{
|
||||
_Less=0,
|
||||
_Equal=1,
|
||||
_Greater=2
|
||||
};
|
||||
|
||||
extern ClNozzleDiameter oNozzleDiameter;
|
||||
extern ClCheckMode oCheckMode;
|
||||
extern ClCheckModel oCheckModel;
|
||||
extern ClCheckVersion oCheckVersion;
|
||||
extern ClCheckGcode oCheckGcode;
|
||||
|
||||
void fCheckModeInit();
|
||||
void nozzle_diameter_check(uint16_t nDiameter);
|
||||
void printer_model_check(uint16_t nPrinterModel);
|
||||
void printer_smodel_check(char* pStrPos);
|
||||
void fw_version_check(const char *pVersion);
|
||||
void gcode_level_check(uint16_t nGcodeLevel);
|
||||
|
||||
void fSetMmuMode(bool bMMu);
|
||||
|
||||
#endif /* UTIL_H */
|
||||
|
|
|
|||
|
|
@ -2,12 +2,16 @@
|
|||
#define CONFIGURATION_PRUSA_H
|
||||
|
||||
#include <limits.h>
|
||||
#include "printers.h"
|
||||
/*------------------------------------
|
||||
GENERAL SETTINGS
|
||||
*------------------------------------*/
|
||||
|
||||
// Printer revision
|
||||
#define PRINTER_TYPE PRINTER_MK2
|
||||
#define PRINTER_NAME PRINTER_MK2_NAME
|
||||
#define PRINTER_MMU_TYPE PRINTER_MK2 // dummy item (due to successfully compilation / building only)
|
||||
#define PRINTER_MMU_NAME PRINTER_MK2_NAME // dummy item (due to successfully compilation / building only)
|
||||
#define FILAMENT_SIZE "1_75mm_MK2"
|
||||
#define NOZZLE_TYPE "E3Dv6full"
|
||||
|
||||
|
|
@ -97,6 +101,9 @@ AXIS SETTINGS
|
|||
// New XYZ calibration
|
||||
//#define NEW_XYZCAL
|
||||
|
||||
// Watchdog support
|
||||
#define WATCHDOG
|
||||
|
||||
|
||||
/*------------------------------------
|
||||
EXTRUDER SETTINGS
|
||||
|
|
@ -312,7 +319,7 @@ PREHEAT SETTINGS
|
|||
*------------------------------------*/
|
||||
|
||||
#define FARM_PREHEAT_HOTEND_TEMP 250
|
||||
#define FARM_PREHEAT_HPB_TEMP 40
|
||||
#define FARM_PREHEAT_HPB_TEMP 80
|
||||
#define FARM_PREHEAT_FAN_SPEED 0
|
||||
|
||||
#define PLA_PREHEAT_HOTEND_TEMP 215
|
||||
|
|
@ -435,6 +442,7 @@ THERMISTORS SETTINGS
|
|||
// Safety timer
|
||||
#define SAFETYTIMER
|
||||
#define DEFAULT_SAFETYTIMER_TIME_MINS 30
|
||||
#define FARM_DEFAULT_SAFETYTIMER_TIME_ms (45*60*1000ul)
|
||||
|
||||
#define M600_TIMEOUT 600 //seconds
|
||||
|
||||
|
|
|
|||
|
|
@ -2,12 +2,16 @@
|
|||
#define CONFIGURATION_PRUSA_H
|
||||
|
||||
#include <limits.h>
|
||||
#include "printers.h"
|
||||
/*------------------------------------
|
||||
GENERAL SETTINGS
|
||||
*------------------------------------*/
|
||||
|
||||
// Printer revision
|
||||
#define PRINTER_TYPE PRINTER_MK2
|
||||
#define PRINTER_NAME PRINTER_MK2_NAME
|
||||
#define PRINTER_MMU_TYPE PRINTER_MK2 // dummy item (due to successfully compilation / building only)
|
||||
#define PRINTER_MMU_NAME PRINTER_MK2_NAME // dummy item (due to successfully compilation / building only)
|
||||
#define FILAMENT_SIZE "1_75mm_MK2"
|
||||
#define NOZZLE_TYPE "E3Dv6full"
|
||||
|
||||
|
|
@ -97,6 +101,8 @@ AXIS SETTINGS
|
|||
// New XYZ calibration
|
||||
//#define NEW_XYZCAL
|
||||
|
||||
// Watchdog support
|
||||
#define WATCHDOG
|
||||
|
||||
/*------------------------------------
|
||||
EXTRUDER SETTINGS
|
||||
|
|
@ -312,7 +318,7 @@ PREHEAT SETTINGS
|
|||
*------------------------------------*/
|
||||
|
||||
#define FARM_PREHEAT_HOTEND_TEMP 250
|
||||
#define FARM_PREHEAT_HPB_TEMP 40
|
||||
#define FARM_PREHEAT_HPB_TEMP 80
|
||||
#define FARM_PREHEAT_FAN_SPEED 0
|
||||
|
||||
#define PLA_PREHEAT_HOTEND_TEMP 215
|
||||
|
|
@ -435,6 +441,7 @@ THERMISTORS SETTINGS
|
|||
// Safety timer
|
||||
#define SAFETYTIMER
|
||||
#define DEFAULT_SAFETYTIMER_TIME_MINS 30
|
||||
#define FARM_DEFAULT_SAFETYTIMER_TIME_ms (45*60*1000ul)
|
||||
|
||||
#define M600_TIMEOUT 600 //seconds
|
||||
|
||||
|
|
|
|||
|
|
@ -2,12 +2,16 @@
|
|||
#define CONFIGURATION_PRUSA_H
|
||||
|
||||
#include <limits.h>
|
||||
#include "printers.h"
|
||||
/*------------------------------------
|
||||
GENERAL SETTINGS
|
||||
*------------------------------------*/
|
||||
|
||||
// Printer revision
|
||||
#define PRINTER_TYPE PRINTER_MK25
|
||||
#define PRINTER_NAME PRINTER_MK25_NAME
|
||||
#define PRINTER_MMU_TYPE PRINTER_MK25_MMU2
|
||||
#define PRINTER_MMU_NAME PRINTER_MK25_MMU2_NAME
|
||||
#define FILAMENT_SIZE "1_75mm_MK25"
|
||||
#define NOZZLE_TYPE "E3Dv6full"
|
||||
|
||||
|
|
@ -103,12 +107,16 @@
|
|||
// New XYZ calibration
|
||||
#define NEW_XYZCAL
|
||||
|
||||
// Watchdog support
|
||||
#define WATCHDOG
|
||||
|
||||
// Fan check
|
||||
#define FANCHECK
|
||||
|
||||
// Safety timer
|
||||
#define SAFETYTIMER
|
||||
#define DEFAULT_SAFETYTIMER_TIME_MINS 30
|
||||
#define FARM_DEFAULT_SAFETYTIMER_TIME_ms (45*60*1000ul)
|
||||
|
||||
// Filament sensor
|
||||
#define FILAMENT_SENSOR
|
||||
|
|
@ -290,10 +298,10 @@
|
|||
#define MBL_Z_STEP 0.01
|
||||
|
||||
// Mesh definitions
|
||||
#define MESH_MIN_X 35
|
||||
#define MESH_MAX_X 238
|
||||
#define MESH_MIN_X 24
|
||||
#define MESH_MAX_X 228
|
||||
#define MESH_MIN_Y 6
|
||||
#define MESH_MAX_Y 202
|
||||
#define MESH_MAX_Y 210
|
||||
|
||||
// Mesh upsample definition
|
||||
#define MESH_NUM_X_POINTS 7
|
||||
|
|
@ -368,7 +376,7 @@
|
|||
*------------------------------------*/
|
||||
|
||||
#define FARM_PREHEAT_HOTEND_TEMP 250
|
||||
#define FARM_PREHEAT_HPB_TEMP 40
|
||||
#define FARM_PREHEAT_HPB_TEMP 80
|
||||
#define FARM_PREHEAT_FAN_SPEED 0
|
||||
|
||||
#define PLA_PREHEAT_HOTEND_TEMP 215
|
||||
|
|
@ -498,7 +506,9 @@
|
|||
//#define SUPPORT_VERBOSITY
|
||||
|
||||
#define MMU_REQUIRED_FW_BUILDNR 132
|
||||
//#define MMU_DEBUG //print communication between MMU2 and printer on serial
|
||||
#define MMU_FORCE_STEALTH_MODE
|
||||
#define MMU_DEBUG //print communication between MMU2 and printer on serial
|
||||
//#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
|
||||
|
||||
|
|
|
|||
|
|
@ -2,12 +2,16 @@
|
|||
#define CONFIGURATION_PRUSA_H
|
||||
|
||||
#include <limits.h>
|
||||
#include "printers.h"
|
||||
/*------------------------------------
|
||||
GENERAL SETTINGS
|
||||
*------------------------------------*/
|
||||
|
||||
// Printer revision
|
||||
#define PRINTER_TYPE PRINTER_MK25
|
||||
#define PRINTER_NAME PRINTER_MK25_NAME
|
||||
#define PRINTER_MMU_TYPE PRINTER_MK25_MMU2
|
||||
#define PRINTER_MMU_NAME PRINTER_MK25_MMU2_NAME
|
||||
#define FILAMENT_SIZE "1_75mm_MK25"
|
||||
#define NOZZLE_TYPE "E3Dv6full"
|
||||
|
||||
|
|
@ -104,12 +108,16 @@
|
|||
// New XYZ calibration
|
||||
#define NEW_XYZCAL
|
||||
|
||||
// Watchdog support
|
||||
#define WATCHDOG
|
||||
|
||||
// Fan check
|
||||
#define FANCHECK
|
||||
|
||||
// Safety timer
|
||||
#define SAFETYTIMER
|
||||
#define DEFAULT_SAFETYTIMER_TIME_MINS 30
|
||||
#define FARM_DEFAULT_SAFETYTIMER_TIME_ms (45*60*1000ul)
|
||||
|
||||
// Filament sensor
|
||||
#define FILAMENT_SENSOR
|
||||
|
|
@ -291,10 +299,10 @@
|
|||
#define MBL_Z_STEP 0.01
|
||||
|
||||
// Mesh definitions
|
||||
#define MESH_MIN_X 35
|
||||
#define MESH_MAX_X 238
|
||||
#define MESH_MIN_X 24
|
||||
#define MESH_MAX_X 228
|
||||
#define MESH_MIN_Y 6
|
||||
#define MESH_MAX_Y 202
|
||||
#define MESH_MAX_Y 210
|
||||
|
||||
// Mesh upsample definition
|
||||
#define MESH_NUM_X_POINTS 7
|
||||
|
|
@ -369,7 +377,7 @@
|
|||
*------------------------------------*/
|
||||
|
||||
#define FARM_PREHEAT_HOTEND_TEMP 250
|
||||
#define FARM_PREHEAT_HPB_TEMP 40
|
||||
#define FARM_PREHEAT_HPB_TEMP 80
|
||||
#define FARM_PREHEAT_FAN_SPEED 0
|
||||
|
||||
#define PLA_PREHEAT_HOTEND_TEMP 215
|
||||
|
|
@ -499,8 +507,13 @@
|
|||
//#define SUPPORT_VERBOSITY
|
||||
|
||||
#define MMU_REQUIRED_FW_BUILDNR 132
|
||||
//#define MMU_DEBUG //print communication between MMU2 and printer on serial
|
||||
#define MMU_FORCE_STEALTH_MODE
|
||||
#define MMU_DEBUG //print communication between MMU2 and printer on serial
|
||||
//#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 HEATBED_ANALYSIS //for meash bed leveling and heatbed analysis D-codes D80 and D81
|
||||
//#define MICROMETER_LOGGING //related to D-codes D80 and D81, currently works on MK2.5 only (MK3 board pin definitions missing)
|
||||
|
||||
#endif //__CONFIGURATION_PRUSA_H
|
||||
|
|
|
|||
|
|
@ -0,0 +1,522 @@
|
|||
#ifndef CONFIGURATION_PRUSA_H
|
||||
#define CONFIGURATION_PRUSA_H
|
||||
|
||||
#include <limits.h>
|
||||
#include "printers.h"
|
||||
/*------------------------------------
|
||||
GENERAL SETTINGS
|
||||
*------------------------------------*/
|
||||
|
||||
// Printer revision
|
||||
#define PRINTER_TYPE PRINTER_MK25S
|
||||
#define PRINTER_NAME PRINTER_MK25S_NAME
|
||||
#define PRINTER_MMU_TYPE PRINTER_MK25S_MMU2
|
||||
#define PRINTER_MMU_NAME PRINTER_MK25S_MMU2_NAME
|
||||
#define FILAMENT_SIZE "1_75mm_MK25S"
|
||||
#define NOZZLE_TYPE "E3Dv6full"
|
||||
|
||||
// Developer flag
|
||||
#define DEVELOPER
|
||||
|
||||
// Printer name
|
||||
#define CUSTOM_MENDEL_NAME "Prusa i3 MK2.5S"
|
||||
|
||||
// Electronics
|
||||
#define MOTHERBOARD BOARD_RAMBO_MINI_1_0
|
||||
|
||||
#define HEATBED_V2
|
||||
#define STEEL_SHEET
|
||||
#define TACH0PULLUP
|
||||
|
||||
// Uncomment the below for the E3D PT100 temperature sensor (with or without PT100 Amplifier)
|
||||
//#define E3D_PT100_EXTRUDER_WITH_AMP
|
||||
//#define E3D_PT100_EXTRUDER_NO_AMP
|
||||
//#define E3D_PT100_BED_WITH_AMP
|
||||
//#define E3D_PT100_BED_NO_AMP
|
||||
|
||||
|
||||
/*------------------------------------
|
||||
AXIS SETTINGS
|
||||
*------------------------------------*/
|
||||
|
||||
// Steps per unit {X,Y,Z,E}
|
||||
#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,133}
|
||||
|
||||
// Endstop inverting
|
||||
#define X_MIN_ENDSTOP_INVERTING 0 // set to 1 to invert the logic of the endstop.
|
||||
#define Y_MIN_ENDSTOP_INVERTING 0 // set to 1 to invert the logic of the endstop.
|
||||
#define Z_MIN_ENDSTOP_INVERTING 0 // set to 1 to invert the logic of the endstop.
|
||||
|
||||
// Direction inverting
|
||||
#define INVERT_X_DIR 0 // for Mendel set to 0, for Orca set to 1
|
||||
#define INVERT_Y_DIR 0 // for Mendel set to 1, for Orca set to 0
|
||||
#define INVERT_Z_DIR 0 // for Mendel set to 0, for Orca set to 1
|
||||
#define INVERT_E0_DIR 1 // for direct drive extruder v9 set to 1, for geared extruder set to 0
|
||||
#define INVERT_E1_DIR 1 // for direct drive extruder v9 set to 1, for geared extruder set to 0
|
||||
#define INVERT_E2_DIR 1 // for direct drive extruder v9 set to 1, for geared extruder set to 0
|
||||
|
||||
// Home position
|
||||
#define MANUAL_X_HOME_POS 0
|
||||
#define MANUAL_Y_HOME_POS -2.2
|
||||
#define MANUAL_Z_HOME_POS 0.2
|
||||
|
||||
// Travel limits after homing
|
||||
#define X_MAX_POS 250
|
||||
#define X_MIN_POS 0
|
||||
#define Y_MAX_POS 210
|
||||
#define Y_MIN_POS -4
|
||||
#define Z_MAX_POS 210
|
||||
#define Z_MIN_POS 0.15
|
||||
|
||||
// Canceled home position
|
||||
#define X_CANCEL_POS 50
|
||||
#define Y_CANCEL_POS 190
|
||||
|
||||
//Pause print position
|
||||
#define X_PAUSE_POS 50
|
||||
#define Y_PAUSE_POS 190
|
||||
#define Z_PAUSE_LIFT 20
|
||||
|
||||
#define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E
|
||||
#define HOMING_FEEDRATE {3000, 3000, 800, 0} // set the homing speeds (mm/min) // 3000 is also valid for stallGuard homing. Valid range: 2200 - 3000
|
||||
|
||||
/**
|
||||
* [0,0] steel sheet print area point X coordinate in bed print area coordinates
|
||||
*/
|
||||
#define SHEET_PRINT_ZERO_REF_X 0.f
|
||||
/**
|
||||
* [0,0] steel sheet print area point Y coordinate in bed print area coordinates
|
||||
*/
|
||||
#define SHEET_PRINT_ZERO_REF_Y 0.f
|
||||
|
||||
#define DEFAULT_MAX_FEEDRATE {200, 200, 12, 120} // (mm/sec) max feedrate (M203)
|
||||
#define DEFAULT_MAX_FEEDRATE_SILENT {172, 172, 12, 120} // (mm/sec) max feedrate (M203), silent mode
|
||||
#define DEFAULT_MAX_ACCELERATION {1000, 1000, 200, 5000} // (mm/sec^2) max acceleration (M201)
|
||||
#define DEFAULT_MAX_ACCELERATION_SILENT {960, 960, 200, 5000} // (mm/sec^2) max acceleration (M201), silent mode
|
||||
|
||||
#define DEFAULT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for printing moves (M204S)
|
||||
#define DEFAULT_RETRACT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for retracts (M204T)
|
||||
|
||||
#define MANUAL_FEEDRATE {2700, 2700, 1000, 100} // set the speeds for manual moves (mm/min)
|
||||
|
||||
//number of bytes from end of the file to start check
|
||||
#define END_FILE_SECTION 20000
|
||||
|
||||
#define Z_AXIS_ALWAYS_ON 1
|
||||
|
||||
// New XYZ calibration
|
||||
#define NEW_XYZCAL
|
||||
|
||||
// Watchdog support
|
||||
#define WATCHDOG
|
||||
|
||||
// Fan check
|
||||
#define FANCHECK
|
||||
|
||||
// Safety timer
|
||||
#define SAFETYTIMER
|
||||
#define DEFAULT_SAFETYTIMER_TIME_MINS 30
|
||||
#define FARM_DEFAULT_SAFETYTIMER_TIME_ms (45*60*1000ul)
|
||||
|
||||
// Filament sensor
|
||||
#define FILAMENT_SENSOR
|
||||
#define IR_SENSOR
|
||||
|
||||
|
||||
#define DEBUG_DCODE3
|
||||
|
||||
//#define DEBUG_BUILD
|
||||
#ifdef DEBUG_BUILD
|
||||
//#define _NO_ASM
|
||||
#define DEBUG_DCODES //D codes
|
||||
#define DEBUG_STACK_MONITOR //Stack monitor in stepper ISR
|
||||
//#define DEBUG_FSENSOR_LOG //Reports fsensor status to serial
|
||||
//#define DEBUG_CRASHDET_COUNTERS //Display crash-detection counters on LCD
|
||||
//#define DEBUG_RESUME_PRINT //Resume/save print debug enable
|
||||
//#define DEBUG_UVLO_AUTOMATIC_RECOVER // Power panic automatic recovery debug output
|
||||
//#define DEBUG_DISABLE_XMINLIMIT //x min limit ignored
|
||||
//#define DEBUG_DISABLE_XMAXLIMIT //x max limit ignored
|
||||
//#define DEBUG_DISABLE_YMINLIMIT //y min limit ignored
|
||||
//#define DEBUG_DISABLE_YMAXLIMIT //y max limit ignored
|
||||
//#define DEBUG_DISABLE_ZMINLIMIT //z min limit ignored
|
||||
//#define DEBUG_DISABLE_ZMAXLIMIT //z max limit ignored
|
||||
//#define DEBUG_DISABLE_STARTMSGS //no startup messages
|
||||
//#define DEBUG_DISABLE_MINTEMP //mintemp error ignored
|
||||
//#define DEBUG_DISABLE_SWLIMITS //sw limits ignored
|
||||
//#define DEBUG_DISABLE_LCD_STATUS_LINE //empty four lcd line
|
||||
//#define DEBUG_DISABLE_PREVENT_EXTRUDER //cold extrusion and long extrusion allowed
|
||||
//#define DEBUG_DISABLE_PRUSA_STATISTICS //disable prusa_statistics() mesages
|
||||
//#define DEBUG_XSTEP_DUP_PIN 21 //duplicate x-step output to pin 21 (SCL on P3)
|
||||
//#define DEBUG_YSTEP_DUP_PIN 21 //duplicate y-step output to pin 21 (SCL on P3)
|
||||
//#define DEBUG_DISABLE_FANCHECK //disable fan check (no ISR INT7, check disabled)
|
||||
//#define DEBUG_DUMP_TO_2ND_SERIAL //dump received characters to 2nd serial line
|
||||
//#define DEBUG_STEPPER_TIMER_MISSED // Stop on stepper timer overflow, beep and display a message.
|
||||
//#define PLANNER_DIAGNOSTICS // Show the planner queue status on printer display.
|
||||
//#define CMD_DIAGNOSTICS //Show cmd queue length on printer display
|
||||
#endif /* DEBUG_BUILD */
|
||||
|
||||
//#define FSENSOR_QUALITY
|
||||
|
||||
|
||||
/*------------------------------------
|
||||
EXTRUDER SETTINGS
|
||||
*------------------------------------*/
|
||||
|
||||
// Mintemps
|
||||
#define HEATER_0_MINTEMP 30
|
||||
#define HEATER_1_MINTEMP 5
|
||||
#define HEATER_2_MINTEMP 5
|
||||
#define HEATER_MINTEMP_DELAY 15000 // [ms] ! if changed, check maximal allowed value @ ShortTimer
|
||||
#if HEATER_MINTEMP_DELAY>USHRT_MAX
|
||||
#error "Check maximal allowed value @ ShortTimer (see HEATER_MINTEMP_DELAY definition)"
|
||||
#endif
|
||||
#define BED_MINTEMP 30
|
||||
#define BED_MINTEMP_DELAY 50000 // [ms] ! if changed, check maximal allowed value @ ShortTimer
|
||||
#if BED_MINTEMP_DELAY>USHRT_MAX
|
||||
#error "Check maximal allowed value @ ShortTimer (see BED_MINTEMP_DELAY definition)"
|
||||
#endif
|
||||
|
||||
// Maxtemps
|
||||
#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP)
|
||||
#define HEATER_0_MAXTEMP 410
|
||||
#else
|
||||
#define HEATER_0_MAXTEMP 305
|
||||
#endif
|
||||
#define HEATER_1_MAXTEMP 305
|
||||
#define HEATER_2_MAXTEMP 305
|
||||
#define BED_MAXTEMP 125
|
||||
|
||||
#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP)
|
||||
// Define PID constants for extruder with PT100
|
||||
#define DEFAULT_Kp 21.70
|
||||
#define DEFAULT_Ki 1.60
|
||||
#define DEFAULT_Kd 73.76
|
||||
#else
|
||||
// Define PID constants for extruder
|
||||
//#define DEFAULT_Kp 40.925
|
||||
//#define DEFAULT_Ki 4.875
|
||||
//#define DEFAULT_Kd 86.085
|
||||
#define DEFAULT_Kp 16.13
|
||||
#define DEFAULT_Ki 1.1625
|
||||
#define DEFAULT_Kd 56.23
|
||||
#endif
|
||||
|
||||
// Extrude mintemp
|
||||
#define EXTRUDE_MINTEMP 175
|
||||
|
||||
// Extruder cooling fans
|
||||
#define EXTRUDER_0_AUTO_FAN_PIN 8
|
||||
#define EXTRUDER_1_AUTO_FAN_PIN -1
|
||||
#define EXTRUDER_2_AUTO_FAN_PIN -1
|
||||
#define EXTRUDER_AUTO_FAN_TEMPERATURE 50
|
||||
#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed
|
||||
|
||||
|
||||
/*------------------------------------
|
||||
LOAD/UNLOAD FILAMENT SETTINGS
|
||||
*------------------------------------*/
|
||||
|
||||
// Load filament commands
|
||||
#define LOAD_FILAMENT_0 "M83"
|
||||
#define LOAD_FILAMENT_1 "G1 E70 F400"
|
||||
#define LOAD_FILAMENT_2 "G1 E40 F100"
|
||||
|
||||
// Unload filament commands
|
||||
#define UNLOAD_FILAMENT_0 "M83"
|
||||
#define UNLOAD_FILAMENT_1 "G1 E-80 F7000"
|
||||
|
||||
/*------------------------------------
|
||||
CHANGE FILAMENT SETTINGS
|
||||
*------------------------------------*/
|
||||
|
||||
// Filament change configuration
|
||||
#define FILAMENTCHANGEENABLE
|
||||
#ifdef FILAMENTCHANGEENABLE
|
||||
#define FILAMENTCHANGE_XPOS 211
|
||||
#define FILAMENTCHANGE_YPOS 0
|
||||
#define FILAMENTCHANGE_ZADD 2
|
||||
#define FILAMENTCHANGE_FIRSTRETRACT -2
|
||||
#define FILAMENTCHANGE_FINALRETRACT -80
|
||||
|
||||
#define FILAMENTCHANGE_FIRSTFEED 70 //E distance in mm for fast filament loading sequence used used in filament change (M600)
|
||||
#define FILAMENTCHANGE_FINALFEED 25 //E distance in mm for slow filament loading sequence used used in filament change (M600) and filament load (M701)
|
||||
#define FILAMENTCHANGE_RECFEED 5
|
||||
|
||||
#define FILAMENTCHANGE_XYFEED 50
|
||||
#define FILAMENTCHANGE_EFEED_FIRST 20 // feedrate in mm/s for fast filament loading sequence used in filament change (M600)
|
||||
#define FILAMENTCHANGE_EFEED_FINAL 3.3f // feedrate in mm/s for slow filament loading sequence used in filament change (M600) and filament load (M701)
|
||||
//#define FILAMENTCHANGE_RFEED 400
|
||||
#define FILAMENTCHANGE_RFEED 7000 / 60
|
||||
#define FILAMENTCHANGE_EXFEED 2
|
||||
#define FILAMENTCHANGE_ZFEED 15
|
||||
|
||||
#endif
|
||||
|
||||
/*------------------------------------
|
||||
ADDITIONAL FEATURES SETTINGS
|
||||
*------------------------------------*/
|
||||
|
||||
// Define Prusa filament runout sensor
|
||||
//#define FILAMENT_RUNOUT_SUPPORT
|
||||
|
||||
#ifdef FILAMENT_RUNOUT_SUPPORT
|
||||
#define FILAMENT_RUNOUT_SENSOR 1
|
||||
#endif
|
||||
|
||||
// temperature runaway
|
||||
#define TEMP_RUNAWAY_BED_HYSTERESIS 5
|
||||
#define TEMP_RUNAWAY_BED_TIMEOUT 360
|
||||
|
||||
#define TEMP_RUNAWAY_EXTRUDER_HYSTERESIS 15
|
||||
#define TEMP_RUNAWAY_EXTRUDER_TIMEOUT 45
|
||||
|
||||
/*------------------------------------
|
||||
MOTOR CURRENT SETTINGS
|
||||
*------------------------------------*/
|
||||
|
||||
// Motor Current setting for BIG RAMBo
|
||||
#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
|
||||
#define DIGIPOT_MOTOR_CURRENT_LOUD {135,135,135,135,135}
|
||||
|
||||
// Motor Current settings for RAMBo mini PWM value = MotorCurrentSetting * 255 / range
|
||||
#if MOTHERBOARD == BOARD_RAMBO_MINI_1_0 || MOTHERBOARD == BOARD_RAMBO_MINI_1_3
|
||||
#define MOTOR_CURRENT_PWM_RANGE 2000
|
||||
#define DEFAULT_PWM_MOTOR_CURRENT {270, 830, 450} // {XY,Z,E}
|
||||
#define DEFAULT_PWM_MOTOR_CURRENT_LOUD {540, 830, 500} // {XY,Z,E}
|
||||
#define Z_SILENT 0
|
||||
#define Z_HIGH_POWER 200
|
||||
#endif
|
||||
|
||||
/*------------------------------------
|
||||
BED SETTINGS
|
||||
*------------------------------------*/
|
||||
|
||||
// Define Mesh Bed Leveling system to enable it
|
||||
#define MESH_BED_LEVELING
|
||||
#ifdef MESH_BED_LEVELING
|
||||
|
||||
#define MBL_Z_STEP 0.01
|
||||
|
||||
// Mesh definitions
|
||||
#define MESH_MIN_X 24
|
||||
#define MESH_MAX_X 228
|
||||
#define MESH_MIN_Y 6
|
||||
#define MESH_MAX_Y 210
|
||||
|
||||
// Mesh upsample definition
|
||||
#define MESH_NUM_X_POINTS 7
|
||||
#define MESH_NUM_Y_POINTS 7
|
||||
// Mesh measure definition
|
||||
#define MESH_MEAS_NUM_X_POINTS 3
|
||||
#define MESH_MEAS_NUM_Y_POINTS 3
|
||||
|
||||
// Maximum bed level correction value
|
||||
#define BED_ADJUSTMENT_UM_MAX 100
|
||||
|
||||
#define MESH_HOME_Z_CALIB 0.2
|
||||
#define MESH_HOME_Z_SEARCH 5 //Z lift for homing, mesh bed leveling etc.
|
||||
|
||||
#define X_PROBE_OFFSET_FROM_EXTRUDER 23 // Z probe to nozzle X offset: -left +right
|
||||
#define Y_PROBE_OFFSET_FROM_EXTRUDER 5 // Z probe to nozzle Y offset: -front +behind
|
||||
#define Z_PROBE_OFFSET_FROM_EXTRUDER -0.4 // Z probe to nozzle Z offset: -below (always!)
|
||||
#endif
|
||||
|
||||
// Bed Temperature Control
|
||||
// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis
|
||||
//
|
||||
// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder.
|
||||
// If your PID_dT above is the default, and correct for your hardware/configuration, that means 7.689Hz,
|
||||
// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating.
|
||||
// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater.
|
||||
// If your configuration is significantly different than this and you don't understand the issues involved, you probably
|
||||
// shouldn't use bed PID until someone else verifies your hardware works.
|
||||
// If this is enabled, find your own PID constants below.
|
||||
#define PIDTEMPBED
|
||||
//
|
||||
//#define BED_LIMIT_SWITCHING
|
||||
|
||||
// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option.
|
||||
// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis)
|
||||
// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did,
|
||||
// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED)
|
||||
#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current
|
||||
|
||||
// Bed temperature compensation settings
|
||||
#define BED_OFFSET 10
|
||||
#define BED_OFFSET_START 40
|
||||
#define BED_OFFSET_CENTER 50
|
||||
|
||||
|
||||
#ifdef PIDTEMPBED
|
||||
//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)
|
||||
//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10)
|
||||
#if defined(E3D_PT100_BED_WITH_AMP) || defined(E3D_PT100_BED_NO_AMP)
|
||||
// Define PID constants for extruder with PT100
|
||||
#define DEFAULT_bedKp 21.70
|
||||
#define DEFAULT_bedKi 1.60
|
||||
#define DEFAULT_bedKd 73.76
|
||||
#else
|
||||
#define DEFAULT_bedKp 126.13
|
||||
#define DEFAULT_bedKi 4.30
|
||||
#define DEFAULT_bedKd 924.76
|
||||
#endif
|
||||
|
||||
//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)
|
||||
//from pidautotune
|
||||
// #define DEFAULT_bedKp 97.1
|
||||
// #define DEFAULT_bedKi 1.41
|
||||
// #define DEFAULT_bedKd 1675.16
|
||||
|
||||
// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles.
|
||||
#endif // PIDTEMPBED
|
||||
|
||||
|
||||
/*-----------------------------------
|
||||
PREHEAT SETTINGS
|
||||
*------------------------------------*/
|
||||
|
||||
#define FARM_PREHEAT_HOTEND_TEMP 250
|
||||
#define FARM_PREHEAT_HPB_TEMP 80
|
||||
#define FARM_PREHEAT_FAN_SPEED 0
|
||||
|
||||
#define PLA_PREHEAT_HOTEND_TEMP 215
|
||||
#define PLA_PREHEAT_HPB_TEMP 60
|
||||
#define PLA_PREHEAT_FAN_SPEED 0
|
||||
|
||||
#define ABS_PREHEAT_HOTEND_TEMP 255
|
||||
#define ABS_PREHEAT_HPB_TEMP 100
|
||||
#define ABS_PREHEAT_FAN_SPEED 0
|
||||
|
||||
#define HIPS_PREHEAT_HOTEND_TEMP 220
|
||||
#define HIPS_PREHEAT_HPB_TEMP 100
|
||||
#define HIPS_PREHEAT_FAN_SPEED 0
|
||||
|
||||
#define PP_PREHEAT_HOTEND_TEMP 254
|
||||
#define PP_PREHEAT_HPB_TEMP 100
|
||||
#define PP_PREHEAT_FAN_SPEED 0
|
||||
|
||||
#define PET_PREHEAT_HOTEND_TEMP 230
|
||||
#define PET_PREHEAT_HPB_TEMP 85
|
||||
#define PET_PREHEAT_FAN_SPEED 0
|
||||
|
||||
#define FLEX_PREHEAT_HOTEND_TEMP 240
|
||||
#define FLEX_PREHEAT_HPB_TEMP 50
|
||||
#define FLEX_PREHEAT_FAN_SPEED 0
|
||||
|
||||
/*------------------------------------
|
||||
THERMISTORS SETTINGS
|
||||
*------------------------------------*/
|
||||
|
||||
//
|
||||
//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table
|
||||
//
|
||||
//// Temperature sensor settings:
|
||||
// -2 is thermocouple with MAX6675 (only for sensor 0)
|
||||
// -1 is thermocouple with AD595
|
||||
// 0 is not used
|
||||
// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup)
|
||||
// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup)
|
||||
// 3 is Mendel-parts thermistor (4.7k pullup)
|
||||
// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !!
|
||||
// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup)
|
||||
// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup)
|
||||
// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup)
|
||||
// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup)
|
||||
// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup)
|
||||
// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup)
|
||||
// 10 is 100k RS thermistor 198-961 (4.7k pullup)
|
||||
// 11 is 100k beta 3950 1% thermistor (4.7k pullup)
|
||||
// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed)
|
||||
// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE"
|
||||
// 20 is the PT100 circuit found in the Ultimainboard V2.x
|
||||
// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950
|
||||
//
|
||||
// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k
|
||||
// (but gives greater accuracy and more stable PID)
|
||||
// 51 is 100k thermistor - EPCOS (1k pullup)
|
||||
// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup)
|
||||
// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup)
|
||||
//
|
||||
// 1047 is Pt1000 with 4k7 pullup
|
||||
// 1010 is Pt1000 with 1k pullup (non standard)
|
||||
// 147 is Pt100 with 4k7 pullup
|
||||
// 148 is E3D Pt100 with 4k7 pullup and no PT100 Amplifier on a MiniRambo 1.3a
|
||||
// 247 is Pt100 with 4k7 pullup and PT100 Amplifier
|
||||
// 110 is Pt100 with 1k pullup (non standard)
|
||||
|
||||
#if defined(E3D_PT100_EXTRUDER_WITH_AMP)
|
||||
#define TEMP_SENSOR_0 247
|
||||
#elif defined(E3D_PT100_EXTRUDER_NO_AMP)
|
||||
#define TEMP_SENSOR_0 148
|
||||
#else
|
||||
#define TEMP_SENSOR_0 5
|
||||
#endif
|
||||
#define TEMP_SENSOR_1 0
|
||||
#define TEMP_SENSOR_2 0
|
||||
#if defined(E3D_PT100_BED_WITH_AMP)
|
||||
#define TEMP_SENSOR_BED 247
|
||||
#elif defined(E3D_PT100_BED_NO_AMP)
|
||||
#define TEMP_SENSOR_BED 148
|
||||
#else
|
||||
#define TEMP_SENSOR_BED 1
|
||||
#endif
|
||||
#define TEMP_SENSOR_PINDA 1
|
||||
|
||||
#define STACK_GUARD_TEST_VALUE 0xA2A2
|
||||
|
||||
#define MAX_BED_TEMP_CALIBRATION 50
|
||||
#define MAX_HOTEND_TEMP_CALIBRATION 50
|
||||
|
||||
#define MAX_E_STEPS_PER_UNIT 250
|
||||
#define MIN_E_STEPS_PER_UNIT 100
|
||||
|
||||
#define Z_BABYSTEP_MIN -3999
|
||||
#define Z_BABYSTEP_MAX 0
|
||||
|
||||
#define PINDA_PREHEAT_X 20
|
||||
#define PINDA_PREHEAT_Y 60
|
||||
#define PINDA_PREHEAT_Z 0.15
|
||||
/*
|
||||
#define PINDA_PREHEAT_X 70
|
||||
#define PINDA_PREHEAT_Y -3
|
||||
#define PINDA_PREHEAT_Z 1*/
|
||||
#define PINDA_HEAT_T 120 //time in s
|
||||
|
||||
#define PINDA_MIN_T 50
|
||||
#define PINDA_STEP_T 10
|
||||
#define PINDA_MAX_T 100
|
||||
|
||||
#define PING_TIME 60 //time in s
|
||||
#define PING_TIME_LONG 600 //10 min; used when length of commands buffer > 0 to avoid 0 triggering when dealing with long gcodes
|
||||
#define PING_ALLERT_PERIOD 60 //time in s
|
||||
|
||||
#define NC_TIME 10 //time in s for periodic important status messages sending which needs reponse from monitoring
|
||||
#define NC_BUTTON_LONG_PRESS 15 //time in s
|
||||
|
||||
#define LONG_PRESS_TIME 1000 //time in ms for button long press
|
||||
#define BUTTON_BLANKING_TIME 200 //time in ms for blanking after button release
|
||||
|
||||
#define DEFAULT_PID_TEMP 210
|
||||
|
||||
#define MIN_PRINT_FAN_SPEED 75
|
||||
|
||||
|
||||
#define M600_TIMEOUT 600 //seconds
|
||||
|
||||
//#define SUPPORT_VERBOSITY
|
||||
|
||||
#define MMU_REQUIRED_FW_BUILDNR 132
|
||||
#define MMU_FORCE_STEALTH_MODE
|
||||
#define MMU_DEBUG //print communication between MMU2 and printer on serial
|
||||
//#define MMU_HAS_CUTTER
|
||||
|
||||
// This is experimental feature requested by our test department.
|
||||
// There is no known use for ordinary user. If enabled by this macro
|
||||
// and enabled from printer menu (not enabled by default). It cuts filament
|
||||
// every time when switching filament from gcode. MMU_HAS_CUTTER needs to be
|
||||
// defined.
|
||||
|
||||
//#define MMU_ALWAYS_CUT
|
||||
#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
|
||||
|
||||
#endif //__CONFIGURATION_PRUSA_H
|
||||
|
|
@ -0,0 +1,523 @@
|
|||
#ifndef CONFIGURATION_PRUSA_H
|
||||
#define CONFIGURATION_PRUSA_H
|
||||
|
||||
#include <limits.h>
|
||||
#include "printers.h"
|
||||
/*------------------------------------
|
||||
GENERAL SETTINGS
|
||||
*------------------------------------*/
|
||||
|
||||
// Printer revision
|
||||
#define PRINTER_TYPE PRINTER_MK25S
|
||||
#define PRINTER_NAME PRINTER_MK25S_NAME
|
||||
#define PRINTER_MMU_TYPE PRINTER_MK25S_MMU2
|
||||
#define PRINTER_MMU_NAME PRINTER_MK25S_MMU2_NAME
|
||||
#define FILAMENT_SIZE "1_75mm_MK25"
|
||||
#define NOZZLE_TYPE "E3Dv6full"
|
||||
|
||||
// Developer flag
|
||||
#define DEVELOPER
|
||||
|
||||
// Printer name
|
||||
#define CUSTOM_MENDEL_NAME "Prusa i3 MK2.5S"
|
||||
|
||||
// Electronics
|
||||
#define MOTHERBOARD BOARD_RAMBO_MINI_1_3
|
||||
|
||||
#define HEATBED_V2
|
||||
#define STEEL_SHEET
|
||||
#define TACH0PULLUP
|
||||
|
||||
// Uncomment the below for the E3D PT100 temperature sensor (with or without PT100 Amplifier)
|
||||
//#define E3D_PT100_EXTRUDER_WITH_AMP
|
||||
//#define E3D_PT100_EXTRUDER_NO_AMP
|
||||
//#define E3D_PT100_BED_WITH_AMP
|
||||
//#define E3D_PT100_BED_NO_AMP
|
||||
|
||||
|
||||
/*------------------------------------
|
||||
AXIS SETTINGS
|
||||
*------------------------------------*/
|
||||
|
||||
// Steps per unit {X,Y,Z,E}
|
||||
#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,133}
|
||||
|
||||
// Endstop inverting
|
||||
#define X_MIN_ENDSTOP_INVERTING 0 // set to 1 to invert the logic of the endstop.
|
||||
#define Y_MIN_ENDSTOP_INVERTING 0 // set to 1 to invert the logic of the endstop.
|
||||
#define Z_MIN_ENDSTOP_INVERTING 0 // set to 1 to invert the logic of the endstop.
|
||||
|
||||
// Direction inverting
|
||||
#define INVERT_X_DIR 0 // for Mendel set to 0, for Orca set to 1
|
||||
#define INVERT_Y_DIR 0 // for Mendel set to 1, for Orca set to 0
|
||||
#define INVERT_Z_DIR 0 // for Mendel set to 0, for Orca set to 1
|
||||
#define INVERT_E0_DIR 1 // for direct drive extruder v9 set to 1, for geared extruder set to 0
|
||||
#define INVERT_E1_DIR 1 // for direct drive extruder v9 set to 1, for geared extruder set to 0
|
||||
#define INVERT_E2_DIR 1 // for direct drive extruder v9 set to 1, for geared extruder set to 0
|
||||
|
||||
// Home position
|
||||
#define MANUAL_X_HOME_POS 0
|
||||
#define MANUAL_Y_HOME_POS -2.2
|
||||
#define MANUAL_Z_HOME_POS 0.2
|
||||
|
||||
// Travel limits after homing
|
||||
#define X_MAX_POS 250
|
||||
#define X_MIN_POS 0
|
||||
#define Y_MAX_POS 210
|
||||
#define Y_MIN_POS -4
|
||||
#define Z_MAX_POS 210
|
||||
#define Z_MIN_POS 0.15
|
||||
|
||||
// Canceled home position
|
||||
#define X_CANCEL_POS 50
|
||||
#define Y_CANCEL_POS 190
|
||||
|
||||
//Pause print position
|
||||
#define X_PAUSE_POS 50
|
||||
#define Y_PAUSE_POS 190
|
||||
#define Z_PAUSE_LIFT 20
|
||||
|
||||
#define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E
|
||||
#define HOMING_FEEDRATE {3000, 3000, 800, 0} // set the homing speeds (mm/min) // 3000 is also valid for stallGuard homing. Valid range: 2200 - 3000
|
||||
|
||||
/**
|
||||
* [0,0] steel sheet print area point X coordinate in bed print area coordinates
|
||||
*/
|
||||
#define SHEET_PRINT_ZERO_REF_X 0.f
|
||||
/**
|
||||
* [0,0] steel sheet print area point Y coordinate in bed print area coordinates
|
||||
*/
|
||||
#define SHEET_PRINT_ZERO_REF_Y 0.f
|
||||
|
||||
#define DEFAULT_MAX_FEEDRATE {200, 200, 12, 120} // (mm/sec) max feedrate (M203)
|
||||
#define DEFAULT_MAX_FEEDRATE_SILENT {172, 172, 12, 120} // (mm/sec) max feedrate (M203), silent mode
|
||||
#define DEFAULT_MAX_ACCELERATION {1000, 1000, 200, 5000} // (mm/sec^2) max acceleration (M201)
|
||||
#define DEFAULT_MAX_ACCELERATION_SILENT {960, 960, 200, 5000} // (mm/sec^2) max acceleration (M201), silent mode
|
||||
|
||||
|
||||
#define DEFAULT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for printing moves (M204S)
|
||||
#define DEFAULT_RETRACT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for retracts (M204T)
|
||||
|
||||
#define MANUAL_FEEDRATE {2700, 2700, 1000, 100} // set the speeds for manual moves (mm/min)
|
||||
|
||||
//number of bytes from end of the file to start check
|
||||
#define END_FILE_SECTION 20000
|
||||
|
||||
#define Z_AXIS_ALWAYS_ON 1
|
||||
|
||||
// New XYZ calibration
|
||||
#define NEW_XYZCAL
|
||||
|
||||
// Watchdog support
|
||||
#define WATCHDOG
|
||||
|
||||
// Fan check
|
||||
#define FANCHECK
|
||||
|
||||
// Safety timer
|
||||
#define SAFETYTIMER
|
||||
#define DEFAULT_SAFETYTIMER_TIME_MINS 30
|
||||
#define FARM_DEFAULT_SAFETYTIMER_TIME_ms (45*60*1000ul)
|
||||
|
||||
// Filament sensor
|
||||
#define FILAMENT_SENSOR
|
||||
#define IR_SENSOR
|
||||
|
||||
|
||||
#define DEBUG_DCODE3
|
||||
|
||||
//#define DEBUG_BUILD
|
||||
#ifdef DEBUG_BUILD
|
||||
//#define _NO_ASM
|
||||
#define DEBUG_DCODES //D codes
|
||||
#define DEBUG_STACK_MONITOR //Stack monitor in stepper ISR
|
||||
//#define DEBUG_FSENSOR_LOG //Reports fsensor status to serial
|
||||
//#define DEBUG_CRASHDET_COUNTERS //Display crash-detection counters on LCD
|
||||
//#define DEBUG_RESUME_PRINT //Resume/save print debug enable
|
||||
//#define DEBUG_UVLO_AUTOMATIC_RECOVER // Power panic automatic recovery debug output
|
||||
//#define DEBUG_DISABLE_XMINLIMIT //x min limit ignored
|
||||
//#define DEBUG_DISABLE_XMAXLIMIT //x max limit ignored
|
||||
//#define DEBUG_DISABLE_YMINLIMIT //y min limit ignored
|
||||
//#define DEBUG_DISABLE_YMAXLIMIT //y max limit ignored
|
||||
//#define DEBUG_DISABLE_ZMINLIMIT //z min limit ignored
|
||||
//#define DEBUG_DISABLE_ZMAXLIMIT //z max limit ignored
|
||||
//#define DEBUG_DISABLE_STARTMSGS //no startup messages
|
||||
//#define DEBUG_DISABLE_MINTEMP //mintemp error ignored
|
||||
//#define DEBUG_DISABLE_SWLIMITS //sw limits ignored
|
||||
//#define DEBUG_DISABLE_LCD_STATUS_LINE //empty four lcd line
|
||||
//#define DEBUG_DISABLE_PREVENT_EXTRUDER //cold extrusion and long extrusion allowed
|
||||
//#define DEBUG_DISABLE_PRUSA_STATISTICS //disable prusa_statistics() mesages
|
||||
//#define DEBUG_XSTEP_DUP_PIN 21 //duplicate x-step output to pin 21 (SCL on P3)
|
||||
//#define DEBUG_YSTEP_DUP_PIN 21 //duplicate y-step output to pin 21 (SCL on P3)
|
||||
//#define DEBUG_DISABLE_FANCHECK //disable fan check (no ISR INT7, check disabled)
|
||||
//#define DEBUG_DUMP_TO_2ND_SERIAL //dump received characters to 2nd serial line
|
||||
//#define DEBUG_STEPPER_TIMER_MISSED // Stop on stepper timer overflow, beep and display a message.
|
||||
//#define PLANNER_DIAGNOSTICS // Show the planner queue status on printer display.
|
||||
//#define CMD_DIAGNOSTICS //Show cmd queue length on printer display
|
||||
#endif /* DEBUG_BUILD */
|
||||
|
||||
//#define FSENSOR_QUALITY
|
||||
|
||||
|
||||
/*------------------------------------
|
||||
EXTRUDER SETTINGS
|
||||
*------------------------------------*/
|
||||
|
||||
// Mintemps
|
||||
#define HEATER_0_MINTEMP 30
|
||||
#define HEATER_1_MINTEMP 5
|
||||
#define HEATER_2_MINTEMP 5
|
||||
#define HEATER_MINTEMP_DELAY 15000 // [ms] ! if changed, check maximal allowed value @ ShortTimer
|
||||
#if HEATER_MINTEMP_DELAY>USHRT_MAX
|
||||
#error "Check maximal allowed value @ ShortTimer (see HEATER_MINTEMP_DELAY definition)"
|
||||
#endif
|
||||
#define BED_MINTEMP 30
|
||||
#define BED_MINTEMP_DELAY 50000 // [ms] ! if changed, check maximal allowed value @ ShortTimer
|
||||
#if BED_MINTEMP_DELAY>USHRT_MAX
|
||||
#error "Check maximal allowed value @ ShortTimer (see BED_MINTEMP_DELAY definition)"
|
||||
#endif
|
||||
|
||||
// Maxtemps
|
||||
#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP)
|
||||
#define HEATER_0_MAXTEMP 410
|
||||
#else
|
||||
#define HEATER_0_MAXTEMP 305
|
||||
#endif
|
||||
#define HEATER_1_MAXTEMP 305
|
||||
#define HEATER_2_MAXTEMP 305
|
||||
#define BED_MAXTEMP 125
|
||||
|
||||
#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP)
|
||||
// Define PID constants for extruder with PT100
|
||||
#define DEFAULT_Kp 21.70
|
||||
#define DEFAULT_Ki 1.60
|
||||
#define DEFAULT_Kd 73.76
|
||||
#else
|
||||
// Define PID constants for extruder
|
||||
//#define DEFAULT_Kp 40.925
|
||||
//#define DEFAULT_Ki 4.875
|
||||
//#define DEFAULT_Kd 86.085
|
||||
#define DEFAULT_Kp 16.13
|
||||
#define DEFAULT_Ki 1.1625
|
||||
#define DEFAULT_Kd 56.23
|
||||
#endif
|
||||
|
||||
// Extrude mintemp
|
||||
#define EXTRUDE_MINTEMP 175
|
||||
|
||||
// Extruder cooling fans
|
||||
#define EXTRUDER_0_AUTO_FAN_PIN 8
|
||||
#define EXTRUDER_1_AUTO_FAN_PIN -1
|
||||
#define EXTRUDER_2_AUTO_FAN_PIN -1
|
||||
#define EXTRUDER_AUTO_FAN_TEMPERATURE 50
|
||||
#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed
|
||||
|
||||
|
||||
/*------------------------------------
|
||||
LOAD/UNLOAD FILAMENT SETTINGS
|
||||
*------------------------------------*/
|
||||
|
||||
// Load filament commands
|
||||
#define LOAD_FILAMENT_0 "M83"
|
||||
#define LOAD_FILAMENT_1 "G1 E70 F400"
|
||||
#define LOAD_FILAMENT_2 "G1 E40 F100"
|
||||
|
||||
// Unload filament commands
|
||||
#define UNLOAD_FILAMENT_0 "M83"
|
||||
#define UNLOAD_FILAMENT_1 "G1 E-80 F7000"
|
||||
|
||||
/*------------------------------------
|
||||
CHANGE FILAMENT SETTINGS
|
||||
*------------------------------------*/
|
||||
|
||||
// Filament change configuration
|
||||
#define FILAMENTCHANGEENABLE
|
||||
#ifdef FILAMENTCHANGEENABLE
|
||||
#define FILAMENTCHANGE_XPOS 211
|
||||
#define FILAMENTCHANGE_YPOS 0
|
||||
#define FILAMENTCHANGE_ZADD 2
|
||||
#define FILAMENTCHANGE_FIRSTRETRACT -2
|
||||
#define FILAMENTCHANGE_FINALRETRACT -80
|
||||
|
||||
#define FILAMENTCHANGE_FIRSTFEED 70 //E distance in mm for fast filament loading sequence used used in filament change (M600)
|
||||
#define FILAMENTCHANGE_FINALFEED 25 //E distance in mm for slow filament loading sequence used used in filament change (M600) and filament load (M701)
|
||||
#define FILAMENTCHANGE_RECFEED 5
|
||||
|
||||
#define FILAMENTCHANGE_XYFEED 50
|
||||
#define FILAMENTCHANGE_EFEED_FIRST 20 // feedrate in mm/s for fast filament loading sequence used in filament change (M600)
|
||||
#define FILAMENTCHANGE_EFEED_FINAL 3.3f // feedrate in mm/s for slow filament loading sequence used in filament change (M600) and filament load (M701)
|
||||
//#define FILAMENTCHANGE_RFEED 400
|
||||
#define FILAMENTCHANGE_RFEED 7000 / 60
|
||||
#define FILAMENTCHANGE_EXFEED 2
|
||||
#define FILAMENTCHANGE_ZFEED 15
|
||||
|
||||
#endif
|
||||
|
||||
/*------------------------------------
|
||||
ADDITIONAL FEATURES SETTINGS
|
||||
*------------------------------------*/
|
||||
|
||||
// Define Prusa filament runout sensor
|
||||
//#define FILAMENT_RUNOUT_SUPPORT
|
||||
|
||||
#ifdef FILAMENT_RUNOUT_SUPPORT
|
||||
#define FILAMENT_RUNOUT_SENSOR 1
|
||||
#endif
|
||||
|
||||
// temperature runaway
|
||||
#define TEMP_RUNAWAY_BED_HYSTERESIS 5
|
||||
#define TEMP_RUNAWAY_BED_TIMEOUT 360
|
||||
|
||||
#define TEMP_RUNAWAY_EXTRUDER_HYSTERESIS 15
|
||||
#define TEMP_RUNAWAY_EXTRUDER_TIMEOUT 45
|
||||
|
||||
/*------------------------------------
|
||||
MOTOR CURRENT SETTINGS
|
||||
*------------------------------------*/
|
||||
|
||||
// Motor Current setting for BIG RAMBo
|
||||
#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
|
||||
#define DIGIPOT_MOTOR_CURRENT_LOUD {135,135,135,135,135}
|
||||
|
||||
// Motor Current settings for RAMBo mini PWM value = MotorCurrentSetting * 255 / range
|
||||
#if MOTHERBOARD == BOARD_RAMBO_MINI_1_0 || MOTHERBOARD == BOARD_RAMBO_MINI_1_3
|
||||
#define MOTOR_CURRENT_PWM_RANGE 2000
|
||||
#define DEFAULT_PWM_MOTOR_CURRENT {270, 830, 450} // {XY,Z,E}
|
||||
#define DEFAULT_PWM_MOTOR_CURRENT_LOUD {540, 830, 500} // {XY,Z,E}
|
||||
#define Z_SILENT 0
|
||||
#define Z_HIGH_POWER 200
|
||||
#endif
|
||||
|
||||
/*------------------------------------
|
||||
BED SETTINGS
|
||||
*------------------------------------*/
|
||||
|
||||
// Define Mesh Bed Leveling system to enable it
|
||||
#define MESH_BED_LEVELING
|
||||
#ifdef MESH_BED_LEVELING
|
||||
|
||||
#define MBL_Z_STEP 0.01
|
||||
|
||||
// Mesh definitions
|
||||
#define MESH_MIN_X 24
|
||||
#define MESH_MAX_X 228
|
||||
#define MESH_MIN_Y 6
|
||||
#define MESH_MAX_Y 210
|
||||
|
||||
// Mesh upsample definition
|
||||
#define MESH_NUM_X_POINTS 7
|
||||
#define MESH_NUM_Y_POINTS 7
|
||||
// Mesh measure definition
|
||||
#define MESH_MEAS_NUM_X_POINTS 3
|
||||
#define MESH_MEAS_NUM_Y_POINTS 3
|
||||
|
||||
// Maximum bed level correction value
|
||||
#define BED_ADJUSTMENT_UM_MAX 100
|
||||
|
||||
#define MESH_HOME_Z_CALIB 0.2
|
||||
#define MESH_HOME_Z_SEARCH 5 //Z lift for homing, mesh bed leveling etc.
|
||||
|
||||
#define X_PROBE_OFFSET_FROM_EXTRUDER 23 // Z probe to nozzle X offset: -left +right
|
||||
#define Y_PROBE_OFFSET_FROM_EXTRUDER 5 // Z probe to nozzle Y offset: -front +behind
|
||||
#define Z_PROBE_OFFSET_FROM_EXTRUDER -0.4 // Z probe to nozzle Z offset: -below (always!)
|
||||
#endif
|
||||
|
||||
// Bed Temperature Control
|
||||
// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis
|
||||
//
|
||||
// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder.
|
||||
// If your PID_dT above is the default, and correct for your hardware/configuration, that means 7.689Hz,
|
||||
// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating.
|
||||
// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater.
|
||||
// If your configuration is significantly different than this and you don't understand the issues involved, you probably
|
||||
// shouldn't use bed PID until someone else verifies your hardware works.
|
||||
// If this is enabled, find your own PID constants below.
|
||||
#define PIDTEMPBED
|
||||
//
|
||||
//#define BED_LIMIT_SWITCHING
|
||||
|
||||
// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option.
|
||||
// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis)
|
||||
// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did,
|
||||
// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED)
|
||||
#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current
|
||||
|
||||
// Bed temperature compensation settings
|
||||
#define BED_OFFSET 10
|
||||
#define BED_OFFSET_START 40
|
||||
#define BED_OFFSET_CENTER 50
|
||||
|
||||
|
||||
#ifdef PIDTEMPBED
|
||||
//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)
|
||||
//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10)
|
||||
#if defined(E3D_PT100_BED_WITH_AMP) || defined(E3D_PT100_BED_NO_AMP)
|
||||
// Define PID constants for extruder with PT100
|
||||
#define DEFAULT_bedKp 21.70
|
||||
#define DEFAULT_bedKi 1.60
|
||||
#define DEFAULT_bedKd 73.76
|
||||
#else
|
||||
#define DEFAULT_bedKp 126.13
|
||||
#define DEFAULT_bedKi 4.30
|
||||
#define DEFAULT_bedKd 924.76
|
||||
#endif
|
||||
|
||||
//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)
|
||||
//from pidautotune
|
||||
// #define DEFAULT_bedKp 97.1
|
||||
// #define DEFAULT_bedKi 1.41
|
||||
// #define DEFAULT_bedKd 1675.16
|
||||
|
||||
// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles.
|
||||
#endif // PIDTEMPBED
|
||||
|
||||
|
||||
/*-----------------------------------
|
||||
PREHEAT SETTINGS
|
||||
*------------------------------------*/
|
||||
|
||||
#define FARM_PREHEAT_HOTEND_TEMP 250
|
||||
#define FARM_PREHEAT_HPB_TEMP 80
|
||||
#define FARM_PREHEAT_FAN_SPEED 0
|
||||
|
||||
#define PLA_PREHEAT_HOTEND_TEMP 215
|
||||
#define PLA_PREHEAT_HPB_TEMP 60
|
||||
#define PLA_PREHEAT_FAN_SPEED 0
|
||||
|
||||
#define ABS_PREHEAT_HOTEND_TEMP 255
|
||||
#define ABS_PREHEAT_HPB_TEMP 100
|
||||
#define ABS_PREHEAT_FAN_SPEED 0
|
||||
|
||||
#define HIPS_PREHEAT_HOTEND_TEMP 220
|
||||
#define HIPS_PREHEAT_HPB_TEMP 100
|
||||
#define HIPS_PREHEAT_FAN_SPEED 0
|
||||
|
||||
#define PP_PREHEAT_HOTEND_TEMP 254
|
||||
#define PP_PREHEAT_HPB_TEMP 100
|
||||
#define PP_PREHEAT_FAN_SPEED 0
|
||||
|
||||
#define PET_PREHEAT_HOTEND_TEMP 230
|
||||
#define PET_PREHEAT_HPB_TEMP 85
|
||||
#define PET_PREHEAT_FAN_SPEED 0
|
||||
|
||||
#define FLEX_PREHEAT_HOTEND_TEMP 240
|
||||
#define FLEX_PREHEAT_HPB_TEMP 50
|
||||
#define FLEX_PREHEAT_FAN_SPEED 0
|
||||
|
||||
/*------------------------------------
|
||||
THERMISTORS SETTINGS
|
||||
*------------------------------------*/
|
||||
|
||||
//
|
||||
//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table
|
||||
//
|
||||
//// Temperature sensor settings:
|
||||
// -2 is thermocouple with MAX6675 (only for sensor 0)
|
||||
// -1 is thermocouple with AD595
|
||||
// 0 is not used
|
||||
// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup)
|
||||
// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup)
|
||||
// 3 is Mendel-parts thermistor (4.7k pullup)
|
||||
// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !!
|
||||
// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup)
|
||||
// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup)
|
||||
// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup)
|
||||
// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup)
|
||||
// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup)
|
||||
// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup)
|
||||
// 10 is 100k RS thermistor 198-961 (4.7k pullup)
|
||||
// 11 is 100k beta 3950 1% thermistor (4.7k pullup)
|
||||
// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed)
|
||||
// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE"
|
||||
// 20 is the PT100 circuit found in the Ultimainboard V2.x
|
||||
// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950
|
||||
//
|
||||
// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k
|
||||
// (but gives greater accuracy and more stable PID)
|
||||
// 51 is 100k thermistor - EPCOS (1k pullup)
|
||||
// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup)
|
||||
// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup)
|
||||
//
|
||||
// 1047 is Pt1000 with 4k7 pullup
|
||||
// 1010 is Pt1000 with 1k pullup (non standard)
|
||||
// 147 is Pt100 with 4k7 pullup
|
||||
// 148 is E3D Pt100 with 4k7 pullup and no PT100 Amplifier on a MiniRambo 1.3a
|
||||
// 247 is Pt100 with 4k7 pullup and PT100 Amplifier
|
||||
// 110 is Pt100 with 1k pullup (non standard)
|
||||
|
||||
#if defined(E3D_PT100_EXTRUDER_WITH_AMP)
|
||||
#define TEMP_SENSOR_0 247
|
||||
#elif defined(E3D_PT100_EXTRUDER_NO_AMP)
|
||||
#define TEMP_SENSOR_0 148
|
||||
#else
|
||||
#define TEMP_SENSOR_0 5
|
||||
#endif
|
||||
#define TEMP_SENSOR_1 0
|
||||
#define TEMP_SENSOR_2 0
|
||||
#if defined(E3D_PT100_BED_WITH_AMP)
|
||||
#define TEMP_SENSOR_BED 247
|
||||
#elif defined(E3D_PT100_BED_NO_AMP)
|
||||
#define TEMP_SENSOR_BED 148
|
||||
#else
|
||||
#define TEMP_SENSOR_BED 1
|
||||
#endif
|
||||
#define TEMP_SENSOR_PINDA 1
|
||||
|
||||
#define STACK_GUARD_TEST_VALUE 0xA2A2
|
||||
|
||||
#define MAX_BED_TEMP_CALIBRATION 50
|
||||
#define MAX_HOTEND_TEMP_CALIBRATION 50
|
||||
|
||||
#define MAX_E_STEPS_PER_UNIT 250
|
||||
#define MIN_E_STEPS_PER_UNIT 100
|
||||
|
||||
#define Z_BABYSTEP_MIN -3999
|
||||
#define Z_BABYSTEP_MAX 0
|
||||
|
||||
#define PINDA_PREHEAT_X 20
|
||||
#define PINDA_PREHEAT_Y 60
|
||||
#define PINDA_PREHEAT_Z 0.15
|
||||
/*
|
||||
#define PINDA_PREHEAT_X 70
|
||||
#define PINDA_PREHEAT_Y -3
|
||||
#define PINDA_PREHEAT_Z 1*/
|
||||
#define PINDA_HEAT_T 120 //time in s
|
||||
|
||||
#define PINDA_MIN_T 50
|
||||
#define PINDA_STEP_T 10
|
||||
#define PINDA_MAX_T 100
|
||||
|
||||
#define PING_TIME 60 //time in s
|
||||
#define PING_TIME_LONG 600 //10 min; used when length of commands buffer > 0 to avoid 0 triggering when dealing with long gcodes
|
||||
#define PING_ALLERT_PERIOD 60 //time in s
|
||||
|
||||
#define NC_TIME 10 //time in s for periodic important status messages sending which needs reponse from monitoring
|
||||
#define NC_BUTTON_LONG_PRESS 15 //time in s
|
||||
|
||||
#define LONG_PRESS_TIME 1000 //time in ms for button long press
|
||||
#define BUTTON_BLANKING_TIME 200 //time in ms for blanking after button release
|
||||
|
||||
#define DEFAULT_PID_TEMP 210
|
||||
|
||||
#define MIN_PRINT_FAN_SPEED 75
|
||||
|
||||
|
||||
#define M600_TIMEOUT 600 //seconds
|
||||
|
||||
//#define SUPPORT_VERBOSITY
|
||||
|
||||
#define MMU_REQUIRED_FW_BUILDNR 132
|
||||
#define MMU_FORCE_STEALTH_MODE
|
||||
#define MMU_DEBUG //print communication between MMU2 and printer on serial
|
||||
//#define MMU_HAS_CUTTER
|
||||
|
||||
// This is experimental feature requested by our test department.
|
||||
// There is no known use for ordinary user. If enabled by this macro
|
||||
// and enabled from printer menu (not enabled by default). It cuts filament
|
||||
// every time when switching filament from gcode. MMU_HAS_CUTTER needs to be
|
||||
// defined.
|
||||
|
||||
//#define MMU_ALWAYS_CUT
|
||||
#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
|
||||
|
||||
#endif //__CONFIGURATION_PRUSA_H
|
||||
|
|
@ -2,12 +2,17 @@
|
|||
#define CONFIGURATION_PRUSA_H
|
||||
|
||||
#include <limits.h>
|
||||
//-//
|
||||
#include "printers.h"
|
||||
/*------------------------------------
|
||||
GENERAL SETTINGS
|
||||
*------------------------------------*/
|
||||
|
||||
// Printer revision
|
||||
#define PRINTER_TYPE PRINTER_MK3
|
||||
#define PRINTER_NAME PRINTER_MK3_NAME
|
||||
#define PRINTER_MMU_TYPE PRINTER_MK3_MMU2
|
||||
#define PRINTER_MMU_NAME PRINTER_MK3_MMU2_NAME
|
||||
#define FILAMENT_SIZE "1_75mm_MK3"
|
||||
#define NOZZLE_TYPE "E3Dv6full"
|
||||
|
||||
|
|
@ -131,6 +136,7 @@
|
|||
// Safety timer
|
||||
#define SAFETYTIMER
|
||||
#define DEFAULT_SAFETYTIMER_TIME_MINS 30
|
||||
#define FARM_DEFAULT_SAFETYTIMER_TIME_ms (45*60*1000ul)
|
||||
|
||||
// Filament sensor
|
||||
#define FILAMENT_SENSOR
|
||||
|
|
@ -190,7 +196,7 @@
|
|||
#define LINEARITY_CORRECTION
|
||||
#define TMC2130_LINEARITY_CORRECTION
|
||||
#define TMC2130_LINEARITY_CORRECTION_XYZ
|
||||
//#define TMC2130_VARIABLE_RESOLUTION
|
||||
#define TMC2130_VARIABLE_RESOLUTION
|
||||
|
||||
|
||||
|
||||
|
|
@ -400,10 +406,10 @@
|
|||
#define MBL_Z_STEP 0.01
|
||||
|
||||
// Mesh definitions
|
||||
#define MESH_MIN_X 35
|
||||
#define MESH_MAX_X 238
|
||||
#define MESH_MIN_X 24
|
||||
#define MESH_MAX_X 228
|
||||
#define MESH_MIN_Y 6
|
||||
#define MESH_MAX_Y 202
|
||||
#define MESH_MAX_Y 210
|
||||
|
||||
// Mesh upsample definition
|
||||
#define MESH_NUM_X_POINTS 7
|
||||
|
|
@ -480,7 +486,7 @@
|
|||
*------------------------------------*/
|
||||
|
||||
#define FARM_PREHEAT_HOTEND_TEMP 250
|
||||
#define FARM_PREHEAT_HPB_TEMP 60
|
||||
#define FARM_PREHEAT_HPB_TEMP 80
|
||||
#define FARM_PREHEAT_FAN_SPEED 0
|
||||
|
||||
#define PLA_PREHEAT_HOTEND_TEMP 215
|
||||
|
|
@ -626,6 +632,7 @@
|
|||
#define MMU_REQUIRED_FW_BUILDNR 83
|
||||
#define MMU_HWRESET
|
||||
#define MMU_DEBUG //print communication between MMU2 and printer on serial
|
||||
//#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
|
||||
|
||||
#endif //__CONFIGURATION_PRUSA_H
|
||||
|
|
|
|||
|
|
@ -0,0 +1,648 @@
|
|||
#ifndef CONFIGURATION_PRUSA_H
|
||||
#define CONFIGURATION_PRUSA_H
|
||||
|
||||
#include <limits.h>
|
||||
#include "printers.h"
|
||||
/*------------------------------------
|
||||
GENERAL SETTINGS
|
||||
*------------------------------------*/
|
||||
|
||||
// Printer revision
|
||||
#define PRINTER_TYPE PRINTER_MK3S
|
||||
#define PRINTER_NAME PRINTER_MK3S_NAME
|
||||
#define PRINTER_MMU_TYPE PRINTER_MK3S_MMU2
|
||||
#define PRINTER_MMU_NAME PRINTER_MK3S_MMU2_NAME
|
||||
#define FILAMENT_SIZE "1_75mm_MK3"
|
||||
#define NOZZLE_TYPE "E3Dv6full"
|
||||
|
||||
// Developer flag
|
||||
#define DEVELOPER
|
||||
|
||||
// Printer name
|
||||
#define CUSTOM_MENDEL_NAME "Prusa i3 MK3S"
|
||||
|
||||
// Electronics
|
||||
#define MOTHERBOARD BOARD_EINSY_1_0a
|
||||
#define STEEL_SHEET
|
||||
#define HAS_SECOND_SERIAL_PORT
|
||||
|
||||
// PSU
|
||||
#define PSU_Delta // uncomment if DeltaElectronics PSU installed
|
||||
|
||||
|
||||
// Uncomment the below for the E3D PT100 temperature sensor (with or without PT100 Amplifier)
|
||||
//#define E3D_PT100_EXTRUDER_WITH_AMP
|
||||
//#define E3D_PT100_EXTRUDER_NO_AMP
|
||||
//#define E3D_PT100_BED_WITH_AMP
|
||||
//#define E3D_PT100_BED_NO_AMP
|
||||
|
||||
|
||||
/*------------------------------------
|
||||
AXIS SETTINGS
|
||||
*------------------------------------*/
|
||||
|
||||
// Steps per unit {X,Y,Z,E}
|
||||
//#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,140}
|
||||
#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,280}
|
||||
//#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,560}
|
||||
|
||||
// Endstop inverting
|
||||
#define X_MIN_ENDSTOP_INVERTING 0 // set to 1 to invert the logic of the endstop.
|
||||
#define Y_MIN_ENDSTOP_INVERTING 0 // set to 1 to invert the logic of the endstop.
|
||||
#define Z_MIN_ENDSTOP_INVERTING 0 // set to 1 to invert the logic of the endstop.
|
||||
|
||||
// Direction inverting
|
||||
#define INVERT_X_DIR 1 // for Mendel set to 0, for Orca set to 1
|
||||
#define INVERT_Y_DIR 0 // for Mendel set to 1, for Orca set to 0
|
||||
#define INVERT_Z_DIR 1 // for Mendel set to 0, for Orca set to 1
|
||||
#define INVERT_E0_DIR 0 // for direct drive extruder v9 set to 1, for geared extruder set to 0
|
||||
#define INVERT_E1_DIR 0 // for direct drive extruder v9 set to 1, for geared extruder set to 0
|
||||
#define INVERT_E2_DIR 0 // for direct drive extruder v9 set to 1, for geared extruder set to 0
|
||||
|
||||
// Home position
|
||||
#define MANUAL_X_HOME_POS 0
|
||||
#define MANUAL_Y_HOME_POS -2.2
|
||||
#define MANUAL_Z_HOME_POS 0.2
|
||||
|
||||
// Travel limits after homing
|
||||
#define X_MAX_POS 255
|
||||
#define X_MIN_POS 0
|
||||
#define Y_MAX_POS 212.5
|
||||
#define Y_MIN_POS -4 //orig -4
|
||||
#define Z_MAX_POS 210
|
||||
#define Z_MIN_POS 0.15
|
||||
|
||||
// Canceled home position
|
||||
#define X_CANCEL_POS 50
|
||||
#define Y_CANCEL_POS 190
|
||||
|
||||
//Pause print position
|
||||
#define X_PAUSE_POS 50
|
||||
#define Y_PAUSE_POS 190
|
||||
#define Z_PAUSE_LIFT 20
|
||||
|
||||
#define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E
|
||||
#define HOMING_FEEDRATE {3000, 3000, 800, 0} // set the homing speeds (mm/min) // 3000 is also valid for stallGuard homing. Valid range: 2200 - 3000
|
||||
|
||||
//#define DEFAULT_Y_OFFSET 4.f // Default distance of Y_MIN_POS point from endstop, when the printer is not calibrated.
|
||||
/**
|
||||
* [0,0] steel sheet print area point X coordinate in bed print area coordinates
|
||||
*/
|
||||
#define SHEET_PRINT_ZERO_REF_X 0.f
|
||||
/**
|
||||
* [0,0] steel sheet print area point Y coordinate in bed print area coordinates
|
||||
*/
|
||||
#define SHEET_PRINT_ZERO_REF_Y -2.f
|
||||
|
||||
#define DEFAULT_MAX_FEEDRATE {200, 200, 12, 120} // (mm/sec) max feedrate (M203)
|
||||
#define DEFAULT_MAX_FEEDRATE_SILENT {100, 100, 12, 120} // (mm/sec) max feedrate (M203), silent mode
|
||||
|
||||
#define DEFAULT_MAX_ACCELERATION {1000, 1000, 200, 5000} // (mm/sec^2) max acceleration (M201)
|
||||
#define DEFAULT_MAX_ACCELERATION_SILENT {960, 960, 200, 5000} // (mm/sec^2) max acceleration (M201), silent mode
|
||||
|
||||
|
||||
#define DEFAULT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for printing moves (M204S)
|
||||
#define DEFAULT_RETRACT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for retracts (M204T)
|
||||
|
||||
#define MANUAL_FEEDRATE {2700, 2700, 1000, 100} // set the speeds for manual moves (mm/min)
|
||||
|
||||
//Silent mode limits
|
||||
#define SILENT_MAX_ACCEL_XY 960ul // max acceleration in silent mode in mm/s^2
|
||||
#define SILENT_MAX_FEEDRATE_XY 100 // max feedrate in mm/s
|
||||
|
||||
//Normal mode limits
|
||||
#define NORMAL_MAX_ACCEL_XY 2500ul // max acceleration in normal mode in mm/s^2
|
||||
#define NORMAL_MAX_FEEDRATE_XY 200 // max feedrate in mm/s
|
||||
|
||||
//number of bytes from end of the file to start check
|
||||
#define END_FILE_SECTION 20000
|
||||
|
||||
#define Z_AXIS_ALWAYS_ON 1
|
||||
|
||||
//Crash detection
|
||||
#define CRASHDET_TIMER 45 //seconds
|
||||
#define CRASHDET_COUNTER_MAX 3
|
||||
|
||||
// New XYZ calibration
|
||||
#define NEW_XYZCAL
|
||||
|
||||
// Watchdog support
|
||||
#define WATCHDOG
|
||||
|
||||
// Power panic
|
||||
#define UVLO_SUPPORT
|
||||
|
||||
// Fan check
|
||||
#define FANCHECK
|
||||
|
||||
// Safety timer
|
||||
#define SAFETYTIMER
|
||||
#define DEFAULT_SAFETYTIMER_TIME_MINS 30
|
||||
#define FARM_DEFAULT_SAFETYTIMER_TIME_ms (45*60*1000ul)
|
||||
|
||||
// Filament sensor
|
||||
#define FILAMENT_SENSOR
|
||||
#define IR_SENSOR
|
||||
|
||||
// Backlash -
|
||||
//#define BACKLASH_X
|
||||
//#define BACKLASH_Y
|
||||
|
||||
|
||||
// Minimum ambient temperature limit to start triggering MINTEMP errors [C]
|
||||
// this value is litlebit higher that real limit, because ambient termistor is on the board and is temperated from it,
|
||||
// temperature inside the case is around 31C for ambient temperature 25C, when the printer is powered on long time and idle
|
||||
// the real limit is 15C (same as MINTEMP limit), this is because 15C is end of scale for both used thermistors (bed, heater)
|
||||
#define MINTEMP_MINAMBIENT 25
|
||||
#define MINTEMP_MINAMBIENT_RAW 978
|
||||
|
||||
#define DEBUG_DCODE3
|
||||
|
||||
//#define DEBUG_BUILD
|
||||
//#define DEBUG_SEC_LANG //secondary language debug output at startup
|
||||
//#define DEBUG_W25X20CL //debug external spi flash
|
||||
#ifdef DEBUG_BUILD
|
||||
//#define _NO_ASM
|
||||
#define DEBUG_DCODES //D codes
|
||||
#define DEBUG_STACK_MONITOR //Stack monitor in stepper ISR
|
||||
//#define DEBUG_FSENSOR_LOG //Reports fsensor status to serial
|
||||
//#define DEBUG_CRASHDET_COUNTERS //Display crash-detection counters on LCD
|
||||
//#define DEBUG_RESUME_PRINT //Resume/save print debug enable
|
||||
//#define DEBUG_UVLO_AUTOMATIC_RECOVER // Power panic automatic recovery debug output
|
||||
//#define DEBUG_DISABLE_XMINLIMIT //x min limit ignored
|
||||
//#define DEBUG_DISABLE_XMAXLIMIT //x max limit ignored
|
||||
//#define DEBUG_DISABLE_YMINLIMIT //y min limit ignored
|
||||
//#define DEBUG_DISABLE_YMAXLIMIT //y max limit ignored
|
||||
//#define DEBUG_DISABLE_ZMINLIMIT //z min limit ignored
|
||||
//#define DEBUG_DISABLE_ZMAXLIMIT //z max limit ignored
|
||||
#define DEBUG_DISABLE_STARTMSGS //no startup messages
|
||||
//#define DEBUG_DISABLE_MINTEMP //mintemp error ignored
|
||||
//#define DEBUG_DISABLE_SWLIMITS //sw limits ignored
|
||||
//#define DEBUG_DISABLE_LCD_STATUS_LINE //empty four lcd line
|
||||
//#define DEBUG_DISABLE_PREVENT_EXTRUDER //cold extrusion and long extrusion allowed
|
||||
//#define DEBUG_DISABLE_PRUSA_STATISTICS //disable prusa_statistics() mesages
|
||||
//#define DEBUG_DISABLE_FORCE_SELFTEST //disable force selftest
|
||||
//#define DEBUG_XSTEP_DUP_PIN 21 //duplicate x-step output to pin 21 (SCL on P3)
|
||||
//#define DEBUG_YSTEP_DUP_PIN 21 //duplicate y-step output to pin 21 (SCL on P3)
|
||||
//#define DEBUG_DISABLE_FANCHECK //disable fan check (no ISR INT7, check disabled)
|
||||
//#define DEBUG_DISABLE_FSENSORCHECK //disable fsensor check (no ISR INT7, check disabled)
|
||||
#define DEBUG_DUMP_TO_2ND_SERIAL //dump received characters to 2nd serial line
|
||||
#define DEBUG_STEPPER_TIMER_MISSED // Stop on stepper timer overflow, beep and display a message.
|
||||
#define PLANNER_DIAGNOSTICS // Show the planner queue status on printer display.
|
||||
#define CMD_DIAGNOSTICS //Show cmd queue length on printer display
|
||||
#endif /* DEBUG_BUILD */
|
||||
|
||||
//#define FSENSOR_QUALITY
|
||||
|
||||
|
||||
#define LINEARITY_CORRECTION
|
||||
#define TMC2130_LINEARITY_CORRECTION
|
||||
#define TMC2130_LINEARITY_CORRECTION_XYZ
|
||||
#define TMC2130_VARIABLE_RESOLUTION
|
||||
|
||||
|
||||
|
||||
/*------------------------------------
|
||||
TMC2130 default settings
|
||||
*------------------------------------*/
|
||||
|
||||
#define TMC2130_FCLK 12000000 // fclk = 12MHz
|
||||
|
||||
#define TMC2130_USTEPS_XY 16 // microstep resolution for XY axes
|
||||
#define TMC2130_USTEPS_Z 16 // microstep resolution for Z axis
|
||||
#define TMC2130_USTEPS_E 32 // microstep resolution for E axis
|
||||
#define TMC2130_INTPOL_XY 1 // extrapolate 256 for XY axes
|
||||
#define TMC2130_INTPOL_Z 1 // extrapolate 256 for Z axis
|
||||
#define TMC2130_INTPOL_E 1 // extrapolate 256 for E axis
|
||||
|
||||
#define TMC2130_PWM_GRAD_X 2 // PWMCONF
|
||||
#define TMC2130_PWM_AMPL_X 230 // PWMCONF
|
||||
#define TMC2130_PWM_AUTO_X 1 // PWMCONF
|
||||
#define TMC2130_PWM_FREQ_X 2 // PWMCONF
|
||||
|
||||
#define TMC2130_PWM_GRAD_Y 2 // PWMCONF
|
||||
#define TMC2130_PWM_AMPL_Y 235 // PWMCONF
|
||||
#define TMC2130_PWM_AUTO_Y 1 // PWMCONF
|
||||
#define TMC2130_PWM_FREQ_Y 2 // PWMCONF
|
||||
|
||||
#define TMC2130_PWM_GRAD_Z 4 // PWMCONF
|
||||
#define TMC2130_PWM_AMPL_Z 200 // PWMCONF
|
||||
#define TMC2130_PWM_AUTO_Z 1 // PWMCONF
|
||||
#define TMC2130_PWM_FREQ_Z 2 // PWMCONF
|
||||
|
||||
#define TMC2130_PWM_GRAD_E 4 // PWMCONF
|
||||
#define TMC2130_PWM_AMPL_E 240 // PWMCONF
|
||||
#define TMC2130_PWM_AUTO_E 1 // PWMCONF
|
||||
#define TMC2130_PWM_FREQ_E 2 // PWMCONF
|
||||
|
||||
#define TMC2130_TOFF_XYZ 3 // CHOPCONF // fchop = 27.778kHz
|
||||
#define TMC2130_TOFF_E 3 // CHOPCONF // fchop = 27.778kHz
|
||||
//#define TMC2130_TOFF_E 4 // CHOPCONF // fchop = 21.429kHz
|
||||
//#define TMC2130_TOFF_E 5 // CHOPCONF // fchop = 17.442kHz
|
||||
|
||||
//#define TMC2130_STEALTH_E // Extruder stealthChop mode
|
||||
//#define TMC2130_CNSTOFF_E // Extruder constant-off-time mode (similar to MK2)
|
||||
|
||||
//#define TMC2130_PWM_DIV 683 // PWM frequency divider (1024, 683, 512, 410)
|
||||
#define TMC2130_PWM_DIV 512 // PWM frequency divider (1024, 683, 512, 410)
|
||||
#define TMC2130_PWM_CLK (2 * TMC2130_FCLK / TMC2130_PWM_DIV) // PWM frequency (23.4kHz, 35.1kHz, 46.9kHz, 58.5kHz for 12MHz fclk)
|
||||
|
||||
#define TMC2130_TPWMTHRS 0 // TPWMTHRS - Sets the switching speed threshold based on TSTEP from stealthChop to spreadCycle mode
|
||||
#define TMC2130_THIGH 0 // THIGH - unused
|
||||
|
||||
//#define TMC2130_TCOOLTHRS_X 450 // TCOOLTHRS - coolstep treshold
|
||||
//#define TMC2130_TCOOLTHRS_Y 450 // TCOOLTHRS - coolstep treshold
|
||||
#define TMC2130_TCOOLTHRS_X 430 // TCOOLTHRS - coolstep treshold
|
||||
#define TMC2130_TCOOLTHRS_Y 430 // TCOOLTHRS - coolstep treshold
|
||||
#define TMC2130_TCOOLTHRS_Z 500 // TCOOLTHRS - coolstep treshold
|
||||
#define TMC2130_TCOOLTHRS_E 500 // TCOOLTHRS - coolstep treshold
|
||||
|
||||
#define TMC2130_SG_HOMING 1 // stallguard homing
|
||||
#define TMC2130_SG_THRS_X 3 // stallguard sensitivity for X axis
|
||||
#define TMC2130_SG_THRS_Y 3 // stallguard sensitivity for Y axis
|
||||
#define TMC2130_SG_THRS_Z 4 // stallguard sensitivity for Z axis
|
||||
#define TMC2130_SG_THRS_E 3 // stallguard sensitivity for E axis
|
||||
|
||||
//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_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_STEALTH_Z
|
||||
|
||||
//#define TMC2130_SERVICE_CODES_M910_M918
|
||||
|
||||
//#define TMC2130_DEBUG
|
||||
//#define TMC2130_DEBUG_WR
|
||||
//#define TMC2130_DEBUG_RD
|
||||
|
||||
|
||||
/*------------------------------------
|
||||
EXTRUDER SETTINGS
|
||||
*------------------------------------*/
|
||||
|
||||
// Mintemps
|
||||
#define HEATER_0_MINTEMP 15
|
||||
#define HEATER_1_MINTEMP 5
|
||||
#define HEATER_2_MINTEMP 5
|
||||
#define HEATER_MINTEMP_DELAY 15000 // [ms] ! if changed, check maximal allowed value @ ShortTimer
|
||||
#if HEATER_MINTEMP_DELAY>USHRT_MAX
|
||||
#error "Check maximal allowed value @ ShortTimer (see HEATER_MINTEMP_DELAY definition)"
|
||||
#endif
|
||||
#define BED_MINTEMP 15
|
||||
#define BED_MINTEMP_DELAY 50000 // [ms] ! if changed, check maximal allowed value @ ShortTimer
|
||||
#if BED_MINTEMP_DELAY>USHRT_MAX
|
||||
#error "Check maximal allowed value @ ShortTimer (see BED_MINTEMP_DELAY definition)"
|
||||
#endif
|
||||
|
||||
// Maxtemps
|
||||
#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP)
|
||||
#define HEATER_0_MAXTEMP 410
|
||||
#else
|
||||
#define HEATER_0_MAXTEMP 305
|
||||
#endif
|
||||
#define HEATER_1_MAXTEMP 305
|
||||
#define HEATER_2_MAXTEMP 305
|
||||
#define BED_MAXTEMP 125
|
||||
|
||||
#if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP)
|
||||
// Define PID constants for extruder with PT100
|
||||
#define DEFAULT_Kp 21.70
|
||||
#define DEFAULT_Ki 1.60
|
||||
#define DEFAULT_Kd 73.76
|
||||
#else
|
||||
// Define PID constants for extruder
|
||||
//#define DEFAULT_Kp 40.925
|
||||
//#define DEFAULT_Ki 4.875
|
||||
//#define DEFAULT_Kd 86.085
|
||||
#define DEFAULT_Kp 16.13
|
||||
#define DEFAULT_Ki 1.1625
|
||||
#define DEFAULT_Kd 56.23
|
||||
#endif
|
||||
|
||||
// Extrude mintemp
|
||||
#define EXTRUDE_MINTEMP 175
|
||||
|
||||
// Extruder cooling fans
|
||||
#define EXTRUDER_0_AUTO_FAN_PIN 8
|
||||
#define EXTRUDER_1_AUTO_FAN_PIN -1
|
||||
#define EXTRUDER_2_AUTO_FAN_PIN -1
|
||||
#define EXTRUDER_AUTO_FAN_TEMPERATURE 50
|
||||
#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed
|
||||
|
||||
|
||||
|
||||
/*------------------------------------
|
||||
LOAD/UNLOAD FILAMENT SETTINGS
|
||||
*------------------------------------*/
|
||||
|
||||
// Load filament commands
|
||||
#define LOAD_FILAMENT_0 "M83"
|
||||
#define LOAD_FILAMENT_1 "G1 E70 F400"
|
||||
#define LOAD_FILAMENT_2 "G1 E40 F100"
|
||||
|
||||
// Unload filament commands
|
||||
#define UNLOAD_FILAMENT_0 "M83"
|
||||
#define UNLOAD_FILAMENT_1 "G1 E-80 F7000"
|
||||
|
||||
/*------------------------------------
|
||||
CHANGE FILAMENT SETTINGS
|
||||
*------------------------------------*/
|
||||
|
||||
// Filament change configuration
|
||||
#define FILAMENTCHANGEENABLE
|
||||
#ifdef FILAMENTCHANGEENABLE
|
||||
#define FILAMENTCHANGE_XPOS 211
|
||||
#define FILAMENTCHANGE_YPOS 0
|
||||
#define FILAMENTCHANGE_ZADD 2
|
||||
#define FILAMENTCHANGE_FIRSTRETRACT -2
|
||||
#define FILAMENTCHANGE_FINALRETRACT -80
|
||||
|
||||
#define FILAMENTCHANGE_FIRSTFEED 70 //E distance in mm for fast filament loading sequence used used in filament change (M600)
|
||||
#define FILAMENTCHANGE_FINALFEED 25 //E distance in mm for slow filament loading sequence used used in filament change (M600) and filament load (M701)
|
||||
#define FILAMENTCHANGE_RECFEED 5
|
||||
|
||||
#define FILAMENTCHANGE_XYFEED 50
|
||||
#define FILAMENTCHANGE_EFEED_FIRST 20 // feedrate in mm/s for fast filament loading sequence used in filament change (M600)
|
||||
#define FILAMENTCHANGE_EFEED_FINAL 3.3f // feedrate in mm/s for slow filament loading sequence used in filament change (M600) and filament load (M701)
|
||||
//#define FILAMENTCHANGE_RFEED 400
|
||||
#define FILAMENTCHANGE_RFEED 7000 / 60
|
||||
#define FILAMENTCHANGE_EXFEED 2
|
||||
#define FILAMENTCHANGE_ZFEED 15
|
||||
|
||||
#endif
|
||||
|
||||
/*------------------------------------
|
||||
ADDITIONAL FEATURES SETTINGS
|
||||
*------------------------------------*/
|
||||
|
||||
// Define Prusa filament runout sensor
|
||||
//#define FILAMENT_RUNOUT_SUPPORT
|
||||
|
||||
#ifdef FILAMENT_RUNOUT_SUPPORT
|
||||
#define FILAMENT_RUNOUT_SENSOR 1
|
||||
#endif
|
||||
|
||||
// temperature runaway
|
||||
#define TEMP_RUNAWAY_BED_HYSTERESIS 5
|
||||
#define TEMP_RUNAWAY_BED_TIMEOUT 360
|
||||
|
||||
#define TEMP_RUNAWAY_EXTRUDER_HYSTERESIS 15
|
||||
#define TEMP_RUNAWAY_EXTRUDER_TIMEOUT 45
|
||||
|
||||
/*------------------------------------
|
||||
MOTOR CURRENT SETTINGS
|
||||
*------------------------------------*/
|
||||
|
||||
// Motor Current settings for Einsy/tmc = 0..63
|
||||
#define MOTOR_CURRENT_PWM_RANGE 63
|
||||
|
||||
/*------------------------------------
|
||||
BED SETTINGS
|
||||
*------------------------------------*/
|
||||
|
||||
// Define Mesh Bed Leveling system to enable it
|
||||
#define MESH_BED_LEVELING
|
||||
#ifdef MESH_BED_LEVELING
|
||||
|
||||
#define MBL_Z_STEP 0.01
|
||||
|
||||
// Mesh definitions
|
||||
#define MESH_MIN_X 24
|
||||
#define MESH_MAX_X 228
|
||||
#define MESH_MIN_Y 6
|
||||
#define MESH_MAX_Y 210
|
||||
|
||||
// Mesh upsample definition
|
||||
#define MESH_NUM_X_POINTS 7
|
||||
#define MESH_NUM_Y_POINTS 7
|
||||
// Mesh measure definition
|
||||
#define MESH_MEAS_NUM_X_POINTS 3
|
||||
#define MESH_MEAS_NUM_Y_POINTS 3
|
||||
|
||||
// Maximum bed level correction value
|
||||
#define BED_ADJUSTMENT_UM_MAX 100
|
||||
|
||||
#define MESH_HOME_Z_CALIB 0.2
|
||||
#define MESH_HOME_Z_SEARCH 5 //Z lift for homing, mesh bed leveling etc.
|
||||
|
||||
#define X_PROBE_OFFSET_FROM_EXTRUDER 23 // Z probe to nozzle X offset: -left +right
|
||||
#define Y_PROBE_OFFSET_FROM_EXTRUDER 5 // Z probe to nozzle Y offset: -front +behind
|
||||
#define Z_PROBE_OFFSET_FROM_EXTRUDER -0.4 // Z probe to nozzle Z offset: -below (always!)
|
||||
#endif
|
||||
|
||||
// Bed Temperature Control
|
||||
// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis
|
||||
//
|
||||
// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder.
|
||||
// If your PID_dT above is the default, and correct for your hardware/configuration, that means 7.689Hz,
|
||||
// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating.
|
||||
// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater.
|
||||
// If your configuration is significantly different than this and you don't understand the issues involved, you probably
|
||||
// shouldn't use bed PID until someone else verifies your hardware works.
|
||||
// If this is enabled, find your own PID constants below.
|
||||
#define PIDTEMPBED
|
||||
//
|
||||
//#define BED_LIMIT_SWITCHING
|
||||
|
||||
// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option.
|
||||
// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis)
|
||||
// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did,
|
||||
// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED)
|
||||
#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current
|
||||
|
||||
// Bed temperature compensation settings
|
||||
#define BED_OFFSET 10
|
||||
#define BED_OFFSET_START 40
|
||||
#define BED_OFFSET_CENTER 50
|
||||
|
||||
|
||||
#ifdef PIDTEMPBED
|
||||
//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)
|
||||
//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10)
|
||||
#if defined(E3D_PT100_BED_WITH_AMP) || defined(E3D_PT100_BED_NO_AMP)
|
||||
// Define PID constants for extruder with PT100
|
||||
#define DEFAULT_bedKp 21.70
|
||||
#define DEFAULT_bedKi 1.60
|
||||
#define DEFAULT_bedKd 73.76
|
||||
#else
|
||||
#define DEFAULT_bedKp 126.13
|
||||
#define DEFAULT_bedKi 4.30
|
||||
#define DEFAULT_bedKd 924.76
|
||||
#endif
|
||||
|
||||
//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)
|
||||
//from pidautotune
|
||||
// #define DEFAULT_bedKp 97.1
|
||||
// #define DEFAULT_bedKi 1.41
|
||||
// #define DEFAULT_bedKd 1675.16
|
||||
|
||||
// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles.
|
||||
#endif // PIDTEMPBED
|
||||
|
||||
//connect message when communication with monitoring broken
|
||||
//#define FARM_CONNECT_MESSAGE
|
||||
|
||||
/*-----------------------------------
|
||||
PREHEAT SETTINGS
|
||||
*------------------------------------*/
|
||||
|
||||
#define FARM_PREHEAT_HOTEND_TEMP 250
|
||||
#define FARM_PREHEAT_HPB_TEMP 80
|
||||
#define FARM_PREHEAT_FAN_SPEED 0
|
||||
|
||||
#define PLA_PREHEAT_HOTEND_TEMP 215
|
||||
#define PLA_PREHEAT_HPB_TEMP 60
|
||||
#define PLA_PREHEAT_FAN_SPEED 0
|
||||
|
||||
#define ABS_PREHEAT_HOTEND_TEMP 255
|
||||
#define ABS_PREHEAT_HPB_TEMP 100
|
||||
#define ABS_PREHEAT_FAN_SPEED 0
|
||||
|
||||
#define HIPS_PREHEAT_HOTEND_TEMP 220
|
||||
#define HIPS_PREHEAT_HPB_TEMP 100
|
||||
#define HIPS_PREHEAT_FAN_SPEED 0
|
||||
|
||||
#define PP_PREHEAT_HOTEND_TEMP 254
|
||||
#define PP_PREHEAT_HPB_TEMP 100
|
||||
#define PP_PREHEAT_FAN_SPEED 0
|
||||
|
||||
#define PET_PREHEAT_HOTEND_TEMP 230
|
||||
#define PET_PREHEAT_HPB_TEMP 85
|
||||
#define PET_PREHEAT_FAN_SPEED 0
|
||||
|
||||
#define FLEX_PREHEAT_HOTEND_TEMP 240
|
||||
#define FLEX_PREHEAT_HPB_TEMP 50
|
||||
#define FLEX_PREHEAT_FAN_SPEED 0
|
||||
|
||||
/*------------------------------------
|
||||
THERMISTORS SETTINGS
|
||||
*------------------------------------*/
|
||||
|
||||
//
|
||||
//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table
|
||||
//
|
||||
//// Temperature sensor settings:
|
||||
// -2 is thermocouple with MAX6675 (only for sensor 0)
|
||||
// -1 is thermocouple with AD595
|
||||
// 0 is not used
|
||||
// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup)
|
||||
// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup)
|
||||
// 3 is Mendel-parts thermistor (4.7k pullup)
|
||||
// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !!
|
||||
// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup)
|
||||
// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup)
|
||||
// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup)
|
||||
// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup)
|
||||
// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup)
|
||||
// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup)
|
||||
// 10 is 100k RS thermistor 198-961 (4.7k pullup)
|
||||
// 11 is 100k beta 3950 1% thermistor (4.7k pullup)
|
||||
// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed)
|
||||
// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE"
|
||||
// 20 is the PT100 circuit found in the Ultimainboard V2.x
|
||||
// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950
|
||||
//
|
||||
// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k
|
||||
// (but gives greater accuracy and more stable PID)
|
||||
// 51 is 100k thermistor - EPCOS (1k pullup)
|
||||
// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup)
|
||||
// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup)
|
||||
//
|
||||
// 1047 is Pt1000 with 4k7 pullup
|
||||
// 1010 is Pt1000 with 1k pullup (non standard)
|
||||
// 147 is Pt100 with 4k7 pullup
|
||||
// 148 is E3D Pt100 with 4k7 pullup and no PT100 Amplifier on a MiniRambo 1.3a
|
||||
// 247 is Pt100 with 4k7 pullup and PT100 Amplifier
|
||||
// 110 is Pt100 with 1k pullup (non standard)
|
||||
|
||||
#if defined(E3D_PT100_EXTRUDER_WITH_AMP)
|
||||
#define TEMP_SENSOR_0 247
|
||||
#elif defined(E3D_PT100_EXTRUDER_NO_AMP)
|
||||
#define TEMP_SENSOR_0 148
|
||||
#else
|
||||
#define TEMP_SENSOR_0 5
|
||||
#endif
|
||||
#define TEMP_SENSOR_1 0
|
||||
#define TEMP_SENSOR_2 0
|
||||
#if defined(E3D_PT100_BED_WITH_AMP)
|
||||
#define TEMP_SENSOR_BED 247
|
||||
#elif defined(E3D_PT100_BED_NO_AMP)
|
||||
#define TEMP_SENSOR_BED 148
|
||||
#else
|
||||
#define TEMP_SENSOR_BED 1
|
||||
#endif
|
||||
#define TEMP_SENSOR_PINDA 1
|
||||
#define TEMP_SENSOR_AMBIENT 2000
|
||||
|
||||
#define STACK_GUARD_TEST_VALUE 0xA2A2
|
||||
|
||||
#define MAX_BED_TEMP_CALIBRATION 50
|
||||
#define MAX_HOTEND_TEMP_CALIBRATION 50
|
||||
|
||||
#define MAX_E_STEPS_PER_UNIT 250
|
||||
#define MIN_E_STEPS_PER_UNIT 100
|
||||
|
||||
#define Z_BABYSTEP_MIN -3999
|
||||
#define Z_BABYSTEP_MAX 0
|
||||
|
||||
#define PINDA_PREHEAT_X 20
|
||||
#define PINDA_PREHEAT_Y 60
|
||||
#define PINDA_PREHEAT_Z 0.15
|
||||
/*
|
||||
#define PINDA_PREHEAT_X 70
|
||||
#define PINDA_PREHEAT_Y -3
|
||||
#define PINDA_PREHEAT_Z 1*/
|
||||
#define PINDA_HEAT_T 120 //time in s
|
||||
|
||||
#define PINDA_MIN_T 50
|
||||
#define PINDA_STEP_T 10
|
||||
#define PINDA_MAX_T 100
|
||||
|
||||
#define PING_TIME 60 //time in s
|
||||
#define PING_TIME_LONG 600 //10 min; used when length of commands buffer > 0 to avoid 0 triggering when dealing with long gcodes
|
||||
#define PING_ALLERT_PERIOD 60 //time in s
|
||||
|
||||
#define NC_TIME 10 //time in s for periodic important status messages sending which needs reponse from monitoring
|
||||
#define NC_BUTTON_LONG_PRESS 15 //time in s
|
||||
|
||||
#define LONG_PRESS_TIME 1000 //time in ms for button long press
|
||||
#define BUTTON_BLANKING_TIME 200 //time in ms for blanking after button release
|
||||
|
||||
#define DEFAULT_PID_TEMP 210
|
||||
|
||||
#define MIN_PRINT_FAN_SPEED 75
|
||||
|
||||
|
||||
// How much shall the print head be lifted on power panic?
|
||||
// Ideally the Z axis will reach a zero phase of the stepper driver on power outage. To simplify this,
|
||||
// UVLO_Z_AXIS_SHIFT shall be an integer multiply of the stepper driver cycle, that is 4x full step.
|
||||
// For example, the Prusa i3 MK2 with 16 microsteps per full step has Z stepping of 400 microsteps per mm.
|
||||
// At 400 microsteps per mm, a full step lifts the Z axis by 0.04mm, and a stepper driver cycle is 0.16mm.
|
||||
// The following example, 12 * (4 * 16 / 400) = 12 * 0.16mm = 1.92mm.
|
||||
//#define UVLO_Z_AXIS_SHIFT 1.92
|
||||
#define UVLO_Z_AXIS_SHIFT 0.64
|
||||
// If power panic occured, and the current temperature is higher then target temperature before interrupt minus this offset, print will be recovered automatically.
|
||||
#define AUTOMATIC_UVLO_BED_TEMP_OFFSET 5
|
||||
|
||||
#define HEATBED_V2
|
||||
|
||||
#define M600_TIMEOUT 600 //seconds
|
||||
|
||||
//#define SUPPORT_VERBOSITY
|
||||
|
||||
#define MMU_REQUIRED_FW_BUILDNR 83
|
||||
#define MMU_HWRESET
|
||||
#define MMU_DEBUG //print communication between MMU2 and printer on serial
|
||||
//#define MMU_HAS_CUTTER
|
||||
|
||||
// This is experimental feature requested by our test department.
|
||||
// There is no known use for ordinary user. If enabled by this macro
|
||||
// and enabled from printer menu (not enabled by default). It cuts filament
|
||||
// every time when switching filament from gcode. MMU_HAS_CUTTER needs to be
|
||||
// defined.
|
||||
|
||||
//#define MMU_ALWAYS_CUT
|
||||
#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
|
||||
|
||||
#endif //__CONFIGURATION_PRUSA_H
|
||||
|
|
@ -0,0 +1,529 @@
|
|||
#!/bin/bash
|
||||
# This bash script is used to compile automatically the Prusa firmware with a dedicated build environment and settings
|
||||
#
|
||||
# Supported OS: Windows 10, Linux64 bit
|
||||
#
|
||||
# Linux:
|
||||
#
|
||||
# Windows:
|
||||
# To execute this script you gonna need few things on your Windows machine
|
||||
#
|
||||
# Linux Subsystem Ubuntu
|
||||
# 1. Follow these instructions
|
||||
# 2. Open Ubuntu bash and get latest updates with 'apt-get upgate'
|
||||
# 3. Install zip with 'apt-get install zip'
|
||||
# 4. Add at top of ~/.bashrc following lines by using 'sudo nano ~/.bashrc'
|
||||
#
|
||||
# export OS="Linux"
|
||||
# export JAVA_TOOL_OPTIONS="-Djava.net.preferIPv4Stack=true"
|
||||
# export GPG_TTY=$(tty)
|
||||
#
|
||||
# and confirm them. Restart Ubuntu bash
|
||||
#
|
||||
# Or GIT-BASH
|
||||
# 1. Download and install the correct (64bit or 32bit) Git version https://git-scm.com/download/win
|
||||
# 2. Also follow these instructions https://gist.github.com/evanwill/0207876c3243bbb6863e65ec5dc3f058
|
||||
# 3. Download and install 7z-zip from its official website.
|
||||
# By default, it is installed under the directory /c/Program Files/7-Zip in Windows 10 as my case.
|
||||
# 4. Run git Bash under Administrator privilege and navigate to the directory /c/Program Files/Git/mingw64/bin,
|
||||
# you can run the command ln -s /c/Program Files/7-Zip/7z.exe zip.exe
|
||||
#
|
||||
# Useful things to edit and compare your custom Firmware
|
||||
# 1. Download and install current and correct (64bit or 32bit) Notepad++ version https://notepad-plus-plus.org/download
|
||||
# 2. Another great tool to compare your custom mod and stock firmware is WinMerge http://winmerge.org/downloads/?lang=en
|
||||
#
|
||||
# Example for MK3: open git bash and change to your Firmware directory
|
||||
# <username>@<machinename> MINGW64 /<drive>/path
|
||||
# bash build.sh 1_75mm_MK3-EINSy10a-E3Dv6full
|
||||
#
|
||||
# Example for MK25: open git bash and change to your directory
|
||||
# gussner@WIN01 MINGW64 /d/Data/Prusa-Firmware/MK3
|
||||
# bash build.sh 1_75mm_MK25-RAMBo13a-E3Dv6full
|
||||
#
|
||||
# The compiled hex files can be found in the folder above like from the example
|
||||
# gussner@WIN01 MINGW64 /d/Data/Prusa-Firmware
|
||||
# FW351-Build1778-1_75mm_MK25-RAMBo13a-E3Dv6full.hex
|
||||
#
|
||||
# Version: 1.0.1-Build_8
|
||||
# Change log:
|
||||
# 12 Jan 2019, 3d-gussner, Fixed "compiler.c.elf.flags=-w -Os -Wl,-u,vfprintf -lprintf_flt -lm -Wl,--gc-sections" in 'platform.txt'
|
||||
# 16 Jan 2019, 3d-gussner, Build_2, Added development check to modify 'Configuration.h' to prevent unwanted LCD messages that Firmware is unknown
|
||||
# 17 Jan 2019, 3d-gussner, Build_3, Check for OS Windows or Linux and use the right build enviroment
|
||||
# 10 Feb 2019, ropaha, Pull Request, Select variant from list while using build.sh
|
||||
# 10 Feb 2019, ropaha, change FW_DEV_VERSION automatically depending on FW_VERSION RC/BETA/ALPHA
|
||||
# 10 Feb 2019, 3d-gussner, 1st tests with english only
|
||||
# 10 Feb 2019, ropaha, added compiling of all variants and english only
|
||||
# 10 Feb 2019, 3d-gussner, Set OUTPUT_FOLDER for hex files
|
||||
# 11 Feb 2019, 3d-gussner/ropaha, Minor changes and fixes
|
||||
# 11 Feb 2019, 3d-gussner, Ready for RC
|
||||
# 12 Feb 2019, 3d-gussner, Check if wget and zip are installed. Thanks to Bernd to point it out
|
||||
# 12 Feb 2019, 3d-gussner, Changed OS check to OSTYPE as it is not supported on Ubuntu
|
||||
# Also added different BUILD_ENV folders depending on OS used so Windows
|
||||
# Users can use git-bash AND Windows Linux Subsystems at the same time
|
||||
# Cleanup compiler flags is only depends on OS version.
|
||||
# 12 Feb 2019, 3d-gussner, Added additional OSTYPE check
|
||||
# 15 feb 2019, 3d-gussner, Added zip files for miniRAMbo multi language hex files
|
||||
# 15 Feb 2019, 3d-gussner, Added more checks if
|
||||
# Compiled Hex-files
|
||||
# Configuration_prusa.h
|
||||
# language build files
|
||||
# multi language firmware files exist and clean them up
|
||||
# 15 Feb 2019, 3d-gussner, Fixed selction GOLD/UNKNOWN DEV_STATUS for ALL variants builds, so you have to choose only once
|
||||
# 15 Feb 2019, 3d-gussner, Added some colored output
|
||||
# 15 Feb 2019, 3d-gussner, troubleshooting and minor fixes
|
||||
# 16 Feb 2019, 3d-gussner, Script can be run using arguments
|
||||
# $1 = variant, example "1_75mm_MK3-EINSy10a-E3Dv6full.h" at this moment it is not possible to use ALL
|
||||
# $2 = multi language OR english only [ALL/EN_ONLY]
|
||||
# $3 = development status [GOLD/RC/BETA/ALPHA/DEVEL/DEBUG]
|
||||
# If one argument is wrong a list of valid one will be shown
|
||||
# 13 Mar 2019, 3d-gussner, MKbel updated the linux build enviromentto version 1.0.2 with an Fix maximum firmware flash size.
|
||||
# So did I
|
||||
|
||||
|
||||
###Check if OSTYPE is supported
|
||||
if [ $OSTYPE == "msys" ]; then
|
||||
if [ $(uname -m) == "x86_64" ]; then
|
||||
echo "$(tput setaf 2)Windows 64-bit found$(tput sgr0)"
|
||||
fi
|
||||
elif [ $OSTYPE == "linux-gnu" ]; then
|
||||
if [ $(uname -m) == "x86_64" ]; then
|
||||
echo "$(tput setaf 2)Linux 64-bit found$(tput sgr0)"
|
||||
fi
|
||||
else
|
||||
echo "$(tput setaf 1)This script doesn't support your Operating system!"
|
||||
echo "Please use Linux 64-bit or Windows 10 64-bit with Linux subsystem / git-bash"
|
||||
echo "Read the notes of build.sh$(tput sgr0)"
|
||||
exit
|
||||
fi
|
||||
sleep 2
|
||||
###Prepare bash enviroment and check if wget and zip are available
|
||||
if ! type wget > /dev/null; then
|
||||
echo "$(tput setaf 1)Missing 'wget' which is important to run this script"
|
||||
echo "Please follow these instructions https://gist.github.com/evanwill/0207876c3243bbb6863e65ec5dc3f058 to install wget$(tput sgr0)"
|
||||
exit
|
||||
fi
|
||||
if ! type zip > /dev/null; then
|
||||
if [ $OSTYPE == "msys" ]; then
|
||||
echo "$(tput setaf 1)Missing 'zip' which is important to run this script"
|
||||
echo "Download and install 7z-zip from its official website https://www.7-zip.org/"
|
||||
echo "By default, it is installed under the directory /c/Program Files/7-Zip in Windows 10 as my case."
|
||||
echo "Run git Bash under Administrator privilege and"
|
||||
echo "navigate to the directory /c/Program Files/Git/mingw64/bin,"
|
||||
echo "you can run the command $(tput setaf 2)ln -s /c/Program Files/7-Zip/7z.exe zip.exe$(tput sgr0)"
|
||||
exit
|
||||
elif [ $OSTYPE == "linux-gnu" ]; then
|
||||
echo "$(tput setaf 1)Missing 'zip' which is important to run this script"
|
||||
echo "install it with the command $(tput setaf 2)'sudo apt-get install zip'$(tput sgr0)"
|
||||
exit
|
||||
fi
|
||||
fi
|
||||
###End prepare bash enviroment
|
||||
|
||||
BUILD_ENV="1.0.2"
|
||||
SCRIPT_PATH="$( cd "$(dirname "$0")" ; pwd -P )"
|
||||
|
||||
# List few useful data
|
||||
echo
|
||||
echo "Script path:" $SCRIPT_PATH
|
||||
echo "OS :" $OS
|
||||
echo "OS type :" $OSTYPE
|
||||
echo ""
|
||||
|
||||
#### Start prepare building
|
||||
|
||||
#Check if build exists and creates it if not
|
||||
if [ ! -d "../build-env" ]; then
|
||||
mkdir ../build-env || exit 2
|
||||
fi
|
||||
|
||||
cd ../build-env || exit 3
|
||||
|
||||
# Check if PF-build-env-<version> exists and downloads + creates it if not
|
||||
# The build enviroment is based on the Arduino IDE 1.8.5 portal version with some changes
|
||||
if [ ! -d "../PF-build-env-$BUILD_ENV" ]; then
|
||||
echo "$(tput setaf 6)PF-build-env-$BUILD_ENV is missing ... creating it now for you$(tput sgr 0)"
|
||||
mkdir ../PF-build-env-$BUILD_ENV
|
||||
sleep 5
|
||||
fi
|
||||
|
||||
if [ $OSTYPE == "msys" ]; then
|
||||
if [ ! -f "PF-build-env-Win-$BUILD_ENV.zip" ]; then
|
||||
echo "$(tput setaf 6)Downloading Windows build environment...$(tput setaf 2)"
|
||||
sleep 2
|
||||
wget https://github.com/3d-gussner/PF-build-env/releases/download/Win-$BUILD_ENV/PF-build-env-Win-$BUILD_ENV.zip || exit 4
|
||||
#cp -f ../../PF-build-env/PF-build-env-Win-$BUILD_ENV.zip PF-build-env-Win-$BUILD_ENV.zip || exit4
|
||||
echo "$(tput sgr 0)"
|
||||
fi
|
||||
if [ ! -d "../PF-build-env-$BUILD_ENV/$OSTYPE" ]; then
|
||||
echo "$(tput setaf 6)Unzipping Windows build environment...$(tput setaf 2)"
|
||||
sleep 2
|
||||
unzip PF-build-env-Win-$BUILD_ENV.zip -d ../PF-build-env-$BUILD_ENV/$OSTYPE || exit 4
|
||||
echo "$(tput sgr0)"
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
if [ $OSTYPE == "linux-gnu" ]; then
|
||||
if [ ! -f "PF-build-env-Linux64-$BUILD_ENV.zip" ]; then
|
||||
echo "$(tput setaf 6)Downloading Linux 64 build environment...$(tput setaf 2)"
|
||||
sleep 2
|
||||
wget https://github.com/mkbel/PF-build-env/releases/download/$BUILD_ENV/PF-build-env-Linux64-$BUILD_ENV.zip || exit 3
|
||||
echo "$(tput sgr0)"
|
||||
fi
|
||||
|
||||
if [ ! -d "../PF-build-env-$BUILD_ENV/$OSTYPE" ]; then
|
||||
echo "$(tput setaf 6)Unzipping Linux build enviroment...$(tput setaf 2)"
|
||||
sleep 2
|
||||
unzip PF-build-env-Linux64-$BUILD_ENV.zip -d ../PF-build-env-$BUILD_ENV/$OSTYPE || exit 4
|
||||
echo "$(tput sgr0)"
|
||||
fi
|
||||
fi
|
||||
cd $SCRIPT_PATH
|
||||
|
||||
# First argument defines which variant of the Prusa Firmware will be compiled
|
||||
if [ -z "$1" ] ; then
|
||||
# Select which variant of the Prusa Firmware will be compiled, like
|
||||
PS3="Select a variant: "
|
||||
while IFS= read -r -d $'\0' f; do
|
||||
options[i++]="$f"
|
||||
done < <(find Firmware/variants/ -maxdepth 1 -type f -name "*.h" -print0 )
|
||||
select opt in "${options[@]}" "All" "Quit"; do
|
||||
case $opt in
|
||||
*.h)
|
||||
VARIANT=$(basename "$opt" ".h")
|
||||
VARIANTS[i++]="$opt"
|
||||
break
|
||||
;;
|
||||
"All")
|
||||
VARIANT="All"
|
||||
VARIANTS=${options[*]}
|
||||
break
|
||||
;;
|
||||
"Quit")
|
||||
echo "You chose to stop"
|
||||
exit 1
|
||||
;;
|
||||
*)
|
||||
echo "$(tput setaf 1)This is not a valid variant$(tput sgr0)"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
else
|
||||
if [ -f "$SCRIPT_PATH/Firmware/variants/$1" ] ; then
|
||||
VARIANTS=$1
|
||||
else
|
||||
echo "$(tput setaf 1)$1 could not be found in Firmware/variants please choose a valid one$(tput setaf 2)"
|
||||
ls -1 $SCRIPT_PATH/Firmware/variants/*.h | xargs -n1 basename
|
||||
echo "$(tput sgr0)"
|
||||
exit
|
||||
fi
|
||||
fi
|
||||
|
||||
#Second argument defines if it is an english only version. Known values EN_ONLY / ALL
|
||||
#Check default language mode
|
||||
MULTI_LANGUAGE_CHECK=$(grep --max-count=1 "^#define LANG_MODE *" $SCRIPT_PATH/Firmware/config.h|sed -e's/ */ /g'|cut -d ' ' -f3)
|
||||
|
||||
if [ -z "$2" ] ; then
|
||||
PS3="Select a language: "
|
||||
echo
|
||||
echo "Which lang-build do you want?"
|
||||
select yn in "Multi languages" "English only"; do
|
||||
case $yn in
|
||||
"Multi languages")
|
||||
LANGUAGES="ALL"
|
||||
sed -i -- "s/^#define LANG_MODE *0/#define LANG_MODE 1/g" $SCRIPT_PATH/Firmware/config.h
|
||||
break
|
||||
;;
|
||||
"English only")
|
||||
LANGUAGES="EN_ONLY"
|
||||
sed -i -- "s/^#define LANG_MODE *1/#define LANG_MODE 0/g" $SCRIPT_PATH/Firmware/config.h
|
||||
break
|
||||
;;
|
||||
*)
|
||||
echo "$(tput setaf 1)This is not a valid language$(tput sgr0)"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
else
|
||||
if [[ "$2" == "ALL" || "$2" == "EN_ONLY" ]] ; then
|
||||
LANGUAGES=$2
|
||||
else
|
||||
echo "$(tput setaf 1)Language argument is wrong!$(tput sgr0)"
|
||||
echo "Only $(tput setaf 2)'ALL'$(tput sgr0) or $(tput setaf 2)'EN_ONLY'$(tput sgr0) are allowed as 2nd argument!"
|
||||
exit
|
||||
fi
|
||||
fi
|
||||
#Check if DEV_STATUS is selected via argument 3
|
||||
if [ ! -z "$3" ] ; then
|
||||
if [[ "$3" == "GOLD" || "$3" == "RC" || "$3" == "BETA" || "$3" == "ALPHA" || "$3" == "DEVEL" || "$3" == "DEBUG" ]] ; then
|
||||
DEV_STATUS_SELECTED=$3
|
||||
else
|
||||
echo "$(tput setaf 1)Development argument is wrong!$(tput sgr0)"
|
||||
echo "Only $(tput setaf 2)'GOLD', 'RC', 'BETA', 'ALPHA', 'DEVEL' or 'DEBUG'$(tput sgr0) are allowed as 3rd argument!$(tput sgr0)"
|
||||
exit
|
||||
fi
|
||||
fi
|
||||
|
||||
#Set BUILD_ENV_PATH
|
||||
cd ../PF-build-env-$BUILD_ENV/$OSTYPE || exit 5
|
||||
BUILD_ENV_PATH="$( pwd -P )"
|
||||
|
||||
cd ../..
|
||||
|
||||
#Checkif BUILD_PATH exists and if not creates it
|
||||
if [ ! -d "Prusa-Firmware-build" ]; then
|
||||
mkdir Prusa-Firmware-build || exit 6
|
||||
fi
|
||||
|
||||
#Set the BUILD_PATH for Arduino IDE
|
||||
cd Prusa-Firmware-build || exit 7
|
||||
BUILD_PATH="$( pwd -P )"
|
||||
|
||||
for v in ${VARIANTS[*]}
|
||||
do
|
||||
VARIANT=$(basename "$v" ".h")
|
||||
# Find firmware version in Configuration.h file and use it to generate the hex filename
|
||||
FW=$(grep --max-count=1 "\bFW_VERSION\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/ */ /g'|cut -d '"' -f2|sed 's/\.//g')
|
||||
# Find build version in Configuration.h file and use it to generate the hex filename
|
||||
BUILD=$(grep --max-count=1 "\bFW_COMMIT_NR\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/ */ /g'|cut -d ' ' -f3)
|
||||
# Check if the motherboard is an EINSY and if so only one hex file will generated
|
||||
MOTHERBOARD=$(grep --max-count=1 "\bMOTHERBOARD\b" $SCRIPT_PATH/Firmware/variants/$VARIANT.h | sed -e's/ */ /g' |cut -d ' ' -f3)
|
||||
# Check development status
|
||||
DEV_CHECK=$(grep --max-count=1 "\bFW_VERSION\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/ */ /g'|cut -d '"' -f2|sed 's/\.//g'|cut -d '-' -f2)
|
||||
if [ -z "$DEV_STATUS_SELECTED" ] ; then
|
||||
if [[ "$DEV_CHECK" == "RC1" || "$DEV_CHECK" == "RC2" ]] ; then
|
||||
DEV_STATUS="RC"
|
||||
elif [[ "$DEV_CHECK" == "ALPHA" ]]; then
|
||||
DEV_STATUS="ALPHA"
|
||||
elif [[ "$DEV_CHECK" == "BETA" ]]; then
|
||||
DEV_STATUS="BETA"
|
||||
elif [[ "$DEV_CHECK" == "DEVEL" ]]; then
|
||||
DEV_STATUS="DEVEL"
|
||||
elif [[ "$DEV_CHECK" == "DEBUG" ]]; then
|
||||
DEV_STATUS="DEBUG"
|
||||
else
|
||||
DEV_STATUS="UNKNOWN"
|
||||
echo
|
||||
echo "$(tput setaf 5)DEV_STATUS is UNKNOWN. Do you wish to set DEV_STATUS to GOLD?$(tput sgr0)"
|
||||
PS3="Select YES only if source code is tested and trusted: "
|
||||
select yn in "Yes" "No"; do
|
||||
case $yn in
|
||||
Yes)
|
||||
DEV_STATUS="GOLD"
|
||||
DEV_STATUS_SELECTED="GOLD"
|
||||
break
|
||||
;;
|
||||
No)
|
||||
DEV_STATUS="UNKNOWN"
|
||||
DEV_STATUS_SELECTED="UNKNOWN"
|
||||
break
|
||||
;;
|
||||
*)
|
||||
echo "$(tput setaf 1)This is not a valid DEV_STATUS$(tput sgr0)"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
else
|
||||
DEV_STATUS=$DEV_STATUS_SELECTED
|
||||
fi
|
||||
#Prepare hex files folders
|
||||
if [ ! -d "$SCRIPT_PATH/../Hex-files/FW$FW-Build$BUILD/$MOTHERBOARD" ]; then
|
||||
mkdir -p $SCRIPT_PATH/../Hex-files/FW$FW-Build$BUILD/$MOTHERBOARD || exit 10
|
||||
fi
|
||||
OUTPUT_FOLDER="Hex-files/FW$FW-Build$BUILD/$MOTHERBOARD"
|
||||
|
||||
#Check if exactly the same hexfile already exists
|
||||
if [[ -f "$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex" && "$LANGUAGES" == "ALL" ]]; then
|
||||
echo ""
|
||||
ls -1 $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex | xargs -n1 basename
|
||||
echo "$(tput setaf 6)This hex file to be compiled already exists! To cancel this process press CRTL+C and rename existing hex file.$(tput sgr 0)"
|
||||
read -t 10 -p "Press Enter to continue..."
|
||||
elif [[ -f "$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-EN_ONLY.hex" && "$LANGUAGES" == "EN_ONLY" ]]; then
|
||||
echo ""
|
||||
ls -1 $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-EN_ONLY.hex | xargs -n1 basename
|
||||
echo "$(tput setaf 6)This hex file to be compiled already exists! To cancel this process press CRTL+C and rename existing hex file.$(tput sgr 0)"
|
||||
read -t 10 -p "Press Enter to continue..."
|
||||
fi
|
||||
if [[ -f "$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.zip" && "$LANGUAGES" == "ALL" ]]; then
|
||||
echo ""
|
||||
ls -1 $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.zip | xargs -n1 basename
|
||||
echo "$(tput setaf 6)This zip file to be compiled already exists! To cancel this process press CRTL+C and rename existing hex file.$(tput sgr 0)"
|
||||
read -t 10 -p "Press Enter to continue..."
|
||||
fi
|
||||
|
||||
#List some useful data
|
||||
echo "$(tput setaf 2)$(tput setab 7) "
|
||||
echo "Variant :" $VARIANT
|
||||
echo "Firmware :" $FW
|
||||
echo "Build # :" $BUILD
|
||||
echo "Dev Check :" $DEV_CHECK
|
||||
echo "DEV Status :" $DEV_STATUS
|
||||
echo "Motherboard:" $MOTHERBOARD
|
||||
echo "Languages :" $LANGUAGES
|
||||
echo "Hex-file Folder:" $OUTPUT_FOLDER
|
||||
echo "$(tput sgr0)"
|
||||
|
||||
#Prepare Firmware to be compiled by copying variant as Configuration_prusa.h
|
||||
if [ ! -f "$SCRIPT_PATH/Firmware/Configuration_prusa.h" ]; then
|
||||
cp -f $SCRIPT_PATH/Firmware/variants/$VARIANT.h $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 11
|
||||
else
|
||||
echo "$(tput setaf 6)Configuration_prusa.h already exist it will be overwritten in 10 seconds by the chosen variant.$(tput sgr 0)"
|
||||
read -t 10 -p "Press Enter to continue..."
|
||||
cp -f $SCRIPT_PATH/Firmware/variants/$VARIANT.h $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 11
|
||||
fi
|
||||
|
||||
#Prepare Configuration.h to use the correct FW_DEV_VERSION to prevent LCD messages when connecting with OctoPrint
|
||||
sed -i -- "s/#define FW_DEV_VERSION FW_VERSION_UNKNOWN/#define FW_DEV_VERSION FW_VERSION_$DEV_STATUS/g" $SCRIPT_PATH/Firmware/Configuration.h
|
||||
|
||||
# set FW_REPOSITORY
|
||||
sed -i -- 's/#define FW_REPOSITORY "Unknown"/#define FW_REPOSITORY "Prusa3d"/g' $SCRIPT_PATH/Firmware/Configuration.h
|
||||
|
||||
#Prepare english only or multilanguage version to be build
|
||||
if [ $LANGUAGES == "ALL" ]; then
|
||||
echo " "
|
||||
echo "Multi-language firmware will be built"
|
||||
echo " "
|
||||
else
|
||||
echo " "
|
||||
echo "English only language firmware will be built"
|
||||
echo " "
|
||||
fi
|
||||
|
||||
#Check if compiler flags are set to Prusa specific needs for the rambo board.
|
||||
if [ $OSTYPE == "msys" ]; then
|
||||
RAMBO_PLATFORM_FILE="rambo/hardware/avr/1.0.1/platform.txt"
|
||||
COMP_FLAGS="compiler.c.elf.flags={compiler.warning_flags} -Os -g -flto -fuse-linker-plugin -Wl,-u,vfprintf -lprintf_flt -lm -Wl,--gc-sections"
|
||||
CHECK_FLAGS=$(grep --max-count=1 "$COMP_FLAGS" $BUILD_ENV_PATH/portable/packages/$RAMBO_PLATFORM_FILE)
|
||||
if [ -z "$CHECK_FLAGS" ]; then
|
||||
echo "Compiler flags not found, adding flags"
|
||||
if [ ! -f $BUILD_ENV_PATH/portable/packages/$RAMBO_PLATFORM_FILE.bck ]; then
|
||||
echo "making a backup"
|
||||
ls -1 $BUILD_ENV_PATH/portable/packages/rambo/hardware/avr/1.0.1/
|
||||
cp -f $BUILD_ENV_PATH/portable/packages/$RAMBO_PLATFORM_FILE $BUILD_ENV_PATH/portable/packages/$RAMBO_PLATFORM_FILE.bck
|
||||
fi
|
||||
echo $COMP_FLAGS >> $BUILD_ENV_PATH/portable/packages/$RAMBO_PLATFORM_FILE
|
||||
else
|
||||
echo "Compiler flags are set in rambo platform.txt" $CHECK_FLAGS
|
||||
fi
|
||||
fi
|
||||
|
||||
#### End of Prepare building
|
||||
|
||||
#### Start building
|
||||
|
||||
export ARDUINO=$BUILD_ENV_PATH
|
||||
#echo $BUILD_ENV_PATH
|
||||
export BUILDER=$ARDUINO/arduino-builder
|
||||
|
||||
echo
|
||||
#read -t 5 -p "Press Enter..."
|
||||
echo
|
||||
|
||||
if [ $OSTYPE == "msys" ]; then
|
||||
echo "Start to build Prusa Firmware under Windows..."
|
||||
echo "Using variant $VARIANT$(tput setaf 3)"
|
||||
sleep 2
|
||||
#$BUILDER -dump-prefs -logger=machine -hardware $ARDUINO/hardware -hardware $ARDUINO/portable/packages -tools $ARDUINO/tools-builder -tools $ARDUINO/hardware/tools/avr -tools $ARDUINO/portable/packages -built-in-libraries $ARDUINO/libraries -libraries $ARDUINO/portable/sketchbook/libraries -fqbn=rambo:avr:rambo -ide-version=10805 -build-path=$BUILD_PATH -warnings=none -quiet $SCRIPT_PATH/Firmware/Firmware.ino || exit 12
|
||||
#$BUILDER -compile -logger=machine -hardware $ARDUINO/hardware -hardware $ARDUINO/portable/packages -tools $ARDUINO/tools-builder -tools $ARDUINO/hardware/tools/avr -tools $ARDUINO/portable/packages -built-in-libraries $ARDUINO/libraries -libraries $ARDUINO/portable/sketchbook/libraries -fqbn=rambo:avr:rambo -ide-version=10805 -build-path=$BUILD_PATH -warnings=none -quiet $SCRIPT_PATH/Firmware/Firmware.ino || exit 13
|
||||
$BUILDER -compile -hardware $ARDUINO/hardware -hardware $ARDUINO/portable/packages -tools $ARDUINO/tools-builder -tools $ARDUINO/hardware/tools/avr -tools $ARDUINO/portable/packages -built-in-libraries $ARDUINO/libraries -libraries $ARDUINO/portable/sketchbook/libraries -fqbn=rambo:avr:rambo -ide-version=10805 -build-path=$BUILD_PATH -warnings=all $SCRIPT_PATH/Firmware/Firmware.ino || exit 14
|
||||
echo "$(tput sgr 0)"
|
||||
fi
|
||||
if [ $OSTYPE == "linux-gnu" ] ; then
|
||||
echo "Start to build Prusa Firmware under Linux 64..."
|
||||
echo "Using variant $VARIANT$(tput setaf 3)"
|
||||
sleep 2
|
||||
$BUILD_ENV_PATH/arduino $SCRIPT_PATH/Firmware/Firmware.ino --verify --board rambo:avr:rambo --pref build.path=$BUILD_PATH --pref compiler.warning_level=all || exit 14
|
||||
echo "$(tput sgr 0)"
|
||||
fi
|
||||
|
||||
if [ $LANGUAGES == "ALL" ]; then
|
||||
echo "$(tput setaf 2)"
|
||||
echo "Building multi language firmware" $MULTI_LANGUAGE_CHECK
|
||||
echo "$(tput sgr 0)"
|
||||
sleep 2
|
||||
cd $SCRIPT_PATH/lang
|
||||
echo "$(tput setaf 3)"
|
||||
./config.sh || exit 15
|
||||
echo "$(tput sgr 0)"
|
||||
# Check if previous languages and firmware build exist and if so clean them up
|
||||
if [ -f "lang_en.tmp" ]; then
|
||||
echo ""
|
||||
echo "$(tput setaf 6)Previous lang build files already exist these will be cleaned up in 10 seconds.$(tput sgr 0)"
|
||||
read -t 10 -p "Press Enter to continue..."
|
||||
echo "$(tput setaf 3)"
|
||||
./lang-clean.sh
|
||||
echo "$(tput sgr 0)"
|
||||
fi
|
||||
if [ -f "progmem.out" ]; then
|
||||
echo ""
|
||||
echo "$(tput setaf 6)Previous firmware build files already exist these will be cleaned up in 10 seconds.$(tput sgr 0)"
|
||||
read -t 10 -p "Press Enter to continue..."
|
||||
echo "$(tput setaf 3)"
|
||||
./fw-clean.sh
|
||||
echo "$(tput sgr 0)"
|
||||
fi
|
||||
# build languages
|
||||
echo "$(tput setaf 3)"
|
||||
./lang-build.sh || exit 16
|
||||
# Combine compiled firmware with languages
|
||||
./fw-build.sh || exit 17
|
||||
echo "$(tput sgr 0)"
|
||||
# Check if the motherboard is an EINSY and if so only one hex file will generated
|
||||
MOTHERBOARD=$(grep --max-count=1 "\bMOTHERBOARD\b" $SCRIPT_PATH/Firmware/variants/$VARIANT.h | sed -e's/ */ /g' |cut -d ' ' -f3)
|
||||
# If the motherboard is an EINSY just copy one hexfile
|
||||
if [ "$MOTHERBOARD" = "BOARD_EINSY_1_0a" ]; then
|
||||
echo "$(tput setaf 2)Copying multi language firmware for MK3/Einsy board to Hex-files folder$(tput sgr 0)"
|
||||
cp -f firmware.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex
|
||||
else
|
||||
echo "$(tput setaf 2)Zip multi language firmware for MK2.5/miniRAMbo board to Hex-files folder$(tput sgr 0)"
|
||||
cp -f firmware_cz.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-cz.hex
|
||||
cp -f firmware_de.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-de.hex
|
||||
cp -f firmware_es.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-es.hex
|
||||
cp -f firmware_fr.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-fr.hex
|
||||
cp -f firmware_it.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-it.hex
|
||||
cp -f firmware_pl.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-pl.hex
|
||||
if [ $OSTYPE == "msys" ]; then
|
||||
zip a $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.zip $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-??.hex
|
||||
rm $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-??.hex
|
||||
elif [ $OSTYPE == "linux-gnu" ]; then
|
||||
zip -m -j ../../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.zip ../../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-??.hex
|
||||
fi
|
||||
fi
|
||||
# Cleanup after build
|
||||
echo "$(tput setaf 3)"
|
||||
./fw-clean.sh || exit 18
|
||||
./lang-clean.sh || exit 19
|
||||
echo "$(tput sgr 0)"
|
||||
else
|
||||
echo "$(tput setaf 2)Copying English only firmware to Hex-files folder$(tput sgr 0)"
|
||||
cp -f $BUILD_PATH/Firmware.ino.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-EN_ONLY.hex || exit 20
|
||||
fi
|
||||
|
||||
# Cleanup Firmware
|
||||
rm $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 17
|
||||
sed -i -- "s/^#define FW_DEV_VERSION FW_VERSION_$DEV_STATUS/#define FW_DEV_VERSION FW_VERSION_UNKNOWN/g" $SCRIPT_PATH/Firmware/Configuration.h
|
||||
sed -i -- 's/^#define FW_REPOSITORY "Prusa3d"/#define FW_REPOSITORY "Unknown"/g' $SCRIPT_PATH/Firmware/Configuration.h
|
||||
echo $MULTI_LANGUAGE_CHECK
|
||||
#sed -i -- "s/^#define LANG_MODE * /#define LANG_MODE $MULTI_LANGUAGE_CHECK/g" $SCRIPT_PATH/Firmware/config.h
|
||||
sed -i -- "s/^#define LANG_MODE *1/#define LANG_MODE ${MULTI_LANGUAGE_CHECK}/g" $SCRIPT_PATH/Firmware/config.h
|
||||
sed -i -- "s/^#define LANG_MODE *0/#define LANG_MODE ${MULTI_LANGUAGE_CHECK}/g" $SCRIPT_PATH/Firmware/config.h
|
||||
sleep 5
|
||||
done
|
||||
|
||||
# Cleanup compiler flags are set to Prusa specific needs for the rambo board.
|
||||
#if [ $OSTYPE == "msys" ]; then
|
||||
# echo " "
|
||||
# echo "Restore Windows platform.txt"
|
||||
# echo " "
|
||||
# cp -f $BUILD_ENV_PATH/portable/packages/$RAMBO_PLATFORM_FILE.bck $BUILD_ENV_PATH/portable/packages/$RAMBO_PLATFORM_FILE
|
||||
#fi
|
||||
|
||||
# Switch to hex path and list build files
|
||||
cd $SCRIPT_PATH
|
||||
cd ..
|
||||
echo "$(tput setaf 2) "
|
||||
echo " "
|
||||
echo "Build done, please use Slic3rPE > 1.41.0 to upload the firmware"
|
||||
echo "more information how to flash firmware https://www.prusa3d.com/drivers/ $(tput sgr 0)"
|
||||
#### End building
|
||||
115
README.md
115
README.md
|
|
@ -2,21 +2,40 @@
|
|||
|
||||
<!--ts-->
|
||||
* [Linux build](#linux)
|
||||
* [Windows build](#windows)
|
||||
* Windows build
|
||||
* [Using Arduino](#using-arduino)
|
||||
* [Using Linux subsystem](#using-linux-subsystem-under-windows-10-64-bit)
|
||||
* [Using Git-bash](#using-git-bash-under-windows-10-64-bit)
|
||||
* [Automated tests](#3-automated-tests)
|
||||
* [Documentation](#4-documentation)
|
||||
* [FAQ](#5-faq)
|
||||
<!--te-->
|
||||
|
||||
|
||||
# Build
|
||||
## Linux
|
||||
Run shell script build.sh to build for MK3 and flash with Sli3er.
|
||||
If you have different printel model, follow step [2.b](#2b) from Windows build first.
|
||||
If you wish to flash from Arduino, follow step [2.c](#2c) from Windows build first.
|
||||
|
||||
The script downloads Arduino with our modifications and Rambo board support installed, unpacks it into folder PF-build-env-\<version\> on the same level, as your Prusa-Firmware folder is located, builds firmware for MK3 using that Arduino in Prusa-Firmware-build folder on the same level as Prusa-Firmware, runs secondary language support scripts. Firmware with secondary language support is generated in lang subfolder. Use firmware.hex for MK3 variant. Use firmware_\<lang\>.hex for other printers. Don't forget to follow step [2.b](#2b) first for non-MK3 printers.
|
||||
1. Clone this repository and checkout the correct branch for your desired release version.
|
||||
|
||||
2. Set your printer model.
|
||||
- For MK3 --> skip to step 3.
|
||||
- If you have a different printer model, follow step [2.b](#2b) from Windows build
|
||||
|
||||
3. Run `sudo ./build.sh`
|
||||
- Output hex file is at `"PrusaFirmware/lang/firmware.hex"` . In the same folder you can hex files for other languages as well.
|
||||
|
||||
4. Connect your printer and flash with PrusaSlicer ( Configuration --> Flash printer firmware ) or Slic3r PE.
|
||||
- If you wish to flash from Arduino, follow step [2.c](#2c) from Windows build first.
|
||||
|
||||
|
||||
_Notes:_
|
||||
|
||||
The script downloads Arduino with our modifications and Rambo board support installed, unpacks it into folder `PF-build-env-\<version\>` on the same level, as your Prusa-Firmware folder is located, builds firmware for MK3 using that Arduino in Prusa-Firmware-build folder on the same level as Prusa-Firmware, runs secondary language support scripts. Firmware with secondary language support is generated in lang subfolder. Use firmware.hex for MK3 variant. Use `firmware_\<lang\>.hex` for other printers. Don't forget to follow step [2.b](#2b) first for non-MK3 printers.
|
||||
|
||||
## Windows
|
||||
### 1. Development environment preparation
|
||||
### Using Arduino
|
||||
note: Multi language build is not supported.
|
||||
#### 1. Development environment preparation
|
||||
|
||||
a. install `"Arduino Software IDE"` for your preferred operating system
|
||||
`https://www.arduino.cc -> Software->Downloads`
|
||||
|
|
@ -34,11 +53,11 @@ type location
|
|||
or you can 'manually' modify the item
|
||||
`"boardsmanager.additional.urls=....."`
|
||||
at the file `"preferences.txt"` (this parameter allows you to write a comma-separated list of addresses)
|
||||
_note: you can find location of this file on your disk by following way:
|
||||
_note: you can find location of this file on your disk by doing the following:
|
||||
`File->Preferences->Settings` (`"More preferences can be edited in file ..."`)_
|
||||
than do it
|
||||
then choose
|
||||
`Tools->Board->BoardsManager`
|
||||
from viewed list select an item `"RAMBo"` (will probably be labeled as `"RepRap Arduino-compatible Mother Board (RAMBo) by UltiMachine"`
|
||||
from viewed list and select the item labeled `"RAMBo"` (will probably be labeled as `"RepRap Arduino-compatible Mother Board (RAMBo) by UltiMachine"`
|
||||
_note: select this item for any variant of board used in printers `'Prusa i3 MKx'`, that is for `RAMBo-mini x.y` and `EINSy x.y` to_
|
||||
'clicking' the item will display the installation button; select choice `"1.0.1"` from the list(last known version as of the date of issue of this document)
|
||||
_(after installation, the item is labeled as `"INSTALLED"` and can then be used for target board selection)_
|
||||
|
|
@ -47,8 +66,11 @@ _(after installation, the item is labeled as `"INSTALLED"` and can then be used
|
|||
add "-Wl,-u,vfprintf -lprintf_flt -lm" to "compiler.c.elf.flags=" before existing flag "-Wl,--gc-sections"
|
||||
example:
|
||||
`"compiler.c.elf.flags=-w -Os -Wl,-u,vfprintf -lprintf_flt -lm -Wl,--gc-sections"`
|
||||
The file can be found in Arduino instalation directory, or after Arduino has been updated at:
|
||||
"C:\Users\(user)\AppData\Local\Arduino15\packages\arduino\hardware\avr\(version)"
|
||||
If you can locate the file in both places, file from user profile is probably used.
|
||||
|
||||
### 2. Source code compilation
|
||||
#### 2. Source code compilation
|
||||
|
||||
a. place the source codes corresponding to your printer model obtained from the repository into the selected directory on your disk
|
||||
`https://github.com/prusa3d/Prusa-Firmware/`
|
||||
|
|
@ -57,7 +79,7 @@ b.<a name="2b"></a> In the subdirectory `"Firmware/variants/"` select the config
|
|||
|
||||
c.<a name="2c"></a> In file `"Firmware/config.h"` set LANG_MODE to 0.
|
||||
|
||||
run `"Arduino IDE"`; select the file `"Firmware.ino"` from the subdirectory `"Firmware/"` at the location, where you placed the source codes
|
||||
run `"Arduino IDE"`; select the file `"Firmware.ino"` from the subdirectory `"Firmware/"` at the location, where you placed the source code
|
||||
`File->Open`
|
||||
make the desired code customizations; **all changes are on your own risk!**
|
||||
|
||||
|
|
@ -76,6 +98,58 @@ or you can also save the output code to the file (in so called `HEX`-format) `"F
|
|||
and then upload it to the printer using the program `"FirmwareUpdater"`
|
||||
_note: this file is created in the directory `"Firmware/"`_
|
||||
|
||||
### Using Linux subsystem under Windows 10 64-bit
|
||||
_notes: Script and instructions contributed by 3d-gussner. Use at your own risk. Script downloads Arduino executables outside of Prusa control. Report problems [there.](https://github.com/3d-gussner/Prusa-Firmware/issues) Multi language build is supported._
|
||||
- follow the Microsoft guide https://docs.microsoft.com/en-us/windows/wsl/install-win10
|
||||
You can also use the 'prepare_winbuild.ps1' powershell script with Administrator rights
|
||||
- Tested versions are at this moment
|
||||
- Ubuntu other may different
|
||||
- After the installation and reboot please open your Ubuntu bash and do following steps
|
||||
- run command `apt-get update`
|
||||
- to install zip run `apt-get install zip`
|
||||
- add few lines at the top of `~/.bashrc` by running `sudo nano ~/.bashrc`
|
||||
|
||||
export OS="Linux"
|
||||
export JAVA_TOOL_OPTIONS="-Djava.net.preferIPv4Stack=true"
|
||||
export GPG_TTY=$(tty)
|
||||
|
||||
use `CRTL-X` to close nano and confirm to write the new entries
|
||||
- restart Ubuntu bash
|
||||
Now your Ubuntu subsystem is ready to use the automatic `PF-build.sh` script and compile your firmware correctly
|
||||
|
||||
#### Some Tips for Ubuntu
|
||||
- Linux is case sensetive so please don't forget to use capital letters where needed, like changing to a directory
|
||||
- To change the path to your Prusa-Firmware location you downloaded and unzipped
|
||||
- Example: You files are under `C:\Users\<your-username>\Downloads\Prusa-Firmware-MK3`
|
||||
- use under Ubuntu the following command `cd /mnt/c/Users/<your-username>/Downloads/Prusa-Firmware-MK3`
|
||||
to change to the right folder
|
||||
- Unix and windows have different line endings (LF vs CRLF), try dos2unix to convert
|
||||
- This should fix the `"$'\r': command not found"` error
|
||||
- to install run `apt-get install dos2unix`
|
||||
|
||||
#### Compile Prusa-firmware with Ubuntu Linux subsystem installed
|
||||
- open Ubuntu bash
|
||||
- change to your source code folder (case sensitive)
|
||||
- run `./PF-build.sh`
|
||||
- follow the instructions
|
||||
|
||||
### Using Git-bash under Windows 10 64-bit
|
||||
_notes: Script and instructions contributed by 3d-gussner. Use at your own risk. Script downloads Arduino executables outside of Prusa control. Report problems [there.](https://github.com/3d-gussner/Prusa-Firmware/issues) Multi language build is supported._
|
||||
- Download and install the 64bit Git version https://git-scm.com/download/win
|
||||
- Also follow these instructions https://gist.github.com/evanwill/0207876c3243bbb6863e65ec5dc3f058
|
||||
- Download and install 7z-zip from its official website https://www.7-zip.org/
|
||||
By default, it is installed under the directory /c/Program Files/7-Zip in Windows 10
|
||||
- Run `Git-Bash` under Administrator privilege
|
||||
- navigate to the directory /c/Program Files/Git/mingw64/bin
|
||||
- run `ln -s /c/Program Files/7-Zip/7z.exe zip.exe`
|
||||
|
||||
#### Compile Prusa-firmware with Git-bash installed
|
||||
- open Git-bash
|
||||
- change to your source code folder
|
||||
- run `bash PF-build.sh`
|
||||
- follow the instructions
|
||||
|
||||
|
||||
# 3. Automated tests
|
||||
## Prerequisites
|
||||
c++11 compiler e.g. g++ 6.3.1
|
||||
|
|
@ -85,7 +159,7 @@ cmake
|
|||
build system - ninja or gnu make
|
||||
|
||||
## Building
|
||||
Create folder where you want to build tests.
|
||||
Create a folder where you want to build tests.
|
||||
|
||||
Example:
|
||||
|
||||
|
|
@ -116,3 +190,20 @@ Example:
|
|||
|
||||
# 4. Documentation
|
||||
run [doxygen](http://www.doxygen.nl/) in Firmware folder
|
||||
|
||||
# 5. FAQ
|
||||
Q:I built firmware using Arduino and I see "?" instead of numbers in printer user interface.
|
||||
|
||||
A:Step 1.c was ommited or you updated Arduino and now platform.txt located somewhere in your user profile is used.
|
||||
|
||||
Q:I built firmware using Arduino and printer now speaks Klingon (nonsense characters and symbols are displayed @^#$&*°;~ÿ)
|
||||
|
||||
A:Step 2.c was omitted.
|
||||
|
||||
Q:What environment does Prusa use to build the firmware in the first place?
|
||||
|
||||
A:Our production builds are 99.9% equivalent to https://github.com/prusa3d/Prusa-Firmware#linux this is also easiest way to build as only one step is needed - run single script, which downloads patched Arduino from github, builds using it, then extracts translated strings and creates language variants (for MK2x) or language hex file for external SPI flash (MK3x). But you need Linux or Linux in virtual machine. This is also what happens when you open pull request to our repository - all variants are built by Travis http://travis-ci.org/ (to check for compilation errors). You can see, what is happening in .travis.yml. It would be also possible to get hex built by travis, only deploy step is missing in .travis.yml. You can get inspiration how to deploy hex by travis and how to setup travis in https://github.com/prusa3d/MM-control-01/ repository. Final hex is located in ./lang/firmware.hex Community reproduced this for Windows in https://github.com/prusa3d/Prusa-Firmware#using-linux-subsystem-under-windows-10-64-bit or https://github.com/prusa3d/Prusa-Firmware#using-git-bash-under-windows-10-64-bit .
|
||||
|
||||
Q:Why are build instructions for Arduino mess.
|
||||
|
||||
Y:We are too lazy to ship proper board definition for Arduino. We plan to swich to cmake + ninja to be inherently multiplatform, easily integrate build tools, suport more IDEs, get 10 times shorter build times and be able to update compiler whenewer we want.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,793 @@
|
|||
/**
|
||||
* @file
|
||||
* @author Marek Kuhn
|
||||
*/
|
||||
|
||||
// For now the functions are just COPIED (lots of depencendies in ultralcd.h)
|
||||
|
||||
#include "catch.hpp"
|
||||
#include <iostream>
|
||||
|
||||
|
||||
std::string itostr3(int i){
|
||||
return std::to_string(i);
|
||||
}
|
||||
|
||||
std::string eeprom_read_word(uint16_t* /*i*/){
|
||||
return "eeprom_read";
|
||||
}
|
||||
|
||||
int _millis(){return 10000;}
|
||||
|
||||
static int farm_no;
|
||||
static int busy_state;
|
||||
static int PAUSED_FOR_USER;
|
||||
static int status_number;
|
||||
static int total_filament_used;
|
||||
static int feedmultiply;
|
||||
static int longFilenameOLD;
|
||||
static int starttime;
|
||||
static int isPrintPaused;
|
||||
static int IS_SD_PRINTING;
|
||||
static int farm_status;
|
||||
static int farm_timer;
|
||||
static int loading_flag;
|
||||
|
||||
static int target_temperature[1];
|
||||
static int current_temperature[1];
|
||||
static int target_temperature_bed;
|
||||
static int current_temperature_bed;
|
||||
|
||||
static uint16_t nozzle_diameter;
|
||||
static uint16_t* EEPROM_NOZZLE_DIAMETER_uM;
|
||||
|
||||
static std::string FW_VERSION;
|
||||
|
||||
struct Card {
|
||||
int paused = 0;
|
||||
int percentDone(){ return 50; }
|
||||
};
|
||||
|
||||
static Card card;
|
||||
|
||||
void setup_mockups(){
|
||||
farm_no = 0;
|
||||
|
||||
busy_state = 0;
|
||||
status_number = 0;
|
||||
PAUSED_FOR_USER = 0;
|
||||
|
||||
total_filament_used = 0;
|
||||
feedmultiply = 0;
|
||||
longFilenameOLD = 0;
|
||||
starttime = 0;
|
||||
|
||||
FW_VERSION = "3.8.0";
|
||||
|
||||
isPrintPaused = 0;
|
||||
IS_SD_PRINTING = 0;
|
||||
farm_status = 0;
|
||||
farm_timer = 1;
|
||||
loading_flag = 0;
|
||||
|
||||
target_temperature[0] = {215};
|
||||
current_temperature[0] = {204};
|
||||
target_temperature_bed = 60;
|
||||
current_temperature_bed = 55;
|
||||
|
||||
nozzle_diameter = 400;
|
||||
EEPROM_NOZZLE_DIAMETER_uM = &nozzle_diameter;
|
||||
|
||||
}
|
||||
|
||||
|
||||
// Copy of pre 3.8 version set of functions
|
||||
namespace old_code
|
||||
{
|
||||
|
||||
// Mocking Serial line
|
||||
static std::string SERIAL_BUFFER = "";
|
||||
|
||||
void SERIAL_ECHO(std::string s){
|
||||
SERIAL_BUFFER += s;
|
||||
}
|
||||
|
||||
void SERIAL_ECHO(int i){
|
||||
SERIAL_BUFFER += std::to_string(i);
|
||||
}
|
||||
|
||||
void SERIAL_ECHO(char c){
|
||||
SERIAL_BUFFER += char(c);
|
||||
}
|
||||
|
||||
void SERIAL_ECHOLN(std::string s){
|
||||
SERIAL_BUFFER += s + "\n";
|
||||
}
|
||||
|
||||
void SERIAL_ECHOLN(char c){
|
||||
SERIAL_BUFFER += char(c);
|
||||
}
|
||||
|
||||
void SERIAL_RESET(){
|
||||
SERIAL_BUFFER.clear();
|
||||
}
|
||||
|
||||
struct MySerial {
|
||||
void print(int i){
|
||||
SERIAL_ECHO(i);
|
||||
}
|
||||
void println(){
|
||||
SERIAL_ECHO("\n");
|
||||
}
|
||||
};
|
||||
|
||||
static MySerial MYSERIAL;
|
||||
|
||||
static void prusa_stat_printerstatus(int _status)
|
||||
{
|
||||
SERIAL_ECHO("[PRN:");
|
||||
SERIAL_ECHO(_status);
|
||||
SERIAL_ECHO("]");
|
||||
}
|
||||
|
||||
static void prusa_stat_farm_number() {
|
||||
SERIAL_ECHO("[PFN:");
|
||||
SERIAL_ECHO(farm_no);
|
||||
SERIAL_ECHO("]");
|
||||
}
|
||||
|
||||
static void prusa_stat_diameter() {
|
||||
SERIAL_ECHO("[DIA:");
|
||||
SERIAL_ECHO(eeprom_read_word((uint16_t*)EEPROM_NOZZLE_DIAMETER_uM));
|
||||
SERIAL_ECHO("]");
|
||||
}
|
||||
|
||||
static void prusa_stat_temperatures()
|
||||
{
|
||||
SERIAL_ECHO("[ST0:");
|
||||
SERIAL_ECHO(target_temperature[0]);
|
||||
SERIAL_ECHO("][STB:");
|
||||
SERIAL_ECHO(target_temperature_bed);
|
||||
SERIAL_ECHO("][AT0:");
|
||||
SERIAL_ECHO(current_temperature[0]);
|
||||
SERIAL_ECHO("][ATB:");
|
||||
SERIAL_ECHO(current_temperature_bed);
|
||||
SERIAL_ECHO("]");
|
||||
}
|
||||
|
||||
static void prusa_stat_printinfo()
|
||||
{
|
||||
SERIAL_ECHO("[TFU:");
|
||||
SERIAL_ECHO(total_filament_used);
|
||||
SERIAL_ECHO("][PCD:");
|
||||
SERIAL_ECHO(itostr3(card.percentDone()));
|
||||
SERIAL_ECHO("][FEM:");
|
||||
SERIAL_ECHO(itostr3(feedmultiply));
|
||||
SERIAL_ECHO("][FNM:");
|
||||
SERIAL_ECHO(longFilenameOLD);
|
||||
SERIAL_ECHO("][TIM:");
|
||||
if (starttime != 0)
|
||||
{
|
||||
SERIAL_ECHO(_millis() / 1000 - starttime / 1000);
|
||||
}
|
||||
else
|
||||
{
|
||||
SERIAL_ECHO(0);
|
||||
}
|
||||
SERIAL_ECHO("][FWR:");
|
||||
SERIAL_ECHO(FW_VERSION);
|
||||
SERIAL_ECHO("]");
|
||||
prusa_stat_diameter();
|
||||
}
|
||||
|
||||
void prusa_statistics(int _message, uint8_t _fil_nr) {
|
||||
#ifdef DEBUG_DISABLE_PRUSA_STATISTICS
|
||||
return;
|
||||
#endif //DEBUG_DISABLE_PRUSA_STATISTICS
|
||||
switch (_message)
|
||||
{
|
||||
|
||||
case 0: // default message
|
||||
if (busy_state == PAUSED_FOR_USER)
|
||||
{
|
||||
SERIAL_ECHO("{");
|
||||
prusa_stat_printerstatus(15);
|
||||
prusa_stat_farm_number();
|
||||
prusa_stat_printinfo();
|
||||
SERIAL_ECHOLN("}");
|
||||
status_number = 15;
|
||||
}
|
||||
else if (isPrintPaused || card.paused)
|
||||
{
|
||||
SERIAL_ECHO("{");
|
||||
prusa_stat_printerstatus(14);
|
||||
prusa_stat_farm_number();
|
||||
prusa_stat_printinfo();
|
||||
SERIAL_ECHOLN("}");
|
||||
status_number = 14;
|
||||
}
|
||||
else if (IS_SD_PRINTING || loading_flag)
|
||||
{
|
||||
SERIAL_ECHO("{");
|
||||
prusa_stat_printerstatus(4);
|
||||
prusa_stat_farm_number();
|
||||
prusa_stat_printinfo();
|
||||
SERIAL_ECHOLN("}");
|
||||
status_number = 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
SERIAL_ECHO("{");
|
||||
prusa_stat_printerstatus(1);
|
||||
prusa_stat_farm_number();
|
||||
prusa_stat_diameter();
|
||||
SERIAL_ECHOLN("}");
|
||||
status_number = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1: // 1 heating
|
||||
farm_status = 2;
|
||||
SERIAL_ECHO("{");
|
||||
prusa_stat_printerstatus(2);
|
||||
prusa_stat_farm_number();
|
||||
SERIAL_ECHOLN("}");
|
||||
status_number = 2;
|
||||
farm_timer = 1;
|
||||
break;
|
||||
|
||||
case 2: // heating done
|
||||
farm_status = 3;
|
||||
SERIAL_ECHO("{");
|
||||
prusa_stat_printerstatus(3);
|
||||
prusa_stat_farm_number();
|
||||
SERIAL_ECHOLN("}");
|
||||
status_number = 3;
|
||||
farm_timer = 1;
|
||||
|
||||
if (IS_SD_PRINTING || loading_flag)
|
||||
{
|
||||
farm_status = 4;
|
||||
SERIAL_ECHO("{");
|
||||
prusa_stat_printerstatus(4);
|
||||
prusa_stat_farm_number();
|
||||
SERIAL_ECHOLN("}");
|
||||
status_number = 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
SERIAL_ECHO("{");
|
||||
prusa_stat_printerstatus(3);
|
||||
prusa_stat_farm_number();
|
||||
SERIAL_ECHOLN("}");
|
||||
status_number = 3;
|
||||
}
|
||||
farm_timer = 1;
|
||||
break;
|
||||
|
||||
case 3: // filament change
|
||||
|
||||
break;
|
||||
case 4: // print succesfull
|
||||
SERIAL_ECHO("{[RES:1][FIL:");
|
||||
MYSERIAL.print(int(_fil_nr));
|
||||
SERIAL_ECHO("]");
|
||||
prusa_stat_printerstatus(status_number);
|
||||
prusa_stat_farm_number();
|
||||
SERIAL_ECHOLN("}");
|
||||
farm_timer = 2;
|
||||
break;
|
||||
case 5: // print not succesfull
|
||||
SERIAL_ECHO("{[RES:0][FIL:");
|
||||
MYSERIAL.print(int(_fil_nr));
|
||||
SERIAL_ECHO("]");
|
||||
prusa_stat_printerstatus(status_number);
|
||||
prusa_stat_farm_number();
|
||||
SERIAL_ECHOLN("}");
|
||||
farm_timer = 2;
|
||||
break;
|
||||
case 6: // print done
|
||||
SERIAL_ECHO("{[PRN:8]");
|
||||
prusa_stat_farm_number();
|
||||
SERIAL_ECHOLN("}");
|
||||
status_number = 8;
|
||||
farm_timer = 2;
|
||||
break;
|
||||
case 7: // print done - stopped
|
||||
SERIAL_ECHO("{[PRN:9]");
|
||||
prusa_stat_farm_number();
|
||||
SERIAL_ECHOLN("}");
|
||||
status_number = 9;
|
||||
farm_timer = 2;
|
||||
break;
|
||||
case 8: // printer started
|
||||
SERIAL_ECHO("{[PRN:0][PFN:");
|
||||
status_number = 0;
|
||||
SERIAL_ECHO(farm_no);
|
||||
SERIAL_ECHOLN("]}");
|
||||
farm_timer = 2;
|
||||
break;
|
||||
case 20: // echo farm no
|
||||
SERIAL_ECHO("{");
|
||||
prusa_stat_printerstatus(status_number);
|
||||
prusa_stat_farm_number();
|
||||
SERIAL_ECHOLN("}");
|
||||
farm_timer = 4;
|
||||
break;
|
||||
case 21: // temperatures
|
||||
SERIAL_ECHO("{");
|
||||
prusa_stat_temperatures();
|
||||
prusa_stat_farm_number();
|
||||
prusa_stat_printerstatus(status_number);
|
||||
SERIAL_ECHOLN("}");
|
||||
break;
|
||||
case 22: // waiting for filament change
|
||||
SERIAL_ECHO("{[PRN:5]");
|
||||
prusa_stat_farm_number();
|
||||
SERIAL_ECHOLN("}");
|
||||
status_number = 5;
|
||||
break;
|
||||
|
||||
case 90: // Error - Thermal Runaway
|
||||
SERIAL_ECHO("{[ERR:1]");
|
||||
prusa_stat_farm_number();
|
||||
SERIAL_ECHOLN("}");
|
||||
break;
|
||||
case 91: // Error - Thermal Runaway Preheat
|
||||
SERIAL_ECHO("{[ERR:2]");
|
||||
prusa_stat_farm_number();
|
||||
SERIAL_ECHOLN("}");
|
||||
break;
|
||||
case 92: // Error - Min temp
|
||||
SERIAL_ECHO("{[ERR:3]");
|
||||
prusa_stat_farm_number();
|
||||
SERIAL_ECHOLN("}");
|
||||
break;
|
||||
case 93: // Error - Max temp
|
||||
SERIAL_ECHO("{[ERR:4]");
|
||||
prusa_stat_farm_number();
|
||||
SERIAL_ECHOLN("}");
|
||||
break;
|
||||
|
||||
case 99: // heartbeat
|
||||
SERIAL_ECHO("{[PRN:99]");
|
||||
prusa_stat_temperatures();
|
||||
SERIAL_ECHO("[PFN:");
|
||||
SERIAL_ECHO(farm_no);
|
||||
SERIAL_ECHO("]");
|
||||
SERIAL_ECHOLN("}");
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// Copy of 3.8 version of functions
|
||||
namespace new_code
|
||||
{
|
||||
|
||||
// Mocking Serial line
|
||||
static std::string SERIAL_BUFFER = "";
|
||||
|
||||
void SERIAL_ECHO(std::string s){
|
||||
SERIAL_BUFFER += s;
|
||||
}
|
||||
|
||||
void SERIAL_ECHO(int i){
|
||||
SERIAL_BUFFER += std::to_string(i);
|
||||
}
|
||||
|
||||
void SERIAL_ECHO(char c){
|
||||
SERIAL_BUFFER += char(c);
|
||||
}
|
||||
|
||||
void SERIAL_ECHOLN(std::string s){
|
||||
SERIAL_BUFFER += s + "\n";
|
||||
}
|
||||
|
||||
void SERIAL_ECHOLN(char c){
|
||||
SERIAL_BUFFER += char(c);
|
||||
SERIAL_BUFFER += "\n";
|
||||
}
|
||||
|
||||
void SERIAL_RESET(){
|
||||
SERIAL_BUFFER.clear();
|
||||
}
|
||||
|
||||
struct MySerial {
|
||||
void print(int i){
|
||||
SERIAL_ECHO(i);
|
||||
}
|
||||
void println(){
|
||||
SERIAL_ECHO("\n");
|
||||
}
|
||||
};
|
||||
|
||||
static MySerial MYSERIAL;
|
||||
|
||||
static void prusa_stat_printerstatus(int _status)
|
||||
{
|
||||
SERIAL_ECHO("[PRN:");
|
||||
SERIAL_ECHO(_status);
|
||||
SERIAL_ECHO(']');
|
||||
}
|
||||
|
||||
static void prusa_stat_farm_number() {
|
||||
SERIAL_ECHO("[PFN:");
|
||||
SERIAL_ECHO(farm_no);
|
||||
SERIAL_ECHO(']');
|
||||
}
|
||||
|
||||
static void prusa_stat_diameter() {
|
||||
SERIAL_ECHO("[DIA:");
|
||||
SERIAL_ECHO(eeprom_read_word((uint16_t*)EEPROM_NOZZLE_DIAMETER_uM));
|
||||
SERIAL_ECHO(']');
|
||||
}
|
||||
|
||||
static void prusa_stat_temperatures()
|
||||
{
|
||||
SERIAL_ECHO("[ST0:");
|
||||
SERIAL_ECHO(target_temperature[0]);
|
||||
SERIAL_ECHO("][STB:");
|
||||
SERIAL_ECHO(target_temperature_bed);
|
||||
SERIAL_ECHO("][AT0:");
|
||||
SERIAL_ECHO(current_temperature[0]);
|
||||
SERIAL_ECHO("][ATB:");
|
||||
SERIAL_ECHO(current_temperature_bed);
|
||||
SERIAL_ECHO(']');
|
||||
}
|
||||
|
||||
static void prusa_stat_printinfo()
|
||||
{
|
||||
SERIAL_ECHO("[TFU:");
|
||||
SERIAL_ECHO(total_filament_used);
|
||||
SERIAL_ECHO("][PCD:");
|
||||
SERIAL_ECHO(itostr3(card.percentDone()));
|
||||
SERIAL_ECHO("][FEM:");
|
||||
SERIAL_ECHO(itostr3(feedmultiply));
|
||||
SERIAL_ECHO("][FNM:");
|
||||
SERIAL_ECHO(longFilenameOLD);
|
||||
SERIAL_ECHO("][TIM:");
|
||||
if (starttime != 0)
|
||||
{
|
||||
SERIAL_ECHO(_millis() / 1000 - starttime / 1000);
|
||||
}
|
||||
else
|
||||
{
|
||||
SERIAL_ECHO(0);
|
||||
}
|
||||
SERIAL_ECHO("][FWR:");
|
||||
SERIAL_ECHO(FW_VERSION);
|
||||
SERIAL_ECHO(']');
|
||||
prusa_stat_diameter();
|
||||
}
|
||||
|
||||
void prusa_statistics_err(char c){
|
||||
SERIAL_ECHO("{[ERR:");
|
||||
SERIAL_ECHO(c);
|
||||
SERIAL_ECHO(']');
|
||||
prusa_stat_farm_number();
|
||||
}
|
||||
|
||||
void prusa_statistics_case0(uint8_t statnr){
|
||||
SERIAL_ECHO("{");
|
||||
prusa_stat_printerstatus(statnr);
|
||||
prusa_stat_farm_number();
|
||||
prusa_stat_printinfo();
|
||||
}
|
||||
|
||||
void prusa_statistics(int _message, uint8_t _fil_nr) {
|
||||
#ifdef DEBUG_DISABLE_PRUSA_STATISTICS
|
||||
return;
|
||||
#endif //DEBUG_DISABLE_PRUSA_STATISTICS
|
||||
switch (_message)
|
||||
{
|
||||
|
||||
case 0: // default message
|
||||
if (busy_state == PAUSED_FOR_USER)
|
||||
{
|
||||
prusa_statistics_case0(15);
|
||||
}
|
||||
else if (isPrintPaused || card.paused)
|
||||
{
|
||||
prusa_statistics_case0(14);
|
||||
}
|
||||
else if (IS_SD_PRINTING || loading_flag)
|
||||
{
|
||||
prusa_statistics_case0(4);
|
||||
}
|
||||
else
|
||||
{
|
||||
SERIAL_ECHO("{");
|
||||
prusa_stat_printerstatus(1);
|
||||
prusa_stat_farm_number();
|
||||
prusa_stat_diameter();
|
||||
status_number = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1: // 1 heating
|
||||
farm_status = 2;
|
||||
SERIAL_ECHO('{');
|
||||
prusa_stat_printerstatus(2);
|
||||
prusa_stat_farm_number();
|
||||
status_number = 2;
|
||||
farm_timer = 1;
|
||||
break;
|
||||
|
||||
case 2: // heating done
|
||||
farm_status = 3;
|
||||
SERIAL_ECHO('{');
|
||||
prusa_stat_printerstatus(3);
|
||||
prusa_stat_farm_number();
|
||||
SERIAL_ECHOLN('}');
|
||||
status_number = 3;
|
||||
farm_timer = 1;
|
||||
|
||||
if (IS_SD_PRINTING || loading_flag)
|
||||
{
|
||||
farm_status = 4;
|
||||
SERIAL_ECHO('{');
|
||||
prusa_stat_printerstatus(4);
|
||||
prusa_stat_farm_number();
|
||||
status_number = 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
SERIAL_ECHO('{');
|
||||
prusa_stat_printerstatus(3);
|
||||
prusa_stat_farm_number();
|
||||
status_number = 3;
|
||||
}
|
||||
farm_timer = 1;
|
||||
break;
|
||||
|
||||
case 3: // filament change
|
||||
// must do a return here to prevent doing SERIAL_ECHOLN("}") at the very end of this function
|
||||
// saved a considerable amount of FLASH
|
||||
return;
|
||||
case 4: // print succesfull
|
||||
SERIAL_ECHO("{[RES:1][FIL:");
|
||||
MYSERIAL.print(int(_fil_nr));
|
||||
SERIAL_ECHO(']');
|
||||
prusa_stat_printerstatus(status_number);
|
||||
prusa_stat_farm_number();
|
||||
farm_timer = 2;
|
||||
break;
|
||||
case 5: // print not succesfull
|
||||
SERIAL_ECHO("{[RES:0][FIL:");
|
||||
MYSERIAL.print(int(_fil_nr));
|
||||
SERIAL_ECHO(']');
|
||||
prusa_stat_printerstatus(status_number);
|
||||
prusa_stat_farm_number();
|
||||
farm_timer = 2;
|
||||
break;
|
||||
case 6: // print done
|
||||
SERIAL_ECHO("{[PRN:8]");
|
||||
prusa_stat_farm_number();
|
||||
status_number = 8;
|
||||
farm_timer = 2;
|
||||
break;
|
||||
case 7: // print done - stopped
|
||||
SERIAL_ECHO("{[PRN:9]");
|
||||
prusa_stat_farm_number();
|
||||
status_number = 9;
|
||||
farm_timer = 2;
|
||||
break;
|
||||
case 8: // printer started
|
||||
SERIAL_ECHO("{[PRN:0][PFN:");
|
||||
status_number = 0;
|
||||
SERIAL_ECHO(farm_no);
|
||||
SERIAL_ECHO(']');
|
||||
farm_timer = 2;
|
||||
break;
|
||||
case 20: // echo farm no
|
||||
SERIAL_ECHO('{');
|
||||
prusa_stat_printerstatus(status_number);
|
||||
prusa_stat_farm_number();
|
||||
farm_timer = 4;
|
||||
break;
|
||||
case 21: // temperatures
|
||||
SERIAL_ECHO('{');
|
||||
prusa_stat_temperatures();
|
||||
prusa_stat_farm_number();
|
||||
prusa_stat_printerstatus(status_number);
|
||||
break;
|
||||
case 22: // waiting for filament change
|
||||
SERIAL_ECHO("{[PRN:5]");
|
||||
prusa_stat_farm_number();
|
||||
status_number = 5;
|
||||
break;
|
||||
|
||||
case 90: // Error - Thermal Runaway
|
||||
prusa_statistics_err('1');
|
||||
break;
|
||||
case 91: // Error - Thermal Runaway Preheat
|
||||
prusa_statistics_err('2');
|
||||
break;
|
||||
case 92: // Error - Min temp
|
||||
prusa_statistics_err('3');
|
||||
break;
|
||||
case 93: // Error - Max temp
|
||||
prusa_statistics_err('4');
|
||||
break;
|
||||
|
||||
case 99: // heartbeat
|
||||
SERIAL_ECHO("{[PRN:99]");
|
||||
prusa_stat_temperatures();
|
||||
SERIAL_ECHO("[PFN:");
|
||||
SERIAL_ECHO(farm_no);
|
||||
SERIAL_ECHO(']');
|
||||
|
||||
break;
|
||||
}
|
||||
SERIAL_ECHOLN('}');
|
||||
|
||||
}
|
||||
|
||||
} // end namespace new
|
||||
|
||||
void SERIALS_RESET(){
|
||||
old_code::SERIAL_RESET();
|
||||
new_code::SERIAL_RESET();
|
||||
}
|
||||
|
||||
std::string SERIALS_SERIALIZE(){
|
||||
return old_code::SERIAL_BUFFER + "\n" + new_code::SERIAL_BUFFER;
|
||||
}
|
||||
void SERIALS_PRINT(){
|
||||
std::cout << "[Printing buffers...] \n";
|
||||
std::cout << old_code::SERIAL_BUFFER << "\n";
|
||||
std::cout << new_code::SERIAL_BUFFER << "\n";
|
||||
}
|
||||
|
||||
int SERIALS_COMPARE(){
|
||||
// Trim the newline at the end
|
||||
|
||||
if(old_code::SERIAL_BUFFER.back() == '\n'){
|
||||
old_code::SERIAL_BUFFER.pop_back();
|
||||
}
|
||||
if(new_code::SERIAL_BUFFER.back() == '\n'){
|
||||
new_code::SERIAL_BUFFER.pop_back();
|
||||
}
|
||||
|
||||
std::cout << "Comparing: \n";
|
||||
std::cout << old_code::SERIAL_BUFFER << "\n";
|
||||
std::cout << new_code::SERIAL_BUFFER << "\n";
|
||||
|
||||
return old_code::SERIAL_BUFFER.compare(new_code::SERIAL_BUFFER);
|
||||
}
|
||||
|
||||
|
||||
// --------------- TEST CASES ---------------- //
|
||||
|
||||
TEST_CASE("Serials compare ignore newline at the end", "[helper]")
|
||||
{
|
||||
SERIALS_RESET();
|
||||
old_code::SERIAL_BUFFER = "Hello compare me.";
|
||||
new_code::SERIAL_BUFFER = "Hello compare me.";
|
||||
CHECK(SERIALS_COMPARE() == 0);
|
||||
|
||||
SERIALS_RESET();
|
||||
old_code::SERIAL_BUFFER = "Hello compare me.\n";
|
||||
new_code::SERIAL_BUFFER = "Hello compare me.";
|
||||
CHECK(SERIALS_COMPARE() == 0);
|
||||
|
||||
SERIALS_RESET();
|
||||
old_code::SERIAL_BUFFER = "Hello compare me.";
|
||||
new_code::SERIAL_BUFFER = "Hello compare me.\n";
|
||||
CHECK(SERIALS_COMPARE() == 0);
|
||||
}
|
||||
|
||||
TEST_CASE("Printer status is shown", "[prusa_stats]")
|
||||
{
|
||||
SERIALS_RESET();
|
||||
setup_mockups();
|
||||
|
||||
old_code::prusa_stat_printerstatus(1);
|
||||
new_code::prusa_stat_printerstatus(1);
|
||||
|
||||
INFO(SERIALS_SERIALIZE());
|
||||
CHECK(SERIALS_COMPARE() == 0);
|
||||
}
|
||||
|
||||
|
||||
TEST_CASE("Printer info is shown", "[prusa_stats]")
|
||||
{
|
||||
SERIALS_RESET();
|
||||
setup_mockups();
|
||||
|
||||
old_code::prusa_stat_printinfo();
|
||||
new_code::prusa_stat_printinfo();
|
||||
|
||||
INFO(SERIALS_SERIALIZE());
|
||||
CHECK(SERIALS_COMPARE() == 0);
|
||||
}
|
||||
|
||||
TEST_CASE("Printer temperatures are shown", "[prusa_stats]")
|
||||
{
|
||||
SERIALS_RESET();
|
||||
setup_mockups();
|
||||
|
||||
old_code::prusa_stat_temperatures();
|
||||
new_code::prusa_stat_temperatures();
|
||||
|
||||
INFO(SERIALS_SERIALIZE());
|
||||
CHECK(SERIALS_COMPARE() == 0);
|
||||
}
|
||||
|
||||
TEST_CASE("Prusa_statistics test", "[prusa_stats]")
|
||||
{
|
||||
SERIALS_RESET();
|
||||
setup_mockups();
|
||||
|
||||
int test_codes[] = {0,1,2,3,4,5,6,7,8,20,21,22,90,91,92,93,99};
|
||||
int size = sizeof(test_codes)/sizeof(test_codes[0]);
|
||||
|
||||
for(int i = 0; i < size; i++){
|
||||
std::cout << "Testing prusa_statistics(" << std::to_string(i) << ")\n";
|
||||
|
||||
switch(i)
|
||||
{
|
||||
case 0: {
|
||||
busy_state = 0;
|
||||
PAUSED_FOR_USER = 0;
|
||||
old_code::prusa_statistics(test_codes[i],0);
|
||||
new_code::prusa_statistics(test_codes[i],0);
|
||||
CHECK(SERIALS_COMPARE() == 0);
|
||||
SERIALS_RESET();
|
||||
|
||||
busy_state = 1;
|
||||
PAUSED_FOR_USER = 0;
|
||||
isPrintPaused = 1;
|
||||
old_code::prusa_statistics(test_codes[i],0);
|
||||
new_code::prusa_statistics(test_codes[i],0);
|
||||
CHECK(SERIALS_COMPARE() == 0);
|
||||
SERIALS_RESET();
|
||||
|
||||
isPrintPaused = 0;
|
||||
card.paused = 0;
|
||||
IS_SD_PRINTING = 1;
|
||||
old_code::prusa_statistics(test_codes[i],0);
|
||||
new_code::prusa_statistics(test_codes[i],0);
|
||||
CHECK(SERIALS_COMPARE() == 0);
|
||||
SERIALS_RESET();
|
||||
|
||||
busy_state = 1;
|
||||
PAUSED_FOR_USER = 0;
|
||||
isPrintPaused = 0;
|
||||
IS_SD_PRINTING = 0;
|
||||
loading_flag = 0;
|
||||
old_code::prusa_statistics(test_codes[i],0);
|
||||
new_code::prusa_statistics(test_codes[i],0);
|
||||
CHECK(SERIALS_COMPARE() == 0);
|
||||
SERIALS_RESET();
|
||||
break;
|
||||
}
|
||||
case 2: {
|
||||
IS_SD_PRINTING = 1;
|
||||
old_code::prusa_statistics(test_codes[i],0);
|
||||
new_code::prusa_statistics(test_codes[i],0);
|
||||
CHECK(SERIALS_COMPARE() == 0);
|
||||
SERIALS_RESET();
|
||||
|
||||
IS_SD_PRINTING = 0;
|
||||
loading_flag = 0;
|
||||
old_code::prusa_statistics(test_codes[i],0);
|
||||
new_code::prusa_statistics(test_codes[i],0);
|
||||
CHECK(SERIALS_COMPARE() == 0);
|
||||
SERIALS_RESET();
|
||||
|
||||
break;
|
||||
}
|
||||
default:{
|
||||
|
||||
old_code::prusa_statistics(test_codes[i],0);
|
||||
new_code::prusa_statistics(test_codes[i],0);
|
||||
CHECK(SERIALS_COMPARE() == 0);
|
||||
SERIALS_RESET();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
4
build.sh
4
build.sh
|
|
@ -1,5 +1,5 @@
|
|||
#!/bin/bash
|
||||
BUILD_ENV="1.0.1"
|
||||
BUILD_ENV="1.0.6"
|
||||
SCRIPT_PATH="$( cd "$(dirname "$0")" ; pwd -P )"
|
||||
|
||||
if [ ! -d "build-env" ]; then
|
||||
|
|
@ -31,7 +31,7 @@ if [ ! -f "$SCRIPT_PATH/Firmware/Configuration_prusa.h" ]; then
|
|||
cp $SCRIPT_PATH/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 8
|
||||
fi
|
||||
|
||||
$BUILD_ENV_PATH/arduino $SCRIPT_PATH/Firmware/Firmware.ino --verify --board rambo:avr:rambo --pref build.path=$BUILD_PATH || exit 9
|
||||
$BUILD_ENV_PATH/arduino $SCRIPT_PATH/Firmware/Firmware.ino --verify --board PrusaResearchRambo:avr:rambo --pref build.path=$BUILD_PATH --pref compiler.warning_level=all || exit 9
|
||||
|
||||
export ARDUINO=$BUILD_ENV_PATH
|
||||
|
||||
|
|
|
|||
|
|
@ -136,32 +136,32 @@ else
|
|||
if [ -e lang_cz.bin ]; then
|
||||
echo -n " Czech : " >&2
|
||||
./update_lang.sh cz 2>./update_lang_cz.out 1>/dev/null
|
||||
if [ $? -eq 0 ]; then echo 'OK' >&2; else echo 'NG!' >&2; fi
|
||||
if [ $? -eq 0 ]; then echo 'OK' >&2; else echo 'NG!' >&2; finish 1; fi
|
||||
fi
|
||||
if [ -e lang_de.bin ]; then
|
||||
echo -n " German : " >&2
|
||||
./update_lang.sh de 2>./update_lang_de.out 1>/dev/null
|
||||
if [ $? -eq 0 ]; then echo 'OK' >&2; else echo 'NG!' >&2; fi
|
||||
if [ $? -eq 0 ]; then echo 'OK' >&2; else echo 'NG!' >&2; finish 1; fi
|
||||
fi
|
||||
if [ -e lang_it.bin ]; then
|
||||
echo -n " Italian: " >&2
|
||||
./update_lang.sh it 2>./update_lang_it.out 1>/dev/null
|
||||
if [ $? -eq 0 ]; then echo 'OK' >&2; else echo 'NG!' >&2; fi
|
||||
if [ $? -eq 0 ]; then echo 'OK' >&2; else echo 'NG!' >&2; finish 1; fi
|
||||
fi
|
||||
if [ -e lang_es.bin ]; then
|
||||
echo -n " Spanish: " >&2
|
||||
./update_lang.sh es 2>./update_lang_es.out 1>/dev/null
|
||||
if [ $? -eq 0 ]; then echo 'OK' >&2; else echo 'NG!' >&2; fi
|
||||
if [ $? -eq 0 ]; then echo 'OK' >&2; else echo 'NG!' >&2; finish 1; fi
|
||||
fi
|
||||
if [ -e lang_fr.bin ]; then
|
||||
echo -n " French : " >&2
|
||||
./update_lang.sh fr 2>./update_lang_fr.out 1>/dev/null
|
||||
if [ $? -eq 0 ]; then echo 'OK' >&2; else echo 'NG!' >&2; fi
|
||||
if [ $? -eq 0 ]; then echo 'OK' >&2; else echo 'NG!' >&2; finish 1; fi
|
||||
fi
|
||||
if [ -e lang_pl.bin ]; then
|
||||
echo -n " Polish : " >&2
|
||||
./update_lang.sh pl 2>./update_lang_pl.out 1>/dev/null
|
||||
if [ $? -eq 0 ]; then echo 'OK' >&2; else echo 'NG!' >&2; fi
|
||||
if [ $? -eq 0 ]; then echo 'OK' >&2; else echo 'NG!' >&2; finish 1; fi
|
||||
fi
|
||||
# echo "skipped" >&2
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -81,6 +81,8 @@ generate_binary()
|
|||
rm -f lang_$1.tmp
|
||||
rm -f lang_$1.dat
|
||||
LNG=$1
|
||||
#check lang dictionary
|
||||
/usr/bin/env python lang-check.py $1 --no-warning
|
||||
#create lang_xx.tmp - different processing for 'en' language
|
||||
if [ "$1" = "en" ]; then
|
||||
#remove comments and empty lines
|
||||
|
|
|
|||
|
|
@ -0,0 +1,75 @@
|
|||
#!/usr/bin/env python3
|
||||
"""Check lang files."""
|
||||
from argparse import ArgumentParser
|
||||
from traceback import print_exc
|
||||
from sys import stderr
|
||||
|
||||
|
||||
def parse_txt(lang, no_warning):
|
||||
"""Parse txt file and check strings to display definition."""
|
||||
if lang == "en":
|
||||
file_path = "lang_en.txt"
|
||||
else:
|
||||
file_path = "lang_en_%s.txt" % lang
|
||||
|
||||
lines = 1
|
||||
with open(file_path) as src:
|
||||
while True:
|
||||
comment = src.readline().split(' ')
|
||||
src.readline() # source
|
||||
translation = src.readline()[:-1]
|
||||
|
||||
cols = None
|
||||
rows = None
|
||||
for item in comment[1:]:
|
||||
key, val = item.split('=')
|
||||
if key == 'c':
|
||||
cols = int(val)
|
||||
elif key == 'r':
|
||||
rows = int(val)
|
||||
else:
|
||||
raise RuntimeError(
|
||||
"Unknown display definition %s on line %d" %
|
||||
(' '.join(comment), lines))
|
||||
if cols is None and rows is None:
|
||||
if not no_warning:
|
||||
print("[W]: No display definition on line %d" % lines)
|
||||
cols = len(translation) # propably fullscreen
|
||||
if rows is None:
|
||||
rows = 1
|
||||
|
||||
if len(translation)-2 > cols*rows:
|
||||
stderr.write(
|
||||
"[E]: Text %s is longer then definiton on line %d\n" %
|
||||
(translation, lines))
|
||||
stderr.flush()
|
||||
|
||||
if len(src.readline()) != 1: # empty line
|
||||
break
|
||||
lines += 4
|
||||
|
||||
|
||||
def main():
|
||||
"""Main function."""
|
||||
parser = ArgumentParser(
|
||||
description=__doc__,
|
||||
usage="$(prog)s lang")
|
||||
parser.add_argument(
|
||||
"lang", nargs='?', default="en", type=str,
|
||||
help="Check lang file (en|cs|de|es|fr|it|pl)")
|
||||
parser.add_argument(
|
||||
"--no-warning", action="store_true",
|
||||
help="Disable warnings")
|
||||
|
||||
args = parser.parse_args()
|
||||
try:
|
||||
parse_txt(args.lang, args.no_warning)
|
||||
return 0
|
||||
except Exception as exc:
|
||||
print_exc()
|
||||
parser.error("%s" % exc)
|
||||
return 1
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
exit(main())
|
||||
|
|
@ -1,25 +1,25 @@
|
|||
#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14 r=0
|
||||
#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
|
||||
" of 4"
|
||||
|
||||
#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14 r=0
|
||||
#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
|
||||
" of 9"
|
||||
|
||||
#MSG_MEASURED_OFFSET c=0 r=0
|
||||
#MSG_MEASURED_OFFSET
|
||||
"[0;0] point offset"
|
||||
|
||||
#MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
|
||||
"\x1b[2JCrash detection can\x1b[1;0Hbe turned on only in\x1b[2;0HNormal mode"
|
||||
"Crash detection can\rbe turned on only in\rNormal mode"
|
||||
|
||||
#MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
|
||||
"\x1b[2JWARNING:\x1b[1;0HCrash detection\x1b[2;0Hdisabled in\x1b[3;0HStealth mode"
|
||||
"WARNING:\rCrash detection\rdisabled in\rStealth mode"
|
||||
|
||||
#
|
||||
">Cancel"
|
||||
|
||||
#MSG_BABYSTEPPING_Z c=20 r=0
|
||||
"Adjusting Z"
|
||||
#MSG_BABYSTEPPING_Z c=15
|
||||
"Adjusting Z:"
|
||||
|
||||
#MSG_SELFTEST_CHECK_ALLCORRECT c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_ALLCORRECT c=20
|
||||
"All correct "
|
||||
|
||||
#MSG_WIZARD_DONE c=20 r=8
|
||||
|
|
@ -28,7 +28,7 @@
|
|||
#
|
||||
"Ambient"
|
||||
|
||||
#MSG_PRESS c=20 r=0
|
||||
#MSG_PRESS c=20
|
||||
"and press the knob"
|
||||
|
||||
#MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
|
||||
|
|
@ -40,13 +40,13 @@
|
|||
#
|
||||
"SpoolJoin [N/A]"
|
||||
|
||||
# MSG_AUTO_DEPLETE_OFF c=17 r=1
|
||||
#MSG_AUTO_DEPLETE_OFF c=17 r=1
|
||||
"SpoolJoin [off]"
|
||||
|
||||
#MSG_AUTO_HOME c=0 r=0
|
||||
#MSG_AUTO_HOME
|
||||
"Auto home"
|
||||
|
||||
#MSG_AUTOLOAD_FILAMENT c=17 r=0
|
||||
#MSG_AUTOLOAD_FILAMENT c=17
|
||||
"AutoLoad filament"
|
||||
|
||||
#MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
|
||||
|
|
@ -55,34 +55,28 @@
|
|||
#MSG_AUTOLOADING_ENABLED c=20 r=4
|
||||
"Autoloading filament is active, just press the knob and insert filament..."
|
||||
|
||||
#MSG_SELFTEST_AXIS_LENGTH c=0 r=0
|
||||
#MSG_SELFTEST_AXIS_LENGTH
|
||||
"Axis length"
|
||||
|
||||
#MSG_SELFTEST_AXIS c=0 r=0
|
||||
#MSG_SELFTEST_AXIS
|
||||
"Axis"
|
||||
|
||||
#MSG_SELFTEST_BEDHEATER c=0 r=0
|
||||
#MSG_SELFTEST_BEDHEATER
|
||||
"Bed / Heater"
|
||||
|
||||
#MSG_BED_DONE c=0 r=0
|
||||
#MSG_BED_DONE
|
||||
"Bed done"
|
||||
|
||||
#MSG_BED_HEATING c=0 r=0
|
||||
#MSG_BED_HEATING
|
||||
"Bed Heating"
|
||||
|
||||
#MSG_BED_CORRECTION_MENU c=0 r=0
|
||||
#MSG_BED_CORRECTION_MENU
|
||||
"Bed level correct"
|
||||
|
||||
#MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4
|
||||
"Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
|
||||
|
||||
#MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED c=20 r=4
|
||||
"Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset."
|
||||
|
||||
#MSG_BED_LEVELING_FAILED_POINT_HIGH c=20 r=4
|
||||
"Bed leveling failed. Sensor triggered too high. Waiting for reset."
|
||||
|
||||
#MSG_BED c=0 r=0
|
||||
#MSG_BED
|
||||
"Bed"
|
||||
|
||||
#MSG_MENU_BELT_STATUS c=15 r=1
|
||||
|
|
@ -94,10 +88,10 @@
|
|||
#
|
||||
"Calibrating home"
|
||||
|
||||
#MSG_CALIBRATE_BED c=0 r=0
|
||||
#MSG_CALIBRATE_BED
|
||||
"Calibrate XYZ"
|
||||
|
||||
#MSG_HOMEYZ c=0 r=0
|
||||
#MSG_HOMEYZ
|
||||
"Calibrate Z"
|
||||
|
||||
#MSG_CALIBRATE_PINDA c=17 r=1
|
||||
|
|
@ -112,37 +106,34 @@
|
|||
#MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
|
||||
"Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
|
||||
|
||||
#MSG_HOMEYZ_DONE c=0 r=0
|
||||
#MSG_HOMEYZ_DONE
|
||||
"Calibration done"
|
||||
|
||||
#MSG_MENU_CALIBRATION c=0 r=0
|
||||
#MSG_MENU_CALIBRATION
|
||||
"Calibration"
|
||||
|
||||
#
|
||||
"Cancel"
|
||||
|
||||
#MSG_SD_INSERTED c=0 r=0
|
||||
"Card inserted"
|
||||
|
||||
#MSG_SD_REMOVED c=0 r=0
|
||||
#MSG_SD_REMOVED
|
||||
"Card removed"
|
||||
|
||||
#MSG_NOT_COLOR c=0 r=0
|
||||
#MSG_NOT_COLOR
|
||||
"Color not correct"
|
||||
|
||||
#MSG_COOLDOWN c=0 r=0
|
||||
#MSG_COOLDOWN
|
||||
"Cooldown"
|
||||
|
||||
#
|
||||
"Copy selected language?"
|
||||
|
||||
#MSG_CRASHDETECT_ON c=0 r=0
|
||||
#MSG_CRASHDETECT_ON
|
||||
"Crash det. [on]"
|
||||
|
||||
#MSG_CRASHDETECT_NA c=0 r=0
|
||||
#MSG_CRASHDETECT_NA
|
||||
"Crash det. [N/A]"
|
||||
|
||||
#MSG_CRASHDETECT_OFF c=0 r=0
|
||||
#MSG_CRASHDETECT_OFF
|
||||
"Crash det. [off]"
|
||||
|
||||
#MSG_CRASH_DETECTED c=20 r=1
|
||||
|
|
@ -160,7 +151,7 @@
|
|||
#MSG_DATE c=17 r=1
|
||||
"Date:"
|
||||
|
||||
#MSG_DISABLE_STEPPERS c=0 r=0
|
||||
#MSG_DISABLE_STEPPERS
|
||||
"Disable steppers"
|
||||
|
||||
#MSG_BABYSTEP_Z_NOT_SET c=20 r=12
|
||||
|
|
@ -169,27 +160,12 @@
|
|||
#MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
|
||||
"Do you want to repeat last step to readjust distance between nozzle and heatbed?"
|
||||
|
||||
#MSG_EXTRUDER_CORRECTION c=9 r=0
|
||||
"E-correct"
|
||||
#MSG_EXTRUDER_CORRECTION c=10
|
||||
"E-correct:"
|
||||
|
||||
#MSG_EJECT_FILAMENT c=17 r=1
|
||||
"Eject filament"
|
||||
|
||||
#MSG_EJECT_FILAMENT1 c=17 r=1
|
||||
"Eject filament 1"
|
||||
|
||||
#MSG_EJECT_FILAMENT2 c=17 r=1
|
||||
"Eject filament 2"
|
||||
|
||||
#MSG_EJECT_FILAMENT3 c=17 r=1
|
||||
"Eject filament 3"
|
||||
|
||||
#MSG_EJECT_FILAMENT4 c=17 r=1
|
||||
"Eject filament 4"
|
||||
|
||||
#MSG_EJECT_FILAMENT5 c=17 r=1
|
||||
"Eject filament 5"
|
||||
|
||||
#
|
||||
"Eject"
|
||||
|
||||
|
|
@ -199,10 +175,10 @@
|
|||
#MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
|
||||
"Endstop not hit"
|
||||
|
||||
#MSG_SELFTEST_ENDSTOP c=0 r=0
|
||||
#MSG_SELFTEST_ENDSTOP
|
||||
"Endstop"
|
||||
|
||||
#MSG_SELFTEST_ENDSTOPS c=0 r=0
|
||||
#MSG_SELFTEST_ENDSTOPS
|
||||
"Endstops"
|
||||
|
||||
#MSG_STACK_ERROR c=20 r=4
|
||||
|
|
@ -211,31 +187,16 @@
|
|||
#MSG_FSENS_NOT_RESPONDING c=20 r=4
|
||||
"ERROR: Filament sensor is not responding, please check connection."
|
||||
|
||||
#MSG_ERROR c=0 r=0
|
||||
#MSG_ERROR
|
||||
"ERROR:"
|
||||
|
||||
#
|
||||
"External SPI flash W25X20CL not responding."
|
||||
|
||||
#
|
||||
"Extruder 1"
|
||||
|
||||
#
|
||||
"Extruder 2"
|
||||
|
||||
#
|
||||
"Extruder 3"
|
||||
|
||||
#
|
||||
"Extruder 4"
|
||||
|
||||
#MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18 r=0
|
||||
#MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
|
||||
"Extruder fan:"
|
||||
|
||||
#MSG_INFO_EXTRUDER c=15 r=1
|
||||
"Extruder info"
|
||||
|
||||
#MSG_MOVE_E c=0 r=0
|
||||
#MSG_MOVE_E
|
||||
"Extruder"
|
||||
|
||||
#
|
||||
|
|
@ -253,10 +214,10 @@
|
|||
#
|
||||
"Fail stats"
|
||||
|
||||
#MSG_FAN_SPEED c=14 r=0
|
||||
#MSG_FAN_SPEED c=14
|
||||
"Fan speed"
|
||||
|
||||
#MSG_SELFTEST_FAN c=20 r=0
|
||||
#MSG_SELFTEST_FAN c=20
|
||||
"Fan test"
|
||||
|
||||
#MSG_FANS_CHECK_ON c=17 r=1
|
||||
|
|
@ -265,16 +226,13 @@
|
|||
#MSG_FANS_CHECK_OFF c=17 r=1
|
||||
"Fans check [off]"
|
||||
|
||||
#MSG_FSENSOR_ON c=0 r=0
|
||||
#MSG_FSENSOR_ON
|
||||
"Fil. sensor [on]"
|
||||
|
||||
#MSG_RESPONSE_POOR c=20 r=2
|
||||
"Fil. sensor response is poor, disable it?"
|
||||
|
||||
#MSG_FSENSOR_NA c=0 r=0
|
||||
#MSG_FSENSOR_NA
|
||||
"Fil. sensor [N/A]"
|
||||
|
||||
#MSG_FSENSOR_OFF c=0 r=0
|
||||
#MSG_FSENSOR_OFF
|
||||
"Fil. sensor [off]"
|
||||
|
||||
#
|
||||
|
|
@ -283,15 +241,12 @@
|
|||
#MSG_FILAMENT_CLEAN c=20 r=2
|
||||
"Filament extruding & with correct color?"
|
||||
|
||||
#MSG_NOT_LOADED c=19 r=0
|
||||
#MSG_NOT_LOADED c=19
|
||||
"Filament not loaded"
|
||||
|
||||
#MSG_FILAMENT_SENSOR c=20 r=0
|
||||
#MSG_FILAMENT_SENSOR c=20
|
||||
"Filament sensor"
|
||||
|
||||
#MSG_SELFTEST_FILAMENT_SENSOR c=18 r=0
|
||||
"Filament sensor:"
|
||||
|
||||
#MSG_FILAMENT_USED c=19 r=1
|
||||
"Filament used"
|
||||
|
||||
|
|
@ -313,70 +268,67 @@
|
|||
#
|
||||
"Fix the issue and then press button on MMU unit."
|
||||
|
||||
#MSG_FLOW c=0 r=0
|
||||
#MSG_FLOW
|
||||
"Flow"
|
||||
|
||||
#MSG_PRUSA3D_FORUM c=0 r=0
|
||||
#MSG_PRUSA3D_FORUM
|
||||
"forum.prusa3d.com"
|
||||
|
||||
#MSG_SELFTEST_COOLING_FAN c=20 r=0
|
||||
#MSG_SELFTEST_COOLING_FAN c=20
|
||||
"Front print fan?"
|
||||
|
||||
#MSG_BED_CORRECTION_FRONT c=14 r=1
|
||||
"Front side[um]"
|
||||
|
||||
#MSG_SELFTEST_FANS c=0 r=0
|
||||
#MSG_SELFTEST_FANS
|
||||
"Front/left fans"
|
||||
|
||||
#MSG_SELFTEST_HEATERTHERMISTOR c=0 r=0
|
||||
#MSG_SELFTEST_HEATERTHERMISTOR
|
||||
"Heater/Thermistor"
|
||||
|
||||
#MSG_BED_HEATING_SAFETY_DISABLED c=0 r=0
|
||||
#MSG_BED_HEATING_SAFETY_DISABLED
|
||||
"Heating disabled by safety timer."
|
||||
|
||||
#MSG_HEATING_COMPLETE c=20 r=0
|
||||
#MSG_HEATING_COMPLETE c=20
|
||||
"Heating done."
|
||||
|
||||
#MSG_HEATING c=0 r=0
|
||||
#MSG_HEATING
|
||||
"Heating"
|
||||
|
||||
#MSG_WIZARD_WELCOME c=20 r=7
|
||||
"Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
|
||||
|
||||
#MSG_PRUSA3D_HOWTO c=0 r=0
|
||||
#MSG_PRUSA3D_HOWTO
|
||||
"howto.prusa3d.com"
|
||||
|
||||
#
|
||||
"Change extruder"
|
||||
|
||||
#MSG_FILAMENTCHANGE c=0 r=0
|
||||
#MSG_FILAMENTCHANGE
|
||||
"Change filament"
|
||||
|
||||
#MSG_CHANGE_SUCCESS c=0 r=0
|
||||
#MSG_CHANGE_SUCCESS
|
||||
"Change success!"
|
||||
|
||||
#MSG_CORRECTLY c=20 r=0
|
||||
#MSG_CORRECTLY c=20
|
||||
"Changed correctly?"
|
||||
|
||||
#MSG_SELFTEST_CHECK_BED c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_BED c=20
|
||||
"Checking bed "
|
||||
|
||||
#MSG_SELFTEST_CHECK_ENDSTOPS c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_ENDSTOPS c=20
|
||||
"Checking endstops"
|
||||
|
||||
#MSG_SELFTEST_CHECK_HOTEND c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_HOTEND c=20
|
||||
"Checking hotend "
|
||||
|
||||
#MSG_SELFTEST_CHECK_FSENSOR c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_FSENSOR c=20
|
||||
"Checking sensors "
|
||||
|
||||
#MSG_SELFTEST_CHECK_X c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_X c=20
|
||||
"Checking X axis "
|
||||
|
||||
#MSG_SELFTEST_CHECK_Y c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_Y c=20
|
||||
"Checking Y axis "
|
||||
|
||||
#MSG_SELFTEST_CHECK_Z c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_Z c=20
|
||||
"Checking Z axis "
|
||||
|
||||
#MSG_CHOOSE_EXTRUDER c=20 r=1
|
||||
|
|
@ -397,28 +349,13 @@
|
|||
#MSG_WIZARD_V2_CAL_2 c=20 r=12
|
||||
"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_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=60 r=0
|
||||
"Improving bed calibration point"
|
||||
|
||||
#MSG_WATCH c=0 r=0
|
||||
#MSG_WATCH
|
||||
"Info screen"
|
||||
|
||||
#MSG_FILAMENT_LOADING_T0 c=20 r=4
|
||||
"Insert filament into extruder 1. Click when done."
|
||||
|
||||
#MSG_FILAMENT_LOADING_T1 c=20 r=4
|
||||
"Insert filament into extruder 2. Click when done."
|
||||
|
||||
#MSG_FILAMENT_LOADING_T2 c=20 r=4
|
||||
"Insert filament into extruder 3. Click when done."
|
||||
|
||||
#MSG_FILAMENT_LOADING_T3 c=20 r=4
|
||||
"Insert filament into extruder 4. Click when done."
|
||||
|
||||
#
|
||||
"Is filament 1 loaded?"
|
||||
|
||||
#MSG_INSERT_FILAMENT c=20 r=0
|
||||
#MSG_INSERT_FILAMENT c=20
|
||||
"Insert filament"
|
||||
|
||||
#MSG_WIZARD_FILAMENT_LOADED c=20 r=2
|
||||
|
|
@ -433,16 +370,13 @@
|
|||
#MSG_STEEL_SHEET_CHECK c=20 r=2
|
||||
"Is steel sheet on heatbed?"
|
||||
|
||||
#MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION c=20 r=0
|
||||
"Iteration "
|
||||
|
||||
#
|
||||
"Last print failures"
|
||||
|
||||
#
|
||||
"Last print"
|
||||
|
||||
#MSG_SELFTEST_EXTRUDER_FAN c=20 r=0
|
||||
#MSG_SELFTEST_EXTRUDER_FAN c=20
|
||||
"Left hotend fan?"
|
||||
|
||||
#
|
||||
|
|
@ -454,16 +388,16 @@
|
|||
#
|
||||
"Lin. correction"
|
||||
|
||||
#MSG_BABYSTEP_Z c=0 r=0
|
||||
#MSG_BABYSTEP_Z
|
||||
"Live adjust Z"
|
||||
|
||||
#MSG_LOAD_FILAMENT c=17 r=0
|
||||
#MSG_LOAD_FILAMENT c=17
|
||||
"Load filament"
|
||||
|
||||
#MSG_LOADING_COLOR c=0 r=0
|
||||
#MSG_LOADING_COLOR
|
||||
"Loading color"
|
||||
|
||||
#MSG_LOADING_FILAMENT c=20 r=0
|
||||
#MSG_LOADING_FILAMENT c=20
|
||||
"Loading filament"
|
||||
|
||||
#MSG_LOOSE_PULLEY c=20 r=1
|
||||
|
|
@ -475,13 +409,13 @@
|
|||
#MSG_M117_V2_CALIBRATION c=25 r=1
|
||||
"M117 First layer cal."
|
||||
|
||||
#MSG_MAIN c=0 r=0
|
||||
#MSG_MAIN
|
||||
"Main"
|
||||
|
||||
#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60 r=0
|
||||
#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
|
||||
"Measuring reference height of calibration point"
|
||||
|
||||
#MSG_MESH_BED_LEVELING c=0 r=0
|
||||
#MSG_MESH_BED_LEVELING
|
||||
"Mesh Bed Leveling"
|
||||
|
||||
#MSG_MMU_OK_RESUMING_POSITION c=20 r=4
|
||||
|
|
@ -505,10 +439,10 @@
|
|||
#MSG_MMU_OK_RESUMING c=20 r=4
|
||||
"MMU OK. Resuming..."
|
||||
|
||||
#MSG_STEALTH_MODE_OFF c=0 r=0
|
||||
#MSG_STEALTH_MODE_OFF
|
||||
"Mode [Normal]"
|
||||
|
||||
#MSG_SILENT_MODE_ON c=0 r=0
|
||||
#MSG_SILENT_MODE_ON
|
||||
"Mode [silent]"
|
||||
|
||||
#
|
||||
|
|
@ -517,55 +451,52 @@
|
|||
#
|
||||
"MMU power fails"
|
||||
|
||||
#MSG_STEALTH_MODE_ON c=0 r=0
|
||||
#MSG_STEALTH_MODE_ON
|
||||
"Mode [Stealth]"
|
||||
|
||||
#MSG_AUTO_MODE_ON c=0 r=0
|
||||
#MSG_AUTO_MODE_ON
|
||||
"Mode [auto power]"
|
||||
|
||||
#MSG_SILENT_MODE_OFF c=0 r=0
|
||||
#MSG_SILENT_MODE_OFF
|
||||
"Mode [high power]"
|
||||
|
||||
#
|
||||
"MMU2 connected"
|
||||
|
||||
#MSG_SELFTEST_MOTOR c=0 r=0
|
||||
#MSG_SELFTEST_MOTOR
|
||||
"Motor"
|
||||
|
||||
#MSG_MOVE_AXIS c=0 r=0
|
||||
#MSG_MOVE_AXIS
|
||||
"Move axis"
|
||||
|
||||
#MSG_MOVE_X c=0 r=0
|
||||
#MSG_MOVE_X
|
||||
"Move X"
|
||||
|
||||
#MSG_MOVE_Y c=0 r=0
|
||||
#MSG_MOVE_Y
|
||||
"Move Y"
|
||||
|
||||
#MSG_MOVE_Z c=0 r=0
|
||||
#MSG_MOVE_Z
|
||||
"Move Z"
|
||||
|
||||
#MSG_NO_MOVE c=0 r=0
|
||||
#MSG_NO_MOVE
|
||||
"No move."
|
||||
|
||||
#MSG_NO_CARD c=0 r=0
|
||||
#MSG_NO_CARD
|
||||
"No SD card"
|
||||
|
||||
#
|
||||
"N/A"
|
||||
|
||||
#MSG_NO c=0 r=0
|
||||
#MSG_NO
|
||||
"No"
|
||||
|
||||
#MSG_SELFTEST_NOTCONNECTED c=0 r=0
|
||||
#MSG_SELFTEST_NOTCONNECTED
|
||||
"Not connected"
|
||||
|
||||
#
|
||||
"New firmware version available:"
|
||||
|
||||
#
|
||||
"No "
|
||||
|
||||
#MSG_SELFTEST_FAN_NO c=19 r=0
|
||||
#MSG_SELFTEST_FAN_NO c=19
|
||||
"Not spinning"
|
||||
|
||||
#MSG_WIZARD_V2_CAL c=20 r=8
|
||||
|
|
@ -574,7 +505,7 @@
|
|||
#MSG_WIZARD_WILL_PREHEAT c=20 r=4
|
||||
"Now I will preheat nozzle for PLA."
|
||||
|
||||
#MSG_NOZZLE c=0 r=0
|
||||
#MSG_NOZZLE
|
||||
"Nozzle"
|
||||
|
||||
#MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
|
||||
|
|
@ -586,7 +517,7 @@
|
|||
#
|
||||
"Nozzle FAN"
|
||||
|
||||
#MSG_PAUSE_PRINT c=0 r=0
|
||||
#MSG_PAUSE_PRINT
|
||||
"Pause print"
|
||||
|
||||
#MSG_PID_RUNNING c=20 r=1
|
||||
|
|
@ -610,7 +541,7 @@
|
|||
#MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
|
||||
"Please clean the nozzle for calibration. Click when done."
|
||||
|
||||
#MSG_SELFTEST_PLEASECHECK c=0 r=0
|
||||
#MSG_SELFTEST_PLEASECHECK
|
||||
"Please check :"
|
||||
|
||||
#MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
|
||||
|
|
@ -649,16 +580,16 @@
|
|||
#MSG_UPDATE_MMU2_FW c=20 r=4
|
||||
"Please update firmware in your MMU2. Waiting for reset."
|
||||
|
||||
#MSG_PLEASE_WAIT c=20 r=0
|
||||
#MSG_PLEASE_WAIT c=20
|
||||
"Please wait"
|
||||
|
||||
#
|
||||
"Please remove shipping helpers first."
|
||||
|
||||
#MSG_PREHEAT_NOZZLE c=20 r=0
|
||||
#MSG_PREHEAT_NOZZLE c=20
|
||||
"Preheat the nozzle!"
|
||||
|
||||
#MSG_PREHEAT c=0 r=0
|
||||
#MSG_PREHEAT
|
||||
"Preheat"
|
||||
|
||||
#MSG_WIZARD_HEATING c=20 r=3
|
||||
|
|
@ -673,7 +604,7 @@
|
|||
#
|
||||
"Power failures"
|
||||
|
||||
#MSG_PRINT_ABORTED c=20 r=0
|
||||
#MSG_PRINT_ABORTED c=20
|
||||
"Print aborted"
|
||||
|
||||
#
|
||||
|
|
@ -682,10 +613,10 @@
|
|||
#
|
||||
"Preheating to unload"
|
||||
|
||||
#MSG_SELFTEST_PRINT_FAN_SPEED c=18 r=0
|
||||
#MSG_SELFTEST_PRINT_FAN_SPEED c=18
|
||||
"Print fan:"
|
||||
|
||||
#MSG_CARD_MENU c=0 r=0
|
||||
#MSG_CARD_MENU
|
||||
"Print from SD"
|
||||
|
||||
#
|
||||
|
|
@ -703,13 +634,7 @@
|
|||
#
|
||||
"Print FAN"
|
||||
|
||||
#WELCOME_MSG c=20 r=0
|
||||
"Prusa i3 MK2.5 ready."
|
||||
|
||||
#WELCOME_MSG c=20 r=0
|
||||
"Prusa i3 MK3 ready."
|
||||
|
||||
#MSG_PRUSA3D c=0 r=0
|
||||
#MSG_PRUSA3D
|
||||
"prusa3d.com"
|
||||
|
||||
#MSG_BED_CORRECTION_REAR c=14 r=1
|
||||
|
|
@ -724,16 +649,13 @@
|
|||
#
|
||||
"Prusa i3 MK3S OK."
|
||||
|
||||
#
|
||||
"Prusa i3 MK2 ready."
|
||||
|
||||
#MSG_CALIBRATE_BED_RESET c=0 r=0
|
||||
#MSG_CALIBRATE_BED_RESET
|
||||
"Reset XYZ calibr."
|
||||
|
||||
#MSG_BED_CORRECTION_RESET c=0 r=0
|
||||
#MSG_BED_CORRECTION_RESET
|
||||
"Reset"
|
||||
|
||||
#MSG_RESUME_PRINT c=0 r=0
|
||||
#MSG_RESUME_PRINT
|
||||
"Resume print"
|
||||
|
||||
#MSG_RESUMING_PRINT c=20 r=1
|
||||
|
|
@ -760,25 +682,25 @@
|
|||
#
|
||||
"Right"
|
||||
|
||||
#MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60 r=0
|
||||
#MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
|
||||
"Searching bed calibration point"
|
||||
|
||||
#MSG_LANGUAGE_SELECT c=0 r=0
|
||||
#MSG_LANGUAGE_SELECT
|
||||
"Select language"
|
||||
|
||||
#MSG_SELFTEST_OK c=0 r=0
|
||||
#MSG_SELFTEST_OK
|
||||
"Self test OK"
|
||||
|
||||
#MSG_SELFTEST_START c=20 r=0
|
||||
#MSG_SELFTEST_START c=20
|
||||
"Self test start "
|
||||
|
||||
#MSG_SELFTEST c=0 r=0
|
||||
#MSG_SELFTEST
|
||||
"Selftest "
|
||||
|
||||
#MSG_SELFTEST_ERROR c=0 r=0
|
||||
#MSG_SELFTEST_ERROR
|
||||
"Selftest error !"
|
||||
|
||||
#MSG_SELFTEST_FAILED c=20 r=0
|
||||
#MSG_SELFTEST_FAILED c=20
|
||||
"Selftest failed "
|
||||
|
||||
#MSG_FORCE_SELFTEST c=20 r=8
|
||||
|
|
@ -793,7 +715,7 @@
|
|||
#MSG_SET_TEMPERATURE c=19 r=1
|
||||
"Set temperature:"
|
||||
|
||||
#MSG_SETTINGS c=0 r=0
|
||||
#MSG_SETTINGS
|
||||
"Settings"
|
||||
|
||||
#MSG_SHOW_END_STOPS c=17 r=1
|
||||
|
|
@ -802,26 +724,20 @@
|
|||
#
|
||||
"Sensor state"
|
||||
|
||||
#
|
||||
"Sensors info"
|
||||
|
||||
#
|
||||
"Show pinda state"
|
||||
|
||||
#MSG_FILE_CNT c=20 r=4
|
||||
"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]"
|
||||
"Sort [none]"
|
||||
|
||||
#MSG_SORT_TIME c=17 r=1
|
||||
"Sort: [time]"
|
||||
"Sort [time]"
|
||||
|
||||
#
|
||||
"Severe skew"
|
||||
|
||||
#MSG_SORT_ALPHA c=17 r=1
|
||||
"Sort: [alphabet]"
|
||||
"Sort [alphabet]"
|
||||
|
||||
#MSG_SORTING c=20 r=1
|
||||
"Sorting files"
|
||||
|
|
@ -844,28 +760,28 @@
|
|||
#MSG_SOUND_SILENT c=17 r=1
|
||||
"Sound [silent]"
|
||||
|
||||
#MSG_SPEED c=0 r=0
|
||||
#MSG_SPEED
|
||||
"Speed"
|
||||
|
||||
#MSG_SELFTEST_FAN_YES c=19 r=0
|
||||
#MSG_SELFTEST_FAN_YES c=19
|
||||
"Spinning"
|
||||
|
||||
#MSG_TEMP_CAL_WARNING c=20 r=4
|
||||
"Stable ambient temperature 21-26C is needed a rigid stand is required."
|
||||
|
||||
#MSG_STATISTICS c=0 r=0
|
||||
#MSG_STATISTICS
|
||||
"Statistics "
|
||||
|
||||
#MSG_STOP_PRINT c=0 r=0
|
||||
#MSG_STOP_PRINT
|
||||
"Stop print"
|
||||
|
||||
#MSG_STOPPED c=0 r=0
|
||||
#MSG_STOPPED
|
||||
"STOPPED. "
|
||||
|
||||
#MSG_SUPPORT c=0 r=0
|
||||
#MSG_SUPPORT
|
||||
"Support"
|
||||
|
||||
#MSG_SELFTEST_SWAPPED c=0 r=0
|
||||
#MSG_SELFTEST_SWAPPED
|
||||
"Swapped"
|
||||
|
||||
#MSG_TEMP_CALIBRATION c=20 r=1
|
||||
|
|
@ -886,7 +802,7 @@
|
|||
#MSG_TEMP_CALIBRATION_DONE c=20 r=12
|
||||
"Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
|
||||
|
||||
#MSG_TEMPERATURE c=0 r=0
|
||||
#MSG_TEMPERATURE
|
||||
"Temperature"
|
||||
|
||||
#MSG_MENU_TEMPERATURES c=15 r=1
|
||||
|
|
@ -901,15 +817,12 @@
|
|||
#
|
||||
"Total print time"
|
||||
|
||||
#MSG_TUNE c=0 r=0
|
||||
#MSG_TUNE
|
||||
"Tune"
|
||||
|
||||
#
|
||||
"Unload"
|
||||
|
||||
#
|
||||
"Unload all"
|
||||
|
||||
#
|
||||
"Total failures"
|
||||
|
||||
|
|
@ -919,7 +832,7 @@
|
|||
#
|
||||
"to unload filament"
|
||||
|
||||
#MSG_UNLOAD_FILAMENT c=17 r=0
|
||||
#MSG_UNLOAD_FILAMENT c=17
|
||||
"Unload filament"
|
||||
|
||||
#MSG_UNLOADING_FILAMENT c=20 r=1
|
||||
|
|
@ -937,7 +850,7 @@
|
|||
#
|
||||
"unknown"
|
||||
|
||||
#MSG_USERWAIT c=0 r=0
|
||||
#MSG_USERWAIT
|
||||
"Wait for user..."
|
||||
|
||||
#MSG_WAITING_TEMP c=20 r=3
|
||||
|
|
@ -961,7 +874,7 @@
|
|||
#MSG_UNLOAD_SUCCESSFUL c=20 r=2
|
||||
"Was filament unload successful?"
|
||||
|
||||
#MSG_SELFTEST_WIRINGERROR c=0 r=0
|
||||
#MSG_SELFTEST_WIRINGERROR
|
||||
"Wiring error"
|
||||
|
||||
#MSG_WIZARD c=17 r=1
|
||||
|
|
@ -973,7 +886,7 @@
|
|||
#MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
|
||||
"XYZ calibration failed. Please consult the manual."
|
||||
|
||||
#MSG_YES c=0 r=0
|
||||
#MSG_YES
|
||||
"Yes"
|
||||
|
||||
#MSG_WIZARD_QUIT c=20 r=8
|
||||
|
|
@ -986,7 +899,7 @@
|
|||
"XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
|
||||
|
||||
#
|
||||
"X-correct"
|
||||
"X-correct:"
|
||||
|
||||
#MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
|
||||
"XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
|
||||
|
|
@ -997,44 +910,23 @@
|
|||
#MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
|
||||
"XYZ calibration compromised. Right front calibration point not reachable."
|
||||
|
||||
#MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8
|
||||
"XYZ calibration compromised. Left front calibration point not reachable."
|
||||
|
||||
#MSG_LOAD_ALL c=17 r=0
|
||||
#MSG_LOAD_ALL c=17
|
||||
"Load all"
|
||||
|
||||
#MSG_LOAD_FILAMENT_1 c=17 r=0
|
||||
"Load filament 1"
|
||||
|
||||
#
|
||||
"XYZ calibration failed. Bed calibration point was not found."
|
||||
|
||||
#
|
||||
"XYZ calibration failed. Front calibration points not reachable."
|
||||
|
||||
#
|
||||
"XYZ calibration failed. Left front calibration point not reachable."
|
||||
|
||||
#MSG_LOAD_FILAMENT_2 c=17 r=0
|
||||
"Load filament 2"
|
||||
|
||||
#
|
||||
"XYZ calibration failed. Right front calibration point not reachable."
|
||||
|
||||
#MSG_LOAD_FILAMENT_3 c=17 r=0
|
||||
"Load filament 3"
|
||||
|
||||
#
|
||||
"Y distance from min"
|
||||
|
||||
#
|
||||
"Y-correct"
|
||||
"Y-correct:"
|
||||
|
||||
#MSG_LOAD_FILAMENT_4 c=17 r=0
|
||||
"Load filament 4"
|
||||
|
||||
#MSG_LOAD_FILAMENT_5 c=17 r=0
|
||||
"Load filament 5"
|
||||
|
||||
#MSG_OFF c=0 r=0
|
||||
#MSG_OFF
|
||||
" [off]"
|
||||
|
|
|
|||
|
|
@ -1,32 +1,32 @@
|
|||
#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14 r=0
|
||||
#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
|
||||
" of 4"
|
||||
" z 4"
|
||||
|
||||
#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14 r=0
|
||||
#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
|
||||
" of 9"
|
||||
" z 9"
|
||||
|
||||
#MSG_MEASURED_OFFSET c=0 r=0
|
||||
#MSG_MEASURED_OFFSET
|
||||
"[0;0] point offset"
|
||||
"[0;0] odsazeni bodu"
|
||||
|
||||
#MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
|
||||
"\x1b[2JCrash detection can\x1b[1;0Hbe turned on only in\x1b[2;0HNormal mode"
|
||||
"\x1b[2JCrash detekce muze\x1b[1;0Hbyt zapnuta pouze v\x1b[2;0HNormal modu"
|
||||
"Crash detection can\rbe turned on only in\rNormal mode"
|
||||
"Crash detekce muze\rbyt zapnuta pouze v\rNormal modu"
|
||||
|
||||
#MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
|
||||
"\x1b[2JWARNING:\x1b[1;0HCrash detection\x1b[2;0Hdisabled in\x1b[3;0HStealth mode"
|
||||
"\x1b[2JPOZOR:\x1b[1;0HCrash detekce\x1b[2;0Hdeaktivovana ve\x1b[3;0HStealth modu"
|
||||
"WARNING:\rCrash detection\rdisabled in\rStealth mode"
|
||||
"POZOR:\rCrash detekce\rdeaktivovana ve\rStealth modu"
|
||||
|
||||
#
|
||||
">Cancel"
|
||||
">Zrusit"
|
||||
|
||||
#MSG_BABYSTEPPING_Z c=20 r=0
|
||||
"Adjusting Z"
|
||||
"Dostavovani Z"
|
||||
#MSG_BABYSTEPPING_Z c=15
|
||||
"Adjusting Z:"
|
||||
"Dostavovani Z:"
|
||||
|
||||
#MSG_SELFTEST_CHECK_ALLCORRECT c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_ALLCORRECT c=20
|
||||
"All correct "
|
||||
"Vse OK "
|
||||
|
||||
|
|
@ -38,7 +38,7 @@
|
|||
"Ambient"
|
||||
"Okoli"
|
||||
|
||||
#MSG_PRESS c=20 r=0
|
||||
#MSG_PRESS c=20
|
||||
"and press the knob"
|
||||
"a stisknete tlacitko"
|
||||
|
||||
|
|
@ -54,15 +54,15 @@
|
|||
"SpoolJoin [N/A]"
|
||||
"\x00"
|
||||
|
||||
# MSG_AUTO_DEPLETE_OFF c=17 r=1
|
||||
#MSG_AUTO_DEPLETE_OFF c=17 r=1
|
||||
"SpoolJoin [off]"
|
||||
"SpoolJoin [vyp]"
|
||||
|
||||
#MSG_AUTO_HOME c=0 r=0
|
||||
#MSG_AUTO_HOME
|
||||
"Auto home"
|
||||
"\x00"
|
||||
|
||||
#MSG_AUTOLOAD_FILAMENT c=17 r=0
|
||||
#MSG_AUTOLOAD_FILAMENT c=17
|
||||
"AutoLoad filament"
|
||||
"AutoZavedeni fil."
|
||||
|
||||
|
|
@ -74,27 +74,27 @@
|
|||
"Autoloading filament is active, just press the knob and insert filament..."
|
||||
"Automaticke zavadeni filamentu aktivni, stisknete tlacitko a vlozte filament..."
|
||||
|
||||
#MSG_SELFTEST_AXIS_LENGTH c=0 r=0
|
||||
#MSG_SELFTEST_AXIS_LENGTH
|
||||
"Axis length"
|
||||
"Delka osy"
|
||||
|
||||
#MSG_SELFTEST_AXIS c=0 r=0
|
||||
#MSG_SELFTEST_AXIS
|
||||
"Axis"
|
||||
"Osa"
|
||||
|
||||
#MSG_SELFTEST_BEDHEATER c=0 r=0
|
||||
#MSG_SELFTEST_BEDHEATER
|
||||
"Bed / Heater"
|
||||
"Podlozka / Topeni"
|
||||
|
||||
#MSG_BED_DONE c=0 r=0
|
||||
#MSG_BED_DONE
|
||||
"Bed done"
|
||||
"Bed OK."
|
||||
|
||||
#MSG_BED_HEATING c=0 r=0
|
||||
#MSG_BED_HEATING
|
||||
"Bed Heating"
|
||||
"Zahrivani bed"
|
||||
|
||||
#MSG_BED_CORRECTION_MENU c=0 r=0
|
||||
#MSG_BED_CORRECTION_MENU
|
||||
"Bed level correct"
|
||||
"Korekce podlozky"
|
||||
|
||||
|
|
@ -102,15 +102,7 @@
|
|||
"Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
|
||||
"Kalibrace Z selhala. Sensor nesepnul. Znecistena tryska? Cekam na reset."
|
||||
|
||||
#MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED c=20 r=4
|
||||
"Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset."
|
||||
"Kalibrace Z selhala. Sensor je odpojeny nebo preruseny kabel. Cekam na reset."
|
||||
|
||||
#MSG_BED_LEVELING_FAILED_POINT_HIGH c=20 r=4
|
||||
"Bed leveling failed. Sensor triggered too high. Waiting for reset."
|
||||
"Kalibrace Z selhala. Sensor sepnul prilis vysoko. Cekam na reset."
|
||||
|
||||
#MSG_BED c=0 r=0
|
||||
#MSG_BED
|
||||
"Bed"
|
||||
"Podlozka"
|
||||
|
||||
|
|
@ -126,11 +118,11 @@
|
|||
"Calibrating home"
|
||||
"Kalibruji vychozi poz."
|
||||
|
||||
#MSG_CALIBRATE_BED c=0 r=0
|
||||
#MSG_CALIBRATE_BED
|
||||
"Calibrate XYZ"
|
||||
"Kalibrace XYZ"
|
||||
|
||||
#MSG_HOMEYZ c=0 r=0
|
||||
#MSG_HOMEYZ
|
||||
"Calibrate Z"
|
||||
"Kalibrovat Z"
|
||||
|
||||
|
|
@ -150,11 +142,11 @@
|
|||
"Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
|
||||
"Kalibrace Z. Otacenim tlacitka posunte Z osu az k~hornimu dorazu. Potvrdte tlacitkem."
|
||||
|
||||
#MSG_HOMEYZ_DONE c=0 r=0
|
||||
#MSG_HOMEYZ_DONE
|
||||
"Calibration done"
|
||||
"Kalibrace OK"
|
||||
|
||||
#MSG_MENU_CALIBRATION c=0 r=0
|
||||
#MSG_MENU_CALIBRATION
|
||||
"Calibration"
|
||||
"Kalibrace"
|
||||
|
||||
|
|
@ -162,19 +154,15 @@
|
|||
"Cancel"
|
||||
"Zrusit"
|
||||
|
||||
#MSG_SD_INSERTED c=0 r=0
|
||||
"Card inserted"
|
||||
"Karta vlozena"
|
||||
|
||||
#MSG_SD_REMOVED c=0 r=0
|
||||
#MSG_SD_REMOVED
|
||||
"Card removed"
|
||||
"Karta vyjmuta"
|
||||
|
||||
#MSG_NOT_COLOR c=0 r=0
|
||||
#MSG_NOT_COLOR
|
||||
"Color not correct"
|
||||
"Barva neni cista"
|
||||
|
||||
#MSG_COOLDOWN c=0 r=0
|
||||
#MSG_COOLDOWN
|
||||
"Cooldown"
|
||||
"Zchladit"
|
||||
|
||||
|
|
@ -182,15 +170,15 @@
|
|||
"Copy selected language?"
|
||||
"Kopirovat vybrany jazyk?"
|
||||
|
||||
#MSG_CRASHDETECT_ON c=0 r=0
|
||||
#MSG_CRASHDETECT_ON
|
||||
"Crash det. [on]"
|
||||
"Crash det. [zap]"
|
||||
|
||||
#MSG_CRASHDETECT_NA c=0 r=0
|
||||
#MSG_CRASHDETECT_NA
|
||||
"Crash det. [N/A]"
|
||||
"\x00"
|
||||
|
||||
#MSG_CRASHDETECT_OFF c=0 r=0
|
||||
#MSG_CRASHDETECT_OFF
|
||||
"Crash det. [off]"
|
||||
"Crash det. [vyp]"
|
||||
|
||||
|
|
@ -214,7 +202,7 @@
|
|||
"Date:"
|
||||
"Datum:"
|
||||
|
||||
#MSG_DISABLE_STEPPERS c=0 r=0
|
||||
#MSG_DISABLE_STEPPERS
|
||||
"Disable steppers"
|
||||
"Vypnout motory"
|
||||
|
||||
|
|
@ -226,34 +214,14 @@
|
|||
"Do you want to repeat last step to readjust distance between nozzle and heatbed?"
|
||||
"Chcete opakovat posledni krok a pozmenit vzdalenost mezi tryskou a podlozkou?"
|
||||
|
||||
#MSG_EXTRUDER_CORRECTION c=9 r=0
|
||||
"E-correct"
|
||||
"Korekce E"
|
||||
#MSG_EXTRUDER_CORRECTION c=10
|
||||
"E-correct:"
|
||||
"Korekce E:"
|
||||
|
||||
#MSG_EJECT_FILAMENT c=17 r=1
|
||||
"Eject filament"
|
||||
"Vysunout filament"
|
||||
|
||||
#MSG_EJECT_FILAMENT1 c=17 r=1
|
||||
"Eject filament 1"
|
||||
"Vysunout filament 1"
|
||||
|
||||
#MSG_EJECT_FILAMENT2 c=17 r=1
|
||||
"Eject filament 2"
|
||||
"Vysunout filament 2"
|
||||
|
||||
#MSG_EJECT_FILAMENT3 c=17 r=1
|
||||
"Eject filament 3"
|
||||
"Vysunout filament 3"
|
||||
|
||||
#MSG_EJECT_FILAMENT4 c=17 r=1
|
||||
"Eject filament 4"
|
||||
"Vysunout filament 4"
|
||||
|
||||
#MSG_EJECT_FILAMENT5 c=17 r=1
|
||||
"Eject filament 5"
|
||||
"Vysunout filament 5"
|
||||
|
||||
#
|
||||
"Eject"
|
||||
"Vysunout"
|
||||
|
|
@ -266,11 +234,11 @@
|
|||
"Endstop not hit"
|
||||
"Kon. spinac nesepnut"
|
||||
|
||||
#MSG_SELFTEST_ENDSTOP c=0 r=0
|
||||
#MSG_SELFTEST_ENDSTOP
|
||||
"Endstop"
|
||||
"Koncovy spinac"
|
||||
|
||||
#MSG_SELFTEST_ENDSTOPS c=0 r=0
|
||||
#MSG_SELFTEST_ENDSTOPS
|
||||
"Endstops"
|
||||
"Konc. spinace"
|
||||
|
||||
|
|
@ -282,31 +250,11 @@
|
|||
"ERROR: Filament sensor is not responding, please check connection."
|
||||
"CHYBA: Filament senzor nereaguje, zkontrolujte zapojeni."
|
||||
|
||||
#MSG_ERROR c=0 r=0
|
||||
#MSG_ERROR
|
||||
"ERROR:"
|
||||
"CHYBA:"
|
||||
|
||||
#
|
||||
"External SPI flash W25X20CL not responding."
|
||||
"Externi SPI flash W25X20CL neodpovida."
|
||||
|
||||
#
|
||||
"Extruder 1"
|
||||
"\x00"
|
||||
|
||||
#
|
||||
"Extruder 2"
|
||||
"\x00"
|
||||
|
||||
#
|
||||
"Extruder 3"
|
||||
"\x00"
|
||||
|
||||
#
|
||||
"Extruder 4"
|
||||
"\x00"
|
||||
|
||||
#MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18 r=0
|
||||
#MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
|
||||
"Extruder fan:"
|
||||
"Levy vent.:"
|
||||
|
||||
|
|
@ -314,7 +262,7 @@
|
|||
"Extruder info"
|
||||
"\x00"
|
||||
|
||||
#MSG_MOVE_E c=0 r=0
|
||||
#MSG_MOVE_E
|
||||
"Extruder"
|
||||
"\x00"
|
||||
|
||||
|
|
@ -338,11 +286,11 @@
|
|||
"Fail stats"
|
||||
"Selhani"
|
||||
|
||||
#MSG_FAN_SPEED c=14 r=0
|
||||
#MSG_FAN_SPEED c=14
|
||||
"Fan speed"
|
||||
"Rychlost vent."
|
||||
|
||||
#MSG_SELFTEST_FAN c=20 r=0
|
||||
#MSG_SELFTEST_FAN c=20
|
||||
"Fan test"
|
||||
"Test ventilatoru"
|
||||
|
||||
|
|
@ -354,19 +302,15 @@
|
|||
"Fans check [off]"
|
||||
"Kontr. vent.[vyp]"
|
||||
|
||||
#MSG_FSENSOR_ON c=0 r=0
|
||||
#MSG_FSENSOR_ON
|
||||
"Fil. sensor [on]"
|
||||
"Fil. senzor [zap]"
|
||||
|
||||
#MSG_RESPONSE_POOR c=20 r=2
|
||||
"Fil. sensor response is poor, disable it?"
|
||||
"Senzor nerozpoznal filament, vypnout?"
|
||||
|
||||
#MSG_FSENSOR_NA c=0 r=0
|
||||
#MSG_FSENSOR_NA
|
||||
"Fil. sensor [N/A]"
|
||||
"Fil. senzor [N/A]"
|
||||
|
||||
#MSG_FSENSOR_OFF c=0 r=0
|
||||
#MSG_FSENSOR_OFF
|
||||
"Fil. sensor [off]"
|
||||
"Fil. senzor [vyp]"
|
||||
|
||||
|
|
@ -378,18 +322,14 @@
|
|||
"Filament extruding & with correct color?"
|
||||
"Filament vytlacen a spravne barvy?"
|
||||
|
||||
#MSG_NOT_LOADED c=19 r=0
|
||||
#MSG_NOT_LOADED c=19
|
||||
"Filament not loaded"
|
||||
"Filament nezaveden"
|
||||
|
||||
#MSG_FILAMENT_SENSOR c=20 r=0
|
||||
#MSG_FILAMENT_SENSOR c=20
|
||||
"Filament sensor"
|
||||
"Senzor filamentu"
|
||||
|
||||
#MSG_SELFTEST_FILAMENT_SENSOR c=18 r=0
|
||||
"Filament sensor:"
|
||||
"Senzor filamentu:"
|
||||
|
||||
#MSG_FILAMENT_USED c=19 r=1
|
||||
"Filament used"
|
||||
"Spotrebovano filamentu"
|
||||
|
|
@ -418,15 +358,15 @@
|
|||
"Fix the issue and then press button on MMU unit."
|
||||
"Opravte chybu a pote stisknete tlacitko na jednotce MMU."
|
||||
|
||||
#MSG_FLOW c=0 r=0
|
||||
#MSG_FLOW
|
||||
"Flow"
|
||||
"Prutok"
|
||||
|
||||
#MSG_PRUSA3D_FORUM c=0 r=0
|
||||
#MSG_PRUSA3D_FORUM
|
||||
"forum.prusa3d.com"
|
||||
"\x00"
|
||||
|
||||
#MSG_SELFTEST_COOLING_FAN c=20 r=0
|
||||
#MSG_SELFTEST_COOLING_FAN c=20
|
||||
"Front print fan?"
|
||||
"Predni tiskovy vent?"
|
||||
|
||||
|
|
@ -434,23 +374,23 @@
|
|||
"Front side[um]"
|
||||
"Vpredu [um]"
|
||||
|
||||
#MSG_SELFTEST_FANS c=0 r=0
|
||||
#MSG_SELFTEST_FANS
|
||||
"Front/left fans"
|
||||
"Predni/levy vent."
|
||||
|
||||
#MSG_SELFTEST_HEATERTHERMISTOR c=0 r=0
|
||||
#MSG_SELFTEST_HEATERTHERMISTOR
|
||||
"Heater/Thermistor"
|
||||
"Topeni/Termistor"
|
||||
|
||||
#MSG_BED_HEATING_SAFETY_DISABLED c=0 r=0
|
||||
#MSG_BED_HEATING_SAFETY_DISABLED
|
||||
"Heating disabled by safety timer."
|
||||
"Zahrivani preruseno bezpecnostnim casovacem."
|
||||
|
||||
#MSG_HEATING_COMPLETE c=20 r=0
|
||||
#MSG_HEATING_COMPLETE c=20
|
||||
"Heating done."
|
||||
"Zahrivani OK."
|
||||
|
||||
#MSG_HEATING c=0 r=0
|
||||
#MSG_HEATING
|
||||
"Heating"
|
||||
"Zahrivani"
|
||||
|
||||
|
|
@ -458,51 +398,47 @@
|
|||
"Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
|
||||
"Dobry den, jsem vase tiskarna Original Prusa i3. Chcete abych Vas provedla kalibracnim procesem?"
|
||||
|
||||
#MSG_PRUSA3D_HOWTO c=0 r=0
|
||||
#MSG_PRUSA3D_HOWTO
|
||||
"howto.prusa3d.com"
|
||||
"\x00"
|
||||
|
||||
#
|
||||
"Change extruder"
|
||||
"Zmenit extruder"
|
||||
|
||||
#MSG_FILAMENTCHANGE c=0 r=0
|
||||
#MSG_FILAMENTCHANGE
|
||||
"Change filament"
|
||||
"Vymenit filament"
|
||||
|
||||
#MSG_CHANGE_SUCCESS c=0 r=0
|
||||
#MSG_CHANGE_SUCCESS
|
||||
"Change success!"
|
||||
"Zmena uspesna!"
|
||||
|
||||
#MSG_CORRECTLY c=20 r=0
|
||||
#MSG_CORRECTLY c=20
|
||||
"Changed correctly?"
|
||||
"Vymena ok?"
|
||||
|
||||
#MSG_SELFTEST_CHECK_BED c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_BED c=20
|
||||
"Checking bed "
|
||||
"Kontrola podlozky"
|
||||
|
||||
#MSG_SELFTEST_CHECK_ENDSTOPS c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_ENDSTOPS c=20
|
||||
"Checking endstops"
|
||||
"Kontrola endstopu"
|
||||
|
||||
#MSG_SELFTEST_CHECK_HOTEND c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_HOTEND c=20
|
||||
"Checking hotend "
|
||||
"Kontrola hotend "
|
||||
|
||||
#MSG_SELFTEST_CHECK_FSENSOR c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_FSENSOR c=20
|
||||
"Checking sensors "
|
||||
"Kontrola senzoru"
|
||||
|
||||
#MSG_SELFTEST_CHECK_X c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_X c=20
|
||||
"Checking X axis "
|
||||
"Kontrola osy X"
|
||||
|
||||
#MSG_SELFTEST_CHECK_Y c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_Y c=20
|
||||
"Checking Y axis "
|
||||
"Kontrola osy Y"
|
||||
|
||||
#MSG_SELFTEST_CHECK_Z c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_Z c=20
|
||||
"Checking Z axis "
|
||||
"Kontrola osy Z"
|
||||
|
||||
|
|
@ -530,35 +466,15 @@
|
|||
"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."
|
||||
"Zacnu tisknout linku a Vy budete postupne snizovat trysku otacenim tlacitka dokud nedosahnete optimalni vysky. Prohlednete si obrazky v nasi prirucce v kapitole Kalibrace."
|
||||
|
||||
#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=60 r=0
|
||||
"Improving bed calibration point"
|
||||
"Zlepsuji presnost kalibracniho bodu"
|
||||
|
||||
#MSG_WATCH c=0 r=0
|
||||
#MSG_WATCH
|
||||
"Info screen"
|
||||
"Informace"
|
||||
|
||||
#MSG_FILAMENT_LOADING_T0 c=20 r=4
|
||||
"Insert filament into extruder 1. Click when done."
|
||||
"Vlozte filament do extruderu 1. Potvrdte tlacitkem."
|
||||
|
||||
#MSG_FILAMENT_LOADING_T1 c=20 r=4
|
||||
"Insert filament into extruder 2. Click when done."
|
||||
"Vlozte filament do extruderu 2. Potvrdte tlacitkem."
|
||||
|
||||
#MSG_FILAMENT_LOADING_T2 c=20 r=4
|
||||
"Insert filament into extruder 3. Click when done."
|
||||
"Vlozte filament do extruderu 3. Potvrdte tlacitkem."
|
||||
|
||||
#MSG_FILAMENT_LOADING_T3 c=20 r=4
|
||||
"Insert filament into extruder 4. Click when done."
|
||||
"Vlozte filament do extruderu 4. Potvrdte tlacitkem."
|
||||
|
||||
#
|
||||
"Is filament 1 loaded?"
|
||||
"Je filament 1 zaveden?"
|
||||
|
||||
#MSG_INSERT_FILAMENT c=20 r=0
|
||||
#MSG_INSERT_FILAMENT c=20
|
||||
"Insert filament"
|
||||
"Vlozte filament"
|
||||
|
||||
|
|
@ -578,10 +494,6 @@
|
|||
"Is steel sheet on heatbed?"
|
||||
"Je tiskovy plat na podlozce?"
|
||||
|
||||
#MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION c=20 r=0
|
||||
"Iteration "
|
||||
"Iterace "
|
||||
|
||||
#
|
||||
"Last print failures"
|
||||
"Selhani posl. tisku"
|
||||
|
|
@ -590,7 +502,7 @@
|
|||
"Last print"
|
||||
"Posledni tisk"
|
||||
|
||||
#MSG_SELFTEST_EXTRUDER_FAN c=20 r=0
|
||||
#MSG_SELFTEST_EXTRUDER_FAN c=20
|
||||
"Left hotend fan?"
|
||||
"Levy vent na trysce?"
|
||||
|
||||
|
|
@ -606,19 +518,19 @@
|
|||
"Lin. correction"
|
||||
"Korekce lin."
|
||||
|
||||
#MSG_BABYSTEP_Z c=0 r=0
|
||||
#MSG_BABYSTEP_Z
|
||||
"Live adjust Z"
|
||||
"Doladeni osy Z"
|
||||
|
||||
#MSG_LOAD_FILAMENT c=17 r=0
|
||||
#MSG_LOAD_FILAMENT c=17
|
||||
"Load filament"
|
||||
"Zavest filament"
|
||||
|
||||
#MSG_LOADING_COLOR c=0 r=0
|
||||
#MSG_LOADING_COLOR
|
||||
"Loading color"
|
||||
"Cisteni barvy"
|
||||
|
||||
#MSG_LOADING_FILAMENT c=20 r=0
|
||||
#MSG_LOADING_FILAMENT c=20
|
||||
"Loading filament"
|
||||
"Zavadeni filamentu"
|
||||
|
||||
|
|
@ -634,15 +546,15 @@
|
|||
"M117 First layer cal."
|
||||
"M117 Kal. prvni vrstvy"
|
||||
|
||||
#MSG_MAIN c=0 r=0
|
||||
#MSG_MAIN
|
||||
"Main"
|
||||
"Hlavni nabidka"
|
||||
|
||||
#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60 r=0
|
||||
#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
|
||||
"Measuring reference height of calibration point"
|
||||
"Merim referencni vysku kalibracniho bodu"
|
||||
|
||||
#MSG_MESH_BED_LEVELING c=0 r=0
|
||||
#MSG_MESH_BED_LEVELING
|
||||
"Mesh Bed Leveling"
|
||||
"\x00"
|
||||
|
||||
|
|
@ -674,11 +586,11 @@
|
|||
"MMU OK. Resuming..."
|
||||
"MMU OK. Pokracuji..."
|
||||
|
||||
#MSG_STEALTH_MODE_OFF c=0 r=0
|
||||
#MSG_STEALTH_MODE_OFF
|
||||
"Mode [Normal]"
|
||||
"Mod [Normal]"
|
||||
|
||||
#MSG_SILENT_MODE_ON c=0 r=0
|
||||
#MSG_SILENT_MODE_ON
|
||||
"Mode [silent]"
|
||||
"Mod [tichy]"
|
||||
|
||||
|
|
@ -690,15 +602,15 @@
|
|||
"MMU power fails"
|
||||
"MMU vypadky proudu"
|
||||
|
||||
#MSG_STEALTH_MODE_ON c=0 r=0
|
||||
#MSG_STEALTH_MODE_ON
|
||||
"Mode [Stealth]"
|
||||
"Mod [tichy]"
|
||||
|
||||
#MSG_AUTO_MODE_ON c=0 r=0
|
||||
#MSG_AUTO_MODE_ON
|
||||
"Mode [auto power]"
|
||||
"Mod [automaticky]"
|
||||
|
||||
#MSG_SILENT_MODE_OFF c=0 r=0
|
||||
#MSG_SILENT_MODE_OFF
|
||||
"Mode [high power]"
|
||||
"Mod [vys. vykon]"
|
||||
|
||||
|
|
@ -706,31 +618,31 @@
|
|||
"MMU2 connected"
|
||||
"MMU2 pripojeno"
|
||||
|
||||
#MSG_SELFTEST_MOTOR c=0 r=0
|
||||
#MSG_SELFTEST_MOTOR
|
||||
"Motor"
|
||||
"\x00"
|
||||
|
||||
#MSG_MOVE_AXIS c=0 r=0
|
||||
#MSG_MOVE_AXIS
|
||||
"Move axis"
|
||||
"Posunout osu"
|
||||
|
||||
#MSG_MOVE_X c=0 r=0
|
||||
#MSG_MOVE_X
|
||||
"Move X"
|
||||
"Posunout X"
|
||||
|
||||
#MSG_MOVE_Y c=0 r=0
|
||||
#MSG_MOVE_Y
|
||||
"Move Y"
|
||||
"Posunout Y"
|
||||
|
||||
#MSG_MOVE_Z c=0 r=0
|
||||
#MSG_MOVE_Z
|
||||
"Move Z"
|
||||
"Posunout Z"
|
||||
|
||||
#MSG_NO_MOVE c=0 r=0
|
||||
#MSG_NO_MOVE
|
||||
"No move."
|
||||
"Bez pohybu."
|
||||
|
||||
#MSG_NO_CARD c=0 r=0
|
||||
#MSG_NO_CARD
|
||||
"No SD card"
|
||||
"Zadna SD karta"
|
||||
|
||||
|
|
@ -738,11 +650,11 @@
|
|||
"N/A"
|
||||
"\x00"
|
||||
|
||||
#MSG_NO c=0 r=0
|
||||
#MSG_NO
|
||||
"No"
|
||||
"Ne"
|
||||
|
||||
#MSG_SELFTEST_NOTCONNECTED c=0 r=0
|
||||
#MSG_SELFTEST_NOTCONNECTED
|
||||
"Not connected"
|
||||
"Nezapojeno "
|
||||
|
||||
|
|
@ -750,11 +662,7 @@
|
|||
"New firmware version available:"
|
||||
"Vysla nova verze firmware:"
|
||||
|
||||
#
|
||||
"No "
|
||||
"Ne"
|
||||
|
||||
#MSG_SELFTEST_FAN_NO c=19 r=0
|
||||
#MSG_SELFTEST_FAN_NO c=19
|
||||
"Not spinning"
|
||||
"Netoci se"
|
||||
|
||||
|
|
@ -766,7 +674,7 @@
|
|||
"Now I will preheat nozzle for PLA."
|
||||
"Nyni predehreji trysku pro PLA."
|
||||
|
||||
#MSG_NOZZLE c=0 r=0
|
||||
#MSG_NOZZLE
|
||||
"Nozzle"
|
||||
"Tryska"
|
||||
|
||||
|
|
@ -782,7 +690,7 @@
|
|||
"Nozzle FAN"
|
||||
"Trysk. vent."
|
||||
|
||||
#MSG_PAUSE_PRINT c=0 r=0
|
||||
#MSG_PAUSE_PRINT
|
||||
"Pause print"
|
||||
"Pozastavit tisk"
|
||||
|
||||
|
|
@ -814,7 +722,7 @@
|
|||
"Please clean the nozzle for calibration. Click when done."
|
||||
"Pro uspesnou kalibraci ocistete prosim tiskovou trysku. Potvrdte tlacitkem."
|
||||
|
||||
#MSG_SELFTEST_PLEASECHECK c=0 r=0
|
||||
#MSG_SELFTEST_PLEASECHECK
|
||||
"Please check :"
|
||||
"Zkontrolujte :"
|
||||
|
||||
|
|
@ -866,7 +774,7 @@
|
|||
"Please update firmware in your MMU2. Waiting for reset."
|
||||
"Prosim aktualizujte firmware ve vasi MMU2 jednotce. Cekam na reset."
|
||||
|
||||
#MSG_PLEASE_WAIT c=20 r=0
|
||||
#MSG_PLEASE_WAIT c=20
|
||||
"Please wait"
|
||||
"Prosim cekejte"
|
||||
|
||||
|
|
@ -874,11 +782,11 @@
|
|||
"Please remove shipping helpers first."
|
||||
"Nejprve prosim sundejte transportni soucastky."
|
||||
|
||||
#MSG_PREHEAT_NOZZLE c=20 r=0
|
||||
#MSG_PREHEAT_NOZZLE c=20
|
||||
"Preheat the nozzle!"
|
||||
"Predehrejte trysku!"
|
||||
|
||||
#MSG_PREHEAT c=0 r=0
|
||||
#MSG_PREHEAT
|
||||
"Preheat"
|
||||
"Predehrev"
|
||||
|
||||
|
|
@ -898,7 +806,7 @@
|
|||
"Power failures"
|
||||
"Vypadky proudu"
|
||||
|
||||
#MSG_PRINT_ABORTED c=20 r=0
|
||||
#MSG_PRINT_ABORTED c=20
|
||||
"Print aborted"
|
||||
"Tisk prerusen"
|
||||
|
||||
|
|
@ -910,17 +818,17 @@
|
|||
"Preheating to unload"
|
||||
"Predehrivam k vyjmuti"
|
||||
|
||||
#MSG_SELFTEST_PRINT_FAN_SPEED c=18 r=0
|
||||
#MSG_SELFTEST_PRINT_FAN_SPEED c=18
|
||||
"Print fan:"
|
||||
"Tiskovy vent.:"
|
||||
|
||||
#MSG_CARD_MENU c=0 r=0
|
||||
#MSG_CARD_MENU
|
||||
"Print from SD"
|
||||
"Tisk z SD"
|
||||
|
||||
#
|
||||
"Press the knob"
|
||||
"Stisknete hl. tlacitko"
|
||||
"Stisknete tlacitko"
|
||||
|
||||
#MSG_PRINT_PAUSED c=20 r=1
|
||||
"Print paused"
|
||||
|
|
@ -938,15 +846,7 @@
|
|||
"Print FAN"
|
||||
"Tiskovy vent."
|
||||
|
||||
#WELCOME_MSG c=20 r=0
|
||||
"Prusa i3 MK2.5 ready."
|
||||
"Prusa i3 MK2.5 ok."
|
||||
|
||||
#WELCOME_MSG c=20 r=0
|
||||
"Prusa i3 MK3 ready."
|
||||
"Prusa i3 MK3 ok."
|
||||
|
||||
#MSG_PRUSA3D c=0 r=0
|
||||
#MSG_PRUSA3D
|
||||
"prusa3d.com"
|
||||
"\x00"
|
||||
|
||||
|
|
@ -966,19 +866,15 @@
|
|||
"Prusa i3 MK3S OK."
|
||||
"\x00"
|
||||
|
||||
#
|
||||
"Prusa i3 MK2 ready."
|
||||
"Prusa i3 MK2 ok."
|
||||
|
||||
#MSG_CALIBRATE_BED_RESET c=0 r=0
|
||||
#MSG_CALIBRATE_BED_RESET
|
||||
"Reset XYZ calibr."
|
||||
"Reset XYZ kalibr."
|
||||
|
||||
#MSG_BED_CORRECTION_RESET c=0 r=0
|
||||
#MSG_BED_CORRECTION_RESET
|
||||
"Reset"
|
||||
"\x00"
|
||||
|
||||
#MSG_RESUME_PRINT c=0 r=0
|
||||
#MSG_RESUME_PRINT
|
||||
"Resume print"
|
||||
"Pokracovat"
|
||||
|
||||
|
|
@ -1014,31 +910,31 @@
|
|||
"Right"
|
||||
"Vpravo"
|
||||
|
||||
#MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60 r=0
|
||||
#MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
|
||||
"Searching bed calibration point"
|
||||
"Hledam kalibracni bod podlozky"
|
||||
|
||||
#MSG_LANGUAGE_SELECT c=0 r=0
|
||||
#MSG_LANGUAGE_SELECT
|
||||
"Select language"
|
||||
"Vyber jazyka"
|
||||
|
||||
#MSG_SELFTEST_OK c=0 r=0
|
||||
#MSG_SELFTEST_OK
|
||||
"Self test OK"
|
||||
"\x00"
|
||||
|
||||
#MSG_SELFTEST_START c=20 r=0
|
||||
#MSG_SELFTEST_START c=20
|
||||
"Self test start "
|
||||
"Self test start "
|
||||
|
||||
#MSG_SELFTEST c=0 r=0
|
||||
#MSG_SELFTEST
|
||||
"Selftest "
|
||||
"Selftest "
|
||||
|
||||
#MSG_SELFTEST_ERROR c=0 r=0
|
||||
#MSG_SELFTEST_ERROR
|
||||
"Selftest error !"
|
||||
"Chyba Selftestu!"
|
||||
|
||||
#MSG_SELFTEST_FAILED c=20 r=0
|
||||
#MSG_SELFTEST_FAILED c=20
|
||||
"Selftest failed "
|
||||
"Selftest selhal "
|
||||
|
||||
|
|
@ -1058,7 +954,7 @@
|
|||
"Set temperature:"
|
||||
"Nastavte teplotu:"
|
||||
|
||||
#MSG_SETTINGS c=0 r=0
|
||||
#MSG_SETTINGS
|
||||
"Settings"
|
||||
"Nastaveni"
|
||||
|
||||
|
|
@ -1070,32 +966,24 @@
|
|||
"Sensor state"
|
||||
"Stav senzoru"
|
||||
|
||||
#
|
||||
"Sensors info"
|
||||
"Senzor info"
|
||||
|
||||
#
|
||||
"Show pinda state"
|
||||
"Zobrazit stav PINDA"
|
||||
|
||||
#MSG_FILE_CNT c=20 r=4
|
||||
"Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
|
||||
"Nektere soubory nebudou setrideny. Maximalni pocet souboru ve slozce pro setrideni je 100."
|
||||
|
||||
#MSG_SORT_NONE c=17 r=1
|
||||
"Sort: [none]"
|
||||
"Sort [none]"
|
||||
"Trideni [Zadne]"
|
||||
|
||||
#MSG_SORT_TIME c=17 r=1
|
||||
"Sort: [time]"
|
||||
"Trideni: [cas]"
|
||||
"Sort [time]"
|
||||
"Trideni [cas]"
|
||||
|
||||
#
|
||||
"Severe skew"
|
||||
"Tezke zkoseni"
|
||||
|
||||
#MSG_SORT_ALPHA c=17 r=1
|
||||
"Sort: [alphabet]"
|
||||
"Sort [alphabet]"
|
||||
"Trideni [Abeceda]"
|
||||
|
||||
#MSG_SORTING c=20 r=1
|
||||
|
|
@ -1126,11 +1014,11 @@
|
|||
"Sound [silent]"
|
||||
"Zvuk [tichy]"
|
||||
|
||||
#MSG_SPEED c=0 r=0
|
||||
#MSG_SPEED
|
||||
"Speed"
|
||||
"Rychlost"
|
||||
|
||||
#MSG_SELFTEST_FAN_YES c=19 r=0
|
||||
#MSG_SELFTEST_FAN_YES c=19
|
||||
"Spinning"
|
||||
"Toci se"
|
||||
|
||||
|
|
@ -1138,23 +1026,23 @@
|
|||
"Stable ambient temperature 21-26C is needed a rigid stand is required."
|
||||
"Je vyzadovana stabilni pokojova teplota 21-26C a pevna podlozka."
|
||||
|
||||
#MSG_STATISTICS c=0 r=0
|
||||
#MSG_STATISTICS
|
||||
"Statistics "
|
||||
"Statistika "
|
||||
|
||||
#MSG_STOP_PRINT c=0 r=0
|
||||
#MSG_STOP_PRINT
|
||||
"Stop print"
|
||||
"Zastavit tisk"
|
||||
|
||||
#MSG_STOPPED c=0 r=0
|
||||
#MSG_STOPPED
|
||||
"STOPPED. "
|
||||
"ZASTAVENO."
|
||||
|
||||
#MSG_SUPPORT c=0 r=0
|
||||
#MSG_SUPPORT
|
||||
"Support"
|
||||
"Podpora"
|
||||
|
||||
#MSG_SELFTEST_SWAPPED c=0 r=0
|
||||
#MSG_SELFTEST_SWAPPED
|
||||
"Swapped"
|
||||
"Prohozene"
|
||||
|
||||
|
|
@ -1182,7 +1070,7 @@
|
|||
"Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
|
||||
"Teplotni kalibrace dokoncena a je nyni aktivni. Teplotni kalibraci je mozno deaktivovat v menu Nastaveni->Tepl. kal."
|
||||
|
||||
#MSG_TEMPERATURE c=0 r=0
|
||||
#MSG_TEMPERATURE
|
||||
"Temperature"
|
||||
"Teplota"
|
||||
|
||||
|
|
@ -1202,7 +1090,7 @@
|
|||
"Total print time"
|
||||
"Celkovy cas tisku"
|
||||
|
||||
#MSG_TUNE c=0 r=0
|
||||
#MSG_TUNE
|
||||
"Tune"
|
||||
"Ladit"
|
||||
|
||||
|
|
@ -1210,10 +1098,6 @@
|
|||
"Unload"
|
||||
"Vysunout"
|
||||
|
||||
#
|
||||
"Unload all"
|
||||
"Vyjmout vse"
|
||||
|
||||
#
|
||||
"Total failures"
|
||||
"Celkem selhani"
|
||||
|
|
@ -1226,7 +1110,7 @@
|
|||
"to unload filament"
|
||||
"k vyjmuti filamentu"
|
||||
|
||||
#MSG_UNLOAD_FILAMENT c=17 r=0
|
||||
#MSG_UNLOAD_FILAMENT c=17
|
||||
"Unload filament"
|
||||
"Vyjmout filament"
|
||||
|
||||
|
|
@ -1250,7 +1134,7 @@
|
|||
"unknown"
|
||||
"neznamy"
|
||||
|
||||
#MSG_USERWAIT c=0 r=0
|
||||
#MSG_USERWAIT
|
||||
"Wait for user..."
|
||||
"Ceka se na uzivatele..."
|
||||
|
||||
|
|
@ -1282,7 +1166,7 @@
|
|||
"Was filament unload successful?"
|
||||
"Bylo vysunuti filamentu uspesne?"
|
||||
|
||||
#MSG_SELFTEST_WIRINGERROR c=0 r=0
|
||||
#MSG_SELFTEST_WIRINGERROR
|
||||
"Wiring error"
|
||||
"Chyba zapojeni"
|
||||
|
||||
|
|
@ -1298,7 +1182,7 @@
|
|||
"XYZ calibration failed. Please consult the manual."
|
||||
"Kalibrace XYZ selhala. Nahlednete do manualu."
|
||||
|
||||
#MSG_YES c=0 r=0
|
||||
#MSG_YES
|
||||
"Yes"
|
||||
"Ano"
|
||||
|
||||
|
|
@ -1315,8 +1199,8 @@
|
|||
"Kalibrace XYZ v poradku. X/Y osy mirne zkosene. Dobra prace!"
|
||||
|
||||
#
|
||||
"X-correct"
|
||||
"Korekce X"
|
||||
"X-correct:"
|
||||
"Korekce X:"
|
||||
|
||||
#MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
|
||||
"XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
|
||||
|
|
@ -1330,18 +1214,10 @@
|
|||
"XYZ calibration compromised. Right front calibration point not reachable."
|
||||
"Kalibrace XYZ nepresna. Pravy predni bod moc vpredu."
|
||||
|
||||
#MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8
|
||||
"XYZ calibration compromised. Left front calibration point not reachable."
|
||||
"Kalibrace XYZ nepresna. Levy predni bod moc vpredu."
|
||||
|
||||
#MSG_LOAD_ALL c=17 r=0
|
||||
#MSG_LOAD_ALL c=17
|
||||
"Load all"
|
||||
"Zavest vse"
|
||||
|
||||
#MSG_LOAD_FILAMENT_1 c=17 r=0
|
||||
"Load filament 1"
|
||||
"Zavest filament 1"
|
||||
|
||||
#
|
||||
"XYZ calibration failed. Bed calibration point was not found."
|
||||
"Kalibrace XYZ selhala. Kalibracni bod podlozky nenalezen."
|
||||
|
|
@ -1350,38 +1226,18 @@
|
|||
"XYZ calibration failed. Front calibration points not reachable."
|
||||
"Kalibrace XYZ selhala. Predni kalibracni body moc vpredu. Srovnejte tiskarnu."
|
||||
|
||||
#
|
||||
"XYZ calibration failed. Left front calibration point not reachable."
|
||||
"Kalibrace XYZ selhala. Levy predni bod moc vpredu. Srovnejte tiskarnu."
|
||||
|
||||
#MSG_LOAD_FILAMENT_2 c=17 r=0
|
||||
"Load filament 2"
|
||||
"Zavest filament 2"
|
||||
|
||||
#
|
||||
"XYZ calibration failed. Right front calibration point not reachable."
|
||||
"Kalibrace XYZ selhala. Pravy predni bod moc vpredu. Srovnejte tiskarnu."
|
||||
|
||||
#MSG_LOAD_FILAMENT_3 c=17 r=0
|
||||
"Load filament 3"
|
||||
"Zavest filament 3"
|
||||
|
||||
#
|
||||
"Y distance from min"
|
||||
"Y vzdalenost od min"
|
||||
|
||||
#
|
||||
"Y-correct"
|
||||
"Korekce Y"
|
||||
"Y-correct:"
|
||||
"Korekce Y:"
|
||||
|
||||
#MSG_LOAD_FILAMENT_4 c=17 r=0
|
||||
"Load filament 4"
|
||||
"Zavest filament 4"
|
||||
|
||||
#MSG_LOAD_FILAMENT_5 c=17 r=0
|
||||
"Load filament 5"
|
||||
"Zavest filament 5"
|
||||
|
||||
#MSG_OFF c=0 r=0
|
||||
#MSG_OFF
|
||||
" [off]"
|
||||
"\x00"
|
||||
|
|
|
|||
|
|
@ -1,32 +1,32 @@
|
|||
#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14 r=0
|
||||
#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
|
||||
" of 4"
|
||||
" von 4"
|
||||
|
||||
#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14 r=0
|
||||
#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
|
||||
" of 9"
|
||||
" von 9"
|
||||
|
||||
#MSG_MEASURED_OFFSET c=0 r=0
|
||||
#MSG_MEASURED_OFFSET
|
||||
"[0;0] point offset"
|
||||
"[0;0] Punktversatz"
|
||||
|
||||
#MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
|
||||
"\x1b[2JCrash detection can\x1b[1;0Hbe turned on only in\x1b[2;0HNormal mode"
|
||||
"\x1b[2JCrash Erkennung kann\x1b[1;0Hnur im Modus Normal\x1b[2;0Hgenutzt werden"
|
||||
"Crash detection can\rbe turned on only in\rNormal mode"
|
||||
"Crash Erkennung kann\rnur im Modus Normal\rgenutzt werden"
|
||||
|
||||
#MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
|
||||
"\x1b[2JWARNING:\x1b[1;0HCrash detection\x1b[2;0Hdisabled in\x1b[3;0HStealth mode"
|
||||
"\x1b[2JWARNUNG:\x1b[1;0HCrash Erkennung\x1b[2;0Hdeaktiviert im\x1b[3;0HStealth Modus"
|
||||
"WARNING:\rCrash detection\rdisabled in\rStealth mode"
|
||||
"WARNUNG:\rCrash Erkennung\rdeaktiviert im\rStealth Modus"
|
||||
|
||||
#
|
||||
">Cancel"
|
||||
">Abbruch"
|
||||
|
||||
#MSG_BABYSTEPPING_Z c=20 r=0
|
||||
"Adjusting Z"
|
||||
"Z wurde eingestellt"
|
||||
#MSG_BABYSTEPPING_Z c=15
|
||||
"Adjusting Z:"
|
||||
"Z Einstellung:"
|
||||
|
||||
#MSG_SELFTEST_CHECK_ALLCORRECT c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_ALLCORRECT c=20
|
||||
"All correct "
|
||||
"Alles richtig "
|
||||
|
||||
|
|
@ -38,7 +38,7 @@
|
|||
"Ambient"
|
||||
"Raumtemp."
|
||||
|
||||
#MSG_PRESS c=20 r=0
|
||||
#MSG_PRESS c=20
|
||||
"and press the knob"
|
||||
"und Knopf druecken"
|
||||
|
||||
|
|
@ -54,15 +54,15 @@
|
|||
"SpoolJoin [N/A]"
|
||||
"SpoolJoin [N/V]"
|
||||
|
||||
# MSG_AUTO_DEPLETE_OFF c=17 r=1
|
||||
#MSG_AUTO_DEPLETE_OFF c=17 r=1
|
||||
"SpoolJoin [off]"
|
||||
"SpoolJoin [aus]"
|
||||
|
||||
#MSG_AUTO_HOME c=0 r=0
|
||||
#MSG_AUTO_HOME
|
||||
"Auto home"
|
||||
"Startposition"
|
||||
|
||||
#MSG_AUTOLOAD_FILAMENT c=17 r=0
|
||||
#MSG_AUTOLOAD_FILAMENT c=17
|
||||
"AutoLoad filament"
|
||||
"Auto-Laden Filament"
|
||||
|
||||
|
|
@ -74,27 +74,27 @@
|
|||
"Autoloading filament is active, just press the knob and insert filament..."
|
||||
"Automatisches Laden Filament ist aktiv, Knopf druecken und Filament einlegen..."
|
||||
|
||||
#MSG_SELFTEST_AXIS_LENGTH c=0 r=0
|
||||
#MSG_SELFTEST_AXIS_LENGTH
|
||||
"Axis length"
|
||||
"Achsenlaenge"
|
||||
|
||||
#MSG_SELFTEST_AXIS c=0 r=0
|
||||
#MSG_SELFTEST_AXIS
|
||||
"Axis"
|
||||
"Achse"
|
||||
|
||||
#MSG_SELFTEST_BEDHEATER c=0 r=0
|
||||
#MSG_SELFTEST_BEDHEATER
|
||||
"Bed / Heater"
|
||||
"Bett / Heizung"
|
||||
|
||||
#MSG_BED_DONE c=0 r=0
|
||||
#MSG_BED_DONE
|
||||
"Bed done"
|
||||
"Bett OK"
|
||||
|
||||
#MSG_BED_HEATING c=0 r=0
|
||||
#MSG_BED_HEATING
|
||||
"Bed Heating"
|
||||
"Bett aufwaermen"
|
||||
|
||||
#MSG_BED_CORRECTION_MENU c=0 r=0
|
||||
#MSG_BED_CORRECTION_MENU
|
||||
"Bed level correct"
|
||||
"Ausgleich Bett ok"
|
||||
|
||||
|
|
@ -102,15 +102,7 @@
|
|||
"Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
|
||||
"Z-Kal. fehlgeschlg. Sensor nicht ausgeloest. Schmutzige Duese? Warte auf Reset."
|
||||
|
||||
#MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED c=20 r=4
|
||||
"Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset."
|
||||
"Z-Kalibrierung fehl- geschlagen. Sensor getrennt/Kabelbruch? Warte auf Reset."
|
||||
|
||||
#MSG_BED_LEVELING_FAILED_POINT_HIGH c=20 r=4
|
||||
"Bed leveling failed. Sensor triggered too high. Waiting for reset."
|
||||
"Z-Kalibrierung fehl- geschlagen. Sensor zu hoch ausgeloest. Warte auf Reset."
|
||||
|
||||
#MSG_BED c=0 r=0
|
||||
#MSG_BED
|
||||
"Bed"
|
||||
"Bett"
|
||||
|
||||
|
|
@ -126,11 +118,11 @@
|
|||
"Calibrating home"
|
||||
"Kalibriere Start"
|
||||
|
||||
#MSG_CALIBRATE_BED c=0 r=0
|
||||
#MSG_CALIBRATE_BED
|
||||
"Calibrate XYZ"
|
||||
"Kalibrierung XYZ"
|
||||
|
||||
#MSG_HOMEYZ c=0 r=0
|
||||
#MSG_HOMEYZ
|
||||
"Calibrate Z"
|
||||
"Kalibrierung Z"
|
||||
|
||||
|
|
@ -150,11 +142,11 @@
|
|||
"Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
|
||||
"Z Kalibrieren: Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Anschliessend den Knopf druecken."
|
||||
|
||||
#MSG_HOMEYZ_DONE c=0 r=0
|
||||
#MSG_HOMEYZ_DONE
|
||||
"Calibration done"
|
||||
"Kalibrierung OK"
|
||||
|
||||
#MSG_MENU_CALIBRATION c=0 r=0
|
||||
#MSG_MENU_CALIBRATION
|
||||
"Calibration"
|
||||
"Kalibrierung"
|
||||
|
||||
|
|
@ -162,19 +154,15 @@
|
|||
"Cancel"
|
||||
"Abbruch"
|
||||
|
||||
#MSG_SD_INSERTED c=0 r=0
|
||||
"Card inserted"
|
||||
"SD Karte eingesetzt"
|
||||
|
||||
#MSG_SD_REMOVED c=0 r=0
|
||||
#MSG_SD_REMOVED
|
||||
"Card removed"
|
||||
"SD Karte entfernt"
|
||||
|
||||
#MSG_NOT_COLOR c=0 r=0
|
||||
#MSG_NOT_COLOR
|
||||
"Color not correct"
|
||||
"Falsche Farbe"
|
||||
|
||||
#MSG_COOLDOWN c=0 r=0
|
||||
#MSG_COOLDOWN
|
||||
"Cooldown"
|
||||
"Abkuehlen"
|
||||
|
||||
|
|
@ -182,15 +170,15 @@
|
|||
"Copy selected language?"
|
||||
"Gewaehlte Sprache kopieren?"
|
||||
|
||||
#MSG_CRASHDETECT_ON c=0 r=0
|
||||
#MSG_CRASHDETECT_ON
|
||||
"Crash det. [on]"
|
||||
"Crash Erk. [an]"
|
||||
|
||||
#MSG_CRASHDETECT_NA c=0 r=0
|
||||
#MSG_CRASHDETECT_NA
|
||||
"Crash det. [N/A]"
|
||||
"Crash Erk. [nv]"
|
||||
|
||||
#MSG_CRASHDETECT_OFF c=0 r=0
|
||||
#MSG_CRASHDETECT_OFF
|
||||
"Crash det. [off]"
|
||||
"Crash Erk. [aus]"
|
||||
|
||||
|
|
@ -214,7 +202,7 @@
|
|||
"Date:"
|
||||
"Datum:"
|
||||
|
||||
#MSG_DISABLE_STEPPERS c=0 r=0
|
||||
#MSG_DISABLE_STEPPERS
|
||||
"Disable steppers"
|
||||
"Motoren aus"
|
||||
|
||||
|
|
@ -226,34 +214,14 @@
|
|||
"Do you want to repeat last step to readjust distance between nozzle and heatbed?"
|
||||
"Moechten Sie den letzten Schritt wiederholen, um den Abstand zwischen Duese und Druckbett neu einzustellen?"
|
||||
|
||||
#MSG_EXTRUDER_CORRECTION c=9 r=0
|
||||
"E-correct"
|
||||
"E-Korrektur"
|
||||
#MSG_EXTRUDER_CORRECTION c=10
|
||||
"E-correct:"
|
||||
"E-Korrektur:"
|
||||
|
||||
#MSG_EJECT_FILAMENT c=17 r=1
|
||||
"Eject filament"
|
||||
"Filamentauswurf"
|
||||
|
||||
#MSG_EJECT_FILAMENT1 c=17 r=1
|
||||
"Eject filament 1"
|
||||
"Filamentauswurf 1"
|
||||
|
||||
#MSG_EJECT_FILAMENT2 c=17 r=1
|
||||
"Eject filament 2"
|
||||
"Fil.2 auswerfen"
|
||||
|
||||
#MSG_EJECT_FILAMENT3 c=17 r=1
|
||||
"Eject filament 3"
|
||||
"Fil.3 auswerfen"
|
||||
|
||||
#MSG_EJECT_FILAMENT4 c=17 r=1
|
||||
"Eject filament 4"
|
||||
"Fil.4 auswerfen"
|
||||
|
||||
#MSG_EJECT_FILAMENT5 c=17 r=1
|
||||
"Eject filament 5"
|
||||
"Fil.5 auswerfen"
|
||||
|
||||
#
|
||||
"Eject"
|
||||
"Auswurf"
|
||||
|
|
@ -266,11 +234,11 @@
|
|||
"Endstop not hit"
|
||||
"Ende nicht getroffen"
|
||||
|
||||
#MSG_SELFTEST_ENDSTOP c=0 r=0
|
||||
#MSG_SELFTEST_ENDSTOP
|
||||
"Endstop"
|
||||
"Endanschlag"
|
||||
|
||||
#MSG_SELFTEST_ENDSTOPS c=0 r=0
|
||||
#MSG_SELFTEST_ENDSTOPS
|
||||
"Endstops"
|
||||
"Endschalter"
|
||||
|
||||
|
|
@ -282,31 +250,11 @@
|
|||
"ERROR: Filament sensor is not responding, please check connection."
|
||||
"FEHLER: Filament- sensor reagiert nicht, bitte Verbindung pruefen."
|
||||
|
||||
#MSG_ERROR c=0 r=0
|
||||
#MSG_ERROR
|
||||
"ERROR:"
|
||||
"FEHLER:"
|
||||
|
||||
#
|
||||
"External SPI flash W25X20CL not responding."
|
||||
"Der externe SPI Flash W25X20CL antwortet nicht."
|
||||
|
||||
#
|
||||
"Extruder 1"
|
||||
"\x00"
|
||||
|
||||
#
|
||||
"Extruder 2"
|
||||
"\x00"
|
||||
|
||||
#
|
||||
"Extruder 3"
|
||||
"\x00"
|
||||
|
||||
#
|
||||
"Extruder 4"
|
||||
"\x00"
|
||||
|
||||
#MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18 r=0
|
||||
#MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
|
||||
"Extruder fan:"
|
||||
"Extruder Luefter:"
|
||||
|
||||
|
|
@ -314,7 +262,7 @@
|
|||
"Extruder info"
|
||||
"Extruder Info"
|
||||
|
||||
#MSG_MOVE_E c=0 r=0
|
||||
#MSG_MOVE_E
|
||||
"Extruder"
|
||||
"\x00"
|
||||
|
||||
|
|
@ -338,11 +286,11 @@
|
|||
"Fail stats"
|
||||
"Fehlerstatistik"
|
||||
|
||||
#MSG_FAN_SPEED c=14 r=0
|
||||
#MSG_FAN_SPEED c=14
|
||||
"Fan speed"
|
||||
"Luefter-Tempo"
|
||||
|
||||
#MSG_SELFTEST_FAN c=20 r=0
|
||||
#MSG_SELFTEST_FAN c=20
|
||||
"Fan test"
|
||||
"Lueftertest"
|
||||
|
||||
|
|
@ -354,19 +302,15 @@
|
|||
"Fans check [off]"
|
||||
"Luefter Chk.[aus]"
|
||||
|
||||
#MSG_FSENSOR_ON c=0 r=0
|
||||
#MSG_FSENSOR_ON
|
||||
"Fil. sensor [on]"
|
||||
"Fil. Sensor [an]"
|
||||
|
||||
#MSG_RESPONSE_POOR c=20 r=2
|
||||
"Fil. sensor response is poor, disable it?"
|
||||
"Fil. Sensorsignal ist schlecht, ausschalten?"
|
||||
|
||||
#MSG_FSENSOR_NA c=0 r=0
|
||||
#MSG_FSENSOR_NA
|
||||
"Fil. sensor [N/A]"
|
||||
"Fil. Sensor [nv]"
|
||||
|
||||
#MSG_FSENSOR_OFF c=0 r=0
|
||||
#MSG_FSENSOR_OFF
|
||||
"Fil. sensor [off]"
|
||||
"Fil. Sensor [aus]"
|
||||
|
||||
|
|
@ -378,18 +322,14 @@
|
|||
"Filament extruding & with correct color?"
|
||||
"Filament extrudiert + richtige Farbe?"
|
||||
|
||||
#MSG_NOT_LOADED c=19 r=0
|
||||
#MSG_NOT_LOADED c=19
|
||||
"Filament not loaded"
|
||||
"Fil. nicht geladen"
|
||||
|
||||
#MSG_FILAMENT_SENSOR c=20 r=0
|
||||
#MSG_FILAMENT_SENSOR c=20
|
||||
"Filament sensor"
|
||||
"Filamentsensor"
|
||||
|
||||
#MSG_SELFTEST_FILAMENT_SENSOR c=18 r=0
|
||||
"Filament sensor:"
|
||||
"Filamentsensor:"
|
||||
|
||||
#MSG_FILAMENT_USED c=19 r=1
|
||||
"Filament used"
|
||||
"Filament benutzt"
|
||||
|
|
@ -418,15 +358,15 @@
|
|||
"Fix the issue and then press button on MMU unit."
|
||||
"Beseitigen Sie das Problem und druecken Sie dann den Knopf am MMU."
|
||||
|
||||
#MSG_FLOW c=0 r=0
|
||||
#MSG_FLOW
|
||||
"Flow"
|
||||
"Durchfluss"
|
||||
|
||||
#MSG_PRUSA3D_FORUM c=0 r=0
|
||||
#MSG_PRUSA3D_FORUM
|
||||
"forum.prusa3d.com"
|
||||
"\x00"
|
||||
|
||||
#MSG_SELFTEST_COOLING_FAN c=20 r=0
|
||||
#MSG_SELFTEST_COOLING_FAN c=20
|
||||
"Front print fan?"
|
||||
"Vorderer Luefter?"
|
||||
|
||||
|
|
@ -434,23 +374,23 @@
|
|||
"Front side[um]"
|
||||
"Vorne [um]"
|
||||
|
||||
#MSG_SELFTEST_FANS c=0 r=0
|
||||
#MSG_SELFTEST_FANS
|
||||
"Front/left fans"
|
||||
"Vorderer/linke Luefter"
|
||||
|
||||
#MSG_SELFTEST_HEATERTHERMISTOR c=0 r=0
|
||||
#MSG_SELFTEST_HEATERTHERMISTOR
|
||||
"Heater/Thermistor"
|
||||
"Heizung/Thermistor"
|
||||
|
||||
#MSG_BED_HEATING_SAFETY_DISABLED c=0 r=0
|
||||
#MSG_BED_HEATING_SAFETY_DISABLED
|
||||
"Heating disabled by safety timer."
|
||||
"Heizung durch Sicherheitstimer deaktiviert."
|
||||
|
||||
#MSG_HEATING_COMPLETE c=20 r=0
|
||||
#MSG_HEATING_COMPLETE c=20
|
||||
"Heating done."
|
||||
"Aufwaermen OK."
|
||||
|
||||
#MSG_HEATING c=0 r=0
|
||||
#MSG_HEATING
|
||||
"Heating"
|
||||
"Aufwaermen"
|
||||
|
||||
|
|
@ -458,51 +398,47 @@
|
|||
"Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
|
||||
"Hallo, ich bin Ihr Original Prusa i3 Drucker. Moechten Sie, dass ich Sie durch den Einrich- tungsablauf fuehre?"
|
||||
|
||||
#MSG_PRUSA3D_HOWTO c=0 r=0
|
||||
#MSG_PRUSA3D_HOWTO
|
||||
"howto.prusa3d.com"
|
||||
"\x00"
|
||||
|
||||
#
|
||||
"Change extruder"
|
||||
"Wechsel Extruder"
|
||||
|
||||
#MSG_FILAMENTCHANGE c=0 r=0
|
||||
#MSG_FILAMENTCHANGE
|
||||
"Change filament"
|
||||
"Filament-Wechsel"
|
||||
|
||||
#MSG_CHANGE_SUCCESS c=0 r=0
|
||||
#MSG_CHANGE_SUCCESS
|
||||
"Change success!"
|
||||
"Wechsel erfolgr.!"
|
||||
|
||||
#MSG_CORRECTLY c=20 r=0
|
||||
#MSG_CORRECTLY c=20
|
||||
"Changed correctly?"
|
||||
"Wechsel ok?"
|
||||
|
||||
#MSG_SELFTEST_CHECK_BED c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_BED c=20
|
||||
"Checking bed "
|
||||
"Pruefe Bett "
|
||||
|
||||
#MSG_SELFTEST_CHECK_ENDSTOPS c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_ENDSTOPS c=20
|
||||
"Checking endstops"
|
||||
"Pruefe Endschalter"
|
||||
|
||||
#MSG_SELFTEST_CHECK_HOTEND c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_HOTEND c=20
|
||||
"Checking hotend "
|
||||
"Pruefe Duese "
|
||||
|
||||
#MSG_SELFTEST_CHECK_FSENSOR c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_FSENSOR c=20
|
||||
"Checking sensors "
|
||||
"Pruefe Sensoren "
|
||||
|
||||
#MSG_SELFTEST_CHECK_X c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_X c=20
|
||||
"Checking X axis "
|
||||
"Pruefe X Achse "
|
||||
|
||||
#MSG_SELFTEST_CHECK_Y c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_Y c=20
|
||||
"Checking Y axis "
|
||||
"Pruefe Y Achse "
|
||||
|
||||
#MSG_SELFTEST_CHECK_Z c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_Z c=20
|
||||
"Checking Z axis "
|
||||
"Pruefe Z Achse "
|
||||
|
||||
|
|
@ -530,35 +466,15 @@
|
|||
"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."
|
||||
"Ich werde jetzt eine Linie drucken. Waehrend des Druckes koennen Sie die Duese allmaehlich senken, indem Sie den Knopf drehen, bis Sie die optimale Hoehe erreichen. Sehen Sie sich die Bilder in unserem Handbuch im Kapitel Kalibrierung an."
|
||||
|
||||
#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=60 r=0
|
||||
"Improving bed calibration point"
|
||||
"Verbessere Bett Kalibrierpunkt"
|
||||
|
||||
#MSG_WATCH c=0 r=0
|
||||
#MSG_WATCH
|
||||
"Info screen"
|
||||
"Infoanzeige"
|
||||
|
||||
#MSG_FILAMENT_LOADING_T0 c=20 r=4
|
||||
"Insert filament into extruder 1. Click when done."
|
||||
"Filament in Extruder 1 einlegen. Klicken wenn fertig."
|
||||
|
||||
#MSG_FILAMENT_LOADING_T1 c=20 r=4
|
||||
"Insert filament into extruder 2. Click when done."
|
||||
"Filament in Extruder 2 einlegen. Klicken wenn fertig."
|
||||
|
||||
#MSG_FILAMENT_LOADING_T2 c=20 r=4
|
||||
"Insert filament into extruder 3. Click when done."
|
||||
"Filament in Extruder 3 einlegen. Klicken wenn fertig."
|
||||
|
||||
#MSG_FILAMENT_LOADING_T3 c=20 r=4
|
||||
"Insert filament into extruder 4. Click when done."
|
||||
"Filament in Extruder 4 einlegen. Klicken wenn fertig."
|
||||
|
||||
#
|
||||
"Is filament 1 loaded?"
|
||||
"Wurde Filament 1 geladen?"
|
||||
|
||||
#MSG_INSERT_FILAMENT c=20 r=0
|
||||
#MSG_INSERT_FILAMENT c=20
|
||||
"Insert filament"
|
||||
"Filament einlegen"
|
||||
|
||||
|
|
@ -578,10 +494,6 @@
|
|||
"Is steel sheet on heatbed?"
|
||||
"Liegt das Stahlblech auf dem Heizbett?"
|
||||
|
||||
#MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION c=20 r=0
|
||||
"Iteration "
|
||||
"\x00"
|
||||
|
||||
#
|
||||
"Last print failures"
|
||||
"Letzte Druckfehler"
|
||||
|
|
@ -590,7 +502,7 @@
|
|||
"Last print"
|
||||
"Letzter Druck"
|
||||
|
||||
#MSG_SELFTEST_EXTRUDER_FAN c=20 r=0
|
||||
#MSG_SELFTEST_EXTRUDER_FAN c=20
|
||||
"Left hotend fan?"
|
||||
"Linker Luefter?"
|
||||
|
||||
|
|
@ -606,19 +518,19 @@
|
|||
"Lin. correction"
|
||||
"Lineare Korrektur"
|
||||
|
||||
#MSG_BABYSTEP_Z c=0 r=0
|
||||
#MSG_BABYSTEP_Z
|
||||
"Live adjust Z"
|
||||
"Z einstellen"
|
||||
|
||||
#MSG_LOAD_FILAMENT c=17 r=0
|
||||
#MSG_LOAD_FILAMENT c=17
|
||||
"Load filament"
|
||||
"Filament laden"
|
||||
|
||||
#MSG_LOADING_COLOR c=0 r=0
|
||||
#MSG_LOADING_COLOR
|
||||
"Loading color"
|
||||
"Lade Farbe"
|
||||
|
||||
#MSG_LOADING_FILAMENT c=20 r=0
|
||||
#MSG_LOADING_FILAMENT c=20
|
||||
"Loading filament"
|
||||
"Filament laedt"
|
||||
|
||||
|
|
@ -634,15 +546,15 @@
|
|||
"M117 First layer cal."
|
||||
"M117 Erste-Schicht Kal."
|
||||
|
||||
#MSG_MAIN c=0 r=0
|
||||
#MSG_MAIN
|
||||
"Main"
|
||||
"Hauptmenue"
|
||||
|
||||
#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60 r=0
|
||||
#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
|
||||
"Measuring reference height of calibration point"
|
||||
"Messen der Referenzhoehe des Kalibrierpunktes"
|
||||
|
||||
#MSG_MESH_BED_LEVELING c=0 r=0
|
||||
#MSG_MESH_BED_LEVELING
|
||||
"Mesh Bed Leveling"
|
||||
"Mesh Bett Ausgleich"
|
||||
|
||||
|
|
@ -674,11 +586,11 @@
|
|||
"MMU OK. Resuming..."
|
||||
"MMU OK. Weiterdrucken..."
|
||||
|
||||
#MSG_STEALTH_MODE_OFF c=0 r=0
|
||||
#MSG_STEALTH_MODE_OFF
|
||||
"Mode [Normal]"
|
||||
"Modus [Normal]"
|
||||
|
||||
#MSG_SILENT_MODE_ON c=0 r=0
|
||||
#MSG_SILENT_MODE_ON
|
||||
"Mode [silent]"
|
||||
"Modus [leise]"
|
||||
|
||||
|
|
@ -690,15 +602,15 @@
|
|||
"MMU power fails"
|
||||
"MMU Netzfehler"
|
||||
|
||||
#MSG_STEALTH_MODE_ON c=0 r=0
|
||||
#MSG_STEALTH_MODE_ON
|
||||
"Mode [Stealth]"
|
||||
"Modus [Stealth]"
|
||||
|
||||
#MSG_AUTO_MODE_ON c=0 r=0
|
||||
#MSG_AUTO_MODE_ON
|
||||
"Mode [auto power]"
|
||||
"Modus[Auto Power]"
|
||||
|
||||
#MSG_SILENT_MODE_OFF c=0 r=0
|
||||
#MSG_SILENT_MODE_OFF
|
||||
"Mode [high power]"
|
||||
"Modus[Hohe Leist]"
|
||||
|
||||
|
|
@ -706,31 +618,31 @@
|
|||
"MMU2 connected"
|
||||
"MMU2 verbunden"
|
||||
|
||||
#MSG_SELFTEST_MOTOR c=0 r=0
|
||||
#MSG_SELFTEST_MOTOR
|
||||
"Motor"
|
||||
"\x00"
|
||||
|
||||
#MSG_MOVE_AXIS c=0 r=0
|
||||
#MSG_MOVE_AXIS
|
||||
"Move axis"
|
||||
"Achse bewegen"
|
||||
|
||||
#MSG_MOVE_X c=0 r=0
|
||||
#MSG_MOVE_X
|
||||
"Move X"
|
||||
"Bewege X"
|
||||
|
||||
#MSG_MOVE_Y c=0 r=0
|
||||
#MSG_MOVE_Y
|
||||
"Move Y"
|
||||
"Bewege Y"
|
||||
|
||||
#MSG_MOVE_Z c=0 r=0
|
||||
#MSG_MOVE_Z
|
||||
"Move Z"
|
||||
"Bewege Z"
|
||||
|
||||
#MSG_NO_MOVE c=0 r=0
|
||||
#MSG_NO_MOVE
|
||||
"No move."
|
||||
"Keine Bewegung."
|
||||
|
||||
#MSG_NO_CARD c=0 r=0
|
||||
#MSG_NO_CARD
|
||||
"No SD card"
|
||||
"Keine SD Karte"
|
||||
|
||||
|
|
@ -738,11 +650,11 @@
|
|||
"N/A"
|
||||
"N.V."
|
||||
|
||||
#MSG_NO c=0 r=0
|
||||
#MSG_NO
|
||||
"No"
|
||||
"Nein"
|
||||
|
||||
#MSG_SELFTEST_NOTCONNECTED c=0 r=0
|
||||
#MSG_SELFTEST_NOTCONNECTED
|
||||
"Not connected"
|
||||
"Nicht angeschlossen"
|
||||
|
||||
|
|
@ -750,11 +662,7 @@
|
|||
"New firmware version available:"
|
||||
"Neue Firmware- Version verfuegbar:"
|
||||
|
||||
#
|
||||
"No "
|
||||
"Nein"
|
||||
|
||||
#MSG_SELFTEST_FAN_NO c=19 r=0
|
||||
#MSG_SELFTEST_FAN_NO c=19
|
||||
"Not spinning"
|
||||
"Dreht sich nicht"
|
||||
|
||||
|
|
@ -766,7 +674,7 @@
|
|||
"Now I will preheat nozzle for PLA."
|
||||
"Jetzt werde ich die Duese fuer PLA vorheizen."
|
||||
|
||||
#MSG_NOZZLE c=0 r=0
|
||||
#MSG_NOZZLE
|
||||
"Nozzle"
|
||||
"Duese"
|
||||
|
||||
|
|
@ -782,7 +690,7 @@
|
|||
"Nozzle FAN"
|
||||
"Duesen Luefter"
|
||||
|
||||
#MSG_PAUSE_PRINT c=0 r=0
|
||||
#MSG_PAUSE_PRINT
|
||||
"Pause print"
|
||||
"Druck pausieren"
|
||||
|
||||
|
|
@ -814,7 +722,7 @@
|
|||
"Please clean the nozzle for calibration. Click when done."
|
||||
"Bitte entfernen Sie ueberstehendes Filament von der Duese. Klicken wenn sauber."
|
||||
|
||||
#MSG_SELFTEST_PLEASECHECK c=0 r=0
|
||||
#MSG_SELFTEST_PLEASECHECK
|
||||
"Please check :"
|
||||
"Bitte pruefe:"
|
||||
|
||||
|
|
@ -866,7 +774,7 @@
|
|||
"Please update firmware in your MMU2. Waiting for reset."
|
||||
"Bitte aktualisieren Sie die Firmware in der MMU2. Warte auf Reset."
|
||||
|
||||
#MSG_PLEASE_WAIT c=20 r=0
|
||||
#MSG_PLEASE_WAIT c=20
|
||||
"Please wait"
|
||||
"Bitte warten"
|
||||
|
||||
|
|
@ -874,11 +782,11 @@
|
|||
"Please remove shipping helpers first."
|
||||
"Bitte zuerst Transportsicherungen entfernen."
|
||||
|
||||
#MSG_PREHEAT_NOZZLE c=20 r=0
|
||||
#MSG_PREHEAT_NOZZLE c=20
|
||||
"Preheat the nozzle!"
|
||||
"Duese vorheizen!"
|
||||
|
||||
#MSG_PREHEAT c=0 r=0
|
||||
#MSG_PREHEAT
|
||||
"Preheat"
|
||||
"Vorheizen"
|
||||
|
||||
|
|
@ -898,7 +806,7 @@
|
|||
"Power failures"
|
||||
"Netzfehler"
|
||||
|
||||
#MSG_PRINT_ABORTED c=20 r=0
|
||||
#MSG_PRINT_ABORTED c=20
|
||||
"Print aborted"
|
||||
"Druck abgebrochen"
|
||||
|
||||
|
|
@ -910,11 +818,11 @@
|
|||
"Preheating to unload"
|
||||
"Heizen zum Entladen"
|
||||
|
||||
#MSG_SELFTEST_PRINT_FAN_SPEED c=18 r=0
|
||||
#MSG_SELFTEST_PRINT_FAN_SPEED c=18
|
||||
"Print fan:"
|
||||
"Druckvent.:"
|
||||
|
||||
#MSG_CARD_MENU c=0 r=0
|
||||
#MSG_CARD_MENU
|
||||
"Print from SD"
|
||||
"Drucken von SD"
|
||||
|
||||
|
|
@ -938,15 +846,7 @@
|
|||
"Print FAN"
|
||||
"Druckluefter"
|
||||
|
||||
#WELCOME_MSG c=20 r=0
|
||||
"Prusa i3 MK2.5 ready."
|
||||
"Prusa i3 MK2.5 bereit."
|
||||
|
||||
#WELCOME_MSG c=20 r=0
|
||||
"Prusa i3 MK3 ready."
|
||||
"Prusa i3 MK3 bereit."
|
||||
|
||||
#MSG_PRUSA3D c=0 r=0
|
||||
#MSG_PRUSA3D
|
||||
"prusa3d.com"
|
||||
"\x00"
|
||||
|
||||
|
|
@ -966,19 +866,15 @@
|
|||
"Prusa i3 MK3S OK."
|
||||
"\x00"
|
||||
|
||||
#
|
||||
"Prusa i3 MK2 ready."
|
||||
"Prusa i3 MK2 bereit."
|
||||
|
||||
#MSG_CALIBRATE_BED_RESET c=0 r=0
|
||||
#MSG_CALIBRATE_BED_RESET
|
||||
"Reset XYZ calibr."
|
||||
"XYZ Kalibr. zuruecksetzen."
|
||||
|
||||
#MSG_BED_CORRECTION_RESET c=0 r=0
|
||||
#MSG_BED_CORRECTION_RESET
|
||||
"Reset"
|
||||
"Ruecksetzen"
|
||||
|
||||
#MSG_RESUME_PRINT c=0 r=0
|
||||
#MSG_RESUME_PRINT
|
||||
"Resume print"
|
||||
"Druck fortsetzen"
|
||||
|
||||
|
|
@ -1014,31 +910,31 @@
|
|||
"Right"
|
||||
"Rechts"
|
||||
|
||||
#MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60 r=0
|
||||
#MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
|
||||
"Searching bed calibration point"
|
||||
"Suche Bett Kalibrierpunkt"
|
||||
|
||||
#MSG_LANGUAGE_SELECT c=0 r=0
|
||||
#MSG_LANGUAGE_SELECT
|
||||
"Select language"
|
||||
"Waehle Sprache"
|
||||
|
||||
#MSG_SELFTEST_OK c=0 r=0
|
||||
#MSG_SELFTEST_OK
|
||||
"Self test OK"
|
||||
"Selbsttest OK"
|
||||
|
||||
#MSG_SELFTEST_START c=20 r=0
|
||||
#MSG_SELFTEST_START c=20
|
||||
"Self test start "
|
||||
"Selbsttest start "
|
||||
|
||||
#MSG_SELFTEST c=0 r=0
|
||||
#MSG_SELFTEST
|
||||
"Selftest "
|
||||
"Selbsttest "
|
||||
|
||||
#MSG_SELFTEST_ERROR c=0 r=0
|
||||
#MSG_SELFTEST_ERROR
|
||||
"Selftest error !"
|
||||
"Selbsttest Fehler!"
|
||||
|
||||
#MSG_SELFTEST_FAILED c=20 r=0
|
||||
#MSG_SELFTEST_FAILED c=20
|
||||
"Selftest failed "
|
||||
"Selbsttest misslung "
|
||||
|
||||
|
|
@ -1058,7 +954,7 @@
|
|||
"Set temperature:"
|
||||
"Temp. einstellen:"
|
||||
|
||||
#MSG_SETTINGS c=0 r=0
|
||||
#MSG_SETTINGS
|
||||
"Settings"
|
||||
"Einstellungen"
|
||||
|
||||
|
|
@ -1070,33 +966,25 @@
|
|||
"Sensor state"
|
||||
"Sensorstatus"
|
||||
|
||||
#
|
||||
"Sensors info"
|
||||
"Sensoren Info"
|
||||
|
||||
#
|
||||
"Show pinda state"
|
||||
"Pinda-Status anzeigen"
|
||||
|
||||
#MSG_FILE_CNT c=20 r=4
|
||||
"Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
|
||||
"Einige Dateien wur- den nicht sortiert. Max. Dateien pro Verzeichnis = 100."
|
||||
|
||||
#MSG_SORT_NONE c=17 r=1
|
||||
"Sort: [none]"
|
||||
"Sort.: [Keine]"
|
||||
"Sort [none]"
|
||||
"Sort. [Keine]"
|
||||
|
||||
#MSG_SORT_TIME c=17 r=1
|
||||
"Sort: [time]"
|
||||
"Sort.: [Zeit]"
|
||||
"Sort [time]"
|
||||
"Sort. [Zeit]"
|
||||
|
||||
#
|
||||
"Severe skew"
|
||||
"Schwerer Schraeglauf"
|
||||
|
||||
#MSG_SORT_ALPHA c=17 r=1
|
||||
"Sort: [alphabet]"
|
||||
"Sort.: [Alphabet]"
|
||||
"Sort [alphabet]"
|
||||
"Sort. [Alphabet]"
|
||||
|
||||
#MSG_SORTING c=20 r=1
|
||||
"Sorting files"
|
||||
|
|
@ -1126,11 +1014,11 @@
|
|||
"Sound [silent]"
|
||||
"Sound [leise]"
|
||||
|
||||
#MSG_SPEED c=0 r=0
|
||||
#MSG_SPEED
|
||||
"Speed"
|
||||
"Geschwindigkeit"
|
||||
|
||||
#MSG_SELFTEST_FAN_YES c=19 r=0
|
||||
#MSG_SELFTEST_FAN_YES c=19
|
||||
"Spinning"
|
||||
"Dreht sich"
|
||||
|
||||
|
|
@ -1138,23 +1026,23 @@
|
|||
"Stable ambient temperature 21-26C is needed a rigid stand is required."
|
||||
"Stabile Umgebungs- temperatur 21-26C und feste Stand- flaeche erforderlich"
|
||||
|
||||
#MSG_STATISTICS c=0 r=0
|
||||
#MSG_STATISTICS
|
||||
"Statistics "
|
||||
"Statistiken "
|
||||
|
||||
#MSG_STOP_PRINT c=0 r=0
|
||||
#MSG_STOP_PRINT
|
||||
"Stop print"
|
||||
"Druck abbrechen"
|
||||
|
||||
#MSG_STOPPED c=0 r=0
|
||||
#MSG_STOPPED
|
||||
"STOPPED. "
|
||||
"GESTOPPT. "
|
||||
|
||||
#MSG_SUPPORT c=0 r=0
|
||||
#MSG_SUPPORT
|
||||
"Support"
|
||||
"\x00"
|
||||
|
||||
#MSG_SELFTEST_SWAPPED c=0 r=0
|
||||
#MSG_SELFTEST_SWAPPED
|
||||
"Swapped"
|
||||
"Ausgetauscht"
|
||||
|
||||
|
|
@ -1182,7 +1070,7 @@
|
|||
"Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
|
||||
"Temp.kalibrierung ist fertig + aktiv. Temp.kalibrierung kann ausgeschaltet werden im Menu Einstellungen -> Temp.kal."
|
||||
|
||||
#MSG_TEMPERATURE c=0 r=0
|
||||
#MSG_TEMPERATURE
|
||||
"Temperature"
|
||||
"Temperatur"
|
||||
|
||||
|
|
@ -1202,7 +1090,7 @@
|
|||
"Total print time"
|
||||
"Gesamte Druckzeit"
|
||||
|
||||
#MSG_TUNE c=0 r=0
|
||||
#MSG_TUNE
|
||||
"Tune"
|
||||
"Feineinstellung"
|
||||
|
||||
|
|
@ -1210,10 +1098,6 @@
|
|||
"Unload"
|
||||
"Entladen"
|
||||
|
||||
#
|
||||
"Unload all"
|
||||
"Alles entladen"
|
||||
|
||||
#
|
||||
"Total failures"
|
||||
"Gesamte Fehler"
|
||||
|
|
@ -1226,7 +1110,7 @@
|
|||
"to unload filament"
|
||||
"zum Filament entladen"
|
||||
|
||||
#MSG_UNLOAD_FILAMENT c=17 r=0
|
||||
#MSG_UNLOAD_FILAMENT c=17
|
||||
"Unload filament"
|
||||
"Filament entladen"
|
||||
|
||||
|
|
@ -1250,7 +1134,7 @@
|
|||
"unknown"
|
||||
"unbekannt"
|
||||
|
||||
#MSG_USERWAIT c=0 r=0
|
||||
#MSG_USERWAIT
|
||||
"Wait for user..."
|
||||
"Warte auf Benutzer.."
|
||||
|
||||
|
|
@ -1282,7 +1166,7 @@
|
|||
"Was filament unload successful?"
|
||||
"Konnten Sie das Filament entnehmen?"
|
||||
|
||||
#MSG_SELFTEST_WIRINGERROR c=0 r=0
|
||||
#MSG_SELFTEST_WIRINGERROR
|
||||
"Wiring error"
|
||||
"Verdrahtungsfehler"
|
||||
|
||||
|
|
@ -1298,7 +1182,7 @@
|
|||
"XYZ calibration failed. Please consult the manual."
|
||||
"XYZ-Kalibrierung fehlgeschlagen. Bitte schauen Sie in das Handbuch."
|
||||
|
||||
#MSG_YES c=0 r=0
|
||||
#MSG_YES
|
||||
"Yes"
|
||||
"Ja"
|
||||
|
||||
|
|
@ -1315,8 +1199,8 @@
|
|||
"XYZ Kalibrierung in Ordnung. X/Y Achsen sind etwas schraeg."
|
||||
|
||||
#
|
||||
"X-correct"
|
||||
"X-Korrektur"
|
||||
"X-correct:"
|
||||
"X-Korrektur:"
|
||||
|
||||
#MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
|
||||
"XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
|
||||
|
|
@ -1330,18 +1214,10 @@
|
|||
"XYZ calibration compromised. Right front calibration point not reachable."
|
||||
"XYZ-Kalibrierung beeintraechtigt. Rechter vorderer Kalibrierpunkt nicht erreichbar."
|
||||
|
||||
#MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8
|
||||
"XYZ calibration compromised. Left front calibration point not reachable."
|
||||
"XYZ-Kalibrierung beeintraechtigt. Linker vorderer Kalibrierpunkt nicht erreichbar."
|
||||
|
||||
#MSG_LOAD_ALL c=17 r=0
|
||||
#MSG_LOAD_ALL c=17
|
||||
"Load all"
|
||||
"Alle laden"
|
||||
|
||||
#MSG_LOAD_FILAMENT_1 c=17 r=0
|
||||
"Load filament 1"
|
||||
"Filament 1 laden"
|
||||
|
||||
#
|
||||
"XYZ calibration failed. Bed calibration point was not found."
|
||||
"XYZ-Kalibrierung fehlgeschlagen. Bett-Kalibrierpunkt nicht gefunden."
|
||||
|
|
@ -1350,38 +1226,19 @@
|
|||
"XYZ calibration failed. Front calibration points not reachable."
|
||||
"XYZ-Kalibrierung fehlgeschlagen. Vordere Kalibrierpunkte nicht erreichbar."
|
||||
|
||||
#
|
||||
"XYZ calibration failed. Left front calibration point not reachable."
|
||||
"XYZ-Kalibrierung fehlgeschlagen. Linker vorderer Kalibrierpunkt nicht erreichbar."
|
||||
|
||||
#MSG_LOAD_FILAMENT_2 c=17 r=0
|
||||
"Load filament 2"
|
||||
"Filament 2 laden"
|
||||
|
||||
#
|
||||
"XYZ calibration failed. Right front calibration point not reachable."
|
||||
"XYZ-Kalibrierung fehlgeschlagen. Rechter vorderer Kalibrierpunkt ist nicht erreichbar."
|
||||
|
||||
#MSG_LOAD_FILAMENT_3 c=17 r=0
|
||||
"Load filament 3"
|
||||
"Filament 3 laden"
|
||||
|
||||
#
|
||||
"Y distance from min"
|
||||
"Y Entfernung vom Min"
|
||||
|
||||
#
|
||||
"Y-correct"
|
||||
"Y-Korrektur"
|
||||
"Y-correct:"
|
||||
"Y-Korrektur:"
|
||||
|
||||
#MSG_LOAD_FILAMENT_4 c=17 r=0
|
||||
"Load filament 4"
|
||||
"Filament 4 laden"
|
||||
|
||||
#MSG_LOAD_FILAMENT_5 c=17 r=0
|
||||
"Load filament 5"
|
||||
"Filament 5 laden"
|
||||
|
||||
#MSG_OFF c=0 r=0
|
||||
#MSG_OFF
|
||||
" [off]"
|
||||
"\x00"
|
||||
|
|
|
|||
|
|
@ -1,32 +1,32 @@
|
|||
#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14 r=0
|
||||
#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
|
||||
" of 4"
|
||||
" de 4"
|
||||
|
||||
#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14 r=0
|
||||
#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
|
||||
" of 9"
|
||||
" de 9"
|
||||
|
||||
#MSG_MEASURED_OFFSET c=0 r=0
|
||||
#MSG_MEASURED_OFFSET
|
||||
"[0;0] point offset"
|
||||
"[0;0] punto offset"
|
||||
|
||||
#MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
|
||||
"\x1b[2JCrash detection can\x1b[1;0Hbe turned on only in\x1b[2;0HNormal mode"
|
||||
"\x1b[2JDec. choque\x1b[1;0Hpuede ser activada solo en\x1b[2;0HModo normal"
|
||||
"Crash detection can\rbe turned on only in\rNormal mode"
|
||||
"Dec. choque\rpuede ser activada solo en\rModo normal"
|
||||
|
||||
#MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
|
||||
"\x1b[2JWARNING:\x1b[1;0HCrash detection\x1b[2;0Hdisabled in\x1b[3;0HStealth mode"
|
||||
"\x1b[2JATENCION:\x1b[1;0HDec. choque\x1b[2;0Hdesactivada en\x1b[3;0HModo silencio"
|
||||
"WARNING:\rCrash detection\rdisabled in\rStealth mode"
|
||||
"ATENCION:\rDec. choque\rdesactivada en\rModo silencio"
|
||||
|
||||
#
|
||||
">Cancel"
|
||||
">Cancelar"
|
||||
|
||||
#MSG_BABYSTEPPING_Z c=20 r=0
|
||||
"Adjusting Z"
|
||||
"Ajustar Z"
|
||||
#MSG_BABYSTEPPING_Z c=15
|
||||
"Adjusting Z:"
|
||||
"Ajustar Z:"
|
||||
|
||||
#MSG_SELFTEST_CHECK_ALLCORRECT c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_ALLCORRECT c=20
|
||||
"All correct "
|
||||
"Todo bien"
|
||||
|
||||
|
|
@ -38,7 +38,7 @@
|
|||
"Ambient"
|
||||
"Ambiente"
|
||||
|
||||
#MSG_PRESS c=20 r=0
|
||||
#MSG_PRESS c=20
|
||||
"and press the knob"
|
||||
"Haz clic"
|
||||
|
||||
|
|
@ -54,15 +54,15 @@
|
|||
"SpoolJoin [N/A]"
|
||||
"\x00"
|
||||
|
||||
# MSG_AUTO_DEPLETE_OFF c=17 r=1
|
||||
#MSG_AUTO_DEPLETE_OFF c=17 r=1
|
||||
"SpoolJoin [off]"
|
||||
"\x00"
|
||||
|
||||
#MSG_AUTO_HOME c=0 r=0
|
||||
#MSG_AUTO_HOME
|
||||
"Auto home"
|
||||
"Llevar al origen"
|
||||
|
||||
#MSG_AUTOLOAD_FILAMENT c=17 r=0
|
||||
#MSG_AUTOLOAD_FILAMENT c=17
|
||||
"AutoLoad filament"
|
||||
"Carga automatica de filamento"
|
||||
|
||||
|
|
@ -74,27 +74,27 @@
|
|||
"Autoloading filament is active, just press the knob and insert filament..."
|
||||
"La carga automatica de filamento esta activada, pulse el dial e inserte el filamento..."
|
||||
|
||||
#MSG_SELFTEST_AXIS_LENGTH c=0 r=0
|
||||
#MSG_SELFTEST_AXIS_LENGTH
|
||||
"Axis length"
|
||||
"Longitud del eje"
|
||||
|
||||
#MSG_SELFTEST_AXIS c=0 r=0
|
||||
#MSG_SELFTEST_AXIS
|
||||
"Axis"
|
||||
"Eje"
|
||||
|
||||
#MSG_SELFTEST_BEDHEATER c=0 r=0
|
||||
#MSG_SELFTEST_BEDHEATER
|
||||
"Bed / Heater"
|
||||
"Base / Calentador"
|
||||
|
||||
#MSG_BED_DONE c=0 r=0
|
||||
#MSG_BED_DONE
|
||||
"Bed done"
|
||||
"Base preparada"
|
||||
|
||||
#MSG_BED_HEATING c=0 r=0
|
||||
#MSG_BED_HEATING
|
||||
"Bed Heating"
|
||||
"Calentando Base"
|
||||
|
||||
#MSG_BED_CORRECTION_MENU c=0 r=0
|
||||
#MSG_BED_CORRECTION_MENU
|
||||
"Bed level correct"
|
||||
"Corr. de la cama"
|
||||
|
||||
|
|
@ -102,15 +102,7 @@
|
|||
"Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
|
||||
"Nivelacion fallada. Sensor no funciona. Restos en boquilla? Esperando reset."
|
||||
|
||||
#MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED c=20 r=4
|
||||
"Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset."
|
||||
"Nivelacion fallada. Sensor desconectado o cables danados. Esperando reset."
|
||||
|
||||
#MSG_BED_LEVELING_FAILED_POINT_HIGH c=20 r=4
|
||||
"Bed leveling failed. Sensor triggered too high. Waiting for reset."
|
||||
"Nivelacion fallada. Sensor funciona demasiado pronto. Esperando reset."
|
||||
|
||||
#MSG_BED c=0 r=0
|
||||
#MSG_BED
|
||||
"Bed"
|
||||
"Base calefactable "
|
||||
|
||||
|
|
@ -126,11 +118,11 @@
|
|||
"Calibrating home"
|
||||
"Calibrando posicion inicial"
|
||||
|
||||
#MSG_CALIBRATE_BED c=0 r=0
|
||||
#MSG_CALIBRATE_BED
|
||||
"Calibrate XYZ"
|
||||
"Calibrar XYZ"
|
||||
|
||||
#MSG_HOMEYZ c=0 r=0
|
||||
#MSG_HOMEYZ
|
||||
"Calibrate Z"
|
||||
"Calibrar Z"
|
||||
|
||||
|
|
@ -150,11 +142,11 @@
|
|||
"Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
|
||||
"Calibrando Z. Gira el dial para subir el extrusor hasta tocar los topes superiores. Despues haz clic."
|
||||
|
||||
#MSG_HOMEYZ_DONE c=0 r=0
|
||||
#MSG_HOMEYZ_DONE
|
||||
"Calibration done"
|
||||
"Calibracion OK"
|
||||
|
||||
#MSG_MENU_CALIBRATION c=0 r=0
|
||||
#MSG_MENU_CALIBRATION
|
||||
"Calibration"
|
||||
"Calibracion"
|
||||
|
||||
|
|
@ -162,19 +154,15 @@
|
|||
"Cancel"
|
||||
"Cancelar"
|
||||
|
||||
#MSG_SD_INSERTED c=0 r=0
|
||||
"Card inserted"
|
||||
"Tarjeta insertada"
|
||||
|
||||
#MSG_SD_REMOVED c=0 r=0
|
||||
#MSG_SD_REMOVED
|
||||
"Card removed"
|
||||
"Tarjeta retirada"
|
||||
|
||||
#MSG_NOT_COLOR c=0 r=0
|
||||
#MSG_NOT_COLOR
|
||||
"Color not correct"
|
||||
"Color no homogeneo"
|
||||
|
||||
#MSG_COOLDOWN c=0 r=0
|
||||
#MSG_COOLDOWN
|
||||
"Cooldown"
|
||||
"Enfriar"
|
||||
|
||||
|
|
@ -182,15 +170,15 @@
|
|||
"Copy selected language?"
|
||||
"Copiar idioma seleccionado?"
|
||||
|
||||
#MSG_CRASHDETECT_ON c=0 r=0
|
||||
#MSG_CRASHDETECT_ON
|
||||
"Crash det. [on]"
|
||||
"Det. choque [act]"
|
||||
|
||||
#MSG_CRASHDETECT_NA c=0 r=0
|
||||
#MSG_CRASHDETECT_NA
|
||||
"Crash det. [N/A]"
|
||||
"Dec. choque [N/D]"
|
||||
|
||||
#MSG_CRASHDETECT_OFF c=0 r=0
|
||||
#MSG_CRASHDETECT_OFF
|
||||
"Crash det. [off]"
|
||||
"Det. choque [ina]"
|
||||
|
||||
|
|
@ -214,7 +202,7 @@
|
|||
"Date:"
|
||||
"Fecha:"
|
||||
|
||||
#MSG_DISABLE_STEPPERS c=0 r=0
|
||||
#MSG_DISABLE_STEPPERS
|
||||
"Disable steppers"
|
||||
"Apagar motores"
|
||||
|
||||
|
|
@ -226,34 +214,14 @@
|
|||
"Do you want to repeat last step to readjust distance between nozzle and heatbed?"
|
||||
"Quieres repetir el ultimo paso para reajustar la distancia boquilla-base?"
|
||||
|
||||
#MSG_EXTRUDER_CORRECTION c=9 r=0
|
||||
"E-correct"
|
||||
"E-correcion"
|
||||
#MSG_EXTRUDER_CORRECTION c=10
|
||||
"E-correct:"
|
||||
"E-correcion:"
|
||||
|
||||
#MSG_EJECT_FILAMENT c=17 r=1
|
||||
"Eject filament"
|
||||
"Expulsar filamento"
|
||||
|
||||
#MSG_EJECT_FILAMENT1 c=17 r=1
|
||||
"Eject filament 1"
|
||||
"Expulsar filamento 1"
|
||||
|
||||
#MSG_EJECT_FILAMENT2 c=17 r=1
|
||||
"Eject filament 2"
|
||||
"Expulsar filamento 2"
|
||||
|
||||
#MSG_EJECT_FILAMENT3 c=17 r=1
|
||||
"Eject filament 3"
|
||||
"Expulsar filamento 3"
|
||||
|
||||
#MSG_EJECT_FILAMENT4 c=17 r=1
|
||||
"Eject filament 4"
|
||||
"Expulsar filamento 4"
|
||||
|
||||
#MSG_EJECT_FILAMENT5 c=17 r=1
|
||||
"Eject filament 5"
|
||||
"Expulsar filamento 5"
|
||||
|
||||
#
|
||||
"Eject"
|
||||
"Expulsar"
|
||||
|
|
@ -266,11 +234,11 @@
|
|||
"Endstop not hit"
|
||||
"Endstop no alcanzado"
|
||||
|
||||
#MSG_SELFTEST_ENDSTOP c=0 r=0
|
||||
#MSG_SELFTEST_ENDSTOP
|
||||
"Endstop"
|
||||
"\x00"
|
||||
|
||||
#MSG_SELFTEST_ENDSTOPS c=0 r=0
|
||||
#MSG_SELFTEST_ENDSTOPS
|
||||
"Endstops"
|
||||
"\x00"
|
||||
|
||||
|
|
@ -282,31 +250,11 @@
|
|||
"ERROR: Filament sensor is not responding, please check connection."
|
||||
"ERROR: El sensor de filamento no responde, por favor comprueba la conexion."
|
||||
|
||||
#MSG_ERROR c=0 r=0
|
||||
#MSG_ERROR
|
||||
"ERROR:"
|
||||
"\x00"
|
||||
|
||||
#
|
||||
"External SPI flash W25X20CL not responding."
|
||||
"No responde el flasheo externo SPI W25X20CL"
|
||||
|
||||
#
|
||||
"Extruder 1"
|
||||
"Extrusor 1"
|
||||
|
||||
#
|
||||
"Extruder 2"
|
||||
"Extrusor 2"
|
||||
|
||||
#
|
||||
"Extruder 3"
|
||||
"Extrusor 3"
|
||||
|
||||
#
|
||||
"Extruder 4"
|
||||
"Extrusor 4"
|
||||
|
||||
#MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18 r=0
|
||||
#MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
|
||||
"Extruder fan:"
|
||||
"Ventilador del extrusor:"
|
||||
|
||||
|
|
@ -314,7 +262,7 @@
|
|||
"Extruder info"
|
||||
"Informacion del extrusor"
|
||||
|
||||
#MSG_MOVE_E c=0 r=0
|
||||
#MSG_MOVE_E
|
||||
"Extruder"
|
||||
"Extruir"
|
||||
|
||||
|
|
@ -338,11 +286,11 @@
|
|||
"Fail stats"
|
||||
"Estadistica de fallos"
|
||||
|
||||
#MSG_FAN_SPEED c=14 r=0
|
||||
#MSG_FAN_SPEED c=14
|
||||
"Fan speed"
|
||||
"Velocidad Vent."
|
||||
|
||||
#MSG_SELFTEST_FAN c=20 r=0
|
||||
#MSG_SELFTEST_FAN c=20
|
||||
"Fan test"
|
||||
"Test ventiladores"
|
||||
|
||||
|
|
@ -354,19 +302,15 @@
|
|||
"Fans check [off]"
|
||||
"Comprob.vent[ina]"
|
||||
|
||||
#MSG_FSENSOR_ON c=0 r=0
|
||||
#MSG_FSENSOR_ON
|
||||
"Fil. sensor [on]"
|
||||
"Sensor Fil. [act]"
|
||||
|
||||
#MSG_RESPONSE_POOR c=20 r=2
|
||||
"Fil. sensor response is poor, disable it?"
|
||||
"La respuesta del sensor de fil es deficiente, ?desactivarlo?"
|
||||
|
||||
#MSG_FSENSOR_NA c=0 r=0
|
||||
#MSG_FSENSOR_NA
|
||||
"Fil. sensor [N/A]"
|
||||
"Sensor Fil. [N/D]"
|
||||
|
||||
#MSG_FSENSOR_OFF c=0 r=0
|
||||
#MSG_FSENSOR_OFF
|
||||
"Fil. sensor [off]"
|
||||
"Sensor Fil. [ina]"
|
||||
|
||||
|
|
@ -378,18 +322,14 @@
|
|||
"Filament extruding & with correct color?"
|
||||
"Es nitido el color nuevo?"
|
||||
|
||||
#MSG_NOT_LOADED c=19 r=0
|
||||
#MSG_NOT_LOADED c=19
|
||||
"Filament not loaded"
|
||||
"Fil. no introducido"
|
||||
|
||||
#MSG_FILAMENT_SENSOR c=20 r=0
|
||||
#MSG_FILAMENT_SENSOR c=20
|
||||
"Filament sensor"
|
||||
"Sensor de filamento"
|
||||
|
||||
#MSG_SELFTEST_FILAMENT_SENSOR c=18 r=0
|
||||
"Filament sensor:"
|
||||
"Sensor de filamento:"
|
||||
|
||||
#MSG_FILAMENT_USED c=19 r=1
|
||||
"Filament used"
|
||||
"Filamento usado"
|
||||
|
|
@ -418,15 +358,15 @@
|
|||
"Fix the issue and then press button on MMU unit."
|
||||
"Corrige el problema y pulsa el boton en la unidad MMU."
|
||||
|
||||
#MSG_FLOW c=0 r=0
|
||||
#MSG_FLOW
|
||||
"Flow"
|
||||
"Flujo"
|
||||
|
||||
#MSG_PRUSA3D_FORUM c=0 r=0
|
||||
#MSG_PRUSA3D_FORUM
|
||||
"forum.prusa3d.com"
|
||||
"\x00"
|
||||
|
||||
#MSG_SELFTEST_COOLING_FAN c=20 r=0
|
||||
#MSG_SELFTEST_COOLING_FAN c=20
|
||||
"Front print fan?"
|
||||
"Vent. frontal?"
|
||||
|
||||
|
|
@ -434,23 +374,23 @@
|
|||
"Front side[um]"
|
||||
"Frontal [um]"
|
||||
|
||||
#MSG_SELFTEST_FANS c=0 r=0
|
||||
#MSG_SELFTEST_FANS
|
||||
"Front/left fans"
|
||||
"Ventiladores frontal/izquierdo"
|
||||
|
||||
#MSG_SELFTEST_HEATERTHERMISTOR c=0 r=0
|
||||
#MSG_SELFTEST_HEATERTHERMISTOR
|
||||
"Heater/Thermistor"
|
||||
"Calentador/Termistor"
|
||||
|
||||
#MSG_BED_HEATING_SAFETY_DISABLED c=0 r=0
|
||||
#MSG_BED_HEATING_SAFETY_DISABLED
|
||||
"Heating disabled by safety timer."
|
||||
"Calentadores desactivados por el temporizador de seguridad."
|
||||
|
||||
#MSG_HEATING_COMPLETE c=20 r=0
|
||||
#MSG_HEATING_COMPLETE c=20
|
||||
"Heating done."
|
||||
"Calentamiento acabado."
|
||||
|
||||
#MSG_HEATING c=0 r=0
|
||||
#MSG_HEATING
|
||||
"Heating"
|
||||
"Calentando..."
|
||||
|
||||
|
|
@ -458,51 +398,47 @@
|
|||
"Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
|
||||
"Hola, soy tu impresora Original Prusa i3. Quieres que te guie a traves de la configuracion?"
|
||||
|
||||
#MSG_PRUSA3D_HOWTO c=0 r=0
|
||||
#MSG_PRUSA3D_HOWTO
|
||||
"howto.prusa3d.com"
|
||||
"\x00"
|
||||
|
||||
#
|
||||
"Change extruder"
|
||||
"Cambiar extrusor."
|
||||
|
||||
#MSG_FILAMENTCHANGE c=0 r=0
|
||||
#MSG_FILAMENTCHANGE
|
||||
"Change filament"
|
||||
"Cambiar filamento"
|
||||
|
||||
#MSG_CHANGE_SUCCESS c=0 r=0
|
||||
#MSG_CHANGE_SUCCESS
|
||||
"Change success!"
|
||||
"Cambio correcto"
|
||||
|
||||
#MSG_CORRECTLY c=20 r=0
|
||||
#MSG_CORRECTLY c=20
|
||||
"Changed correctly?"
|
||||
"Cambio correcto?"
|
||||
|
||||
#MSG_SELFTEST_CHECK_BED c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_BED c=20
|
||||
"Checking bed "
|
||||
"Control base cal."
|
||||
|
||||
#MSG_SELFTEST_CHECK_ENDSTOPS c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_ENDSTOPS c=20
|
||||
"Checking endstops"
|
||||
"Control endstops"
|
||||
|
||||
#MSG_SELFTEST_CHECK_HOTEND c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_HOTEND c=20
|
||||
"Checking hotend "
|
||||
"Control fusor"
|
||||
|
||||
#MSG_SELFTEST_CHECK_FSENSOR c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_FSENSOR c=20
|
||||
"Checking sensors "
|
||||
"Comprobando los sensores"
|
||||
|
||||
#MSG_SELFTEST_CHECK_X c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_X c=20
|
||||
"Checking X axis "
|
||||
"Control sensor X"
|
||||
|
||||
#MSG_SELFTEST_CHECK_Y c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_Y c=20
|
||||
"Checking Y axis "
|
||||
"Control sensor Y"
|
||||
|
||||
#MSG_SELFTEST_CHECK_Z c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_Z c=20
|
||||
"Checking Z axis "
|
||||
"Control sensor Z"
|
||||
|
||||
|
|
@ -530,35 +466,15 @@
|
|||
"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."
|
||||
"Voy a comenzar a imprimir la linea y tu bajaras el nozzle gradualmente al rotar el dial, hasta que llegues a la altura optima. Mira las imagenes del capitulo Calibracion en el manual."
|
||||
|
||||
#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=60 r=0
|
||||
"Improving bed calibration point"
|
||||
"Mejorando punto de calibracion base"
|
||||
|
||||
#MSG_WATCH c=0 r=0
|
||||
#MSG_WATCH
|
||||
"Info screen"
|
||||
"Monitorizar"
|
||||
|
||||
#MSG_FILAMENT_LOADING_T0 c=20 r=4
|
||||
"Insert filament into extruder 1. Click when done."
|
||||
"Insertar filamento en el extrusor 1. Haz clic una vez terminado."
|
||||
|
||||
#MSG_FILAMENT_LOADING_T1 c=20 r=4
|
||||
"Insert filament into extruder 2. Click when done."
|
||||
"Insertar filamento en el extrusor 2. Haz clic una vez terminado."
|
||||
|
||||
#MSG_FILAMENT_LOADING_T2 c=20 r=4
|
||||
"Insert filament into extruder 3. Click when done."
|
||||
"Insertar filamento en el extrusor 3. Haz clic una vez terminado."
|
||||
|
||||
#MSG_FILAMENT_LOADING_T3 c=20 r=4
|
||||
"Insert filament into extruder 4. Click when done."
|
||||
"Insertar filamento en el extrusor 4. Haz clic una vez terminado."
|
||||
|
||||
#
|
||||
"Is filament 1 loaded?"
|
||||
"?Esta cargado el filamento 1?"
|
||||
|
||||
#MSG_INSERT_FILAMENT c=20 r=0
|
||||
#MSG_INSERT_FILAMENT c=20
|
||||
"Insert filament"
|
||||
"Introducir filamento"
|
||||
|
||||
|
|
@ -578,10 +494,6 @@
|
|||
"Is steel sheet on heatbed?"
|
||||
"?Esta colocada la lamina de acero sobre la base?"
|
||||
|
||||
#MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION c=20 r=0
|
||||
"Iteration "
|
||||
"Reiteracion "
|
||||
|
||||
#
|
||||
"Last print failures"
|
||||
"Ultimas impresiones fallidas"
|
||||
|
|
@ -590,7 +502,7 @@
|
|||
"Last print"
|
||||
"Ultima impresion"
|
||||
|
||||
#MSG_SELFTEST_EXTRUDER_FAN c=20 r=0
|
||||
#MSG_SELFTEST_EXTRUDER_FAN c=20
|
||||
"Left hotend fan?"
|
||||
"Vent. izquierdo?"
|
||||
|
||||
|
|
@ -606,19 +518,19 @@
|
|||
"Lin. correction"
|
||||
"Correccion de Linealidad"
|
||||
|
||||
#MSG_BABYSTEP_Z c=0 r=0
|
||||
#MSG_BABYSTEP_Z
|
||||
"Live adjust Z"
|
||||
"Micropaso Eje Z"
|
||||
|
||||
#MSG_LOAD_FILAMENT c=17 r=0
|
||||
#MSG_LOAD_FILAMENT c=17
|
||||
"Load filament"
|
||||
"Introducir filam."
|
||||
|
||||
#MSG_LOADING_COLOR c=0 r=0
|
||||
#MSG_LOADING_COLOR
|
||||
"Loading color"
|
||||
"Cambiando color"
|
||||
|
||||
#MSG_LOADING_FILAMENT c=20 r=0
|
||||
#MSG_LOADING_FILAMENT c=20
|
||||
"Loading filament"
|
||||
"Introduciendo filam."
|
||||
|
||||
|
|
@ -634,15 +546,15 @@
|
|||
"M117 First layer cal."
|
||||
"M117 Cal. primera cap."
|
||||
|
||||
#MSG_MAIN c=0 r=0
|
||||
#MSG_MAIN
|
||||
"Main"
|
||||
"Menu principal"
|
||||
|
||||
#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60 r=0
|
||||
#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
|
||||
"Measuring reference height of calibration point"
|
||||
"Midiendo altura del punto de calibracion"
|
||||
|
||||
#MSG_MESH_BED_LEVELING c=0 r=0
|
||||
#MSG_MESH_BED_LEVELING
|
||||
"Mesh Bed Leveling"
|
||||
"Nivelacion Mesh Level"
|
||||
|
||||
|
|
@ -674,11 +586,11 @@
|
|||
"MMU OK. Resuming..."
|
||||
"MMU OK. Resumiendo..."
|
||||
|
||||
#MSG_STEALTH_MODE_OFF c=0 r=0
|
||||
#MSG_STEALTH_MODE_OFF
|
||||
"Mode [Normal]"
|
||||
"Modo [Normal]"
|
||||
|
||||
#MSG_SILENT_MODE_ON c=0 r=0
|
||||
#MSG_SILENT_MODE_ON
|
||||
"Mode [silent]"
|
||||
"Modo [silencio]"
|
||||
|
||||
|
|
@ -690,15 +602,15 @@
|
|||
"MMU power fails"
|
||||
"Fallo de energia en MMU"
|
||||
|
||||
#MSG_STEALTH_MODE_ON c=0 r=0
|
||||
#MSG_STEALTH_MODE_ON
|
||||
"Mode [Stealth]"
|
||||
"Modo [Silencio]"
|
||||
|
||||
#MSG_AUTO_MODE_ON c=0 r=0
|
||||
#MSG_AUTO_MODE_ON
|
||||
"Mode [auto power]"
|
||||
"Modo[fuerza auto]"
|
||||
|
||||
#MSG_SILENT_MODE_OFF c=0 r=0
|
||||
#MSG_SILENT_MODE_OFF
|
||||
"Mode [high power]"
|
||||
"Modo [rend.pleno]"
|
||||
|
||||
|
|
@ -706,31 +618,31 @@
|
|||
"MMU2 connected"
|
||||
"MMU2 conectado"
|
||||
|
||||
#MSG_SELFTEST_MOTOR c=0 r=0
|
||||
#MSG_SELFTEST_MOTOR
|
||||
"Motor"
|
||||
"\x00"
|
||||
|
||||
#MSG_MOVE_AXIS c=0 r=0
|
||||
#MSG_MOVE_AXIS
|
||||
"Move axis"
|
||||
"Mover ejes"
|
||||
|
||||
#MSG_MOVE_X c=0 r=0
|
||||
#MSG_MOVE_X
|
||||
"Move X"
|
||||
"Mover X"
|
||||
|
||||
#MSG_MOVE_Y c=0 r=0
|
||||
#MSG_MOVE_Y
|
||||
"Move Y"
|
||||
"Mover Y"
|
||||
|
||||
#MSG_MOVE_Z c=0 r=0
|
||||
#MSG_MOVE_Z
|
||||
"Move Z"
|
||||
"Mover Z"
|
||||
|
||||
#MSG_NO_MOVE c=0 r=0
|
||||
#MSG_NO_MOVE
|
||||
"No move."
|
||||
"Sin movimiento"
|
||||
|
||||
#MSG_NO_CARD c=0 r=0
|
||||
#MSG_NO_CARD
|
||||
"No SD card"
|
||||
"No hay tarjeta SD"
|
||||
|
||||
|
|
@ -738,11 +650,11 @@
|
|||
"N/A"
|
||||
"No disponible"
|
||||
|
||||
#MSG_NO c=0 r=0
|
||||
#MSG_NO
|
||||
"No"
|
||||
"\x00"
|
||||
|
||||
#MSG_SELFTEST_NOTCONNECTED c=0 r=0
|
||||
#MSG_SELFTEST_NOTCONNECTED
|
||||
"Not connected"
|
||||
"No hay conexion "
|
||||
|
||||
|
|
@ -750,11 +662,7 @@
|
|||
"New firmware version available:"
|
||||
"Nuevo firmware disponible:"
|
||||
|
||||
#
|
||||
"No "
|
||||
"No"
|
||||
|
||||
#MSG_SELFTEST_FAN_NO c=19 r=0
|
||||
#MSG_SELFTEST_FAN_NO c=19
|
||||
"Not spinning"
|
||||
"Ventilador no gira"
|
||||
|
||||
|
|
@ -766,7 +674,7 @@
|
|||
"Now I will preheat nozzle for PLA."
|
||||
"Voy a precalentar la boquilla para PLA ahora."
|
||||
|
||||
#MSG_NOZZLE c=0 r=0
|
||||
#MSG_NOZZLE
|
||||
"Nozzle"
|
||||
"Boquilla"
|
||||
|
||||
|
|
@ -782,7 +690,7 @@
|
|||
"Nozzle FAN"
|
||||
"Ventilador de capa"
|
||||
|
||||
#MSG_PAUSE_PRINT c=0 r=0
|
||||
#MSG_PAUSE_PRINT
|
||||
"Pause print"
|
||||
"Pausar impresion"
|
||||
|
||||
|
|
@ -814,7 +722,7 @@
|
|||
"Please clean the nozzle for calibration. Click when done."
|
||||
"Limpia boquilla para calibracion. Click cuando acabes."
|
||||
|
||||
#MSG_SELFTEST_PLEASECHECK c=0 r=0
|
||||
#MSG_SELFTEST_PLEASECHECK
|
||||
"Please check :"
|
||||
"Controla :"
|
||||
|
||||
|
|
@ -866,7 +774,7 @@
|
|||
"Please update firmware in your MMU2. Waiting for reset."
|
||||
"Por favor actualice el firmware en tu MMU2. Esperando el reseteo."
|
||||
|
||||
#MSG_PLEASE_WAIT c=20 r=0
|
||||
#MSG_PLEASE_WAIT c=20
|
||||
"Please wait"
|
||||
"Por Favor Espere"
|
||||
|
||||
|
|
@ -874,11 +782,11 @@
|
|||
"Please remove shipping helpers first."
|
||||
"Por favor retira los soportes de envio primero."
|
||||
|
||||
#MSG_PREHEAT_NOZZLE c=20 r=0
|
||||
#MSG_PREHEAT_NOZZLE c=20
|
||||
"Preheat the nozzle!"
|
||||
"Precalienta extrusor!"
|
||||
|
||||
#MSG_PREHEAT c=0 r=0
|
||||
#MSG_PREHEAT
|
||||
"Preheat"
|
||||
"Precalentar"
|
||||
|
||||
|
|
@ -898,7 +806,7 @@
|
|||
"Power failures"
|
||||
"Cortes de energia"
|
||||
|
||||
#MSG_PRINT_ABORTED c=20 r=0
|
||||
#MSG_PRINT_ABORTED c=20
|
||||
"Print aborted"
|
||||
"Impresion cancelada"
|
||||
|
||||
|
|
@ -910,11 +818,11 @@
|
|||
"Preheating to unload"
|
||||
"Precalentar para descargar"
|
||||
|
||||
#MSG_SELFTEST_PRINT_FAN_SPEED c=18 r=0
|
||||
#MSG_SELFTEST_PRINT_FAN_SPEED c=18
|
||||
"Print fan:"
|
||||
"Ventilador del fusor:"
|
||||
|
||||
#MSG_CARD_MENU c=0 r=0
|
||||
#MSG_CARD_MENU
|
||||
"Print from SD"
|
||||
"Menu tarjeta SD"
|
||||
|
||||
|
|
@ -938,15 +846,7 @@
|
|||
"Print FAN"
|
||||
"Ventilador del extrusor"
|
||||
|
||||
#WELCOME_MSG c=20 r=0
|
||||
"Prusa i3 MK2.5 ready."
|
||||
"Preparado para Prusa i3 MK2.5."
|
||||
|
||||
#WELCOME_MSG c=20 r=0
|
||||
"Prusa i3 MK3 ready."
|
||||
"Prusa i3 MK3 prep."
|
||||
|
||||
#MSG_PRUSA3D c=0 r=0
|
||||
#MSG_PRUSA3D
|
||||
"prusa3d.com"
|
||||
"prusa3d.es"
|
||||
|
||||
|
|
@ -966,19 +866,15 @@
|
|||
"Prusa i3 MK3S OK."
|
||||
"\x00"
|
||||
|
||||
#
|
||||
"Prusa i3 MK2 ready."
|
||||
"Preparado para i3 MK2."
|
||||
|
||||
#MSG_CALIBRATE_BED_RESET c=0 r=0
|
||||
#MSG_CALIBRATE_BED_RESET
|
||||
"Reset XYZ calibr."
|
||||
"\x00"
|
||||
|
||||
#MSG_BED_CORRECTION_RESET c=0 r=0
|
||||
#MSG_BED_CORRECTION_RESET
|
||||
"Reset"
|
||||
"\x00"
|
||||
|
||||
#MSG_RESUME_PRINT c=0 r=0
|
||||
#MSG_RESUME_PRINT
|
||||
"Resume print"
|
||||
"Reanudar impres."
|
||||
|
||||
|
|
@ -1014,31 +910,31 @@
|
|||
"Right"
|
||||
"Derecha"
|
||||
|
||||
#MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60 r=0
|
||||
#MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
|
||||
"Searching bed calibration point"
|
||||
"Buscando punto de calibracion base"
|
||||
|
||||
#MSG_LANGUAGE_SELECT c=0 r=0
|
||||
#MSG_LANGUAGE_SELECT
|
||||
"Select language"
|
||||
"Cambiar el idioma"
|
||||
|
||||
#MSG_SELFTEST_OK c=0 r=0
|
||||
#MSG_SELFTEST_OK
|
||||
"Self test OK"
|
||||
"\x00"
|
||||
|
||||
#MSG_SELFTEST_START c=20 r=0
|
||||
#MSG_SELFTEST_START c=20
|
||||
"Self test start "
|
||||
"Iniciar Selftest"
|
||||
|
||||
#MSG_SELFTEST c=0 r=0
|
||||
#MSG_SELFTEST
|
||||
"Selftest "
|
||||
"Selftest"
|
||||
|
||||
#MSG_SELFTEST_ERROR c=0 r=0
|
||||
#MSG_SELFTEST_ERROR
|
||||
"Selftest error !"
|
||||
"Error Selftest !"
|
||||
|
||||
#MSG_SELFTEST_FAILED c=20 r=0
|
||||
#MSG_SELFTEST_FAILED c=20
|
||||
"Selftest failed "
|
||||
"Fallo Selftest"
|
||||
|
||||
|
|
@ -1058,7 +954,7 @@
|
|||
"Set temperature:"
|
||||
"Establecer temp.:"
|
||||
|
||||
#MSG_SETTINGS c=0 r=0
|
||||
#MSG_SETTINGS
|
||||
"Settings"
|
||||
"Configuracion"
|
||||
|
||||
|
|
@ -1070,33 +966,25 @@
|
|||
"Sensor state"
|
||||
"Estado del sensor"
|
||||
|
||||
#
|
||||
"Sensors info"
|
||||
"Informacion sensores"
|
||||
|
||||
#
|
||||
"Show pinda state"
|
||||
"Mostrar estado pinda"
|
||||
|
||||
#MSG_FILE_CNT c=20 r=4
|
||||
"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. "
|
||||
|
||||
#MSG_SORT_NONE c=17 r=1
|
||||
"Sort: [none]"
|
||||
"Ordenar: [nada]"
|
||||
"Sort [none]"
|
||||
"Ordenar [nada]"
|
||||
|
||||
#MSG_SORT_TIME c=17 r=1
|
||||
"Sort: [time]"
|
||||
"Orden: [Fecha]"
|
||||
"Sort [time]"
|
||||
"Ordenar [Fecha]"
|
||||
|
||||
#
|
||||
"Severe skew"
|
||||
"Inclinacion severa"
|
||||
|
||||
#MSG_SORT_ALPHA c=17 r=1
|
||||
"Sort: [alphabet]"
|
||||
"Ordenar:[alfabet]"
|
||||
"Sort [alphabet]"
|
||||
"Ordenar [alfabet]"
|
||||
|
||||
#MSG_SORTING c=20 r=1
|
||||
"Sorting files"
|
||||
|
|
@ -1126,11 +1014,11 @@
|
|||
"Sound [silent]"
|
||||
"Sonido[silencios]"
|
||||
|
||||
#MSG_SPEED c=0 r=0
|
||||
#MSG_SPEED
|
||||
"Speed"
|
||||
"Velocidad"
|
||||
|
||||
#MSG_SELFTEST_FAN_YES c=19 r=0
|
||||
#MSG_SELFTEST_FAN_YES c=19
|
||||
"Spinning"
|
||||
"Ventilador girando"
|
||||
|
||||
|
|
@ -1138,23 +1026,23 @@
|
|||
"Stable ambient temperature 21-26C is needed a rigid stand is required."
|
||||
"Se necesita una temperatura ambiente ente 21 y 26C y un soporte rigido."
|
||||
|
||||
#MSG_STATISTICS c=0 r=0
|
||||
#MSG_STATISTICS
|
||||
"Statistics "
|
||||
"Estadisticas "
|
||||
|
||||
#MSG_STOP_PRINT c=0 r=0
|
||||
#MSG_STOP_PRINT
|
||||
"Stop print"
|
||||
"Detener impresion"
|
||||
|
||||
#MSG_STOPPED c=0 r=0
|
||||
#MSG_STOPPED
|
||||
"STOPPED. "
|
||||
"PARADA"
|
||||
|
||||
#MSG_SUPPORT c=0 r=0
|
||||
#MSG_SUPPORT
|
||||
"Support"
|
||||
"Soporte"
|
||||
|
||||
#MSG_SELFTEST_SWAPPED c=0 r=0
|
||||
#MSG_SELFTEST_SWAPPED
|
||||
"Swapped"
|
||||
"Intercambiado"
|
||||
|
||||
|
|
@ -1182,7 +1070,7 @@
|
|||
"Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
|
||||
"Calibracion temperatura terminada. Haz clic para continuar."
|
||||
|
||||
#MSG_TEMPERATURE c=0 r=0
|
||||
#MSG_TEMPERATURE
|
||||
"Temperature"
|
||||
"Temperatura"
|
||||
|
||||
|
|
@ -1202,7 +1090,7 @@
|
|||
"Total print time"
|
||||
"Tiempo total :"
|
||||
|
||||
#MSG_TUNE c=0 r=0
|
||||
#MSG_TUNE
|
||||
"Tune"
|
||||
"Ajustar"
|
||||
|
||||
|
|
@ -1210,10 +1098,6 @@
|
|||
"Unload"
|
||||
"Descargar"
|
||||
|
||||
#
|
||||
"Unload all"
|
||||
"Soltar todos fil."
|
||||
|
||||
#
|
||||
"Total failures"
|
||||
"Fallos totales"
|
||||
|
|
@ -1226,7 +1110,7 @@
|
|||
"to unload filament"
|
||||
"para descargar el filamento"
|
||||
|
||||
#MSG_UNLOAD_FILAMENT c=17 r=0
|
||||
#MSG_UNLOAD_FILAMENT c=17
|
||||
"Unload filament"
|
||||
"Soltar filamento"
|
||||
|
||||
|
|
@ -1250,7 +1134,7 @@
|
|||
"unknown"
|
||||
"desconocido"
|
||||
|
||||
#MSG_USERWAIT c=0 r=0
|
||||
#MSG_USERWAIT
|
||||
"Wait for user..."
|
||||
"Esperando ordenes"
|
||||
|
||||
|
|
@ -1282,7 +1166,7 @@
|
|||
"Was filament unload successful?"
|
||||
"?Se cargocon exito el filamento?"
|
||||
|
||||
#MSG_SELFTEST_WIRINGERROR c=0 r=0
|
||||
#MSG_SELFTEST_WIRINGERROR
|
||||
"Wiring error"
|
||||
"Error de conexion"
|
||||
|
||||
|
|
@ -1298,7 +1182,7 @@
|
|||
"XYZ calibration failed. Please consult the manual."
|
||||
"Calibracion XYZ fallada. Consulta el manual por favor."
|
||||
|
||||
#MSG_YES c=0 r=0
|
||||
#MSG_YES
|
||||
"Yes"
|
||||
"Si"
|
||||
|
||||
|
|
@ -1315,8 +1199,8 @@
|
|||
"Calibracion XYZ correcta. Los ejes X / Y estan ligeramente inclinados. Buen trabajo!"
|
||||
|
||||
#
|
||||
"X-correct"
|
||||
"X-correcion"
|
||||
"X-correct:"
|
||||
"X-correcion:"
|
||||
|
||||
#MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
|
||||
"XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
|
||||
|
|
@ -1330,18 +1214,10 @@
|
|||
"XYZ calibration compromised. Right front calibration point not reachable."
|
||||
"Calibrazion XYZ comprometida. Punto frontal derecho no alcanzable."
|
||||
|
||||
#MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8
|
||||
"XYZ calibration compromised. Left front calibration point not reachable."
|
||||
"Calibrazion XYZ comprometida. Punto frontal izquierdo no alcanzable."
|
||||
|
||||
#MSG_LOAD_ALL c=17 r=0
|
||||
#MSG_LOAD_ALL c=17
|
||||
"Load all"
|
||||
"Intr. todos fil."
|
||||
|
||||
#MSG_LOAD_FILAMENT_1 c=17 r=0
|
||||
"Load filament 1"
|
||||
"Introducir fil. 1"
|
||||
|
||||
#
|
||||
"XYZ calibration failed. Bed calibration point was not found."
|
||||
"Calibracion XYZ fallada. Puntos de calibracion en la base no encontrados."
|
||||
|
|
@ -1350,38 +1226,18 @@
|
|||
"XYZ calibration failed. Front calibration points not reachable."
|
||||
"Calibracion XYZ fallada. Puntos frontales no alcanzables."
|
||||
|
||||
#
|
||||
"XYZ calibration failed. Left front calibration point not reachable."
|
||||
"Calibracion XYZ fallada. Punto frontal izquierdo no alcanzable."
|
||||
|
||||
#MSG_LOAD_FILAMENT_2 c=17 r=0
|
||||
"Load filament 2"
|
||||
"Introducir fil. 2"
|
||||
|
||||
#
|
||||
"XYZ calibration failed. Right front calibration point not reachable."
|
||||
"Calibracion XYZ fallad. Punto frontal derecho no alcanzable."
|
||||
|
||||
#MSG_LOAD_FILAMENT_3 c=17 r=0
|
||||
"Load filament 3"
|
||||
"Introducir fil. 3"
|
||||
|
||||
#
|
||||
"Y distance from min"
|
||||
"Distancia en Y desde el min"
|
||||
|
||||
#
|
||||
"Y-correct"
|
||||
"Y-correcion"
|
||||
"Y-correct:"
|
||||
"Y-correcion:"
|
||||
|
||||
#MSG_LOAD_FILAMENT_4 c=17 r=0
|
||||
"Load filament 4"
|
||||
"Introducir fil. 4"
|
||||
|
||||
#MSG_LOAD_FILAMENT_5 c=17 r=0
|
||||
"Load filament 5"
|
||||
"Cargar filamento 5"
|
||||
|
||||
#MSG_OFF c=0 r=0
|
||||
#MSG_OFF
|
||||
" [off]"
|
||||
"\x00"
|
||||
|
|
|
|||
|
|
@ -1,32 +1,32 @@
|
|||
#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14 r=0
|
||||
#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
|
||||
" of 4"
|
||||
"de 4"
|
||||
|
||||
#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14 r=0
|
||||
#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
|
||||
" of 9"
|
||||
"de 9"
|
||||
|
||||
#MSG_MEASURED_OFFSET c=0 r=0
|
||||
#MSG_MEASURED_OFFSET
|
||||
"[0;0] point offset"
|
||||
"Offset point [0;0]"
|
||||
|
||||
#MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
|
||||
"\x1b[2JCrash detection can\x1b[1;0Hbe turned on only in\x1b[2;0HNormal mode"
|
||||
"\x1b[2JLa detection de crash peut etre\x1b[1;0Hactive seulement\x1b[2;0Hen mode Normal"
|
||||
"Crash detection can\rbe turned on only in\rNormal mode"
|
||||
"La detection de crash peut etre\ractive seulement\ren mode Normal"
|
||||
|
||||
#MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
|
||||
"\x1b[2JWARNING:\x1b[1;0HCrash detection\x1b[2;0Hdisabled in\x1b[3;0HStealth mode"
|
||||
"\x1b[2JATTENTION :\x1b[1;0HDetection de crash\x1b[2;0H desactivee en\x1b[3;0Hmode Furtif"
|
||||
"WARNING:\rCrash detection\rdisabled in\rStealth mode"
|
||||
"ATTENTION :\rDetection de crash\r desactivee en\rmode Furtif"
|
||||
|
||||
#
|
||||
">Cancel"
|
||||
">Annuler"
|
||||
|
||||
#MSG_BABYSTEPPING_Z c=20 r=0
|
||||
"Adjusting Z"
|
||||
"Ajustement de Z"
|
||||
#MSG_BABYSTEPPING_Z c=15
|
||||
"Adjusting Z:"
|
||||
"Ajust. de Z:"
|
||||
|
||||
#MSG_SELFTEST_CHECK_ALLCORRECT c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_ALLCORRECT c=20
|
||||
"All correct "
|
||||
"Tout est correct"
|
||||
|
||||
|
|
@ -38,7 +38,7 @@
|
|||
"Ambient"
|
||||
"Ambiant"
|
||||
|
||||
#MSG_PRESS c=20 r=0
|
||||
#MSG_PRESS c=20
|
||||
"and press the knob"
|
||||
"et pressez le bouton"
|
||||
|
||||
|
|
@ -54,15 +54,15 @@
|
|||
"SpoolJoin [N/A]"
|
||||
"\x00"
|
||||
|
||||
# MSG_AUTO_DEPLETE_OFF c=17 r=1
|
||||
#MSG_AUTO_DEPLETE_OFF c=17 r=1
|
||||
"SpoolJoin [off]"
|
||||
"\x00"
|
||||
|
||||
#MSG_AUTO_HOME c=0 r=0
|
||||
#MSG_AUTO_HOME
|
||||
"Auto home"
|
||||
"Mise a 0 des axes"
|
||||
|
||||
#MSG_AUTOLOAD_FILAMENT c=17 r=0
|
||||
#MSG_AUTOLOAD_FILAMENT c=17
|
||||
"AutoLoad filament"
|
||||
"AutoCharge du filament"
|
||||
|
||||
|
|
@ -74,27 +74,27 @@
|
|||
"Autoloading filament is active, just press the knob and insert filament..."
|
||||
"Chargement auto du filament actif, appuyez sur le btn et inserez le fil."
|
||||
|
||||
#MSG_SELFTEST_AXIS_LENGTH c=0 r=0
|
||||
#MSG_SELFTEST_AXIS_LENGTH
|
||||
"Axis length"
|
||||
"Longueur de l'axe"
|
||||
|
||||
#MSG_SELFTEST_AXIS c=0 r=0
|
||||
#MSG_SELFTEST_AXIS
|
||||
"Axis"
|
||||
"Axe"
|
||||
|
||||
#MSG_SELFTEST_BEDHEATER c=0 r=0
|
||||
#MSG_SELFTEST_BEDHEATER
|
||||
"Bed / Heater"
|
||||
"Lit / Chauffage"
|
||||
|
||||
#MSG_BED_DONE c=0 r=0
|
||||
#MSG_BED_DONE
|
||||
"Bed done"
|
||||
"Plateau termine"
|
||||
|
||||
#MSG_BED_HEATING c=0 r=0
|
||||
#MSG_BED_HEATING
|
||||
"Bed Heating"
|
||||
"Chauffe du lit"
|
||||
|
||||
#MSG_BED_CORRECTION_MENU c=0 r=0
|
||||
#MSG_BED_CORRECTION_MENU
|
||||
"Bed level correct"
|
||||
"Corr. niveau plateau"
|
||||
|
||||
|
|
@ -102,15 +102,7 @@
|
|||
"Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
|
||||
"Echec bed leveling. Capt. non declenche. Debris sur buse ? En attente d'un reset."
|
||||
|
||||
#MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED c=20 r=4
|
||||
"Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset."
|
||||
"Echec du nivellement Capteur deconnecte ou cable casse. En attente d'un reset."
|
||||
|
||||
#MSG_BED_LEVELING_FAILED_POINT_HIGH c=20 r=4
|
||||
"Bed leveling failed. Sensor triggered too high. Waiting for reset."
|
||||
"Echec bed leveling. Capt. declenche trop trop haut. En attente d'un reset."
|
||||
|
||||
#MSG_BED c=0 r=0
|
||||
#MSG_BED
|
||||
"Bed"
|
||||
"Lit"
|
||||
|
||||
|
|
@ -126,11 +118,11 @@
|
|||
"Calibrating home"
|
||||
"Calib. mise a 0"
|
||||
|
||||
#MSG_CALIBRATE_BED c=0 r=0
|
||||
#MSG_CALIBRATE_BED
|
||||
"Calibrate XYZ"
|
||||
"Calibrer XYZ"
|
||||
|
||||
#MSG_HOMEYZ c=0 r=0
|
||||
#MSG_HOMEYZ
|
||||
"Calibrate Z"
|
||||
"Calibrer Z"
|
||||
|
||||
|
|
@ -150,11 +142,11 @@
|
|||
"Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
|
||||
"Calibration de Z. Tournez le bouton pour monter le chariot de l'axe Z jusqu'aux butees. Cliquez une fois fait."
|
||||
|
||||
#MSG_HOMEYZ_DONE c=0 r=0
|
||||
#MSG_HOMEYZ_DONE
|
||||
"Calibration done"
|
||||
"Calibration terminee"
|
||||
|
||||
#MSG_MENU_CALIBRATION c=0 r=0
|
||||
#MSG_MENU_CALIBRATION
|
||||
"Calibration"
|
||||
"\x00"
|
||||
|
||||
|
|
@ -162,19 +154,15 @@
|
|||
"Cancel"
|
||||
"Annuler"
|
||||
|
||||
#MSG_SD_INSERTED c=0 r=0
|
||||
"Card inserted"
|
||||
"Carte inseree"
|
||||
|
||||
#MSG_SD_REMOVED c=0 r=0
|
||||
#MSG_SD_REMOVED
|
||||
"Card removed"
|
||||
"Carte retiree"
|
||||
|
||||
#MSG_NOT_COLOR c=0 r=0
|
||||
#MSG_NOT_COLOR
|
||||
"Color not correct"
|
||||
"Couleur incorrecte"
|
||||
|
||||
#MSG_COOLDOWN c=0 r=0
|
||||
#MSG_COOLDOWN
|
||||
"Cooldown"
|
||||
"Refroidissement"
|
||||
|
||||
|
|
@ -182,15 +170,15 @@
|
|||
"Copy selected language?"
|
||||
"Copier la langue selectionne ?"
|
||||
|
||||
#MSG_CRASHDETECT_ON c=0 r=0
|
||||
#MSG_CRASHDETECT_ON
|
||||
"Crash det. [on]"
|
||||
"Detect. crash[on]"
|
||||
|
||||
#MSG_CRASHDETECT_NA c=0 r=0
|
||||
#MSG_CRASHDETECT_NA
|
||||
"Crash det. [N/A]"
|
||||
"Detect. crash [N/A]"
|
||||
|
||||
#MSG_CRASHDETECT_OFF c=0 r=0
|
||||
#MSG_CRASHDETECT_OFF
|
||||
"Crash det. [off]"
|
||||
"Detect. crash[off]"
|
||||
|
||||
|
|
@ -214,7 +202,7 @@
|
|||
"Date:"
|
||||
"Date :"
|
||||
|
||||
#MSG_DISABLE_STEPPERS c=0 r=0
|
||||
#MSG_DISABLE_STEPPERS
|
||||
"Disable steppers"
|
||||
"Desactiver moteurs"
|
||||
|
||||
|
|
@ -226,34 +214,14 @@
|
|||
"Do you want to repeat last step to readjust distance between nozzle and heatbed?"
|
||||
"Voulez-vous repeter la derniere etape pour reajuster la distance entre la buse et le plateau chauffant ?"
|
||||
|
||||
#MSG_EXTRUDER_CORRECTION c=9 r=0
|
||||
"E-correct"
|
||||
"Correct-E"
|
||||
#MSG_EXTRUDER_CORRECTION c=10
|
||||
"E-correct:"
|
||||
"Correct-E:"
|
||||
|
||||
#MSG_EJECT_FILAMENT c=17 r=1
|
||||
"Eject filament"
|
||||
"Ejecter le fil."
|
||||
|
||||
#MSG_EJECT_FILAMENT1 c=17 r=1
|
||||
"Eject filament 1"
|
||||
"Ejecter fil. 1"
|
||||
|
||||
#MSG_EJECT_FILAMENT2 c=17 r=1
|
||||
"Eject filament 2"
|
||||
"Ejecter fil. 2"
|
||||
|
||||
#MSG_EJECT_FILAMENT3 c=17 r=1
|
||||
"Eject filament 3"
|
||||
"Ejecter fil. 3"
|
||||
|
||||
#MSG_EJECT_FILAMENT4 c=17 r=1
|
||||
"Eject filament 4"
|
||||
"Ejecter fil. 4"
|
||||
|
||||
#MSG_EJECT_FILAMENT5 c=17 r=1
|
||||
"Eject filament 5"
|
||||
"Ejecter fil. 5"
|
||||
|
||||
#
|
||||
"Eject"
|
||||
"Ejecter"
|
||||
|
|
@ -266,11 +234,11 @@
|
|||
"Endstop not hit"
|
||||
"Butee non atteinte"
|
||||
|
||||
#MSG_SELFTEST_ENDSTOP c=0 r=0
|
||||
#MSG_SELFTEST_ENDSTOP
|
||||
"Endstop"
|
||||
"Butee"
|
||||
|
||||
#MSG_SELFTEST_ENDSTOPS c=0 r=0
|
||||
#MSG_SELFTEST_ENDSTOPS
|
||||
"Endstops"
|
||||
"Butees"
|
||||
|
||||
|
|
@ -282,31 +250,11 @@
|
|||
"ERROR: Filament sensor is not responding, please check connection."
|
||||
"ERREUR : Le capteur de filament ne repond pas, verifiez le branchement."
|
||||
|
||||
#MSG_ERROR c=0 r=0
|
||||
#MSG_ERROR
|
||||
"ERROR:"
|
||||
"ERREUR :"
|
||||
|
||||
#
|
||||
"External SPI flash W25X20CL not responding."
|
||||
"La Flash SPI externe W25X20CL ne repond pas."
|
||||
|
||||
#
|
||||
"Extruder 1"
|
||||
"Extrudeur 1"
|
||||
|
||||
#
|
||||
"Extruder 2"
|
||||
"Extrudeur 2"
|
||||
|
||||
#
|
||||
"Extruder 3"
|
||||
"Extrudeur 3"
|
||||
|
||||
#
|
||||
"Extruder 4"
|
||||
"Extrudeur 4"
|
||||
|
||||
#MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18 r=0
|
||||
#MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
|
||||
"Extruder fan:"
|
||||
"Ventilo extrudeur:"
|
||||
|
||||
|
|
@ -314,7 +262,7 @@
|
|||
"Extruder info"
|
||||
"Infos extrudeur"
|
||||
|
||||
#MSG_MOVE_E c=0 r=0
|
||||
#MSG_MOVE_E
|
||||
"Extruder"
|
||||
"Extrudeur"
|
||||
|
||||
|
|
@ -338,11 +286,11 @@
|
|||
"Fail stats"
|
||||
"Statist. d'echec"
|
||||
|
||||
#MSG_FAN_SPEED c=14 r=0
|
||||
#MSG_FAN_SPEED c=14
|
||||
"Fan speed"
|
||||
"Vitesse ventil"
|
||||
|
||||
#MSG_SELFTEST_FAN c=20 r=0
|
||||
#MSG_SELFTEST_FAN c=20
|
||||
"Fan test"
|
||||
"Test ventilateur"
|
||||
|
||||
|
|
@ -354,19 +302,15 @@
|
|||
"Fans check [off]"
|
||||
"Verif venti [off]"
|
||||
|
||||
#MSG_FSENSOR_ON c=0 r=0
|
||||
#MSG_FSENSOR_ON
|
||||
"Fil. sensor [on]"
|
||||
"Capteur Fil. [on]"
|
||||
|
||||
#MSG_RESPONSE_POOR c=20 r=2
|
||||
"Fil. sensor response is poor, disable it?"
|
||||
"Capteur de fil. non precis, desactiver ?"
|
||||
|
||||
#MSG_FSENSOR_NA c=0 r=0
|
||||
#MSG_FSENSOR_NA
|
||||
"Fil. sensor [N/A]"
|
||||
"Capteur Fil. [N/A]"
|
||||
|
||||
#MSG_FSENSOR_OFF c=0 r=0
|
||||
#MSG_FSENSOR_OFF
|
||||
"Fil. sensor [off]"
|
||||
"Capteur Fil.[off]"
|
||||
|
||||
|
|
@ -378,18 +322,14 @@
|
|||
"Filament extruding & with correct color?"
|
||||
"Filament extrude et avec bonne couleur ?"
|
||||
|
||||
#MSG_NOT_LOADED c=19 r=0
|
||||
#MSG_NOT_LOADED c=19
|
||||
"Filament not loaded"
|
||||
"Filament non charge"
|
||||
|
||||
#MSG_FILAMENT_SENSOR c=20 r=0
|
||||
#MSG_FILAMENT_SENSOR c=20
|
||||
"Filament sensor"
|
||||
"Capteur de filament"
|
||||
|
||||
#MSG_SELFTEST_FILAMENT_SENSOR c=18 r=0
|
||||
"Filament sensor:"
|
||||
"Capteur filament :"
|
||||
|
||||
#MSG_FILAMENT_USED c=19 r=1
|
||||
"Filament used"
|
||||
"Filament utilise"
|
||||
|
|
@ -418,15 +358,15 @@
|
|||
"Fix the issue and then press button on MMU unit."
|
||||
"Corrigez le probleme et appuyez sur le bouton de l'unite MMU."
|
||||
|
||||
#MSG_FLOW c=0 r=0
|
||||
#MSG_FLOW
|
||||
"Flow"
|
||||
"Flux"
|
||||
|
||||
#MSG_PRUSA3D_FORUM c=0 r=0
|
||||
#MSG_PRUSA3D_FORUM
|
||||
"forum.prusa3d.com"
|
||||
"\x00"
|
||||
|
||||
#MSG_SELFTEST_COOLING_FAN c=20 r=0
|
||||
#MSG_SELFTEST_COOLING_FAN c=20
|
||||
"Front print fan?"
|
||||
"Ventilo impr avant ?"
|
||||
|
||||
|
|
@ -434,23 +374,23 @@
|
|||
"Front side[um]"
|
||||
"Avant [um]"
|
||||
|
||||
#MSG_SELFTEST_FANS c=0 r=0
|
||||
#MSG_SELFTEST_FANS
|
||||
"Front/left fans"
|
||||
"Ventilos avt/gauche"
|
||||
|
||||
#MSG_SELFTEST_HEATERTHERMISTOR c=0 r=0
|
||||
#MSG_SELFTEST_HEATERTHERMISTOR
|
||||
"Heater/Thermistor"
|
||||
"Chauffage/Thermistor"
|
||||
|
||||
#MSG_BED_HEATING_SAFETY_DISABLED c=0 r=0
|
||||
#MSG_BED_HEATING_SAFETY_DISABLED
|
||||
"Heating disabled by safety timer."
|
||||
"Chauffe desactivee par le compteur de securite."
|
||||
|
||||
#MSG_HEATING_COMPLETE c=20 r=0
|
||||
#MSG_HEATING_COMPLETE c=20
|
||||
"Heating done."
|
||||
"Chauffe terminee."
|
||||
|
||||
#MSG_HEATING c=0 r=0
|
||||
#MSG_HEATING
|
||||
"Heating"
|
||||
"Chauffe"
|
||||
|
||||
|
|
@ -458,51 +398,47 @@
|
|||
"Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
|
||||
"Bonjour, je suis votre imprimante Original Prusa i3. Voulez-vous que je vous guide a travers le processus d'installation ?"
|
||||
|
||||
#MSG_PRUSA3D_HOWTO c=0 r=0
|
||||
#MSG_PRUSA3D_HOWTO
|
||||
"howto.prusa3d.com"
|
||||
"\x00"
|
||||
|
||||
#
|
||||
"Change extruder"
|
||||
"Changer extrudeur"
|
||||
|
||||
#MSG_FILAMENTCHANGE c=0 r=0
|
||||
#MSG_FILAMENTCHANGE
|
||||
"Change filament"
|
||||
"Changer filament"
|
||||
|
||||
#MSG_CHANGE_SUCCESS c=0 r=0
|
||||
#MSG_CHANGE_SUCCESS
|
||||
"Change success!"
|
||||
"Changement reussi!"
|
||||
|
||||
#MSG_CORRECTLY c=20 r=0
|
||||
#MSG_CORRECTLY c=20
|
||||
"Changed correctly?"
|
||||
"Change correctement?"
|
||||
|
||||
#MSG_SELFTEST_CHECK_BED c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_BED c=20
|
||||
"Checking bed "
|
||||
"Verification du lit"
|
||||
|
||||
#MSG_SELFTEST_CHECK_ENDSTOPS c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_ENDSTOPS c=20
|
||||
"Checking endstops"
|
||||
"Verifications butees"
|
||||
|
||||
#MSG_SELFTEST_CHECK_HOTEND c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_HOTEND c=20
|
||||
"Checking hotend "
|
||||
"Verif. tete impr."
|
||||
|
||||
#MSG_SELFTEST_CHECK_FSENSOR c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_FSENSOR c=20
|
||||
"Checking sensors "
|
||||
"Verif. des capteurs"
|
||||
|
||||
#MSG_SELFTEST_CHECK_X c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_X c=20
|
||||
"Checking X axis "
|
||||
"Verification axe X"
|
||||
|
||||
#MSG_SELFTEST_CHECK_Y c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_Y c=20
|
||||
"Checking Y axis "
|
||||
"Verification axe Y"
|
||||
|
||||
#MSG_SELFTEST_CHECK_Z c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_Z c=20
|
||||
"Checking Z axis "
|
||||
"Verification axe Z"
|
||||
|
||||
|
|
@ -530,35 +466,15 @@
|
|||
"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."
|
||||
"Je vais commencer a imprimer une ligne et vous baisserez au fur et a mesure la buse en tournant le bouton jusqu'a atteindre la hauteur optimale. Regardez les photos dans notre manuel au chapitre Calibration"
|
||||
|
||||
#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=60 r=0
|
||||
"Improving bed calibration point"
|
||||
"Amelioration du point de calibration du lit"
|
||||
|
||||
#MSG_WATCH c=0 r=0
|
||||
#MSG_WATCH
|
||||
"Info screen"
|
||||
"Ecran d'info"
|
||||
|
||||
#MSG_FILAMENT_LOADING_T0 c=20 r=4
|
||||
"Insert filament into extruder 1. Click when done."
|
||||
"Inserez le filament dans l'extrudeur 1. Cliquez une fois pret."
|
||||
|
||||
#MSG_FILAMENT_LOADING_T1 c=20 r=4
|
||||
"Insert filament into extruder 2. Click when done."
|
||||
"Inserez le filament dans l'extrudeur 2. Cliquez une fois pret."
|
||||
|
||||
#MSG_FILAMENT_LOADING_T2 c=20 r=4
|
||||
"Insert filament into extruder 3. Click when done."
|
||||
"Inserez le filament dans l'extrudeur 3. Cliquez une fois pret."
|
||||
|
||||
#MSG_FILAMENT_LOADING_T3 c=20 r=4
|
||||
"Insert filament into extruder 4. Click when done."
|
||||
"Inserez le filament dans l'extrudeur 4. Cliquez une fois pret."
|
||||
|
||||
#
|
||||
"Is filament 1 loaded?"
|
||||
"Le filament 1 est-il charge ?"
|
||||
|
||||
#MSG_INSERT_FILAMENT c=20 r=0
|
||||
#MSG_INSERT_FILAMENT c=20
|
||||
"Insert filament"
|
||||
"Inserez le filament"
|
||||
|
||||
|
|
@ -578,10 +494,6 @@
|
|||
"Is steel sheet on heatbed?"
|
||||
"Feuille d'acier sur plateau chauffant ?"
|
||||
|
||||
#MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION c=20 r=0
|
||||
"Iteration "
|
||||
"\x00"
|
||||
|
||||
#
|
||||
"Last print failures"
|
||||
"Echecs derniere impr"
|
||||
|
|
@ -590,7 +502,7 @@
|
|||
"Last print"
|
||||
"Derniere impression"
|
||||
|
||||
#MSG_SELFTEST_EXTRUDER_FAN c=20 r=0
|
||||
#MSG_SELFTEST_EXTRUDER_FAN c=20
|
||||
"Left hotend fan?"
|
||||
"Ventilo tete gauche?"
|
||||
|
||||
|
|
@ -606,19 +518,19 @@
|
|||
"Lin. correction"
|
||||
"Correction lin."
|
||||
|
||||
#MSG_BABYSTEP_Z c=0 r=0
|
||||
#MSG_BABYSTEP_Z
|
||||
"Live adjust Z"
|
||||
"Ajuster Z en direct"
|
||||
|
||||
#MSG_LOAD_FILAMENT c=17 r=0
|
||||
#MSG_LOAD_FILAMENT c=17
|
||||
"Load filament"
|
||||
"Charger filament"
|
||||
|
||||
#MSG_LOADING_COLOR c=0 r=0
|
||||
#MSG_LOADING_COLOR
|
||||
"Loading color"
|
||||
"Chargement couleur"
|
||||
|
||||
#MSG_LOADING_FILAMENT c=20 r=0
|
||||
#MSG_LOADING_FILAMENT c=20
|
||||
"Loading filament"
|
||||
"Chargement filament"
|
||||
|
||||
|
|
@ -634,15 +546,15 @@
|
|||
"M117 First layer cal."
|
||||
"M117 Cal. 1ere couche"
|
||||
|
||||
#MSG_MAIN c=0 r=0
|
||||
#MSG_MAIN
|
||||
"Main"
|
||||
"Principal"
|
||||
|
||||
#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60 r=0
|
||||
#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
|
||||
"Measuring reference height of calibration point"
|
||||
"Mesure de la hauteur de reference du point de calibration"
|
||||
|
||||
#MSG_MESH_BED_LEVELING c=0 r=0
|
||||
#MSG_MESH_BED_LEVELING
|
||||
"Mesh Bed Leveling"
|
||||
"\x00"
|
||||
|
||||
|
|
@ -674,11 +586,11 @@
|
|||
"MMU OK. Resuming..."
|
||||
"MMU OK. Reprise ..."
|
||||
|
||||
#MSG_STEALTH_MODE_OFF c=0 r=0
|
||||
#MSG_STEALTH_MODE_OFF
|
||||
"Mode [Normal]"
|
||||
"\x00"
|
||||
|
||||
#MSG_SILENT_MODE_ON c=0 r=0
|
||||
#MSG_SILENT_MODE_ON
|
||||
"Mode [silent]"
|
||||
"Mode [silencieux]"
|
||||
|
||||
|
|
@ -690,15 +602,15 @@
|
|||
"MMU power fails"
|
||||
"Echecs alim. MMU"
|
||||
|
||||
#MSG_STEALTH_MODE_ON c=0 r=0
|
||||
#MSG_STEALTH_MODE_ON
|
||||
"Mode [Stealth]"
|
||||
"Mode [Furtif]"
|
||||
|
||||
#MSG_AUTO_MODE_ON c=0 r=0
|
||||
#MSG_AUTO_MODE_ON
|
||||
"Mode [auto power]"
|
||||
"Mode [puiss.auto]"
|
||||
|
||||
#MSG_SILENT_MODE_OFF c=0 r=0
|
||||
#MSG_SILENT_MODE_OFF
|
||||
"Mode [high power]"
|
||||
"Mode [haute puiss]"
|
||||
|
||||
|
|
@ -706,31 +618,31 @@
|
|||
"MMU2 connected"
|
||||
"MMU2 connecte"
|
||||
|
||||
#MSG_SELFTEST_MOTOR c=0 r=0
|
||||
#MSG_SELFTEST_MOTOR
|
||||
"Motor"
|
||||
"Moteur"
|
||||
|
||||
#MSG_MOVE_AXIS c=0 r=0
|
||||
#MSG_MOVE_AXIS
|
||||
"Move axis"
|
||||
"Deplacer l'axe"
|
||||
|
||||
#MSG_MOVE_X c=0 r=0
|
||||
#MSG_MOVE_X
|
||||
"Move X"
|
||||
"Deplacer X"
|
||||
|
||||
#MSG_MOVE_Y c=0 r=0
|
||||
#MSG_MOVE_Y
|
||||
"Move Y"
|
||||
"Deplacer Y"
|
||||
|
||||
#MSG_MOVE_Z c=0 r=0
|
||||
#MSG_MOVE_Z
|
||||
"Move Z"
|
||||
"Deplacer Z"
|
||||
|
||||
#MSG_NO_MOVE c=0 r=0
|
||||
#MSG_NO_MOVE
|
||||
"No move."
|
||||
"Pas de mouvement."
|
||||
|
||||
#MSG_NO_CARD c=0 r=0
|
||||
#MSG_NO_CARD
|
||||
"No SD card"
|
||||
"Pas de carte SD"
|
||||
|
||||
|
|
@ -738,11 +650,11 @@
|
|||
"N/A"
|
||||
"\x00"
|
||||
|
||||
#MSG_NO c=0 r=0
|
||||
#MSG_NO
|
||||
"No"
|
||||
"Non"
|
||||
|
||||
#MSG_SELFTEST_NOTCONNECTED c=0 r=0
|
||||
#MSG_SELFTEST_NOTCONNECTED
|
||||
"Not connected"
|
||||
"Non connecte"
|
||||
|
||||
|
|
@ -750,11 +662,7 @@
|
|||
"New firmware version available:"
|
||||
"Nouvelle version de firmware disponible:"
|
||||
|
||||
#
|
||||
"No "
|
||||
"Non"
|
||||
|
||||
#MSG_SELFTEST_FAN_NO c=19 r=0
|
||||
#MSG_SELFTEST_FAN_NO c=19
|
||||
"Not spinning"
|
||||
"Ne tourne pas"
|
||||
|
||||
|
|
@ -766,7 +674,7 @@
|
|||
"Now I will preheat nozzle for PLA."
|
||||
"Maintenant je vais prechauffer la buse pour du PLA."
|
||||
|
||||
#MSG_NOZZLE c=0 r=0
|
||||
#MSG_NOZZLE
|
||||
"Nozzle"
|
||||
"Buse"
|
||||
|
||||
|
|
@ -782,7 +690,7 @@
|
|||
"Nozzle FAN"
|
||||
"Ventilateur buse"
|
||||
|
||||
#MSG_PAUSE_PRINT c=0 r=0
|
||||
#MSG_PAUSE_PRINT
|
||||
"Pause print"
|
||||
"Pause de l'impr."
|
||||
|
||||
|
|
@ -814,7 +722,7 @@
|
|||
"Please clean the nozzle for calibration. Click when done."
|
||||
"Nettoyez la buse pour la calibration. Cliquez une fois fait."
|
||||
|
||||
#MSG_SELFTEST_PLEASECHECK c=0 r=0
|
||||
#MSG_SELFTEST_PLEASECHECK
|
||||
"Please check :"
|
||||
"Verifiez :"
|
||||
|
||||
|
|
@ -866,7 +774,7 @@
|
|||
"Please update firmware in your MMU2. Waiting for reset."
|
||||
"Veuillez mettre a jour le firmware de votre MMU2. En attente d'un reset."
|
||||
|
||||
#MSG_PLEASE_WAIT c=20 r=0
|
||||
#MSG_PLEASE_WAIT c=20
|
||||
"Please wait"
|
||||
"Merci de patienter"
|
||||
|
||||
|
|
@ -874,11 +782,11 @@
|
|||
"Please remove shipping helpers first."
|
||||
"Veuillez retirer d'abord les protections d'envoi."
|
||||
|
||||
#MSG_PREHEAT_NOZZLE c=20 r=0
|
||||
#MSG_PREHEAT_NOZZLE c=20
|
||||
"Preheat the nozzle!"
|
||||
"Prechauffez la buse!"
|
||||
|
||||
#MSG_PREHEAT c=0 r=0
|
||||
#MSG_PREHEAT
|
||||
"Preheat"
|
||||
"Prechauffage"
|
||||
|
||||
|
|
@ -898,7 +806,7 @@
|
|||
"Power failures"
|
||||
"Coupures de courant"
|
||||
|
||||
#MSG_PRINT_ABORTED c=20 r=0
|
||||
#MSG_PRINT_ABORTED c=20
|
||||
"Print aborted"
|
||||
"Impression annulee"
|
||||
|
||||
|
|
@ -910,11 +818,11 @@
|
|||
"Preheating to unload"
|
||||
"Chauffe pr decharger"
|
||||
|
||||
#MSG_SELFTEST_PRINT_FAN_SPEED c=18 r=0
|
||||
#MSG_SELFTEST_PRINT_FAN_SPEED c=18
|
||||
"Print fan:"
|
||||
"Ventilo impr. :"
|
||||
|
||||
#MSG_CARD_MENU c=0 r=0
|
||||
#MSG_CARD_MENU
|
||||
"Print from SD"
|
||||
"Impr depuis la SD"
|
||||
|
||||
|
|
@ -938,15 +846,7 @@
|
|||
"Print FAN"
|
||||
"Ventilo impression"
|
||||
|
||||
#WELCOME_MSG c=20 r=0
|
||||
"Prusa i3 MK2.5 ready."
|
||||
"Prusa i3 MK2.5 prete."
|
||||
|
||||
#WELCOME_MSG c=20 r=0
|
||||
"Prusa i3 MK3 ready."
|
||||
"Prusa i3 MK3 prete."
|
||||
|
||||
#MSG_PRUSA3D c=0 r=0
|
||||
#MSG_PRUSA3D
|
||||
"prusa3d.com"
|
||||
"\x00"
|
||||
|
||||
|
|
@ -966,19 +866,15 @@
|
|||
"Prusa i3 MK3S OK."
|
||||
"\x00"
|
||||
|
||||
#
|
||||
"Prusa i3 MK2 ready."
|
||||
"Prusa i3 MK2 prete."
|
||||
|
||||
#MSG_CALIBRATE_BED_RESET c=0 r=0
|
||||
#MSG_CALIBRATE_BED_RESET
|
||||
"Reset XYZ calibr."
|
||||
"Reinit. calibr. XYZ"
|
||||
|
||||
#MSG_BED_CORRECTION_RESET c=0 r=0
|
||||
#MSG_BED_CORRECTION_RESET
|
||||
"Reset"
|
||||
"Reinitialiser"
|
||||
|
||||
#MSG_RESUME_PRINT c=0 r=0
|
||||
#MSG_RESUME_PRINT
|
||||
"Resume print"
|
||||
"Reprendre impression"
|
||||
|
||||
|
|
@ -1014,31 +910,31 @@
|
|||
"Right"
|
||||
"Droite"
|
||||
|
||||
#MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60 r=0
|
||||
#MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
|
||||
"Searching bed calibration point"
|
||||
"Recherche du point de calibration du lit"
|
||||
|
||||
#MSG_LANGUAGE_SELECT c=0 r=0
|
||||
#MSG_LANGUAGE_SELECT
|
||||
"Select language"
|
||||
"Choisir langue"
|
||||
|
||||
#MSG_SELFTEST_OK c=0 r=0
|
||||
#MSG_SELFTEST_OK
|
||||
"Self test OK"
|
||||
"Auto-test OK"
|
||||
|
||||
#MSG_SELFTEST_START c=20 r=0
|
||||
#MSG_SELFTEST_START c=20
|
||||
"Self test start "
|
||||
"Debut auto-test"
|
||||
|
||||
#MSG_SELFTEST c=0 r=0
|
||||
#MSG_SELFTEST
|
||||
"Selftest "
|
||||
"Auto-test"
|
||||
|
||||
#MSG_SELFTEST_ERROR c=0 r=0
|
||||
#MSG_SELFTEST_ERROR
|
||||
"Selftest error !"
|
||||
"Erreur auto-test !"
|
||||
|
||||
#MSG_SELFTEST_FAILED c=20 r=0
|
||||
#MSG_SELFTEST_FAILED c=20
|
||||
"Selftest failed "
|
||||
"Echec de l'auto-test"
|
||||
|
||||
|
|
@ -1058,7 +954,7 @@
|
|||
"Set temperature:"
|
||||
"Regler temp. :"
|
||||
|
||||
#MSG_SETTINGS c=0 r=0
|
||||
#MSG_SETTINGS
|
||||
"Settings"
|
||||
"Reglages"
|
||||
|
||||
|
|
@ -1070,33 +966,25 @@
|
|||
"Sensor state"
|
||||
"Etat capteur"
|
||||
|
||||
#
|
||||
"Sensors info"
|
||||
"Infos capteurs"
|
||||
|
||||
#
|
||||
"Show pinda state"
|
||||
"Etat de la PINDA"
|
||||
|
||||
#MSG_FILE_CNT c=20 r=4
|
||||
"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."
|
||||
|
||||
#MSG_SORT_NONE c=17 r=1
|
||||
"Sort: [none]"
|
||||
"Sort [none]"
|
||||
"Tri : [aucun]"
|
||||
|
||||
#MSG_SORT_TIME c=17 r=1
|
||||
"Sort: [time]"
|
||||
"Tri : [heure]"
|
||||
"Sort [time]"
|
||||
"Tri [heure]"
|
||||
|
||||
#
|
||||
"Severe skew"
|
||||
"Deviation severe"
|
||||
|
||||
#MSG_SORT_ALPHA c=17 r=1
|
||||
"Sort: [alphabet]"
|
||||
"Tri : [alphabet]"
|
||||
"Sort [alphabet]"
|
||||
"Tri [alphabet]"
|
||||
|
||||
#MSG_SORTING c=20 r=1
|
||||
"Sorting files"
|
||||
|
|
@ -1126,11 +1014,11 @@
|
|||
"Sound [silent]"
|
||||
"Son [silencieux]"
|
||||
|
||||
#MSG_SPEED c=0 r=0
|
||||
#MSG_SPEED
|
||||
"Speed"
|
||||
"Vitesse"
|
||||
|
||||
#MSG_SELFTEST_FAN_YES c=19 r=0
|
||||
#MSG_SELFTEST_FAN_YES c=19
|
||||
"Spinning"
|
||||
"Tourne"
|
||||
|
||||
|
|
@ -1138,23 +1026,23 @@
|
|||
"Stable ambient temperature 21-26C is needed a rigid stand is required."
|
||||
"Une temperature ambiante stable de 21-26C et un support stable sont requis."
|
||||
|
||||
#MSG_STATISTICS c=0 r=0
|
||||
#MSG_STATISTICS
|
||||
"Statistics "
|
||||
"Statistiques"
|
||||
|
||||
#MSG_STOP_PRINT c=0 r=0
|
||||
#MSG_STOP_PRINT
|
||||
"Stop print"
|
||||
"Arreter impression"
|
||||
|
||||
#MSG_STOPPED c=0 r=0
|
||||
#MSG_STOPPED
|
||||
"STOPPED. "
|
||||
"ARRETE."
|
||||
|
||||
#MSG_SUPPORT c=0 r=0
|
||||
#MSG_SUPPORT
|
||||
"Support"
|
||||
"\x00"
|
||||
|
||||
#MSG_SELFTEST_SWAPPED c=0 r=0
|
||||
#MSG_SELFTEST_SWAPPED
|
||||
"Swapped"
|
||||
"Echange"
|
||||
|
||||
|
|
@ -1182,7 +1070,7 @@
|
|||
"Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
|
||||
"La calibration en temperature est terminee et activee. La calibration en temperature peut etre desactivee dans le menu Reglages-> Cal. Temp."
|
||||
|
||||
#MSG_TEMPERATURE c=0 r=0
|
||||
#MSG_TEMPERATURE
|
||||
"Temperature"
|
||||
"\x00"
|
||||
|
||||
|
|
@ -1202,7 +1090,7 @@
|
|||
"Total print time"
|
||||
"Temps total impr."
|
||||
|
||||
#MSG_TUNE c=0 r=0
|
||||
#MSG_TUNE
|
||||
"Tune"
|
||||
"Regler"
|
||||
|
||||
|
|
@ -1210,10 +1098,6 @@
|
|||
"Unload"
|
||||
"Decharger"
|
||||
|
||||
#
|
||||
"Unload all"
|
||||
"Decharger tout"
|
||||
|
||||
#
|
||||
"Total failures"
|
||||
"Total des echecs"
|
||||
|
|
@ -1226,7 +1110,7 @@
|
|||
"to unload filament"
|
||||
"pour decharger fil."
|
||||
|
||||
#MSG_UNLOAD_FILAMENT c=17 r=0
|
||||
#MSG_UNLOAD_FILAMENT c=17
|
||||
"Unload filament"
|
||||
"Decharger fil."
|
||||
|
||||
|
|
@ -1250,7 +1134,7 @@
|
|||
"unknown"
|
||||
"inconnu"
|
||||
|
||||
#MSG_USERWAIT c=0 r=0
|
||||
#MSG_USERWAIT
|
||||
"Wait for user..."
|
||||
"Attente utilisateur..."
|
||||
|
||||
|
|
@ -1282,7 +1166,7 @@
|
|||
"Was filament unload successful?"
|
||||
"Dechargement du filament reussi ?"
|
||||
|
||||
#MSG_SELFTEST_WIRINGERROR c=0 r=0
|
||||
#MSG_SELFTEST_WIRINGERROR
|
||||
"Wiring error"
|
||||
"Erreur de cablage"
|
||||
|
||||
|
|
@ -1298,7 +1182,7 @@
|
|||
"XYZ calibration failed. Please consult the manual."
|
||||
"Echec calibration XYZ. Consultez le manuel."
|
||||
|
||||
#MSG_YES c=0 r=0
|
||||
#MSG_YES
|
||||
"Yes"
|
||||
"Oui"
|
||||
|
||||
|
|
@ -1315,8 +1199,8 @@
|
|||
"Calibration XYZ OK. Les axes X/Y sont legerement non perpendiculaires. Bon boulot !"
|
||||
|
||||
#
|
||||
"X-correct"
|
||||
"Correction-X"
|
||||
"X-correct:"
|
||||
"Correct-X:"
|
||||
|
||||
#MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
|
||||
"XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
|
||||
|
|
@ -1330,18 +1214,10 @@
|
|||
"XYZ calibration compromised. Right front calibration point not reachable."
|
||||
"Calibration XYZ compromise. Le point de calibration avant droit n'est pas atteignable."
|
||||
|
||||
#MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8
|
||||
"XYZ calibration compromised. Left front calibration point not reachable."
|
||||
"Calibration XYZ compromise. Le point de calibration avant gauche n'est pas atteignable."
|
||||
|
||||
#MSG_LOAD_ALL c=17 r=0
|
||||
#MSG_LOAD_ALL c=17
|
||||
"Load all"
|
||||
"Tout charger"
|
||||
|
||||
#MSG_LOAD_FILAMENT_1 c=17 r=0
|
||||
"Load filament 1"
|
||||
"Charger fil. 1"
|
||||
|
||||
#
|
||||
"XYZ calibration failed. Bed calibration point was not found."
|
||||
"Echec calibration XYZ. Le point de calibration du plateau n'a pas ete trouve."
|
||||
|
|
@ -1350,38 +1226,18 @@
|
|||
"XYZ calibration failed. Front calibration points not reachable."
|
||||
"Echec calibration XYZ. Les points de calibration avant ne sont pas atteignables."
|
||||
|
||||
#
|
||||
"XYZ calibration failed. Left front calibration point not reachable."
|
||||
"Echec calibration XYZ. Le point de calibration avant gauche n'est pas atteignable."
|
||||
|
||||
#MSG_LOAD_FILAMENT_2 c=17 r=0
|
||||
"Load filament 2"
|
||||
"Charger fil. 2"
|
||||
|
||||
#
|
||||
"XYZ calibration failed. Right front calibration point not reachable."
|
||||
"Echec calibration XYZ. Le point de calibration avant droit n'est pas atteignable."
|
||||
|
||||
#MSG_LOAD_FILAMENT_3 c=17 r=0
|
||||
"Load filament 3"
|
||||
"Charger fil. 3"
|
||||
|
||||
#
|
||||
"Y distance from min"
|
||||
"Distance Y du min"
|
||||
|
||||
#
|
||||
"Y-correct"
|
||||
"Correction-Y"
|
||||
"Y-correct:"
|
||||
"Correct-Y:"
|
||||
|
||||
#MSG_LOAD_FILAMENT_4 c=17 r=0
|
||||
"Load filament 4"
|
||||
"Charger fil. 4"
|
||||
|
||||
#MSG_LOAD_FILAMENT_5 c=17 r=0
|
||||
"Load filament 5"
|
||||
"Charger fil. 5"
|
||||
|
||||
#MSG_OFF c=0 r=0
|
||||
#MSG_OFF
|
||||
" [off]"
|
||||
"\x00"
|
||||
|
|
|
|||
|
|
@ -1,32 +1,32 @@
|
|||
#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14 r=0
|
||||
#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
|
||||
" of 4"
|
||||
" su 4"
|
||||
|
||||
#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14 r=0
|
||||
#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
|
||||
" of 9"
|
||||
"su 9"
|
||||
|
||||
#MSG_MEASURED_OFFSET c=0 r=0
|
||||
#MSG_MEASURED_OFFSET
|
||||
"[0;0] point offset"
|
||||
"[0;0] punto offset"
|
||||
|
||||
#MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
|
||||
"\x1b[2JCrash detection can\x1b[1;0Hbe turned on only in\x1b[2;0HNormal mode"
|
||||
"\x1b[2JRilev. impatto\x1b[1;0Hattivabile solo\x1b[2;0Hin Modalita normale"
|
||||
"Crash detection can\rbe turned on only in\rNormal mode"
|
||||
"Rilev. impatto\rattivabile solo\rin Modalita normale"
|
||||
|
||||
#MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
|
||||
"\x1b[2JWARNING:\x1b[1;0HCrash detection\x1b[2;0Hdisabled in\x1b[3;0HStealth mode"
|
||||
"\x1b[2JATTENZIONE:\x1b[1;0HRilev. impatto\x1b[2;0Hdisattivato in\x1b[3;0HModalita silenziosa"
|
||||
"WARNING:\rCrash detection\rdisabled in\rStealth mode"
|
||||
"ATTENZIONE:\rRilev. impatto\rdisattivato in\rModalita silenziosa"
|
||||
|
||||
#
|
||||
">Cancel"
|
||||
">Annulla"
|
||||
|
||||
#MSG_BABYSTEPPING_Z c=20 r=0
|
||||
"Adjusting Z"
|
||||
"Compensazione Z"
|
||||
#MSG_BABYSTEPPING_Z c=15
|
||||
"Adjusting Z:"
|
||||
"Compensaz. Z:"
|
||||
|
||||
#MSG_SELFTEST_CHECK_ALLCORRECT c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_ALLCORRECT c=20
|
||||
"All correct "
|
||||
"Nessun errore"
|
||||
|
||||
|
|
@ -38,7 +38,7 @@
|
|||
"Ambient"
|
||||
"Ambiente"
|
||||
|
||||
#MSG_PRESS c=20 r=0
|
||||
#MSG_PRESS c=20
|
||||
"and press the knob"
|
||||
"e cliccare manopola"
|
||||
|
||||
|
|
@ -54,15 +54,15 @@
|
|||
"SpoolJoin [N/A]"
|
||||
"\x00"
|
||||
|
||||
# MSG_AUTO_DEPLETE_OFF c=17 r=1
|
||||
#MSG_AUTO_DEPLETE_OFF c=17 r=1
|
||||
"SpoolJoin [off]"
|
||||
"\x00"
|
||||
|
||||
#MSG_AUTO_HOME c=0 r=0
|
||||
#MSG_AUTO_HOME
|
||||
"Auto home"
|
||||
"Trova origine"
|
||||
|
||||
#MSG_AUTOLOAD_FILAMENT c=17 r=0
|
||||
#MSG_AUTOLOAD_FILAMENT c=17
|
||||
"AutoLoad filament"
|
||||
"Autocaric. filam."
|
||||
|
||||
|
|
@ -74,27 +74,27 @@
|
|||
"Autoloading filament is active, just press the knob and insert filament..."
|
||||
"Il caricamento automatico e attivo, premete la manopola e inserite il filamento..."
|
||||
|
||||
#MSG_SELFTEST_AXIS_LENGTH c=0 r=0
|
||||
#MSG_SELFTEST_AXIS_LENGTH
|
||||
"Axis length"
|
||||
"Lunghezza dell'asse"
|
||||
|
||||
#MSG_SELFTEST_AXIS c=0 r=0
|
||||
#MSG_SELFTEST_AXIS
|
||||
"Axis"
|
||||
"Assi"
|
||||
|
||||
#MSG_SELFTEST_BEDHEATER c=0 r=0
|
||||
#MSG_SELFTEST_BEDHEATER
|
||||
"Bed / Heater"
|
||||
"Letto/Riscald."
|
||||
|
||||
#MSG_BED_DONE c=0 r=0
|
||||
#MSG_BED_DONE
|
||||
"Bed done"
|
||||
"Piano fatto."
|
||||
|
||||
#MSG_BED_HEATING c=0 r=0
|
||||
#MSG_BED_HEATING
|
||||
"Bed Heating"
|
||||
"Riscald. letto"
|
||||
|
||||
#MSG_BED_CORRECTION_MENU c=0 r=0
|
||||
#MSG_BED_CORRECTION_MENU
|
||||
"Bed level correct"
|
||||
"Correz. liv.letto"
|
||||
|
||||
|
|
@ -102,15 +102,7 @@
|
|||
"Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
|
||||
"Livellamento letto fallito.NoRispSensore.Residui su ugello? In attesa di reset."
|
||||
|
||||
#MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED c=20 r=4
|
||||
"Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset."
|
||||
"Livellamento piano fallito. Sensore disconnesso o Cavo Danneggiato. In attesa di reset."
|
||||
|
||||
#MSG_BED_LEVELING_FAILED_POINT_HIGH c=20 r=4
|
||||
"Bed leveling failed. Sensor triggered too high. Waiting for reset."
|
||||
"Livellamento piano fallito. Risposta sensore troppo presto. In attesa di reset."
|
||||
|
||||
#MSG_BED c=0 r=0
|
||||
#MSG_BED
|
||||
"Bed"
|
||||
"Letto"
|
||||
|
||||
|
|
@ -126,11 +118,11 @@
|
|||
"Calibrating home"
|
||||
"Calibrazione Home"
|
||||
|
||||
#MSG_CALIBRATE_BED c=0 r=0
|
||||
#MSG_CALIBRATE_BED
|
||||
"Calibrate XYZ"
|
||||
"Calibra XYZ"
|
||||
|
||||
#MSG_HOMEYZ c=0 r=0
|
||||
#MSG_HOMEYZ
|
||||
"Calibrate Z"
|
||||
"Calibra Z"
|
||||
|
||||
|
|
@ -150,11 +142,11 @@
|
|||
"Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
|
||||
"Calibrazione Z. Ruotare la manopola per alzare il carrello Z fino all'altezza massima. Click per terminare."
|
||||
|
||||
#MSG_HOMEYZ_DONE c=0 r=0
|
||||
#MSG_HOMEYZ_DONE
|
||||
"Calibration done"
|
||||
"Calibrazione completa"
|
||||
|
||||
#MSG_MENU_CALIBRATION c=0 r=0
|
||||
#MSG_MENU_CALIBRATION
|
||||
"Calibration"
|
||||
"Calibrazione"
|
||||
|
||||
|
|
@ -162,19 +154,15 @@
|
|||
"Cancel"
|
||||
"Annulla"
|
||||
|
||||
#MSG_SD_INSERTED c=0 r=0
|
||||
"Card inserted"
|
||||
"SD inserita"
|
||||
|
||||
#MSG_SD_REMOVED c=0 r=0
|
||||
#MSG_SD_REMOVED
|
||||
"Card removed"
|
||||
"SD rimossa"
|
||||
|
||||
#MSG_NOT_COLOR c=0 r=0
|
||||
#MSG_NOT_COLOR
|
||||
"Color not correct"
|
||||
"Colore non puro"
|
||||
|
||||
#MSG_COOLDOWN c=0 r=0
|
||||
#MSG_COOLDOWN
|
||||
"Cooldown"
|
||||
"Raffredda"
|
||||
|
||||
|
|
@ -182,15 +170,15 @@
|
|||
"Copy selected language?"
|
||||
"Copiare la lingua selezionata?"
|
||||
|
||||
#MSG_CRASHDETECT_ON c=0 r=0
|
||||
#MSG_CRASHDETECT_ON
|
||||
"Crash det. [on]"
|
||||
"Rilevam.imp. [on]"
|
||||
|
||||
#MSG_CRASHDETECT_NA c=0 r=0
|
||||
#MSG_CRASHDETECT_NA
|
||||
"Crash det. [N/A]"
|
||||
"Rilevam.imp.[N/A]"
|
||||
|
||||
#MSG_CRASHDETECT_OFF c=0 r=0
|
||||
#MSG_CRASHDETECT_OFF
|
||||
"Crash det. [off]"
|
||||
"Rilevam.imp.[off]"
|
||||
|
||||
|
|
@ -214,7 +202,7 @@
|
|||
"Date:"
|
||||
"Data:"
|
||||
|
||||
#MSG_DISABLE_STEPPERS c=0 r=0
|
||||
#MSG_DISABLE_STEPPERS
|
||||
"Disable steppers"
|
||||
"Disabilita motori"
|
||||
|
||||
|
|
@ -226,34 +214,14 @@
|
|||
"Do you want to repeat last step to readjust distance between nozzle and heatbed?"
|
||||
"Desideri ripetere l'ultimo passaggio per migliorare la distanza fra ugello e piatto?"
|
||||
|
||||
#MSG_EXTRUDER_CORRECTION c=9 r=0
|
||||
"E-correct"
|
||||
"Correzione-E"
|
||||
#MSG_EXTRUDER_CORRECTION c=10
|
||||
"E-correct:"
|
||||
"Correzione-E:"
|
||||
|
||||
#MSG_EJECT_FILAMENT c=17 r=1
|
||||
"Eject filament"
|
||||
"Espelli filamento "
|
||||
|
||||
#MSG_EJECT_FILAMENT1 c=17 r=1
|
||||
"Eject filament 1"
|
||||
"Espelli filamento 1"
|
||||
|
||||
#MSG_EJECT_FILAMENT2 c=17 r=1
|
||||
"Eject filament 2"
|
||||
"Espellere filamento 2"
|
||||
|
||||
#MSG_EJECT_FILAMENT3 c=17 r=1
|
||||
"Eject filament 3"
|
||||
"Espelli filamento 3"
|
||||
|
||||
#MSG_EJECT_FILAMENT4 c=17 r=1
|
||||
"Eject filament 4"
|
||||
"Espellere filamento 4"
|
||||
|
||||
#MSG_EJECT_FILAMENT5 c=17 r=1
|
||||
"Eject filament 5"
|
||||
"Espelli filamento 5"
|
||||
|
||||
#
|
||||
"Eject"
|
||||
"Espellere"
|
||||
|
|
@ -266,11 +234,11 @@
|
|||
"Endstop not hit"
|
||||
"Finecorsa fuori portata"
|
||||
|
||||
#MSG_SELFTEST_ENDSTOP c=0 r=0
|
||||
#MSG_SELFTEST_ENDSTOP
|
||||
"Endstop"
|
||||
"Finecorsa"
|
||||
|
||||
#MSG_SELFTEST_ENDSTOPS c=0 r=0
|
||||
#MSG_SELFTEST_ENDSTOPS
|
||||
"Endstops"
|
||||
"Finecorsa"
|
||||
|
||||
|
|
@ -282,31 +250,11 @@
|
|||
"ERROR: Filament sensor is not responding, please check connection."
|
||||
"ERRORE: il sensore filam. non risponde,Controllare conness."
|
||||
|
||||
#MSG_ERROR c=0 r=0
|
||||
#MSG_ERROR
|
||||
"ERROR:"
|
||||
"ERRORE:"
|
||||
|
||||
#
|
||||
"External SPI flash W25X20CL not responding."
|
||||
"Flash SPI W25X20CL esterno non risponde."
|
||||
|
||||
#
|
||||
"Extruder 1"
|
||||
"Estrusore 1"
|
||||
|
||||
#
|
||||
"Extruder 2"
|
||||
"Estrusore 2"
|
||||
|
||||
#
|
||||
"Extruder 3"
|
||||
"Estrusore 3"
|
||||
|
||||
#
|
||||
"Extruder 4"
|
||||
"Estrusore 4"
|
||||
|
||||
#MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18 r=0
|
||||
#MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
|
||||
"Extruder fan:"
|
||||
"Ventola estrusore:"
|
||||
|
||||
|
|
@ -314,7 +262,7 @@
|
|||
"Extruder info"
|
||||
"Info estrusore"
|
||||
|
||||
#MSG_MOVE_E c=0 r=0
|
||||
#MSG_MOVE_E
|
||||
"Extruder"
|
||||
"Estrusore"
|
||||
|
||||
|
|
@ -338,11 +286,11 @@
|
|||
"Fail stats"
|
||||
"Statistiche fallimenti"
|
||||
|
||||
#MSG_FAN_SPEED c=14 r=0
|
||||
#MSG_FAN_SPEED c=14
|
||||
"Fan speed"
|
||||
"Velocita ventola"
|
||||
|
||||
#MSG_SELFTEST_FAN c=20 r=0
|
||||
#MSG_SELFTEST_FAN c=20
|
||||
"Fan test"
|
||||
"Test ventola"
|
||||
|
||||
|
|
@ -354,19 +302,15 @@
|
|||
"Fans check [off]"
|
||||
"Control.vent[off]"
|
||||
|
||||
#MSG_FSENSOR_ON c=0 r=0
|
||||
#MSG_FSENSOR_ON
|
||||
"Fil. sensor [on]"
|
||||
"Sensor filam.[On]"
|
||||
|
||||
#MSG_RESPONSE_POOR c=20 r=2
|
||||
"Fil. sensor response is poor, disable it?"
|
||||
"Risposta Sens. Fil. debole, disattivare? "
|
||||
|
||||
#MSG_FSENSOR_NA c=0 r=0
|
||||
#MSG_FSENSOR_NA
|
||||
"Fil. sensor [N/A]"
|
||||
"Sensor filam[N/A]"
|
||||
|
||||
#MSG_FSENSOR_OFF c=0 r=0
|
||||
#MSG_FSENSOR_OFF
|
||||
"Fil. sensor [off]"
|
||||
"Sensor filam[off]"
|
||||
|
||||
|
|
@ -378,18 +322,14 @@
|
|||
"Filament extruding & with correct color?"
|
||||
"Filamento estruso & con il giusto colore?"
|
||||
|
||||
#MSG_NOT_LOADED c=19 r=0
|
||||
#MSG_NOT_LOADED c=19
|
||||
"Filament not loaded"
|
||||
"Fil. non caricato"
|
||||
|
||||
#MSG_FILAMENT_SENSOR c=20 r=0
|
||||
#MSG_FILAMENT_SENSOR c=20
|
||||
"Filament sensor"
|
||||
"Sensore filam."
|
||||
|
||||
#MSG_SELFTEST_FILAMENT_SENSOR c=18 r=0
|
||||
"Filament sensor:"
|
||||
"Sensore filam.:"
|
||||
|
||||
#MSG_FILAMENT_USED c=19 r=1
|
||||
"Filament used"
|
||||
"Filamento utilizzato"
|
||||
|
|
@ -418,15 +358,15 @@
|
|||
"Fix the issue and then press button on MMU unit."
|
||||
"Risolvi il problema e quindi premi il bottone sull'unita MMU. "
|
||||
|
||||
#MSG_FLOW c=0 r=0
|
||||
#MSG_FLOW
|
||||
"Flow"
|
||||
"Flusso"
|
||||
|
||||
#MSG_PRUSA3D_FORUM c=0 r=0
|
||||
#MSG_PRUSA3D_FORUM
|
||||
"forum.prusa3d.com"
|
||||
"\x00"
|
||||
|
||||
#MSG_SELFTEST_COOLING_FAN c=20 r=0
|
||||
#MSG_SELFTEST_COOLING_FAN c=20
|
||||
"Front print fan?"
|
||||
"Ventola frontale?"
|
||||
|
||||
|
|
@ -434,23 +374,23 @@
|
|||
"Front side[um]"
|
||||
"Fronte [um]"
|
||||
|
||||
#MSG_SELFTEST_FANS c=0 r=0
|
||||
#MSG_SELFTEST_FANS
|
||||
"Front/left fans"
|
||||
"Ventola frontale/sinistra"
|
||||
|
||||
#MSG_SELFTEST_HEATERTHERMISTOR c=0 r=0
|
||||
#MSG_SELFTEST_HEATERTHERMISTOR
|
||||
"Heater/Thermistor"
|
||||
"Riscald./Termist."
|
||||
|
||||
#MSG_BED_HEATING_SAFETY_DISABLED c=0 r=0
|
||||
#MSG_BED_HEATING_SAFETY_DISABLED
|
||||
"Heating disabled by safety timer."
|
||||
"Riscaldamento fermato dal timer di sicurezza."
|
||||
|
||||
#MSG_HEATING_COMPLETE c=20 r=0
|
||||
#MSG_HEATING_COMPLETE c=20
|
||||
"Heating done."
|
||||
"Riscald. completo"
|
||||
|
||||
#MSG_HEATING c=0 r=0
|
||||
#MSG_HEATING
|
||||
"Heating"
|
||||
"Riscaldamento..."
|
||||
|
||||
|
|
@ -458,51 +398,47 @@
|
|||
"Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
|
||||
"Ciao, sono la tua stampante Original Prusa i3. Gradiresti un aiuto nel processo di configurazione?"
|
||||
|
||||
#MSG_PRUSA3D_HOWTO c=0 r=0
|
||||
#MSG_PRUSA3D_HOWTO
|
||||
"howto.prusa3d.com"
|
||||
"\x00"
|
||||
|
||||
#
|
||||
"Change extruder"
|
||||
"Cambio estrusore"
|
||||
|
||||
#MSG_FILAMENTCHANGE c=0 r=0
|
||||
#MSG_FILAMENTCHANGE
|
||||
"Change filament"
|
||||
"Cambia filamento"
|
||||
|
||||
#MSG_CHANGE_SUCCESS c=0 r=0
|
||||
#MSG_CHANGE_SUCCESS
|
||||
"Change success!"
|
||||
"Cambio riuscito!"
|
||||
|
||||
#MSG_CORRECTLY c=20 r=0
|
||||
#MSG_CORRECTLY c=20
|
||||
"Changed correctly?"
|
||||
"Cambiato correttamente?"
|
||||
|
||||
#MSG_SELFTEST_CHECK_BED c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_BED c=20
|
||||
"Checking bed "
|
||||
"Verifica piano"
|
||||
|
||||
#MSG_SELFTEST_CHECK_ENDSTOPS c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_ENDSTOPS c=20
|
||||
"Checking endstops"
|
||||
"Verifica finecorsa"
|
||||
|
||||
#MSG_SELFTEST_CHECK_HOTEND c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_HOTEND c=20
|
||||
"Checking hotend "
|
||||
"Verifica ugello"
|
||||
|
||||
#MSG_SELFTEST_CHECK_FSENSOR c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_FSENSOR c=20
|
||||
"Checking sensors "
|
||||
"Controllo sensori"
|
||||
|
||||
#MSG_SELFTEST_CHECK_X c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_X c=20
|
||||
"Checking X axis "
|
||||
"Verifica asse X"
|
||||
|
||||
#MSG_SELFTEST_CHECK_Y c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_Y c=20
|
||||
"Checking Y axis "
|
||||
"Verifica asse Y"
|
||||
|
||||
#MSG_SELFTEST_CHECK_Z c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_Z c=20
|
||||
"Checking Z axis "
|
||||
"Verifica asse Z"
|
||||
|
||||
|
|
@ -530,35 +466,15 @@
|
|||
"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."
|
||||
"Adesso iniziero a stampare una linea e tu dovrai abbassare l'ugello poco per volta ruotando la manopola sino a raggiungere una altezza ottimale. Per favore dai uno sguardo all'immagine del nostro manuale, cap.Calibrazione."
|
||||
|
||||
#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=60 r=0
|
||||
"Improving bed calibration point"
|
||||
"Perfezion. punto di calibraz. letto"
|
||||
|
||||
#MSG_WATCH c=0 r=0
|
||||
#MSG_WATCH
|
||||
"Info screen"
|
||||
"Schermata info"
|
||||
|
||||
#MSG_FILAMENT_LOADING_T0 c=20 r=4
|
||||
"Insert filament into extruder 1. Click when done."
|
||||
"Inserire filamento nell'estrusore 1. Click per continuare"
|
||||
|
||||
#MSG_FILAMENT_LOADING_T1 c=20 r=4
|
||||
"Insert filament into extruder 2. Click when done."
|
||||
"Inserire filamento nell'estrusore 2. Click per continuare"
|
||||
|
||||
#MSG_FILAMENT_LOADING_T2 c=20 r=4
|
||||
"Insert filament into extruder 3. Click when done."
|
||||
"Inserire filamento nell'estrusore 3. Click per continuare"
|
||||
|
||||
#MSG_FILAMENT_LOADING_T3 c=20 r=4
|
||||
"Insert filament into extruder 4. Click when done."
|
||||
"Inserire filamento nell'estrusore 4. Click per continuare"
|
||||
|
||||
#
|
||||
"Is filament 1 loaded?"
|
||||
"Il filamento 1 e caricato?"
|
||||
|
||||
#MSG_INSERT_FILAMENT c=20 r=0
|
||||
#MSG_INSERT_FILAMENT c=20
|
||||
"Insert filament"
|
||||
"Inserire filamento"
|
||||
|
||||
|
|
@ -578,10 +494,6 @@
|
|||
"Is steel sheet on heatbed?"
|
||||
"La piastra d'acciaio e sul piano riscaldato?"
|
||||
|
||||
#MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION c=20 r=0
|
||||
"Iteration "
|
||||
"Iterazione"
|
||||
|
||||
#
|
||||
"Last print failures"
|
||||
"Fallimenti ultima stampa"
|
||||
|
|
@ -590,7 +502,7 @@
|
|||
"Last print"
|
||||
"Ultima stampa"
|
||||
|
||||
#MSG_SELFTEST_EXTRUDER_FAN c=20 r=0
|
||||
#MSG_SELFTEST_EXTRUDER_FAN c=20
|
||||
"Left hotend fan?"
|
||||
"Vent SX hotend?"
|
||||
|
||||
|
|
@ -606,19 +518,19 @@
|
|||
"Lin. correction"
|
||||
"Correzione lin."
|
||||
|
||||
#MSG_BABYSTEP_Z c=0 r=0
|
||||
#MSG_BABYSTEP_Z
|
||||
"Live adjust Z"
|
||||
"Compensazione Z"
|
||||
|
||||
#MSG_LOAD_FILAMENT c=17 r=0
|
||||
#MSG_LOAD_FILAMENT c=17
|
||||
"Load filament"
|
||||
"Carica filamento"
|
||||
|
||||
#MSG_LOADING_COLOR c=0 r=0
|
||||
#MSG_LOADING_COLOR
|
||||
"Loading color"
|
||||
"Caricando colore"
|
||||
|
||||
#MSG_LOADING_FILAMENT c=20 r=0
|
||||
#MSG_LOADING_FILAMENT c=20
|
||||
"Loading filament"
|
||||
"Caricando filamento"
|
||||
|
||||
|
|
@ -634,15 +546,15 @@
|
|||
"M117 First layer cal."
|
||||
"M117 Calibrazione primo layer."
|
||||
|
||||
#MSG_MAIN c=0 r=0
|
||||
#MSG_MAIN
|
||||
"Main"
|
||||
"Menu principale"
|
||||
|
||||
#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60 r=0
|
||||
#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
|
||||
"Measuring reference height of calibration point"
|
||||
"Misura altezza di rif. del punto di calib."
|
||||
|
||||
#MSG_MESH_BED_LEVELING c=0 r=0
|
||||
#MSG_MESH_BED_LEVELING
|
||||
"Mesh Bed Leveling"
|
||||
"Mesh livel. letto"
|
||||
|
||||
|
|
@ -674,11 +586,11 @@
|
|||
"MMU OK. Resuming..."
|
||||
"MMU OK. Riprendendo... "
|
||||
|
||||
#MSG_STEALTH_MODE_OFF c=0 r=0
|
||||
#MSG_STEALTH_MODE_OFF
|
||||
"Mode [Normal]"
|
||||
"Modo [normale]"
|
||||
|
||||
#MSG_SILENT_MODE_ON c=0 r=0
|
||||
#MSG_SILENT_MODE_ON
|
||||
"Mode [silent]"
|
||||
"Modo [silenzioso]"
|
||||
|
||||
|
|
@ -690,15 +602,15 @@
|
|||
"MMU power fails"
|
||||
"Mancanza corrente MMU"
|
||||
|
||||
#MSG_STEALTH_MODE_ON c=0 r=0
|
||||
#MSG_STEALTH_MODE_ON
|
||||
"Mode [Stealth]"
|
||||
"Modo [Silenziosa]"
|
||||
|
||||
#MSG_AUTO_MODE_ON c=0 r=0
|
||||
#MSG_AUTO_MODE_ON
|
||||
"Mode [auto power]"
|
||||
"Modo [auto]"
|
||||
|
||||
#MSG_SILENT_MODE_OFF c=0 r=0
|
||||
#MSG_SILENT_MODE_OFF
|
||||
"Mode [high power]"
|
||||
"Mode [forte]"
|
||||
|
||||
|
|
@ -706,31 +618,31 @@
|
|||
"MMU2 connected"
|
||||
"MMU2 connessa"
|
||||
|
||||
#MSG_SELFTEST_MOTOR c=0 r=0
|
||||
#MSG_SELFTEST_MOTOR
|
||||
"Motor"
|
||||
"Motore"
|
||||
|
||||
#MSG_MOVE_AXIS c=0 r=0
|
||||
#MSG_MOVE_AXIS
|
||||
"Move axis"
|
||||
"Muovi asse"
|
||||
|
||||
#MSG_MOVE_X c=0 r=0
|
||||
#MSG_MOVE_X
|
||||
"Move X"
|
||||
"Muovi X"
|
||||
|
||||
#MSG_MOVE_Y c=0 r=0
|
||||
#MSG_MOVE_Y
|
||||
"Move Y"
|
||||
"Muovi Y"
|
||||
|
||||
#MSG_MOVE_Z c=0 r=0
|
||||
#MSG_MOVE_Z
|
||||
"Move Z"
|
||||
"Muovi Z"
|
||||
|
||||
#MSG_NO_MOVE c=0 r=0
|
||||
#MSG_NO_MOVE
|
||||
"No move."
|
||||
"Nessun movimento."
|
||||
|
||||
#MSG_NO_CARD c=0 r=0
|
||||
#MSG_NO_CARD
|
||||
"No SD card"
|
||||
"Nessuna SD"
|
||||
|
||||
|
|
@ -738,11 +650,11 @@
|
|||
"N/A"
|
||||
"\x00"
|
||||
|
||||
#MSG_NO c=0 r=0
|
||||
#MSG_NO
|
||||
"No"
|
||||
"\x00"
|
||||
|
||||
#MSG_SELFTEST_NOTCONNECTED c=0 r=0
|
||||
#MSG_SELFTEST_NOTCONNECTED
|
||||
"Not connected"
|
||||
"Non connesso"
|
||||
|
||||
|
|
@ -750,11 +662,7 @@
|
|||
"New firmware version available:"
|
||||
"Nuova versione firmware disponibile:"
|
||||
|
||||
#
|
||||
"No "
|
||||
"No"
|
||||
|
||||
#MSG_SELFTEST_FAN_NO c=19 r=0
|
||||
#MSG_SELFTEST_FAN_NO c=19
|
||||
"Not spinning"
|
||||
"Non gira"
|
||||
|
||||
|
|
@ -766,7 +674,7 @@
|
|||
"Now I will preheat nozzle for PLA."
|
||||
"Adesso preriscaldero l'ugello per PLA."
|
||||
|
||||
#MSG_NOZZLE c=0 r=0
|
||||
#MSG_NOZZLE
|
||||
"Nozzle"
|
||||
"Ugello"
|
||||
|
||||
|
|
@ -782,7 +690,7 @@
|
|||
"Nozzle FAN"
|
||||
"Ventola estrusore"
|
||||
|
||||
#MSG_PAUSE_PRINT c=0 r=0
|
||||
#MSG_PAUSE_PRINT
|
||||
"Pause print"
|
||||
"Metti in pausa"
|
||||
|
||||
|
|
@ -814,7 +722,7 @@
|
|||
"Please clean the nozzle for calibration. Click when done."
|
||||
"Pulire l'ugello per la calibrazione, poi fare click."
|
||||
|
||||
#MSG_SELFTEST_PLEASECHECK c=0 r=0
|
||||
#MSG_SELFTEST_PLEASECHECK
|
||||
"Please check :"
|
||||
"Verifica:"
|
||||
|
||||
|
|
@ -866,7 +774,7 @@
|
|||
"Please update firmware in your MMU2. Waiting for reset."
|
||||
"Aggiorna il firmware sul tuo MMU2. In attesa di reset. "
|
||||
|
||||
#MSG_PLEASE_WAIT c=20 r=0
|
||||
#MSG_PLEASE_WAIT c=20
|
||||
"Please wait"
|
||||
"Attendere"
|
||||
|
||||
|
|
@ -874,11 +782,11 @@
|
|||
"Please remove shipping helpers first."
|
||||
"Per favore rimuovete i materiali da spedizione"
|
||||
|
||||
#MSG_PREHEAT_NOZZLE c=20 r=0
|
||||
#MSG_PREHEAT_NOZZLE c=20
|
||||
"Preheat the nozzle!"
|
||||
"Prerisc. ugello!"
|
||||
|
||||
#MSG_PREHEAT c=0 r=0
|
||||
#MSG_PREHEAT
|
||||
"Preheat"
|
||||
"Preriscalda"
|
||||
|
||||
|
|
@ -898,7 +806,7 @@
|
|||
"Power failures"
|
||||
"Mancanza corrente"
|
||||
|
||||
#MSG_PRINT_ABORTED c=20 r=0
|
||||
#MSG_PRINT_ABORTED c=20
|
||||
"Print aborted"
|
||||
"Stampa interrotta"
|
||||
|
||||
|
|
@ -910,11 +818,11 @@
|
|||
"Preheating to unload"
|
||||
"Preriscaldamento per scaricare"
|
||||
|
||||
#MSG_SELFTEST_PRINT_FAN_SPEED c=18 r=0
|
||||
#MSG_SELFTEST_PRINT_FAN_SPEED c=18
|
||||
"Print fan:"
|
||||
"Ventola di stampa:"
|
||||
|
||||
#MSG_CARD_MENU c=0 r=0
|
||||
#MSG_CARD_MENU
|
||||
"Print from SD"
|
||||
"Stampa da SD"
|
||||
|
||||
|
|
@ -938,15 +846,7 @@
|
|||
"Print FAN"
|
||||
"Ventola di stampa"
|
||||
|
||||
#WELCOME_MSG c=20 r=0
|
||||
"Prusa i3 MK2.5 ready."
|
||||
"\x00"
|
||||
|
||||
#WELCOME_MSG c=20 r=0
|
||||
"Prusa i3 MK3 ready."
|
||||
"Prusa i3 MK3 pronta."
|
||||
|
||||
#MSG_PRUSA3D c=0 r=0
|
||||
#MSG_PRUSA3D
|
||||
"prusa3d.com"
|
||||
"\x00"
|
||||
|
||||
|
|
@ -966,19 +866,15 @@
|
|||
"Prusa i3 MK3S OK."
|
||||
"\x00"
|
||||
|
||||
#
|
||||
"Prusa i3 MK2 ready."
|
||||
"Prusa i3 MK2 pronta."
|
||||
|
||||
#MSG_CALIBRATE_BED_RESET c=0 r=0
|
||||
#MSG_CALIBRATE_BED_RESET
|
||||
"Reset XYZ calibr."
|
||||
"Reset calibrazione XYZ."
|
||||
|
||||
#MSG_BED_CORRECTION_RESET c=0 r=0
|
||||
#MSG_BED_CORRECTION_RESET
|
||||
"Reset"
|
||||
"\x00"
|
||||
|
||||
#MSG_RESUME_PRINT c=0 r=0
|
||||
#MSG_RESUME_PRINT
|
||||
"Resume print"
|
||||
"Riprendi stampa"
|
||||
|
||||
|
|
@ -1014,31 +910,31 @@
|
|||
"Right"
|
||||
"Destra"
|
||||
|
||||
#MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60 r=0
|
||||
#MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
|
||||
"Searching bed calibration point"
|
||||
"Ricerca dei punti di calibrazione del piano"
|
||||
|
||||
#MSG_LANGUAGE_SELECT c=0 r=0
|
||||
#MSG_LANGUAGE_SELECT
|
||||
"Select language"
|
||||
"Seleziona lingua"
|
||||
|
||||
#MSG_SELFTEST_OK c=0 r=0
|
||||
#MSG_SELFTEST_OK
|
||||
"Self test OK"
|
||||
"Autotest OK"
|
||||
|
||||
#MSG_SELFTEST_START c=20 r=0
|
||||
#MSG_SELFTEST_START c=20
|
||||
"Self test start "
|
||||
"Avvia autotest"
|
||||
|
||||
#MSG_SELFTEST c=0 r=0
|
||||
#MSG_SELFTEST
|
||||
"Selftest "
|
||||
"Autotest"
|
||||
|
||||
#MSG_SELFTEST_ERROR c=0 r=0
|
||||
#MSG_SELFTEST_ERROR
|
||||
"Selftest error !"
|
||||
"Errore Autotest !"
|
||||
|
||||
#MSG_SELFTEST_FAILED c=20 r=0
|
||||
#MSG_SELFTEST_FAILED c=20
|
||||
"Selftest failed "
|
||||
"Autotest fallito"
|
||||
|
||||
|
|
@ -1058,7 +954,7 @@
|
|||
"Set temperature:"
|
||||
"Imposta temperatura:"
|
||||
|
||||
#MSG_SETTINGS c=0 r=0
|
||||
#MSG_SETTINGS
|
||||
"Settings"
|
||||
"Impostazioni"
|
||||
|
||||
|
|
@ -1070,33 +966,25 @@
|
|||
"Sensor state"
|
||||
"Stato sensore"
|
||||
|
||||
#
|
||||
"Sensors info"
|
||||
"Info Sensori"
|
||||
|
||||
#
|
||||
"Show pinda state"
|
||||
"Mostra stato pinda"
|
||||
|
||||
#MSG_FILE_CNT c=20 r=4
|
||||
"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."
|
||||
|
||||
#MSG_SORT_NONE c=17 r=1
|
||||
"Sort: [none]"
|
||||
"Ordina: [none]"
|
||||
"Sort [none]"
|
||||
"Ordina [none]"
|
||||
|
||||
#MSG_SORT_TIME c=17 r=1
|
||||
"Sort: [time]"
|
||||
"Ordina: [time]"
|
||||
"Sort [time]"
|
||||
"Ordina [time]"
|
||||
|
||||
#
|
||||
"Severe skew"
|
||||
"Disassamento grave"
|
||||
|
||||
#MSG_SORT_ALPHA c=17 r=1
|
||||
"Sort: [alphabet]"
|
||||
"Ordine: [alfabet]"
|
||||
"Sort [alphabet]"
|
||||
"Ordine [alfabet]"
|
||||
|
||||
#MSG_SORTING c=20 r=1
|
||||
"Sorting files"
|
||||
|
|
@ -1126,11 +1014,11 @@
|
|||
"Sound [silent]"
|
||||
"Suono[silenzioso]"
|
||||
|
||||
#MSG_SPEED c=0 r=0
|
||||
#MSG_SPEED
|
||||
"Speed"
|
||||
"Velocita"
|
||||
|
||||
#MSG_SELFTEST_FAN_YES c=19 r=0
|
||||
#MSG_SELFTEST_FAN_YES c=19
|
||||
"Spinning"
|
||||
"Gira"
|
||||
|
||||
|
|
@ -1138,23 +1026,23 @@
|
|||
"Stable ambient temperature 21-26C is needed a rigid stand is required."
|
||||
"Sono necessari una temperatura ambiente di 21-26C e una superficie rigida "
|
||||
|
||||
#MSG_STATISTICS c=0 r=0
|
||||
#MSG_STATISTICS
|
||||
"Statistics "
|
||||
"Statistiche"
|
||||
|
||||
#MSG_STOP_PRINT c=0 r=0
|
||||
#MSG_STOP_PRINT
|
||||
"Stop print"
|
||||
"Arresta stampa"
|
||||
|
||||
#MSG_STOPPED c=0 r=0
|
||||
#MSG_STOPPED
|
||||
"STOPPED. "
|
||||
"ARRESTATO."
|
||||
|
||||
#MSG_SUPPORT c=0 r=0
|
||||
#MSG_SUPPORT
|
||||
"Support"
|
||||
"Supporto"
|
||||
|
||||
#MSG_SELFTEST_SWAPPED c=0 r=0
|
||||
#MSG_SELFTEST_SWAPPED
|
||||
"Swapped"
|
||||
"Scambiato"
|
||||
|
||||
|
|
@ -1182,7 +1070,7 @@
|
|||
"Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
|
||||
"Calibrazione temperatura completata e attiva. Puo essere disattivata dal menu Impostazioni ->Cal. Temp."
|
||||
|
||||
#MSG_TEMPERATURE c=0 r=0
|
||||
#MSG_TEMPERATURE
|
||||
"Temperature"
|
||||
"\x00"
|
||||
|
||||
|
|
@ -1202,7 +1090,7 @@
|
|||
"Total print time"
|
||||
"Tempo di stampa totale"
|
||||
|
||||
#MSG_TUNE c=0 r=0
|
||||
#MSG_TUNE
|
||||
"Tune"
|
||||
"Regola"
|
||||
|
||||
|
|
@ -1210,10 +1098,6 @@
|
|||
"Unload"
|
||||
"Scarica"
|
||||
|
||||
#
|
||||
"Unload all"
|
||||
"Rilasciare tutti"
|
||||
|
||||
#
|
||||
"Total failures"
|
||||
"Totale fallimenti"
|
||||
|
|
@ -1226,7 +1110,7 @@
|
|||
"to unload filament"
|
||||
"per scaricare il filamento"
|
||||
|
||||
#MSG_UNLOAD_FILAMENT c=17 r=0
|
||||
#MSG_UNLOAD_FILAMENT c=17
|
||||
"Unload filament"
|
||||
"Scarica filam."
|
||||
|
||||
|
|
@ -1250,7 +1134,7 @@
|
|||
"unknown"
|
||||
"sconosciuto"
|
||||
|
||||
#MSG_USERWAIT c=0 r=0
|
||||
#MSG_USERWAIT
|
||||
"Wait for user..."
|
||||
"Attendendo utente..."
|
||||
|
||||
|
|
@ -1282,7 +1166,7 @@
|
|||
"Was filament unload successful?"
|
||||
"Filamento scaricato con successo?"
|
||||
|
||||
#MSG_SELFTEST_WIRINGERROR c=0 r=0
|
||||
#MSG_SELFTEST_WIRINGERROR
|
||||
"Wiring error"
|
||||
"Errore cablaggio"
|
||||
|
||||
|
|
@ -1298,7 +1182,7 @@
|
|||
"XYZ calibration failed. Please consult the manual."
|
||||
"Calibrazione XYZ fallita. Si prega di consultare il manuale."
|
||||
|
||||
#MSG_YES c=0 r=0
|
||||
#MSG_YES
|
||||
"Yes"
|
||||
"Si"
|
||||
|
||||
|
|
@ -1315,8 +1199,8 @@
|
|||
"Calibrazion XYZ corretta. Assi X/Y leggermente storti. Ben fatto!"
|
||||
|
||||
#
|
||||
"X-correct"
|
||||
"Correzione-X"
|
||||
"X-correct:"
|
||||
"Correzione-X:"
|
||||
|
||||
#MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
|
||||
"XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
|
||||
|
|
@ -1330,18 +1214,10 @@
|
|||
"XYZ calibration compromised. Right front calibration point not reachable."
|
||||
"Calibrazione XYZ compromessa. Punto anteriore destro non raggiungibile."
|
||||
|
||||
#MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8
|
||||
"XYZ calibration compromised. Left front calibration point not reachable."
|
||||
"Calibrazione XYZ compromessa. Punto anteriore sinistro non raggiungibile."
|
||||
|
||||
#MSG_LOAD_ALL c=17 r=0
|
||||
#MSG_LOAD_ALL c=17
|
||||
"Load all"
|
||||
"Caricare tutti"
|
||||
|
||||
#MSG_LOAD_FILAMENT_1 c=17 r=0
|
||||
"Load filament 1"
|
||||
"Caricare fil. 1"
|
||||
|
||||
#
|
||||
"XYZ calibration failed. Bed calibration point was not found."
|
||||
"Calibrazione XYZ fallita. Il punto di calibrazione sul letto non e' stato trovato."
|
||||
|
|
@ -1350,38 +1226,18 @@
|
|||
"XYZ calibration failed. Front calibration points not reachable."
|
||||
"Calibrazione XYZ fallita. Punti anteriori non raggiungibili."
|
||||
|
||||
#
|
||||
"XYZ calibration failed. Left front calibration point not reachable."
|
||||
"Calibrazione XYZ fallita. Punto anteriore sinistro non raggiungibile."
|
||||
|
||||
#MSG_LOAD_FILAMENT_2 c=17 r=0
|
||||
"Load filament 2"
|
||||
"Caricare fil. 2"
|
||||
|
||||
#
|
||||
"XYZ calibration failed. Right front calibration point not reachable."
|
||||
"Calibrazione XYZ fallita. Punto anteriore destro non raggiungibile."
|
||||
|
||||
#MSG_LOAD_FILAMENT_3 c=17 r=0
|
||||
"Load filament 3"
|
||||
"Carica fil. 3"
|
||||
|
||||
#
|
||||
"Y distance from min"
|
||||
"Distanza Y dal min"
|
||||
|
||||
#
|
||||
"Y-correct"
|
||||
"Correzione-Y"
|
||||
"Y-correct:"
|
||||
"Correzione-Y:"
|
||||
|
||||
#MSG_LOAD_FILAMENT_4 c=17 r=0
|
||||
"Load filament 4"
|
||||
"Caricare fil. 4"
|
||||
|
||||
#MSG_LOAD_FILAMENT_5 c=17 r=0
|
||||
"Load filament 5"
|
||||
"Caricare fil. 5"
|
||||
|
||||
#MSG_OFF c=0 r=0
|
||||
#MSG_OFF
|
||||
" [off]"
|
||||
"\x00"
|
||||
|
|
|
|||
|
|
@ -1,32 +1,32 @@
|
|||
#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14 r=0
|
||||
#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
|
||||
" of 4"
|
||||
" z 4"
|
||||
|
||||
#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14 r=0
|
||||
#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
|
||||
" of 9"
|
||||
" z 9"
|
||||
|
||||
#MSG_MEASURED_OFFSET c=0 r=0
|
||||
#MSG_MEASURED_OFFSET
|
||||
"[0;0] point offset"
|
||||
"[0;0] przesuniecie punktu"
|
||||
|
||||
#MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
|
||||
"\x1b[2JCrash detection can\x1b[1;0Hbe turned on only in\x1b[2;0HNormal mode"
|
||||
"\x1b[2JWykrywanie zderzen moze\x1b[1;0Hbyc wlaczone tylko w\x1b[2;0Htrybie Normalnym"
|
||||
"Crash detection can\rbe turned on only in\rNormal mode"
|
||||
"Wykrywanie zderzen moze\rbyc wlaczone tylko w\rtrybie Normalnym"
|
||||
|
||||
#MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
|
||||
"\x1b[2JWARNING:\x1b[1;0HCrash detection\x1b[2;0Hdisabled in\x1b[3;0HStealth mode"
|
||||
"\x1b[2JUWAGA:\x1b[1;0HWykrywanie zderzen\x1b[2;0Hwylaczone w\x1b[3;0Htrybie Stealth"
|
||||
"WARNING:\rCrash detection\rdisabled in\rStealth mode"
|
||||
"UWAGA:\rWykrywanie zderzen\rwylaczone w\rtrybie Stealth"
|
||||
|
||||
#
|
||||
">Cancel"
|
||||
">Anuluj"
|
||||
|
||||
#MSG_BABYSTEPPING_Z c=20 r=0
|
||||
"Adjusting Z"
|
||||
"Dostrajanie Z"
|
||||
#MSG_BABYSTEPPING_Z c=15
|
||||
"Adjusting Z:"
|
||||
"Dostrajanie Z:"
|
||||
|
||||
#MSG_SELFTEST_CHECK_ALLCORRECT c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_ALLCORRECT c=20
|
||||
"All correct "
|
||||
"Wszystko OK "
|
||||
|
||||
|
|
@ -38,7 +38,7 @@
|
|||
"Ambient"
|
||||
"Otoczenie"
|
||||
|
||||
#MSG_PRESS c=20 r=0
|
||||
#MSG_PRESS c=20
|
||||
"and press the knob"
|
||||
"i nacisnij pokretlo"
|
||||
|
||||
|
|
@ -54,15 +54,15 @@
|
|||
"SpoolJoin [N/A]"
|
||||
"SpoolJoin [nd]"
|
||||
|
||||
# MSG_AUTO_DEPLETE_OFF c=17 r=1
|
||||
#MSG_AUTO_DEPLETE_OFF c=17 r=1
|
||||
"SpoolJoin [off]"
|
||||
"SpoolJoin [wyl]"
|
||||
|
||||
#MSG_AUTO_HOME c=0 r=0
|
||||
#MSG_AUTO_HOME
|
||||
"Auto home"
|
||||
"Auto zerowanie"
|
||||
|
||||
#MSG_AUTOLOAD_FILAMENT c=17 r=0
|
||||
#MSG_AUTOLOAD_FILAMENT c=17
|
||||
"AutoLoad filament"
|
||||
"AutoLadowanie fil."
|
||||
|
||||
|
|
@ -74,27 +74,27 @@
|
|||
"Autoloading filament is active, just press the knob and insert filament..."
|
||||
"Autoladowanie filamentu wlaczone, nacisnij pokretlo i wsun filament..."
|
||||
|
||||
#MSG_SELFTEST_AXIS_LENGTH c=0 r=0
|
||||
#MSG_SELFTEST_AXIS_LENGTH
|
||||
"Axis length"
|
||||
"Dlugosc osi"
|
||||
|
||||
#MSG_SELFTEST_AXIS c=0 r=0
|
||||
#MSG_SELFTEST_AXIS
|
||||
"Axis"
|
||||
"Os"
|
||||
|
||||
#MSG_SELFTEST_BEDHEATER c=0 r=0
|
||||
#MSG_SELFTEST_BEDHEATER
|
||||
"Bed / Heater"
|
||||
"Stol / Grzanie"
|
||||
|
||||
#MSG_BED_DONE c=0 r=0
|
||||
#MSG_BED_DONE
|
||||
"Bed done"
|
||||
"Stol OK"
|
||||
|
||||
#MSG_BED_HEATING c=0 r=0
|
||||
#MSG_BED_HEATING
|
||||
"Bed Heating"
|
||||
"Grzanie stolu.."
|
||||
|
||||
#MSG_BED_CORRECTION_MENU c=0 r=0
|
||||
#MSG_BED_CORRECTION_MENU
|
||||
"Bed level correct"
|
||||
"Korekta poziomowania stolu"
|
||||
|
||||
|
|
@ -102,15 +102,7 @@
|
|||
"Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
|
||||
"Kalibracja nieudana. Sensor nie aktywowal sie. Zanieczysz. dysza? Czekam na reset."
|
||||
|
||||
#MSG_BED_LEVELING_FAILED_PROBE_DISCONNECTED c=20 r=4
|
||||
"Bed leveling failed. Sensor disconnected or cable broken. Waiting for reset."
|
||||
"Poziomowanie stolu nieudane. Sensor odlacz. lub uszkodz. przewod. Czekam na reset."
|
||||
|
||||
#MSG_BED_LEVELING_FAILED_POINT_HIGH c=20 r=4
|
||||
"Bed leveling failed. Sensor triggered too high. Waiting for reset."
|
||||
"Kalibracja Z nieudana. Sensor aktywowal za wysoko. Czekam na reset."
|
||||
|
||||
#MSG_BED c=0 r=0
|
||||
#MSG_BED
|
||||
"Bed"
|
||||
"Stol"
|
||||
|
||||
|
|
@ -126,11 +118,11 @@
|
|||
"Calibrating home"
|
||||
"Zerowanie osi"
|
||||
|
||||
#MSG_CALIBRATE_BED c=0 r=0
|
||||
#MSG_CALIBRATE_BED
|
||||
"Calibrate XYZ"
|
||||
"Kalibracja XYZ"
|
||||
|
||||
#MSG_HOMEYZ c=0 r=0
|
||||
#MSG_HOMEYZ
|
||||
"Calibrate Z"
|
||||
"Kalibruj Z"
|
||||
|
||||
|
|
@ -150,11 +142,11 @@
|
|||
"Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
|
||||
"Kalibracja XYZ. Przekrec pokretlo, aby przesunac os Z do gornych ogranicznikow. Nacisnij, by potwierdzic."
|
||||
|
||||
#MSG_HOMEYZ_DONE c=0 r=0
|
||||
#MSG_HOMEYZ_DONE
|
||||
"Calibration done"
|
||||
"Kalibracja OK"
|
||||
|
||||
#MSG_MENU_CALIBRATION c=0 r=0
|
||||
#MSG_MENU_CALIBRATION
|
||||
"Calibration"
|
||||
"Kalibracja"
|
||||
|
||||
|
|
@ -162,19 +154,15 @@
|
|||
"Cancel"
|
||||
"Anuluj"
|
||||
|
||||
#MSG_SD_INSERTED c=0 r=0
|
||||
"Card inserted"
|
||||
"Karta wlozona"
|
||||
|
||||
#MSG_SD_REMOVED c=0 r=0
|
||||
#MSG_SD_REMOVED
|
||||
"Card removed"
|
||||
"Karta wyjeta"
|
||||
|
||||
#MSG_NOT_COLOR c=0 r=0
|
||||
#MSG_NOT_COLOR
|
||||
"Color not correct"
|
||||
"Kolor zanieczysz."
|
||||
|
||||
#MSG_COOLDOWN c=0 r=0
|
||||
#MSG_COOLDOWN
|
||||
"Cooldown"
|
||||
"Chlodzenie"
|
||||
|
||||
|
|
@ -182,15 +170,15 @@
|
|||
"Copy selected language?"
|
||||
"Skopiowac wybrany jezyk?"
|
||||
|
||||
#MSG_CRASHDETECT_ON c=0 r=0
|
||||
#MSG_CRASHDETECT_ON
|
||||
"Crash det. [on]"
|
||||
"Wykr.zderzen [wl]"
|
||||
|
||||
#MSG_CRASHDETECT_NA c=0 r=0
|
||||
#MSG_CRASHDETECT_NA
|
||||
"Crash det. [N/A]"
|
||||
"Wykr.zderzen[n/d]"
|
||||
|
||||
#MSG_CRASHDETECT_OFF c=0 r=0
|
||||
#MSG_CRASHDETECT_OFF
|
||||
"Crash det. [off]"
|
||||
"Wykr.zderzen[wyl]"
|
||||
|
||||
|
|
@ -214,7 +202,7 @@
|
|||
"Date:"
|
||||
"Data:"
|
||||
|
||||
#MSG_DISABLE_STEPPERS c=0 r=0
|
||||
#MSG_DISABLE_STEPPERS
|
||||
"Disable steppers"
|
||||
"Wylaczenie silnikow"
|
||||
|
||||
|
|
@ -226,34 +214,14 @@
|
|||
"Do you want to repeat last step to readjust distance between nozzle and heatbed?"
|
||||
"Chcesz powtorzyc ostatni krok i ponownie ustawic odleglosc miedzy dysza a stolikiem?"
|
||||
|
||||
#MSG_EXTRUDER_CORRECTION c=9 r=0
|
||||
"E-correct"
|
||||
"Korekcja E"
|
||||
#MSG_EXTRUDER_CORRECTION c=10
|
||||
"E-correct:"
|
||||
"Korekcja E:"
|
||||
|
||||
#MSG_EJECT_FILAMENT c=17 r=1
|
||||
"Eject filament"
|
||||
"Wysun filament"
|
||||
|
||||
#MSG_EJECT_FILAMENT1 c=17 r=1
|
||||
"Eject filament 1"
|
||||
"Wysun filament 1"
|
||||
|
||||
#MSG_EJECT_FILAMENT2 c=17 r=1
|
||||
"Eject filament 2"
|
||||
"Wysun filament 2"
|
||||
|
||||
#MSG_EJECT_FILAMENT3 c=17 r=1
|
||||
"Eject filament 3"
|
||||
"Wysun filament 3"
|
||||
|
||||
#MSG_EJECT_FILAMENT4 c=17 r=1
|
||||
"Eject filament 4"
|
||||
"Wysun filament 4"
|
||||
|
||||
#MSG_EJECT_FILAMENT5 c=17 r=1
|
||||
"Eject filament 5"
|
||||
"Wysun filament 5"
|
||||
|
||||
#
|
||||
"Eject"
|
||||
"Wysun"
|
||||
|
|
@ -266,11 +234,11 @@
|
|||
"Endstop not hit"
|
||||
"Krancowka nie aktyw."
|
||||
|
||||
#MSG_SELFTEST_ENDSTOP c=0 r=0
|
||||
#MSG_SELFTEST_ENDSTOP
|
||||
"Endstop"
|
||||
"Krancowka"
|
||||
|
||||
#MSG_SELFTEST_ENDSTOPS c=0 r=0
|
||||
#MSG_SELFTEST_ENDSTOPS
|
||||
"Endstops"
|
||||
"Krancowki"
|
||||
|
||||
|
|
@ -282,31 +250,11 @@
|
|||
"ERROR: Filament sensor is not responding, please check connection."
|
||||
"BLAD: Czujnik filamentu nie odpowiada, sprawdz polaczenie."
|
||||
|
||||
#MSG_ERROR c=0 r=0
|
||||
#MSG_ERROR
|
||||
"ERROR:"
|
||||
"BLAD:"
|
||||
|
||||
#
|
||||
"External SPI flash W25X20CL not responding."
|
||||
"Zewnetrzna pamiec flash SPI W25X20CL nie odpowiada."
|
||||
|
||||
#
|
||||
"Extruder 1"
|
||||
"Ekstruder 1"
|
||||
|
||||
#
|
||||
"Extruder 2"
|
||||
"Ekstruder 2"
|
||||
|
||||
#
|
||||
"Extruder 3"
|
||||
"Ekstruder 3"
|
||||
|
||||
#
|
||||
"Extruder 4"
|
||||
"Ekstruder 4"
|
||||
|
||||
#MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18 r=0
|
||||
#MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
|
||||
"Extruder fan:"
|
||||
"Went. ekstrudera:"
|
||||
|
||||
|
|
@ -314,7 +262,7 @@
|
|||
"Extruder info"
|
||||
"Informacje o ekstruderze"
|
||||
|
||||
#MSG_MOVE_E c=0 r=0
|
||||
#MSG_MOVE_E
|
||||
"Extruder"
|
||||
"Ekstruder"
|
||||
|
||||
|
|
@ -338,11 +286,11 @@
|
|||
"Fail stats"
|
||||
"Statystyki bledow"
|
||||
|
||||
#MSG_FAN_SPEED c=14 r=0
|
||||
#MSG_FAN_SPEED c=14
|
||||
"Fan speed"
|
||||
"Predkosc went."
|
||||
|
||||
#MSG_SELFTEST_FAN c=20 r=0
|
||||
#MSG_SELFTEST_FAN c=20
|
||||
"Fan test"
|
||||
"Test wentylatora"
|
||||
|
||||
|
|
@ -354,19 +302,15 @@
|
|||
"Fans check [off]"
|
||||
"Sprawd.went.[wyl]"
|
||||
|
||||
#MSG_FSENSOR_ON c=0 r=0
|
||||
#MSG_FSENSOR_ON
|
||||
"Fil. sensor [on]"
|
||||
"Czuj. filam. [wl]"
|
||||
|
||||
#MSG_RESPONSE_POOR c=20 r=2
|
||||
"Fil. sensor response is poor, disable it?"
|
||||
"Reakcja czujnika slaba, wylaczyc?"
|
||||
|
||||
#MSG_FSENSOR_NA c=0 r=0
|
||||
#MSG_FSENSOR_NA
|
||||
"Fil. sensor [N/A]"
|
||||
"Czuj. filam.[N/D]"
|
||||
|
||||
#MSG_FSENSOR_OFF c=0 r=0
|
||||
#MSG_FSENSOR_OFF
|
||||
"Fil. sensor [off]"
|
||||
"Czuj. filam.[wyl]"
|
||||
|
||||
|
|
@ -378,18 +322,14 @@
|
|||
"Filament extruding & with correct color?"
|
||||
"Filament wychodzi z dyszy a kolor jest czysty?"
|
||||
|
||||
#MSG_NOT_LOADED c=19 r=0
|
||||
#MSG_NOT_LOADED c=19
|
||||
"Filament not loaded"
|
||||
"Fil. nie zaladowany"
|
||||
|
||||
#MSG_FILAMENT_SENSOR c=20 r=0
|
||||
#MSG_FILAMENT_SENSOR c=20
|
||||
"Filament sensor"
|
||||
"Czujnik filamentu"
|
||||
|
||||
#MSG_SELFTEST_FILAMENT_SENSOR c=18 r=0
|
||||
"Filament sensor:"
|
||||
"Czujnik filamentu:"
|
||||
|
||||
#MSG_FILAMENT_USED c=19 r=1
|
||||
"Filament used"
|
||||
"Uzyty filament"
|
||||
|
|
@ -418,15 +358,15 @@
|
|||
"Fix the issue and then press button on MMU unit."
|
||||
"Rozwiaz problem i wcisnij przycisk na MMU."
|
||||
|
||||
#MSG_FLOW c=0 r=0
|
||||
#MSG_FLOW
|
||||
"Flow"
|
||||
"Przeplyw"
|
||||
|
||||
#MSG_PRUSA3D_FORUM c=0 r=0
|
||||
#MSG_PRUSA3D_FORUM
|
||||
"forum.prusa3d.com"
|
||||
"\x00"
|
||||
|
||||
#MSG_SELFTEST_COOLING_FAN c=20 r=0
|
||||
#MSG_SELFTEST_COOLING_FAN c=20
|
||||
"Front print fan?"
|
||||
"Przedni went. druku?"
|
||||
|
||||
|
|
@ -434,23 +374,23 @@
|
|||
"Front side[um]"
|
||||
"Przod [um]"
|
||||
|
||||
#MSG_SELFTEST_FANS c=0 r=0
|
||||
#MSG_SELFTEST_FANS
|
||||
"Front/left fans"
|
||||
"Przedni/lewy wentylator"
|
||||
|
||||
#MSG_SELFTEST_HEATERTHERMISTOR c=0 r=0
|
||||
#MSG_SELFTEST_HEATERTHERMISTOR
|
||||
"Heater/Thermistor"
|
||||
"Grzalka/Termistor"
|
||||
|
||||
#MSG_BED_HEATING_SAFETY_DISABLED c=0 r=0
|
||||
#MSG_BED_HEATING_SAFETY_DISABLED
|
||||
"Heating disabled by safety timer."
|
||||
"Grzanie wylaczone przez wyl. czasowy"
|
||||
|
||||
#MSG_HEATING_COMPLETE c=20 r=0
|
||||
#MSG_HEATING_COMPLETE c=20
|
||||
"Heating done."
|
||||
"Grzanie zakonczone"
|
||||
|
||||
#MSG_HEATING c=0 r=0
|
||||
#MSG_HEATING
|
||||
"Heating"
|
||||
"Grzanie..."
|
||||
|
||||
|
|
@ -458,51 +398,47 @@
|
|||
"Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
|
||||
"Czesc, jestem Twoja drukarka Original Prusa i3. Czy potrzebujesz pomocy z ustawieniem?"
|
||||
|
||||
#MSG_PRUSA3D_HOWTO c=0 r=0
|
||||
#MSG_PRUSA3D_HOWTO
|
||||
"howto.prusa3d.com"
|
||||
"\x00"
|
||||
|
||||
#
|
||||
"Change extruder"
|
||||
"Zmiana ekstrudera"
|
||||
|
||||
#MSG_FILAMENTCHANGE c=0 r=0
|
||||
#MSG_FILAMENTCHANGE
|
||||
"Change filament"
|
||||
"Wymiana filamentu"
|
||||
|
||||
#MSG_CHANGE_SUCCESS c=0 r=0
|
||||
#MSG_CHANGE_SUCCESS
|
||||
"Change success!"
|
||||
"Wymiana ok!"
|
||||
|
||||
#MSG_CORRECTLY c=20 r=0
|
||||
#MSG_CORRECTLY c=20
|
||||
"Changed correctly?"
|
||||
"Wymiana ok?"
|
||||
|
||||
#MSG_SELFTEST_CHECK_BED c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_BED c=20
|
||||
"Checking bed "
|
||||
"Kontrola stolu"
|
||||
|
||||
#MSG_SELFTEST_CHECK_ENDSTOPS c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_ENDSTOPS c=20
|
||||
"Checking endstops"
|
||||
"Kontrola krancowek"
|
||||
|
||||
#MSG_SELFTEST_CHECK_HOTEND c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_HOTEND c=20
|
||||
"Checking hotend "
|
||||
"Kontrola hotendu"
|
||||
|
||||
#MSG_SELFTEST_CHECK_FSENSOR c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_FSENSOR c=20
|
||||
"Checking sensors "
|
||||
"Sprawdzanie czujnikow"
|
||||
|
||||
#MSG_SELFTEST_CHECK_X c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_X c=20
|
||||
"Checking X axis "
|
||||
"Kontrola osi X"
|
||||
|
||||
#MSG_SELFTEST_CHECK_Y c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_Y c=20
|
||||
"Checking Y axis "
|
||||
"Kontrola osi Y"
|
||||
|
||||
#MSG_SELFTEST_CHECK_Z c=20 r=0
|
||||
#MSG_SELFTEST_CHECK_Z c=20
|
||||
"Checking Z axis "
|
||||
"Kontrola osi Z"
|
||||
|
||||
|
|
@ -530,35 +466,15 @@
|
|||
"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."
|
||||
"Zaczne drukowac linie. Stopniowo opuszczaj dysze przekrecajac pokretlo, poki nie uzyskasz optymalnej wysokosci. Sprawdz obrazki w naszym Podreczniku w rozdz. Kalibracja"
|
||||
|
||||
#MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE1 c=60 r=0
|
||||
"Improving bed calibration point"
|
||||
"Poprawiam precyzje punktu kalibracyjnego"
|
||||
|
||||
#MSG_WATCH c=0 r=0
|
||||
#MSG_WATCH
|
||||
"Info screen"
|
||||
"Ekran informacyjny"
|
||||
|
||||
#MSG_FILAMENT_LOADING_T0 c=20 r=4
|
||||
"Insert filament into extruder 1. Click when done."
|
||||
"Wloz filament do ekstrudera 1. Potwierdz naciskajac pokretlo."
|
||||
|
||||
#MSG_FILAMENT_LOADING_T1 c=20 r=4
|
||||
"Insert filament into extruder 2. Click when done."
|
||||
"Wloz filament do ekstrudera 2. Potwierdz naciskajac pokretlo."
|
||||
|
||||
#MSG_FILAMENT_LOADING_T2 c=20 r=4
|
||||
"Insert filament into extruder 3. Click when done."
|
||||
"Wloz filament do ekstrudera 3. Potwierdz naciskajac pokretlo."
|
||||
|
||||
#MSG_FILAMENT_LOADING_T3 c=20 r=4
|
||||
"Insert filament into extruder 4. Click when done."
|
||||
"Wloz filament do ekstrudera 4. Potwierdz naciskajac pokretlo."
|
||||
|
||||
#
|
||||
"Is filament 1 loaded?"
|
||||
"Filament 1 zaladowany?"
|
||||
|
||||
#MSG_INSERT_FILAMENT c=20 r=0
|
||||
#MSG_INSERT_FILAMENT c=20
|
||||
"Insert filament"
|
||||
"Wprowadz filament"
|
||||
|
||||
|
|
@ -578,10 +494,6 @@
|
|||
"Is steel sheet on heatbed?"
|
||||
"Czy plyta stal. jest na podgrzew. stole?"
|
||||
|
||||
#MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION c=20 r=0
|
||||
"Iteration "
|
||||
"Iteracja "
|
||||
|
||||
#
|
||||
"Last print failures"
|
||||
"Ostatnie bledy druku"
|
||||
|
|
@ -590,7 +502,7 @@
|
|||
"Last print"
|
||||
"Ost. wydruk"
|
||||
|
||||
#MSG_SELFTEST_EXTRUDER_FAN c=20 r=0
|
||||
#MSG_SELFTEST_EXTRUDER_FAN c=20
|
||||
"Left hotend fan?"
|
||||
"Lewy went hotendu?"
|
||||
|
||||
|
|
@ -606,19 +518,19 @@
|
|||
"Lin. correction"
|
||||
"Korekcja lin."
|
||||
|
||||
#MSG_BABYSTEP_Z c=0 r=0
|
||||
#MSG_BABYSTEP_Z
|
||||
"Live adjust Z"
|
||||
"Ustaw. Live Z"
|
||||
|
||||
#MSG_LOAD_FILAMENT c=17 r=0
|
||||
#MSG_LOAD_FILAMENT c=17
|
||||
"Load filament"
|
||||
"Ladowanie fil."
|
||||
|
||||
#MSG_LOADING_COLOR c=0 r=0
|
||||
#MSG_LOADING_COLOR
|
||||
"Loading color"
|
||||
"Czyszcz. koloru"
|
||||
|
||||
#MSG_LOADING_FILAMENT c=20 r=0
|
||||
#MSG_LOADING_FILAMENT c=20
|
||||
"Loading filament"
|
||||
"Laduje filament"
|
||||
|
||||
|
|
@ -634,15 +546,15 @@
|
|||
"M117 First layer cal."
|
||||
"M117 Kal. 1. warstwy"
|
||||
|
||||
#MSG_MAIN c=0 r=0
|
||||
#MSG_MAIN
|
||||
"Main"
|
||||
"Menu glowne"
|
||||
|
||||
#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60 r=0
|
||||
#MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
|
||||
"Measuring reference height of calibration point"
|
||||
"Okreslam wysokosc odniesienia punktu kalibracyjnego"
|
||||
|
||||
#MSG_MESH_BED_LEVELING c=0 r=0
|
||||
#MSG_MESH_BED_LEVELING
|
||||
"Mesh Bed Leveling"
|
||||
"Poziomowanie stolu wg siatki"
|
||||
|
||||
|
|
@ -674,11 +586,11 @@
|
|||
"MMU OK. Resuming..."
|
||||
"MMU OK. Wznawianie..."
|
||||
|
||||
#MSG_STEALTH_MODE_OFF c=0 r=0
|
||||
#MSG_STEALTH_MODE_OFF
|
||||
"Mode [Normal]"
|
||||
"Tryb [normalny]"
|
||||
|
||||
#MSG_SILENT_MODE_ON c=0 r=0
|
||||
#MSG_SILENT_MODE_ON
|
||||
"Mode [silent]"
|
||||
"Tryb [cichy]"
|
||||
|
||||
|
|
@ -690,15 +602,15 @@
|
|||
"MMU power fails"
|
||||
"Zaniki zasil. MMU"
|
||||
|
||||
#MSG_STEALTH_MODE_ON c=0 r=0
|
||||
#MSG_STEALTH_MODE_ON
|
||||
"Mode [Stealth]"
|
||||
"Tryb [Stealth]"
|
||||
|
||||
#MSG_AUTO_MODE_ON c=0 r=0
|
||||
#MSG_AUTO_MODE_ON
|
||||
"Mode [auto power]"
|
||||
"Tryb [automatycz]"
|
||||
|
||||
#MSG_SILENT_MODE_OFF c=0 r=0
|
||||
#MSG_SILENT_MODE_OFF
|
||||
"Mode [high power]"
|
||||
"Tryb[wysoka wyd.]"
|
||||
|
||||
|
|
@ -706,31 +618,31 @@
|
|||
"MMU2 connected"
|
||||
"MMU podlaczone"
|
||||
|
||||
#MSG_SELFTEST_MOTOR c=0 r=0
|
||||
#MSG_SELFTEST_MOTOR
|
||||
"Motor"
|
||||
"Silnik"
|
||||
|
||||
#MSG_MOVE_AXIS c=0 r=0
|
||||
#MSG_MOVE_AXIS
|
||||
"Move axis"
|
||||
"Ruch osi"
|
||||
|
||||
#MSG_MOVE_X c=0 r=0
|
||||
#MSG_MOVE_X
|
||||
"Move X"
|
||||
"Ruch osi X"
|
||||
|
||||
#MSG_MOVE_Y c=0 r=0
|
||||
#MSG_MOVE_Y
|
||||
"Move Y"
|
||||
"Ruch osi Y"
|
||||
|
||||
#MSG_MOVE_Z c=0 r=0
|
||||
#MSG_MOVE_Z
|
||||
"Move Z"
|
||||
"Ruch osi Z"
|
||||
|
||||
#MSG_NO_MOVE c=0 r=0
|
||||
#MSG_NO_MOVE
|
||||
"No move."
|
||||
"Brak ruchu."
|
||||
|
||||
#MSG_NO_CARD c=0 r=0
|
||||
#MSG_NO_CARD
|
||||
"No SD card"
|
||||
"Brak karty SD"
|
||||
|
||||
|
|
@ -738,11 +650,11 @@
|
|||
"N/A"
|
||||
"N/D"
|
||||
|
||||
#MSG_NO c=0 r=0
|
||||
#MSG_NO
|
||||
"No"
|
||||
"Nie"
|
||||
|
||||
#MSG_SELFTEST_NOTCONNECTED c=0 r=0
|
||||
#MSG_SELFTEST_NOTCONNECTED
|
||||
"Not connected"
|
||||
"Nie podlaczono "
|
||||
|
||||
|
|
@ -750,11 +662,7 @@
|
|||
"New firmware version available:"
|
||||
"Dostepna nowa wersja firmware:"
|
||||
|
||||
#
|
||||
"No "
|
||||
"Nie"
|
||||
|
||||
#MSG_SELFTEST_FAN_NO c=19 r=0
|
||||
#MSG_SELFTEST_FAN_NO c=19
|
||||
"Not spinning"
|
||||
"Nie kreci sie"
|
||||
|
||||
|
|
@ -766,7 +674,7 @@
|
|||
"Now I will preheat nozzle for PLA."
|
||||
"Nagrzewam dysze dla PLA."
|
||||
|
||||
#MSG_NOZZLE c=0 r=0
|
||||
#MSG_NOZZLE
|
||||
"Nozzle"
|
||||
"Dysza"
|
||||
|
||||
|
|
@ -782,7 +690,7 @@
|
|||
"Nozzle FAN"
|
||||
"Went. hotendu"
|
||||
|
||||
#MSG_PAUSE_PRINT c=0 r=0
|
||||
#MSG_PAUSE_PRINT
|
||||
"Pause print"
|
||||
"Wstrzymanie wydruku"
|
||||
|
||||
|
|
@ -814,7 +722,7 @@
|
|||
"Please clean the nozzle for calibration. Click when done."
|
||||
"Dla prawidl. kalibracji nalezy oczyscic dysze. Potw. guzikiem."
|
||||
|
||||
#MSG_SELFTEST_PLEASECHECK c=0 r=0
|
||||
#MSG_SELFTEST_PLEASECHECK
|
||||
"Please check :"
|
||||
"Sprawdz :"
|
||||
|
||||
|
|
@ -866,7 +774,7 @@
|
|||
"Please update firmware in your MMU2. Waiting for reset."
|
||||
"Prosze zaktualizowac Firmware MMU2. Czekam na reset."
|
||||
|
||||
#MSG_PLEASE_WAIT c=20 r=0
|
||||
#MSG_PLEASE_WAIT c=20
|
||||
"Please wait"
|
||||
"Prosze czekac"
|
||||
|
||||
|
|
@ -874,11 +782,11 @@
|
|||
"Please remove shipping helpers first."
|
||||
"Najpierw usun zabezpieczenia transportowe"
|
||||
|
||||
#MSG_PREHEAT_NOZZLE c=20 r=0
|
||||
#MSG_PREHEAT_NOZZLE c=20
|
||||
"Preheat the nozzle!"
|
||||
"Nagrzej dysze!"
|
||||
|
||||
#MSG_PREHEAT c=0 r=0
|
||||
#MSG_PREHEAT
|
||||
"Preheat"
|
||||
"Grzanie"
|
||||
|
||||
|
|
@ -898,7 +806,7 @@
|
|||
"Power failures"
|
||||
"Zaniki zasilania"
|
||||
|
||||
#MSG_PRINT_ABORTED c=20 r=0
|
||||
#MSG_PRINT_ABORTED c=20
|
||||
"Print aborted"
|
||||
"Druk przerwany"
|
||||
|
||||
|
|
@ -910,11 +818,11 @@
|
|||
"Preheating to unload"
|
||||
"Nagrzew. do rozlad."
|
||||
|
||||
#MSG_SELFTEST_PRINT_FAN_SPEED c=18 r=0
|
||||
#MSG_SELFTEST_PRINT_FAN_SPEED c=18
|
||||
"Print fan:"
|
||||
"Went. wydruku:"
|
||||
|
||||
#MSG_CARD_MENU c=0 r=0
|
||||
#MSG_CARD_MENU
|
||||
"Print from SD"
|
||||
"Druk z karty SD"
|
||||
|
||||
|
|
@ -938,15 +846,7 @@
|
|||
"Print FAN"
|
||||
"Went. wydruku"
|
||||
|
||||
#WELCOME_MSG c=20 r=0
|
||||
"Prusa i3 MK2.5 ready."
|
||||
"Prusa i3 MK2.5 gotowa"
|
||||
|
||||
#WELCOME_MSG c=20 r=0
|
||||
"Prusa i3 MK3 ready."
|
||||
"Prusa i3 MK3 gotowa"
|
||||
|
||||
#MSG_PRUSA3D c=0 r=0
|
||||
#MSG_PRUSA3D
|
||||
"prusa3d.com"
|
||||
"\x00"
|
||||
|
||||
|
|
@ -966,19 +866,15 @@
|
|||
"Prusa i3 MK3S OK."
|
||||
"Prusa i3 MK3S OK"
|
||||
|
||||
#
|
||||
"Prusa i3 MK2 ready."
|
||||
"Prusa i3 MK2 gotowa"
|
||||
|
||||
#MSG_CALIBRATE_BED_RESET c=0 r=0
|
||||
#MSG_CALIBRATE_BED_RESET
|
||||
"Reset XYZ calibr."
|
||||
"Reset kalibr. XYZ"
|
||||
|
||||
#MSG_BED_CORRECTION_RESET c=0 r=0
|
||||
#MSG_BED_CORRECTION_RESET
|
||||
"Reset"
|
||||
"\x00"
|
||||
|
||||
#MSG_RESUME_PRINT c=0 r=0
|
||||
#MSG_RESUME_PRINT
|
||||
"Resume print"
|
||||
"Wznowic wydruk"
|
||||
|
||||
|
|
@ -1014,31 +910,31 @@
|
|||
"Right"
|
||||
"Prawa"
|
||||
|
||||
#MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60 r=0
|
||||
#MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
|
||||
"Searching bed calibration point"
|
||||
"Szukam punktu kalibracyjnego na stole"
|
||||
|
||||
#MSG_LANGUAGE_SELECT c=0 r=0
|
||||
#MSG_LANGUAGE_SELECT
|
||||
"Select language"
|
||||
"Wybor jezyka"
|
||||
|
||||
#MSG_SELFTEST_OK c=0 r=0
|
||||
#MSG_SELFTEST_OK
|
||||
"Self test OK"
|
||||
"Selftest OK"
|
||||
|
||||
#MSG_SELFTEST_START c=20 r=0
|
||||
#MSG_SELFTEST_START c=20
|
||||
"Self test start "
|
||||
"Rozpoczynanie Selftestu"
|
||||
|
||||
#MSG_SELFTEST c=0 r=0
|
||||
#MSG_SELFTEST
|
||||
"Selftest "
|
||||
"Selftest "
|
||||
|
||||
#MSG_SELFTEST_ERROR c=0 r=0
|
||||
#MSG_SELFTEST_ERROR
|
||||
"Selftest error !"
|
||||
"Blad selftest !"
|
||||
|
||||
#MSG_SELFTEST_FAILED c=20 r=0
|
||||
#MSG_SELFTEST_FAILED c=20
|
||||
"Selftest failed "
|
||||
"Selftest nieudany"
|
||||
|
||||
|
|
@ -1058,7 +954,7 @@
|
|||
"Set temperature:"
|
||||
"Ustaw. temperatury:"
|
||||
|
||||
#MSG_SETTINGS c=0 r=0
|
||||
#MSG_SETTINGS
|
||||
"Settings"
|
||||
"Ustawienia"
|
||||
|
||||
|
|
@ -1070,33 +966,25 @@
|
|||
"Sensor state"
|
||||
"Stan czujnikow"
|
||||
|
||||
#
|
||||
"Sensors info"
|
||||
"Info o czujnikach"
|
||||
|
||||
#
|
||||
"Show pinda state"
|
||||
"Stan sondy PINDA"
|
||||
|
||||
#MSG_FILE_CNT c=20 r=4
|
||||
"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."
|
||||
|
||||
#MSG_SORT_NONE c=17 r=1
|
||||
"Sort: [none]"
|
||||
"Sortuj: [brak]"
|
||||
"Sort [none]"
|
||||
"Sortuj [brak]"
|
||||
|
||||
#MSG_SORT_TIME c=17 r=1
|
||||
"Sort: [time]"
|
||||
"Sortuj: [czas]"
|
||||
"Sort [time]"
|
||||
"Sortuj [czas]"
|
||||
|
||||
#
|
||||
"Severe skew"
|
||||
"Znaczny skos"
|
||||
|
||||
#MSG_SORT_ALPHA c=17 r=1
|
||||
"Sort: [alphabet]"
|
||||
"Sortuj: [alfabet]"
|
||||
"Sort [alphabet]"
|
||||
"Sortuj [alfabet]"
|
||||
|
||||
#MSG_SORTING c=20 r=1
|
||||
"Sorting files"
|
||||
|
|
@ -1126,11 +1014,11 @@
|
|||
"Sound [silent]"
|
||||
"Dzwiek [Cichy]"
|
||||
|
||||
#MSG_SPEED c=0 r=0
|
||||
#MSG_SPEED
|
||||
"Speed"
|
||||
"Predkosc"
|
||||
|
||||
#MSG_SELFTEST_FAN_YES c=19 r=0
|
||||
#MSG_SELFTEST_FAN_YES c=19
|
||||
"Spinning"
|
||||
"Kreci sie"
|
||||
|
||||
|
|
@ -1138,23 +1026,23 @@
|
|||
"Stable ambient temperature 21-26C is needed a rigid stand is required."
|
||||
"Potrzebna jest stabilna temperatura otoczenia 21-26C i stabilne podloze."
|
||||
|
||||
#MSG_STATISTICS c=0 r=0
|
||||
#MSG_STATISTICS
|
||||
"Statistics "
|
||||
"Statystyki"
|
||||
|
||||
#MSG_STOP_PRINT c=0 r=0
|
||||
#MSG_STOP_PRINT
|
||||
"Stop print"
|
||||
"Zatrzymac druk"
|
||||
|
||||
#MSG_STOPPED c=0 r=0
|
||||
#MSG_STOPPED
|
||||
"STOPPED. "
|
||||
"ZATRZYMANO."
|
||||
|
||||
#MSG_SUPPORT c=0 r=0
|
||||
#MSG_SUPPORT
|
||||
"Support"
|
||||
"Wsparcie"
|
||||
|
||||
#MSG_SELFTEST_SWAPPED c=0 r=0
|
||||
#MSG_SELFTEST_SWAPPED
|
||||
"Swapped"
|
||||
"Zamieniono"
|
||||
|
||||
|
|
@ -1182,7 +1070,7 @@
|
|||
"Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
|
||||
"Kalibracja temperaturowa zakonczona i wlaczona. Moze byc wylaczona z menu Ustawienia -> Kalibracja temp."
|
||||
|
||||
#MSG_TEMPERATURE c=0 r=0
|
||||
#MSG_TEMPERATURE
|
||||
"Temperature"
|
||||
"Temperatura"
|
||||
|
||||
|
|
@ -1202,7 +1090,7 @@
|
|||
"Total print time"
|
||||
"Calkowity czas druku"
|
||||
|
||||
#MSG_TUNE c=0 r=0
|
||||
#MSG_TUNE
|
||||
"Tune"
|
||||
"Strojenie"
|
||||
|
||||
|
|
@ -1210,10 +1098,6 @@
|
|||
"Unload"
|
||||
"Rozladuj"
|
||||
|
||||
#
|
||||
"Unload all"
|
||||
"Rozladuj wszystkie"
|
||||
|
||||
#
|
||||
"Total failures"
|
||||
"Suma bledow"
|
||||
|
|
@ -1226,7 +1110,7 @@
|
|||
"to unload filament"
|
||||
"aby rozlad. filament"
|
||||
|
||||
#MSG_UNLOAD_FILAMENT c=17 r=0
|
||||
#MSG_UNLOAD_FILAMENT c=17
|
||||
"Unload filament"
|
||||
"Rozladowanie fil."
|
||||
|
||||
|
|
@ -1250,7 +1134,7 @@
|
|||
"unknown"
|
||||
"nieznane"
|
||||
|
||||
#MSG_USERWAIT c=0 r=0
|
||||
#MSG_USERWAIT
|
||||
"Wait for user..."
|
||||
"Czekam na uzytkownika..."
|
||||
|
||||
|
|
@ -1282,7 +1166,7 @@
|
|||
"Was filament unload successful?"
|
||||
"Rozladowanie fil. ok?"
|
||||
|
||||
#MSG_SELFTEST_WIRINGERROR c=0 r=0
|
||||
#MSG_SELFTEST_WIRINGERROR
|
||||
"Wiring error"
|
||||
"Blad polaczenia"
|
||||
|
||||
|
|
@ -1298,7 +1182,7 @@
|
|||
"XYZ calibration failed. Please consult the manual."
|
||||
"Kalibracja XYZ nieudana. Sprawdz przyczyny i rozwiazania w instrukcji."
|
||||
|
||||
#MSG_YES c=0 r=0
|
||||
#MSG_YES
|
||||
"Yes"
|
||||
"Tak"
|
||||
|
||||
|
|
@ -1315,8 +1199,8 @@
|
|||
"Kalibracja XYZ prawidlowa. Osie X/Y lekko skosne. Dobra robota!"
|
||||
|
||||
#
|
||||
"X-correct"
|
||||
"Korekcja X"
|
||||
"X-correct:"
|
||||
"Korekcja X:"
|
||||
|
||||
#MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
|
||||
"XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
|
||||
|
|
@ -1330,18 +1214,10 @@
|
|||
"XYZ calibration compromised. Right front calibration point not reachable."
|
||||
"Kalibracja XYZ niedokladna. Prawy przedni punkt nieosiagalny."
|
||||
|
||||
#MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_LEFT_FAR c=20 r=8
|
||||
"XYZ calibration compromised. Left front calibration point not reachable."
|
||||
"Kalibracja XYZ niedokladna. Lewy przedni punkt nieosiagalny."
|
||||
|
||||
#MSG_LOAD_ALL c=17 r=0
|
||||
#MSG_LOAD_ALL c=17
|
||||
"Load all"
|
||||
"Zalad. wszystkie"
|
||||
|
||||
#MSG_LOAD_FILAMENT_1 c=17 r=0
|
||||
"Load filament 1"
|
||||
"Zaladuj fil. 1"
|
||||
|
||||
#
|
||||
"XYZ calibration failed. Bed calibration point was not found."
|
||||
"Kalibracja XYZ nieudana. Nie znaleziono punktow kalibracyjnych."
|
||||
|
|
@ -1350,38 +1226,18 @@
|
|||
"XYZ calibration failed. Front calibration points not reachable."
|
||||
"Kalibr. XYZ nieudana. Przednie punkty kalibr. nieosiagalne. Nalezy poprawic montaz drukarki."
|
||||
|
||||
#
|
||||
"XYZ calibration failed. Left front calibration point not reachable."
|
||||
"Kalibr. XYZ nieudana. Lewy przedni punkt nieosiagalny. Nalezy poprawic montaz drukarki."
|
||||
|
||||
#MSG_LOAD_FILAMENT_2 c=17 r=0
|
||||
"Load filament 2"
|
||||
"Zaladuj fil. 2"
|
||||
|
||||
#
|
||||
"XYZ calibration failed. Right front calibration point not reachable."
|
||||
"Kalibr. XYZ nieudana. Prawy przedni punkt nieosiagalny. Nalezy poprawic montaz drukarki."
|
||||
|
||||
#MSG_LOAD_FILAMENT_3 c=17 r=0
|
||||
"Load filament 3"
|
||||
"Zaladuj fil. 3"
|
||||
|
||||
#
|
||||
"Y distance from min"
|
||||
"Dystans od 0 w osi Y"
|
||||
|
||||
#
|
||||
"Y-correct"
|
||||
"Korekcja Y"
|
||||
"Y-correct:"
|
||||
"Korekcja Y:"
|
||||
|
||||
#MSG_LOAD_FILAMENT_4 c=17 r=0
|
||||
"Load filament 4"
|
||||
"Zaladuj fil. 4"
|
||||
|
||||
#MSG_LOAD_FILAMENT_5 c=17 r=0
|
||||
"Load filament 5"
|
||||
"Laduj filament 5"
|
||||
|
||||
#MSG_OFF c=0 r=0
|
||||
#MSG_OFF
|
||||
" [off]"
|
||||
"\x00"
|
||||
|
|
|
|||
|
|
@ -0,0 +1,6 @@
|
|||
#This powershell script prepares your Windows 10 64-bit computer to be able to compile your
|
||||
#Prusa Firmware by installing a Linux Subsystem
|
||||
#Please run it as administrator
|
||||
|
||||
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
|
||||
Invoke-WebRequest -Uri https://aka.ms/wsl-ubuntu -OutFile Ubuntu.appx -UseBasicParsing
|
||||
Loading…
Reference in New Issue