mirror of
https://github.com/pybricks/pybricks-api.git
synced 2026-09-12 01:24:17 +00:00
We should not encourage users to use the numerical values (i.e. 2 for Stop.hold or 65 for Port.A) This also keeps the door open for using qstrings for some enums (Color, Button).
179 lines
4.6 KiB
Python
179 lines
4.6 KiB
Python
"""Constant parameters/arguments for the Pybricks API."""
|
|
|
|
from enum import Enum
|
|
|
|
|
|
class Color(Enum):
|
|
"""Light or surface color.
|
|
|
|
.. data:: black
|
|
.. data:: blue
|
|
.. data:: green
|
|
.. data:: yellow
|
|
.. data:: red
|
|
.. data:: white
|
|
.. data:: brown
|
|
.. data:: orange
|
|
.. data:: purple
|
|
"""
|
|
|
|
black = 1
|
|
blue = 2
|
|
green = 3
|
|
yellow = 4
|
|
red = 5
|
|
white = 6
|
|
brown = 7
|
|
orange = 8
|
|
purple = 9
|
|
|
|
|
|
class Port(Enum):
|
|
"""Port on the intelligent brick.
|
|
|
|
.. data:: A
|
|
.. data:: B
|
|
.. data:: C
|
|
.. data:: D
|
|
.. data:: S1
|
|
.. data:: S2
|
|
.. data:: S3
|
|
.. data:: S4
|
|
"""
|
|
|
|
# Generic motor/sensor ports
|
|
A = ord('A')
|
|
B = ord('B')
|
|
C = ord('C')
|
|
D = ord('D')
|
|
|
|
# NXT/EV3 sensor ports
|
|
S1 = ord('1')
|
|
S2 = ord('2')
|
|
S3 = ord('3')
|
|
S4 = ord('4')
|
|
|
|
|
|
class Stop(Enum):
|
|
"""Action after the motor stops: coast, brake, or hold.
|
|
|
|
.. data:: coast
|
|
|
|
Let the motor move freely.
|
|
|
|
.. data:: brake
|
|
|
|
Passively resist small external forces.
|
|
|
|
.. data:: hold
|
|
|
|
Keep controlling the motor to hold it at the commanded angle.
|
|
|
|
The stop type defines the resistance to motion after coming to standstill:
|
|
|
|
+-----------+-------------+------------------------------------------+
|
|
|Parameter | Resistance | Physical meaning |
|
|
+===========+=============+==========================================+
|
|
|Stop.coast | low | Friction |
|
|
+-----------+-------------+------------------------------------------+
|
|
|Stop.brake | medium | Friction + Torque opposite to motion |
|
|
+-----------+-------------+------------------------------------------+
|
|
|Stop.hold | high | Friction + Torque to hold commanded angle|
|
|
+-----------+-------------+------------------------------------------+
|
|
|
|
"""
|
|
|
|
coast = 0
|
|
brake = 1
|
|
hold = 2
|
|
|
|
|
|
class Direction():
|
|
"""Rotational direction for positive speed values: clockwise or counterclockwise.
|
|
|
|
.. data:: clockwise
|
|
|
|
A positive speed value should make the motor move clockwise.
|
|
|
|
.. data:: counterclockwise
|
|
|
|
A positive speed value should make the motor move counterclockwise.
|
|
|
|
For all motors, this is defined when looking at the shaft, just like looking at a clock.
|
|
|
|
For NXT or EV3 motors, make sure to look at the motor with the red/orange shaft to the lower right.
|
|
|
|
+----------------------------+-------------------+-----------------+
|
|
| Parameter | Positive speed | Negative speed |
|
|
+============================+===================+=================+
|
|
| Direction.clockwise | clockwise | counterclockwise|
|
|
+----------------------------+-------------------+-----------------+
|
|
| Direction.counterclockwise | counterclockwise | clockwise |
|
|
+----------------------------+-------------------+-----------------+
|
|
|
|
::
|
|
|
|
|
|
Medium EV3 Motor:
|
|
|
|
|
|
counterclockwise clockwise
|
|
____ _____
|
|
/ \\
|
|
/ _____________ \\
|
|
/ / \ \\
|
|
| | _ | |
|
|
| | __| |__ | |
|
|
v | |__ o __| | v
|
|
| |_| |
|
|
| |
|
|
\______________/
|
|
|
|
|
|
Large EV3 motor:
|
|
|
|
________
|
|
/ \ ___ ___
|
|
_| \ / \\
|
|
| ----/------ \\
|
|
counterclockwise | __\__ | clockwise
|
|
\__________ v / \ v
|
|
-------| + |
|
|
\_____/
|
|
|
|
|
|
"""
|
|
|
|
clockwise = 1
|
|
counterclockwise = -1
|
|
|
|
|
|
class Button(Enum):
|
|
"""Buttons on a brick or remote:
|
|
|
|
+-----------+----------+-----------+
|
|
| | | |
|
|
| left_up |up/beacon | right_up |
|
|
| | | |
|
|
+-----------+----------+-----------+
|
|
| | | |
|
|
| left | center | right |
|
|
| | | |
|
|
+-----------+----------+-----------+
|
|
| | | |
|
|
| left_down | down | right_down|
|
|
| | | |
|
|
+-----------+----------+-----------+
|
|
"""
|
|
|
|
left_down = 1
|
|
down = 2
|
|
right_down = 3
|
|
left = 4
|
|
center = 5
|
|
right = 6
|
|
left_up = 7
|
|
up = 8
|
|
beacon = 8
|
|
right_up = 9
|