App sync code, handles button presses from mixer and syncs changes from VM. Included python code from the mixer. Some other PCB changes, but still needs improvements
This commit is contained in:
40
ControlMixerPython/key_interface.py
Normal file
40
ControlMixerPython/key_interface.py
Normal file
@@ -0,0 +1,40 @@
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user