]> Repositories - Adafruit_Blinka-hackapet.git/blob - src/adafruit_blinka/microcontroller/rp2040_u2if/analogio.py
Delete __init__.py
[Adafruit_Blinka-hackapet.git] / src / adafruit_blinka / microcontroller / rp2040_u2if / analogio.py
1 """
2 `analogio` - Analog input and output control
3 =================================================
4 See `CircuitPython:analogio` in CircuitPython for more details.
5 * Author(s): Carter Nelson
6 """
7 from adafruit_blinka import ContextManaged
8 from .rp2040_u2if import rp2040_u2if
9
10
11 class AnalogIn(ContextManaged):
12     """AnalogIn Base Class for RP2040 u2if"""
13
14     def __init__(self, pin):
15         self.pin_id = pin.id
16         rp2040_u2if.adc_init_pin(self.pin_id)
17
18     @property
19     def value(self):
20         """Read the ADC and return the value"""
21         return rp2040_u2if.adc_get_value(self.pin_id) << 4
22
23     # pylint: disable=no-self-use
24     @value.setter
25     def value(self, value):
26         # emulate what CircuitPython does
27         raise AttributeError("'AnalogIn' object has no attribute 'value'")
28
29     # pylint: enable=no-self-use
30
31     def deinit(self):
32         pass
33
34
35 class AnalogIn_Pico(AnalogIn):
36     """AnalogIn Base Class for Pico u2if"""
37
38     def __init__(self, pin):
39         # per their pinout, why only two?
40         if pin.id not in (26, 27):
41             raise ValueError("Pin does not support ADC.")
42         super().__init__(pin)
43
44
45 class AnalogIn_Feather(AnalogIn):
46     """AnalogIn Base Class for Feather u2if"""
47
48     def __init__(self, pin):
49         if pin.id not in (26, 27, 28):
50             raise ValueError("Pin does not support ADC.")
51         super().__init__(pin)
52
53
54 class AnalogIn_QTPY(AnalogIn):
55     """AnalogIn Base Class for QT Py 2040 u2if"""
56
57     def __init__(self, pin):
58         if pin.id not in (26, 27, 28):
59             raise ValueError("Pin does not support ADC.")
60         super().__init__(pin)
61
62
63 class AnalogIn_ItsyBitsy(AnalogIn):
64     """AnalogIn Base Class for ItsyBitsy 2040 u2if"""
65
66     def __init__(self, pin):
67         if pin.id not in (26, 27, 28):
68             raise ValueError("Pin does not support ADC.")
69         super().__init__(pin)