mirror of
https://github.com/undera/pylgbst.git
synced 2020-11-18 19:37:26 -08:00
Angled motor works
This commit is contained in:
parent
275a1b87b5
commit
3c82405040
15
demo.py
15
demo.py
@ -11,7 +11,8 @@ log = logging.getLogger("demo")
|
|||||||
def demo_all(conn):
|
def demo_all(conn):
|
||||||
movehub = MoveHub(conn)
|
movehub = MoveHub(conn)
|
||||||
# demo_led_colors(movehub)
|
# demo_led_colors(movehub)
|
||||||
demo_motors_timed(movehub)
|
# demo_motors_timed(movehub)
|
||||||
|
demo_motors_angled(movehub)
|
||||||
|
|
||||||
|
|
||||||
def demo_led_colors(movehub):
|
def demo_led_colors(movehub):
|
||||||
@ -35,8 +36,18 @@ def demo_motors_timed(movehub):
|
|||||||
movehub.motor_AB.timed(0.5, -1)
|
movehub.motor_AB.timed(0.5, -1)
|
||||||
|
|
||||||
|
|
||||||
|
def demo_motors_angled(movehub):
|
||||||
|
log.info("Motors movement demo: angled")
|
||||||
|
for angle in range(0, 361, 90):
|
||||||
|
log.info("Angle: %s", angle)
|
||||||
|
movehub.motor_B.angled(angle, 1)
|
||||||
|
sleep(1)
|
||||||
|
movehub.motor_B.angled(angle, -1)
|
||||||
|
sleep(1)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
logging.basicConfig(level=logging.INFO)
|
logging.basicConfig(level=logging.DEBUG)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
connection = DebugServerConnection()
|
connection = DebugServerConnection()
|
||||||
|
@ -1,8 +1,11 @@
|
|||||||
|
import logging
|
||||||
import struct
|
import struct
|
||||||
import time
|
import time
|
||||||
|
|
||||||
from pylegoboost.constants import *
|
from pylegoboost.constants import *
|
||||||
|
|
||||||
|
log = logging.getLogger('movehub')
|
||||||
|
|
||||||
|
|
||||||
class MoveHub(object):
|
class MoveHub(object):
|
||||||
"""
|
"""
|
||||||
@ -48,13 +51,14 @@ class LED(Peripheral):
|
|||||||
|
|
||||||
|
|
||||||
class EncodedMotor(Peripheral):
|
class EncodedMotor(Peripheral):
|
||||||
|
TRAILER = b'\x64\x7f\x03' # NOTE: \x64 is 100, might mean something
|
||||||
PACKET_VER = b'\x01'
|
PACKET_VER = b'\x01'
|
||||||
SET_PORT_VAL = b'\x81'
|
SET_PORT_VAL = b'\x81'
|
||||||
MOTOR_TIMED_END = b'\x64\x7f\x03'
|
|
||||||
TRAILER = b'\x64\x7f\x03' # NOTE: \x64 is 100, might mean something
|
|
||||||
TIMED_GROUP = b'\x0A'
|
|
||||||
TIMED_SINGLE = b'\x09'
|
|
||||||
MOVEMENT_TYPE = b'\x11'
|
MOVEMENT_TYPE = b'\x11'
|
||||||
|
TIMED_SINGLE = b'\x09'
|
||||||
|
TIMED_GROUP = b'\x0A'
|
||||||
|
ANGLED_SINGLE = b'\x0B'
|
||||||
|
ANGLED_GROUP = b'\x0C'
|
||||||
|
|
||||||
def __init__(self, parent, port):
|
def __init__(self, parent, port):
|
||||||
super(EncodedMotor, self).__init__(parent)
|
super(EncodedMotor, self).__init__(parent)
|
||||||
@ -66,10 +70,10 @@ class EncodedMotor(Peripheral):
|
|||||||
if relative < -1 or relative > 1:
|
if relative < -1 or relative > 1:
|
||||||
raise ValueError("Invalid speed value: %s", relative)
|
raise ValueError("Invalid speed value: %s", relative)
|
||||||
|
|
||||||
relative *= 255
|
absolute = round(relative * 100)
|
||||||
if relative < 0:
|
if absolute < 0:
|
||||||
relative += 255
|
absolute += 255
|
||||||
return int(relative)
|
return int(absolute)
|
||||||
|
|
||||||
def _wrap_and_write(self, command, speed_primary, speed_secondary):
|
def _wrap_and_write(self, command, speed_primary, speed_secondary):
|
||||||
# set for port
|
# set for port
|
||||||
@ -97,8 +101,16 @@ class EncodedMotor(Peripheral):
|
|||||||
if not async:
|
if not async:
|
||||||
time.sleep(seconds)
|
time.sleep(seconds)
|
||||||
|
|
||||||
def angled(self, angle, speed_primary, speed_secondary):
|
def angled(self, angle, speed_primary=1, speed_secondary=None):
|
||||||
pass
|
if speed_secondary is None:
|
||||||
|
speed_secondary = speed_primary
|
||||||
|
|
||||||
|
# movement type
|
||||||
|
command = self.ANGLED_GROUP if self.port == PORT_AB else self.ANGLED_SINGLE
|
||||||
|
# angle
|
||||||
|
command += struct.pack('<I', angle)
|
||||||
|
|
||||||
|
self._wrap_and_write(command, speed_primary, speed_secondary)
|
||||||
|
|
||||||
|
|
||||||
class ColorDistanceSensor(Peripheral):
|
class ColorDistanceSensor(Peripheral):
|
||||||
|
@ -159,7 +159,7 @@ class DebugServer(object):
|
|||||||
buf = buf[buf.index("\n") + 1:]
|
buf = buf[buf.index("\n") + 1:]
|
||||||
|
|
||||||
if line:
|
if line:
|
||||||
log.debug("Cmd line: %s", line)
|
log.info("Cmd line: %s", line)
|
||||||
try:
|
try:
|
||||||
self._handle_cmd(json.loads(line))
|
self._handle_cmd(json.loads(line))
|
||||||
except BaseException:
|
except BaseException:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user