Stouf Posté(e) Décembre 31, 2015 Posté(e) Décembre 31, 2015 (modifié) On était justement en train de bouger sur un nouveau thread plus adapté, si tu sais lire... Que devrais-je dire de mon thread sur le portique pas droit... Modifié (le) Décembre 31, 2015 par Stouf
rafffel Posté(e) Décembre 31, 2015 Posté(e) Décembre 31, 2015 (modifié) Dans marlin est prévu un Gcode pour le changement de filament : M600 : http://reprap.org/wiki/G-code/fr#M600:_Filament_change_pause ça n’empêche pas la modif concernant l'appuie sur le bouton du LCD mais ça évite de retaper la macro G-Code a chaque fois Sans LCD il y a ça aussi pour le cablage d'un bouton externe sur une ramps pour la melzi je ne sais pas faut voir ce qui est dispo en pinout: http://forums.reprap.org/read.php?146,179790,179794#msg-179794 Modifié (le) Décembre 31, 2015 par rafffel 1
sylphide Posté(e) Décembre 31, 2015 Posté(e) Décembre 31, 2015 On était justement en train de bouger sur un nouveau thread plus adapté, si tu sais lire... Que devrais-je dire de mon thread sur le portique pas droit... Si je sais lire ?? Pas besoin de lire quoique que ce soit pour savoir que vous auriez du ouvrir un autre thread avant. Bâ oui voilà c'est pour ça. Beaucoup de hors sujet dans tous les posts récemment, du coup ils perdent de leur intérêts et on se perd aussi. Aucunes prise de tête, mais a force..
Motard Geek Posté(e) Décembre 31, 2015 Posté(e) Décembre 31, 2015 Si y'a un HS vous le signalez, pas besoin de monter dans les tours et de vous prendre la tête encore une fois...
Furtys Posté(e) Décembre 31, 2015 Posté(e) Décembre 31, 2015 @MatC Je pense qu'on va avoir besoin de quelques modos supplémentaires !… La communauté étant grandissante, les débordements le sont de plus en plus malheureusement 1
inteloide Posté(e) Décembre 31, 2015 Auteur Posté(e) Décembre 31, 2015 Il y a 1 heure, rafffel a dit : Dans marlin est prévu un Gcode pour le changement de filament : M600 : http://reprap.org/wiki/G-code/fr#M600:_Filament_change_pause ça n’empêche pas la modif concernant l'appuie sur le bouton du LCD mais ça évite de retaper la macro G-Code a chaque fois Sans LCD il y a ça aussi pour le cablage d'un bouton externe sur une ramps pour la melzi je ne sais pas faut voir ce qui est dispo en pinout: http://forums.reprap.org/read.php?146,179790,179794#msg-179794 Effectivement le code M600 fait le boulot (M600 - Pause for filament change X[pos] Y[pos] Z[relative lift] E[initial retract] L[later retract distance for removal]) La ligne "M600 Z-15 E-5" devrait faire le boulot, reste le problème du bouton. Peut être que le mieux serait de créer une nouvelle instruction qui contient tout en un seul code. Genre : M601 M601 X[pos] Y[pos] Z[relative lift] E[initial retract] L[later retract distance for removal] T[break in seconds] P[pin to wait for] D[Beep duration] I[Beep interval] Et on pourrait alors utiliser : M601 X10 Y10 Z15 E-5 T180 D1 I5 (Fait une pause de 180 seconds et beep 1 seconde toutes le 5 secondes) OU M601 X10 Y10 Z15 E-5 P18 D1 I5 (Fait une pause jusqu'au changement d'état de l'entrée 18 et beep 1 seconde toutes le 5 secondes) Il faut tout de même l'insérer dans le G-Code (Car Cura by Dagoma ne le fait pas !)
rafffel Posté(e) Décembre 31, 2015 Posté(e) Décembre 31, 2015 L'idéal serait de proposé la modif sur le M600 via un git pull dans le marlin en dev (car c'est une fonctionnalité qui pourrait s’avère utile pour d'autre personne). Mais après oui c'est envisageable le M601 est libre donc free yourself =)
inteloide Posté(e) Décembre 31, 2015 Auteur Posté(e) Décembre 31, 2015 Visiblement le M600 est spécifique au LCD. Peut être qu'un jour la Disco en aura un part défaut...Donc vaut mieux pas trop y toucher. Et puis le temps que ça soit validé via un git. Pour l'instant, je voterai plus pour un M601. Je vais programmer ça et je partage (bon, après les fêtes, hein !) Après le mieux serait que Dagoma remette les plugins dans sa version simplifiée : comme ça on pourrait le faire directement depuis le logiciel ! (et là plus besoin de modifier le firmware). Je vais essayer de voir ça avec eux. NB : pour faire la pause, c'est vrai que changer le X et Y c'est mieux, sinon le filament coule sur la pièce en cours d'impression.
rafffel Posté(e) Décembre 31, 2015 Posté(e) Décembre 31, 2015 Je suis pas d'accord sur le fond. Le gcode pour moi est la pour ordonnée des action et non effectué une "macro" surtout que c'est une fonctionnalité qui peut être utile a d'autre (j'entend hors utilisateur dagoma) Mais bon je plussoie qu'un pull sur le github risque de prendre du temps. Rien ne t’empêche de faire un fork et de partager le firmware comme la fait richcattell pour le firmware delta. Mais bon c'est déjà sympa de ta part de faire partagé
inteloide Posté(e) Décembre 31, 2015 Auteur Posté(e) Décembre 31, 2015 (modifié) Bon, on va déjà faire en sorte que ça marche ;o) Voici le code d'une nouvelle instruction M601, qui permet de choisir entre une pause en temps et une pause jusqu'à un changement d'état d'une d'entrée. Je ne l'ai pas encore testé en conditions réelle, mais à vide, ça semble ok. J'ai mis tous les temps en secondes pour plus de clarté. case 601: // Pause for filament change (New code by Inteloide) // Syntaxe : X[pos] Y[pos] Z[relative lift] : Position parking (en relatif ! doit être positif !) // E[initial retract] : longueur de filament retiré juste avant la pause (doit être négatif !) // L[later retract distance for removal] : longueur de filament (doit être négatif !) // T[time to wait] : Durée de l'attente (en secondes) // P[pin input to change continue] : Entrée sur laquelle on attent le changement d'état (18=fin de course axe X) // I[Interval between beep] : Intervale entre deux beeps (en secondes, défaut = 5) // D[Beep duration] : Durée de chaque beep (en secondes, défaut = 0.5) // B[pin of the beep] : Pin du beeper (défaut = 27) // // NB: Par défaut on attend un temps de 180 secondes // Exemple de syntaxes : // M601 X10 Y10 Z15 E-5 T300 : Remonte de 15mm, va dans un coin du plateau, attends 300 secondes // M601 X10 Y10 Z15 E-5 P18 I2 D0.8 B27 : Remonte de 15mm, va dans un coin du plateau, attends appui sur capteur axe X { // Save positions float target[4]; float lastpos[4]; target[X_AXIS]=current_position[X_AXIS]; target[Y_AXIS]=current_position[Y_AXIS]; target[Z_AXIS]=current_position[Z_AXIS]; target[E_AXIS]=current_position[E_AXIS]; lastpos[X_AXIS]=current_position[X_AXIS]; lastpos[Y_AXIS]=current_position[Y_AXIS]; lastpos[Z_AXIS]=current_position[Z_AXIS]; lastpos[E_AXIS]=current_position[E_AXIS]; //retract by E if(code_seen('E')) { target[E_AXIS]+= code_value() * global_unit_modifier; } else { #ifdef FILAMENTCHANGE_FIRSTRETRACT target[E_AXIS]+= FILAMENTCHANGE_FIRSTRETRACT ; #endif } plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], feedrate/60, active_extruder); //lift Z if(code_seen('Z')){ target[Z_AXIS]+= code_value() * global_unit_modifier; } else { #ifdef FILAMENTCHANGE_ZADD target[Z_AXIS]+= FILAMENTCHANGE_ZADD ; #endif } plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], feedrate/60, active_extruder); //move xy if(code_seen('X')) { target[X_AXIS]+= code_value() * global_unit_modifier; } else { #ifdef FILAMENTCHANGE_XPOS target[X_AXIS]= FILAMENTCHANGE_XPOS ; #endif } if(code_seen('Y')) { target[Y_AXIS]= code_value() * global_unit_modifier; } else { #ifdef FILAMENTCHANGE_YPOS target[Y_AXIS]= FILAMENTCHANGE_YPOS ; #endif } plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], feedrate/60, active_extruder); // More retract ? if(code_seen('L')) { target[E_AXIS]+= code_value() * global_unit_modifier; } else { #ifdef FILAMENTCHANGE_FINALRETRACT target[E_AXIS]+= FILAMENTCHANGE_FINALRETRACT ; #endif } plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], feedrate/60, active_extruder); //finish moves st_synchronize(); //disable extruder steppers so filament can be removed disable_e0(); disable_e1(); disable_e2(); delay(100); // Variables générales unsigned long currentMillisBeeper = 0; // Top de depart pour le chrono du beeper unsigned long previousMiliBeeper = 0; // Précédent top unsigned long startMiliBeeper = 0; // Top de départ pour l'attente unsigned long temps=180000; // Durée d'attente unsigned long intervalBeeper = 5000; // Intervale entre chaque beep (en ms) unsigned long durationBeeper = 500; // Durée du beep (en ms) int etatBeeper = LOW; // Etat du beeper int pinBeeper = 27; // Pin pour le beeper int pin_number = 18; // Pin pour fin attente bool wait_for_time=true; int pin_target; // On récupère les paramètres if(code_seen('I')) intervalBeeper = code_value()*1000; // Intervale entre chaque beep (en ms) if(code_seen('D')) durationBeeper = code_value()*1000; // Durée du beep (en ms) if(code_seen('B')) pinBeeper = code_value(); // Pin pour le beeper if(code_seen('T')) temps = code_value()*1000; // Le temps à attendre en ms if(code_seen('P')) {pin_number = code_value(); wait_for_time=false;}; // La pin à attendre // On active les entrées/sorties pinMode(pinBeeper, OUTPUT); // On active la sortie du beeper if (!wait_for_time){ // On active l'entrée si on n'est pas en temps pinMode(pin_number, INPUT); pin_target = !digitalRead(pin_number); } // On démarre l'attente startMiliBeeper = millis(); bool stop_la_boucle=false; while(!stop_la_boucle){ manage_heater(); manage_inactivity(); // on fait aller le beeper currentMillisBeeper = millis(); if ((etatBeeper == LOW) && (currentMillisBeeper - previousMiliBeeper >= intervalBeeper)) { previousMiliBeeper = currentMillisBeeper; // On garde le moment où on a changé d'état etatBeeper = HIGH; // On change l'état du beeper digitalWrite(pinBeeper, etatBeeper); // On applique le nouvel état = on fait sonner } if ((etatBeeper == HIGH) && (currentMillisBeeper - previousMiliBeeper >= durationBeeper)) { previousMiliBeeper = currentMillisBeeper; // On garde le moment où on a changé d'état etatBeeper = LOW; // On change l'état du beeper digitalWrite(pinBeeper, etatBeeper); // On applique le nouvel état } // On regarde si on doit stopper la boucle if (!wait_for_time) {//On regarde un changement d'une entrée if (digitalRead(pin_number) == pin_target) { stop_la_boucle=true; } } else {// On regarde si la tempo est finie if (currentMillisBeeper-startMiliBeeper>=temps) { stop_la_boucle=true; } } } // Finalisation de la boucle d'attente digitalWrite(pinBeeper, LOW); // pour remettre au niveau bas (0V) après la boucle d'attente pinMode(pinBeeper, INPUT); // pour remettre en entrée qui est la valeur par défaut //return to normal if(code_seen('L')) { target[E_AXIS]+= -code_value() * global_unit_modifier; } else { #ifdef FILAMENTCHANGE_FINALRETRACT target[E_AXIS]+=(-1)*FILAMENTCHANGE_FINALRETRACT ; #endif } current_position[E_AXIS]=target[E_AXIS]; //the long retract of L is compensated by manual filament feeding plan_set_e_position(current_position[E_AXIS]); plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], feedrate/60, active_extruder); //should do nothing plan_buffer_line(lastpos[X_AXIS], lastpos[Y_AXIS], target[Z_AXIS], target[E_AXIS], feedrate/60, active_extruder); //move xy back plan_buffer_line(lastpos[X_AXIS], lastpos[Y_AXIS], lastpos[Z_AXIS], target[E_AXIS], feedrate/60, active_extruder); //move z back plan_buffer_line(lastpos[X_AXIS], lastpos[Y_AXIS], lastpos[Z_AXIS], lastpos[E_AXIS], feedrate/60, active_extruder); //final untretract } break; Modifié (le) Décembre 31, 2015 par inteloide Correction du code 1
inteloide Posté(e) Décembre 31, 2015 Auteur Posté(e) Décembre 31, 2015 Je viens de mettre une petite correction. Attention les déplacement sont tous en relatifs et le Z doit être positif, sinon boum ! (Il faudrait que je verrouille ça) Manque aussi la tempo entre l'appui sur le capteur et le redémarrage de l'imprimante.
Mathew72fr Posté(e) Mars 9, 2016 Posté(e) Mars 9, 2016 Wouaw trop cool sa marche :-D merci !!! En plus super facile à faire ! C est bien expliquer bravo !! :-D 3
gauthier.dagoma Posté(e) Mars 9, 2016 Posté(e) Mars 9, 2016 Ben sinon vous pouvez aussi faire des trucs comme ça
inteloide Posté(e) Mars 9, 2016 Auteur Posté(e) Mars 9, 2016 Salut ! La prochaine version du plugin permettra d'imprimer depuis SketchUp mais pas encore de générer le fichier gcode => il faut encore passer par Cura. On pourra aussi suivre l'impression sur Internet (sans besoin d'un raspberry) @Gauthier : tu as utilisé mon plugin pour faire ton objet ?
gauthier.dagoma Posté(e) Mars 9, 2016 Posté(e) Mars 9, 2016 @inteloide : pas cette fois, mais je suis impressionne par ton boulot !
lefresh Posté(e) Mars 10, 2016 Posté(e) Mars 10, 2016 @gauthier.dagoma J'en profite pour te poser deux questions sur les modifications de firmware vu que je compte me mettre à l'impression 2 couleurs: 1- Je peux prendre le firmware fourni ici ou j'ai intérêt à prendre une autre version? http://www.dagoma.fr/tutoriels/mise-a-jour-de-la-carte-electronique/ 2 - Sur cette page, on peut lire: Citation Mise à jour de la carte électroniqueATTENTION Si vous effectuer cette manipulation sans notre aval, sachez que nous ne pourrons pas assurer de SAV suite à une mauvaise manipulation ou erreur de votre part. – l’équipe dagoma.fr Je sais que le sujet à été largement débattu mais je n'ai pas vu de post ou une réponse avait été donnée: Est-ce que cela signifie simplement que vous vous défaussez de tout garantie à partir du moment où on touche au firmware ou simplement que vous ne nous apporterez pas d'aide poussée si on a des soucis avec des customs de firmware?
gauthier.dagoma Posté(e) Mars 10, 2016 Posté(e) Mars 10, 2016 Salut @lefresh Je te conseille d'aller vers une autre version - une des dernières version du marlin poru ce que tu veux faire. Pour la question de la garantie, la position officielle de dagoma est celle que tu as cite. Apres on n'est pas non plus complètement idiots et si on peut aider les gens qui essayent de faire grandir la machine on le fait. Si vous cherchez a savoir si la carte supporte le 220 en direct, la on couvre pas. Si vous flashez n'importe quoi et que ca brule les drivers parce que vous vouliez voir comment faire un chauffe tasse USB, la aussi on vous laisse un peu seul avec votre demarche. Mais si c'est pour tenter de mettre deux cartes en cascade pour installer une diamond alors oui on accompagne. Apres dagoma c'est pas une multinationale avec un gros bouquin qui dit tout comment preparer un burger, installer les chaises, dire bonjour au client, etc. C'est une boite pleine de gens qui sont plutot malins, generalement ouverts et qui ont envie d'aider. demande a @monchyv62 ce qu'il en pense 1
lefresh Posté(e) Mars 10, 2016 Posté(e) Mars 10, 2016 @gauthier.dagoma Merci pour tes réponses, je vais essayer d'aller voir du coté des firmwares Marlin.
monchyv62 Posté(e) Mars 10, 2016 Posté(e) Mars 10, 2016 oui je peux confirmer les gens sont plutot malins et sympa, ouvert à la discution et franchement pas avare sur la visite des locaux et pour montrer les projets je peux meme dire que le jour ou je susi venu ils acceuillaient une ecole pour leur montrer les machines
loukatamiaou Posté(e) Mars 11, 2016 Posté(e) Mars 11, 2016 message adresser a inteloide . j ai installer ta mise a jour du firmware marlin ccp . j aimerai tester ton m601 mais que doije faire avec tout ce codage et ou son les valeur a changer ?
inteloide Posté(e) Mars 11, 2016 Auteur Posté(e) Mars 11, 2016 (modifié) il y a une heure, loukatamiaou a dit : message adresser a inteloide . j ai installer ta mise a jour du firmware marlin ccp . j aimerai tester ton m601 mais que doije faire avec tout ce codage et ou son les valeur a changer ? Bonjour Loukatamiaou, Le code M601 doit être insérer dans le fichier dagoma0.g à l'endroit où on veut faire la pause. J'ai fait un plugin SketchUp pour faciliter cette manipulation. Voir le topic ici : Je pourrais regarder pour faire un petit exécutable qui permettrai de ne pas avoir à installer SketchUp) Modifié (le) Mars 11, 2016 par inteloide
loukatamiaou Posté(e) Mars 11, 2016 Posté(e) Mars 11, 2016 J ai installer cura standard pour tester ton plugin mais sans resultat faut il ajouter ton firmware dans le dossier firmware de cura ?
lefresh Posté(e) Mars 11, 2016 Posté(e) Mars 11, 2016 Bonjour, @loukatamiaou Si tu veux t'adresser à qqn en particulier, met un @ devant son nom, il recevra une notification. Le plugin est à installer directement dans sketchup (logiciel de conception d'objet), rien à voir avec cura (logiciel qui "découpe" l'objet en couche pour générer dagoma0.g, le fichier lisible par ton imprimante. Pour utiliser la commande M601, tu dois mettre à jour ton imprimante puis insérer le code dans ton Gcode: Maj de l'imprimante: Télécharger la bonne version du firmware. Positionner le code fourni par @inteloide au bon endroit. Envoyer le firmware modifié Insertion du M601 dans le Gcode (à la main sans plugin): Avec cura, en mode couche, tu identifie le numéro de la couche qui doit changer de couleur. tu édite le Gcode (avec notepad). Tu trouve la ligne LAYER:<Numéro de ta couche> Juste avant ou après cette ligne, tu ajoute le code M601 en fonction de ton besoin (les 2 exemples de inteloide sont: 1 M601 X10 Y10 Z15 E-5 T300 explication: Remonte de 15mm, va dans un coin du plateau, attends 300 secondes 2 M601 X10 Y10 Z15 E-5 P18 I2 D0.8 B27 explication: Remonte de 15mm, va dans un coin du plateau, attends appui sur capteur axe X Voila, bon courage et tien nous informés.
loukatamiaou Posté(e) Mars 11, 2016 Posté(e) Mars 11, 2016 @lefresh le plugin que j ai installer sur cura c est pour nommer la couche à laquelle on veut faire une pause c est un plugin qui date de un poste du début de ce sujet. Au sujet du poste de @inteloide j ai bien compris que le plugin qu il a mis est pour sketchup .j utilise sketchup depuis longtemps j ai fait tout les plan du permis de construire de ma maison avec mais pour les stl telecharger j aime pas y a trop de trait je préfère passer avec tinkercad.bref . Le pâté de ligne de code doit ce mettre ou dans le firmware ?
lefresh Posté(e) Mars 11, 2016 Posté(e) Mars 11, 2016 @loukatamiaou Si tu parle du code fourni en page 2 et qui commence par case 601: // Pause for filament change (New code by Inteloide) dans ce cas, tu va dans le fichier marlin_main.cpp et vers la ligne 2500 tu va trouver le case 605 (vive notepad++) Tu met le code juste avant.
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