Rename the CIRCUITPY drive to something new
For instance, if you have multiple of the same device. The label
can be up to 11 characters. This goes in boot.py not code.py and you must power cycle the board after the change.
# this goes in boot.py not code.py! new_name = "TRINKEYPY0" import storage storage.remount("/", readonly=False) m = storage.getmount("/") m.label = new_name storage.remount("/", readonly=True)
import supervisor if supervisor.runtime.usb_connected: led.value = True # USB else: led.value = False # no USB
An older way that tries to mount CIRCUITPY read-write and if it fails, USB is connected:
def is_usb_connected(): import storage try: storage.remount('/', readonly=False) # attempt to mount readwrite storage.remount('/', readonly=True) # attempt to mount readonly except RuntimeError as e: return True return False is_usb = "USB" if is_usb_connected() else "NO USB" print("USB:", is_usb)
import os fs_stat = os.statvfs('/') print("Disk size in MB", fs_stat[0] * fs_stat[2] / 1024 / 1024) print("Free space in MB", fs_stat[0] * fs_stat[3] / 1024 / 1024)
import microcontroller microcontroller.on_next_reset(microcontroller.RunMode.BOOTLOADER) microcontroller.reset()
USB Serial
Print to USB Serial
print("hello there") # prints a newline print("waiting...", end='') # does not print newline for i in range(256): print(i, end=', ') # comma-separated numbers
while True: print("Type something: ", end='') my_str = input() # type and press ENTER or RETURN print("You entered: ", my_str)
import time import supervisor print("Type something when you're ready") last_time = time.monotonic() while True: if supervisor.runtime.serial_bytes_available: my_str = input() print("You entered:", my_str) if time.monotonic() - last_time > 1: # every second, print last_time = time.monotonic() print(int(last_time),"waiting...")
import time, sys, supervisor print("type characters") while True: n = supervisor.runtime.serial_bytes_available if n > 0: # we read something! s = sys.stdin.read(n) # actually read it in # print both text & hex version of recv'd chars (see control chars!) print("got:", " ".join("{:s} {:02x}".format(c,ord(c)) for c in s)) time.sleep(0.01) # do something else
class USBSerialReader: """ Read a line from USB Serial (up to end_char), non-blocking, with optional echo """ def __init__(self): self.s = '' def read(self,end_char='\n', echo=True): import sys, supervisor n = supervisor.runtime.serial_bytes_available if n > 0: # we got bytes! s = sys.stdin.read(n) # actually read it in if echo: sys.stdout.write(s) # echo back to human self.s = self.s + s # keep building the string up if s.endswith(end_char): # got our end_char! rstr = self.s # save for return self.s = '' # reset str to beginning return rstr return None # no end_char yet usb_reader = USBSerialReader() print("type something and press the end_char") while True: mystr = usb_reader.read() # read until newline, echo back chars #mystr = usb_reader.read(end_char='\t', echo=False) # trigger on tab, no echo if mystr: print("got:",mystr) time.sleep(0.01) # do something time critical
Text editor powered by tinymce.