42 lines
1.1 KiB
Python
42 lines
1.1 KiB
Python
import time
|
|
|
|
|
|
def home(motor, forward):
|
|
|
|
encoder = motor.read_field('encoder_type')
|
|
if encoder == 'absolute':
|
|
is_absolute = True
|
|
elif encoder == 'incremental':
|
|
is_absolute = False
|
|
else:
|
|
raise ValueError(f'Unknown encoder type {encoder}')
|
|
|
|
# Start a homing run and observe the motor behaviour depending on the
|
|
# encoder type
|
|
if forward:
|
|
motor.write_field('homeforward')
|
|
else:
|
|
motor.write_field('homereverse')
|
|
|
|
# Give the record some time to react
|
|
time.sleep(0.5)
|
|
|
|
if is_absolute:
|
|
# Motor should not move at all
|
|
assert motor.read_field('moving') == 0
|
|
assert motor.read_field('donemoving') == 1
|
|
assert not motor.has_error()
|
|
else:
|
|
# Motor should start movement
|
|
assert motor.read_field('moving') == 1
|
|
assert motor.read_field('donemoving') == 0
|
|
assert not motor.has_error()
|
|
assert not motor.is_homed()
|
|
|
|
motor.wait_for_done()
|
|
|
|
assert motor.read_field('moving') == 0
|
|
assert motor.read_field('donemoving') == 1
|
|
assert not motor.has_error()
|
|
assert motor.is_homed()
|