1 # SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
3 # SPDX-License-Identifier: MIT
5 `analogio` - Analog input and output control
6 =================================================
7 See `CircuitPython:analogio` in CircuitPython for more details.
8 * Author(s): Carter Nelson
10 from adafruit_blinka import ContextManaged
11 from .rp2040_u2if import rp2040_u2if
14 class AnalogIn(ContextManaged):
15 """AnalogIn Base Class for RP2040 u2if"""
17 def __init__(self, pin):
19 rp2040_u2if.adc_init_pin(self.pin_id)
23 """Read the ADC and return the value"""
24 return rp2040_u2if.adc_get_value(self.pin_id) << 4
26 # pylint: disable=no-self-use
28 def value(self, value):
29 # emulate what CircuitPython does
30 raise AttributeError("'AnalogIn' object has no attribute 'value'")
32 # pylint: enable=no-self-use
38 class AnalogIn_Pico(AnalogIn):
39 """AnalogIn Base Class for Pico u2if"""
41 def __init__(self, pin):
42 # per their pinout, why only two?
43 if pin.id not in (26, 27):
44 raise ValueError("Pin does not support ADC.")
48 class AnalogIn_Feather(AnalogIn):
49 """AnalogIn Base Class for Feather u2if"""
51 def __init__(self, pin):
52 if pin.id not in (26, 27, 28):
53 raise ValueError("Pin does not support ADC.")
57 class AnalogIn_QTPY(AnalogIn):
58 """AnalogIn Base Class for QT Py 2040 u2if"""
60 def __init__(self, pin):
61 if pin.id not in (26, 27, 28):
62 raise ValueError("Pin does not support ADC.")
66 class AnalogIn_ItsyBitsy(AnalogIn):
67 """AnalogIn Base Class for ItsyBitsy 2040 u2if"""
69 def __init__(self, pin):
70 if pin.id not in (26, 27, 28):
71 raise ValueError("Pin does not support ADC.")