我不能在Toit代码中导入hc_sr04。我得到了错误:Package for prefix 'rmt' not found。如何解决rmt导入问题?
我已经安装了hc_sr04软件包。
$ toit pkg install github.com/lask/toit-hc-sr04@2.0.0我尝试在代码中导入它:main.toit
import hc_sr04
main:
print "Start"当我运行它时,我得到了错误:Package for prefix 'rmt' not found
$ toit run --device <UUID> main.toit
<pkg:toit-hc-sr04>/driver.toit:1:8: error: Package for prefix 'rmt' not found
import rmt
^~~
<pkg:toit-hc-sr04>/driver.toit:41:14: error: Unresolved type: 'Channel'
echo_ /rmt.Channel
^~~~~~~
<pkg:toit-hc-sr04>/driver.toit:42:17: error: Unresolved type: 'Channel'
trigger_ /rmt.Channel
^~~~~~~
<pkg:toit-hc-sr04>/driver.toit:45:21: error: Unresolved type: 'Signals'
rmt_signals_ /rmt.Signals
^~~~~~~
<pkg:toit-hc-sr04>/driver.toit:56:20: error: Unresolved identifier: 'Channel'
trigger_ = rmt.Channel trigger --output --idle_level=0
^~~~~~~
<pkg:toit-hc-sr04>/driver.toit:57:17: error: Unresolved identifier: 'Channel'
echo_ = rmt.Channel echo --input
^~~~~~~
<pkg:toit-hc-sr04>/driver.toit:62:24: error: Unresolved identifier: 'Signals'
rmt_signals_ = rmt.Signals 1
^~~~~~~
Compilation failed.$ toit version
+---------+------------+
| VERSION | DATE |
+---------+------------+
| v1.20.1 | 2022-05-03 |
+---------+------------+package.yamldependencies:
hc_sr04:
url: github.com/lask/toit-hc-sr04
version: ^2.0.0发布于 2022-05-31 16:15:49
这似乎是包管理器中的一个bug。
hc-sr04包依赖于sdk环境^2.0.0-alpha.1。但是,您正在使用v1.20.1运行。
理论上,包管理器不应该给您这个包,而是一个不需要这个环境的旧版本。也就是说,看起来旧的hc-sr04包也需要RMT (ESP32 32的远程控制外围设备)。
如何修复:
hc-sr04驱动程序,而不使用RMT.。
我最近这样做是作为一项练习:
// Distributed under BSD0. (see my profile).
import gpio
TRIGGER ::= 21 // Change to your trigger pin.
ECHO ::= 22 // Change to your echo pin.
measure_distance trigger echo:
trigger_start := Time.monotonic_us
trigger.set 1
while Time.monotonic_us < trigger_start + 10:
// Do nothing while waiting for the 10us.
trigger.set 0
while echo.get != 1: null
echo_start := Time.monotonic_us
while echo.get == 1: null
echo_end := Time.monotonic_us
diff := echo_end - echo_start
return diff / 58
main:
trigger := gpio.Pin TRIGGER --output
echo := gpio.Pin ECHO --input
while true:
print "measured $(measure_distance trigger echo)cm"
sleep --ms=50这段代码不像基于RMT的代码那么精确,但也不错。
https://stackoverflow.com/questions/72450731
复制相似问题