Python API

button — Onboard Button

Function

button.is_pressed()
Get the current state of HaloCode's button. The returned result is True: the button is pressed; False: the button is not pressed.

Sample Code

import halo

def loop():
    while True:
        if halo.button.is_pressed():
            print("button is pressed")
loop()

touchpad0 — Touchpad 0

Function

touchpad0.is_touched()
Get the current state of touchpad0. The returned result is True: touchpad0 is touched; False: touchpad0 is not touched.

touchpad0.get_value()
If touchpad0 is touched, this function can obtain the strength of the touching. The value range is 0-10000.

touchpad0.set_touch_threshold(val)
Set the threshold of touchpad0, parameter:

  • val Percentage change of the touching; value greater than the threshold means being touched; the value range is 0-1.

Sample Code

import halo
import event

@event.start
def on_start():
    global results
    if halo.touchpad0.is_touched():
        halo.led.show_all(126, 211, 33)

touchpad1 — Touchpad 1

Function

touchpad1.is_touched()
Get the current state of touchpad1. The returned result is True: touchpad1 is touched; False: touchpad1 is not touched.

touchpad1.get_value()
If touchpad1 is touched, this function can obtain the strength of the touching. The value range is 0-10000.

touchpad1.set_touch_threshold(val)
Set the threshold of touchpad1, parameter:

  • val Percentage change of the touching; value greater than the threshold means being touched; the value range is 0-1.

Sample Code

import halo
import event

@event.start
def on_start():
    global results
    if halo.touchpad1.is_touched():
        halo.led.show_all(126, 211, 33)

touchpad2 — Touchpad 2

Function

touchpad2.is_touched()
Get the current state of touchpad2. The returned result is True: touchpad2 is touched; False: touchpad2 is not touched.

touchpad2.get_value()
If touchpad2 is touched, this function can obtain the strength of the touching. The value range is 0-10000.

touchpad2.set_touch_threshold(val)
Set the threshold of touchpad2, parameter:

  • val Percentage change of the touching; value greater than the threshold means being touched; the value range is 0-1.

Sample Code

import halo
import event

@event.start
def on_start():
    global results
    if halo.touchpad2.is_touched():
        halo.led.show_all(126, 211, 33)

touchpad3 — Touchpad 3

Function

touchpad3.is_touched()
Get the current state of touchpad3. The returned result is True: touchpad3 is touched; False: touchpad3 is not touched.

touchpad3.get_value()
If touchpad3 is touched, this function can obtain the strength of the touching. The value range is 0-10000.

touchpad3.set_touch_threshold(val)
Set the threshold of touchpad3, parameter:

  • val Percentage change of the touching; value greater than the threshold means being touched; the value range is 0-1.

Sample Code

import halo
import event

@event.start
def on_start():
    global results
    if halo.touchpad3.is_touched():
        halo.led.show_all(126, 211, 33)

pin0 — Pin0

Function

pin0.is_touched()
Get the current state of the pin. The returned result is True: the pin is touched; False: the pin is not touched.

pin0.get_touchpad_value()
Obtain the strength of the touching. The value range is 0-10000.

pin0.set_touchpad_threshold(val)
Set the threshold of the pin, parameter:

  • val Percentage change of the touching; value greater than the threshold means being touched; the value range is 0.0-1.

pin0.read_digital()
Read digital input of the pin. The value is 0 or 1.

pin0.write_digital(val)
Set digital output of the pin, parameter:

  • val The value is 0 or 1.

pin0.write_analog(val)
Set PWM (Pulse-Width Modulation) output, parameter:

  • val The value range is 0-1023.

pin0.read_analog()
Read PWM input. The value range is 0-3300, measured in mv.

pin0.servo_write(val)
Set the angle by which the servo motor turns, or the length of the pulse, parameter:

  • val The angle of turning, the value range is 0-19999.
    • When the value is less than 544, the result is to set the angle: if the input value is less than 0, the returned result is 0; if the the value is greater than 180, the returned result is 180.
    • When the value is greater than or equals 544, the result is to set the length of the pulse, measured in us; the maximum value is 19999 us, nearly 20ms.

Sample Code

import halo
import event

@event.start
def on_start():
    global results
    if halo.pin0.is_touched():
        halo.led.show_all(126, 211, 33)

pin1 — Pin1

Function

pin1.is_touched()
Get the current state of the pin. The returned result is True: the pin is touched; False: the pin is not touched.

pin1.get_touchpad_value()
Obtain the strength of the touching. The value range is 0-10000.

pin1.set_touchpad_threshold(val)
Set the threshold of the pin, parameter:

  • val Percentage change of the touching; value greater than the threshold means being touched; the value range is 0.0-1.

pin1.read_digital()
Read digital input of the pin. The value is 0 or 1.

pin1.write_digital(val)
Set digital output of the pin, parameter:

  • val The value is 0 or 1.

pin1.write_analog(val)
Set PWM (Pulse-Width Modulation) output, parameter:

  • val The value range is 0-1023.

pin1.read_analog()
Read PWM input. The value range is 0-3300, measured in mv.

pin1.servo_write(val)
Set the angle by which the servo motor turns, or the length of the pulse, parameter:

  • val The angle of turning, the value range is 0-19999.
    • When the value is less than 544, the result is to set the angle: if the input value is less than 0, the returned result is 0; if the the value is greater than 180, the returned result is 180.
    • When the value is greater than or equals 544, the result is to set the length of the pulse, measured in us; the maximum value is 19999 us, nearly 20ms.

Sample Code

import halo
import event

@event.start
def on_start():
    global results
    if halo.pin1.is_touched():
        halo.led.show_all(126, 211, 33)

pin2 — Pin2

Function

pin2.is_touched()
Get the current state of the pin. The returned result is True: the pin is touched; False: the pin is not touched.

pin2.get_touchpad_value()
Obtain the strength of the touching. The value range is 0-10000.

pin2.set_touchpad_threshold(val)
Set the threshold of the pin, parameter:

  • val Percentage change of the touching; value greater than the threshold means being touched; the value range is 0.0-1.

pin2.read_digital()
Read digital input of the pin. The value is 0 or 1.

pin2.write_digital(val)
Set digital output of the pin, parameter:

  • val The value is 0 or 1.

pin2.write_analog(val)
Set PWM (Pulse-Width Modulation) output, parameter:

  • val The value range is 0-1023.

pin2.read_analog()
Read PWM input. The value range is 0-3300, measured in mv.

pin2.servo_write(val)
Set the angle by which the servo motor turns, or the length of the pulse, parameter:

  • val The angle of turning, the value range is 0-19999.
    • When the value is less than 544, the result is to set the angle: if the input value is less than 0, the returned result is 0; if the the value is greater than 180, the returned result is 180.
    • When the value is greater than or equals 544, the result is to set the length of the pulse, measured in us; the maximum value is 19999 us, nearly 20ms.

Sample Code

import halo
import event

@event.start
def on_start():
    global results
    if halo.pin2.is_touched():
        halo.led.show_all(126, 211, 33)

pin3 — Pin3

Function

pin3.is_touched()
Get the current state of the pin. The returned result is True: the pin is touched; False: the pin is not touched.

pin3.get_touchpad_value()
Obtain the strength of the touching. The value range is 0-10000.

pin3.set_touchpad_threshold(val)
Set the threshold of the pin, parameter:

  • val Percentage change of the touching; value greater than the threshold means being touched; the value range is 0-1.

pin3.read_digital()
Read digital input of the pin. The value is 0 or 1.

pin3.write_digital(val)
Set digital output of the pin, parameter:

  • val The value is 0.0 or 1.

pin3.write_analog(val)
Set PWM (Pulse-Width Modulation) output, parameter:

  • val The value range is 0-1023.

pin3.read_analog()
Read PWM input. The value range is 0-3300, measured in mv.

pin3.servo_write(val)
Set the angle by which the servo motor turns, or the length of the pulse, parameter:

  • val The angle of turning, the value range is 0-19999.
    • When the value is less than 544, the result is to set the angle: if the input value is less than 0, the returned result is 0; if the the value is greater than 180, the returned result is 180.
    • When the value is greater than or equals 544, the result is to set the length of the pulse, measured in us; the maximum value is 19999 us, nearly 20ms.

Sample Code

import halo
import event

@event.start
def on_start():
    global results
    if halo.pin3.is_touched():
        halo.led.show_all(126, 211, 33)

motion_sensor — Onboard Motion Sensor

Motion Sensor Introduction

As shown in the picture above, the direction of the roll and pitch are based on the right-handed screw rule.

Both roll and pitch are 0° when HaloCode is horizontally placed.

  • Roll range: -90° ~ 90°
  • Pitch range: -180° ~ 180°

Function

motion_sensor.get_roll()
Get the roll of the Euler angle, the returned data range is -90 ~ 90.

motion_sensor.get_pitch()
Get the pitch of the Euler angle, the returned data range is -180 ~ 180.

motion_sensor.get_yaw()
Get the yaw of the Euler angle, The returned data range is 0 ~ 360. Since HaloCode's onboard sensor does not have electronic compass. So in fact the yaw angle is just the integral of the Z-axis angular velocity. It has accumulated errors. If you want to get a true yaw angle, this API is not suitable for use.

motion_sensor.get_acceleration(axis)
Get the acceleration values of the three axes in m/s^2, Parameters:

  • axis String type, with x, y, z representing the axis defined by HaloCode.

motion_sensor.get_gyroscope(axis)
Get the angular velocity values of the three axes in °/sec, Parameters:

  • axis String type, with x, y, z representing the axis defined by HaloCode.

motion_sensor.get_rotation(axis)
Get the angle at which HaloCode rotates on the three axes, and the counterclockwise direction is the positive direction, parameter:

  • axis String type, with x, y, z representing the axis defined by HaloCode.

motion_sensor.reset_rotation(axis = "all")
The current angle of initial rotation around the three axes is 0, and the get_rotation() will start at 0, parameter:

  • axis string type, with x, y, z representing the axis defined by HaloCode, and all representing all three axes. This is also the default value for this function.

motion_sensor.is_tilted_left()
Check if HaloCode is tilted to the left (threshold value is 15°), and the return value is a Boolean value, where True means that HaloCode is tilted to the left, and False means that HaloCode is not tilted to the left.

motion_sensor.is_tilted_right()
Check if HaloCode is tilted to the right (threshold value is 15°), and the return value is a Boolean value, where True means that HaloCode is tilted to the right, and False means that HaloCode is not tilted to the right.

motion_sensor.is_arrow_up()
Check if HaloCode is positioned arrow-up, and the return value is a Boolean value, where True means that HaloCode is positioned arrow-up, and False means that the HaloCode is not positioned arrow-up.

motion_sensor.is_arrow_down()
Check if HaloCode is positioned arrow-down, and the return value is a Boolean value, where True means that HaloCode is positioned arrow-down, and False means that the HaloCode is not positioned arrow-down.

motion_sensor.is_shaked()
Check if HaloCode is shaken, and the return value is a Boolean value, where True means that HaloCode is shaken, and False means that HaloCode is not shaken.

motion_sensor.get_shake_strength()
If HaloCode is shaken, this function can obtain the intensity of the shaking. The value of the return value range is 0 ~ 100. The larger the value, the greater the intensity of the shaking.

Sample Code 1:

import halo
import time

while True:
    roll = halo.motion_sensor.get_roll()
    pitch = halo.motion_sensor.get_pitch()
    yaw = halo.motion_sensor.get_yaw()
    print("roll:", end = "")
    print(roll, end = "")
    print("   ,pitch:", end = "")
    print(pitch, end = "")
    print("   ,yaw:", end = "")
    print(yaw)
    time.sleep(0.05)

Sample Code 2:

import halo

while True:
    if halo.motion_sensor.is_shaked():
        print("shake_strength:", end = "")
        print(halo.motion_sensor.get_shake_strength())

Sample Code 3:

import halo

while True:
    if halo.motion_sensor.is_tilted_left():
        print("tilted_left")
    if halo.motion_sensor.is_tilted_right():
        print("tilted_right")
    if halo.motion_sensor.is_arrow_up():
        print("arrow_up")
    if halo.motion_sensor.is_arrow_down():
        print("arrow_down")

led — Onboard LED

Function

led.show_single(led_id, r, g, b)
Set the displayed color one single LED, parameter:

  • led_id The id of one single LED, the value range is 1-12, and the position of each LED is shown in the following image:
  • r refers to the value of red component, parameter range is 0 ~ 255,0 with no red component and 255 the highest red component.
  • g refers to the value of green component, parameter range is 0 ~ 255,0 with no green component and 255 the highest green component.
  • b refers to the value of blue component, parameter range is 0 ~ 255,0 with no blue component and 255 the highest blue component.
    Color – RGB Value Table:

      red(255 , 0 , 0)
    
      green(0 , 255 , 0)
    
      blue(0 , 0 , 255)
    
      yellow(255 , 255 , 0)
    
      cyan(0 , 255 , 255)
    
      purple(255 , 0 , 255)
    
      white(150 , 150 , 150)
    
      orange(255 , 50 , 0)
    
      black(0 , 0 , 0)
    
      gray(0 , 0 , 0)
    

led.show_all(r, g, b)
Set the color of all the LEDs, parameter:

  • r refers to the value of red component, parameter range is 0 ~ 255,0 with no red component and 255 the highest red component.
  • g refers to the value of green component, parameter range is 0 ~ 255,0 with no green component and 255 the highest green component.
  • b refers to the value of blue component, parameter range is 0 ~ 255,0 with no blue component and 255 the highest blue component.

led.off_all()
Turn off all the LEDs.

led.off_single(led_id)
Turn off one single LED, parameter:

  • led_id The id of one single LEd, the value range is 1-12.

led.show.ring(color_str, offset=0)
Set the color of each LED at the same time, parameter:

  • color_str String type, the format is "color1 color2 color3 color4"; "colorx" means "red"/"green"/"blue"/"yellow"/"cyan"/"purple"/"white"/"orange"/"black"/"gray"; over 12 colors will automatically be cut to 12.
  • offset The value range is 0-12.

led.ring_graph(percentage)
Use the status of the LED ring to display percentage, parameter:

  • percentage The value range is 0-100.

led.show.animation(name)
Show the default LED animation, parameter:

  • name The four default LED animations: spoondrift, meteor, rainbow, and firefly.

led.is_led_ring_up()
Check if the LED ring is positioned face-up. The return value is True: the LED ring is positioned face-up; False: the LED ring is not positioned face-up.

led.is_led_ring_down()
Check if the LED ring is positioned face-down. The return value is True: the LED ring is positioned face-down; False: the LED ring is not positioned face-down.

Sample Code 1:

import halo
import time

halo.led.show_all(255,0,0)
time.sleep(2)
halo.led.off_all()
time.sleep(2)
halo.led.show_all(0,0,255)
time.sleep(2)
halo.led.off_all()
time.sleep(2)
halo.led.show_all(0,255,0)
time.sleep(2)
halo.led.off_all()
time.sleep(2)

Sample Code 2:

import halo 
import event

@event.button_pressed
def on_button_pressed():
    while True:
        halo.led.show_ring('red orange yellow green cyan blue purple white white white white white')
        time.sleep(1)
        halo.led.off_all()
        halo.led.show_ring('red orange yellow green cyan blue purple white white white white white', 1)
        time.sleep(1)
        halo.led.off_all()
        halo.led.show_ring('red orange yellow green cyan blue purple white white white white white', 2)
        time.sleep(1)
        halo.led.off_all()
        halo.led.show_ring('red orange yellow green cyan blue purple white white white white white', 3)
        time.sleep(1)
        halo.led.off_all()
        halo.led.show_ring('red orange yellow green cyan blue purple white white white white white', 4)
        time.sleep(1)
        halo.led.off_all()
        halo.led.show_ring('red orange yellow green cyan blue purple white white white white white', 5)
        time.sleep(1)
        halo.led.off_all()
        halo.led.show_ring('red orange yellow green cyan blue purple white white white white white', 6)
        time.sleep(1)
        halo.led.off_all()
        halo.led.show_ring('red orange yellow green cyan blue purple white white white white white', 7)
        time.sleep(1)
        halo.led.off_all()
        halo.led.show_ring('red orange yellow green cyan blue purple white white white white white', 8)
        time.sleep(1)
        halo.led.off_all()
        halo.led.show_ring('red orange yellow green cyan blue purple white white white white white', 9)
        time.sleep(1)
        halo.led.off_all()
        halo.led.show_ring('red orange yellow green cyan blue purple white white white white white', 10)
        time.sleep(1)
        halo.led.off_all()
        halo.led.show_ring('red orange yellow green cyan blue purple white white white white white', 11)
        time.sleep(1)
        halo.led.off_all()
        halo.led.show_ring('red orange yellow green cyan blue purple white white white white white', 12)
        time.sleep(1)
        halo.led.off_all()

microphone — Onboard Microphone

Function

microphone.get_loudness(type)
Get the loudness, parameter:

  • type String type: average, to get the average loudness over a certain period of time; maximum, to get the maximum loudness over a certain period of time; the value rang is 0-100.

Sample Code:

import halo

halo.microphone.get_loudness("average")

speech_recognition — Speech Recognition

Function

speech_recognition.start(server, language, time)
Start speech recognition, parameter:

  • server Speech recognition server, the default server SERVER_MICROSOFT, powered by Microsoft.
  • language The language of recognition: LAN_CHINESE, Chinese; LAN_ENGLISH, English.
  • time The duration of speech recognition, the default value is 3 seconds.

speech_recognition.get_error_code()
Get the error code of speech recognition results, as follows:

0: correct

3300: wrong parameter

3301: ambiguous speech

3302: authentication failure

3303: original audio file or server problem

3304: user request override (QPS)

3305: user request override (PV)

3307: server problem

3308:audio content too long

3309: abnormal audio

3310:audio file too large

3311:wrong sample rate

3312: wrong audio file format

3333:unknown error

3334: response timeout

speech_recognition.get_error_message()
Report specific error message, string type.

speech_recognition.get_result_code()
Report recognition results, string type; return empty string when there is an error or a timeout condition.

speech_recognition.get_sn_code()
Report the single identification of voice data, generated by the server.

speech_recognition.get_all_respond()
Report the results of speech recognition, including all returned messages, like error message.

Sample Code:

import halo, event
halo.speech_recognition.set_recognition_url(halo.speech_recognition.SERVER_MICROSOFT, "http://msapi.passport3.makeblock.com/ms/bing_speech/interactive")
halo.speech_recognition.set_token(halo.speech_recognition.SERVER_MICROSOFT, "ed8xubrmidv")

@event.start
def on_start():
    halo.wifi.start(ssid = 'Maker-guest', password = 'makeblock', mode = halo.wifi.WLAN_MODE_STA)
    while not halo.wifi.is_connected():
        pass

    halo.speech_recognition.start(halo.speech_recognition.SERVER_MICROSOFT, halo.speech_recognition.LAN_CHINESE, 3)

wifi — Onboard Wi-Fi

Function

wifi.start(ssid = "wifi_ssid", password = "password", mode = halo.wifi.STA)
Start wifi connection, the API will not block process, API exit does not mean that wifi is connected, you need to call wifi.is_connected() to judge, Parameter:

  • ssid string type, Wi-Fi account.
  • password string type, Wi-Fi password.
  • mode starts the Wi-Fi mode (currently only WLAN_MODE_STA)

wifi.is_connected()
Check if Wi-Fi is connected, the return value is Boolean, where True means that Wi-Fi has established a connection, False means that Wi-Fi has not yet established a connection.

Sample Code:

import halo
import event

@event.start
def on_start():
    halo.wifi.start(ssid = 'Maker-guest', password = 'makeblock', mode = halo.wifi.WLAN_MODE_STA)
    while not halo.wifi.is_connected():
        pass

    halo.led.show_all(126, 211, 33)
    time.sleep(2)
    halo.led.off_all()

cloud_message — Cloud Message

Function

cloud_message.start(topic_head, client_id=None, server="mq.makeblock.com", port=1883, user=None, password=None, keepalive=60, ssl=False)
Start sending cloud message, effective when Wi-Fi is connected, parameter:

  • topic_head Prefix directory of cloud message topic.
  • client_id The single client ID when connecting to proxy server; a random id will be generated when the string is empty or left unset, where the parameter clean_session of connect should be True.
  • server Server name or IP address of remote server.
  • *port* (optional) The port of the server to connect to; the default port is 1883.
  • *user*_ (optional) The registered user name on the server.
  • *password* (optional) The registered password on the server.
  • *keepalive* (optional) Client's keep-alive value, default 60 seconds. *ssl* (optional) Choose to support SSL/TLS.

cloud_message.get_info(message)
Report the additional parameters of cloud message, string or numerical type, parameter:

  • message string type, the name of cloud message

Sample Code:

import halo
import event
halo.cloud_message.start('/USER/1014148/MESSAGE')

@event.start
def on_start():
    halo.wifi.start(ssid = 'Maker-guest', password = 'makeblock', mode = halo.wifi.WLAN_MODE_STA)
    while not halo.wifi.is_connected():
        pass

    halo.led.show_all(126, 211, 33)
    time.sleep(2)
    halo.led.off_all()
    halo.cloud_message.broadcast('hello', '')

event — Events Function

Two Forms of Writing

One: registration form, as follows:

event.start(test_callback)
event.received(callback, 'hello')

Two: decorator form, as follows:

@event.start

def start_callback():

    print(123)

@event.received('hello')

def received_callback():

    print(123)

Note: parameters other than callback need to be included.

Function

event.start(callback)
Startup event.

event.shaked(callback)
HaloCode was shaken event.

event.button_pressed(callback)
Button pressed event.

event.tilted_left(callback)
HaloCode left-tilted event.

event.tilted_right(callback)
HaloCode right-tilted event.

event.arrow_up(callback)
HaloCode arrow-up event.

event.arrow_down(callback)
HaloCode arrow-down event.

event.received(callback, message_str)
Broadcast reception detection event. In addition to the callback parameter, the parameter:

  • msgstr string type, the string to be matched. The event will be triggered when the received string matches the matching string.

event.cloud_message(message)
Cloud message event, parameter:

  • message String type, name of the cloud message.

event.mesh_message(message)
Mesh message event, parameter:

  • message String type, name of the mesh message.

event.greater_than(callback, threshold, type_str)
The threshold comparison event, which will be triggered when the threshold is exceeded. In addition to the callback parameter, the parameter:

  • threshold value data, set the threshold for triggering.
  • type_str string data, currently only supports sound_sensor: volume sensor, timer: timer.

event.less_than(callback, threshold, type_str)
Threshold comparison event, triggered below the threshold, in addition to the callback parameter, the parameter:

  • threshold value data, set the threshold for triggering
  • type_str string data, currently only supports light_sensor: light sensor.

event.touchpad0_active(callback)
Touchpad0 event.

event.touchpad1_active(callback)
Touchpad1 event.

event.touchpad2_active(callback)
Touchpad2 event.

event.touchpad3_active(callback)
Touchpad3 event.

timer — Timer

Function

get_timer()
Get current value of the timer, measured in second.

reset_timer()
Reset timer.

variable — Variables

Function

set_variable(name, value)
Set variable, parameter:

  • name The name of the variable.
  • value The value of the variable.

get_variable(name)
Get information of the variable, parameter:

  • name The name of the variable.

broadcast — Broadcast

Function

broadcast(message_str)
Broadcast a certain piece of message, parameter:

  • message_str String type, the message to broadcast.

results matching ""

    No results matching ""