City Hub

../_images/cityhub.png
class CityHub

LEGO® City Hub.

Using the hub status light

light.on(color)

Turns on the light at the specified color.

Parameters

color (Color) – Color of the light.

light.off()

Turns off the light.

Blinks the light at a given color by turning it on and off for given durations.

The light keeps blinking indefinitely while the rest of your program keeps running.

This method provides a simple way to make basic but useful patterns. For more generic and multi-color patterns, use animate() instead.

Parameters
  • color (Color) – Color of the light.

  • durations (list) – List of (time: ms) values of the form [on_1, off_1, on_2, off_2, ...].

light.animate(colors, interval)

Animates the light with a list of colors. The next color in the list is shown after the given interval.

The animation runs in the background while the rest of your program keeps running. When the animation completes, it repeats.

Parameters
  • colors (list) – List of Color values.

  • interval (time: ms) – Time between color updates.

Using the battery

battery.voltage()

Gets the voltage of the battery.

Returns

Battery voltage.

Return type

voltage: mV

battery.current()

Gets the current supplied by the battery.

Returns

Battery current.

Return type

current: mA

Button and system control

button.pressed()

Checks which buttons are currently pressed.

Returns

Tuple of pressed buttons.

Return type

Tuple of Button

system.set_stop_button(button)

Sets the button or button combination that stops a running script.

Normally, the center button is used to stop a running script. You can change or disable this behavior in order to use the button for other purposes.

Parameters

Button – A button such as Button.CENTER, or a tuple of multiple buttons. Choose None to disable the stop button altogether.

system.name()

Gets the hub name. This is the name you see when connecting via Bluetooth.

Returns

The hub name.

Return type

str

system.shutdown()

Stops your program and shuts the hub down.

system.reset_reason()

Finds out how and why the hub (re)booted. This can be useful to diagnose some problems.

Returns

Returns 0 if the hub was previously powered off normally. Returns 1 if the hub rebooted automatically, like after a firmware update. Returns 2 if the hub previously crashed due to a watchdog timeout, which indicates a firmware issue.

Return type

int

Status light examples

Turning the light on and off

from pybricks.hubs import CityHub
from pybricks.parameters import Color
from pybricks.tools import wait

# Initialize the hub.
hub = CityHub()

# Turn the light on and off 5 times.
for i in range(5):

    hub.light.on(Color.RED)
    wait(1000)

    hub.light.off()
    wait(500)

Changing brightness and using custom colors

from pybricks.hubs import CityHub
from pybricks.parameters import Color
from pybricks.tools import wait

# Initialize the hub.
hub = CityHub()

# Show the color at 30% brightness.
hub.light.on(Color.RED * 0.3)

wait(2000)

# Use your own custom color.
hub.light.on(Color(h=30, s=100, v=50))

wait(2000)

# Go through all the colors.
for hue in range(360):
    hub.light.on(Color(hue))
    wait(10)

Creating light animations

from pybricks.hubs import CityHub
from pybricks.parameters import Color
from pybricks.tools import wait
from umath import sin, pi

# Initialize the hub.
hub = CityHub()

# Make an animation with multiple colors.
hub.light.animate([Color.RED, Color.GREEN, Color.NONE], interval=500)

wait(10000)

# Make the color RED grow faint and bright using a sine pattern.
hub.light.animate(
    [Color.RED * (0.5 * sin(i / 15 * pi) + 0.5) for i in range(30)], 40)

wait(10000)

# Cycle through a rainbow of colors.
hub.light.animate([Color(h=i*8) for i in range(45)], interval=40)

wait(10000)

Button and system examples

Using the stop button during your program

from pybricks.hubs import CityHub
from pybricks.parameters import Color, Button
from pybricks.tools import wait, StopWatch

# Initialize the hub.
hub = CityHub()

# Disable the stop button.
hub.system.set_stop_button(None)

# Check the button for 5 seconds.
watch = StopWatch()
while watch.time() < 5000:

    # Set light to green if pressed, else red.
    if hub.button.pressed():
        hub.light.on(Color.GREEN)
    else:
        hub.light.on(Color.RED)

# Enable the stop button again.
hub.system.set_stop_button(Button.CENTER)

# Now you can press the stop button as usual.
wait(5000)

Turning the hub off

from pybricks.hubs import CityHub
from pybricks.tools import wait

# Initialize the hub.
hub = CityHub()

# Say goodbye and give some time to send it.
print("Goodbye!")
wait(100)

# Shut the hub down.
hub.system.shutdown()