messages updated, different bowden lengths for SNMM used, M600 for SNMM updated, stop print for SNMM updated, load all filaments added

This commit is contained in:
PavelSindler 2017-05-05 01:29:59 +02:00
parent df9f063f99
commit 134a50f5b3
12 changed files with 102 additions and 102 deletions

View file

@ -5,7 +5,7 @@
#include "Configuration_prusa.h" #include "Configuration_prusa.h"
// Firmware version // Firmware version
#define FW_version "3.0.10-11" #define FW_version "3.0.11-RC1"
#define FW_PRUSA3D_MAGIC "PRUSA3DFW" #define FW_PRUSA3D_MAGIC "PRUSA3DFW"
#define FW_PRUSA3D_MAGIC_LEN 10 #define FW_PRUSA3D_MAGIC_LEN 10

View file

@ -1200,6 +1200,7 @@ void setup()
// Show the message. // Show the message.
lcd_show_fullscreen_message_and_wait_P(MSG_FOLLOW_CALIBRATION_FLOW); lcd_show_fullscreen_message_and_wait_P(MSG_FOLLOW_CALIBRATION_FLOW);
} }
for (int i = 0; i<4; i++) EEPROM_read_B(EEPROM_BOWDEN_LENGTH + i * 2, &bowden_length[i]);
lcd_update_enable(true); lcd_update_enable(true);
// Store the currently running firmware into an eeprom, // Store the currently running firmware into an eeprom,
@ -5082,7 +5083,7 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp
plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 50, active_extruder); plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 50, active_extruder);
target[E_AXIS] += (FIL_COOLING*-1); target[E_AXIS] += (FIL_COOLING*-1);
plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 50, active_extruder); plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 50, active_extruder);
target[E_AXIS] += (BOWDEN_LENGTH*-1); target[E_AXIS] += (bowden_length[snmm_extruder] *-1);
plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 3000, active_extruder); plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 3000, active_extruder);
st_synchronize(); st_synchronize();
@ -5109,6 +5110,13 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp
cnt++; cnt++;
manage_heater(); manage_heater();
manage_inactivity(true); manage_inactivity(true);
/*#ifdef SNMM
target[E_AXIS] += 0.002;
plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 500, active_extruder);
#endif // SNMM*/
if(cnt==0) if(cnt==0)
{ {
#if BEEPER > 0 #if BEEPER > 0
@ -5131,14 +5139,21 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp
#endif #endif
#endif #endif
} }
#ifdef SNMM
if (millis() - load_filament_time > 2) {
load_filament_time = millis();
target[E_AXIS] += 0.001;
plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 1000, active_extruder);
}
#endif
} }
#ifdef SNMM
display_loading();
do {
target[E_AXIS] += 0.002;
plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 500, active_extruder);
delay_keep_alive(2);
} while (!lcd_clicked());
/*if (millis() - load_filament_time > 2) {
load_filament_time = millis();
target[E_AXIS] += 0.001;
plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 1000, active_extruder);
}*/
#endif
//Filament inserted //Filament inserted
WRITE(BEEPER,LOW); WRITE(BEEPER,LOW);
@ -5147,7 +5162,7 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp
#ifdef SNMM #ifdef SNMM
st_synchronize(); st_synchronize();
target[E_AXIS] += BOWDEN_LENGTH; target[E_AXIS] += bowden_length[snmm_extruder];
plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 3000, active_extruder); plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 3000, active_extruder);
target[E_AXIS] += FIL_LOAD_LENGTH - 60; target[E_AXIS] += FIL_LOAD_LENGTH - 60;
plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 1400, active_extruder); plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 1400, active_extruder);
@ -5196,6 +5211,7 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp
// Everything good // Everything good
default: default:
lcd_change_success(); lcd_change_success();
lcd_update_enable(true);
break; break;
} }
@ -5350,6 +5366,9 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp
break; break;
case 702: case 702:
{ {
#ifdef SNMM
extr_unload_all();
#else
custom_message = true; custom_message = true;
custom_message_type = 2; custom_message_type = 2;
lcd_setstatuspgm(MSG_UNLOADING_FILAMENT); lcd_setstatuspgm(MSG_UNLOADING_FILAMENT);
@ -5361,7 +5380,7 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp
lcd_setstatuspgm(WELCOME_MSG); lcd_setstatuspgm(WELCOME_MSG);
custom_message = false; custom_message = false;
custom_message_type = 0; custom_message_type = 0;
#endif
} }
break; break;

View file

@ -968,13 +968,15 @@ const char * const MSG_FIL_ADJUSTING_LANG_TABLE[LANG_NUM] PROGMEM = {
const char MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_EN[] PROGMEM = "Iteration "; const char MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_EN[] PROGMEM = "Iteration ";
const char MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_CZ[] PROGMEM = "Iterace "; const char MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_CZ[] PROGMEM = "Iterace ";
const char MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_ES[] PROGMEM = "Iteracion "; const char MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_IT[] PROGMEM = "Reiterazione ";
const char MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_ES[] PROGMEM = "Reiteracion ";
const char MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_PL[] PROGMEM = "Iteracja ";
const char * const MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_LANG_TABLE[LANG_NUM] PROGMEM = { const char * const MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_LANG_TABLE[LANG_NUM] PROGMEM = {
MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_EN, MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_EN,
MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_CZ, MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_CZ,
MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_EN, MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_IT,
MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_ES, MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_ES,
MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_EN, MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_PL,
MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_EN MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_EN
}; };
@ -1280,6 +1282,17 @@ const char * const MSG_LOADING_FILAMENT_LANG_TABLE[LANG_NUM] PROGMEM = {
MSG_LOADING_FILAMENT_DE MSG_LOADING_FILAMENT_DE
}; };
const char MSG_LOAD_ALL_EN[] PROGMEM = "Load all";
const char MSG_LOAD_ALL_CZ[] PROGMEM = "Zavest vse";
const char * const MSG_LOAD_ALL_LANG_TABLE[LANG_NUM] PROGMEM = {
MSG_LOAD_ALL_EN,
MSG_LOAD_ALL_CZ,
MSG_LOAD_ALL_EN,
MSG_LOAD_ALL_EN,
MSG_LOAD_ALL_EN,
MSG_LOAD_ALL_EN
};
const char MSG_LOAD_EPROM_EN[] PROGMEM = "Load memory"; const char MSG_LOAD_EPROM_EN[] PROGMEM = "Load memory";
const char * const MSG_LOAD_EPROM_LANG_TABLE[1] PROGMEM = { const char * const MSG_LOAD_EPROM_LANG_TABLE[1] PROGMEM = {
MSG_LOAD_EPROM_EN MSG_LOAD_EPROM_EN

View file

@ -255,6 +255,8 @@ extern const char* const MSG_LOADING_COLOR_LANG_TABLE[LANG_NUM];
#define MSG_LOADING_COLOR LANG_TABLE_SELECT(MSG_LOADING_COLOR_LANG_TABLE) #define MSG_LOADING_COLOR LANG_TABLE_SELECT(MSG_LOADING_COLOR_LANG_TABLE)
extern const char* const MSG_LOADING_FILAMENT_LANG_TABLE[LANG_NUM]; extern const char* const MSG_LOADING_FILAMENT_LANG_TABLE[LANG_NUM];
#define MSG_LOADING_FILAMENT LANG_TABLE_SELECT(MSG_LOADING_FILAMENT_LANG_TABLE) #define MSG_LOADING_FILAMENT LANG_TABLE_SELECT(MSG_LOADING_FILAMENT_LANG_TABLE)
extern const char* const MSG_LOAD_ALL_LANG_TABLE[LANG_NUM];
#define MSG_LOAD_ALL LANG_TABLE_SELECT(MSG_LOAD_ALL_LANG_TABLE)
extern const char* const MSG_LOAD_EPROM_LANG_TABLE[1]; extern const char* const MSG_LOAD_EPROM_LANG_TABLE[1];
#define MSG_LOAD_EPROM LANG_TABLE_SELECT_EXPLICIT(MSG_LOAD_EPROM_LANG_TABLE, 0) #define MSG_LOAD_EPROM LANG_TABLE_SELECT_EXPLICIT(MSG_LOAD_EPROM_LANG_TABLE, 0)
extern const char* const MSG_LOAD_FILAMENT_LANG_TABLE[LANG_NUM]; extern const char* const MSG_LOAD_FILAMENT_LANG_TABLE[LANG_NUM];

View file

@ -83,6 +83,7 @@
#define MSG_UNLOAD_FILAMENT_3 "Vyjmout filament 3" #define MSG_UNLOAD_FILAMENT_3 "Vyjmout filament 3"
#define MSG_UNLOAD_FILAMENT_4 "Vyjmout filament 4" #define MSG_UNLOAD_FILAMENT_4 "Vyjmout filament 4"
#define MSG_UNLOAD_ALL "Vyjmout vse" #define MSG_UNLOAD_ALL "Vyjmout vse"
#define MSG_LOAD_ALL "Zavest vse"
#define MSG_RECTRACT "Rectract" #define MSG_RECTRACT "Rectract"
#define MSG_ERROR "CHYBA:" #define MSG_ERROR "CHYBA:"

View file

@ -80,6 +80,7 @@
#define MSG_UNLOAD_FILAMENT_3 "Unload filament 3" #define MSG_UNLOAD_FILAMENT_3 "Unload filament 3"
#define MSG_UNLOAD_FILAMENT_4 "Unload filament 4" #define MSG_UNLOAD_FILAMENT_4 "Unload filament 4"
#define MSG_UNLOAD_ALL "Unload all" #define MSG_UNLOAD_ALL "Unload all"
#define MSG_LOAD_ALL "Load all"
#define MSG_RECTRACT "Rectract" #define MSG_RECTRACT "Rectract"

View file

@ -206,7 +206,7 @@
#define MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 "Medir la altura del punto de la calibracion" #define MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 "Medir la altura del punto de la calibracion"
#define MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 " de 9" #define MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 " de 9"
#define MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION "Iteracion " #define MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION "Reiteracion "
#define MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND "Calibracion XYZ fallada. Puntos de calibracion en la cama no encontrados." #define MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND "Calibracion XYZ fallada. Puntos de calibracion en la cama no encontrados."
#define MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED "Calibracion XYZ fallada. Consultar el manual por favor." #define MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED "Calibracion XYZ fallada. Consultar el manual por favor."
#define MSG_BED_SKEW_OFFSET_DETECTION_PERFECT "Calibracion XYZ ok. Ejes X/Y perpendiculares. Felicitaciones!" #define MSG_BED_SKEW_OFFSET_DETECTION_PERFECT "Calibracion XYZ ok. Ejes X/Y perpendiculares. Felicitaciones!"

View file

@ -196,6 +196,7 @@
#define MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 " su 9" #define MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 " su 9"
#define MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 "Misurare l'altezza di riferimento del punto di calibrazione" #define MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 "Misurare l'altezza di riferimento del punto di calibrazione"
#define MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 " su 9" #define MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 " su 9"
#define MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION "Reiterazione "
#define MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND "Calibrazione XYZ fallita. Il punto di calibrazione sul letto non e' stato trovato." #define MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND "Calibrazione XYZ fallita. Il punto di calibrazione sul letto non e' stato trovato."
#define MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED "Calibrazione XYZ fallita. Si prega di consultare il manuale." #define MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED "Calibrazione XYZ fallita. Si prega di consultare il manuale."

View file

@ -211,6 +211,7 @@
#define MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 " z 9" #define MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 " z 9"
#define MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 "Okreslam wysokosc odniesienia punktu kalibracyjnego" #define MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 "Okreslam wysokosc odniesienia punktu kalibracyjnego"
#define MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 " z 9" #define MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 " z 9"
#define MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION "Iteracja "
#define MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND "Kalibr. XYZ nieudana. Kalibracyjny punkt podkladki nieznaleziony." #define MSG_BED_SKEW_OFFSET_DETECTION_POINT_NOT_FOUND "Kalibr. XYZ nieudana. Kalibracyjny punkt podkladki nieznaleziony."
#define MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED "Kalibracja XYZ niepowiedziona. Sprawdzic w instrukcji." #define MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED "Kalibracja XYZ niepowiedziona. Sprawdzic w instrukcji."

View file

@ -171,7 +171,9 @@ FORCE_INLINE block_t *plan_get_current_block()
} }
// Returns true if the buffer has a queued block, false otherwise // Returns true if the buffer has a queued block, false otherwise
FORCE_INLINE bool blocks_queued() { return (block_buffer_head != block_buffer_tail); } FORCE_INLINE bool blocks_queued() {
return (block_buffer_head != block_buffer_tail);
}
//return the nr of buffered moves //return the nr of buffered moves
FORCE_INLINE uint8_t moves_planned() { FORCE_INLINE uint8_t moves_planned() {

View file

@ -515,43 +515,6 @@ static void lcd_status_screen()
#ifdef ULTIPANEL #ifdef ULTIPANEL
void unload_fil() {
char cmd1[10];
float unload_l = ((BOWDEN_LENGTH + 60 + FIL_LOAD_LENGTH) / 2);
sprintf_P(cmd1, PSTR("M106 S%d"), fanSpeedBckp);
enquecommand(cmd1);
strcpy(cmd1, "G1 Z");
strcat(cmd1, ftostr32(pause_lastpos[Z_AXIS]));
enquecommand(cmd1);
enquecommand_P(PSTR("M907 E700")); //set extruder current higher
enquecommand_P(PSTR("M203 E50")); //set max. feedrate
st_synchronize();
if (current_temperature[0] < 230) {
// PLA
enquecommand_P(PSTR("G1 E5.4 F2800.000000"));
enquecommand_P(PSTR("G1 E3.2 F3000.000000"));
enquecommand_P(PSTR("G1 E3 F3400.000000"));
st_synchronize();
}
else {
// ABS
enquecommand_P(PSTR("G1 E3.1 F2000.000000"));
enquecommand_P(PSTR("G1 E3.1 F2500.000000"));
enquecommand_P(PSTR("G1 E4 F3000.000000"));
st_synchronize();
}
enquecommand_P(PSTR("M203 E80")); //set max. feedrate
enquecommand_P(PSTR("M907 E550")); //set extruder current
st_synchronize();
strcpy(cmd1, "G1 E-");
strcat(cmd1, ftostr32(unload_l));
enquecommand(cmd1);
enquecommand(cmd1);
st_synchronize();
}
void lcd_commands() void lcd_commands()
{ {
char cmd1[25]; char cmd1[25];
@ -650,9 +613,8 @@ void lcd_commands()
if (lcd_commands_step == 2 && !blocks_queued()) if (lcd_commands_step == 2 && !blocks_queued())
{ {
setTargetBed(0); setTargetBed(0);
setTargetHotend(0, 0); enquecommand_P(PSTR("M104 S0")); //set hotend temp to 0
setTargetHotend(0, 1);
setTargetHotend(0, 2);
manage_heater(); manage_heater();
lcd_setstatuspgm(WELCOME_MSG); lcd_setstatuspgm(WELCOME_MSG);
cancel_heatup = false; cancel_heatup = false;
@ -710,41 +672,7 @@ void lcd_commands()
lcd_commands_step = 5; lcd_commands_step = 5;
} }
if (lcd_commands_step == 7 && !blocks_queued()) { if (lcd_commands_step == 7 && !blocks_queued()) {
MYSERIAL.print("7"); enquecommand_P(PSTR("M702"));
stopped_extruder = snmm_extruder;
unload_fil();
lcd_commands_step = 8;
}
if (lcd_commands_step == 8 && !blocks_queued()) {
MYSERIAL.print("8");
if (stopped_extruder != 0) {
change_extr(0);
unload_fil();
}
lcd_commands_step = 9;
}
if (lcd_commands_step == 9 && !blocks_queued()) {
MYSERIAL.print("9");
if (stopped_extruder != 1) {
change_extr(1);
unload_fil();
}
lcd_commands_step = 10;
}
if (lcd_commands_step == 10 && !blocks_queued()) {
MYSERIAL.print("10");
if (stopped_extruder != 2) {
change_extr(2);
unload_fil();
}
lcd_commands_step = 11;
}
if (lcd_commands_step == 11 && !blocks_queued()) {
MYSERIAL.print("11");
if (stopped_extruder != 3) {
change_extr(3);
unload_fil();
}
lcd_commands_step = 3; lcd_commands_step = 3;
} }
} }
@ -2851,10 +2779,19 @@ void bowden_menu() {
lcd.print(i); lcd.print(i);
lcd.print(": "); lcd.print(": ");
EEPROM_read_B(EEPROM_BOWDEN_LENGTH + i * 2, &bowden_length[i]); EEPROM_read_B(EEPROM_BOWDEN_LENGTH + i * 2, &bowden_length[i]);
lcd.print(bowden_length[i]); lcd.print(bowden_length[i] - 48);
} }
enc_dif = encoderDiff; enc_dif = encoderDiff;
/*while (1) {
if (lcd_clicked()) {
while (lcd_clicked());
delay(10);
while (lcd_clicked());
break;
}
}*/
while (1) { while (1) {
manage_heater(); manage_heater();
@ -2878,14 +2815,14 @@ void bowden_menu() {
if (enc_dif > encoderDiff) { if (enc_dif > encoderDiff) {
bowden_length[cursor_pos]--; bowden_length[cursor_pos]--;
lcd.setCursor(13, cursor_pos); lcd.setCursor(13, cursor_pos);
lcd.print(bowden_length[cursor_pos]); lcd.print(bowden_length[cursor_pos] -48);
enc_dif = encoderDiff; enc_dif = encoderDiff;
} }
if (enc_dif < encoderDiff) { if (enc_dif < encoderDiff) {
bowden_length[cursor_pos]++; bowden_length[cursor_pos]++;
lcd.setCursor(13, cursor_pos); lcd.setCursor(13, cursor_pos);
lcd.print(bowden_length[cursor_pos]); lcd.print(bowden_length[cursor_pos] -48);
enc_dif = encoderDiff; enc_dif = encoderDiff;
} }
} }
@ -3082,6 +3019,15 @@ static int get_ext_nr() { //reads multiplexer input pins and return current extr
} }
void display_loading() {
switch (snmm_extruder) {
case 1: (MSG_FILAMENT_LOADING_T1); break;
case 2: lcd_display_message_fullscreen_P(MSG_FILAMENT_LOADING_T2); break;
case 3: lcd_display_message_fullscreen_P(MSG_FILAMENT_LOADING_T3); break;
default: lcd_display_message_fullscreen_P(MSG_FILAMENT_LOADING_T0); break;
}
}
static void extr_adj(int extruder) //loading filament for SNMM static void extr_adj(int extruder) //loading filament for SNMM
{ {
bool correct; bool correct;
@ -3108,7 +3054,7 @@ static void extr_adj(int extruder) //loading filament for SNMM
//if (!correct) goto START; //if (!correct) goto START;
//extr_mov(BOWDEN_LENGTH/2.f, 500); //dividing by 2 is there because of max. extrusion length limitation (x_max + y_max) //extr_mov(BOWDEN_LENGTH/2.f, 500); //dividing by 2 is there because of max. extrusion length limitation (x_max + y_max)
//extr_mov(BOWDEN_LENGTH/2.f, 500); //extr_mov(BOWDEN_LENGTH/2.f, 500);
extr_mov(BOWDEN_LENGTH, 500); extr_mov(bowden_length[extruder], 500);
lcd_implementation_clear(); lcd_implementation_clear();
lcd.setCursor(0, 1); lcd_printPGM(MSG_PLEASE_WAIT); lcd.setCursor(0, 1); lcd_printPGM(MSG_PLEASE_WAIT);
st_synchronize(); st_synchronize();
@ -3129,9 +3075,10 @@ static void extr_unload() { //unloads filament
lcd_display_message_fullscreen_P(PSTR("")); lcd_display_message_fullscreen_P(PSTR(""));
max_feedrate[E_AXIS] = 50; max_feedrate[E_AXIS] = 50;
lcd.setCursor(0, 1); lcd_printPGM(MSG_PLEASE_WAIT); lcd.setCursor(0, 1); lcd_printPGM(MSG_PLEASE_WAIT);
current_position[Z_AXIS] += 15; //lifting in Z direction to make space for extrusion if (current_position[Z_AXIS] < 15) {
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 25, active_extruder); current_position[Z_AXIS] += 15; //lifting in Z direction to make space for extrusion
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 25, active_extruder);
}
current_position[E_AXIS] += 10; //extrusion current_position[E_AXIS] += 10; //extrusion
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 10, active_extruder); plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 10, active_extruder);
@ -3159,9 +3106,9 @@ static void extr_unload() { //unloads filament
} }
max_feedrate[E_AXIS] = 80; max_feedrate[E_AXIS] = 80;
current_position[E_AXIS] -= (BOWDEN_LENGTH + 60 + FIL_LOAD_LENGTH) / 2; current_position[E_AXIS] -= (bowden_length[snmm_extruder] + 60 + FIL_LOAD_LENGTH) / 2;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 500, active_extruder); plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 500, active_extruder);
current_position[E_AXIS] -= (BOWDEN_LENGTH + 60 + FIL_LOAD_LENGTH) / 2; current_position[E_AXIS] -= (bowden_length[snmm_extruder] + 60 + FIL_LOAD_LENGTH) / 2;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 500, active_extruder); plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 500, active_extruder);
st_synchronize(); st_synchronize();
//digipot_init(); //digipot_init();
@ -3208,6 +3155,13 @@ static void extr_adj_3() {
extr_adj(3); extr_adj(3);
} }
static void load_all() {
for (int i = 0; i < 4; i++) {
change_extr(i);
extr_adj(i);
}
}
//wrapper functions for changing extruders //wrapper functions for changing extruders
static void extr_change_0() { static void extr_change_0() {
change_extr(0); change_extr(0);
@ -3227,7 +3181,7 @@ static void extr_change_3() {
} }
//wrapper functions for unloading filament //wrapper functions for unloading filament
static void extr_unload_all() { void extr_unload_all() {
if (degHotend0() > EXTRUDE_MINTEMP) { if (degHotend0() > EXTRUDE_MINTEMP) {
for (int i = 0; i < 4; i++) { for (int i = 0; i < 4; i++) {
change_extr(i); change_extr(i);
@ -3246,6 +3200,8 @@ static void extr_unload_all() {
} }
} }
static void extr_unload_0() { static void extr_unload_0() {
change_extr(0); change_extr(0);
extr_unload(); extr_unload();
@ -3268,6 +3224,7 @@ static void fil_load_menu()
{ {
START_MENU(); START_MENU();
MENU_ITEM(back, MSG_MAIN, lcd_main_menu); MENU_ITEM(back, MSG_MAIN, lcd_main_menu);
MENU_ITEM(function, MSG_LOAD_ALL, load_all);
MENU_ITEM(function, MSG_LOAD_FILAMENT_1, extr_adj_0); MENU_ITEM(function, MSG_LOAD_FILAMENT_1, extr_adj_0);
MENU_ITEM(function, MSG_LOAD_FILAMENT_2, extr_adj_1); MENU_ITEM(function, MSG_LOAD_FILAMENT_2, extr_adj_1);
MENU_ITEM(function, MSG_LOAD_FILAMENT_3, extr_adj_2); MENU_ITEM(function, MSG_LOAD_FILAMENT_3, extr_adj_2);

View file

@ -221,7 +221,8 @@ static void extr_unload_1();
static void extr_unload_2(); static void extr_unload_2();
static void extr_unload_3(); static void extr_unload_3();
static void lcd_disable_farm_mode(); static void lcd_disable_farm_mode();
static void extr_unload_all(); void extr_unload_all();
static void extr_unload();
void stack_error(); void stack_error();
static void lcd_ping_allert(); static void lcd_ping_allert();
@ -249,4 +250,6 @@ void lcd_pinda_calibration_menu();
void lcd_calibrate_pinda(); void lcd_calibrate_pinda();
void lcd_temp_calibration_set(); void lcd_temp_calibration_set();
void display_loading();
#endif //ULTRALCD_H #endif //ULTRALCD_H