def main(): brick.sound.beep() sens1 = LegoPort(address ='ev3-ports:in1') # which port?? 1,2,3, or 4 #sens2 = LegoPort(address ='ev3-ports:in2') # which port?? 1,2,3, or 4 sens1.mode = 'ev3-analog' #sens2.mode = 'ev3-analog' utime.sleep(0.5) sensor_left=MySensor(Port.S1) # same port as above sensor_right=MySensor(Port.S2) # same port as above left_motor = Motor(Port.A) right_motor = Motor(Port.D) speed = 0 value = 100 while True: left_color = sensor_left.readvalue() right_color = sensor_right.readvalue() print('left sensor is ', left_color) print('right sensor is ', right_color) left_motor.run(speed) right_motor.run(speed)
def main(): sens1 = LegoPort(address='ev3-ports:in4') sens1.mode = 'ev3-analog' utime.sleep(0.5) sensor_left = mySensor(Port.S2) sensor_right = mySensor(Port.S4) i = 1 tot = 0 while i < 5: val1 = sensor_left.readvalue() val2 = sensor_right.readvalue() summer = val1 + val2 avg = summer / 2 tot = avg + tot i = i + 1 errleft = sensor_left.readvalue() - tot / i errright = sensor_right.readvalue() - tot / i tail.dc(60) # differ = 1 # differ1 =adjustMovement(val1,val2, differ) while True: val1 = sensor_left.readvalue() val2 = sensor_right.readvalue() #print(val1 , ',', val2) adjustMovement(val1 - errleft, val2 - errright)
def __init__(self): # Set LEGO port for NXT Temp sensor lego_port = LegoPort(INPUT_2) lego_port.mode = 'other-i2c' sleep(0.5) # Settings for I2C (SMBus(4) for INPUT_2) self.lego_bus = SMBus(4) # LM75 address self.address = NXT_SENSOR_ADDRESS
def __init__(self): # Set LEGO port for Pixy2 on input port 4 lego_port = LegoPort(INPUT_4) lego_port.mode = 'other-i2c' sleep(0.5) # Settings for I2C (SMBus(6) for INPUT_4) self.lego_bus = SMBus(6) # Pixy2 address self.address = 0x54
def __init__(self): # Set LEGO port for arduino i2c lego_port = LegoPort(INPUT_4) lego_port.mode = 'other-i2c' sleep(0.5) # Settings for I2C (SMBus(4) for INPUT_2) self.lego_bus = SMBus(6) # HTU21D address self.address = ARDUINO_ADDRESS
def __init__(self): # Set LEGO port for HTU21D sensor lego_port = LegoPort(INPUT_4) lego_port.mode = 'other-i2c' sleep(0.5) # Settings for I2C (SMBus(4) for INPUT_2) self.lego_bus = SMBus(6) # HTU21D address self.address = 0x40
def __init__(self, address=None, name_pattern=SYSTEM_DEVICE_NAME_CONVENTION, name_exact=False, **kwargs): port = LegoPort(address=address) port.mode = 'uart' port.set_device = 'lego-ev3-ir' super(InfraredSensor, self).__init__(address, name_pattern, name_exact, driver_name='lego-ev3-ir', **kwargs)
def __init__(self, address=None, name_pattern=SYSTEM_DEVICE_NAME_CONVENTION, name_exact=False, **kwargs): port = LegoPort(address=address) port.mode = 'analog' port.set_device = 'lego-ev3-touch' time.sleep(3) super(TouchMuxed, self).__init__(address, name_pattern, name_exact, driver_name=['lego-ev3-touch', 'lego-nxt-touch'], **kwargs)
def main(): brick.sound.beep() sens = LegoPort(address='ev3-ports:in1') # which port?? 1,2,3, or 4 sens.mode = 'ev3-analog' utime.sleep(0.5) sensor_left = MySensor(Port.S1) # same port as above sensor_right = MySensor(Port.S3) # same port as above robot.drive(0, 0) while True: lightLevel = sensor_left.readvalue() lightLevel2 = sensor_right.readvalue() print('Left', lightLevel, 'Right', lightLevel2) robot.drive(1, control(lightLevel2, lightLevel)) wait(200)
def main(): brick.sound.beep() sens1 = LegoPort(address='ev3-ports:in4') # which port?? 1,2,3, or 4 #sens2 = LegoPort(address ='ev3-ports:in4') # which port?? 1,2,3, or 4 sens1.mode = 'ev3-analog' #sens2.mode = 'ev3-analog' utime.sleep(0.5) sensor_left = MySensor(Port.S4) # same port as above sensor_right = MySensor(Port.S2) # same port as above left_motor = Motor(Port.A) right_motor = Motor(Port.D) speed = 200 Kp = 3 speed = 250 Kd = 0.4 diff = 0 curr_gain = 0.8 last = [0, 0] while True: difflast = diff left_color = sensor_left.readvalue() right_color = sensor_right.readvalue() if last is [0, 0]: last = [left_color, right_color] left_color, right_color = left_color * curr_gain + ( last[0] * (1 - curr_gain)), right_color * curr_gain + (last[1] * (1 - curr_gain)) last = [left_color, right_color] diff = left_color - right_color deriv = diff - difflast # print(diff) # print(deriv) print("Left: {}, Right: {}, Diff: {}".format(left_color, right_color, diff)) controller = ((Kp * diff) + (Kd + deriv)) / 2 left_motor.run(speed + controller) right_motor.run(speed - controller)
def main(): #brick.sound.beep() sens = LegoPort(address='ev3-ports:in1') # which port?? 1,2,3, or 4 sens.mode = 'ev3-analog' utime.sleep(0.5) sensor_left = MySensor(Port.S1) # same port as above sensor_right = MySensor(Port.S3) # same port as above robot.drive(0, 0) while True: lightLevel = sensor_left.readvalue() lightLevel2 = sensor_right.readvalue() print('Left', lightLevel) print('Right', lightLevel2) controller.right = lightLevel2 controller.left = lightLevel robot.drive(50, controller.setangle())
# # ref. https://github.com/ev3dev/ev3dev-lang-python-demo/blob/stretch/platform/brickpi3-motor-and-sensor.py import time, tty, sys from ev3dev2 import list_devices from ev3dev2.port import LegoPort from ev3dev2.motor import OUTPUT_A, LargeMotor, SpeedPercent from ev3dev2.sensor import INPUT_2 from ev3dev2.sensor.lego import Sensor p2 = LegoPort(INPUT_2) # http://docs.ev3dev.org/projects/lego-linux-drivers/en/ev3dev-stretch/brickpi3.html#brickpi3-in-port-modes p2.mode = 'nxt-i2c' # allow for some time for mode to setup time.sleep(0.5) # http://docs.ev3dev.org/projects/lego-linux-drivers/en/ev3dev-stretch/sensors.html#supported-sensors """ https://github.com/ev3dev/ev3dev/issues/640 dlech commented on May 15, 2016 You are forgetting the I2C address for set_device $ echo mx-pps58-nx 0x0C >/sys/class/lego-port/port0/set_device """ # set device name and i2c address (in hex) p2.set_device = 'ms-absolute-imu 0x11'
import time # import sys # import copy # import os # import json logging.basicConfig( level=logging.INFO, format='%(asctime)s:%(levelname)s:%(threadName)s:%(message)s') log = logging.getLogger(__name__) port1 = INPUT_7 port4 = INPUT_8 legoPort1 = LegoPort(port1) legoPort1.mode = 'nxt-i2c' legoPort1.set_device = 'ms-absolute-imu 0x11' # legoPort4 = LegoPort(port4) # legoPort4.mode = 'nxt-i2c' # legoPort4.set_device = 'ms-absolute-imu 0x11' print('Pausing 2 seconds...') time.sleep(2) print('Done, creating sensor class object for {}, {}'.format(port1, port4)) sensor1 = Sensor(address='{}:i2c17'.format(port1)) # sensor4 = Sensor(address='{}:i2c17'.format(INPUT_4)) target_mode = 'ALL' sensor1.mode = target_mode # sensor4.mode = target_mode while True: # log.info('Joint 3 ({}) X/Y/Z angle = {}/{}/{}'.format(INPUT_4, sensor4.value(0), sensor4.value(1), sensor4.value(2)))
from ev3dev2.motor import LargeMotor, OUTPUT_A, OUTPUT_B from ev3dev2.port import LegoPort def limit_speed(speed): """ Limit speed in range [-1000,1000] """ if speed > 1000: speed = 1000 elif speed < -1000: speed = -1000 return speed # Set LEGO port for Pixy on input port 1 in1 = LegoPort(INPUT_1) in1.mode = 'auto' # Wait 2 secs for the port to get ready sleep(2) # Connect Pixy camera pixy = Sensor(INPUT_1) # Set mode to detect signature 1 only pixy.mode = 'SIG1' # Signatures we're interested in (SIG1) sig = 1 # Connect TouchSensor (to stop script) ts = TouchSensor(INPUT_4) # Connect LargeMotors
# 5/10/2021 Ron King initial dev # ref. https://github.com/ev3dev/ev3dev-lang-python-demo/blob/stretch/platform/brickpi3-motor-and-sensor.py import time, tty, sys from ev3dev2 import list_devices from ev3dev2.port import LegoPort from ev3dev2.motor import OUTPUT_A, LargeMotor, SpeedPercent from ev3dev2.sensor import INPUT_4 from ev3dev2.sensor.lego import Sensor p4 = LegoPort(INPUT_4) # http://docs.ev3dev.org/projects/lego-linux-drivers/en/ev3dev-stretch/brickpi3.html#brickpi3-in-port-modes p4.mode = 'ev3-uart' # allow for some time for mode to setup time.sleep(0.5) # http://docs.ev3dev.org/projects/lego-linux-drivers/en/ev3dev-stretch/sensors.html#supported-sensors """ https://github.com/ev3dev/ev3dev/issues/640 dlech commented on May 15, 2016 You are forgetting the I2C address for set_device $ echo mx-pps58-nx 0x0C >/sys/class/lego-port/port0/set_device dmesg -w
# Date Author Change Notes # 3/22/2020 Ron King initial dev # 6/14/2020 Ron King changed to input port 3 with no time limit, IR-PROX mode only # added work-around for bogus intermittent readings of '0' # import time, tty, sys from ev3dev2 import list_devices from ev3dev2.port import LegoPort from ev3dev2.motor import OUTPUT_A, LargeMotor, SpeedPercent from ev3dev2.sensor import INPUT_3 from ev3dev2.sensor.lego import InfraredSensor p3 = LegoPort(INPUT_3) # http://docs.ev3dev.org/projects/lego-linux-drivers/en/ev3dev-stretch/brickpi3.html#brickpi3-in-port-modes p3.mode = 'ev3-uart' # http://docs.ev3dev.org/projects/lego-linux-drivers/en/ev3dev-stretch/sensors.html#supported-sensors p3.set_device = 'lego-ev3-ir' # Connect infrared to any sensor port ir = InfraredSensor(INPUT_3) # allow for some time to load the new drivers time.sleep(0.5) ir.mode = 'IR-PROX' irProxVal = 100 prev_irProxVal = 0 badValCount = 0
# - LEGO LargeMotor connected to port BAM1 # - LEGO LargeMotor connected to port BBM1 # - LEGO LargeMotor connected to port BBM2 # - LEGO MediumMotor connected to port BAM2 # - LEGO TouchSensor connected to port BAS2 # - LEGO TouchSensor connected to port BBS2 # from time import sleep from ev3dev2.port import LegoPort from ev3dev2.motor import Motor, LargeMotor, OUTPUT_D from ev3dev2.sensor.lego import TouchSensor # Configure ports for sensors port_BAS2 = LegoPort('pistorms:BAS2') port_BAS2.mode = 'ev3-analog' port_BBS2 = LegoPort('pistorms:BBS2') port_BBS2.mode = 'ev3-analog' sleep(2) class ExceededRetries(Exception): ''' Custom exception for exceeding retries at Remote I/O error.''' pass def try_except(func): ''' Retry function when Remote I/O error occurs.''' def wrapper(*args, **kwargs): for i in range(10): try:
# 5/31/2021 Ron King - work-around for bogus intermittent readings of '0' (possibly a f/w bug in BrickPi3) # # ref. https://github.com/ev3dev/ev3dev-lang-python-demo/blob/stretch/platform/brickpi3-motor-and-sensor.py import time, tty, sys from ev3dev2 import list_devices from ev3dev2.port import LegoPort from ev3dev2.motor import OUTPUT_A, LargeMotor, SpeedPercent from ev3dev2.sensor import INPUT_2 from ev3dev2.sensor.lego import GyroSensor p2 = LegoPort(INPUT_2) # http://docs.ev3dev.org/projects/lego-linux-drivers/en/ev3dev-stretch/brickpi3.html#brickpi3-in-port-modes p2.mode = 'ev3-uart' # allow for some time for mode to setup time.sleep(0.5) # http://docs.ev3dev.org/projects/lego-linux-drivers/en/ev3dev-stretch/sensors.html#supported-sensors """ https://github.com/ev3dev/ev3dev/issues/640 dlech commented on May 15, 2016 You are forgetting the I2C address for set_device $ echo mx-pps58-nx 0x0C >/sys/class/lego-port/port0/set_device dmesg -w """
1: INPUT_1, 2: INPUT_2, 3: INPUT_3, 4: INPUT_4, } lego_port = portMap.get(port, 'Invalid Port') # EV3 Display lcd = Display() # Connect ToucSensor ts = TouchSensor(INPUT_4) # Set LEGO port for Pixy2 on input port 1 in1 = LegoPort(lego_port) in1.mode = 'other-i2c' # Short wait for the port to get ready sleep(0.5) # Settings for I2C (SMBus(3) for INPUT_1) bus = SMBus(port + 2) # Make sure the same address is set in Pixy2 address = 0x54 # Signatures we're interested in (SIG1) sigs = 255 # Data for requesting block data = [174, 193, 32, 2, sigs, 1] f = open('tmp_camera_data.txt', 'r+', os.O_NONBLOCK)
# Make sure the same address is set in Pixy2 PIXY2_I2C_ADDRESS = 0x54 # Data for requesting block GET_OBJECTS_COMMAND = [174, 193, 32, 2, 255, 255] # Defines all of the LEGO Motor Ports lmA = LargeMotor(OUTPUT_A) lmB = LargeMotor(OUTPUT_B) lmC = LargeMotor(OUTPUT_C) mmD = MediumMotor(OUTPUT_D) # Set LEGO port for Pixy2 on input port 1 in4 = LegoPort(INPUT_4) in4.mode = 'other-i2c' # List of valid three-in-a-rows isValidThreeInARow = [[0, 1, 2], [3, 4, 5], [6, 7, 8], [0, 3, 6], [0, 4, 8], [1, 4, 7], [2, 5, 8], [2, 4, 6]] #Speed of the wheels speed = 10 # number of rotations to pick up a coin pickingUpCoin = -0.16 # lower the claw this number of rotations + extra for each coin to pick up lowerToReachCoin = 0.12 # lower the claw this number of rotations in addition to the above to pick up each coin
# # uses ev3dev2-based code # # Date Author Change Notes # 4/12/2020 Ron King initial dev import time, tty, sys from ev3dev2 import list_devices from ev3dev2.port import LegoPort from ev3dev2.motor import OUTPUT_A, LargeMotor, SpeedPercent from ev3dev2.sensor import INPUT_1 from ev3dev2.sensor.lego import TouchSensor p1 = LegoPort(INPUT_1) # http://docs.ev3dev.org/projects/lego-linux-drivers/en/ev3dev-stretch/brickpi3.html#brickpi3-in-port-modes p1.mode = 'nxt-analog' # http://docs.ev3dev.org/projects/lego-linux-drivers/en/ev3dev-stretch/sensors.html p1.set_device = 'lego-nxt-touch' # Connect infrared to any sensor port ts = TouchSensor(INPUT_1) # allow for some time to load the new drivers time.sleep(0.5) tsVal = False prev_tsVal = False print( "#######################################################################") print(
# Date Author Change Notes # 4/15/2020 Ron King initial dev # ref. https://github.com/ev3dev/ev3dev-lang-python-demo/blob/stretch/platform/brickpi3-motor-and-sensor.py import time, tty, sys from ev3dev2 import list_devices from ev3dev2.port import LegoPort from ev3dev2.motor import OUTPUT_A, LargeMotor, SpeedPercent from ev3dev2.sensor import INPUT_1 from ev3dev2.sensor.lego import Sensor p1 = LegoPort(INPUT_1) # http://docs.ev3dev.org/projects/lego-linux-drivers/en/ev3dev-stretch/brickpi3.html#brickpi3-in-port-modes p1.mode = 'nxt-i2c' # allow for some time for mode to setup time.sleep(0.5) # http://docs.ev3dev.org/projects/lego-linux-drivers/en/ev3dev-stretch/sensors.html#supported-sensors """ https://github.com/ev3dev/ev3dev/issues/640 dlech commented on May 15, 2016 You are forgetting the I2C address for set_device $ echo mx-pps58-nx 0x0C >/sys/class/lego-port/port0/set_device dmesg -w """
def __init__(self, robot_config_file, initRobotConfig, timeStep, odometryTimer=0.1, defaultLogging=30): """ Creates the main bot class. """ if not os.path.exists(robot_config_file): raise ValueError(f'Cannot find configuration file ' f'"{robot_config_file}"') with open(robot_config_file, 'r') as f: self.robotConfiguration = json.load(f) # Adjust JSON just read self.__adjustConfigDict(self.robotConfiguration) # Exception Queue for inter threads exception communications self.exceptionQueue = queue.Queue() self.mqttMoveQueue = queue.Queue() self.baseMovementLock = asyncio.locks.Lock() self.timeStep = timeStep self.powerSupply = PowerSupply() # region sensor Init self.sensors = {} for sensor in self.robotConfiguration["sensors"]: sensorDict = self.robotConfiguration["sensors"][sensor] legoPort = LegoPort(sensorDict["input"]) # Applies to both I2C and SDK controled sensors if legoPort.mode != sensorDict["mode"]: legoPort.mode = sensorDict["mode"] # Only applies to sensors controled by the python SDK if "set_device" in sensorDict: legoPort.set_device = sensorDict["set_device"] time.sleep(1) address = sensorDict["input"] self.sensors[sensor] = sensorDict["sensorType"](address=address) # endregion # base Init self.base = DiffDriveBase(self.robotConfiguration["base"], initRobotConfig, odometryTimer) # arm/endeffector Init self.arm = Arm(armLinkDefinitions=self.robotConfiguration["arm"]) # Other matrix init self.M0e = mr.RpToTrans( R=np.array( self.robotConfiguration["arm"]["arm1"]["manipulatorConfiguration"]["M0e"]["rotationMatrix"]).T, # noqa F501 p=self.robotConfiguration["arm"]["arm1"]["manipulatorConfiguration"]["M0e"]["p"]) # noqa F501 self.Toe_grip = mr.RpToTrans( R=np.array( self.robotConfiguration["arm"]["arm1"]["manipulatorConfiguration"]["Toe_grip"]["rotationMatrix"]).T, # noqa F501 p=self.robotConfiguration["arm"]["arm1"]["manipulatorConfiguration"]["Toe_grip"]["p"]) # noqa F501 self.Tbc = mr.RpToTrans( R=np.array( self.robotConfiguration["cameraConfiguration"]["Tbc"]["rotationMatrix"]).T, # noqa F501 p=self.robotConfiguration["cameraConfiguration"]["Tbc"]["p"]) self.Tcb = mr.TransInv(self.Tbc) # Reset all motors at init self.urgentStop = False log.info(LOGGER_DDR_MAIN, 'Done main robot init.')
tank_pair = MoveTank(OUTPUT_B,OUTPUT_C) steer_pair = MoveSteering(OUTPUT_B,OUTPUT_C) MediumMotor_Claw = MediumMotor(OUTPUT_A) MediumMotor_lift = MediumMotor(OUTPUT_D) sound = Sound() leds = Leds() btn = Button() # Mindstorms EV3-Sensor-Mux connected to EV3 Ultrasonic Sensor, Infrared Sensor and Gyro Sensor -------------------- us_port = LegoPort(address='ev3-ports:in2:i2c80:mux1') ir_port = LegoPort(address='ev3-ports:in2:i2c81:mux2') gyro_port = LegoPort(address='ev3-ports:in2:i2c82:mux3') us_port.mode = 'uart' ir_port.mode = 'uart' gyro_port.mode = 'uart' us_port.set_device = 'lego-ev3-us' ir_port.set_device = 'lego-ev3-ir' gyro_port.set_device = 'lego-ev3-gyro' sleep(2) us = UltrasonicSensor('ev3-ports:in2:i2c80:mux1') ir = InfraredSensor('ev3-ports:in2:i2c81:mux2') gyro = GyroSensor('ev3-ports:in2:i2c82:mux3') us_value = us.value(0) us_dist = us.distance_centimeters # takes multiple measurements
import utime, array from pybricks.ev3devio import Ev3devSensor class EV3Sensor(Ev3devSensor): _ev3dev_driver_name = 'ev3-analog-01' def read(self): self._mode('ANALOG') return self._value(0) # this is a hack to set the mode properly from ev3dev2.port import LegoPort s2 = LegoPort(address='ev3-ports:in2') s2.mode = 'ev3-analog' utime.sleep(1) s3 = LegoPort(address='ev3-ports:in3') s3.mode = 'ev3-analog' utime.sleep(1) # Write your program here brick.sound.beep() # testing # sensor=EV3Sensor(Port.S1) # same port as above # while True: # print(sensor.read()) # wait(2000) # global object declarations
# # Date Author Change Notes # 4/11/2020 Ron King initial dev import time, tty, sys from ev3dev2 import list_devices from ev3dev2.port import LegoPort from ev3dev2.motor import OUTPUT_A, LargeMotor, SpeedPercent from ev3dev2.sensor import INPUT_1 from ev3dev2.sensor.lego import UltrasonicSensor ### Ref: https://github.com/ev3dev/ev3dev-lang-python-demo/blob/stretch/platform/brickpi3-motor-and-sensor.py p1 = LegoPort(INPUT_1) # http://docs.ev3dev.org/projects/lego-linux-drivers/en/ev3dev-stretch/brickpi3.html#brickpi3-in-port-modes p1.mode = 'ev3-uart' # http://docs.ev3dev.org/projects/lego-linux-drivers/en/ev3dev-stretch/sensors.html#supported-sensors p1.set_device = 'lego-ev3-us' # Connect infrared to any sensor port us = UltrasonicSensor(INPUT_1) # allow for some time to load the new drivers time.sleep(0.5) usDistCmVal = 0 prev_usDistCmVal = 0 startTime = time.time() badValCount = 0
from ev3dev2.sensor import INPUT_2 from ev3dev2.sensor.lego import Sensor from ev3dev2.sensor import I2cSensor p2 = LegoPort(INPUT_2) # p2 = LegoPort('spi0.1:S2:i2c1') print("wait 2") # allow for some time to stabilze time.sleep(1) # http://docs.ev3dev.org/projects/lego-linux-drivers/en/ev3dev-stretch/brickpi3.html#brickpi3-in-port-modes print("valid port (p2) modes are...", p2.modes) # p2.mode = 'nxt-i2c' ## this works on most of the other i2c sensors used so far (Ron King, 5/7/2021) p2.mode = 'none' ## setting to 'none' so smbus can access (Ron King, 5/10/2021) print("...port (p2) mode currently set to...", p2.mode) print("") print("wait 3") # allow for some time to stabilze time.sleep(1) # http://docs.ev3dev.org/projects/lego-linux-drivers/en/ev3dev-stretch/sensors.html#supported-sensors """ https://github.com/ev3dev/ev3dev/issues/640 dlech commented on May 15, 2016 You are forgetting the I2C address for set_device $ echo mx-pps58-nx 0x0C >/sys/class/lego-port/port0/set_device
motor B = Right motor """ import time, tty, sys, threading import numpy as np from ev3dev2 import list_devices from ev3dev2.port import LegoPort from ev3dev2.motor import LargeMotor, OUTPUT_A, OUTPUT_B, SpeedPercent, SpeedDPS, MoveTank from ev3dev2.sensor import INPUT_1, INPUT_2, INPUT_3 from ev3dev2.sensor.lego import InfraredSensor, UltrasonicSensor from ev3dev2.sensor.lego import Sensor p1 = LegoPort(INPUT_1) # http://docs.ev3dev.org/projects/lego-linux-drivers/en/ev3dev-stretch/brickpi3.html#brickpi3-in-port-modes p1.mode = 'ev3-uart' # http://docs.ev3dev.org/projects/lego-linux-drivers/en/ev3dev-stretch/sensors.html#supported-sensors p1.set_device = 'lego-ev3-us' # Connect lego-ev3-us to any sensor port us = UltrasonicSensor(INPUT_1) # allow for some time to load the new drivers time.sleep(0.5) usDistCmVal = 0 prev_usDistCmVal = 0 p2 = LegoPort(INPUT_2) # http://docs.ev3dev.org/projects/lego-linux-drivers/en/ev3dev-stretch/brickpi3.html#brickpi3-in-port-modes
print("wait 1") # allow for some time to stabilze time.sleep(3) p2 = LegoPort(INPUT_2) print("valid port (p2) modes are...", p2.modes) print("") print("wait 2") # allow for some time to stabilze time.sleep(3) # http://docs.ev3dev.org/projects/lego-linux-drivers/en/ev3dev-stretch/brickpi3.html#brickpi3-in-port-modes p2.mode = 'nxt-i2c' ## this works on most of the other i2c sensors used so far (Ron King, 5/7/2021) print("wait 3") # allow for some time to stabilze time.sleep(3) # http://docs.ev3dev.org/projects/lego-linux-drivers/en/ev3dev-stretch/sensors.html#supported-sensors """ https://github.com/ev3dev/ev3dev/issues/640 dlech commented on May 15, 2016 You are forgetting the I2C address for set_device $ echo mx-pps58-nx 0x0C >/sys/class/lego-port/port0/set_device dmesg -w