<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel>
        <title>Ardunio G-Code Parser</title>
        <description>I&#039;ve written a g-code parser for the arduino.  It receives commands send by a host laptop by usb and controls a mill based on instructions received. 
 
Current commands supported are linear interpolation (00 and 01), dwell (04), setting units (20 and 21), incremental positioning (92).  USB comm is needed since the space on the chip is limited and large jobs would not fit, plus the chip does not need to be reprogrammed for every job.

This weekend I plan on adding absolute positioning which shouldn&#039;t be that difficult, so I guess this is an alpha release.  My goal is to use my mill to etch pcbs including ones needed for a plastic extruder.  

My setup of how this works is
1. layout a board in eagle
2. run pcb-gcode script to create gcode
3. send output file over usb to arduino
4. arduino converts gcode to commands to drive steppers on mill
5. etch a pcb with a dremal attached to the mill

pcb-gcode currently only outputs absolute mode gcode...

Heres a rundown of the files in the arduino sketchbook
user - user loop that handles usb comm
init - user defines and startup stuff
process_string - parse gcode instructions
stepper_control - functions that drive the mill

There are two consts in init that you will need to tweak for your setup, they are the number of steps in an inch and in a mm for your mill.

I think the code is easy to follow and I&#039;ve used it quite a bit to control my mill.  Theres a lot I&#039;d like to add, but for now I just need to add absolute mode.  Theres some string problems that require leading and trailing spaces, otherwise the string isn&#039;t read correctly (its prob 5 minutes of debugging to fix).  

The code doesn&#039;t require a mill to see how it works, all the commands received are sent back over serial, which can be viewed in arduinos serial monitor.

Any comments or questions or code contributions welcome!  I&#039;ll post updates here.  Thanks to Zach for his work on the project and his arduino sample code!</description>
        <link>https://reprap.org/forum/read.php?12,9459,9459#msg-9459</link>
        <lastBuildDate>Fri, 09 Oct 2026 10:46:24 -0400</lastBuildDate>
        <generator>Phorum 5.2.23</generator>
        <item>
            <guid>https://reprap.org/forum/read.php?12,9459,44771#msg-44771</guid>
            <title>Re: Ardunio G-Code Parser</title>
            <link>https://reprap.org/forum/read.php?12,9459,44771#msg-44771</link>
            <description><![CDATA[ Hello,<br />
<br />
Great work man!!<br />
I'm trying to do a parser myself, and I'm having some trouble. If you could post your latest code updates concerning how do you handle the G codes and the M codes together it would be great :D Thanks in advance :)<br />
<br />
Continue your great work]]></description>
            <dc:creator>Julio Rodrigues</dc:creator>
            <category>RepRap Host</category>
            <pubDate>Thu, 06 May 2010 11:41:11 -0400</pubDate>
        </item>
        <item>
            <guid>https://reprap.org/forum/read.php?12,9459,21909#msg-21909</guid>
            <title>Re: Ardunio G-Code Parser</title>
            <link>https://reprap.org/forum/read.php?12,9459,21909#msg-21909</link>
            <description><![CDATA[ I think Zach did some work on his g-code interpreter before to change trig to other algorithms.<br />
<br />
<br />
<br />
<br />
If you divide a circle into quadrants, and record a set of x,y coordinates for a 90 degree rotation, then these can be both negated for opposite quadrant, or one or the other axis negated for mirroring.<br />
<br />
It's actually even easier than that, work wise:<br />
<br />
If you start on the top of a circle at the 0/360 deg mark Y is at a maximum, and X is zero. moving clockwise to 45 deg, X will become equal to Y, and then at the 90 deg mark, X is equal to the radius, and Y is equal to zero.<br />
<br />
So, you can also keep the signs, but swap the absolute values for X and Y such that an n degrees after 45 degrees, x=(y at 45-n degrees), and y=(x at 45-n degrees)<br />
<br />
So then, you calculate a series of x and Y measurements for a bit better precision than you need(, and later scale them to get the correct radius.)<br />
that way, you can precalculate 1/8'th of a circle using your compiler, or cut and paste, and then, using a jump table based on the angle's position within those 45 degree sectors, you have a precalculated factor to multiply your radius by.<br />
<br />
<br />
Mentioning radius, z^2 = x^2 + y^2, so you can even drop half of the 1/8'th of a circle table... say the Y coordinates, and calculate them, using the original radius. y = (z^2 - x^2)^0.5 All speed/memory usage trade offs.]]></description>
            <dc:creator>grael</dc:creator>
            <category>RepRap Host</category>
            <pubDate>Mon, 02 Mar 2009 03:54:49 -0500</pubDate>
        </item>
        <item>
            <guid>https://reprap.org/forum/read.php?12,9459,21469#msg-21469</guid>
            <title>Re: Ardunio G-Code Parser</title>
            <link>https://reprap.org/forum/read.php?12,9459,21469#msg-21469</link>
            <description><![CDATA[ Hi mellery,<br />
<br />
you've done a great work on the g-code parser.<br />
<br />
i'm in the process of testing the setup of my cnc machine built using the reprap project info. i uploaded your g-code parser to my arduino and tried to send some commands. all i was getting is this:<br />
Recieved: G<br />
<br />
processing string...<br />
<br />
WARN: unknown instruction - G<br />
<br />
doneRecieved: 01 X1.0 Y1.0 Z0.0 F300<br />
<br />
processing string...<br />
<br />
WARN: unknown instruction - 01 X1.0 Y1.0 Z0.0 F300<br />
<br />
done<br />
<br />
i entered the command through the arduino software just to check if it's ok. <br />
<br />
am i doing it right or there is another way that i should send the codes?<br />
<br />
thanks]]></description>
            <dc:creator>Sam</dc:creator>
            <category>RepRap Host</category>
            <pubDate>Sat, 14 Feb 2009 12:21:08 -0500</pubDate>
        </item>
        <item>
            <guid>https://reprap.org/forum/read.php?12,9459,13717#msg-13717</guid>
            <title>Re: Ardunio G-Code Parser</title>
            <link>https://reprap.org/forum/read.php?12,9459,13717#msg-13717</link>
            <description><![CDATA[ Been away for a while, updated my firmware from 1.0 to 1.3, nice to see all the improvements on it!  The feedrate and arcs are especially nice, along with some error checking i wont have to code now.<br />
<br />
I've been milling boards, and have started milling 3d objects out of plant Styrofoam (milled out a chess rook), will test this new code out, now that I have some free time again.  <br />
<br />
Some other things I'll be working on soon<br />
-work on the documentation<br />
-mill single sided arduino, icd2, and stepper boards<br />
-adding eeprom support to buffer gcode, and some settings<br />
-improving the host software<br />
-would like to add an emergency stop using interrupts<br />
-learn about converting different file formats to gcode<br />
-play with eagle3d, and blender<br />
<br />
Can someone set it up so I can commit code and edit the wiki, or the builder blog? Thanks]]></description>
            <dc:creator>mellery</dc:creator>
            <category>RepRap Host</category>
            <pubDate>Mon, 30 Jun 2008 18:10:38 -0400</pubDate>
        </item>
        <item>
            <guid>https://reprap.org/forum/read.php?12,9459,13502#msg-13502</guid>
            <title>Re: Ardunio G-Code Parser</title>
            <link>https://reprap.org/forum/read.php?12,9459,13502#msg-13502</link>
            <description><![CDATA[ Yes, it can be done.<br />
<br />
I've already got a proof of concept working (temperature control and feedback).<br />
<br />
See here: [<a href="http://forums.reprap.org/read.php?1,12143,page=2" target="_blank"  rel="nofollow">forums.reprap.org</a>]]]></description>
            <dc:creator>Anonymous User</dc:creator>
            <category>RepRap Host</category>
            <pubDate>Sun, 22 Jun 2008 16:39:18 -0400</pubDate>
        </item>
        <item>
            <guid>https://reprap.org/forum/read.php?12,9459,13501#msg-13501</guid>
            <title>Re: Ardunio G-Code Parser</title>
            <link>https://reprap.org/forum/read.php?12,9459,13501#msg-13501</link>
            <description><![CDATA[ Here is the attachment to the fanuc macro b info.<br />
<br />
Also to explain G50 code a little.<br />
<br />
G50 is a setting that allows the spindle to go up to the set RPM (say S1000) and not any higher.  Useful for lathe work when using constant surface speed, although I guess it could be used on a mill.  Some old controls used it for a zero setting as well, similar to G92.  G50 S1000 (maximum speed) or G50 X0 Y0 (zero setting).<br />
<br />
G92 is not used very often in practice in the places I have worked. G54 thru G59 are used on a mill for work offsets (establish distance from home point to work zero point.]]></description>
            <dc:creator>leggazoid</dc:creator>
            <category>RepRap Host</category>
            <pubDate>Sun, 22 Jun 2008 16:38:29 -0400</pubDate>
        </item>
        <item>
            <guid>https://reprap.org/forum/read.php?12,9459,13498#msg-13498</guid>
            <title>Re: Ardunio G-Code Parser</title>
            <link>https://reprap.org/forum/read.php?12,9459,13498#msg-13498</link>
            <description><![CDATA[ Sorry, the link to fanuc did not work.<br />
<br />
How can I attach the pdf file?]]></description>
            <dc:creator>Ken Howe</dc:creator>
            <category>RepRap Host</category>
            <pubDate>Sun, 22 Jun 2008 16:17:31 -0400</pubDate>
        </item>
        <item>
            <guid>https://reprap.org/forum/read.php?12,9459,13496#msg-13496</guid>
            <title>Re: Ardunio G-Code Parser</title>
            <link>https://reprap.org/forum/read.php?12,9459,13496#msg-13496</link>
            <description><![CDATA[ Great work on the G-code people!<br />
<br />
I am a cnc machinist by trade and this is very interesting, to the point I am currently building a McWire. I would like to propose macro capability added to the cnc g-code.  <br />
<br />
info is at this link...<br />
[<a href="http://www.gefanuc.com/literature/pdf/gft-321.pdf" target="_blank"  rel="nofollow">www.gefanuc.com</a>]<br />
<br />
This I realize is very advanced, maybe just a pipe dream.<br />
<br />
This may be beyond the realm of the reprap project and more in line with what [<a href="http://www.linuxcnc.org/" target="_blank"  rel="nofollow">www.linuxcnc.org</a>] can do, I don't really know?<br />
<br />
Can you use emc2 program at [<a href="http://www.linuxcnc.org/" target="_blank"  rel="nofollow">www.linuxcnc.org</a>] to control the arduino and related electronics?<br />
<br />
Thanks for your hard work and your help.]]></description>
            <dc:creator>Ken Howe</dc:creator>
            <category>RepRap Host</category>
            <pubDate>Sun, 22 Jun 2008 16:13:43 -0400</pubDate>
        </item>
        <item>
            <guid>https://reprap.org/forum/read.php?12,9459,13103#msg-13103</guid>
            <title>Re: Ardunio G-Code Parser</title>
            <link>https://reprap.org/forum/read.php?12,9459,13103#msg-13103</link>
            <description><![CDATA[ these code submissions are great, guys!  i havent had time to try them out yet, but i plan on doing that ASAP.<br />
<br />
once i get them tested, i plan on making a new release of the arduino firmware.  great work!]]></description>
            <dc:creator>ZachHoeken</dc:creator>
            <category>RepRap Host</category>
            <pubDate>Tue, 10 Jun 2008 16:48:14 -0400</pubDate>
        </item>
        <item>
            <guid>https://reprap.org/forum/read.php?12,9459,12940#msg-12940</guid>
            <title>Re: Ardunio G-Code Parser</title>
            <link>https://reprap.org/forum/read.php?12,9459,12940#msg-12940</link>
            <description><![CDATA[ Daz<br />
<br />
&gt; I had a go at it (see the attached file) - what do<br />
&gt; you think?<br />
<br />
This looks like really good work. As it happens, I have been doing quite a bit of work on the G-code firmware this week and hope to submit this to SVN soon. I will have a go at integrating the work you have done and will report back when I have done so.<br />
<br />
Once again, well done.]]></description>
            <dc:creator>Anonymous User</dc:creator>
            <category>RepRap Host</category>
            <pubDate>Fri, 06 Jun 2008 09:09:50 -0400</pubDate>
        </item>
        <item>
            <guid>https://reprap.org/forum/read.php?12,9459,12814#msg-12814</guid>
            <title>Re: Ardunio G-Code Parser</title>
            <link>https://reprap.org/forum/read.php?12,9459,12814#msg-12814</link>
            <description><![CDATA[ Hey guys,<br />
<br />
I noticed some comments in the GCode parser module (process_string.pde) about performance:<br />
<br />
 //we do it like this to save time. makes curves better.<br />
 //eg. if only x and y are specified, we dont have to waste time looking up z.<br />
<br />
and on reviewing the code I realised that the parser is rescanning the instruction string several times (i.e. whenever has_command() is called, and again for search_string()).  If we change the parser to scan the string only once that should give a nice boost to performance.<br />
<br />
I had a go at it (see the attached file) - what do you think?<br />
<br />
My reprap is about half built so I can't run this yet. I did build the new process_string.pde with the arduino tools and it builds without errors and comes out a few hundred bytes larger but it should be faster. Anyone willing to try it out? It will no doubt have a bug or two :-D.<br />
<br />
If the size is getting a bit too large then it could be optimized to drop it down a bit.<br />
<br />
Cheers,<br />
Darran.<br />
<br />
PS. Edited to fix some obvious bugs in the attached file.]]></description>
            <dc:creator>Daz</dc:creator>
            <category>RepRap Host</category>
            <pubDate>Wed, 04 Jun 2008 19:31:18 -0400</pubDate>
        </item>
        <item>
            <guid>https://reprap.org/forum/read.php?12,9459,12421#msg-12421</guid>
            <title>Re: Ardunio G-Code Parser</title>
            <link>https://reprap.org/forum/read.php?12,9459,12421#msg-12421</link>
            <description><![CDATA[ <blockquote class="bbcode"><div><small>Quote<br /></small><strong></strong><br />Have you seen this pcb video? [<a href="http://www.youtube.com/watch?v=lhdqBrciQZU" target="_blank"  rel="nofollow">www.youtube.com</a>]</div></blockquote>
<br />
I remain grumpy that there seem to be no nice desktop mill kits like the fireballcnc easily obtainable in the UK; or at least in the bits of europe easily searchable in english ;)<br />
<br />
You have it so easy over the other side of the pond...]]></description>
            <dc:creator>Ru</dc:creator>
            <category>RepRap Host</category>
            <pubDate>Tue, 27 May 2008 03:27:49 -0400</pubDate>
        </item>
        <item>
            <guid>https://reprap.org/forum/read.php?12,9459,12414#msg-12414</guid>
            <title>Re: Ardunio G-Code Parser</title>
            <link>https://reprap.org/forum/read.php?12,9459,12414#msg-12414</link>
            <description><![CDATA[ Ray Wrote:<br />
-------------------------------------------------------<br />
&gt; Have you seen this pcb video?<br />
&gt; [<a href="http://www.youtube.com/watch?v=lhdqBrciQZU" target="_blank"  rel="nofollow">www.youtube.com</a>]<br />
<br />
Nice, very nice!  :)-D]]></description>
            <dc:creator>Forrest Higgs</dc:creator>
            <category>RepRap Host</category>
            <pubDate>Mon, 26 May 2008 22:09:29 -0400</pubDate>
        </item>
        <item>
            <guid>https://reprap.org/forum/read.php?12,9459,12413#msg-12413</guid>
            <title>Re: Ardunio G-Code Parser</title>
            <link>https://reprap.org/forum/read.php?12,9459,12413#msg-12413</link>
            <description><![CDATA[ Have you seen this pcb video? [<a href="http://www.youtube.com/watch?v=lhdqBrciQZU" target="_blank"  rel="nofollow">www.youtube.com</a>]]]></description>
            <dc:creator>Ray</dc:creator>
            <category>RepRap Host</category>
            <pubDate>Mon, 26 May 2008 21:56:13 -0400</pubDate>
        </item>
        <item>
            <guid>https://reprap.org/forum/read.php?12,9459,9968#msg-9968</guid>
            <title>Re: Ardunio G-Code Parser</title>
            <link>https://reprap.org/forum/read.php?12,9459,9968#msg-9968</link>
            <description><![CDATA[ I know it won't be in shed 1.0, but perhaps shed 2.0 could have this color.<br />
<br />
I found some of the standards check RS-494 also known as BCL, then there's ISO 4343. <br />
<br />
Read up about it some at [<a href="http://www.encyclopedia.com/doc/1G1-11257670.html" target="_blank"  rel="nofollow">www.encyclopedia.com</a>]]]></description>
            <dc:creator>Jared Harvey</dc:creator>
            <category>RepRap Host</category>
            <pubDate>Thu, 28 Feb 2008 06:12:32 -0500</pubDate>
        </item>
        <item>
            <guid>https://reprap.org/forum/read.php?12,9459,9955#msg-9955</guid>
            <title>Re: Ardunio G-Code Parser</title>
            <link>https://reprap.org/forum/read.php?12,9459,9955#msg-9955</link>
            <description><![CDATA[ yeah, although its a bummer that we cant use any of these 'standard' gcodes.]]></description>
            <dc:creator>ZachHoeken</dc:creator>
            <category>RepRap Host</category>
            <pubDate>Wed, 27 Feb 2008 14:34:41 -0500</pubDate>
        </item>
        <item>
            <guid>https://reprap.org/forum/read.php?12,9459,9952#msg-9952</guid>
            <title>Re: Ardunio G-Code Parser</title>
            <link>https://reprap.org/forum/read.php?12,9459,9952#msg-9952</link>
            <description><![CDATA[ Zach,<br />
<br />
Can you change the firmware so it doesn't use M7 and M9 anymore, but M100+ ones? I don't think it works when you use a big cnc machine as RepStrap, and find that your extrusions don't stick to each other because of the mist cooling...<br />
<br />
I'll try and perfect the GCodeWriter this week, so it is compatible with your Arduino G-Code Parser. That way you can print directly from the host software.<br />
<br />
--Blerik]]></description>
            <dc:creator>Anonymous User</dc:creator>
            <category>RepRap Host</category>
            <pubDate>Wed, 27 Feb 2008 12:23:29 -0500</pubDate>
        </item>
        <item>
            <guid>https://reprap.org/forum/read.php?12,9459,9949#msg-9949</guid>
            <title>Re: Ardunio G-Code Parser</title>
            <link>https://reprap.org/forum/read.php?12,9459,9949#msg-9949</link>
            <description><![CDATA[ i'm okay with gcode.  its clunky and old, but its used everywhere and imho that makes up for most of its failings.<br />
<br />
not only that, but its plaintext with human units which means people can easily write gcode by hand, or use a gcode generator.<br />
<br />
next?]]></description>
            <dc:creator>ZachHoeken</dc:creator>
            <category>RepRap Host</category>
            <pubDate>Wed, 27 Feb 2008 11:07:28 -0500</pubDate>
        </item>
        <item>
            <guid>https://reprap.org/forum/read.php?12,9459,9943#msg-9943</guid>
            <title>Re: Ardunio G-Code Parser</title>
            <link>https://reprap.org/forum/read.php?12,9459,9943#msg-9943</link>
            <description><![CDATA[ Jared Harvey Wrote:<br />
-------------------------------------------------------<br />
&gt; This CIM sub standard would specify a<br />
&gt; surface footage, min and max chip loads and such<br />
&gt; parameters, rather then RPM and FPM. Then the<br />
&gt; machine would decide what tool to use, what RPM<br />
&gt; can it use for that tool, and what FPM it can use.<br />
&gt; Making one code for two machines. One machine<br />
&gt; might have a .25 inch mill and the other might<br />
&gt; have a .5 inch mill. If the .5 inch mill machine<br />
&gt; is in use, you could run the same code on the<br />
&gt; smaller machine. Does that theory make sense. <br />
<br />
Surface footage (how fast to cut) and chip loads (how deep to cut per blade) are tool specific. If you specify them, you have already chosen what milling bit you use. No sense for the machine to choose the tool then. The only variables left are the tool radius (decides spindle speed) and number of flutes (decides FPM). And you need to specify a maximum tool radius as well, otherwise you can discard all your toolpaths. And a layer thickness, because not all bits like all depths. Then you have basically moved the whole CAM layer into the CNC controller.<br />
<br />
With an extruder you have other problems as well. If you change the extrusion thickness, you also change the layer thickness, and need to do the whole CAM process from scratch. Extruders aren't as flexible as milling bits.<br />
<br />
--Blerik]]></description>
            <dc:creator>Anonymous User</dc:creator>
            <category>RepRap Host</category>
            <pubDate>Wed, 27 Feb 2008 07:49:16 -0500</pubDate>
        </item>
        <item>
            <guid>https://reprap.org/forum/read.php?12,9459,9941#msg-9941</guid>
            <title>Re: Ardunio G-Code Parser</title>
            <link>https://reprap.org/forum/read.php?12,9459,9941#msg-9941</link>
            <description><![CDATA[ Well time for my contribution to the bike shed color problem...<br />
<br />
I know that G code is quite common, especially here in the states, but there are better options out there. G Code was great for non intelligent machines as it could be implemented with a calculator or the computer in your wrist watch. G Code relies on having the complicated bits done in pre-processing, determining things like feed rates, RPM, chip loading, ect. I seem to recall a sub standard to CIM techniques that moves machine control one step lower in the chain. So that you send a different file to the machine, then the machine makes the G Code or what ever it requires to run. Check this link about CIM.<br />
<br />
[<a href="http://en.wikipedia.org/wiki/Computer_Integrated_Manufacturing" target="_blank"  rel="nofollow">en.wikipedia.org</a>]<br />
<br />
[<a href="http://ieeexplore.ieee.org/Xplore/login.jsp?url=/iel3/1760/4539/00180800.pdf" target="_blank"  rel="nofollow">ieeexplore.ieee.org</a>]<br />
<br />
Heres an example about this sub standard as it would be used by a milling machine. When you compile your G Code you write it special for the machine your going to run it on. If you have multiple machines you need to re-write that code for multiple machines or you need identical machines. This CIM sub standard would specify a surface footage, min and max chip loads and such parameters, rather then RPM and FPM. Then the machine would decide what tool to use, what RPM can it use for that tool, and what FPM it can use. Making one code for two machines. One machine might have a .25 inch mill and the other might have a .5 inch mill. If the .5 inch mill machine is in use, you could run the same code on the smaller machine. Does that theory make sense. <br />
<br />
So REPRAPer's might have different feed rates for their differnet extruder heads and different constraints in thier machines. To me it feels like this CIM sub standard would make for a more free and open design. Allowing some one to slice and dice the STL, then send the code to Zach. <br />
<br />
So what is this standard you ask me... I wish I could remember it. I found it a couple years ago, but don't have the time to find it again. I believe this sub standard is much more common over the big drink in Europe, so perhaps some one else can chime in about it.<br />
<br />
Any one heard of this or something similar before? Perhaps it was a beer induced hallucination.]]></description>
            <dc:creator>Jared Harvey</dc:creator>
            <category>RepRap Host</category>
            <pubDate>Wed, 27 Feb 2008 06:48:15 -0500</pubDate>
        </item>
        <item>
            <guid>https://reprap.org/forum/read.php?12,9459,9922#msg-9922</guid>
            <title>Re: Ardunio G-Code Parser</title>
            <link>https://reprap.org/forum/read.php?12,9459,9922#msg-9922</link>
            <description><![CDATA[ i updated the documentation page on the wiki: [<a href="http://reprap.org/bin/view/Main/Arduino_GCode_Interpreter" target="_blank"  rel="nofollow">reprap.org</a>]<br />
<br />
please let me know if there are any errors.<br />
<br />
i'm looking forward to doing some drawing with GCode later this week.]]></description>
            <dc:creator>ZachHoeken</dc:creator>
            <category>RepRap Host</category>
            <pubDate>Tue, 26 Feb 2008 15:06:10 -0500</pubDate>
        </item>
        <item>
            <guid>https://reprap.org/forum/read.php?12,9459,9752#msg-9752</guid>
            <title>Re: Ardunio G-Code Parser</title>
            <link>https://reprap.org/forum/read.php?12,9459,9752#msg-9752</link>
            <description><![CDATA[ indeed.  i'll see what i can cook up.]]></description>
            <dc:creator>ZachHoeken</dc:creator>
            <category>RepRap Host</category>
            <pubDate>Fri, 22 Feb 2008 09:38:07 -0500</pubDate>
        </item>
        <item>
            <guid>https://reprap.org/forum/read.php?12,9459,9746#msg-9746</guid>
            <title>Re: Ardunio G-Code Parser</title>
            <link>https://reprap.org/forum/read.php?12,9459,9746#msg-9746</link>
            <description><![CDATA[ mellery Wrote:<br />
-------------------------------------------------------<br />
&gt; are i/o pins on the arduino pulled high or low<br />
&gt; internally?  I don't have limit switches on my<br />
&gt; mill yet...<br />
<br />
It might be a good idea to make a constant in the main sketch file for high/low active limit switches. The optointerrupters that I have used are noninverting, since I was not able to source the inverting type specified in the arduino opto endstop instructions. It's pretty easy to just add an inversion in the appropriate method, but it might be worth making this a bit easier to set up.]]></description>
            <dc:creator>Anonymous User</dc:creator>
            <category>RepRap Host</category>
            <pubDate>Fri, 22 Feb 2008 07:15:14 -0500</pubDate>
        </item>
        <item>
            <guid>https://reprap.org/forum/read.php?12,9459,9631#msg-9631</guid>
            <title>Re: Ardunio G-Code Parser</title>
            <link>https://reprap.org/forum/read.php?12,9459,9631#msg-9631</link>
            <description><![CDATA[ i'm not sure.  i think they only have internal pullup resistors. if you want, you can wire them to gnd temporarily.  or edit the code in LinearAxis to ignore them.]]></description>
            <dc:creator>ZachHoeken</dc:creator>
            <category>RepRap Host</category>
            <pubDate>Tue, 19 Feb 2008 20:17:08 -0500</pubDate>
        </item>
        <item>
            <guid>https://reprap.org/forum/read.php?12,9459,9627#msg-9627</guid>
            <title>Re: Ardunio G-Code Parser</title>
            <link>https://reprap.org/forum/read.php?12,9459,9627#msg-9627</link>
            <description><![CDATA[ are i/o pins on the arduino pulled high or low internally?  I don't have limit switches on my mill yet...]]></description>
            <dc:creator>mellery</dc:creator>
            <category>RepRap Host</category>
            <pubDate>Tue, 19 Feb 2008 19:58:58 -0500</pubDate>
        </item>
        <item>
            <guid>https://reprap.org/forum/read.php?12,9459,9625#msg-9625</guid>
            <title>Re: Ardunio G-Code Parser</title>
            <link>https://reprap.org/forum/read.php?12,9459,9625#msg-9625</link>
            <description><![CDATA[ You're all doing great work on the GCode parser; which in my opinion is vital, because once you have a print spooler you pretty much have replication.<br />
<br />
Zach mentioned hacking the RepRap host to output GCode directly.  If this works great, if not you can try translating the slice XML developed made by Forrest and Steve DeGroof, a sample of which is at:<br />
www.3dreplicators.com/coupling.xml]]></description>
            <dc:creator>Enrique</dc:creator>
            <category>RepRap Host</category>
            <pubDate>Tue, 19 Feb 2008 19:42:48 -0500</pubDate>
        </item>
        <item>
            <guid>https://reprap.org/forum/read.php?12,9459,9623#msg-9623</guid>
            <title>Re: Ardunio G-Code Parser</title>
            <link>https://reprap.org/forum/read.php?12,9459,9623#msg-9623</link>
            <description><![CDATA[ mellery Wrote:<br />
-------------------------------------------------------<br />
&gt; ZachHoeken Wrote:<br />
&gt; --------------------------------------------------<br />
&gt; -----<br />
&gt; &gt; had a great night of hacking on my end.  here's<br />
&gt; a<br />
&gt; &gt; summary of what i did:<br />
&gt; <br />
&gt; cool, I'll try this stuff tonight <br />
&gt; <br />
&gt; &gt; * changed pins to correspond to<br />
&gt; &gt; Single_Arduino_SNAP pins (sorry mellery!)<br />
&gt; &gt; * added support for different speeds/step sizes<br />
&gt; &gt; per axis<br />
&gt; &gt; * made the firmware use the RepStepper /<br />
&gt; &gt; LinearAxis classes<br />
&gt; <br />
&gt; whats this class?<br />
&gt; <br />
&gt; &gt; * added to subversion / firmware release script<br />
&gt; &gt; * fixed line drawing to use bresenham DDA. <br />
&gt; works<br />
&gt; &gt; great.<br />
&gt; <br />
&gt; sweet!<br />
&gt; <br />
&gt; &gt; * added a couple custom commands to handle<br />
&gt; &gt; temperature<br />
&gt; &gt; * implemented G28 and G30 (home commands)...<br />
&gt; &gt; anyone wanna check them? (i'm a gcode n00b)<br />
&gt; &gt; * implemented G50 (spindle speed command?)<br />
&gt; &gt; * implemented G92 (set current as home, i<br />
&gt; think)<br />
&gt; &gt; * implemented M3, M4, M5, M7, M9 to control<br />
&gt; &gt; extruder and fan<br />
&gt; &gt; * made indentation tab based (cant stand<br />
&gt; &gt; spaces...)<br />
&gt; &gt; <br />
&gt; &gt; please double check my work.  theres most<br />
&gt; likely<br />
&gt; &gt; something wrong somewhere.  also, gcode specs<br />
&gt; are<br />
&gt; &gt; pretty damn confusing.  i may have<br />
&gt; misunderstood<br />
&gt; &gt; them, so feel free to correct me.<br />
&gt; <br />
&gt; can we get a wiki page to keep track of<br />
&gt; bugs/ideas?<br />
&gt;  <br />
&gt; &gt; as far as i can tell, this is everything needed<br />
&gt; to<br />
&gt; &gt; control a reprap machine.  tomorrow is looking<br />
&gt; to<br />
&gt; &gt; be a full day.  i plan on making a processing<br />
&gt; &gt; based app to send the commands to the arduino. <br />
&gt; &gt; yayaya!<br />
&gt; <br />
&gt; nice!  does this processing stuff run on linux?<br />
&gt; Something that reads in a .nc file and sends the<br />
&gt; instructions to the arduino would be awesome, as<br />
&gt; well as allowing sending one at a time manually<br />
&gt; like the serial monitor... very handy for<br />
&gt; debugging.<br />
&gt;  <br />
&gt; &gt; i've tested all the commands and they work<br />
&gt; &gt; properly (as i understand them to work.)<br />
&gt; &gt; <br />
&gt; &gt; we still have lots of work to do.  theres a<br />
&gt; &gt; million un-implemented commands and of course<br />
&gt; we<br />
&gt; &gt; still need to make a host to send gcode, as<br />
&gt; well<br />
&gt; &gt; as handle the whole slice/dice of objects to<br />
&gt; &gt; gcode.  i have a couple ideas, but we're on the<br />
&gt; &gt; right track.<br />
&gt; <br />
&gt; don't know what the slice and dice stuff is (for<br />
&gt; printing 1 layer at a time?), but gcode does 3d...<br />
&gt; I just haven't found a free 3d program, but I just<br />
&gt; found a plugin that converts google sketchup files<br />
&gt; to gcode, that might work<br />
<br />
wiki page: [<a href="http://reprap.org/bin/view/Main/Arduino_GCode_Interpreter" target="_blank"  rel="nofollow">reprap.org</a>]<br />
<br />
processing should run on the 'big 3'.  i've added the sketch to the release files.  i've also attached the most recent version of the stuff (gcode firmware + host)<br />
<br />
its all very basic and rudimentary, but it does work.  i can explain it in more detail later, but i'm very hungry now.  one note:  it basically looks for job.gcode in the 'data' dir of the sketch, and sends those lines to the first serial port.  its pretty nifty.<br />
<br />
also, i changed more library files again so you'll have to copy them to arduino/hardware/libraries and overwrite the old ones.  i'll look into rewriting that to put it all in one sketch.  we'll see.<br />
<br />
blerik is right on the slice/dice.  one thing i'm going to look into doing is  hacking the RepRap host software to output the GCode directly.  If we can do that, then we'll be golden!]]></description>
            <dc:creator>ZachHoeken</dc:creator>
            <category>RepRap Host</category>
            <pubDate>Tue, 19 Feb 2008 19:07:52 -0500</pubDate>
        </item>
        <item>
            <guid>https://reprap.org/forum/read.php?12,9459,9613#msg-9613</guid>
            <title>Re: Ardunio G-Code Parser</title>
            <link>https://reprap.org/forum/read.php?12,9459,9613#msg-9613</link>
            <description><![CDATA[ Hi blerik,<br />
<br />
... have a look on LOM (Layered Object Modelling or Laminated Object Modelling) - here you have the technology and some systems for building highly sophisticated and sometimes really big objects from paper or thin sheets of different materials.<br />
<br />
Or search in the forum, here i posted some ideas of a lathe-type of LOM-fabbing too ...<br />
<br />
Viktor]]></description>
            <dc:creator>VDX</dc:creator>
            <category>RepRap Host</category>
            <pubDate>Tue, 19 Feb 2008 17:12:37 -0500</pubDate>
        </item>
        <item>
            <guid>https://reprap.org/forum/read.php?12,9459,9597#msg-9597</guid>
            <title>Re: Ardunio G-Code Parser</title>
            <link>https://reprap.org/forum/read.php?12,9459,9597#msg-9597</link>
            <description><![CDATA[ Slice and dice (term coined by Forrest Higgs, what the CNC world calls it I don't know) is the process of turning a shape into thin layers (bottom-up for additive manufacturing like RepRap, top-down for substractive), and then creating a 2d toolpath to fill out the layers (inside fill for additive, outside fill for substractive). It is the simpler cousin of full 6dof toolpath creation used with advanced milling.<br />
<br />
--Blerik]]></description>
            <dc:creator>Anonymous User</dc:creator>
            <category>RepRap Host</category>
            <pubDate>Tue, 19 Feb 2008 11:20:53 -0500</pubDate>
        </item>
        <item>
            <guid>https://reprap.org/forum/read.php?12,9459,9594#msg-9594</guid>
            <title>Re: Ardunio G-Code Parser</title>
            <link>https://reprap.org/forum/read.php?12,9459,9594#msg-9594</link>
            <description><![CDATA[ ZachHoeken Wrote:<br />
-------------------------------------------------------<br />
&gt; had a great night of hacking on my end.  here's a<br />
&gt; summary of what i did:<br />
<br />
cool, I'll try this stuff tonight <br />
<br />
&gt; * changed pins to correspond to<br />
&gt; Single_Arduino_SNAP pins (sorry mellery!)<br />
&gt; * added support for different speeds/step sizes<br />
&gt; per axis<br />
&gt; * made the firmware use the RepStepper /<br />
&gt; LinearAxis classes<br />
<br />
whats this class?<br />
<br />
&gt; * added to subversion / firmware release script<br />
&gt; * fixed line drawing to use bresenham DDA.  works<br />
&gt; great.<br />
<br />
sweet!<br />
<br />
&gt; * added a couple custom commands to handle<br />
&gt; temperature<br />
&gt; * implemented G28 and G30 (home commands)...<br />
&gt; anyone wanna check them? (i'm a gcode n00b)<br />
&gt; * implemented G50 (spindle speed command?)<br />
&gt; * implemented G92 (set current as home, i think)<br />
&gt; * implemented M3, M4, M5, M7, M9 to control<br />
&gt; extruder and fan<br />
&gt; * made indentation tab based (cant stand<br />
&gt; spaces...)<br />
&gt; <br />
&gt; please double check my work.  theres most likely<br />
&gt; something wrong somewhere.  also, gcode specs are<br />
&gt; pretty damn confusing.  i may have misunderstood<br />
&gt; them, so feel free to correct me.<br />
<br />
can we get a wiki page to keep track of bugs/ideas?<br />
 <br />
&gt; as far as i can tell, this is everything needed to<br />
&gt; control a reprap machine.  tomorrow is looking to<br />
&gt; be a full day.  i plan on making a processing<br />
&gt; based app to send the commands to the arduino. <br />
&gt; yayaya!<br />
<br />
nice!  does this processing stuff run on linux? Something that reads in a .nc file and sends the instructions to the arduino would be awesome, as well as allowing sending one at a time manually like the serial monitor... very handy for debugging.<br />
 <br />
&gt; i've tested all the commands and they work<br />
&gt; properly (as i understand them to work.)<br />
&gt; <br />
&gt; we still have lots of work to do.  theres a<br />
&gt; million un-implemented commands and of course we<br />
&gt; still need to make a host to send gcode, as well<br />
&gt; as handle the whole slice/dice of objects to<br />
&gt; gcode.  i have a couple ideas, but we're on the<br />
&gt; right track.<br />
<br />
don't know what the slice and dice stuff is (for printing 1 layer at a time?), but gcode does 3d... I just haven't found a free 3d program, but I just found a plugin that converts google sketchup files to gcode, that might work]]></description>
            <dc:creator>mellery</dc:creator>
            <category>RepRap Host</category>
            <pubDate>Tue, 19 Feb 2008 09:59:39 -0500</pubDate>
        </item>
    </channel>
</rss>
