Пример #1
0
def system_features_menu():
    oled.oleds_system_use(True)
    aiko.button.add_slider_handler(slider_handler, 12, 15)
    oled.set_system_title(save=True)
    oled.oleds_clear(write=False)
    menu_show()
    menu_item_select(0)
    oled.oleds_system_use(False)
Пример #2
0
def initialise():
    global schedule, menu

    schedule = configuration.schedule.settings
    oled.oleds_clear(oled.BG)
    event.add_timer_handler(titlebar, 5000)
    prefix = configuration.schedule.settings['topicprefix']

    for topic in configuration.schedule.settings['topics']:
        mqtt.add_message_handler(on_schedule_message, prefix + topic)
Пример #3
0
def run(period=50):
    oled.oleds_clear(0)

    new_eyes()
    display_eyes()

    event.add_timer_handler(timer_handler, period)
    try:
        event.loop()
    finally:
        event.remove_timer_handler(timer_handler)
Пример #4
0
def run(period=50):
    oled.title = "Snake 0.0"
    oled.oleds_clear(0)
    snake_new()
    display_snake()

    event.add_timer_handler(timer_handler, period)
    try:
        event.loop()
    finally:
        event.remove_timer_handler(timer_handler)
Пример #5
0
def system_features_handler(pin_numbers):
    global system_ui_active
    system_ui_active = not system_ui_active

    if system_ui_active:
        system_features_menu()
        aiko.button.add_touch_handler(button_handler, [14, 27])
        oled.oleds_enable(False)
    else:
        aiko.button.remove_handler(button_handler)
        aiko.button.remove_handler(slider_handler)
        oled.oleds_enable(True)
        oled.set_system_title(restore=True)
        oled.oleds_clear()
Пример #6
0
def on_shake_ui():
    # Disable System UI if that's what called me... otherwise we can't use nice things
    if aiko.system_ui.system_ui_active:
        print("[Shake] Called from System UI - disabling")
        aiko.system_ui.system_features_handler(1)

    # Clear the screen and draw the title
    oled.oleds_clear()
    oled.oleds_text("  Slide Left      To Shake!  ", 0, 14, 1)

    # The title takes a second to raster onto the second screen, to a little sleep_ms here for UI experience :)
    sleep_ms(250)

    # Register our slider handler
    aiko.button.add_slider_handler(on_shake_slider, 12, 15)
Пример #7
0
def system_features_handler(pin_numbers):
    global system_ui_active
    system_ui_active = not system_ui_active

    if system_ui_active:
        aiko.button.add_slider_handler(slider_handler, 12, 15)
        oled.set_system_title(save=True)
        oled.oleds_clear(write=False)
        menu_show()
        menu_item_highlight(0)
        oled.oleds_enable(False)
    else:
        aiko.button.remove_handler(slider_handler)
        oled.oleds_enable(True)
        oled.set_system_title(restore=True)
        oled.oleds_clear()
Пример #8
0
def on_shake_slider(pin_number, state, value):
    global shake_lastSliderVal, shake_SOURCE, shake_TARGET

    # Update the UI strength bar
    draw_progressbar(0, value)

    # If we're still dragging (state == 1), record latest value
    if state == 1:
        shake_lastSliderVal = value

    # Once finger has been released (state == 2), use the last value for sending the trigger message, then
    # show a little UI animation while resetting the stored value for the next use :)
    if state == 2 and shake_lastSliderVal > 0:
        # Send the MQTT trigger (shake) message
        print("MQTT Send {}: (shake {} {})".format(shake_TARGET,
                                                   shake_lastSliderVal * 100,
                                                   shake_SOURCE))
        aiko.mqtt.client.publish(
            shake_TARGET, "(shake {} {})".format(shake_lastSliderVal * 30,
                                                 shake_SOURCE))

        # ... also display a little UI animation for fun
        oled.oleds_clear()
        oled.oleds_text(
            " Sending Shake!    {}% POWER!".format(shake_lastSliderVal), 0, 14,
            1)
        shake_lastSliderVal = 0  # (... oh, and don't forget to reset the slider value store)
        aiko.button.remove_handler(
            on_shake_slider)  # and unregister our slider control!

        for screen in range(0, 2):
            for x in range(0, 20):
                draw_progressbar(screen, x * 5)
                sleep_ms(20)
        oled.oleds_text("   HANDSHAKE      COMPLETE", 0, 32, 1)

        # Clear display after 8s to prevent messy overwriting
        sleep_ms(8000)
        oled.oleds_clear()
Пример #9
0
def run():
    oled.oleds_clear(0)
    aiko.event.add_timer_handler(status_handler, 500, immediate=True)