Aller au contenu

GO Print

Quelques questions sur l'écran de la DiscoEasy


jamesk11

Messages recommandés

  • 2 weeks later...

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

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) par Zarrt
Lien vers le commentaire
Partager sur d’autres sites

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...