serge69 Posté(e) Janvier 1, 2020 Posté(e) Janvier 1, 2020 Bonjour, J'ai besoin de répeter des commandes dans des macros (dans simplfy3D)…. Je cherche en fait à faire fonctionner un extrudeur en permanence jusqu'à interruption , par exemple avec une entrée endstop ….. Si j'utilse des déplacements de type G1 … Ca fonctionne mais une seule fois, je n'arrive pas à trouver une explication (claire…)…. J'ai essayé des while, des repeat ….. Mais je ne trouve pas comment faire pour avoir une boucle conditionnelle qui fonctionne , je n'ai à chaque fois que le , ou les déplacements inclus cans ma boucle et seulement une fois …. Je ne trouve pas comment faire un boucle conditionnelle en Gcode ….. Par exemple si je fais une macro : G91 o100 repeat[5] """""mon code""""" o100 endrepeat G90 Cela n'execute qu'une fois mon code …. Je ne trouve pas comment activer cette fonction (repeat) ???????
juanpa Posté(e) Janvier 1, 2020 Posté(e) Janvier 1, 2020 (modifié) Salut ! Tu devrais essayer avec une variable et une boucle while. Tu déclares une variable à 1 et tu l'incrémente à chaque boucle. Tant que la variable #100 est inférieur à 5, il devrait boucler. #100 = 1 WHILE [#100 LE 5] DO1 (Some G-Code Blocks Go Here to Be Repeated Each Loop) #100 = #100 + 1 (Increase #100 by 1 each iteration of the loop) END1 Les opérateurs EQ: Equal NE: Not equal GT: Greater than GE: Greater than or equal LT: Less than LE: Less than or equal Modifié (le) Janvier 1, 2020 par juanpa 1
Little french kev Posté(e) Janvier 2, 2020 Posté(e) Janvier 2, 2020 J'avais jamais réalisé qu'on pouvait utiliser des boucles en G-code . Je ne m'en servirai probablement jamais mais c'est cool quand meme!
Jean-Claude Garnier Posté(e) Janvier 2, 2020 Posté(e) Janvier 2, 2020 Il y a 7 heures, juanpa a dit : Tu devrais essayer avec une variable et une boucle while. Ayant pratiqué ça pendant des années en CN industrielle, c'est une des premières choses que j'ai tentées en Marlin. Ça marche pas, c'est TROP dommage ! Marlin ne semble pas connaître la "récursivité" Même un simple saut à une ligne plus en aval ne marche pas (GOTO xxx) Mais bon, c'est peut être simplement que j'ai pas su le faire.... @Tircown, t'as déjà fait ça ???
juanpa Posté(e) Janvier 2, 2020 Posté(e) Janvier 2, 2020 Je n'ai jamais testé ce genre de conditions sous Marlin, par contre je crois que les conditions IF fonctionnent (j'avais vu ça dans un gcode sur PrusaSlicer il me semble), mais la condition IF ne fera pas boucler le schmilblik à moins de mettre plusieurs IF à la suite
serge69 Posté(e) Janvier 2, 2020 Auteur Posté(e) Janvier 2, 2020 Les conditions "if" fonctionnent , mais je ne vois pas comment si on veut faire, par exemple 100.000 opérations enchainées ... On peut écrire 100.000 lignes de codes …?????? Plus simple de mettre dans ce cas 100.000 instructions qui se suivent …!!!! 100.000 instructions, c'est bien sur une blague, je veux en faite faire la même opération en permanence tant que je n'ai pas une condition d'arret, par exemple un bouton sur une entrée endstop ….. Pour pouvoir actionner un extrudeur et l'arreter avec une simple commande …. C'est pour piloter une machine que je me bricole, destinée à faire du filament plastique …. Je veux utiliser une ancienne carte Creality v 1.1.3.... J'utilise la régulation thermique, la vitesse et aussi l'avance de l'extrudeur ….. Si on ne peut pas gerer les boucles sous gcode, je le ferrais avec un pic, c'est bien plus simple, mais bien plus long il faut faire le PGM (C#) et le CI, Alors comme tout informaticien/Electronicien qui se respecte, il faut aller au plus court …. J'espere encore trouver une solution avec du Gcode …..!!!!!!
serge69 Posté(e) Janvier 2, 2020 Auteur Posté(e) Janvier 2, 2020 Il y a 8 heures, Jean-Claude Garnier a dit : Ayant pratiqué ça pendant des années en CN industrielle, c'est une des premières choses que j'ai tentées en Marlin. Ça marche pas, c'est TROP dommage ! Marlin ne semble pas connaître la "récursivité" Même un simple saut à une ligne plus en aval ne marche pas (GOTO xxx) Mais bon, c'est peut être simplement que j'ai pas su le faire.... @Tircown, t'as déjà fait ça ??? Je ne pense pas être sous marlin au sens direct du cas, je mets mes Gcodes dans une macro sous Simlplify3D …. C'est donc une suite de purs "Gcodes" , qui sont envoyés directement à la carte creality ….. Est-ce la carte qui n'est pas en mesure de gerer du Gcode, ou le Gcode qui n'utilise pas vraiment les boucles correctement ….????
fran6p Posté(e) Janvier 2, 2020 Posté(e) Janvier 2, 2020 il y a 4 minutes, serge69 a dit : le Gcode qui n'utilise pas vraiment les boucles correctement ….???? Extrait du wikipedia anglais: Citation G-code began as a limited language that lacked constructs such as loops, conditional operators, and programmer-declared variables with natural-word-including names (or the expressions in which to use them). It was unable to encode logic, but was just a way to "connect the dots" where the programmer figured out many of the dots' locations longhand. The latest implementations of G-code include macro language capabilities somewhat closer to a high-level programming language. Donc, je ne pense pas que tu puisses réaliser ce que tu souhaites via gcode (la bible du Marlin (ou celle-là) n'en fait elle non plus aucune mention).
Jean-Claude Garnier Posté(e) Janvier 2, 2020 Posté(e) Janvier 2, 2020 il y a une heure, serge69 a dit : Je ne pense pas être sous marlin au sens direct Bien sûr que si, à qui d'autre crois-tu que tu causes quand tu "parles" à ton Ender ? Le Gcode, qu'il soit généré par Simplify, Cura ou Marmiton n'est qu'une succession de lignes lues en "streaming" dans l'ordre où elles ont été écrites
Tircown Posté(e) Janvier 2, 2020 Posté(e) Janvier 2, 2020 Salut, Non je n'ai jamais fais ça MAIS je vois un hack possible avec Marlin: mettre l'extrudeur sur X et faire un G28 X sans fin de course. Je pense qu'on doit pouvoir gérer la vitesse de base dans la config de Marlin et la faire varier avec M220 S... (changer le feedrate) ou M92 X... (changer le step/mm) mais il faudrait 1-vérifier si G28 est non bloquant et t'autorises à envoyer et interpréter du gcode (je suis sceptique sur ce point), 2-vérifier si M220 affecte aussi la vitesse de homing. Pour des tests ça doit pouvoir dépanner mais je pense que ton projet va nécessiter de coder son propre firmware ne serais-ce que pour pouvoir réguler le diamètre du filament automatiquement. J'y vois quand même quelques avantages: la gestion de la température est plus simple, M109 est d'une grande aide ici. Le endstop X peut servir d'arrêt d'urgence si tu penses à enlever le bounce de homing dans la config Marlin et avec un peu de gcode pour refroidir juste derrière le G28 X et un peu de distance inverse pour enlever la pression dans la buse. Le firmware klipper et ses macros est peut-être plus adapté mais moins répandu. Je dois pouvoir t'aider avec ce dernier tant que ça reste du paramétrage de config.
serge69 Posté(e) Janvier 3, 2020 Auteur Posté(e) Janvier 3, 2020 Donc d'après les réponses que j'ai eu il ne semble pas possible de faire des boucles en Gcode …. Il faut donc utiliser un vrai langage de programation (C++, C# ….. ) …. Soit en C# avec un Pic , mais c'est plus long à mettre en oeuvre (programme + CI) ... Soit essayer d'utiliser la carte creality, le plus dur va être de trouver les informations sur la carte , l'utilisation et la correspondance des ports, ensuite se retrouver dans le "foutoire folklorique" d' Arduino ( quels sous PGM appellent, quels autres sous PGM, qui en appellent , d'autres … ect ….
Jean-Claude Garnier Posté(e) Janvier 3, 2020 Posté(e) Janvier 3, 2020 Tu as peut-être une solution intermédiaire, en passant par un Raspberry. À ce que j'ai pu comprendre de ci de là, Octoprint devrait pouvoir te permettre de ne pas avoir à réinventer la roue. Il doit bien y avoir des plugins à explorer sans devoir TOUT réécrire.
serge69 Posté(e) Janvier 3, 2020 Auteur Posté(e) Janvier 3, 2020 Je ne connais pas du tout le "Rasberry" ….. Comment ça se programme ? Quel langage possible ?????
Tircown Posté(e) Janvier 3, 2020 Posté(e) Janvier 3, 2020 Franchement avec klipper, donc sans coder, ça doit être jouable par contre il te faut un raspberry. Klipper gère le TSL1401CL qui est un capteur de diamètre de filament. L'arrêt d'urgence ou n'importe quel bouton peut être géré par les macros, rien de très complexe. La boucle pourrait également être gérée par une macro activée à chaque tour d'extrudeur (capteur effet hall?).
Jean-Claude Garnier Posté(e) Janvier 3, 2020 Posté(e) Janvier 3, 2020 @serge69 tu ne connais pas le Raspberry Pi ???? C'est un nano ordinateur à deux balles qui tourne sous Linux et qui sert à plein de trucs de ouf. Demande à Google, il te dira le reste
serge69 Posté(e) Janvier 3, 2020 Auteur Posté(e) Janvier 3, 2020 Je vais regarder de plus prés …. Mais on me parle de rasberry , d'octoprint de klipper … etc …..????? J'avais l'habitude de regler mes problemes spécifiques pour pas cher en faisant moi même mes CI, avec un µP style Pic ou AVR, et un programme, en C++ ou C#, ce qui fonctionne super bien et permet même de se passer des conversions µP <-> série, en utilisant directement le port USB …. Bon le problème étant le temps (réalisation de la carte et du programme) ... Maintenant s'il faut passer du temps sur apprendre à faire fonctionner Rasberry, octoprint, klipper , et autres ?????? C'est aussi pour ça que j'esite a réécrire ou modifier, un PGM pour une carte ( de la famille des Arduino), pour ne pas avoir à rechercher dans la programmation ( spaghetti ) avec des sous-Pgm qui en appellent d'autres , qui en appellent encore d'autres , ainsi de suite ….. Ou alors il faudrait que je trouve par exemple le vrai schemas des cartes ( comme la creality) pour savoir ou ce trouvent les ports, qui correspondent aux entrées/sorties Je cherche surtout du simple et du rapide à faire …….
fran6p Posté(e) Janvier 3, 2020 Posté(e) Janvier 3, 2020 Il y a 5 heures, Tircown a dit : Klipper gère le TSL1401CL qui est un capteur de diamètre de filament. Salut @Tircown <HS> (je vais bientôt enlever de mes imprimantes la référence à la Zatsit qui ne verra sans doute jamais le jour) </fin HS> Marlin permet aussi de gérer un capteur de diamètre de filament (configuration_adv.h) Révélation /** * Filament Width Sensor * * Measures the filament width in real-time and adjusts * flow rate to compensate for any irregularities. * * Also allows the measured filament diameter to set the * extrusion rate, so the slicer only has to specify the * volume. * * Only a single extruder is supported at this time. * * 34 RAMPS_14 : Analog input 5 on the AUX2 connector * 81 PRINTRBOARD : Analog input 2 on the Exp1 connector (version B,C,D,E) * 301 RAMBO : Analog input 3 * * Note: May require analog pins to be defined for other boards. */ //#define FILAMENT_WIDTH_SENSOR #if ENABLED(FILAMENT_WIDTH_SENSOR) #define FILAMENT_SENSOR_EXTRUDER_NUM 0 // Index of the extruder that has the filament sensor. :[0,1,2,3,4] #define MEASUREMENT_DELAY_CM 14 // (cm) The distance from the filament sensor to the melting chamber #define FILWIDTH_ERROR_MARGIN 1.0 // (mm) If a measurement differs too much from nominal width ignore it #define MAX_MEASUREMENT_DELAY 20 // (bytes) Buffer size for stored measurements (1 byte per cm). Must be larger than MEASUREMENT_DELAY_CM. #define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA // Set measured to nominal initially // Display filament width on the LCD status line. Status messages will expire after 5 seconds. //#define FILAMENT_LCD_DISPLAY #endif Il y a 5 heures, serge69 a dit : Ou alors il faudrait que je trouve par exemple le vrai schemas des cartes ( comme la creality) pour savoir ou ce trouvent les ports, Pour la CR10 (pas la S), le github de Creality diffuse les schémas électroniques : https://github.com/Creality3DPrinting/CR-10/tree/master/Circuit diagram/Motherboard D'autres constructeurs / fabricants sont moins avare concernant leurs cartes (Bigtreetech par exemple). Sinon, dans Marlin, les fichiers boards.h et ceux commençants par pin_xxxx.h donnent les broches utilisables.
Tircown Posté(e) Janvier 4, 2020 Posté(e) Janvier 4, 2020 (modifié) Il y a 13 heures, fran6p a dit : Marlin permet aussi de gérer un capteur de diamètre de filament (configuration_adv.h) C'est vrai mais il n'y a pas ce système de macros. C-à-d, du gcode lié à une commande, ex: j'ai paramétré pour que taper SOUND_MARIO dans la console me joue quelques secondes de musique avec le buzzer de l'écran de l'imprimante. Une autre utilisation est pour le chargement/déchargement du filament avec un bondtech; géré avec juste une commande dans les fichiers à imprimer. En l'occurrence j'ai choisi LOAD_FILAMENT et UNLOAD_FILAMENT mais c'est à personnaliser dans la config de klipper. Ici ce sont surtout les gcode personnalisés et liés à l'activation d'une broche qui sont intéressants. Ceci dit avec Marlin ça doit être faisable avec l'aide d'un plugin octoprint. [HS] Idem pour la Zatsit, je ne l'attends plus. Encore un qui a été trop ambitieux. Comme quoi l'age ne rend pas forcément plus raisonnable. [/HS] Modifié (le) Janvier 4, 2020 par Tircown 1
serge69 Posté(e) Janvier 4, 2020 Auteur Posté(e) Janvier 4, 2020 Il y a 15 heures, fran6p a dit : Salut @Tircown <HS> (je vais bientôt enlever de mes imprimantes la référence à la Zatsit qui ne verra sans doute jamais le jour) </fin HS> Marlin permet aussi de gérer un capteur de diamètre de filament (configuration_adv.h) Révéler le texte masqué /** * Filament Width Sensor * * Measures the filament width in real-time and adjusts * flow rate to compensate for any irregularities. * * Also allows the measured filament diameter to set the * extrusion rate, so the slicer only has to specify the * volume. * * Only a single extruder is supported at this time. * * 34 RAMPS_14 : Analog input 5 on the AUX2 connector * 81 PRINTRBOARD : Analog input 2 on the Exp1 connector (version B,C,D,E) * 301 RAMBO : Analog input 3 * * Note: May require analog pins to be defined for other boards. */ //#define FILAMENT_WIDTH_SENSOR #if ENABLED(FILAMENT_WIDTH_SENSOR) #define FILAMENT_SENSOR_EXTRUDER_NUM 0 // Index of the extruder that has the filament sensor. :[0,1,2,3,4] #define MEASUREMENT_DELAY_CM 14 // (cm) The distance from the filament sensor to the melting chamber #define FILWIDTH_ERROR_MARGIN 1.0 // (mm) If a measurement differs too much from nominal width ignore it #define MAX_MEASUREMENT_DELAY 20 // (bytes) Buffer size for stored measurements (1 byte per cm). Must be larger than MEASUREMENT_DELAY_CM. #define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA // Set measured to nominal initially // Display filament width on the LCD status line. Status messages will expire after 5 seconds. //#define FILAMENT_LCD_DISPLAY #endif Pour la CR10 (pas la S), le github de Creality diffuse les schémas électroniques : https://github.com/Creality3DPrinting/CR-10/tree/master/Circuit diagram/Motherboard D'autres constructeurs / fabricants sont moins avare concernant leurs cartes (Bigtreetech par exemple). Sinon, dans Marlin, les fichiers boards.h et ceux commençants par pin_xxxx.h donnent les broches utilisables. Le probleme, c'est le coté spaghetti de la programmation , et pas clair du tout ….. On peut supposer que la carte creality correspond peut-être a "pins_melzi"qui appelle "pins_saguinololu_12", qui appelle "pins_saguinololu_11", qui donne des attributions de pins n'ayant aucun rapports avec les schémas issus de GitHub …… ????? Pas vraiment génial Arduino …….!!!!!!
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