187 lines
7.0 KiB
HTML
187 lines
7.0 KiB
HTML
<html><head>
|
|
<title>pyRepRap v0.1 Documentation</title>
|
|
|
|
<style type="text/css">
|
|
hr {color: sienna}
|
|
p {margin-left: 20px}
|
|
</style>
|
|
|
|
</head>
|
|
|
|
<body>
|
|
<h1>pyRepRap v0.1 Documentation</h1>
|
|
<h2>Introduction</h2>
|
|
pyRepRap requires <a href="http://pyserial.sourceforge.net/">pySerial</a> installed for this module to work. If you are using Fedora it is available on yum (run "sudo yum install pyserial").<br><br>
|
|
|
|
<b>pyRepRap</b> is a python module that provides full control over the RepRap hardware.
|
|
It is not intened as a replacement for the Java host software and I do not intend on writing any FDM code for the library.
|
|
It is instead intended for anyone wanting to experiment with the RepRap hardware and find other uses for it. e.g. Plotting, 3D scanning, botany, electronics manufacture etc.<br>
|
|
<br>
|
|
The reprap.cartesian object should provide most of the commands required, however the lower level reprap.cartesian.[axis] commands have been made available individual control of the axies is required.<br>
|
|
<font color="FF0000"><h3>WARNING : The extruder code is experimental and incomplete, it will not accurately control the temperature and it is not reconmented that you activate the heater using this module.</h3></font>
|
|
|
|
<h2>Example</h2>
|
|
<p>This example moves the RepRap to the home position, then to several locations, then back to the home position.</p>
|
|
<pre><p>
|
|
import serial, reprap, time # Import the reprap and pySerial modules.
|
|
reprap.serial = serial.Serial(0, 19200, timeout = reprap.snap.messageTimeout) # Initialise serial port, here the first port (0) is used.
|
|
reprap.cartesian.x.active = True # These devices are present in network, will automatically scan in the future.
|
|
reprap.cartesian.y.active = True
|
|
reprap.cartesian.z.active = True
|
|
reprap.extruder.active = True
|
|
# The module is now ready to recieve commands #
|
|
moveSpeed = 200
|
|
reprap.cartesian.homeReset( moveSpeed, True ) # Send all axies to home position. Wait until arrival.
|
|
reprap.cartesian.seek( (1000, 1000, 0), moveSpeed, True ) # Seek to (1000, 1000, 0). Wait until arrival.
|
|
time.sleep(2) # Pause.
|
|
reprap.cartesian.seek( (500, 1000, 0), moveSpeed, True ) # Seek to (500, 1000, 0). Wait until arrival.
|
|
time.sleep(2)
|
|
reprap.cartesian.seek( (1000, 500, 0), moveSpeed, True ) # Seek to (1000, 500, 0). Wait until arrival.
|
|
time.sleep(2)
|
|
reprap.cartesian.seek( (100, 100, 0), moveSpeed, True ) # Seek to (100, 100, 0). Wait until arrival.
|
|
reprap.cartesian.homeReset( moveSpeed, True ) # Send all axies to home position. Wait until arrival.
|
|
reprap.cartesian.free() # Shut off power to all motors.
|
|
</p></pre>
|
|
<p>This example can be found in demo.py<br>
|
|
Further use of the module is demonstrated in example.py</p>
|
|
|
|
<br>
|
|
|
|
<h2>Cartesian Commands</h2>
|
|
|
|
<h3>Home Reset</h3>
|
|
<p>Go to home position and set position counter to 0 (all axies)<br>
|
|
<b>reprap.cartesian.homeReset( speed, waitArrival )</b><br>
|
|
<ul><li><i>speed</i> - Speed to seek at. (0 - 255)</li>
|
|
<li><i>waitArrival</i> - If true then function will not return until the axis has reached its destination, if false the function will return once the command has been sent. (True / False)</li>
|
|
</ul>
|
|
Returns: Nothing<br></p>
|
|
|
|
<h3>Seek</h3>
|
|
<p>Seek to location (all axies)<br>
|
|
<b>reprap.cartesian.seek( pos, speed, waitArrival )</b><br>
|
|
<ul><li><i>pos</i> - Position to seek to. Turple (x, y, z)</li>
|
|
<li><i>speed</i> - Speed to seek at. (0 - 255)</li>
|
|
<li><i>waitArrival</i> - If true then function will not return until the axis has reached its destination, if false the function will return once the command has been sent. (True / False)</li>
|
|
</ul>
|
|
Returns: Nothing<br></p>
|
|
|
|
<h3>Get Position</h3>
|
|
<p>Get position counters for all axies<br>
|
|
<b>reprap.cartesian.getPos()</b><br>
|
|
Returns: Turple (x, y, z)<br></p>
|
|
|
|
<h3>Stop</h3>
|
|
<p>Stop all motors<br>
|
|
<b>reprap.cartesian.stop()</b><br>
|
|
Returns: Nothing<br></p>
|
|
|
|
<h3>Free</h3>
|
|
<p>Power off all motors<br>
|
|
<b>reprap.cartesian.free()</b><br>
|
|
Returns: Nothing
|
|
</p>
|
|
|
|
<br>
|
|
|
|
<h2>Axis Commands</h2>
|
|
|
|
Replace [axis] with x, y or z. e.g. reprap.x.forward(100)
|
|
|
|
<h3>Forward 1</h3>
|
|
<p>Move axis one step forward<br>
|
|
<b>reprap.axis.forward1()</b><br>
|
|
Returns: Nothing<br></p>
|
|
|
|
<h3>Backward 1</h3>
|
|
<p>Move axis one step backward<br>
|
|
<b>reprap.cartesian.[axis].backward1()</b><br>
|
|
Returns: Nothing<br></p>
|
|
|
|
<h3>Forward</h3>
|
|
<p>Rotate motor forwards at given speed<br>
|
|
<b>reprap.cartesian.[axis].forward( speed )</b><br>
|
|
<ul><li><i>speed</i> - Speed to rotate at. (0 - 255)</li></ul>
|
|
Returns: Nothing<br></p>
|
|
|
|
<h3>Backward</h3>
|
|
<p>Rotate motor backwards at given speed<br>
|
|
<b>reprap.cartesian.[axis].backward( speed )</b><br>
|
|
<ul><li><i>speed</i> - Speed to rotate at. (0 - 255)</li></ul>
|
|
Returns: Nothing<br></p>
|
|
|
|
<h3>Get Sensors (Debug only)</h3>
|
|
<p>Get port information<br>
|
|
<b>reprap.cartesian.[axis].getSensors()</b><br>
|
|
Returns: PortA, PortB<br></p>
|
|
|
|
<h3>Get Position</h3>
|
|
<p>Get position counter for axis<br>
|
|
<b>reprap.cartesian.[axis].getPos()</b><br>
|
|
Returns: Position<br></p>
|
|
|
|
<h3>Set Position</h3>
|
|
<p>Set position counter (set variable not robot position)<br>
|
|
<b>reprap.cartesian.[axis].setPos( pos )</b><br>
|
|
<ul><li><i>pos</i> - Position (16bit max?)</li></ul>
|
|
Returns: Nothing<br></p>
|
|
|
|
<h3>Free</h3>
|
|
<p>Power off motor<br>
|
|
<b>reprap.cartesian.[axis].free()</b><br>
|
|
Returns: Nothing
|
|
</p>
|
|
|
|
<h3>Seek</h3>
|
|
<p>Seek to location<br>
|
|
<b>reprap.cartesian.[axis].seek( pos, speed, waitArrival )</b><br>
|
|
<ul><li><i>pos</i> - Position to seek to</li>
|
|
<li><i>speed</i> - Speed to seek at. (0 - 255)</li>
|
|
<li><i>waitArrival</i> - If true then function will not return until the axis has reached its destination, if false the function will return once the command has been sent. (True / False)</li>
|
|
</ul>
|
|
Returns: Nothing<br></p>
|
|
|
|
<h3>Home Reset</h3>
|
|
<p>Go to home position and set position counter to 0<br>
|
|
<b>reprap.cartesian.[axis].homeReset( speed, waitArrival )</b><br>
|
|
<ul><li><i>speed</i> - Speed to seek at. (0 - 255)</li>
|
|
<li><i>waitArrival</i> - If true then function will not return until the axis has reached its destination, if false the function will return once the command has been sent. (True / False)</li>
|
|
</ul>
|
|
Returns: Nothing<br></p>
|
|
|
|
<br>
|
|
|
|
<h2>Extruder Commands (Incomplete)</h2>
|
|
|
|
<h3>Get Module Type</h3>
|
|
<p>Get module type from PIC. #do pics not support this yet? I can't see it in code and get no reply from pic<br>
|
|
<b>reprap.extruder.getModuleType()</b><br>
|
|
Returns: Module Type. (0 - 255)
|
|
</p>
|
|
|
|
<h3>Get Module Version</h3>
|
|
<p>Get Firmware Version from PIC<br>
|
|
<b>reprap.extruder.getVersion()</b><br>
|
|
Returns: Major Version, Minor Version.
|
|
</p>
|
|
|
|
<h3>Set Motor</h3>
|
|
<p>Set extruder motor rotating in given direction and speed<br>
|
|
<b>rreprap.extruder.setMotor( direction, speed )</b><br>
|
|
<ul><li><i>direction</i> - Direction to rotate in. (reprap.CMD_FORWARD / reprap.CMD_REVERSE)</li>
|
|
<li><i>speed</i> - Speed to turn at. (0 - 255)</li>
|
|
</ul>
|
|
Returns: Nothing<br></p>
|
|
|
|
<h3>Get Temperature</h3>
|
|
<p>Get <br>
|
|
<b>reprap.extruder.getTemp()</b><br>
|
|
Returns:
|
|
</p>
|
|
|
|
reprap.extruder.setHeat(lowHeat, highHeat, tempTarget, tempMax):
|
|
reprap.extruder.setCooler(speed):
|
|
reprap.extruder.freeMotor():
|
|
|
|
</body></html>
|