abschlussarbeit/lib/python3.11/site-packages/adafruit_blinka/microcontroller/rp2040_u2if/analogio.py

72 lines
1.9 KiB
Python

# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
#
# SPDX-License-Identifier: MIT
"""
`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)
class AnalogIn_QTPY(AnalogIn):
"""AnalogIn Base Class for QT Py 2040 u2if"""
def __init__(self, pin):
if pin.id not in (26, 27, 28):
raise ValueError("Pin does not support ADC.")
super().__init__(pin)
class AnalogIn_ItsyBitsy(AnalogIn):
"""AnalogIn Base Class for ItsyBitsy 2040 u2if"""
def __init__(self, pin):
if pin.id not in (26, 27, 28):
raise ValueError("Pin does not support ADC.")
super().__init__(pin)