Hi Arduino Forum
Does someone know what the error is? I tried to google it, but I can't find a clear answer. It is a code from edwards robotics from The robot "Yoggy". I really hope someone can find the error. Thanks beforehand.
Best Regards,
Michael.
#include <NewPing.h>
#include <Servo.h>
#include "pitches.h"
Servo leftServo;
Servo rightServo;
#define SPEAKER 3
#define LED 13
#define TRIGGER_PIN 6
#define ECHO_PIN 7
#define MAX_DISTANCE 100
#define PITCH 523
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
int roam = 0;
unsigned int time;
int distance;
int triggerDistance = 30;
int fDistance;
int lDistance;
int rDistance;
int playSong = 0;
int melody[] = {
NOTE_C4, NOTE_C4, NOTE_G4, NOTE_G4, NOTE_A4, NOTE_A4, NOTE_G4, NOTE_F4, NOTE_F4, NOTE_E4,
NOTE_E4, NOTE_D4, NOTE_D4, NOTE_C4
};
int noteDurations[] = {
2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1
};
void setup()
{
Serial.begin(9600);
leftServo.attach(8);
leftServo.write(91);
rightServo.attach(9);
rightServo.write(90);
pinMode(LED, OUTPUT);
Serial.println("Connection succesful!");
}
void loop()
{
if (Serial.available() > 0)
{
int data = Serial.read();
switch (data)
{
case 'w' :
moveForward();
buzz();
break;
case 's' :
moveBackward();
buzz();
break;
case 'a' :
moveLeft();
buzz();
break;
case 'd' :
moveRight();
buzz();
break;
case 'e' :
moveStop();
break;
case 'r' :
toggleRoam();
buzz();
break;
case 'm' :
if (playSong == 0) {
song();
}
default :
break;
case 'f' :
fart();
break;
}
}
if (roam == 0) {
digitalWrite(LED, LOW);
}
else if (roam == 1) {
digitalWrite(LED, HIGH);
scan();
fDistance = distance;
if (fDistance < triggerDistance) {
tone(SPEAKER, NOTE_C2, 100);
delay(50);
tone(SPEAKER, NOTE_C1, 100);
moveBackward();
delay(1000);
moveRight();
delay(500);
moveStop();
scan();
rDistance = distance;
moveLeft();
delay(1000);
moveStop();
scan();
lDistance = distance;
if (lDistance < rDistance) {
moveRight();
delay(200);
moveForward();
}
else {
moveForward();
}
}
else {
moveForward();
}
}
delay(50);
}
void toggleRoam() {
if (roam == 0) {
roam = 1;
Serial.println("Activated Roam Mode");
}
else {
roam = 0;
moveStop();
Serial.println("De-activated Roam Mode");
}
}
void scan() {
time = sonar.ping();
distance = time / US_ROUNDTRIP_CM;
if (distance == 0) {
distance = 100;
}
Serial.print(distance);
Serial.println(" cm");
delay(10);
}
void moveBackward() {
Serial.println("Moving Backward");
rightServo.write(180);
leftServo.write(0);
}
void moveForward() {
Serial.println("Moving Forward");
rightServo.write(0);
leftServo.write(180);
}
void moveRight() {
Serial.println("Turning Right");
rightServo.write(0);
leftServo.write(0);
}
void moveLeft() {
Serial.println("Turning Left");
rightServo.write(180);
leftServo.write(180);
}
void moveStop() {
Serial.println("Stopping");
rightServo.write(90);
leftServo.write(95);
}
void buzz() {
tone(SPEAKER, NOTE_C7, 100);
delay(50);
tone(SPEAKER, NOTE_C6, 100);
}
void song() {
playSong = 1;
Serial.println("Starting Song");
for (int thisNote = 0; thisNote < 14; thisNote++) {
int noteDuration = 1000 / noteDurations[thisNote];
tone(SPEAKER, melody[thisNote], noteDuration);
int pauseBetweenNotes = noteDuration * 1.30;
Serial.print("d ");
digitalWrite(LED, HIGH);
delay(pauseBetweenNotes);
digitalWrite(LED, LOW);
noTone(SPEAKER);
}
playSong = 0;
Serial.println("");
Serial.println("Finished Song");
}
void fart() {
tone(SPEAKER, NOTE_C2, 200);
delay(200);
tone(SPEAKER, NOTE_C1, 400);
delay(400);
noTone(SPEAKER);
}
pitches.h:
/*************************************************
* Public Constants
*************************************************/
#define NOTE_B0 31
#define NOTE_C1 33
#define NOTE_CS1 35
#define NOTE_D1 37
#define NOTE_DS1 39
#define NOTE_E1 41
#define NOTE_F1 44
#define NOTE_FS1 46
#define NOTE_G1 49
#define NOTE_GS1 52
#define NOTE_A1 55
#define NOTE_AS1 58
#define NOTE_B1 62
#define NOTE_C2 65
#define NOTE_CS2 69
#define NOTE_D2 73
#define NOTE_DS2 78
#define NOTE_E2 82
#define NOTE_F2 87
#define NOTE_FS2 93
#define NOTE_G2 98
#define NOTE_GS2 104
#define NOTE_A2 110
#define NOTE_AS2 117
#define NOTE_B2 123
#define NOTE_C3 131
#define NOTE_CS3 139
#define NOTE_D3 147
#define NOTE_DS3 156
#define NOTE_E3 165
#define NOTE_F3 175
#define NOTE_FS3 185
#define NOTE_G3 196
#define NOTE_GS3 208
#define NOTE_A3 220
#define NOTE_AS3 233
#define NOTE_B3 247
#define NOTE_C4 262
#define NOTE_CS4 277
#define NOTE_D4 294
#define NOTE_DS4 311
#define NOTE_E4 330
#define NOTE_F4 349
#define NOTE_FS4 370
#define NOTE_G4 392
#define NOTE_GS4 415
#define NOTE_A4 440
#define NOTE_AS4 466
#define NOTE_B4 494
#define NOTE_C5 523
#define NOTE_CS5 554
#define NOTE_D5 587
#define NOTE_DS5 622
#define NOTE_E5 659
#define NOTE_F5 698
#define NOTE_FS5 740
#define NOTE_G5 784
#define NOTE_GS5 831
#define NOTE_A5 880
#define NOTE_AS5 932
#define NOTE_B5 988
#define NOTE_C6 1047
#define NOTE_CS6 1109
#define NOTE_D6 1175
#define NOTE_DS6 1245
#define NOTE_E6 1319
#define NOTE_F6 1397
#define NOTE_FS6 1480
#define NOTE_G6 1568
#define NOTE_GS6 1661
#define NOTE_A6 1760
#define NOTE_AS6 1865
#define NOTE_B6 1976
#define NOTE_C7 2093
#define NOTE_CS7 2217
#define NOTE_D7 2349
#define NOTE_DS7 2489
#define NOTE_E7 2637
#define NOTE_F7 2794
#define NOTE_FS7 2960
#define NOTE_G7 3136
#define NOTE_GS7 3322
#define NOTE_A7 3520
#define NOTE_AS7 3729
#define NOTE_B7 3951
#define NOTE_C8 4186
#define NOTE_CS8 4435
#define NOTE_D8 4699
#define NOTE_DS8 4978
The error:
C:\Users\MARTIN~1\AppData\Local\Temp\build2977692173166744092.tmp/core.a(Tone.cpp.o): In function `__vector_7':
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Tone.cpp:538: multiple definition of `__vector_7'
NewPing\NewPing.cpp.o:C:\Users\Martin Pham\Documents\Arduino\libraries\NewPing/NewPing.cpp:284: first defined here
collect2.exe: error: ld returned 1 exit status
Error in compiling.