X-Git-Url: https://git.ayoreis.com/Adafruit_Blinka-hackapet.git/blobdiff_plain/6ce470ecf6b8e3ab8aa79da30c032249d13d0652..7436f81f8ad18a3d9f95d263aba83663185e981b:/src/adafruit_blinka/microcontroller/pico_u2if/pin.py diff --git a/src/adafruit_blinka/microcontroller/pico_u2if/pin.py b/src/adafruit_blinka/microcontroller/pico_u2if/pin.py new file mode 100644 index 0000000..ef22587 --- /dev/null +++ b/src/adafruit_blinka/microcontroller/pico_u2if/pin.py @@ -0,0 +1,84 @@ +"""PICO pin names""" +from .pico_u2if import pico_u2if + + +class Pin: + """A basic Pin class for use with MCP2221.""" + + # pin modes + IN = 0 + OUT = 1 + # pin values + LOW = 0 + HIGH = 1 + # pin pulls + PULL_NONE = 0 + PULL_UP = 1 + PULL_DOWN = 2 + + def __init__(self, pin_id=None): + self.id = pin_id + self._mode = None + self._pull = None + + def init(self, mode=IN, pull=PULL_NONE): + """Initialize the Pin""" + pull = Pin.PULL_NONE if pull is None else pull + if self.id is None: + raise RuntimeError("Can not init a None type pin.") + if mode not in (Pin.IN, Pin.OUT): + raise ValueError("Incorrect mode value.") + if pull not in (Pin.PULL_NONE, Pin.PULL_UP, Pin.PULL_DOWN): + raise ValueError("Incorrect pull value.") + + pico_u2if.gpio_init_pin(self.id, mode, pull) + + self._mode = mode + self._pull = pull + + def value(self, val=None): + """Set or return the Pin Value""" + # Digital In / Out + if self._mode in (Pin.IN, Pin.OUT): + # digital read + if val is None: + return pico_u2if.gpio_get_pin(self.id) + # digital write + if val in (Pin.LOW, Pin.HIGH): + pico_u2if.gpio_set_pin(self.id, val) + return None + # nope + raise ValueError("Invalid value for pin.") + + raise RuntimeError( + "No action for mode {} with value {}".format(self._mode, val) + ) + + +# create pin instances for each pin +GP0 = Pin(0) +GP1 = Pin(1) +GP2 = Pin(2) +GP3 = Pin(3) +GP4 = Pin(4) +GP5 = Pin(5) +GP6 = Pin(6) +GP7 = Pin(7) +GP8 = Pin(8) +GP9 = Pin(9) +GP10 = Pin(10) +GP11 = Pin(11) +GP12 = Pin(12) +GP13 = Pin(13) +GP14 = Pin(14) +GP15 = Pin(15) +GP16 = Pin(16) +GP17 = Pin(17) +GP18 = Pin(18) +GP19 = Pin(19) +GP20 = Pin(20) +GP21 = Pin(21) +GP22 = Pin(22) +GP26 = Pin(26) +GP27 = Pin(27) +GP28 = Pin(28)