Use Python with HaloCode

HaloCode is a MicroPython-based single board computer. Python code need to be uploaded to HaloCode to run.

Start Using Python

Switch the programming mode from "Blocks" to "Python" to start using Python.

Note: please make sure that "HaloCode" is currently selected.

Here's an example code:

import halo

import event

@event.start

def on_start():

halo.led.show_all(122, 239, 10)

time.sleep(3)

halo.led.off_all()

After programming, click "Upload" to upload the program to HaloCode.

Convert Blocks to Python Code

In the Scripts area, click to covert blocks to Python. The following is an example:

Use HaloCode's LEDs

LED Ring

The ID and position of each of the 12 LEDs are as follows:

led.show_all(r, g, b)

Set the color of all the LEDs, mixed by red, green, and blue, each color with a value range 0-255.

halo.led.show_all(255, 0, 0) # Set all the LEDs to color red

led.off_all()

Turn off all the LEDs.

halo.led.off_all() # Turn off all the LEDs

led.show_ring(color)

Set the color of all 12 LEDs at the same time. There are ten colors: red, green, blue, yellow, cyan, purple, white, orange, black, and gray.

halo.led.show_ring('red orange yellow green cyan blue purple white white white white white') # Set the 12 LEDs to color red, orange, yellow, green, cyan, blue, purple, white, white, white, white, and white respectively

led.show_single(led_id, r, g, b)

Set the color of one specified LED.

halo.led.show_single(1, 255, 0, 0) # Set the color of the first LED to red

led.off_single(led_id)

Turn off one specified LED.

halo.led.off_single(4) # Turn off the fourth LED

led.show_animation(name)

Show the default LED animation. There are four options: spoondrift, meteor, rainbow, and firefly.

halo.led.show_animation('rainbow') # Show the "rainbow" LED animation

led.ring_graph(percentage)

Use the status of the LED ring to display percentage.

halo.led.ring_graph(60) # Use the LED ring to display 60%

Use the Sensors of HaloCode

button.is_pressed()

If the button is pressed, return True; otherwise, return False.

print(halo.button.is_pressed()) # Print True if the button is pressed

microphone.get_loudness()

Get the loudness of the microphone. The range is 0-100.

print(halo.microphone.get_loudness()) # Output the loudness

motion_sensor.is_shaked()

Tell whether HaloCode is being shaken. The result is True or False.

print(halo.motion_sensor.is_shaked()) # If HaloCode is being shaken, return True

motion_sensor.is_tilted_left()/motion_sensor.is_tilted_right()

Tell whether HaloCode is tilted to the right or left. The result is True or False.

print(halo.motion_sensor.is_tilted_left()) # If HaloCode is left-tilted, return True

motion_sensor.is_arrow_up()/motion_sensor.is_arrow_down()

Tell whether HaloCode is placed arrow-up or arrow-down. The result is True or False.

print(halo.motion_sensor.is_arrow_up()) # If HaloCode is placed arrow-up, return True

Gyroscope

Get the roll, pitch or yaw value of HaloCode's gyroscope

  • motion_sensor.get_roll()

  • motion_sensor.get_pitch()

  • motion_sensor.get_yaw()

Get the gyroscope's rotation value (in degrees) around a certain axis.

  • motion_sensor.get_rotation(axis): x, y, or z axis

  • motion_sensor.reset_rotation(axis="all"): reset the rotation angles of the gyro

You can use motion_sensor.get_shake_strength() to get the intensity of the shaking.

print("The yaw and pitch is:", halo.motion_sensor.get_yaw(), halo.motion_sensor.get_pitch()) # output the yaw and pitch value of the gyro

print("The rotation value is:", halo.motion_sensor.get_rotation(x), halo.motion_sensor.get_rotation(y), halo.motion_sensor.get_rotation(z))

halo.motion_sensor.reset_roation() # reset the rotation value.

print("Shake strength:", halo.motion_sensor.get_shake_strength())

get_timer()

Get the timer value in seconds (since startup or last reset).

print(halo.get_timer()) # print the timer value since startup or last reset

reset_timer()

Reset the timer.

halo.reset_timer()

print(halo.get_timer()) # prints 0

HaloCode's Event and Flow Control

HaloCode supports events (like when the button is pressed), and it also supports multi-threading.

If you wish to use event, declare a function and register it to the event. A program can only register no more than 6 event functions.

Example:

def on_button_pressed(): # define a function

print("The button is pressed!")

halo.on_button_pressed() # register it to "when button is pressed" event

on_button_pressed()

When the button is pressed, run the function.

def on_button_pressed():

print("The button is pressed!")

halo.on_button_pressed()

on_shaked()

When HaloCode is being shaken, call the function.

def on_shaked():

print("I'm shaken!")

halo.on_shaked()

on_tilted_left()

Call the function when HaloCode is tilted to the left.

def on_tilted_left():

print("I'm left-tilted!")

halo.on_tilted_left()

on_greater_than(volume, 'microphone')

When the loudness is over a certain value, call the function.

def on_greater_than():

print("The loudness is over 50! Too loud!")

halo.on_greater_than(50, 'microphone')

on_received(message_name)

When the specified message is received, call the function.

def on_received():

print("Game start!")

halo.on_received("game_start")

Last updated

Was this helpful?