2
  • ev3dev 版本: 4.14.117-ev3dev-2.3.5-ev3
  • ev3dev-lang-python 版本:所有输出dpkg-query -l {python3,micropython}-ev3dev*
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                   Version          Architecture     Description
+++-======================-================-================-=================================================
ii  micropython-ev3dev2    2.1.0            all              Python language bindings for ev3dev for MicroPyth
ii  python3-ev3dev         1.2.0            all              Python language bindings for ev3dev
ii  python3-ev3dev2        2.1.0            all              Python language bindings for ev3dev

问题

我正在尝试以某种方式连接旧版本的HiTechnic NXT Infrared Seeker,部件号 MS1042。我已经能够在这个模块上找到非常少的信息。

背景信息:设备浏览器 -> 传感器显示仅连接了一个传感器(乐高超声波传感器),当此 IR 导引头完全且安全地插入时。设备浏览器 -> 端口 -> ev3-ports:in1(连接超声波传感器的位置) 将 ev3-input-port 显示为驱动程序名称,将 ev3-uart 显示为状态。设备浏览器 -> 端口 -> ev3-ports:in2 (此 IR 搜索器连接的位置)显示 ev3-input-port 作为驱动程序名称,nxt-i2c 作为状态,查看IR 搜索器的文档似乎是正确的。

代码:

#!/usr/bin/env python3

###############
### IMPORTS ###
###############

from ev3dev2.sensor import Sensor
from ev3dev2.motor import LargeMotor, OUTPUT_A, OUTPUT_B, SpeedPercent, MoveTank
from ev3dev2.sensor import INPUT_1, INPUT_2, INPUT_3, INPUT_4, Sensor
from ev3dev2.sensor.lego import UltrasonicSensor
from ev3dev2.led import Leds

left_motor  = LargeMotor(OUTPUT_A)
right_motor = LargeMotor(OUTPUT_B)
us = UltrasonicSensor(INPUT_1)
ir = Sensor(INPUT_2, driver_name='ht-nxt-ir-seek-v2')
ir.mode = 'DC'
us.MODE_US_DIST_CM = 'US_DIST_CM'

while True:
    print(ir.value(0))
    # print( str(us.value()) + " mm")

错误:

Traceback (most recent call last):
  File "/home/robot/Project_3/main.py", line 16, in <module>
    ir = Sensor(INPUT_2, driver_name='ht-nxt-ir-seek-v2')
  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: Sensor(ev3-ports:in2) is not connected.

'ht-nxt-ir-seek-v2' 的变体,例如 v1,删除 v2,seek -> seeker,对我没有任何作用。从根本上说,它无法将设备识别为已连接。我不知道从这里去哪里。编写我自己的驱动程序似乎令人生畏,考虑到该设备以前已被广泛使用,希望没有必要——我只是不确定如何找到这样的驱动程序,或将其集成到 ev3dev/micropython 中。

编辑:这似乎类似于ev3dev GitHub 页面上讨论的关于 UART 而不是 i2c 的问题。但是,我的专业知识还不够先进,无法真正了解正在发生的事情。

编辑 2:您可以在第一次编辑中链接的 GitHub 问题末尾看到此问题的解决方案。

4

0 回答 0