예제 #1
0
    def configure(self, baudrate=100000, polarity=0, phase=0, bits=8):
        if detector.board.any_raspberry_pi:
            from adafruit_blinka.microcontroller.bcm283x.pin import Pin
            from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
        elif detector.board.any_beaglebone:
            from adafruit_blinka.microcontroller.am335x.pin import Pin
            from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
        elif board_id == ap_board.ORANGE_PI_PC:
            from adafruit_blinka.microcontroller.allwinner_h3.pin import Pin
            from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
        elif board_id == ap_board.GIANT_BOARD:
            from adafruit_blinka.microcontroller.sama5.pin import Pin
            from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
        else:
            from machine import SPI as _SPI
            from machine import Pin

        if self._locked:
            # TODO check if #init ignores MOSI=None rather than unsetting, to save _pinIds attribute
            self._spi.init(baudrate=baudrate,
                           polarity=polarity,
                           phase=phase,
                           bits=bits,
                           firstbit=_SPI.MSB,
                           sck=Pin(self._pins[0].id),
                           mosi=Pin(self._pins[1].id),
                           miso=Pin(self._pins[2].id))
        else:
            raise RuntimeError("First call try_lock()")
예제 #2
0
    def configure(self, baudrate=100000, polarity=0, phase=0, bits=8):
        if detector.board.any_raspberry_pi or detector.board.any_raspberry_pi_40_pin:
            from adafruit_blinka.microcontroller.bcm283x.pin import Pin
            from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
        elif detector.board.any_beaglebone:
            from adafruit_blinka.microcontroller.am335x.pin import Pin
            from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
        elif board_id == ap_board.ORANGE_PI_PC or board_id == ap_board.ORANGE_PI_R1 or board_id == ap_board.ORANGE_PI_ZERO:
            from adafruit_blinka.microcontroller.allwinner.h3.pin import Pin
            from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
        elif board_id == ap_board.GIANT_BOARD:
            from adafruit_blinka.microcontroller.sama5.pin import Pin
            from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
        elif board_id == ap_board.CORAL_EDGE_TPU_DEV:
            from adafruit_blinka.microcontroller.nxp_imx8m.pin import Pin
            from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
        elif board_id == ap_board.ODROID_C2:
            from adafruit_blinka.microcontroller.amlogic.s905.pin import Pin
            from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
        elif board_id == ap_board.DRAGONBOARD_410C:
            from adafruit_blinka.microcontroller.snapdragon.apq8016.pin import Pin
            from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
        elif board_id == ap_board.JETSON_NANO:
            from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
            from adafruit_blinka.microcontroller.tegra.t210.pin import Pin
        elif board_id == ap_board.JETSON_TX1:
            from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
            from adafruit_blinka.microcontroller.tegra.t210.pin import Pin
        elif board_id == ap_board.JETSON_TX2:
            from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
            from adafruit_blinka.microcontroller.tegra.t186.pin import Pin
        elif board_id == ap_board.JETSON_XAVIER:
            from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
            from adafruit_blinka.microcontroller.tegra.t194.pin import Pin
        elif detector.board.ftdi_ft232h:
            from adafruit_blinka.microcontroller.ft232h.spi import SPI as _SPI
            from adafruit_blinka.microcontroller.ft232h.pin import Pin
        elif detector.board.binho_nova:
            from adafruit_blinka.microcontroller.nova.spi import SPI as _SPI
            from adafruit_blinka.microcontroller.nova.pin import Pin
        elif board_id == ap_board.PINE64 or board_id == ap_board.PINEBOOK or board_id == ap_board.PINEPHONE:
            from adafruit_blinka.microcontroller.allwinner.a64.pin import Pin
            from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
        else:
            from machine import SPI as _SPI
            from machine import Pin

        if self._locked:
            # TODO check if #init ignores MOSI=None rather than unsetting, to save _pinIds attribute
            self._spi.init(baudrate=baudrate,
                           polarity=polarity,
                           phase=phase,
                           bits=bits,
                           firstbit=_SPI.MSB,
                           sck=Pin(self._pins[0].id),
                           mosi=Pin(self._pins[1].id),
                           miso=Pin(self._pins[2].id))
        else:
            raise RuntimeError("First call try_lock()")
예제 #3
0
    def __init__(
        self,
        pixel_count,
        gpio_pin,
        pixel_order
    ):
        """
        Create a new controller for the WS2801 based lights

        Arguments:
            pixel_count {int} -- The total number of neopixels.
            gpio_pin {int} -- The GPIO pin the WS281x data pin is on. This is IO addressing, NOT physical addressing.
            pixel_order {str} -- The RGB or GRB order that colors are provided in.
        """

        super().__init__(pixel_count)

        if not local_debug.is_debug():
            from adafruit_blinka.microcontroller.bcm283x.pin import Pin

            self.__leds__ = neopixel.NeoPixel(
                Pin(gpio_pin),  # board.D18, #gpio_pin,
                pixel_count,
                auto_write=False,
                pixel_order=pixel_order)

            # Clear all the pixels to turn them off.
            self.set_all([0, 0, 0])
예제 #4
0
 def __init__(self, pin):
     self._pin = Pin(pin.id)
     self.direction = Direction.INPUT
예제 #5
0
class DigitalInOut(ContextManaged):
    _pin = None

    def __init__(self, pin):
        self._pin = Pin(pin.id)
        self.direction = Direction.INPUT

    def switch_to_output(self, value=False, drive_mode=DriveMode.PUSH_PULL):
        self.direction = Direction.OUTPUT
        self.value = value
        self.drive_mode = drive_mode

    def switch_to_input(self, pull=None):
        self.direction = Direction.INPUT
        self.pull = pull

    def deinit(self):
        del self._pin

    @property
    def direction(self):
        return self.__direction

    @direction.setter
    def direction(self, dir):
        self.__direction = dir
        if dir is Direction.OUTPUT:
            self._pin.init(mode=Pin.OUT)
            self.value = False
            self.drive_mode = DriveMode.PUSH_PULL
        elif dir is Direction.INPUT:
            self._pin.init(mode=Pin.IN)
            self.pull = None
        else:
            raise AttributeError("Not a Direction")

    @property
    def value(self):
        return self._pin.value() is 1

    @value.setter
    def value(self, val):
        if self.direction is Direction.OUTPUT:
            self._pin.value(1 if val else 0)
        else:
            raise AttributeError("Not an output")

    @property
    def pull(self):
        if self.direction is Direction.INPUT:
            return self.__pull
        else:
            raise AttributeError("Not an input")

    @pull.setter
    def pull(self, pul):
        if self.direction is Direction.INPUT:
            self.__pull = pul
            if pul is Pull.UP:
                self._pin.init(mode=Pin.IN, pull=Pin.PULL_UP)
            elif pul is Pull.DOWN:
                if hasattr(Pin, "PULL_DOWN"):
                    self._pin.init(mode=Pin.IN, pull=Pin.PULL_DOWN)
                else:
                    raise NotImplementedError("{} unsupported on {}".format(
                        Pull.DOWN, board_id))
            elif pul is None:
                self._pin.init(mode=Pin.IN, pull=None)
            else:
                raise AttributeError("Not a Pull")
        else:
            raise AttributeError("Not an input")

    @property
    def drive_mode(self):
        if self.direction is Direction.OUTPUT:
            return self.__drive_mode  #
        else:
            raise AttributeError("Not an output")

    @drive_mode.setter
    def drive_mode(self, mod):
        self.__drive_mode = mod
        if mod is DriveMode.OPEN_DRAIN:
            self._pin.init(mode=Pin.OPEN_DRAIN)
        elif mod is DriveMode.PUSH_PULL:
            self._pin.init(mode=Pin.OUT)
예제 #6
0
class DigitalInOut(ContextManaged):
    """DigitalInOut CircuitPython compatibility implementation"""

    _pin = None

    def __init__(self, pin):
        self._pin = Pin(pin.id)
        self.direction = Direction.INPUT

    def switch_to_output(self, value=False, drive_mode=DriveMode.PUSH_PULL):
        """Switch the Digital Pin Mode to Output"""
        self.direction = Direction.OUTPUT
        self.value = value
        self.drive_mode = drive_mode

    def switch_to_input(self, pull=None):
        """Switch the Digital Pin Mode to Input"""
        self.direction = Direction.INPUT
        self.pull = pull

    def deinit(self):
        """Deinitialize the Digital Pin"""
        del self._pin

    @property
    def direction(self):
        """Get or Set the Digital Pin Direction"""
        return self.__direction

    @direction.setter
    def direction(self, value):
        self.__direction = value
        if value is Direction.OUTPUT:
            self._pin.init(mode=Pin.OUT)
            self.value = False
            self.drive_mode = DriveMode.PUSH_PULL
        elif value is Direction.INPUT:
            self._pin.init(mode=Pin.IN)
            self.pull = None
        else:
            raise AttributeError("Not a Direction")

    @property
    def value(self):
        """Get or Set the Digital Pin Value"""
        return self._pin.value() == 1

    @value.setter
    def value(self, val):
        if self.direction is Direction.OUTPUT:
            self._pin.value(1 if val else 0)
        else:
            raise AttributeError("Not an output")

    @property
    def pull(self):
        """Get or Set the Digital Pin Direction"""
        if self.direction is Direction.INPUT:
            return self.__pull
        raise AttributeError("Not an input")

    @pull.setter
    def pull(self, pul):
        if self.direction is Direction.INPUT:
            self.__pull = pul
            if pul is Pull.UP:
                self._pin.init(mode=Pin.IN, pull=Pin.PULL_UP)
            elif pul is Pull.DOWN:
                if hasattr(Pin, "PULL_DOWN"):
                    self._pin.init(mode=Pin.IN, pull=Pin.PULL_DOWN)
                else:
                    raise NotImplementedError("{} unsupported on {}".format(
                        Pull.DOWN, board_id))
            elif pul is None:
                self._pin.init(mode=Pin.IN, pull=None)
            else:
                raise AttributeError("Not a Pull")
        else:
            raise AttributeError("Not an input")

    @property
    def drive_mode(self):
        """Get or Set the Digital Pin Drive Mode"""
        if self.direction is Direction.OUTPUT:
            return self.__drive_mode  #
        raise AttributeError("Not an output")

    @drive_mode.setter
    def drive_mode(self, mod):
        self.__drive_mode = mod
        if mod is DriveMode.OPEN_DRAIN:
            self._pin.init(mode=Pin.OPEN_DRAIN)
        elif mod is DriveMode.PUSH_PULL:
            self._pin.init(mode=Pin.OUT)
예제 #7
0
    def configure(self, baudrate=100000, polarity=0, phase=0, bits=8):
        """Update the configuration"""
        if detector.board.any_raspberry_pi or detector.board.any_raspberry_pi_40_pin:
            from adafruit_blinka.microcontroller.bcm283x.pin import Pin
            from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
        elif detector.board.any_beaglebone:
            from adafruit_blinka.microcontroller.am335x.pin import Pin
            from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
        elif detector.board.any_orange_pi and detector.chip.id == ap_chip.SUN8I:
            from adafruit_blinka.microcontroller.allwinner.h3.pin import Pin
            from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
        elif board_id == ap_board.GIANT_BOARD:
            from adafruit_blinka.microcontroller.sama5.pin import Pin
            from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
        elif board_id == ap_board.CORAL_EDGE_TPU_DEV:
            from adafruit_blinka.microcontroller.nxp_imx8m.pin import Pin
            from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
        elif board_id == ap_board.ODROID_C2:
            from adafruit_blinka.microcontroller.amlogic.s905.pin import Pin
            from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
        elif board_id == ap_board.ODROID_C4:
            from adafruit_blinka.microcontroller.amlogic.s905x3.pin import Pin
            from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
        elif board_id == ap_board.ODROID_XU4:
            from adafruit_blinka.microcontroller.samsung.exynos5422.pin import Pin
            from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
        elif board_id == ap_board.DRAGONBOARD_410C:
            from adafruit_blinka.microcontroller.snapdragon.apq8016.pin import Pin
            from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
        elif board_id == ap_board.JETSON_NANO:
            from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
            from adafruit_blinka.microcontroller.tegra.t210.pin import Pin
        elif board_id == ap_board.JETSON_TX1:
            from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
            from adafruit_blinka.microcontroller.tegra.t210.pin import Pin
        elif board_id == ap_board.JETSON_TX2:
            from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
            from adafruit_blinka.microcontroller.tegra.t186.pin import Pin
        elif board_id == ap_board.JETSON_XAVIER:
            from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
            from adafruit_blinka.microcontroller.tegra.t194.pin import Pin
        elif board_id == ap_board.JETSON_NX:
            from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
            from adafruit_blinka.microcontroller.tegra.t194.pin import Pin
        elif detector.board.ROCK_PI_S:
            from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
            from adafruit_blinka.microcontroller.rockchip.rk3308.pin import Pin
        elif detector.board.SIFIVE_UNLEASHED:
            from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
            from adafruit_blinka.microcontroller.hfu540.pin import Pin
        elif detector.board.ftdi_ft232h:
            from adafruit_blinka.microcontroller.ft232h.spi import SPI as _SPI
            from adafruit_blinka.microcontroller.ft232h.pin import Pin
        elif detector.board.binho_nova:
            from adafruit_blinka.microcontroller.nova.spi import SPI as _SPI
            from adafruit_blinka.microcontroller.nova.pin import Pin
        elif detector.board.greatfet_one:
            from adafruit_blinka.microcontroller.nxp_lpc4330.spi import SPI as _SPI
            from adafruit_blinka.microcontroller.nxp_lpc4330.pin import Pin
        elif board_id in (ap_board.PINE64, ap_board.PINEBOOK, ap_board.PINEPHONE):
            from adafruit_blinka.microcontroller.allwinner.a64.pin import Pin
            from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
        elif board_id == ap_board.CLOCKWORK_CPI3:
            from adafruit_blinka.microcontroller.allwinner.a33.pin import Pin
            from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
        elif board_id == ap_board.ONION_OMEGA2:
            from adafruit_blinka.microcontroller.mips24kec.pin import Pin
            from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
        else:
            from machine import SPI as _SPI
            from machine import Pin

        if self._locked:
            # TODO check if #init ignores MOSI=None rather than unsetting, to save _pinIds attribute
            self._spi.init(
                baudrate=baudrate,
                polarity=polarity,
                phase=phase,
                bits=bits,
                firstbit=_SPI.MSB,
                sck=Pin(self._pins[0].id),
                mosi=Pin(self._pins[1].id),
                miso=Pin(self._pins[2].id),
            )
        else:
            raise RuntimeError("First call try_lock()")
예제 #8
0
        elif board_id == ap_board.DRAGONBOARD_410C:
            from adafruit_blinka.microcontroller.snapdragon.apq8016.pin import Pin
            from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
        else:
            from machine import SPI as _SPI
            from machine import Pin

        if self._locked:
            # TODO check if #init ignores MOSI=None rather than unsetting, to save _pinIds attribute
            self._spi.init(
                baudrate=baudrate,
                polarity=polarity,
                phase=phase,
                bits=bits,
                firstbit=_SPI.MSB,
                sck=Pin(self._pins[0].id),
                mosi=Pin(self._pins[1].id),
                miso=Pin(self._pins[2].id)
            )
        else:
            raise RuntimeError("First call try_lock()")

    def deinit(self):
        self._spi = None
        self._pinIds = None

    def write(self, buf, start=0, end=None):
        return self._spi.write(buf, start, end)

    def readinto(self, buf, start=0, end=None, write_value=0):
        return self._spi.readinto(buf, start, end, write_value=write_value)
예제 #9
0
 def __init__(self, id: int, name: str, pin: int):
     super().__init__(id, name)
     self._dht22 = adafruit_dht.DHT22(Pin(pin), use_pulseio=False)
예제 #10
0
"""Broadcom BCM2711 pin names"""
import RPi.GPIO as GPIO
from adafruit_blinka.microcontroller.bcm283x.pin import Pin

GPIO.setmode(GPIO.BCM)  # Use BCM pins D4 = GPIO #4
GPIO.setwarnings(False)  # shh!

D0 = Pin(0)
D1 = Pin(1)

D2 = Pin(2)
SDA = Pin(2)
D3 = Pin(3)
SCL = Pin(3)

D4 = Pin(4)
D5 = Pin(5)
D6 = Pin(6)

D7 = Pin(7)
CE1 = Pin(7)
D8 = Pin(8)
CE0 = Pin(8)
D9 = Pin(9)
MISO = Pin(9)
D10 = Pin(10)
MOSI = Pin(10)
D11 = Pin(11)
SCLK = Pin(11)  # Raspberry Pi naming
SCK = Pin(11)  # CircuitPython naming
예제 #11
0
 def __init__(self, pin, _control):
     self._pin = Pin(control=_control, pin_id=pin.id)
     self.direction = Direction.INPUT