X-Git-Url: https://git.ayoreis.com/Adafruit_Blinka-hackapet.git/blobdiff_plain/85e40fd98d2a61d67ef21c794588bf00270b53c8..a79e37b2729f77faf00545062fc4a8ded1a6eb97:/src/adafruit_blinka/microcontroller/mcp2221/pin.py diff --git a/src/adafruit_blinka/microcontroller/mcp2221/pin.py b/src/adafruit_blinka/microcontroller/mcp2221/pin.py index 139d8b6..758a3da 100644 --- a/src/adafruit_blinka/microcontroller/mcp2221/pin.py +++ b/src/adafruit_blinka/microcontroller/mcp2221/pin.py @@ -1,22 +1,25 @@ +"""MCP2221 pin names""" from .mcp2221 import mcp2221 + class Pin: """A basic Pin class for use with MCP2221.""" # pin modes - OUT = 0 - IN = 1 - ADC = 2 - DAC = 3 + OUT = 0 + IN = 1 + ADC = 2 + DAC = 3 # pin values - LOW = 0 - HIGH = 1 + LOW = 0 + HIGH = 1 def __init__(self, pin_id=None): self.id = pin_id self._mode = None def init(self, mode=IN, pull=None): + """Initialize the Pin""" if self.id is None: raise RuntimeError("Can not init a None type pin.") if mode in (Pin.IN, Pin.OUT): @@ -40,35 +43,36 @@ class Pin: self._mode = mode 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 mcp2221.gpio_get_pin(self.id) # digital write - elif val in (Pin.LOW, Pin.HIGH): + if val in (Pin.LOW, Pin.HIGH): mcp2221.gpio_set_pin(self.id, val) + return None # nope - else: - raise ValueError("Invalid value for pin.") + raise ValueError("Invalid value for pin.") # Analog In - elif self._mode == Pin.ADC: + if self._mode == Pin.ADC: if val is None: # MCP2221 ADC is 10 bit, scale to 16 bit per CP API return mcp2221.adc_read(self.id) * 64 - else: - # read only - raise AttributeError("'AnalogIn' object has no attribute 'value'") + # read only + raise AttributeError("'AnalogIn' object has no attribute 'value'") # Analog Out - elif self._mode == Pin.DAC: + if self._mode == Pin.DAC: if val is None: # write only raise AttributeError("unreadable attribute") - else: - # scale 16 bit value to MCP2221 5 bit DAC (yes 5 bit) - mcp2221.dac_write(self.id, val // 2048) - else: - raise RuntimeError("No action for mode {} with value {}".format(self._mode, val)) + # scale 16 bit value to MCP2221 5 bit DAC (yes 5 bit) + mcp2221.dac_write(self.id, val // 2048) + return None + raise RuntimeError( + "No action for mode {} with value {}".format(self._mode, val) + ) # create pin instances for each pin @@ -78,4 +82,4 @@ G2 = Pin(2) G3 = Pin(3) SCL = Pin() -SDA = Pin() \ No newline at end of file +SDA = Pin()