implemented step_motor
This commit is contained in:
parent
0473c42fd1
commit
1d8d9cb870
46
main.py
46
main.py
@ -47,7 +47,7 @@ motorPins = [
|
|||||||
Pin(15, Pin.OUT) # D8
|
Pin(15, Pin.OUT) # D8
|
||||||
]
|
]
|
||||||
|
|
||||||
MODE_PIN = Pin(13, Pin.IN) # D7
|
MODE_PIN = Pin(5, Pin.IN) # D7
|
||||||
|
|
||||||
STEPPER_SEQUENCE = [
|
STEPPER_SEQUENCE = [
|
||||||
[1, 0, 0, 1],
|
[1, 0, 0, 1],
|
||||||
@ -66,12 +66,12 @@ total_seconds = 0.0
|
|||||||
totalsteps = 0
|
totalsteps = 0
|
||||||
step_interval_s = 0.001
|
step_interval_s = 0.001
|
||||||
current_step = 0
|
current_step = 0
|
||||||
next = 0
|
nxt = 0
|
||||||
now = 0
|
now = 0
|
||||||
last_toggle = 0
|
last_toggle = 0
|
||||||
current_mode = NORMAL
|
current_mode = NORMAL
|
||||||
autostop = True
|
autostop = True
|
||||||
|
timer0 = Timer(0, mode=Timer.PERIODIC, )
|
||||||
|
|
||||||
def ypt(ts):
|
def ypt(ts):
|
||||||
# Bolt insertion rate in cm/s: y'(t)
|
# Bolt insertion rate in cm/s: y'(t)
|
||||||
@ -86,8 +86,44 @@ def step_motor():
|
|||||||
the step interval based on the current tangent error,
|
the step interval based on the current tangent error,
|
||||||
and sets a new timer.
|
and sets a new timer.
|
||||||
"""
|
"""
|
||||||
pass
|
if current_mode == NORMAL:
|
||||||
|
step_interval_s = 1.0/(ROTATIONS_PER_CM*ypt(total_seconds)*2*DOUBLESTEPS_PER_ROTATION)
|
||||||
|
step_delta = 1
|
||||||
|
step_num %= len(STEPPER_SEQUENCE)
|
||||||
|
return
|
||||||
|
elif current_mode == REWINDING:
|
||||||
|
step_interval_s = 0.0025
|
||||||
|
step_delta = -2
|
||||||
|
if(step_num<0):
|
||||||
|
step_num += len(STEPPER_SEQUENCE)
|
||||||
|
return
|
||||||
|
elif current_mode == STOPPED:
|
||||||
|
step_interval_s = 0.2
|
||||||
|
return
|
||||||
|
else:
|
||||||
|
print("we should never be here")
|
||||||
|
|
||||||
|
if current_mode != STOPPED:
|
||||||
|
total_seconds += step_interval_s
|
||||||
|
current_step = STEPPER_SEQUENCE[step_num]
|
||||||
|
do_step(current_step)
|
||||||
|
step_num += step_delta
|
||||||
|
totalsteps += step_delta
|
||||||
|
|
||||||
|
now = time.now()
|
||||||
|
nxt = now+step_interval_s*CYCLES_PER_SECOND-(now-nxt);
|
||||||
|
timer = Timer(2)
|
||||||
|
timer.init(mode=Timer.ONE_SHOT, period=nxt)
|
||||||
|
|
||||||
|
def _debounce(pin):
|
||||||
|
cur_value = pin.value()
|
||||||
|
active = 0
|
||||||
|
while active < 20:
|
||||||
|
if pin.value() != cur_value:
|
||||||
|
active += 1
|
||||||
|
else:
|
||||||
|
active = 0
|
||||||
|
time.sleep(1.0)
|
||||||
|
|
||||||
def do_step(current_step):
|
def do_step(current_step):
|
||||||
# apply a single step of the stepper motor on its pins.
|
# apply a single step of the stepper motor on its pins.
|
||||||
@ -133,6 +169,8 @@ def toggle_mode():
|
|||||||
# Need to find replacement for ESP.getCycleCount();
|
# Need to find replacement for ESP.getCycleCount();
|
||||||
#if ESP.getCycleCount() - last_toggle < 0.2*CYCLES_PER_SECOND:
|
#if ESP.getCycleCount() - last_toggle < 0.2*CYCLES_PER_SECOND:
|
||||||
# return
|
# return
|
||||||
|
_debounce(MODE_PIN)
|
||||||
|
|
||||||
if current_mode is REWINDING:
|
if current_mode is REWINDING:
|
||||||
print("STOPPING")
|
print("STOPPING")
|
||||||
current_mode = STOPPED
|
current_mode = STOPPED
|
||||||
|
Loading…
Reference in New Issue
Block a user