Ошибка при компиляции для платы Arduino Uno
Я новичок в Arduino и только что получил эту ошибку после написания этого кода: сообщение об ошибке вставляется после кода. Я любезно прошу о помощи, чтобы кто-нибудь мог помочь мне понять, почему он не компилируется. Я даже сменил плату на mega в разделе tools, но все равно получаю ту же ошибку
#include <Tone.h>
int ledred1 = 2;
int ledgreen1 = 3;
int ledorange1 = 4;
int ledred2 = 5;
int ledgreen2 = 6;
int ledorange2 = 7;
int ledred3 = 8;
int ledgreen3 = 9;
int ledorange3 = 10;
int sound = 250;
int trigPin1 = 11;
int echoPin1 = 12;
int trigPin2 = 13;
int echoPin2 = 14;
int trigPin3 = 15;
int echoPin3 = 16;
#define buzzer1 17
#define buzzer2 18
#define buzzer3 19
Tone tone1;
Tone tone2;
Tone tone3;
long distance1=0;
long distance2=0;
long distance3=0;
long t1=-10000;
long t2=-10000;
long t3=-10000;
void checkDistance(long distance, Tone toneobj, int frequency, long *timer);
long measure(int trigger, int echo);
void setup() {
Serial.begin (9600);
pinMode(trigPin1, OUTPUT);
pinMode(echoPin1, INPUT);
pinMode(trigPin2, OUTPUT);
pinMode(echoPin2, INPUT);
pinMode(trigPin3, OUTPUT);
pinMode(echoPin3, INPUT);
tone1.begin(buzzer1);
tone2.begin(buzzer2);
tone3.begin(buzzer3);
pinMode(ledred1, OUTPUT);
pinMode(ledred2, OUTPUT);
pinMode(ledgreen1, OUTPUT);
pinMode(ledgreen2, OUTPUT);
pinMode(ledred3, OUTPUT);
pinMode(ledgreen3, OUTPUT);
}
void firstsensor(){ // Эта функция предназначена для первого датчика.
int duration1, distance1;
digitalWrite (trigPin1, HIGH);
delayMicroseconds (10);
digitalWrite (trigPin1, LOW);
duration1 = pulseIn (echoPin1, HIGH);
distance1 = (duration1/2) / 29.1;
Serial.print("1st Sensor: ");
Serial.print(distance1);
Serial.print("cm ");
if (distance1 <=200&& distance1>=100) { // Измените число для длинных или коротких расстояний.
digitalWrite (ledred1, LOW);
digitalWrite (ledgreen1,HIGH);
digitalWrite (ledorange1,LOW);
digitalWrite (ledred2, LOW);
digitalWrite (ledorange2,LOW);
digitalWrite (ledgreen2, LOW);
digitalWrite (ledred3, LOW);
digitalWrite (ledorange3,LOW);
digitalWrite (ledgreen3, LOW);
sound=250;
} else {
digitalWrite (ledred1, LOW);
digitalWrite (ledgreen1,LOW);
digitalWrite (ledorange1,LOW);
digitalWrite (ledred2, LOW);
digitalWrite (ledorange2,LOW);
digitalWrite (ledgreen2, LOW);
digitalWrite (ledred3, LOW);
digitalWrite (ledorange3,LOW);
digitalWrite (ledgreen3, LOW);
}
if (distance1 <100&& distance1>=50) { // Измените число для длинных или коротких расстояний.
digitalWrite (ledred1, LOW);
digitalWrite (ledgreen1,LOW);
digitalWrite (ledorange1,HIGH);
digitalWrite (ledred2, LOW);
digitalWrite (ledorange2,LOW);
digitalWrite (ledgreen2, LOW);
digitalWrite (ledred3, LOW);
digitalWrite (ledorange3,LOW);
digitalWrite (ledgreen3, LOW);
sound=275;
} else {
digitalWrite (ledred1, LOW);
digitalWrite (ledgreen1,LOW);
digitalWrite (ledorange1,LOW);
digitalWrite (ledred2, LOW);
digitalWrite (ledorange2,LOW);
digitalWrite (ledgreen2, LOW);
digitalWrite (ledred3, LOW);
digitalWrite (ledorange3,LOW);
digitalWrite (ledgreen3, LOW);
}
if (distance1 <50&& distance1>=0) { // Измените число для длинных или коротких расстояний.
digitalWrite (ledred1, HIGH);
digitalWrite (ledgreen1,LOW);
digitalWrite (ledorange1,LOW);
digitalWrite (ledred2, LOW);
digitalWrite (ledorange2,LOW);
digitalWrite (ledgreen2, LOW);
digitalWrite (ledred3, LOW);
digitalWrite (ledorange3,LOW);
digitalWrite (ledgreen3, LOW);
sound=300;
} else {
digitalWrite (ledred1, LOW);
digitalWrite (ledgreen1,LOW);
digitalWrite (ledorange1,LOW);
digitalWrite (ledred2, LOW);
digitalWrite (ledorange2,LOW);
digitalWrite (ledgreen2, LOW);
digitalWrite (ledred3, LOW);
digitalWrite (ledorange3,LOW);
digitalWrite (ledgreen3, LOW);
}
if(distance1>200 || distance1<0){
Serial.println("Out of Range");
noTone(buzzer1);
}
else{
Serial.print(distance1);
Serial.println("cm");
tone(buzzer1,sound);
}
}
void secondsensor(){ // Эта функция предназначена для второго датчика.
int duration2, distance2;
digitalWrite (trigPin2, HIGH);
delayMicroseconds (10);
digitalWrite (trigPin2, LOW);
duration2 = pulseIn (echoPin2, HIGH);
distance2 = (duration2/2) / 29.1;
Serial.print("2nd Sensor: ");
Serial.print(distance2);
Serial.print("cm ");
if (distance2 <=200&& distance2>=100) { // Измените число для длинных или коротких расстояний.
digitalWrite (ledred1, LOW);
digitalWrite (ledgreen1,LOW);
digitalWrite (ledorange1,LOW);
digitalWrite (ledred2, LOW);
digitalWrite (ledorange2,LOW);
digitalWrite (ledgreen2, HIGH);
digitalWrite (ledred3, LOW);
digitalWrite (ledorange3,LOW);
digitalWrite (ledgreen3, LOW);
sound=250;
} else {
digitalWrite (ledred1, LOW);
digitalWrite (ledgreen1,LOW);
digitalWrite (ledorange1,LOW);
digitalWrite (ledred2, LOW);
digitalWrite (ledorange2,LOW);
digitalWrite (ledgreen2, LOW);
digitalWrite (ledred3, LOW);
digitalWrite (ledorange3,LOW);
digitalWrite (ledgreen3, LOW);
}
if (distance2 <100&& distance2>=50) { // Измените число для длинных или коротких расстояний.
digitalWrite (ledred1, LOW);
digitalWrite (ledgreen1,LOW);
digitalWrite (ledorange1,LOW);
digitalWrite (ledred2, LOW);
digitalWrite (ledorange2,HIGH);
digitalWrite (ledgreen2, LOW);
digitalWrite (ledred3, LOW);
digitalWrite (ledorange3,LOW);
digitalWrite (ledgreen3, LOW);
sound=275;
} else {
digitalWrite (ledred1, LOW);
digitalWrite (ledgreen1,LOW);
digitalWrite (ledorange1,LOW);
digitalWrite (ledred2, LOW);
digitalWrite (ledorange2,LOW);
digitalWrite (ledgreen2, LOW);
digitalWrite (ledred3, LOW);
digitalWrite (ledorange3,LOW);
digitalWrite (ledgreen3, LOW);
}
if (distance2 <50&& distance2>=0) { // Измените число для длинных или коротких расстояний.
digitalWrite (ledred1, LOW);
digitalWrite (ledgreen1,LOW);
digitalWrite (ledorange1,LOW);
digitalWrite (ledred2, HIGH);
digitalWrite (ledorange2,LOW);
digitalWrite (ledgreen2, LOW);
digitalWrite (ledred3, LOW);
digitalWrite (ledorange3,LOW);
digitalWrite (ledgreen3, LOW);
sound=300;
} else {
digitalWrite (ledred1, LOW);
digitalWrite (ledgreen1,LOW);
digitalWrite (ledorange1,LOW);
digitalWrite (ledred2, LOW);
digitalWrite (ledorange2,LOW);
digitalWrite (ledgreen2, LOW);
digitalWrite (ledred3, LOW);
digitalWrite (ledorange3,LOW);
digitalWrite (ledgreen3, LOW);
}
if(distance2>200 || distance2<0){
Serial.println("Out of Range");
noTone(buzzer2);
}
else{
Serial.print(distance2);
Serial.println("cm");
tone(buzzer2,sound);
}
}
void thirdsensor(){ // Эта функция предназначена для третьего датчика.
int duration3, distance3;
digitalWrite (trigPin3, HIGH);
delayMicroseconds (10);
digitalWrite (trigPin3, LOW);
duration3 = pulseIn (echoPin3, HIGH);
distance3 = (duration3/2) / 29.1;
Serial.print("3rd Sensor: ");
Serial.print(distance3);
Serial.print("cm");
if (distance3 <=200&& distance3>=100) { // Измените число для длинных или коротких расстояний.
digitalWrite (ledred1, LOW);
digitalWrite (ledgreen1,LOW);
digitalWrite (ledorange1,LOW);
digitalWrite (ledred2, LOW);
digitalWrite (ledorange2,LOW);
digitalWrite (ledgreen2, LOW);
digitalWrite (ledred3, LOW);
digitalWrite (ledorange3,LOW);
digitalWrite (ledgreen3, HIGH);
sound=250;
} else {
digitalWrite (ledred1, LOW);
digitalWrite (ledgreen1,LOW);
digitalWrite (ledorange1,LOW);
digitalWrite (ledred2, LOW);
digitalWrite (ledorange2,LOW);
digitalWrite (ledgreen2, LOW);
digitalWrite (ledred3, LOW);
digitalWrite (ledorange3,LOW);
digitalWrite (ledgreen3, LOW);
}
if (distance3 <100&& distance3>=50) { // Измените число для длинных или коротких расстояний.
digitalWrite (ledred1, LOW);
digitalWrite (ledgreen1,LOW);
digitalWrite (ledorange1,LOW);
digitalWrite (ledred2, LOW);
digitalWrite (ledorange2,LOW);
digitalWrite (ledgreen2, LOW);
digitalWrite (ledred3, LOW);
digitalWrite (ledorange3,HIGH);
digitalWrite (ledgreen3, LOW);
sound=275;
} else {
digitalWrite (ledred1, LOW);
digitalWrite (ledgreen1,LOW);
digitalWrite (ledorange1,LOW);
digitalWrite (ledred2, LOW);
digitalWrite (ledorange2,LOW);
digitalWrite (ledgreen2, LOW);
digitalWrite (ledred3, LOW);
digitalWrite (ledorange3,LOW);
digitalWrite (ledgreen3, LOW);
}
if (distance1 <50&& distance1>=0) { // Измените число для длинных или коротких расстояний.
digitalWrite (ledred1, LOW);
digitalWrite (ledgreen1,LOW);
digitalWrite (ledorange1,LOW);
digitalWrite (ledred2, LOW);
digitalWrite (ledorange2,LOW);
digitalWrite (ledgreen2, LOW);
digitalWrite (ledred3, LOW);
digitalWrite (ledorange3,LOW);
digitalWrite (ledgreen3, LOW);
sound=300;
} else {
digitalWrite (ledred1, LOW);
digitalWrite (ledgreen1,LOW);
digitalWrite (ledorange1,LOW);
digitalWrite (ledred2, LOW);
digitalWrite (ledorange2,LOW);
digitalWrite (ledgreen2, LOW);
digitalWrite (ledred3, LOW);
digitalWrite (ledorange3,LOW);
digitalWrite (ledgreen3, LOW);
}
if(distance3>200 || distance3<0){
Serial.println("Out of Range");
noTone(buzzer3);
}
else{
Serial.print(distance3);
Serial.println("cm");
tone(buzzer3,sound);
}
}
void loop() {
Serial.println("\n");
firstsensor();
secondsensor();
thirdsensor();
delay(100);
}
Это сообщение об ошибке: Arduino: 1.8.13 (Linux), Плата: "Arduino Uno"
Tone.cpp.o (symbol from plugin): In function `timer0_pin_port':
(.text+0x0): multiple definition of `timer0_pin_port'
libraries/Tone-1.0.0/Tone.cpp.o (symbol from plugin):(.text+0x0): first defined here
Tone.cpp.o (symbol from plugin): In function `timer0_pin_port':
(.text+0x0): multiple definition of `timer0_pin_mask'
libraries/Tone-1.0.0/Tone.cpp.o (symbol from plugin):(.text+0x0): first defined here
Tone.cpp.o (symbol from plugin): In function `timer0_pin_port':
(.text+0x0): multiple definition of `timer1_pin_port'
libraries/Tone-1.0.0/Tone.cpp.o (symbol from plugin):(.text+0x0): first defined here
Tone.cpp.o (symbol from plugin): In function `timer0_pin_port':
(.text+0x0): multiple definition of `timer1_pin_mask'
libraries/Tone-1.0.0/Tone.cpp.o (symbol from plugin):(.text+0x0): first defined here
Tone.cpp.o (symbol from plugin): In function `timer0_pin_port':
(.text+0x0): multiple definition of `timer2_pin_port'
libraries/Tone-1.0.0/Tone.cpp.o (symbol from plugin):(.text+0x0): first defined here
Tone.cpp.o (symbol from plugin): In function `timer0_pin_port':
(.text+0x0): multiple definition of `timer2_pin_mask'
libraries/Tone-1.0.0/Tone.cpp.o (symbol from plugin):(.text+0x0): first defined here
Tone.cpp.o (symbol from plugin): In function `timer0_pin_port':
(.text+0x0): multiple definition of `timer0_toggle_count'
libraries/Tone-1.0.0/Tone.cpp.o (symbol from plugin):(.text+0x0): first defined here
Tone.cpp.o (symbol from plugin): In function `timer0_pin_port':
(.text+0x0): multiple definition of `timer1_toggle_count'
libraries/Tone-1.0.0/Tone.cpp.o (symbol from plugin):(.text+0x0): first defined here
Tone.cpp.o (symbol from plugin): In function `timer0_pin_port':
(.text+0x0): multiple definition of `timer2_toggle_count'
libraries/Tone-1.0.0/Tone.cpp.o (symbol from plugin):(.text+0x0): first defined here
Tone.cpp.o (symbol from plugin): In function `timer0_pin_port':
(.text+0x0): multiple definition of `__vector_7'
libraries/Tone-1.0.0/Tone.cpp.o (symbol from plugin):(.text+0x0): first defined here
collect2: error: ld returned 1 exit status
exit status 1
Error compiling for board Arduino Uno.
This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
@Wayne 254, 👍0
1 ответ
Лучший ответ:
▲ 1
Вы включаете библиотеку Tone и используете функцию tone()
из core. Они находятся в конфликте.
Используйте tone1.tone()
или удалите библиотеку тонов и используйте функцию tone()
.
,
@Juraj
Смотрите также:
- Подключение нескольких ультразвуковых датчиков (hc-sr04) к одной плате arduino.(мега)
- Как использовать SPI на Arduino?
- Как сбросить или отформатировать Arduino?
- Управление скоростью вентилятора с помощью библиотеки Arduino PID
- Как получить уникальный идентификатор для всех плат Arduino?
- Как очистить буфер FIFO на MPU6050?
- Элегантное решение для обновления содержимого TFT-дисплея
- Считывание нескольких поворотных энкодеров
Спасибо. Я удалил библиотеку tone и использовал функцию tone () самостоятельно, и она сработала, @Wayne 254