首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Arduino蓝牙和超声波距离传感器(HC-SR04):通过BT打印值出现错误

Arduino蓝牙和超声波距离传感器(HC-SR04):通过BT打印值出现错误
EN

Stack Overflow用户
提问于 2015-05-02 21:12:34
回答 1查看 2.4K关注 0票数 0

我正在尝试使用蓝牙将HC-SR04传感器的读数距离发送到Android应用程序。我成功地将许多其他传感器的值发送到应用程序,但当涉及到发送HC-SR04 reding时,一个奇怪的行为发生了。为了通过BT发送读数,我使用了一个简单的Serial.printl(value)命令,该命令还会在PC串行监视器上显示读数。奇怪的是:如果蓝牙模块被断开,读数是正确的,但一旦我连接了电路板( JY-MCU)上的蓝牙模块,读数就开始变得明显随机,甚至我在电脑显示器上看它们,而不是从应用程序。我仍然没有弄清楚这个问题是与硬件还是软件有关。

我还尝试使用不同的基本草图将所有其他传感器和元件与电路断开,但结果是一样的:一旦我插入蓝牙模块(即使数据没有发送到Android应用程序),我就开始获得随机的距离值。以下是草图:

代码语言:javascript
复制
int trig = 10;
int echo = 7;
void setup(){ 
  Serial.begin(9600);
}
void loop(){
  long distance = getUltrasonicAltitude();
  Serial.println(distance);
}
long getUltrasonicAltitude(){
  long duration, cm;
  digitalWrite(trig, LOW);
  delayMicroseconds(2);
  digitalWrite(trig, HIGH);
  delayMicroseconds(10);
  digitalWrite(trig, LOW);
  duration = pulseIn(echo,HIGH);
  cm = duration/29/2;
  return cm;
}

我尝试使用newPing库,甚至使用中断而不是pulseIn函数来获取脉冲之间的时间,但结果总是相同的:一切正常,只是没有蓝牙模块……

你知道解决这个困扰了我两天的烦人问题的方法或者有什么建议吗?这可能是硬件或软件问题,所以我真的很乐意听到任何可能的解决方案。

EN

回答 1

Stack Overflow用户

发布于 2015-05-02 23:07:47

我终于找到问题的原因了!使用电压表,我发现问题基本上是蓝牙模块每次调用Serial.println函数时都会吸收太多电流,这会导致电压上下波动,在3.8伏和4.3伏之间。看起来超声波测距传感器不喜欢这样。有没有办法在不使用其他外部电源的情况下解决此问题?也许电容器可以平滑电压下降?

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

https://stackoverflow.com/questions/30002710

复制
相关文章

相似问题

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