首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Toit:无法导入`hc_sr04`

Toit:无法导入`hc_sr04`
EN

Stack Overflow用户
提问于 2022-05-31 15:47:15
回答 1查看 27关注 0票数 0

我不能在Toit代码中导入hc_sr04。我得到了错误:Package for prefix 'rmt' not found。如何解决rmt导入问题?

我已经安装了hc_sr04软件包。

代码语言:javascript
复制
$ toit pkg install github.com/lask/toit-hc-sr04@2.0.0

我尝试在代码中导入它:main.toit

代码语言:javascript
复制
import hc_sr04


main:
  print "Start"

当我运行它时,我得到了错误:Package for prefix 'rmt' not found

代码语言:javascript
复制
$ 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.

代码语言:javascript
复制
$ toit version
+---------+------------+
| VERSION |    DATE    |
+---------+------------+
| v1.20.1 | 2022-05-03 |
+---------+------------+

  • package.yaml

代码语言:javascript
复制
dependencies:
  hc_sr04:
    url: github.com/lask/toit-hc-sr04
    version: ^2.0.0
EN

回答 1

Stack Overflow用户

发布于 2022-05-31 16:15:49

这似乎是包管理器中的一个bug。

hc-sr04包依赖于sdk环境^2.0.0-alpha.1。但是,您正在使用v1.20.1运行。

理论上,包管理器不应该给您这个包,而是一个不需要这个环境的旧版本。也就是说,看起来旧的hc-sr04包也需要RMT (ESP32 32的远程控制外围设备)。

如何修复:

我最近这样做是作为一项练习:

代码语言:javascript
复制
// 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的代码那么精确,但也不错。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72450731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档