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"
// 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_LEN 10

View file

@ -1200,6 +1200,7 @@ void setup()
// Show the message.
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);
// 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);
target[E_AXIS] += (FIL_COOLING*-1);
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);
st_synchronize();
@ -5109,6 +5110,13 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp
cnt++;
manage_heater();
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 BEEPER > 0
@ -5131,14 +5139,21 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp
#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
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
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);
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);
@ -5196,6 +5211,7 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp
// Everything good
default:
lcd_change_success();
lcd_update_enable(true);
break;
}
@ -5350,6 +5366,9 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp
break;
case 702:
{
#ifdef SNMM
extr_unload_all();
#else
custom_message = true;
custom_message_type = 2;
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);
custom_message = false;
custom_message_type = 0;
#endif
}
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_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 = {
MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_EN,
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_EN,
MSG_FIND_BED_OFFSET_AND_SKEW_ITERATION_PL,
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
};
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 * const MSG_LOAD_EPROM_LANG_TABLE[1] PROGMEM = {
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)
extern const char* const MSG_LOADING_FILAMENT_LANG_TABLE[LANG_NUM];
#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];
#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];

View file

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

View file

@ -80,6 +80,7 @@
#define MSG_UNLOAD_FILAMENT_3 "Unload filament 3"
#define MSG_UNLOAD_FILAMENT_4 "Unload filament 4"
#define MSG_UNLOAD_ALL "Unload all"
#define MSG_LOAD_ALL "Load all"
#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_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_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!"

View file

@ -196,6 +196,7 @@
#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_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_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_MEASURE_BED_REFERENCE_HEIGHT_LINE1 "Okreslam wysokosc odniesienia punktu kalibracyjnego"
#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_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
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
FORCE_INLINE uint8_t moves_planned() {

View file

@ -515,43 +515,6 @@ static void lcd_status_screen()
#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()
{
char cmd1[25];
@ -650,9 +613,8 @@ void lcd_commands()
if (lcd_commands_step == 2 && !blocks_queued())
{
setTargetBed(0);
setTargetHotend(0, 0);
setTargetHotend(0, 1);
setTargetHotend(0, 2);
enquecommand_P(PSTR("M104 S0")); //set hotend temp to 0
manage_heater();
lcd_setstatuspgm(WELCOME_MSG);
cancel_heatup = false;
@ -710,41 +672,7 @@ void lcd_commands()
lcd_commands_step = 5;
}
if (lcd_commands_step == 7 && !blocks_queued()) {
MYSERIAL.print("7");
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();
}
enquecommand_P(PSTR("M702"));
lcd_commands_step = 3;
}
}
@ -2851,10 +2779,19 @@ void bowden_menu() {
lcd.print(i);
lcd.print(": ");
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;
/*while (1) {
if (lcd_clicked()) {
while (lcd_clicked());
delay(10);
while (lcd_clicked());
break;
}
}*/
while (1) {
manage_heater();
@ -2878,14 +2815,14 @@ void bowden_menu() {
if (enc_dif > encoderDiff) {
bowden_length[cursor_pos]--;
lcd.setCursor(13, cursor_pos);
lcd.print(bowden_length[cursor_pos]);
lcd.print(bowden_length[cursor_pos] -48);
enc_dif = encoderDiff;
}
if (enc_dif < encoderDiff) {
bowden_length[cursor_pos]++;
lcd.setCursor(13, cursor_pos);
lcd.print(bowden_length[cursor_pos]);
lcd.print(bowden_length[cursor_pos] -48);
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
{
bool correct;
@ -3108,7 +3054,7 @@ static void extr_adj(int extruder) //loading filament for SNMM
//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);
extr_mov(BOWDEN_LENGTH, 500);
extr_mov(bowden_length[extruder], 500);
lcd_implementation_clear();
lcd.setCursor(0, 1); lcd_printPGM(MSG_PLEASE_WAIT);
st_synchronize();
@ -3129,9 +3075,10 @@ static void extr_unload() { //unloads filament
lcd_display_message_fullscreen_P(PSTR(""));
max_feedrate[E_AXIS] = 50;
lcd.setCursor(0, 1); lcd_printPGM(MSG_PLEASE_WAIT);
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);
if (current_position[Z_AXIS] < 15) {
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
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;
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);
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);
st_synchronize();
//digipot_init();
@ -3208,6 +3155,13 @@ static void 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
static void extr_change_0() {
change_extr(0);
@ -3227,7 +3181,7 @@ static void extr_change_3() {
}
//wrapper functions for unloading filament
static void extr_unload_all() {
void extr_unload_all() {
if (degHotend0() > EXTRUDE_MINTEMP) {
for (int i = 0; i < 4; i++) {
change_extr(i);
@ -3246,6 +3200,8 @@ static void extr_unload_all() {
}
}
static void extr_unload_0() {
change_extr(0);
extr_unload();
@ -3268,6 +3224,7 @@ static void fil_load_menu()
{
START_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_2, extr_adj_1);
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_3();
static void lcd_disable_farm_mode();
static void extr_unload_all();
void extr_unload_all();
static void extr_unload();
void stack_error();
static void lcd_ping_allert();
@ -249,4 +250,6 @@ void lcd_pinda_calibration_menu();
void lcd_calibrate_pinda();
void lcd_temp_calibration_set();
void display_loading();
#endif //ULTRALCD_H