From 44d5a3fcdf23441bb580c66369f47b09b138fc38 Mon Sep 17 00:00:00 2001 From: Michael Fogleman Date: Sun, 15 Jan 2017 19:24:55 -0500 Subject: [PATCH] updates --- axi/device.py | 21 ++++++++++++++------- examples/device_test.py | 22 ++++++++-------------- 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/axi/device.py b/axi/device.py index 732ba22..4e3428d 100644 --- a/axi/device.py +++ b/axi/device.py @@ -8,19 +8,25 @@ from serial.tools.list_ports import comports from .planner import Planner -STEPS_PER_INCH = 2032 -STEPS_PER_MM = 80 +TIMESLICE_MS = 10 + +MICROSTEPPING_MODE = 1 +STEP_DIVIDER = 2 ** (MICROSTEPPING_MODE - 1) + +STEPS_PER_INCH = 2032 / STEP_DIVIDER +STEPS_PER_MM = 80 / STEP_DIVIDER PEN_UP_POSITION = 60 PEN_UP_SPEED = 150 PEN_UP_DELAY = 0 + PEN_DOWN_POSITION = 40 PEN_DOWN_SPEED = 150 PEN_DOWN_DELAY = 0 -ACCELERATION = 12 -MAX_VELOCITY = 6 -CORNER_FACTOR = 0.01 +ACCELERATION = 8 +MAX_VELOCITY = 8 +CORNER_FACTOR = 0.005 VID_PID = '04D8:FD92' @@ -88,7 +94,8 @@ class Device(object): # motor functions def enable_motors(self): - return self.command('EM', 1, 1) + m = MICROSTEPPING_MODE + return self.command('EM', m, m) def disable_motors(self): return self.command('EM', 0, 0) @@ -104,7 +111,7 @@ class Device(object): time.sleep(0.01) def run_plan(self, plan): - step_ms = 10 + step_ms = TIMESLICE_MS step_s = step_ms / 1000 t = 0 while t < plan.t: diff --git a/examples/device_test.py b/examples/device_test.py index 108e730..08f57f2 100644 --- a/examples/device_test.py +++ b/examples/device_test.py @@ -1,7 +1,8 @@ -from axi import Device, Planner -from math import sin, cos, pi +import axi import time +from math import sin, cos, pi + def circle(cx, cy, r, n): points = [] for i in range(n + 1): @@ -12,21 +13,14 @@ def circle(cx, cy, r, n): return points def main(): - planner = Planner(acceleration=10, max_velocity=5, corner_factor=0.001) + # axi.reset(); return path = [] - path.append((0, 0)) for i in range(10): - path.extend(circle(4, 4, (i + 1) * 0.2, 72)) - path.append((0, 0)) - plan = planner.plan(path) + path.extend(circle(4, 4, (i + 1) * 0.2, 3600)) - d = Device() - d.pen_up() - d.enable_motors() - time.sleep(0.2) - d.run_plan(plan) - d.wait() - d.disable_motors() + drawing = axi.Drawing([path]).simplify_paths(0.001) + # drawing.render().write_to_png('out.png') + axi.draw(drawing) if __name__ == '__main__': main()