Files
HidSliders/ControlMixerPython/key_interface.py

41 lines
1.1 KiB
Python

import board
import busio
import digitalio
from adafruit_mcp230xx.mcp23017 import MCP23017
class KeyInterface:
_MCP23017_OLATA = 0x14
_MCP23017_OLATB = 0x15
def set_olata(self, val: int):
self.mcp._write_u8(self._MCP23017_OLATA, val)
def set_olatb(self, val: int):
self.mcp._write_u8(self._MCP23017_OLATB, val)
def __init__(self, i2c):
self._i2c = i2c
# Turn on MCP
self._mcp_reset_pin = digitalio.DigitalInOut(board.D4)
self._mcp_reset_pin.direction = digitalio.Direction.OUTPUT
self._mcp_reset_pin.value = True
# Initialize MCP
self.mcp = MCP23017(self._i2c)
# Set up MCP pins
self.mcp.iodirb = 255 # GPIO B (rows) all input
self.mcp.ipolb = 255 # GPIO B inverted polarity
self.mcp.gppub = 255 # GPIO B all pulled up
self.set_olata(0) # GPIO A all output low
def scan(self):
result = []
for i in range(0, 6):
self.mcp.iodira = 0xFF ^ (0x01 << i)
result.append(self.mcp.gpiob)
self.mcp.iodira = 0xFF
return result