I have with me a Makeblock XY Plotter V2.0. Does anyone know how to make the plotter only allow movements in one direction at a time? Like if it was asked to move to (10,10) from (0,0) with absolute movements, it will make the horizontal movement to go to (10,0) then proceed to make the vertical movement to go to (10,10)? With the current arduino base, it will only move diagonally. I want to modify the arduino base so as to it will not make diagnoal movements and only in one direction at a time. I have tried to make a function in which it if the enable pin or step pin of an axis is being used (I have tried both), the enable or step pin of the axis will not be used but to no avail.
I don’t own the plotter, but to accomplish the movement you are looking for, I would suspect that you would need to make two moves, i.e., (10, 0), (10, 10) or something similar.
You may consider chuckmcknight’s suggestion.
Or may we know your exact application?
I have tried to do that but it does not seem to take the two commands separately. When I put 2 commands one after another as you have mentioned, for example, move to (0,10) then to (10,10), it will just move to (10,10) straight away.
I am actually trying to use the arduino base and the GCodes to perform a scan-like movement (a movement in the form of a square wave). It somehow never takes two commands separately for me.
Could you post your code? It’s tough to help with debugging this sort of thing without seeing what you are doing.
I would like to thank you for your reply. The code i am currently using is the one from charlieb given in this link. I am just using this program and I made a labview VI to communicate with the XY Plotter and sending it instructions(using it as a scanner). So far, I have finally made it work with the labview file where it would take 2 instructions separately but I would like to know if it is possible to do this with the arduino file alone seeing that if I do that with the arduino file, it will do the 2 movements straight away as mentioned above. If I am not clear please let me know!
Hm, sounds like it might be an issue in your Gcode. I looked over the source at the link you provided and it appears that it is essentially a Gcode parser/sender. Have you tried inserting a pause (delay() or millis() method) between the moves?
Yes it is acually a GCode parser. I have read the whole program and had the same thoughts as you had, that a simple insertion of a delay would suffice. However, it does not work and it stopped moving completely with the insertion of the delays.
Can you suggest where would you put the delays to make it work that way? Perhaps it is I who did not understand the program well enough and misplaced the delays.
Here are some materials for Gcode: Gremote related information (for high-end player and we can only provide Limited technical support), please have a reference.