RIPOFE Posté(e) Janvier 14, 2017 Partager Posté(e) Janvier 14, 2017 content d'avoir rendu service Lien vers le commentaire Partager sur d’autres sites More sharing options...
JPas2001 Posté(e) Janvier 26, 2017 Partager Posté(e) Janvier 26, 2017 Salut tlm! Au sujet de la fonction " changement de filament " quelqu'un n'a pas une solution par hasard ? il n'y a pas moyen de bidouiller quelque chose pour modifier manuellement la fonction pour rajouter une pause ou autre ? ? On peut avoir le source du programme , le modifier et le re uploader sur la Disco ou un truc dans le genre ?... je vois pas trop par où commencer en fait ;^p C'est quand même dommage de ne pas pourvoir utiliser cette fonction pour faire du bicolore facilement ... merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
Zarrt Posté(e) Janvier 26, 2017 Partager Posté(e) Janvier 26, 2017 (modifié) Bonsoir @JPas2001 Pour pouvoir faire fonctionné à peu pret correctement le menu changement filament j ai modifier la fonction M600 qui se trouve dans le fichier marlin_main.cpp Dagoma a modifier cette fonction et il semblerait que ce soit cette modif qui provoque le bug. Donc j ai repris la fonction original de la rc6 et l ai legerement modifié. #if ENABLED(FILAMENTCHANGEENABLE) /** * M600: Pause for filament change * * E[distance] - Retract the filament this far (negative value) * Z[distance] - Move the Z axis by this distance * X[position] - Move to this X position, with Y * Y[position] - Move to this Y position, with X * L[distance] - Retract distance for removal (manual reload) * * Default values are used for omitted arguments. * */ inline void gcode_M600() { if (degHotend(active_extruder) < extrude_min_temp) { SERIAL_ERROR_START; SERIAL_ERRORLNPGM(MSG_TOO_COLD_FOR_M600); return; } float lastpos[NUM_AXIS], fr60 = feedrate / 60; for (int i = 0; i < NUM_AXIS; i++) lastpos = destination = current_position; #if ENABLED(DELTA) #define RUNPLAN calculate_delta(destination); \ plan_buffer_line(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], destination[E_AXIS], fr60, active_extruder); #else #define RUNPLAN line_to_destination(); #endif //retract by E if (code_seen('E')) destination[E_AXIS] += code_value(); #ifdef FILAMENTCHANGE_FIRSTRETRACT else destination[E_AXIS] += FILAMENTCHANGE_FIRSTRETRACT; #endif RUNPLAN; //lift Z if (code_seen('Z')) destination[Z_AXIS] += code_value(); #ifdef FILAMENTCHANGE_ZADD else destination[Z_AXIS] += FILAMENTCHANGE_ZADD; #endif RUNPLAN; //move xy if (code_seen('X')) destination[X_AXIS] = code_value(); #ifdef FILAMENTCHANGE_XPOS else destination[X_AXIS] = FILAMENTCHANGE_XPOS; #endif if (code_seen('Y')) destination[Y_AXIS] = code_value(); #ifdef FILAMENTCHANGE_YPOS else destination[Y_AXIS] = FILAMENTCHANGE_YPOS; #endif RUNPLAN; if (code_seen('L')) destination[E_AXIS] += code_value(); #ifdef FILAMENTCHANGE_FINALRETRACT else destination[E_AXIS] += FILAMENTCHANGE_FINALRETRACT; #endif RUNPLAN; //finish moves st_synchronize(); // suppression de la désactivation des moteurs extrudeur //disable extruder steppers so filament can be removed //disable_e0(); //disable_e1(); //disable_e2(); //disable_e3(); delay(100); LCD_ALERTMESSAGEPGM(MSG_FILAMENTCHANGE); millis_t next_tick = 0; KEEPALIVE_STATE(PAUSED_FOR_USER); while (!lcd_clicked()) { #if DISABLED(AUTO_FILAMENT_CHANGE) millis_t ms = millis(); if (ms >= next_tick) { //lcd_quick_feedback(); next_tick = ms + 2500; // feedback every 2.5s while waiting // ajout buzzer buzz(1000,500); //fin ajout buzzer } idle(true); #else current_position[E_AXIS] += AUTO_FILAMENT_CHANGE_LENGTH; destination[E_AXIS] = current_position[E_AXIS]; line_to_destination(AUTO_FILAMENT_CHANGE_FEEDRATE); st_synchronize(); #endif } // while(!lcd_clicked) KEEPALIVE_STATE(IN_HANDLER); //lcd_quick_feedback(); // click sound feedback #if ENABLED(AUTO_FILAMENT_CHANGE) current_position[E_AXIS] = 0; st_synchronize(); #endif //return to normal if (code_seen('L')) destination[E_AXIS] -= code_value(); #ifdef FILAMENTCHANGE_FINALRETRACT else destination[E_AXIS] -= FILAMENTCHANGE_FINALRETRACT; #endif current_position[E_AXIS] = destination[E_AXIS]; //the long retract of L is compensated by manual filament feeding plan_set_e_position(current_position[E_AXIS]); RUNPLAN; //should do nothing lcd_reset_alert_level(); #if ENABLED(DELTA) // Move XYZ to starting position, then E calculate_delta(lastpos); plan_buffer_line(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], destination[E_AXIS], fr60, active_extruder); plan_buffer_line(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], lastpos[E_AXIS], fr60, active_extruder); #else // Move XY to starting position, then Z, then E destination[X_AXIS] = lastpos[X_AXIS]; destination[Y_AXIS] = lastpos[Y_AXIS]; line_to_destination(); destination[Z_AXIS] = lastpos[Z_AXIS]; line_to_destination(); destination[E_AXIS] = lastpos[E_AXIS]; line_to_destination(); #endif #if ENABLED(FILAMENT_RUNOUT_SENSOR) //filrunoutEnqueued = false; filament_ran_out = false; LCD_ALERTMESSAGEPGM(MSG_LCD_OK); #endif } #endif // FILAMENTCHANGEENABLE cela fonctionne mais est largement ameliorable. Je ne sais pas quel etait le but de cette modif à part faire buger la fonction m600 alors si quelqu un a des info cela m interesse. De plus ont peut passer des parametres à la fonction m600 donc il serait interessant de trouver ou cette fonction est appelé par le menu pour pouvoir personaliser ces parametres. Modifié (le) Janvier 26, 2017 par Zarrt Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant