Skip to content

Instantly share code, notes, and snippets.

@anecdata
Last active February 13, 2023 19:00
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save anecdata/1c345cb2d137776d76b97a5d5678dc97 to your computer and use it in GitHub Desktop.
Save anecdata/1c345cb2d137776d76b97a5d5678dc97 to your computer and use it in GitHub Desktop.
CircuitPython Pin Finder: microcontroller.pin to board mappings
# SPDX-FileCopyrightText: 2020 anecdata
#
# SPDX-License-Identifier: MIT
import microcontroller
import board
for pin in dir(microcontroller.pin):
if isinstance(getattr(microcontroller.pin, pin), microcontroller.Pin):
print("".join(("microcontroller.pin.", pin, "\t")), end=" ")
for alias in dir(board):
if getattr(board, alias) is getattr(microcontroller.pin, pin):
print("".join(("", "board.", alias)), end=" ")
print()
@anecdata
Copy link
Author

anecdata commented Feb 2, 2021

@anecdata
Copy link
Author

anecdata commented Dec 2, 2021

Check GPIO capabilities:

import traceback
import microcontroller
import board
import digitalio
import analogio

for pin in dir(microcontroller.pin):
    if isinstance(getattr(microcontroller.pin, pin), microcontroller.Pin):

        print("".join(("microcontroller.pin.", pin, " -->")), end=" ")
        for alias in dir(board):
            if getattr(board, alias) is getattr(microcontroller.pin, pin):
                print("".join(("", "board.", alias)), end=" ")
        print()

        try:
            print("DigitalIn:", end=" ")
            with digitalio.DigitalInOut(getattr(microcontroller.pin, pin)) as digital_in:
                digital_in.direction = digitalio.Direction.INPUT
                # digital_in.pull = digitalio.Pull.UP
                # digital_in.pull = digitalio.Pull.DOWN
                print(digital_in.value)
        except Exception as e:
            print(pin)
            traceback.print_exception(e, e, e.__traceback__)

        try:
            print("DigitalOut:", end=" ")
            with digitalio.DigitalInOut(getattr(microcontroller.pin, pin)) as digital_out:
                digital_out.direction = digitalio.Direction.OUTPUT
                print(digital_out.value)
        except Exception as e:
            print(pin)
            traceback.print_exception(e, e, e.__traceback__)

        try:
            print("AnalogIn:", end=" ")
            with analogio.AnalogIn(getattr(microcontroller.pin, pin)) as analog_in:
                print(analog_in.value)
        except Exception as e:
            print(pin)
            traceback.print_exception(e, e, e.__traceback__)

        try:
            print("AnalogOut:", end=" ")
            with analogio.AnalogOut(getattr(microcontroller.pin, pin)) as analog_out:
                analog_out.value = 16384
                print("success")
        except Exception as e:
            print(pin)
            traceback.print_exception(e, e, e.__traceback__)

@anecdata
Copy link
Author

anecdata commented Feb 11, 2023

Pico W:

# SPDX-FileCopyrightText: 2023 anecdata
#
# SPDX-License-Identifier: MIT

import microcontroller
import board

try:
    import cyw43  # Pico W
except ImportError:
    cyw43 = None

for pin in dir(microcontroller.pin):
    if isinstance(getattr(microcontroller.pin, pin), microcontroller.Pin) or \
       (cyw43 and isinstance(getattr(microcontroller.pin, pin), cyw43.CywPin)):
        print("".join(("microcontroller.pin.", pin, "\t")), end=" ")
        for alias in dir(board):
            if (getattr(board, alias) is getattr(microcontroller.pin, pin)):
                print("".join(("", "board.", alias)), end=" ")
    print()

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment