Я использую VS Code для программирования EV3 на python, но у меня проблемы с подключением инфракрасного датчика к работе

#python #visual-studio-code #ev3

#python #visual-studio-code #lego-mindstorms-ev3

Вопрос:

Код, который я использую, это:

 #!/usr/bin/env python3
from ev3dev2.motor import LargeMotor, MoveSteering, OUTPUT_B, OUTPUT_C, SpeedDPS
from ev3dev2.sensor.lego import InfraredSensor
from sys import stderr
from time import sleep

motorB = LargeMotor(OUTPUT_B)
steer_pair = MoveSteering(OUTPUT_B, OUTPUT_C)
ir = InfraredSensor()

wf = 1
motorB.position = 0
steer_pair.on(steering=0, speed=SpeedDPS(265))
while motorB.position*0.612 < 640:
    if ir.proximity * 0.7 < 23:
        motorB.position = 0
    print(motorB.position*0.612, ir.proximity * 0.7, file = stderr)
    sleep(0.1)
     
steer = 28
rots = -1
steer_pair.on_for_rotations(steering=0, speed=25, rotations=0.5*wf)
steer_pair.on_for_rotations(steering=steer, speed=15, rotations=rots*wf)
steer_pair.on_for_rotations(steering=-steer, speed=15, rotations=rots*wf)
steer_pair.on_for_rotations(steering=0, speed=25, rotations=0.7*wf)
  

Когда я запускаю код, я получаю следующую ошибку:

 Traceback (most recent call last):
  File "/home/robot/part3/self_park_ir.py", line 9, in <module>
    ir = InfraredSensor()
  File "/usr/lib/python3/dist-packages/ev3dev2/sensor/lego.py", line 838, in __init__
    super(InfraredSensor, self).__init__(address, name_pattern, name_exact, driver_name='lego-ev3-ir', **kwargs)
  File "/usr/lib/python3/dist-packages/ev3dev2/sensor/__init__.py", line 78, in __init__
    super(Sensor, self).__init__(self.SYSTEM_CLASS_NAME, name_pattern, name_exact, **kwargs)
  File "/usr/lib/python3/dist-packages/ev3dev2/__init__.py", line 223, in __init__
    chain_exception(DeviceNotFound("%s is not connected." % self), None)
  File "/usr/lib/python3/dist-packages/ev3dev2/__init__.py", line 54, in chain_exception
    raise exception from cause
ev3dev2.DeviceNotFound: InfraredSensor is not connected.
  

Я пытался использовать разные порты и провода, так как это было решением другой возникшей у меня проблемы, но на этот раз это не сработало. Кто-нибудь знает, как это исправить?

Ответ №1:

Я думаю, вам следует назначить входной порт для инфракрасного датчика следующим образом:

из ev3dev2.sensor импорт ВВОДА 1
ir = InfraredSensor (ВХОД 1)

Ответ №2:

Кроме того, несколько советов по оборудованию для точности.

Не подключайте никаких датчиков «горячим подключением»

  • Здесь вы подключаете его, когда устройство уже включено.

Убедитесь, что вы импортируете правильные модули

  • Убедитесь, что у вас есть строка shebang и импортированы правильные модули

Убедитесь, что ваш код EV3DEV соответствует новому коду EV3DEV 2, и у вас есть правильный образ ОС, отображаемый на карте microSD.

  • В противном случае код не будет работать гладко