Commit 8a55dce6 authored by Olivier Kaufmann's avatar Olivier Kaufmann
Browse files

Adds switch_on in mux_2024

Showing with 68 additions and 0 deletions
+68 -0
{"(1, A)": {"TCA_address": null, "TCA_channel": 0, "MCP_address": "0x22", "MCP_GPIO": 0}, "(2, A)": {"TCA_address": null, "TCA_channel": 0, "MCP_address": "0x22", "MCP_GPIO": 1}, "(3, A)": {"TCA_address": null, "TCA_channel": 0, "MCP_address": "0x22", "MCP_GPIO": 2}, "(4, A)": {"TCA_address": null, "TCA_channel": 0, "MCP_address": "0x22", "MCP_GPIO": 3}, "(5, A)": {"TCA_address": null, "TCA_channel": 0, "MCP_address": "0x22", "MCP_GPIO": 4}, "(6, A)": {"TCA_address": null, "TCA_channel": 0, "MCP_address": "0x22", "MCP_GPIO": 5}, "(7, A)": {"TCA_address": null, "TCA_channel": 0, "MCP_address": "0x22", "MCP_GPIO": 6}, "(8, A)": {"TCA_address": null, "TCA_channel": 0, "MCP_address": "0x22", "MCP_GPIO": 7}, "(1, B)": {"TCA_address": null, "TCA_channel": 0, "MCP_address": "0x22", "MCP_GPIO": 8}, "(2, B)": {"TCA_address": null, "TCA_channel": 0, "MCP_address": "0x22", "MCP_GPIO": 9}, "(3, B)": {"TCA_address": null, "TCA_channel": 0, "MCP_address": "0x22", "MCP_GPIO": 10}, "(4, B)": {"TCA_address": null, "TCA_channel": 0, "MCP_address": "0x22", "MCP_GPIO": 11}, "(5, B)": {"TCA_address": null, "TCA_channel": 0, "MCP_address": "0x22", "MCP_GPIO": 12}, "(6, B)": {"TCA_address": null, "TCA_channel": 0, "MCP_address": "0x22", "MCP_GPIO": 13}, "(7, B)": {"TCA_address": null, "TCA_channel": 0, "MCP_address": "0x22", "MCP_GPIO": 14}, "(8, B)": {"TCA_address": null, "TCA_channel": 0, "MCP_address": "0x22", "MCP_GPIO": 15}, "(8, M)": {"TCA_address": null, "TCA_channel": 0, "MCP_address": "0x23", "MCP_GPIO": 0}, "(7, M)": {"TCA_address": null, "TCA_channel": 0, "MCP_address": "0x23", "MCP_GPIO": 1}, "(6, M)": {"TCA_address": null, "TCA_channel": 0, "MCP_address": "0x23", "MCP_GPIO": 2}, "(5, M)": {"TCA_address": null, "TCA_channel": 0, "MCP_address": "0x23", "MCP_GPIO": 3}, "(4, M)": {"TCA_address": null, "TCA_channel": 0, "MCP_address": "0x23", "MCP_GPIO": 4}, "(3, M)": {"TCA_address": null, "TCA_channel": 0, "MCP_address": "0x23", "MCP_GPIO": 5}, "(2, M)": {"TCA_address": null, "TCA_channel": 0, "MCP_address": "0x23", "MCP_GPIO": 6}, "(1, M)": {"TCA_address": null, "TCA_channel": 0, "MCP_address": "0x23", "MCP_GPIO": 7}, "(8, N)": {"TCA_address": null, "TCA_channel": 0, "MCP_address": "0x23", "MCP_GPIO": 8}, "(7, N)": {"TCA_address": null, "TCA_channel": 0, "MCP_address": "0x23", "MCP_GPIO": 9}, "(6, N)": {"TCA_address": null, "TCA_channel": 0, "MCP_address": "0x23", "MCP_GPIO": 10}, "(5, N)": {"TCA_address": null, "TCA_channel": 0, "MCP_address": "0x23", "MCP_GPIO": 11}, "(4, N)": {"TCA_address": null, "TCA_channel": 0, "MCP_address": "0x23", "MCP_GPIO": 12}, "(3, N)": {"TCA_address": null, "TCA_channel": 0, "MCP_address": "0x23", "MCP_GPIO": 13}, "(2, N)": {"TCA_address": null, "TCA_channel": 0, "MCP_address": "0x23", "MCP_GPIO": 14}, "(1, N)": {"TCA_address": null, "TCA_channel": 0, "MCP_address": "0x23", "MCP_GPIO": 15}}
from OhmPi.config import HARDWARE_CONFIG
import os
from OhmPi.hardware_components import MuxAbstract
import adafruit_tca9548a # noqa
from adafruit_mcp230xx.mcp23017 import MCP23017 # noqa
from digitalio import Direction # noqa
MUX_CONFIG = HARDWARE_CONFIG['mux']
class Mux(MuxAbstract):
def __init__(self, **kwargs):
kwargs.update({'board_name': os.path.basename(__file__).rstrip('.py')})
super().__init__(**kwargs)
self.max_elec = MUX_CONFIG['max_elec']
print(os.path.curdir)
if self._addresses is None and 'addresses' in MUX_CONFIG.keys():
self._get_addresses(MUX_CONFIG['addresses'])
def reset(self):
pass
def switch_one(self, elec=None, role=None, state=None):
MuxAbstract.switch_one(self, elec=elec, role=role, state=state)
def set_relay_state(mcp, mcp_pin, state=True):
pin_enable = mcp.get_pin(mcp_pin)
pin_enable.direction = Direction.OUTPUT
pin_enable.value = state
d = self._addresses[elec, role]
if d['TCA_address'] is None:
tca = self.controller.bus
else:
tca = adafruit_tca9548a.TCA9548A(self.controller.bus, d['TCA_address'])[d['TCA_channel']]
mcp = MCP23017(tca, address=d['MCP_address'])
if state == 'on':
print('opening gpio nr', d['MCP_GPIO'])
print('opening electrode nr', elec)
print('opening role', role)
print('opening MCP', d['MCP_address'])
set_relay_state(mcp, d['MCP_GPIO'], True)
if state == 'off':
set_relay_state(mcp, d['MCP_GPIO'], False)
# self.tca = adafruit_tca9548a.TCA9548A(i2c, self.addresses[role])
# # find I2C address of the electrode and corresponding relay
# # considering that one MCP23017 can cover 16 electrodes
# i2c_address = 7 - (elec - 1) // 16 # quotient without rest of the division
# relay = (elec - 1) - ((elec - 1) // 16) * 16
#
# if i2c_address is not None:
# # select the MCP23017 of the selected MUX board
# mcp = MCP23017(self.tca[i2c_address])
# mcp.get_pin(relay - 1).direction = digitalio.Direction.OUTPUT
# if state == 'on':
# mcp.get_pin(relay - 1).value = True
# else:
# mcp.get_pin(relay - 1).value = False
# # exec_logger.debug(f'Switching relay {relay} '
# # f'({str(hex(self.addresses[role]))}) on:{on} for electrode {elec}')
# else:
# raise ValueError('No I2C address found for the electrode'
# ' {:d} on board {:s}'.format(elec, self.addresses[role]))
# # exec_logger.warning(f'Unable to address electrode nr {elec}')
def test(self, *args):
MuxAbstract.test(self, *args)
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment