You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Ultrasonic库出现'timing()私有'错误的解决咨询

解决Ultrasonic库报错:'unsigned int Ultrasonic::timing()' is private within this context

问题原因

你安装的ultrasonic-master library将timing()方法设置为私有成员,而你的代码直接在外部调用了这个私有方法,违反了C++的访问权限规则,导致编译报错。这个库的API设计和你代码适配的旧版Ultrasonic库不一致。

解决办法

方法一:修改代码适配当前库

该库提供了封装好的公开方法直接获取距离,无需手动调用timing()和convert()。将你的cmMsec()函数修改为:

float cmMsec() {
  // 直接调用库的公开方法读取厘米单位距离
  return ultrasonic.read(Ultrasonic::CM);
}

注:原代码中delay(10)写在return之后,不会被执行,可直接删除。

方法二:更换适配代码的Ultrasonic库

若不想修改代码,直接卸载当前的ultrasonic-master library,安装一款API兼容旧版的Ultrasonic库(比如常见的HC-SR04专用Ultrasonic库,这类库通常将timing()设为公开方法)。

额外代码问题提示

即使解决库的问题,你的代码仍有几处逻辑错误需要修正:

  • decisao()函数中的siga_em_frente()是拼写错误,应改为go_forward()。
  • break()语句不能直接在void函数中使用,decisao()里的break()会导致编译错误,需调整逻辑替换该语句。
  • loop()中定义了局部变量float distance,但decisao()调用的是全局int distance,作用域不一致会导致逻辑混乱,建议统一变量使用方式。

内容的提问来源于stack exchange,提问作者Lucas Tezolini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 19:55:14