{"id":241,"date":"2019-07-29T10:07:19","date_gmt":"2019-07-29T09:07:19","guid":{"rendered":"http:\/\/daniel974.fr\/wordpress\/?p=241"},"modified":"2021-08-08T10:29:51","modified_gmt":"2021-08-08T09:29:51","slug":"mini-traceur-2d","status":"publish","type":"post","link":"http:\/\/daniel974.fr\/wordpress1\/2019\/07\/29\/mini-traceur-2d\/","title":{"rendered":"Traceurs 2D"},"content":{"rendered":"<h1 style=\"text-align: center;\"><strong>Traceurs 2D<\/strong><\/h1>\n<p>Et 1 (avec ces jolies petites choses&#8230;)<a href=\"http:\/\/daniel974.fr\/wordpress1\/wp-content\/uploads\/2019\/07\/glissiere.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-276\" src=\"http:\/\/daniel974.fr\/wordpress1\/wp-content\/uploads\/2019\/07\/glissiere.png\" alt=\"\" width=\"93\" height=\"92\" srcset=\"http:\/\/daniel974.fr\/wordpress1\/wp-content\/uploads\/2019\/07\/glissiere.png 197w, http:\/\/daniel974.fr\/wordpress1\/wp-content\/uploads\/2019\/07\/glissiere-150x150.png 150w\" sizes=\"(max-width: 93px) 100vw, 93px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/daniel974.fr\/wordpress1\/wp-content\/uploads\/2019\/07\/miniTraceur2d-e1591875424931.jpg\"><br \/>\n<img decoding=\"async\" loading=\"lazy\" class=\"wp-image-242 aligncenter\" src=\"http:\/\/daniel974.fr\/wordpress1\/wp-content\/uploads\/2019\/07\/miniTraceur2d-e1591875424931-225x300.jpg\" alt=\"\" width=\"378\" height=\"504\" srcset=\"http:\/\/daniel974.fr\/wordpress1\/wp-content\/uploads\/2019\/07\/miniTraceur2d-e1591875424931-225x300.jpg 225w, http:\/\/daniel974.fr\/wordpress1\/wp-content\/uploads\/2019\/07\/miniTraceur2d-e1591875424931-768x1024.jpg 768w, http:\/\/daniel974.fr\/wordpress1\/wp-content\/uploads\/2019\/07\/miniTraceur2d-e1591875424931-1152x1536.jpg 1152w, http:\/\/daniel974.fr\/wordpress1\/wp-content\/uploads\/2019\/07\/miniTraceur2d-e1591875424931-1536x2048.jpg 1536w\" sizes=\"(max-width: 378px) 100vw, 378px\" \/><\/a><br \/>\net 2\u00a0 (avec des vieux moteurs de lecteur de disquette 5 pouces) \u00a0<a href=\"http:\/\/daniel974.fr\/wordpress\/wp-content\/uploads\/2019\/07\/teac.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-278\" src=\"http:\/\/daniel974.fr\/wordpress\/wp-content\/uploads\/2019\/07\/teac-300x193.png\" alt=\"\" width=\"126\" height=\"81\" srcset=\"http:\/\/daniel974.fr\/wordpress1\/wp-content\/uploads\/2019\/07\/teac-300x193.png 300w, http:\/\/daniel974.fr\/wordpress1\/wp-content\/uploads\/2019\/07\/teac.png 319w\" sizes=\"(max-width: 126px) 100vw, 126px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/daniel974.fr\/wordpress1\/wp-content\/uploads\/2019\/07\/traceur-2d-bis-scaled.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-265 aligncenter\" src=\"http:\/\/daniel974.fr\/wordpress1\/wp-content\/uploads\/2019\/07\/traceur-2d-bis-300x225.jpg\" alt=\"\" width=\"536\" height=\"402\" srcset=\"http:\/\/daniel974.fr\/wordpress1\/wp-content\/uploads\/2019\/07\/traceur-2d-bis-300x225.jpg 300w, http:\/\/daniel974.fr\/wordpress1\/wp-content\/uploads\/2019\/07\/traceur-2d-bis-1024x768.jpg 1024w, http:\/\/daniel974.fr\/wordpress1\/wp-content\/uploads\/2019\/07\/traceur-2d-bis-768x576.jpg 768w, http:\/\/daniel974.fr\/wordpress1\/wp-content\/uploads\/2019\/07\/traceur-2d-bis-1536x1152.jpg 1536w, http:\/\/daniel974.fr\/wordpress1\/wp-content\/uploads\/2019\/07\/traceur-2d-bis-2048x1536.jpg 2048w\" sizes=\"(max-width: 536px) 100vw, 536px\" \/><\/a>et 3 (m\u00e9caniques de 2 vieux scanners, bonne pr\u00e9cision mais tr\u00e8s lents..)<a href=\"http:\/\/daniel974.fr\/wordpress1\/wp-content\/uploads\/2019\/07\/cnc2scans-scaled-e1614003995690.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"size-medium wp-image-283 aligncenter\" src=\"http:\/\/daniel974.fr\/wordpress1\/wp-content\/uploads\/2019\/07\/cnc2scans-scaled-e1614003995690-300x225.jpg\" alt=\"\" width=\"300\" height=\"225\" srcset=\"http:\/\/daniel974.fr\/wordpress1\/wp-content\/uploads\/2019\/07\/cnc2scans-scaled-e1614003995690-300x225.jpg 300w, http:\/\/daniel974.fr\/wordpress1\/wp-content\/uploads\/2019\/07\/cnc2scans-scaled-e1614003995690-1024x768.jpg 1024w, http:\/\/daniel974.fr\/wordpress1\/wp-content\/uploads\/2019\/07\/cnc2scans-scaled-e1614003995690-768x576.jpg 768w, http:\/\/daniel974.fr\/wordpress1\/wp-content\/uploads\/2019\/07\/cnc2scans-scaled-e1614003995690-1536x1152.jpg 1536w, http:\/\/daniel974.fr\/wordpress1\/wp-content\/uploads\/2019\/07\/cnc2scans-scaled-e1614003995690-2048x1536.jpg 2048w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>voila un moment que je m&rsquo;int\u00e9resse \u00e0 ces choses l\u00e0 et nombreux sont les tutos sur internet&#8230; du miniCNC avec des lecteurs CD au graveur laser pro, par exemple un des premiers \u00e0 m&rsquo;inspirer<\/p>\n<p>https:\/\/www.instructables.com\/Mini-CNC-Plotter-Arduino-Based\/<\/p>\n<p>mais j&rsquo;ai eu des probl\u00e8mes avec les lineTo ou gotoXY ou drawXY ou&#8230;etc<\/p>\n<p>en effet souvent les trac\u00e9s ne se raccordaient pas ou des probl\u00e8mes apparaissaient lors du tra\u00e7age, les proc\u00e9dures de trac\u00e9 de segment n&rsquo;\u00e9taient en effet pas correctes quand il fallait convertir des mm de distance en pas moteur&#8230;.on demande de tracer 11,47 mm avec des syst\u00e8me moteurs-poulies ( de r\u00e9cup\u00e9ration) dont la r\u00e9solution ne d\u00e9passe pas 0,4 mm, forc\u00e9ment des erreurs apparaissent&#8230;et s&rsquo;accumulent&#8230;<\/p>\n<p>La premi\u00e8re solution a \u00e9t\u00e9 de ne pas oublier, \u00e0 la fin du trac\u00e9 de pr\u00e9ciser l&rsquo;endroit ou on a abouti, ce n&rsquo;est pas parce qu&rsquo;on veut aller \u00e0 un endroit qu&rsquo;on s&rsquo;y retrouve (probl\u00e8me de r\u00e9solution&#8230;)<\/p>\n<p>Voici donc ma proc\u00e9dure:<\/p>\n<pre>void gotoXYmm(float x, float y) {\r\n if (x &lt; 0) x = 0;\r\n if (y &lt; 0) y = 0; if (x &gt; Xmax) x = Xmax;\r\n if (y &gt; Ymax) y = Ymax;\r\n int dxpas, dypas;\r\n dxpas = int((x - Xpos) * StepsPerMillimeterX);\r\n dypas = int((y - Ypos) * StepsPerMillimeterY);\r\n Serial.println(\"gotoXYmm dxpas=\" + String(dxpas) + \" dypas=\" + String(dypas));\r\n if (dxpas == 0) {\r\n  moveY(dypas);\r\n  Ypas = Ypas + dypas;\r\n }\r\n else if (dypas == 0) {\r\n  moveX(dxpas);\r\n  Xpas = Xpas + dxpas;\r\n }\r\nelse {\r\n  gotoXpasYpas(0, 0, dxpas, dypas);\r\n  Xpas = Xpas + dxpas;\r\n  Ypas = Ypas + dypas;\r\n}\r\nXpos = Xpas \/ StepsPerMillimeterX;\r\nYpos = Ypas \/ StepsPerMillimeterY;\r\nmontrePosition();\r\n}<\/pre>\n<p>ce sont les derni\u00e8res lignes\u00a0 Xpos=&#8230; et Ypos=&#8230; qui r\u00e9tablissent la situation&#8230;<\/p>\n<p>Ceci a r\u00e9gl\u00e9 pas mal de probl\u00e8me mais certains subsistaient dans l&rsquo;impl\u00e9mentation de l&rsquo;algorithme de Bresenham pour le trac\u00e9 de segment en pas moteur, celle qui suit \u00e0 r\u00e9gler tous les probl\u00e8mes et en prime elle est la plus courte&#8230;:<\/p>\n<pre class=\"lang:default decode:true\">void gotoXpasYpas(int x0, int y0, int x1, int y1) {\r\n  int dx = abs(x1 - x0), sx = x0 &lt; x1 ? 1 : -1;\r\n  int dy = abs(y1 - y0), sy = y0 &lt; y1 ? 1 : -1;\r\n  int err = (dx &gt; dy ? dx : -dy) \/ 2, e2;\r\n  for (;;) {\r\n    \/\/setPixel(x0,y0);\r\n    \/\/Serial.println(\"je suis la, x0:\" + String(x0) + \" y0:\" + String(y0));\r\n    if (x0 == x1 &amp;&amp; y0 == y1) break;\r\n    e2 = err;\r\n    if (e2 &gt; -dx) {\r\n      err -= dy;\r\n      x0 += sx;\r\n      moveX(sx); delay(10);\r\n    }\r\n    if (e2 &lt; dy) {\r\n      err += dx;\r\n      y0 += sy;\r\n      moveY(sy); delay(10);\r\n    }\r\n  }\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<p>et voila c&rsquo;est super&#8230;<\/p>\n<h2>F-Engrave \u00a0 \u00a0 \u00a0 \u00a0<a href=\"http:\/\/daniel974.fr\/wordpress1\/wp-content\/uploads\/2019\/07\/header.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-286\" src=\"http:\/\/daniel974.fr\/wordpress1\/wp-content\/uploads\/2019\/07\/header-300x119.jpg\" alt=\"\" width=\"300\" height=\"119\" srcset=\"http:\/\/daniel974.fr\/wordpress1\/wp-content\/uploads\/2019\/07\/header-300x119.jpg 300w, http:\/\/daniel974.fr\/wordpress1\/wp-content\/uploads\/2019\/07\/header-768x305.jpg 768w, http:\/\/daniel974.fr\/wordpress1\/wp-content\/uploads\/2019\/07\/header.jpg 775w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/h2>\n<p class=\"\">https:\/\/www.scorchworks.com\/Fengrave\/fengrave.html<\/p>\n<p>Je cherchais une solution pour plotter du texte, celle-ci fonctionne \u00e0 merveille<a href=\"http:\/\/daniel974.fr\/wordpress1\/wp-content\/uploads\/2019\/07\/demoFEngrave2-e1614580295974.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"size-medium wp-image-292 aligncenter\" src=\"http:\/\/daniel974.fr\/wordpress1\/wp-content\/uploads\/2019\/07\/demoFEngrave2-e1614580295974-268x300.jpg\" alt=\"\" width=\"268\" height=\"300\" srcset=\"http:\/\/daniel974.fr\/wordpress1\/wp-content\/uploads\/2019\/07\/demoFEngrave2-e1614580295974-268x300.jpg 268w, http:\/\/daniel974.fr\/wordpress1\/wp-content\/uploads\/2019\/07\/demoFEngrave2-e1614580295974-915x1024.jpg 915w, http:\/\/daniel974.fr\/wordpress1\/wp-content\/uploads\/2019\/07\/demoFEngrave2-e1614580295974-768x860.jpg 768w, http:\/\/daniel974.fr\/wordpress1\/wp-content\/uploads\/2019\/07\/demoFEngrave2-e1614580295974-1372x1536.jpg 1372w, http:\/\/daniel974.fr\/wordpress1\/wp-content\/uploads\/2019\/07\/demoFEngrave2-e1614580295974.jpg 1425w\" sizes=\"(max-width: 268px) 100vw, 268px\" \/><\/a>J&rsquo;ai remplac\u00e9 le scanner le plus lent par un moteur 100 pas programm\u00e9 en 1\/2pas et une petite poulie pour obtenir , sur cet axe, une r\u00e9solution de 0.15 mm\/pas, ce n&rsquo;est pas si mal&#8230;<\/p>\n<p>Sur l&rsquo;autre axe, avec le vieux scanner, j&rsquo;ai\u00a0 deux fois mieux<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Traceurs 2D Et 1 (avec ces jolies petites choses&#8230;) et 2\u00a0 (avec des vieux moteurs de lecteur de disquette 5 pouces) \u00a0 et 3 (m\u00e9caniques de 2 vieux scanners, bonne pr\u00e9cision mais tr\u00e8s lents..) voila un moment que je m&rsquo;int\u00e9resse &hellip; <a href=\"http:\/\/daniel974.fr\/wordpress1\/2019\/07\/29\/mini-traceur-2d\/\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"http:\/\/daniel974.fr\/wordpress1\/wp-json\/wp\/v2\/posts\/241"}],"collection":[{"href":"http:\/\/daniel974.fr\/wordpress1\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/daniel974.fr\/wordpress1\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/daniel974.fr\/wordpress1\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/daniel974.fr\/wordpress1\/wp-json\/wp\/v2\/comments?post=241"}],"version-history":[{"count":26,"href":"http:\/\/daniel974.fr\/wordpress1\/wp-json\/wp\/v2\/posts\/241\/revisions"}],"predecessor-version":[{"id":334,"href":"http:\/\/daniel974.fr\/wordpress1\/wp-json\/wp\/v2\/posts\/241\/revisions\/334"}],"wp:attachment":[{"href":"http:\/\/daniel974.fr\/wordpress1\/wp-json\/wp\/v2\/media?parent=241"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/daniel974.fr\/wordpress1\/wp-json\/wp\/v2\/categories?post=241"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/daniel974.fr\/wordpress1\/wp-json\/wp\/v2\/tags?post=241"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}