X-Git-Url: https://git.ayoreis.com/Adafruit_Blinka-hackapet.git/blobdiff_plain/bd66d6f572f6b6451d62cc6b1d80502b095933ef..ce93b8c59e47b27e025d99f44b7a99c1f3d60b38:/examples/mcps_busio_i2c.py diff --git a/examples/mcps_busio_i2c.py b/examples/mcps_busio_i2c.py index b90bc4c..e4da0f1 100644 --- a/examples/mcps_busio_i2c.py +++ b/examples/mcps_busio_i2c.py @@ -1,47 +1,60 @@ +# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries +# +# SPDX-License-Identifier: MIT import time -import sys -import board -import busio import hid +import busio from adafruit_blinka.microcontroller.mcp2221.mcp2221 import mcp2221 as _mcp2221 from adafruit_blinka.microcontroller.mcp2221.mcp2221 import MCP2221 as _MCP2221 from adafruit_blinka.microcontroller.mcp2221.i2c import I2C as _MCP2221I2C +MLXADDR = 0x33 +ADDRID1 = 0x2407 + -class MCP2221(_MCP2221): +class MCP2221(_MCP2221): # pylint: disable=too-few-public-methods def __init__(self, address): self._hid = hid.device() self._hid.open_path(address) - print("Connected to "+str(address)) + print("Connected to " + str(address)) self._gp_config = [0x07] * 4 # "don't care" initial value for pin in range(4): self.gp_set_mode(pin, self.GP_GPIO) # set to GPIO mode self.gpio_set_direction(pin, 1) # set to INPUT -class MCP2221I2C(_MCP2221I2C): - def __init__(self, mcp2221, *, frequency=1000000): +class MCP2221I2C(_MCP2221I2C): # pylint: disable=too-few-public-methods + def __init__(self, mcp2221, *, frequency=100000): self._mcp2221 = mcp2221 self._mcp2221.i2c_configure(frequency) -class I2C(busio.I2C): - def __init__(self, mcp2221_i2c, *, frequency=1000000): +class I2C(busio.I2C): # pylint: disable=too-few-public-methods + def __init__(self, mcp2221_i2c): self._i2c = mcp2221_i2c -def temp_c(data): - value = data[0] << 8 | data[1] - temp = (value & 0xFFF) / 16.0 - if value & 0x1000: - temp -= 256.0 - return temp +addresses = [mcp["path"] for mcp in hid.enumerate(0x04D8, 0x00DD)] + +i2c_devices = [] +i2c_devices.append(I2C(MCP2221I2C(_mcp2221))) + +for addr in addresses: + try: + i2c_device = I2C(MCP2221I2C(MCP2221(addr))) + i2c_devices.append(i2c_device) + except OSError: + print("Device path: " + str(addr) + " is used") while True: - i2c.writeto(0x18, bytes([0x05]), stop=False) - result = bytearray(2) - i2c.readfrom_into(0x18, result) - print(temp_c(result)) - time.sleep(0.5) + for i2c in i2c_devices: + addrbuf = bytearray(2) + addrbuf[0] = ADDRID1 >> 8 + addrbuf[1] = ADDRID1 & 0xFF + inbuf = bytearray(6) + i2c.writeto_then_readfrom(MLXADDR, addrbuf, inbuf) + print("Device " + str(i2c_devices.index(i2c)) + ": ") + print(inbuf) + time.sleep(0.5)