Still fixing small bugs in stepper, now tested

master
James Gao 2014-10-18 18:41:26 +00:00
rodzic 2a216d4477
commit 0d30eb02f4
2 zmienionych plików z 7 dodań i 5 usunięć

Wyświetl plik

@ -1,6 +1,7 @@
import time
import atexit
import threading
import warnings
import Queue
from RPi import GPIO
@ -78,7 +79,7 @@ class Stepper(threading.Thread):
target = self.phase + step
while self.phase != target:
now = time.time()
self.phase += 1 if target > self.phase else 1
self.phase += 1 if target > self.phase else -1
output = self.pattern[self.phase%len(self.pattern)]
for pin, out in zip(self.pins, output):
GPIO.output(pin, out)
@ -89,6 +90,7 @@ class Stepper(threading.Thread):
target += step
if block:
self._step(target - self.phase, speed)
self.finished.set()
diff = ispeed - (time.time() - now)
if (diff) > 0:
@ -117,7 +119,7 @@ class Stepper(threading.Thread):
class Regulator(object):
def __init__(self, maxsteps=4500, minsteps=2500, speed=200, ignite_pin=26):
def __init__(self, maxsteps=4500, minsteps=2500, speed=150, ignite_pin=26):
"""Set up a stepper-controlled regulator. Implement some safety measures
to make sure everything gets shut off at the end
@ -163,7 +165,7 @@ class Regulator(object):
self.current = 0
def set(self, value, block=False):
if not 0 < value < 1:
if not 0 <= value <= 1:
raise ValueError("Must give fraction between 0 and 1")
target = int(value * (self.max - self.min) + self.min)
nsteps = target - self.current

Wyświetl plik

@ -2,7 +2,7 @@ import time
import stepper
def test_noblock():
reg = Regulator(ignite_pin=None)
reg = stepper.Regulator(ignite_pin=None)
reg.ignite()
reg.set(.5)
@ -10,4 +10,4 @@ def test_noblock():
reg.set(.1)
time.sleep(.5)
reg.set(.5, block=True)
return reg
return reg