From 3fd69f84349720a1f4564ae0af543e4d470f6b68 Mon Sep 17 00:00:00 2001 From: Arnaud Watlet <arnaud.watlet@umons.ac.be> Date: Wed, 29 Mar 2023 16:20:37 +0200 Subject: [PATCH] Refactors MCPIHM and adds mcp_board_addr in config --- config.py | 3 ++- ohmpi.py | 39 ++++++++++++++++++++------------------- 2 files changed, 22 insertions(+), 20 deletions(-) diff --git a/config.py b/config.py index 17e03a76..c4dd2894 100644 --- a/config.py +++ b/config.py @@ -22,7 +22,8 @@ OHMPI_CONFIG = { 'max_elec': 64, 'board_addresses': {'A': 0x73, 'B': 0x72, 'M': 0x71, 'N': 0x70}, # CHECK IF YOUR BOARDS HAVE THESE ADDRESSES 'settings': 'ohmpi_settings.json', # INSERT YOUR FAVORITE SETTINGS FILE HERE - 'board_version': 'mb.2023.0.0'#,'22.10' + 'board_version': 'mb.2023.0.0',#,'22.10', + 'mcp_board_address': '0x20' } # TODO: add a dictionary with INA models and associated gain values # SET THE LOGGING LEVELS, MQTT BROKERS AND MQTT OPTIONS ACCORDING TO YOUR NEEDS diff --git a/ohmpi.py b/ohmpi.py index 93290116..ca413909 100644 --- a/ohmpi.py +++ b/ohmpi.py @@ -118,8 +118,8 @@ class OhmPi(object): self.i2c = busio.I2C(board.SCL, board.SDA) # noqa # I2C connexion to MCP23008, for current injection - self.MCPIHM = MCP23008(self.i2c, address=0x24) - self.pin4 = self.MCPIHM.get_pin(4) # Ohmpi_run + self.mcp_board = MCP23008(self.i2c, address=self.mcp_board_address) + self.pin4 = self.mcp_board.get_pin(4) # Ohmpi_run self.pin4.direction = Direction.OUTPUT self.pin4.value = True @@ -133,10 +133,10 @@ class OhmPi(object): # current injection module if self.idps: - self.pin2 = self.MCPIHM.get_pin(2) # dsp + + self.pin2 = self.mcp_board.get_pin(2) # dsp + self.pin2.direction = Direction.OUTPUT self.pin2.value = True - self.pin3 = self.MCPIHM.get_pin(3) # dsp - + self.pin3 = self.mcp_board.get_pin(3) # dsp - self.pin3.direction = Direction.OUTPUT self.pin3.value = True time.sleep(4) @@ -155,10 +155,10 @@ class OhmPi(object): # (last number) 0 is for mA, 3 is for A # injection courant and measure (TODO check if it works, otherwise back in run_measurement()) - self.pin0 = self.MCPIHM.get_pin(0) + self.pin0 = self.mcp_board.get_pin(0) self.pin0.direction = Direction.OUTPUT self.pin0.value = False - self.pin1 = self.MCPIHM.get_pin(1) + self.pin1 = self.mcp_board.get_pin(1) self.pin1.direction = Direction.OUTPUT self.pin1.value = False @@ -305,10 +305,10 @@ class OhmPi(object): volt = 5. # redefined the pin of the mcp (needed when relays are connected) - self.pin0 = self.MCPIHM.get_pin(0) + self.pin0 = self.mcp_board.get_pin(0) self.pin0.direction = Direction.OUTPUT self.pin0.value = False - self.pin1 = self.MCPIHM.get_pin(1) + self.pin1 = self.mcp_board.get_pin(1) self.pin1.direction = Direction.OUTPUT self.pin1.value = False @@ -716,6 +716,7 @@ class OhmPi(object): self.max_elec = OHMPI_CONFIG['max_elec'] # maximum number of electrodes self.board_addresses = OHMPI_CONFIG['board_addresses'] self.board_version = OHMPI_CONFIG['board_version'] + self.mcp_board_address = OHMPI_CONFIG['mcp_board_address'] self.exec_logger.debug(f'OHMPI_CONFIG = {str(OHMPI_CONFIG)}') def read_quad(self, **kwargs): @@ -803,33 +804,33 @@ class OhmPi(object): # as it's run in another thread, it doesn't consider these # and this can lead to short circuit! - self.pin0 = self.MCPIHM.get_pin(0) + self.pin0 = self.mcp_board.get_pin(0) self.pin0.direction = Direction.OUTPUT self.pin0.value = False - self.pin1 = self.MCPIHM.get_pin(1) + self.pin1 = self.mcp_board.get_pin(1) self.pin1.direction = Direction.OUTPUT self.pin1.value = False - self.pin7 = self.MCPIHM.get_pin(7) #IHM on mesaurement + self.pin7 = self.mcp_board.get_pin(7) #IHM on mesaurement self.pin7.direction = Direction.OUTPUT self.pin7.value = False if self.sequence is None : if self.idps: - self.pin2 = self.MCPIHM.get_pin(2) # dsp + + self.pin2 = self.mcp_board.get_pin(2) # dsp + self.pin2.direction = Direction.OUTPUT self.pin2.value = True - self.pin3 = self.MCPIHM.get_pin(3) # dsp - + self.pin3 = self.mcp_board.get_pin(3) # dsp - self.pin3.direction = Direction.OUTPUT self.pin3.value = True time.sleep(5) - self.pin5 = self.MCPIHM.get_pin(5) #IHM on mesaurement + self.pin5 = self.mcp_board.get_pin(5) #IHM on mesaurement self.pin5.direction = Direction.OUTPUT self.pin5.value = True - self.pin6 = self.MCPIHM.get_pin(6) #IHM on mesaurement + self.pin6 = self.mcp_board.get_pin(6) #IHM on mesaurement self.pin6.direction = Direction.OUTPUT self.pin6.value = False - self.pin7 = self.MCPIHM.get_pin(7) #IHM on mesaurement + self.pin7 = self.mcp_board.get_pin(7) #IHM on mesaurement self.pin7.direction = Direction.OUTPUT self.pin7.value = False if self.idps: @@ -1218,11 +1219,11 @@ class OhmPi(object): # call the switch_mux function to switch to the right electrodes self.switch_mux_on(quad) - self.mcp = MCP23008(self.i2c, address=0x24) - self.pin2 = self.MCPIHM.get_pin(2) # dsp - + self.mcp_board = MCP23008(self.i2c, address=self.mcp_board_address) + self.pin2 = self.mcp_board.get_pin(2) # dsp - self.pin2.direction = Direction.OUTPUT self.pin2.value = True - self.pin3 = self.MCPIHM.get_pin(3) # dsp - + self.pin3 = self.mcp_board.get_pin(3) # dsp - self.pin3.direction = Direction.OUTPUT self.pin3.value = True time.sleep (5) -- GitLab