Releases: pybricks/pybricks-micropython
Releases · pybricks/pybricks-micropython
Release v3.2.0b4
Added
- Indicate that the hub is shutting down by quickly flashing the hub light for
half a second. This makes it easier to see when you can stop pressing the
button. - Indicate that the SPIKE Prime hub is booting and shutting down by fading
the stop sign in and out. - Implemented iterator protocol on
geometry.Matrix
class. - Added support for multi-file projects (pybricks-micropython#115).
- Added new
System.storage()
API (support#85).
Changed
- Battery full indication (green light) comes on earlier (support#647).
- New indication for over-charging battery (blinking green light).
- On Move Hub, City Hub, and Technic Hub, programs can now be restarted with
the button after downloading them. They are saved on shutdown. - Improved program download process. Reduces the likelihood of getting errors
about incompatible .mpy files when accidentally entering characters in the
terminal window when no program is active. - On Prime Hub and Essential Hub, there is no longer a wait time after boot
before you can start programs. - On Prime Hub and Essential Hub, the user program is now stored in a section
of the external flash that is not used by any file system of other known
firmwares, in order to avoid compatibility issues when changing firmware. - Restored the
Motor.speed()
method andDriveBase
equivalent to provide
speed as a numerical derivative of the motor position, instead of a
model-based estimate. For most use cases, this is a more intuitive result
because this speed value is not affected by mechanical load. - When using the REPL, everything from all Pybricks modules was automatically
imported for convenience. Now, MicroPython modules are also automatically
imported (support#741). - Updated Bluetooth to Pybricks Profile v1.2.0.
- Bluetooth now uses random private address instead of static public address
(support#600).
Fixed
- Fixed motors going out of sync when starting program (support#679).
- Fixed motor torque signal overflowing under load (support#729).
- Fixed city hub turning back on after shutdown (support#692).
- Fixed IMU I2C bus lockup on SPIKE hubs (support#232).
- Fixed REPL history corrupt after soft reset (support#699).
- Fixed "ValueError: incompatible .mpy file" when pressing the button when
there is no program yet (support#599).
Release v3.2.0b3
Fixed
- Fix integral control not working properly due to mistakes introduced while converting the controllers to use millidegrees.
Changed
Motor.run_time
no longer raises an exception for negative time values. Negative times are now treated as zero, thus producing a stationary
trajectory.
Release v3.2.0b2
Added
- Added
Motor.stalled()
. It can detect stall during speed and position
control (run
,run_angle
, ...) just likeMotor.control.stalled()
, but
it also detects stall fordc()
command when the user controls the voltage
directly.
Fixed
- Fixed motor not stopping at the end of
run_until_stalled
(support#662). - Fixed incorrect battery current reading on Technic hub (support#665).
- When the motor was pushed backwards while stalled, the
control.stalled()
was inadvertently cleared because a nonzero speed was detected. This is fixed
by checking the intended direction as well. - Fixed I/O devices not syncing at high baud rate.
- Fixed
ENODEV
error while device connection manager is busy (support#674).
Changed
- Reworked internal motor model that is used to estimate speed. This results
in better speed estimation at low speeds, which makes PID control smoother. - The
Motor.speed()
method andDriveBase
equivalents now provide the
estimated speed instead of the value reported by the motor. This is generally
more responsive. - Overhauled the control code to make it smaller and more numerically robust
while using higher position resolution where it is available. - Changed drive base default speed to go a little slower.
- Updated MicroPython to v1.19.
Release v3.2.0b1
Added
- Added
Stop.NONE
asthen
option for motors. This allows subsequent
motor and drive base commands to transition without stopping. - Added
Stop.COAST_SMART
asthen
option for motors. This still coasts the
motor, but it keeps track of the previously used position target. When a new
relative angle command is given (e.g. rotate 90 degrees), it uses that
position as the starting point. This avoids accumulation of errors when using
relative angles in succession. - Made motor deceleration configurable separately from acceleration.
- Enabled
ujson
module. - Added ability to use more than one
DriveBase
in the same script. - Added support for battery charging on Prime and essential hubs.
Changed
- Changed how
DriveBases
andMotor
classes can be used together.
Previously, an individual motor could not be used when a drive base used it.
From now on, devices can always be used. If they were already in use by
something else, that other class will just be stopped (coast). - Changed how unexpected motor problems are handled, such as a cable being
unplugged while it was running. Previously, this raised aSystemExit
no
matter which motor was unplugged. Now it will return anOSError
with
ENODEV
, which is consistent with trying to initialize a motor that isn't
there. TheMotor
class must be initialized again to use the motor again. - Changing settings while a motor is moving no longer raises an exception. Some
settings will not take effect until a new motor command is given. - Disabled
Motor.control
andMotor.log
on Move Hub to save space. - Changed LED color calibration on Prime hub to make yellow less green.
- Updated to upstream MicroPython v1.18.
- Changed
imu.acceleration()
units to mm/s/s (pybricks-micropython#88) for
Move Hub, Technic Hub, and Prime Hub.
Fixed
- Fixed color calibration on Powered Up remote control (support#424).
- Fixed 3x3 Light Matrix colors with hue > 255 not working correctly (support#619).
Release v3.1.0
v3.1.0
Release v3.1.0c1
v3.1.0c1
Release v3.1.0b1
Added
- Support for LEGO Technic Color Light Matrix (support#440).
- Support for the SPIKE Essential hub/Technic Small hub (support#439).
Fixed
- Fixed Ultrasonic Sensor and Color Sensor turning off when a user script ends (support#456).
- Hub reset due to watchdog timer when writing data to UART I/O device (support#304).
- City/Technic hubs not connecting via Bluetooth on macOS 12 (support#489).
Changed:
- Updated to MicroPython v1.17.
Release v3.1.0a4
Added
- Enabled builtin
bytearray
(pull#60). - Enabled
ustruct
module (pull#60). - Added alpha support for dual boot installation on the SPIKE Prime Hub.
- Added
pybricks.experimental.hello_world
function to make it easier for
new contributors to experiment with Pybricks using C code. - Added ability to import the
main.mpy
that is embedded in the firmware from
a download and run program (support#408). - Added
pybricks.iodevices.LWP3Device
to communicate with a device that supports
the LEGO Wireless Protocol 3.0.00 (pull#68)
Changed
- Move Hub Bluetooth optimizations to reduce firmware size (issue#49).
- Disabled
pybricks.iodevices
module on Move Hub to reduce firmware size. - Improvements to
pybricks.pupdevices.Remote
:- Check if a remote is already connected before attempting to create a new
connection. - Rename first argument from
address
toname
to match documentation. - Implement connecting by name.
- Add
name()
method. - Add
light
attribute.
- Check if a remote is already connected before attempting to create a new
Release v3.1.0a3
v3.1.0a3
Release v3.1.0a2
v3.1.0a2