error de compilacion arduino genuino uno.

me aparece este error de compilación en el programa de un robot que estoy realizando , ya probé cambiando de computadora y también de versiones de arduino y me sigue apareciendo el mismo error. A continuación dejo el error:

Arduino:1.8.10 (Windows 10), Tarjeta:“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

Se encontraron varias bibliotecas para “NewPing.h”
Usado: C:\Users\manai\OneDrive\Documentos\Arduino\libraries\NewPing
Se encontraron varias bibliotecas para “Servo.h”
Usado: C:\Program
exit status 1
Error compilando para la tarjeta Arduino/Genuino Uno.

Este informe podría contener más información con
“Mostrar salida detallada durante la compilación”
opción habilitada en Archivo → Preferencias.

mas abajo les dejo la programcion de mi robot, muchas gracias

#include <Servo.h>
#include <NewPing.h>
#define TRIGGER_PIN 12
#define ECHO_PIN 11
#define MAX_DISTANCE 200
int ledverde8mm = 10;
int dist = 0;
int cny = A0;
int valor = 0;
int ledverde = 9;
int ledrojo = 8;
int buzzer = 3;
unsigned int tmp;
NewPing presencia (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
Servo servocab;
void setup() {
Serial.begin(9600);
pinMode (cny, INPUT);
pinMode (ledverde8mm, OUTPUT);
pinMode (ledverde, OUTPUT);
pinMode (ledrojo, OUTPUT);
pinMode (buzzer, OUTPUT);
servocab.attach (7);
digitalWrite (ledverde8mm, HIGH);
digitalWrite (ledverde, HIGH);
digitalWrite (ledrojo, HIGH);
delay (200);
digitalWrite (ledverde8mm, LOW);
digitalWrite (ledverde, LOW);
digitalWrite(ledrojo, LOW);
tone (buzzer, 950, 900);
delay (200);
noTone (buzzer);
delay (200);
tone (buzzer, 750, 300);
delay (200);}
void loop () {
valor = analogRead(cny);
Serial.println(valor);
delay(100);
digitalWrite (ledverde, LOW);
digitalWrite (ledrojo, LOW);
if (valor >= 80 && valor <= 260 ) {
digitalWrite (ledverde, HIGH);
digitalWrite (ledrojo, LOW);
tono_no_correcto();}
if (valor > 600 && valor < 996) {
digitalWrite (ledrojo, HIGH);
tono_correcto();}
if (valor < 6 && valor <= 30) {
digitalWrite (ledverde, LOW);
digitalWrite (ledrojo, LOW);}
servocab.write (90);
delay(50);
tmp = presencia.ping();
dist = tmp / US_ROUNDTRIP_CM;
Serial.print ("distancia: ");
Serial.print(dist);
Serial.println(“cm”);
if (dist == 0) {
digitalWrite (ledverde8mm, LOW);}
if (dist >= 55 && dist <= 65) {
digitalWrite (ledverde8mm, HIGH);
servocab.write (90);
delay (200);}
else {
digitalWrite (ledverde8mm, LOW);}
if (dist >= 1 && dist <= 54) {
digitalWrite (ledverde8mm, HIGH);}}
void tono_correcto() {
tone(3, 950, 900);
delay (200);
noTone (3);
delay (200);
tone (3, 850, 300);
delay (200);
noTone (3);
delay (200);
tone (3, 750, 300);
delay (500);}
void tono_no_correcto() {
tone (3, 750, 300);
delay (200);
noTone(3);
delay (200);
tone (3, 350, 900);
delay (200);
noTone(3);
delay (200);
tone (3, 950, 900);
delay (500);}

robot_arduino_bien.ino (2.12 KB)

Bienvenido al foro.

Te recomiendo que leas las NORMAS para que escribas el código correctamente (también el resultado) entre etiquetas code.

NewPing utiliza los timers hardware del arduino, que entran en conflicto con servo/tone. Así que al intentar definir algo que ya está definido en otra libreria da error. Si no prueba a quitar todo el código relacionado con el ping y verás como no da error.

Si no quieres perder el tiempo intentando modificar ambas librerias te recomiendo que uses la libreria ping que no utiliza timers. La puedes conseguir en este ENLACE.