首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带被动蜂鸣器的Arduino超声波测距传感器可实现不同的音调

带被动蜂鸣器的Arduino超声波测距传感器可实现不同的音调
EN

Stack Overflow用户
提问于 2019-04-09 12:00:00
回答 1查看 737关注 0票数 1

我有一个带被动蜂鸣器的超声波距离传感器。被动蜂鸣器是用不同的音调设置的。蜂鸣器将一直播放,直到超声波距离传感器检测到任何障碍物。然而,Arduino无法编译代码。它会显示以下错误:

代码语言:javascript
复制
exit status 1
Error compiling for board Arduino/Genuino Uno.

以下是完整的错误消息:

代码语言:javascript
复制
Arduino: 1.8.9 (Windows 10), Board: "Arduino/Genuino Uno"

Tone.cpp.o (symbol from plugin): In function `timer0_pin_port':

(.text+0x0): multiple definition of `__vector_7'

libraries\NewPing\NewPing.cpp.o (symbol from plugin):(.text+0x0): first defined here

collect2.exe: error: ld returned 1 exit status

exit status 1
Error compiling for board Arduino/Genuino Uno.

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

我可以在Tone.cpp.o中找到函数timer0_pin_port。但我在NewPing.cpp.o中找不到相同的函数。

由于篇幅限制,我不能在这里张贴NewPing.cpp.o。你可以在这里下载NewPing.cpp.o:https://bitbucket.org/teckel12/arduino-new-ping/wiki/Home Tone.cpp.o是库中的原始文档。

代码语言:javascript
复制
#include <NewPing.h>

#define TRIGGER_PIN  12  // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN     11  // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 10 // Maximum distance we want to ping for (in centimeters). 
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.

void setup() {
  Serial.begin(9600); // Open serial monitor at 115200 baud to see ping results.
  pinMode(2,OUTPUT);
}

void loop() {
  delay(50);                     // Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings.
  Serial.print("Ping: ");
  Serial.print(sonar.ping_cm()); // Send ping, get distance in cm and print result (0 = outside set distance range)
  Serial.println("cm");
  if (sonar.ping_cm() == 0)
  tone(2,4000);
  else 
  tone(2,0);
}

预期:当DIstance传感器检测到任何物品时,蜂鸣器将停止播放。你必须使用音调方法来支持不同的音调。或者可以支持不同音调的任何类似功能。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-09 13:40:58

据我所知,ToneNewPing库在使用相同的中断__vector_7时存在冲突。众所周知,NewPing有冲突的问题,我建议您使用Arduino中的原始ping。这里有一个全面的example

如果您确定没有使用ping_timer()方法,那么在NewPing.h文件中将TIMER_ENABLED设置为false

这里有一个进一步讨论Multiple Definition of "__vector_7" Error的链接。

以下是arduino forum上类似问题的线索。

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

https://stackoverflow.com/questions/55584932

复制
相关文章

相似问题

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