X-Git-Url: https://git.ayoreis.com/Adafruit_Blinka-hackapet.git/blobdiff_plain/120c7a7f4c7559ede6a7d098e4800663381fc93d..050c6e5bdbe0d75d4b0f053addb368421835a3a7:/src/adafruit_blinka/microcontroller/rp2040_u2if/analogio.py diff --git a/src/adafruit_blinka/microcontroller/rp2040_u2if/analogio.py b/src/adafruit_blinka/microcontroller/rp2040_u2if/analogio.py new file mode 100644 index 0000000..bd1cfbb --- /dev/null +++ b/src/adafruit_blinka/microcontroller/rp2040_u2if/analogio.py @@ -0,0 +1,49 @@ +""" +`analogio` - Analog input and output control +================================================= +See `CircuitPython:analogio` in CircuitPython for more details. +* Author(s): Carter Nelson +""" +from adafruit_blinka import ContextManaged +from .rp2040_u2if import rp2040_u2if + + +class AnalogIn(ContextManaged): + """AnalogIn Base Class for RP2040 u2if""" + + def __init__(self, pin): + self.pin_id = pin.id + rp2040_u2if.adc_init_pin(self.pin_id) + + @property + def value(self): + """Read the ADC and return the value""" + return rp2040_u2if.adc_get_value(self.pin_id) << 4 + + # pylint: disable=no-self-use + @value.setter + def value(self, value): + # emulate what CircuitPython does + raise AttributeError("'AnalogIn' object has no attribute 'value'") + + # pylint: enable=no-self-use + + def deinit(self): + pass + +class AnalogIn_Pico(AnalogIn): + """AnalogIn Base Class for Pico u2if""" + + def __init__(self, pin): + # per their pinout, why only two? + if pin.id not in (26, 27): + raise ValueError("Pin does not support ADC.") + super().__init__(pin) + +class AnalogIn_Feather(AnalogIn): + """AnalogIn Base Class for Feather u2if""" + + def __init__(self, pin): + if pin.id not in (26, 27, 28): + raise ValueError("Pin does not support ADC.") + super().__init__(pin)