mu-editor / mu

A small, simple editor for beginner Python programmers. Written in Python and Qt5.
http://codewith.mu
GNU General Public License v3.0
1.39k stars 433 forks source link

MU won't recognize Azul board on ScoutsMake Robot. #2419

Open JBelmont72 opened 1 year ago

JBelmont72 commented 1 year ago

What were you trying to do?

run a code on circuitpython mode to control ScoutsMake Robot with azul board

What steps did you take to trigger the issue?

I followed adrafruits procedure to have my Mac recognize the ScoutMake Robot with the Azul board. I was able I was able to see it as recognized in Mu. There is no "run" button in CircuitPython mode which leaves me puzzled on how to run a code. The azul board came with a program loaded. Initially the board's OLED showed a welcome message.
I linked the module via bluefruit to the bluefruit LE connect mobile app.
Now I cannot get MU to recognize the Azul module on the feather. Maybe the code on the feather was deleted or overwritten. I have the code from github and would like to reload it. But MU will not recognize my feather/azul.

What did you expect to happen?

  1. that mu will recognize my feather/azul

What actually happened?

No response

Operating System Version

mac ventura 13.2.1

Mu Version

1.2.0

Other Info

No response

Editor Log

2023-05-31 00:14:32,985 - mu.logic:756(check_usb) INFO: circuitpython device connected on port: /dev/cu.usbmodem101(VID: 0x239A, PID: 0x80BE, manufacturer: 'TinkeringTech LLC') 2023-05-31 00:14:41,962 - mu.logic:739(check_usb) INFO: circuitpython device disconnected on port: /dev/cu.usbmodem101(VID: 0x239A, PID: 0x80BE, manufacturer TinkeringTech LLC) 2023-05-31 00:36:17,320 - mu.interface.main:1075(show_confirmation) DEBUG: There is un-saved work, exiting the application will cause you to lose it. 2023-05-31 00:36:17,322 - mu.interface.main:1076(show_confirmation) DEBUG: None 2023-05-31 00:38:50,738 - mu.settings:169(save) DEBUG: Saving to /Users/judsonbelmont/Library/Application Support/mu/session.json 2023-05-31 00:38:50,740 - mu.logic:1430(quit) INFO: Quitting.

2023-05-31 00:38:50,742 - mu.settings:169(save) DEBUG: Saving to /Users/judsonbelmont/Library/Application Support/mu/session.json 2023-05-31 00:38:50,742 - mu.settings:169(save) DEBUG: Saving to /Users/judsonbelmont/Library/Application Support/mu/venv.json 2023-05-31 09:31:44,327 - root:283(run) INFO:


Starting Mu 1.2.0 2023-05-31 09:31:44,328 - root:284(run) INFO: uname_result(system='Darwin', node='MacBook-Air.local', release='22.3.0', version='Darwin Kernel Version 22.3.0: Mon Jan 30 20:39:35 PST 2023; root:xnu-8792.81.3~2/RELEASE_ARM64_T8103', machine='x86_64', processor='i386') 2023-05-31 09:31:44,368 - root:285(run) INFO: Platform: macOS-13.2.1-x86_64-i386-64bit 2023-05-31 09:31:44,369 - root:286(run) INFO: Python path: ['/Applications/Mu Editor.app/Contents/Resources/Python/lib/python38.zip', '/Applications/Mu Editor.app/Contents/Resources/Python/lib/python3.8', '/Applications/Mu Editor.app/Contents/Resources/Python/lib/python3.8/lib-dynload', '/Applications/Mu Editor.app/Contents/Resources/Python/lib/python3.8/site-packages'] 2023-05-31 09:31:44,369 - root:287(run) INFO: Language code: en_US 2023-05-31 09:31:44,369 - mu.settings:220(load) WARNING: No settings file found at /Users/judsonbelmont/Library/Application Support/mu/settings.json; skipping 2023-05-31 09:31:46,959 - mu.virtual_environment:619(ensure_and_create) INFO: Added log handler. 2023-05-31 09:31:46,960 - mu.virtual_environment:630(ensure_and_create) DEBUG: Checking virtual environment; attempt #1. 2023-05-31 09:31:46,960 - mu.virtual_environment:719(ensure_path) INFO: Virtual Environment found at: /Users/judsonbelmont/Library/Application Support/mu/mu_venv-38-20230510-110104 2023-05-31 09:31:46,961 - mu.virtual_environment:732(ensure_interpreter) INFO: Interpreter found at: /Users/judsonbelmont/Library/Application Support/mu/mu_venv-38-20230510-110104/bin/python 2023-05-31 09:31:46,961 - mu.virtual_environment:463(run_subprocess) INFO: Running ('/Users/judsonbelmont/Library/Application Support/mu/mu_venv-38-20230510-110104/bin/python', '-c', 'import sys; print("%s%s" % sys.version_info[:2])') with kwargs {'shell': False} 2023-05-31 09:31:47,116 - mu.virtual_environment:475(run_subprocess) DEBUG: Process returned 0; output: 38 2023-05-31 09:31:47,116 - mu.virtual_environment:786(ensure_interpreter_version) INFO: Both interpreters at version 38 2023-05-31 09:31:47,118 - mu.virtual_environment:815(ensure_pip) INFO: Pip found at: /Users/judsonbelmont/Library/Application Support/mu/mu_venv-38-20230510-110104/bin/pip 2023-05-31 09:31:47,121 - mu.virtual_environment:798(ensure_key_modules) DEBUG: Verifying import of: pgzero 2023-05-31 09:31:47,121 - mu.virtual_environment:463(run_subprocess) INFO: Running ('/Users/judsonbelmont/Library/Application Support/mu/mu_venv-38-20230510-110104/bin/python', '-c', 'import pgzero') with kwargs {'shell': False} 2023-05-31 09:31:47,163 - mu.virtual_environment:475(run_subprocess) DEBUG: Process returned 0; output: No output received. 2023-05-31 09:31:47,163 - mu.virtual_environment:798(ensure_key_modules) DEBUG: Verifying import of: flask 2023-05-31 09:31:47,163 - mu.virtual_environment:463(run_subprocess) INFO: Running ('/Users/judsonbelmont/Library/Application Support/mu/mu_venv-38-20230510-110104/bin/python', '-c', 'import flask') with kwargs {'shell': False} 2023-05-31 09:31:47,464 - mu.virtual_environment:475(run_subprocess) DEBUG: Process returned 0; output: No output received. 2023-05-31 09:31:47,464 - mu.virtual_environment:798(ensure_key_modules) DEBUG: Verifying import of: ipykernel 2023-05-31 09:31:47,465 - mu.virtual_environment:463(run_subprocess) INFO: Running ('/Users/judsonbelmont/Library/Application Support/mu/mu_venv-38-20230510-110104/bin/python', '-c', 'import ipykernel') with kwargs {'shell': False} 2023-05-31 09:31:48,719 - mu.virtual_environment:475(run_subprocess) DEBUG: Process returned 0; output: No output received. 2023-05-31 09:31:48,720 - mu.virtual_environment:798(ensure_key_modules) DEBUG: Verifying import of: ipython_genutils 2023-05-31 09:31:48,720 - mu.virtual_environment:463(run_subprocess) INFO: Running ('/Users/judsonbelmont/Library/Application Support/mu/mu_venv-38-20230510-110104/bin/python', '-c', 'import ipython_genutils') with kwargs {'shell': False} 2023-05-31 09:31:48,751 - mu.virtual_environment:475(run_subprocess) DEBUG: Process returned 0; output: No output received. 2023-05-31 09:31:48,751 - mu.virtual_environment:662(ensure_and_create) INFO: Valid virtual environment found at /Users/judsonbelmont/Library/Application Support/mu/mu_venv-38-20230510-110104 2023-05-31 09:31:48,751 - mu.settings:169(save) DEBUG: Saving to /Users/judsonbelmont/Library/Application Support/mu/venv.json 2023-05-31 09:31:48,789 - mu.logic:777(init) INFO: Setting up editor. 2023-05-31 09:31:48,791 - mu.logic:801(init) INFO: Log directory: /Users/judsonbelmont/Library/Logs/mu 2023-05-31 09:31:48,791 - mu.logic:802(init) INFO: Data directory: /Users/judsonbelmont/Library/Application Support/mu 2023-05-31 09:31:48,791 - mu.logic:816(setup) INFO: Available modes: python, snek, circuitpython, microbit, esp, web, pyboard, debugger, pygamezero, lego, pico 2023-05-31 09:31:48,791 - mu.modes.base:61(get_default_workspace) INFO: Using workspace /Users/judsonbelmont/mu_code from settings file 2023-05-31 09:31:48,878 - mu.modes.base:61(get_default_workspace) INFO: Using workspace /Users/judsonbelmont/mu_code from settings file 2023-05-31 09:31:48,878 - mu.logic:1583(change_mode) INFO: Workspace directory: /Users/judsonbelmont/mu_code 2023-05-31 09:31:48,878 - mu.logic:890(restore_session) DEBUG: <SessionSettings from /Users/judsonbelmont/Library/Application Support/mu/session.json> 2023-05-31 09:31:48,886 - mu.logic:1015(_load) INFO: Loading script from: /Users/judsonbelmont/mu_code/scoutmakesHello.py 2023-05-31 09:31:48,887 - mu.logic:332(read_and_decode) DEBUG: Trying to decode with utf-8 2023-05-31 09:31:48,887 - mu.logic:335(read_and_decode) INFO: Decoded with utf-8 2023-05-31 09:31:48,887 - mu.logic:348(read_and_decode) DEBUG: Detected newline '\n' 2023-05-31 09:31:48,887 - mu.logic:1114(_load) DEBUG: """ This test will initialize the BLE module and accept commands from the Bluetooth app controller arrows and manipulate the onboard NEOPIXEL colors.

To use:

from adafruit_ble import BLERadio from adafruit_ble.advertising.standard import ProvideServicesAdvertisement from adafruit_ble.services.nordic import UARTService from adafruit_bluefruit_connect.packet import Packet

Only the packet classes that are imported will be known to Packet.

from adafruit_bluefruit_connect.button_packet import ButtonPacket

import time import board import pulseio

import neopixel

pixel_pin = board.NEOPIXEL num_pixels = 1

pixels = neopixel.NeoPixel(pixel_pin, num_pixels, brightness=0.3, auto_write=False)

RED = (255, 0, 0) YELLOW = (255, 150, 0) GREEN = (0, 255, 0) CYAN = (0, 255, 255) BLUE = (0, 0, 255) PURPLE = (180, 0, 255) WHITE = (255, 255, 255)

ble = BLERadio() uart_service = UARTService() advertisement = ProvideServicesAdvertisement(uart_service)

while True: ble.start_advertising(advertisement) while not ble.connected: pass

# Now we're connected

while ble.connected:
    if uart_service.in_waiting:
        # Packet is arriving.
        packet = Packet.from_stream(uart_service)
        if isinstance(packet, ButtonPacket) and packet.pressed:
            if packet.button == ButtonPacket.RIGHT:  # RIGHT button pressed
                pixels.fill(RED)
                pixels.show()
                # Increase or decrease to change the speed of the solid color change.
                time.sleep(1)
            elif packet.button == ButtonPacket.LEFT:  # LEFT button pressed
                pixels.fill(BLUE)
                pixels.show()
                time.sleep(1)
            elif packet.button == ButtonPacket.UP:  # UP button pressed
                pixels.fill(GREEN)
                pixels.show()
                time.sleep(1)
            elif packet.button == ButtonPacket.DOWN:  # DOWN button pressed
                pixels.fill(WHITE)
                pixels.show()
                time.sleep(1)  # Write your code here :-)

2023-05-31 09:31:48,963 - mu.logic:1015(_load) INFO: Loading script from: /Volumes/CIRCUITPY/lib/rda5807m.py 2023-05-31 09:31:48,963 - mu.logic:1026(_load) INFO: The file /Volumes/CIRCUITPY/lib/rda5807m.py does not exist. 2023-05-31 09:31:48,963 - mu.logic:912(restore_session) INFO: Loaded files. 2023-05-31 09:31:48,963 - mu.logic:918(restore_session) INFO: User defined environment variables: {} 2023-05-31 09:31:48,963 - mu.logic:923(restore_session) INFO: Minify scripts on micro:bit? False 2023-05-31 09:31:49,015 - mu.modes.base:61(get_default_workspace) INFO: Using workspace /Users/judsonbelmont/mu_code from settings file 2023-05-31 09:31:49,036 - mu.interface.main:1047(show_message) DEBUG: Could not find an attached CircuitPython device. 2023-05-31 09:31:49,036 - mu.interface.main:1048(show_message) DEBUG: Python files for CircuitPython devices are stored on the device. Therefore, to edit these files you need to have the device plugged in. Until you plug in a device, Mu will use the directory found here:

/Users/judsonbelmont/mu_code

...to store your code. 2023-05-31 09:31:56,939 - mu.logic:1583(change_mode) INFO: Workspace directory: /Users/judsonbelmont/mu_code 2023-05-31 11:03:18,221 - mu.settings:169(save) DEBUG: Saving to /Users/judsonbelmont/Library/Application Support/mu/session.json 2023-05-31 11:03:18,244 - mu.logic:1430(quit) INFO: Quitting.

2023-05-31 11:03:18,248 - mu.settings:169(save) DEBUG: Saving to /Users/judsonbelmont/Library/Application Support/mu/session.json 2023-05-31 11:03:18,251 - mu.settings:169(save) DEBUG: Saving to /Users/judsonbelmont/Library/Application Support/mu/venv.json 2023-05-31 11:18:02,796 - root:283(run) INFO:


Starting Mu 1.2.0 2023-05-31 11:18:02,797 - root:284(run) INFO: uname_result(system='Darwin', node='MacBook-Air.local', release='22.3.0', version='Darwin Kernel Version 22.3.0: Mon Jan 30 20:39:35 PST 2023; root:xnu-8792.81.3~2/RELEASE_ARM64_T8103', machine='x86_64', processor='i386') 2023-05-31 11:18:02,842 - root:285(run) INFO: Platform: macOS-13.2.1-x86_64-i386-64bit 2023-05-31 11:18:02,842 - root:286(run) INFO: Python path: ['/Applications/Mu Editor.app/Contents/Resources/Python/lib/python38.zip', '/Applications/Mu Editor.app/Contents/Resources/Python/lib/python3.8', '/Applications/Mu Editor.app/Contents/Resources/Python/lib/python3.8/lib-dynload', '/Applications/Mu Editor.app/Contents/Resources/Python/lib/python3.8/site-packages'] 2023-05-31 11:18:02,842 - root:287(run) INFO: Language code: en_US 2023-05-31 11:18:02,842 - mu.settings:220(load) WARNING: No settings file found at /Users/judsonbelmont/Library/Application Support/mu/settings.json; skipping 2023-05-31 11:18:03,729 - mu.virtual_environment:619(ensure_and_create) INFO: Added log handler. 2023-05-31 11:18:03,729 - mu.virtual_environment:630(ensure_and_create) DEBUG: Checking virtual environment; attempt #1. 2023-05-31 11:18:03,730 - mu.virtual_environment:719(ensure_path) INFO: Virtual Environment found at: /Users/judsonbelmont/Library/Application Support/mu/mu_venv-38-20230510-110104 2023-05-31 11:18:03,730 - mu.virtual_environment:732(ensure_interpreter) INFO: Interpreter found at: /Users/judsonbelmont/Library/Application Support/mu/mu_venv-38-20230510-110104/bin/python 2023-05-31 11:18:03,730 - mu.virtual_environment:463(run_subprocess) INFO: Running ('/Users/judsonbelmont/Library/Application Support/mu/mu_venv-38-20230510-110104/bin/python', '-c', 'import sys; print("%s%s" % sys.version_info[:2])') with kwargs {'shell': False} 2023-05-31 11:18:04,001 - mu.virtual_environment:475(run_subprocess) DEBUG: Process returned 0; output: 38 2023-05-31 11:18:04,001 - mu.virtual_environment:786(ensure_interpreter_version) INFO: Both interpreters at version 38 2023-05-31 11:18:04,005 - mu.virtual_environment:815(ensure_pip) INFO: Pip found at: /Users/judsonbelmont/Library/Application Support/mu/mu_venv-38-20230510-110104/bin/pip 2023-05-31 11:18:04,007 - mu.virtual_environment:798(ensure_key_modules) DEBUG: Verifying import of: pgzero 2023-05-31 11:18:04,008 - mu.virtual_environment:463(run_subprocess) INFO: Running ('/Users/judsonbelmont/Library/Application Support/mu/mu_venv-38-20230510-110104/bin/python', '-c', 'import pgzero') with kwargs {'shell': False} 2023-05-31 11:18:04,072 - mu.virtual_environment:475(run_subprocess) DEBUG: Process returned 0; output: No output received. 2023-05-31 11:18:04,073 - mu.virtual_environment:798(ensure_key_modules) DEBUG: Verifying import of: flask 2023-05-31 11:18:04,073 - mu.virtual_environment:463(run_subprocess) INFO: Running ('/Users/judsonbelmont/Library/Application Support/mu/mu_venv-38-20230510-110104/bin/python', '-c', 'import flask') with kwargs {'shell': False} 2023-05-31 11:18:04,286 - mu.virtual_environment:475(run_subprocess) DEBUG: Process returned 0; output: No output received. 2023-05-31 11:18:04,286 - mu.virtual_environment:798(ensure_key_modules) DEBUG: Verifying import of: ipykernel 2023-05-31 11:18:04,286 - mu.virtual_environment:463(run_subprocess) INFO: Running ('/Users/judsonbelmont/Library/Application Support/mu/mu_venv-38-20230510-110104/bin/python', '-c', 'import ipykernel') with kwargs {'shell': False} 2023-05-31 11:18:05,375 - mu.virtual_environment:475(run_subprocess) DEBUG: Process returned 0; output: No output received. 2023-05-31 11:18:05,375 - mu.virtual_environment:798(ensure_key_modules) DEBUG: Verifying import of: ipython_genutils 2023-05-31 11:18:05,375 - mu.virtual_environment:463(run_subprocess) INFO: Running ('/Users/judsonbelmont/Library/Application Support/mu/mu_venv-38-20230510-110104/bin/python', '-c', 'import ipython_genutils') with kwargs {'shell': False} 2023-05-31 11:18:05,406 - mu.virtual_environment:475(run_subprocess) DEBUG: Process returned 0; output: No output received. 2023-05-31 11:18:05,406 - mu.virtual_environment:662(ensure_and_create) INFO: Valid virtual environment found at /Users/judsonbelmont/Library/Application Support/mu/mu_venv-38-20230510-110104 2023-05-31 11:18:05,406 - mu.settings:169(save) DEBUG: Saving to /Users/judsonbelmont/Library/Application Support/mu/venv.json 2023-05-31 11:18:05,445 - mu.logic:777(init) INFO: Setting up editor. 2023-05-31 11:18:05,446 - mu.logic:801(init) INFO: Log directory: /Users/judsonbelmont/Library/Logs/mu 2023-05-31 11:18:05,447 - mu.logic:802(init) INFO: Data directory: /Users/judsonbelmont/Library/Application Support/mu 2023-05-31 11:18:05,447 - mu.logic:816(setup) INFO: Available modes: python, snek, circuitpython, microbit, esp, web, pyboard, debugger, pygamezero, lego, pico 2023-05-31 11:18:05,448 - mu.modes.base:61(get_default_workspace) INFO: Using workspace /Users/judsonbelmont/mu_code from settings file 2023-05-31 11:18:05,540 - mu.modes.base:61(get_default_workspace) INFO: Using workspace /Users/judsonbelmont/mu_code from settings file 2023-05-31 11:18:05,540 - mu.logic:1583(change_mode) INFO: Workspace directory: /Users/judsonbelmont/mu_code 2023-05-31 11:18:05,540 - mu.logic:890(restore_session) DEBUG: <SessionSettings from /Users/judsonbelmont/Library/Application Support/mu/session.json> 2023-05-31 11:18:05,546 - mu.logic:1015(_load) INFO: Loading script from: /Users/judsonbelmont/mu_code/scoutmakesHello.py 2023-05-31 11:18:05,546 - mu.logic:332(read_and_decode) DEBUG: Trying to decode with utf-8 2023-05-31 11:18:05,546 - mu.logic:335(read_and_decode) INFO: Decoded with utf-8 2023-05-31 11:18:05,547 - mu.logic:348(read_and_decode) DEBUG: Detected newline '\n' 2023-05-31 11:18:05,547 - mu.logic:1114(_load) DEBUG: """ This test will initialize the BLE module and accept commands from the Bluetooth app controller arrows and manipulate the onboard NEOPIXEL colors.

To use:

from adafruit_ble import BLERadio from adafruit_ble.advertising.standard import ProvideServicesAdvertisement from adafruit_ble.services.nordic import UARTService from adafruit_bluefruit_connect.packet import Packet

Only the packet classes that are imported will be known to Packet.

from adafruit_bluefruit_connect.button_packet import ButtonPacket

import time import board import pulseio

import neopixel

pixel_pin = board.NEOPIXEL num_pixels = 1

pixels = neopixel.NeoPixel(pixel_pin, num_pixels, brightness=0.3, auto_write=False)

RED = (255, 0, 0) YELLOW = (255, 150, 0) GREEN = (0, 255, 0) CYAN = (0, 255, 255) BLUE = (0, 0, 255) PURPLE = (180, 0, 255) WHITE = (255, 255, 255)

ble = BLERadio() uart_service = UARTService() advertisement = ProvideServicesAdvertisement(uart_service)

while True: ble.start_advertising(advertisement) while not ble.connected: pass

# Now we're connected

while ble.connected:
    if uart_service.in_waiting:
        # Packet is arriving.
        packet = Packet.from_stream(uart_service)
        if isinstance(packet, ButtonPacket) and packet.pressed:
            if packet.button == ButtonPacket.RIGHT:  # RIGHT button pressed
                pixels.fill(RED)
                pixels.show()
                # Increase or decrease to change the speed of the solid color change.
                time.sleep(1)
            elif packet.button == ButtonPacket.LEFT:  # LEFT button pressed
                pixels.fill(BLUE)
                pixels.show()
                time.sleep(1)
            elif packet.button == ButtonPacket.UP:  # UP button pressed
                pixels.fill(GREEN)
                pixels.show()
                time.sleep(1)
            elif packet.button == ButtonPacket.DOWN:  # DOWN button pressed
                pixels.fill(WHITE)
                pixels.show()
                time.sleep(1)  # Write your code here :-)

2023-05-31 11:18:05,625 - mu.logic:912(restore_session) INFO: Loaded files. 2023-05-31 11:18:05,625 - mu.logic:918(restore_session) INFO: User defined environment variables: {} 2023-05-31 11:18:05,625 - mu.logic:923(restore_session) INFO: Minify scripts on micro:bit? False 2023-05-31 11:18:05,679 - mu.modes.base:61(get_default_workspace) INFO: Using workspace /Users/judsonbelmont/mu_code from settings file 2023-05-31 11:18:05,696 - mu.interface.main:1047(show_message) DEBUG: Could not find an attached CircuitPython device. 2023-05-31 11:18:05,696 - mu.interface.main:1048(show_message) DEBUG: Python files for CircuitPython devices are stored on the device. Therefore, to edit these files you need to have the device plugged in. Until you plug in a device, Mu will use the directory found here:

/Users/judsonbelmont/mu_code

...to store your code. 2023-05-31 11:18:29,778 - mu.logic:1583(change_mode) INFO: Workspace directory: /Users/judsonbelmont/mu_code 2023-05-31 11:33:43,765 - mu.modes.base:61(get_default_workspace) INFO: Using workspace /Users/judsonbelmont/mu_code from settings file 2023-05-31 11:33:43,766 - mu.logic:1152(get_dialog_directory) INFO: Using path for file dialog: /Users/judsonbelmont/mu_code 2023-05-31 11:38:41,581 - mu.interface.main:416(get_load_path) DEBUG: Getting load path: 2023-05-31 11:38:43,992 - mu.modes.base:61(get_default_workspace) INFO: Using workspace /Users/judsonbelmont/mu_code from settings file 2023-05-31 11:38:43,993 - mu.logic:1152(get_dialog_directory) INFO: Using path for file dialog: /Users/judsonbelmont/mu_code 2023-05-31 11:38:50,276 - mu.interface.main:416(get_load_path) DEBUG: Getting load path: /Users/judsonbelmont/mu_code/Codes/code.py 2023-05-31 11:38:50,276 - mu.logic:1015(_load) INFO: Loading script from: /Users/judsonbelmont/mu_code/Codes/code.py 2023-05-31 11:38:50,277 - mu.logic:332(read_and_decode) DEBUG: Trying to decode with utf-8 2023-05-31 11:38:50,277 - mu.logic:335(read_and_decode) INFO: Decoded with utf-8 2023-05-31 11:38:50,278 - mu.logic:348(read_and_decode) DEBUG: Detected newline '\n' 2023-05-31 11:38:50,278 - mu.logic:1114(_load) DEBUG: from adafruit_ble import BLERadio from adafruit_ble.advertising.standard import ProvideServicesAdvertisement from adafruit_ble.services.nordic import UARTService

from adafruit_bluefruit_connect.packet import Packet from adafruit_bluefruit_connect.accelerometer_packet import AccelerometerPacket from adafruit_bluefruit_connect.magnetometer_packet import MagnetometerPacket from adafruit_bluefruit_connect.gyro_packet import GyroPacket from adafruit_bluefruit_connect.quaternion_packet import QuaternionPacket from adafruit_bluefruit_connect.button_packet import ButtonPacket

import time import board import pulseio import neopixel import simpleio import busio import terminalio from digitalio import DigitalInOut, Direction, Pull

from adafruit_display_text import label import adafruit_displayio_ssd1306 import displayio

Display

displayio.release_displays()

Initialize i2c bus

i2c = busio.I2C(board.SCL, board.SDA)

display_bus = displayio.I2CDisplay(i2c, device_address=0x3C) display = adafruit_displayio_ssd1306.SSD1306(display_bus, width=128, height=32) oled_text = "Robot Ready!"

def drawText(text):

Write text on display

global display
# Make the display context
splash = displayio.Group(max_size=10)
display.show(splash)

color_bitmap = displayio.Bitmap(128, 32, 1)
color_palette = displayio.Palette(1)
color_palette[0] = 0x000000  # Black

bg_sprite = displayio.TileGrid(color_bitmap, pixel_shader=color_palette, x=0, y=0)
splash.append(bg_sprite)
text_area_1 = label.Label(terminalio.FONT, text=oled_text, color=0xFFFF00, x=30, y=15)
splash.append(text_area_1)

pixel_pin = board.D12 #Pin that the NEOPIXELS are attached to. num_pixels = 4

pixels = neopixel.NeoPixel(pixel_pin, num_pixels, brightness=0.3, auto_write=False)

RED = (255, 0, 0) YELLOW = (255, 150, 0) GREEN = (0, 255, 0) CYAN = (0, 255, 255) BLUE = (0, 0, 255) PURPLE = (180, 0, 255) WHITE = (255, 255, 255)

def color_chase(color, wait): for i in range(num_pixels): pixels[i] = color time.sleep(wait) pixels.show() time.sleep(0.5)

Define pin connected to piezo buzzer.

PIEZO_PIN = board.D11

Define a list of tones/music notes to play on the buzzer.

TONE_FREQ = [ 262, # C4 294, # D4 330, # E4 349, # F4 392, # G4 440, # A4 494 ] # B4

motor pin definitions

motor1A = DigitalInOut(board.D5) motor1B = DigitalInOut(board.D6) motor2A = DigitalInOut(board.D9) motor2B = DigitalInOut(board.D10)

motor1A.direction = Direction.OUTPUT motor1B.direction = Direction.OUTPUT motor2A.direction = Direction.OUTPUT motor2B.direction = Direction.OUTPUT

ble = BLERadio() uart = UARTService() advertisement = ProvideServicesAdvertisement(uart) while True: drawText("") #Robot ready splash pixels.fill(BLUE) pixels.show() ble.start_advertising(advertisement)

while not ble.connected:
    pass

# Now we're connected

while ble.connected:
    if uart.in_waiting:
        packet = Packet.from_stream(uart)
        if isinstance(packet, ButtonPacket) and packet.pressed:

            if packet.button == ButtonPacket.RIGHT:  #RIGHT
                    pixels.fill(BLUE)
                    pixels.show()
                    simpleio.tone(PIEZO_PIN, TONE_FREQ[5], duration=0.05)
                    simpleio.tone(PIEZO_PIN, TONE_FREQ[4], duration=0.1)
                    simpleio.tone(PIEZO_PIN, TONE_FREQ[0], duration=0.05)
                    motor1A.value = False
                    motor1B.value = True
                    motor2A.value = False
                    motor2B.value = True

            elif packet.button == ButtonPacket.LEFT:  # LEFT
                    pixels.fill(YELLOW)
                    pixels.show()
                    simpleio.tone(PIEZO_PIN, TONE_FREQ[6], duration=0.05)
                    simpleio.tone(PIEZO_PIN, TONE_FREQ[5], duration=0.1)
                    simpleio.tone(PIEZO_PIN, TONE_FREQ[0], duration=0.05)
                    motor1A.value = True
                    motor1B.value = False
                    motor2A.value = True
                    motor2B.value = False

            elif packet.button == ButtonPacket.UP:  # FORWARD
                    pixels.fill(GREEN)
                    pixels.show()
                    simpleio.tone(PIEZO_PIN, TONE_FREQ[2], duration=0.1)
                    motor1A.value = False
                    motor1B.value = True
                    motor2A.value = True
                    motor2B.value = False

            elif packet.button == ButtonPacket.DOWN:  # REVERSE
                    pixels.fill(RED)
                    pixels.show()
                    simpleio.tone(PIEZO_PIN, TONE_FREQ[3], duration=0.1)
                    motor1A.value = True
                    motor1B.value = False
                    motor2A.value = False
                    motor2B.value = True

            elif packet.button == ButtonPacket.BUTTON_1:  # button 1
                    pixels.fill(YELLOW)
                    pixels.show()
                    simpleio.tone(PIEZO_PIN, TONE_FREQ[6], duration=0.2)
                    simpleio.tone(PIEZO_PIN, TONE_FREQ[3], duration=0.1)
                    simpleio.tone(PIEZO_PIN, TONE_FREQ[0], duration=0.4)
                    print("released button 1")

            elif packet.button == ButtonPacket.BUTTON_2:  # button 2
                    pixels.fill(RED)
                    pixels.show()
                    simpleio.tone(PIEZO_PIN, TONE_FREQ[0], duration=0.2)
                    simpleio.tone(PIEZO_PIN, TONE_FREQ[3], duration=0.1)
                    simpleio.tone(PIEZO_PIN, TONE_FREQ[6], duration=0.4)
                    print("released button 2")

            elif packet.button == ButtonPacket.BUTTON_3:  # button 3
                    pixels.fill(BLUE)
                    pixels.show()
                    print("released button 3")

            elif packet.button == ButtonPacket.BUTTON_4:  # button 4
                    pixels.fill(CYAN)
                    pixels.show()
                    print("released button 4")
            else:
                    pixels.fill(WHITE)
                    pixels.show()
                    print("stopped")
                    drawText("")  #Robot ready splash
                    motor1A.value = False
                    motor1B.value = False
                    motor2A.value = False
                    motor2B.value = False

        elif isinstance(packet, ButtonPacket) and not packet.pressed:
            if packet.button == ButtonPacket.RIGHT:
                print("released right")
                motor1A.value = False
                motor1B.value = False
                motor2A.value = False
                motor2B.value = False
            if packet.button == ButtonPacket.LEFT:
                print("released left")
                motor1A.value = False
                motor1B.value = False
                motor2A.value = False
                motor2B.value = False
            if packet.button == ButtonPacket.UP:
                print("released forward")
                motor1A.value = False
                motor1B.value = False
                motor2A.value = False
                motor2B.value = False
            if packet.button == ButtonPacket.DOWN:
                print("released reverse")
                motor1A.value = False
                motor1B.value = False
                motor2A.value = False
                motor2B.value = False

2023-05-31 11:38:57,799 - mu.logic:1152(get_dialog_directory) INFO: Using path for file dialog: /Users/judsonbelmont/mu_code/Codes 2023-05-31 11:39:00,658 - mu.interface.main:416(get_load_path) DEBUG: Getting load path: /Users/judsonbelmont/mu_code/Codes/code.py 2023-05-31 11:39:00,658 - mu.logic:1015(_load) INFO: Loading script from: /Users/judsonbelmont/mu_code/Codes/code.py 2023-05-31 11:39:00,659 - mu.logic:1043(_load) INFO: Script already open. 2023-05-31 11:39:00,671 - mu.interface.main:1047(show_message) DEBUG: The file "code.py" is already open. 2023-05-31 11:39:00,671 - mu.interface.main:1048(show_message) DEBUG: None 2023-05-31 11:40:21,432 - mu.logic:1530(select_mode) INFO: Showing available modes: ['python', 'snek', 'circuitpython', 'microbit', 'esp', 'web', 'pyboard', 'debugger', 'pygamezero', 'lego', 'pico'] 2023-05-31 11:47:47,123 - mu.interface.main:1047(show_message) DEBUG: Could not find an attached device. 2023-05-31 11:47:47,124 - mu.interface.main:1048(show_message) DEBUG: Please make sure the device is plugged into this computer.

It must have a version of MicroPython (or CircuitPython) flashed onto it before the REPL will work.

Finally, press the device's reset button and wait a few seconds before trying again. 2023-05-31 11:48:00,816 - mu.modes.base:481(toggle_repl) INFO: Toggle REPL on. 2023-05-31 12:00:32,653 - mu.logic:1530(select_mode) INFO: Showing available modes: ['python', 'snek', 'circuitpython', 'microbit', 'esp', 'web', 'pyboard', 'debugger', 'pygamezero', 'lego', 'pico'] 2023-05-31 12:00:56,269 - mu.logic:1319(zoom_in) INFO: Zoom in 2023-05-31 12:00:58,018 - mu.logic:1326(zoom_out) INFO: Zoom out 2023-05-31 12:00:59,618 - mu.logic:992(toggle_theme) INFO: Toggle theme to: night 2023-05-31 12:01:01,735 - mu.logic:992(toggle_theme) INFO: Toggle theme to: contrast 2023-05-31 12:01:02,719 - mu.logic:992(toggle_theme) INFO: Toggle theme to: day 2023-05-31 12:01:21,753 - mu.logic:1439(show_admin) INFO: Showing admin with logs from /Users/judsonbelmont/Library/Logs/mu/mu.log 2023-05-31 12:01:21,753 - mu.virtual_environment:984(installed_packages) INFO: Discovering installed third party modules in venv. 2023-05-31 12:01:21,756 - mu.virtual_environment:139(run_blocking) INFO: About to run blocking /Users/judsonbelmont/Library/Application Support/mu/mu_venv-38-20230510-110104/bin/pip with args ['list', '--disable-pip-version-check'] and envvars {} 2023-05-31 12:01:22,469 - mu.virtual_environment:189(wait) DEBUG: Finished: True; exitStatus 0; exitCode 0 2023-05-31 12:01:22,470 - mu.virtual_environment:274(run) DEBUG: Process output: Package Version


appnope 0.1.3 asttokens 2.1.0 backcall 0.2.0 click 8.1.3 decorator 5.1.1 entrypoints 0.4 executing 1.2.0 Flask 2.0.3 ipykernel 5.5.6 ipython 8.6.0 ipython-genutils 0.2.0 itsdangerous 2.1.2 jedi 0.18.1 Jinja2 3.1.2 jupyter_client 7.4.5 jupyter_core 5.0.0 MarkupSafe 2.1.1 matplotlib-inline 0.1.6 nest-asyncio 1.5.6 numpy 1.23.4 parso 0.8.3 pexpect 4.8.0 pgzero 1.2.1 pickleshare 0.7.5 pip 22.3.1 platformdirs 2.5.4 prompt-toolkit 3.0.32 ptyprocess 0.7.0 pure-eval 0.2.2 pygame 2.1.2 Pygments 2.13.0 python-dateutil 2.8.2 pyzmq 24.0.1 setuptools 65.5.1 six 1.16.0 stack-data 0.6.1 tornado 6.2 traitlets 5.5.0 wcwidth 0.2.5 Werkzeug 2.2.2 wheel 0.38.4 2023-05-31 12:01:22,470 - mu.virtual_environment:993(installed_packages) INFO: [] 2023-05-31 12:02:58,017 - mu.logic:1382(show_help) INFO: Showing help at 'https://codewith.mu/en/help/1.2'. 2023-05-31 12:04:16,871 - mu.logic:1382(show_help) INFO: Showing help at 'https://codewith.mu/en/help/1.2'. 2023-05-31 12:04:46,767 - mu.logic:1439(show_admin) INFO: Showing admin with logs from /Users/judsonbelmont/Library/Logs/mu/mu.log 2023-05-31 12:04:46,768 - mu.virtual_environment:984(installed_packages) INFO: Discovering installed third party modules in venv. 2023-05-31 12:04:46,769 - mu.virtual_environment:139(run_blocking) INFO: About to run blocking /Users/judsonbelmont/Library/Application Support/mu/mu_venv-38-20230510-110104/bin/pip with args ['list', '--disable-pip-version-check'] and envvars {} 2023-05-31 12:04:47,198 - mu.virtual_environment:189(wait) DEBUG: Finished: True; exitStatus 0; exitCode 0 2023-05-31 12:04:47,199 - mu.virtual_environment:274(run) DEBUG: Process output: Package Version


appnope 0.1.3 asttokens 2.1.0 backcall 0.2.0 click 8.1.3 decorator 5.1.1 entrypoints 0.4 executing 1.2.0 Flask 2.0.3 ipykernel 5.5.6 ipython 8.6.0 ipython-genutils 0.2.0 itsdangerous 2.1.2 jedi 0.18.1 Jinja2 3.1.2 jupyter_client 7.4.5 jupyter_core 5.0.0 MarkupSafe 2.1.1 matplotlib-inline 0.1.6 nest-asyncio 1.5.6 numpy 1.23.4 parso 0.8.3 pexpect 4.8.0 pgzero 1.2.1 pickleshare 0.7.5 pip 22.3.1 platformdirs 2.5.4 prompt-toolkit 3.0.32 ptyprocess 0.7.0 pure-eval 0.2.2 pygame 2.1.2 Pygments 2.13.0 python-dateutil 2.8.2 pyzmq 24.0.1 setuptools 65.5.1 six 1.16.0 stack-data 0.6.1 tornado 6.2 traitlets 5.5.0 wcwidth 0.2.5 Werkzeug 2.2.2 wheel 0.38.4 2023-05-31 12:04:47,199 - mu.virtual_environment:993(installed_packages) INFO: []