]> Repositories - Adafruit_Blinka-hackapet.git/blob - examples/mcps_busio_i2c.py
Add redefined classes
[Adafruit_Blinka-hackapet.git] / examples / mcps_busio_i2c.py
1 import time
2 import sys
3 import board
4 import busio
5 import hid
6
7 from adafruit_blinka.microcontroller.mcp2221.mcp2221 import mcp2221 as _mcp2221
8 from adafruit_blinka.microcontroller.mcp2221.mcp2221 import MCP2221 as _MCP2221
9 from adafruit_blinka.microcontroller.mcp2221.i2c import I2C as _MCP2221I2C
10
11
12 class MCP2221(_MCP2221): 
13     def __init__(self, address):
14         self._hid = hid.device()
15         self._hid.open_path(address)
16         print("Connected to "+str(address))
17         self._gp_config = [0x07] * 4  # "don't care" initial value
18         for pin in range(4):
19             self.gp_set_mode(pin, self.GP_GPIO)  # set to GPIO mode
20             self.gpio_set_direction(pin, 1)  # set to INPUT
21
22
23 class MCP2221I2C(_MCP2221I2C):
24     def __init__(self, mcp2221, *, frequency=1000000):
25         self._mcp2221 = mcp2221
26         self._mcp2221.i2c_configure(frequency)
27
28
29 class I2C(busio.I2C):
30     def __init__(self, mcp2221_i2c, *, frequency=1000000):
31         self._i2c = mcp2221_i2c
32
33
34 def temp_c(data):
35     value = data[0] << 8 | data[1]
36     temp = (value & 0xFFF) / 16.0
37     if value & 0x1000:
38         temp -= 256.0
39     return temp
40
41
42 while True:
43     i2c.writeto(0x18, bytes([0x05]), stop=False)
44     result = bytearray(2)
45     i2c.readfrom_into(0x18, result)
46     print(temp_c(result))
47     time.sleep(0.5)