Salve, ultimamente sto lavorando a un progetto: "I sensori di vicinanza+ il Sonar" (2 sensori ad ultrasuoni+ un servo su cui è montato un sensore ad ultrasuoni) però mi sono imbattuto in questo errore stupido, penso che sia sbagliato qualcosa con le parentesi e le loro posizioni, ma poiché sono alle prime armi con Arduino, sarei molto grato se qualcuno saprebbe aiutarmi. Ecco il codice:
//Security Alarm with Ultrasonic Sensor
//Led
#define BLUE 13
#define RED1 7
#define RED2 4
//Active buzzer
#define buzzer1 2
#define buzzer2 8
//Servomotore
#include<Servo.h>.
Servo myServo;
//Sensore 1
#define trigPin1 6
#define echoPin1 5
//Sensore 2
#define trigPin2 11
#define echoPin2 10
//Sensore 3
const int trigPin3 = 9;
const int echoPin3 = 3;
long duration;
int distance;
float new_delay;
void setup()
{
//Sensore 1
Serial.begin (9600);
pinMode(trigPin1, OUTPUT);
pinMode(echoPin1, INPUT);
pinMode(buzzer1, OUTPUT);
pinMode(buzzer2, OUTPUT);
pinMode(BLUE, OUTPUT);
pinMode(RED1, OUTPUT);
pinMode(RED2, OUTPUT);
//Sensore 2
Serial.begin (9600);
pinMode(trigPin2, OUTPUT);
pinMode(echoPin2, INPUT);
pinMode(buzzer1, OUTPUT);
pinMode(buzzer2, OUTPUT);
pinMode(BLUE, OUTPUT);
pinMode(RED1, OUTPUT);
pinMode(RED2, OUTPUT);
//Sensore 3
Serial.begin (9600);
pinMode(trigPin3, OUTPUT);
pinMode(echoPin3, INPUT);
pinMode(buzzer1, OUTPUT);
pinMode(buzzer2, OUTPUT);
pinMode(BLUE, OUTPUT);
pinMode(RED1, OUTPUT);
pinMode(RED2, OUTPUT);
myServo.attach(12);
}
void loop()
{
//Rotazione del Servomotore
for(int i=15;i<=165;i++){
myServo.write(i);
delay(30);
distance = calculateDistance();
Serial.print(i);
Serial.print(",");
Serial.print(distance);
Serial.print(".");
}
//Rotazione del servomotore (modificabile)
for(int i=165;i>=15;i--){
myServo.write(i);
delay(30);
distance = calculateDistance();
Serial.print(i);
Serial.print(",");
Serial.print(distance);
Serial.print(".");
}
//Sensore 1
long duration, distance;
digitalWrite(trigPin1, LOW);
delayMicroseconds(2);
digitalWrite(trigPin1, HIGH);
delayMicroseconds(100);
digitalWrite(trigPin1, LOW);
duration = pulseIn(echoPin1, HIGH, 100);
distance = (duration / 2) / 29.1;
new_delay = (distance * 3) + 3;
Serial.print(distance);
Serial.println(" cm");
if (distance < 1179)
{ digitalWrite(buzzer1, HIGH);
digitalWrite(buzzer2, HIGH);
digitalWrite(BLUE, LOW);
digitalWrite(RED1, HIGH);
digitalWrite(RED2, HIGH);
delay(new_delay);
digitalWrite(buzzer1, LOW);
digitalWrite(buzzer2, LOW);
digitalWrite(RED1, HIGH);
digitalWrite(RED2, HIGH);
}
//Sensore 2
long duration, distance;
digitalWrite(trigPin2, LOW);
delayMicroseconds(2);
digitalWrite(trigPin2, HIGH);
delayMicroseconds(100);
digitalWrite(trigPin2, LOW);
duration = pulseIn(echoPin2, HIGH);
distance = (duration / 2) / 29.1;
new_delay = (distance * 3) + 3;
Serial.print(distance);
Serial.println(" cm");
if (distance < 1179)
{ digitalWrite(buzzer1, HIGH);
digitalWrite(buzzer2, HIGH);
digitalWrite(BLUE, LOW);
digitalWrite(RED1, HIGH);
digitalWrite(RED2, HIGH);
delay(new_delay);
digitalWrite(buzzer1, LOW);
digitalWrite(buzzer2, LOW);
digitalWrite(RED1, HIGH);
digitalWrite(RED2, HIGH);
}
//Sensore 3
long duration, distance;
digitalWrite(trigPin3, LOW);
delayMicroseconds(2);
digitalWrite(trigPin3, HIGH);
delayMicroseconds(100);
digitalWrite(trigPin3, LOW);
duration = pulseIn(echoPin3, HIGH);
distance = (duration / 2) / 29.1;
new_delay = (distance * 3) + 3;
Serial.print(distance);
Serial.println(" cm");
if (distance < 1179)
{
digitalWrite(buzzer1, HIGH);
digitalWrite(buzzer2, HIGH);
digitalWrite(BLUE, LOW);
digitalWrite(RED1, HIGH);
digitalWrite(RED2, HIGH);
delay(new_delay);
digitalWrite(buzzer1, LOW);
digitalWrite(buzzer2, LOW);
digitalWrite(RED1, HIGH);
digitalWrite(RED2, HIGH);
}
else
{
digitalWrite(buzzer1, LOW);
digitalWrite(buzzer2, LOW);
digitalWrite(BLUE, HIGH);
digitalWrite(RED1, LOW);
digitalWrite(RED2, LOW);
}
delay(200);
}
int calculateDistance(){
digitalWrite(trigPin3, LOW);
delayMicroseconds(2);
digitalWrite(trigPin3, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin3, LOW);
duration = pulseIn(echoPin3, HIGH);
distance= duration*0.034/2;
return distance;
}
Il problema me lo segna alla riga = //Sensore 3 long duration, distance;
Ed ecco il messaggio di errore: "exit status 1
redeclaration of 'long int duration' "
Perfavore, se qualcuno sa come risolvere questo problema, ne sarei molto grato.
Grazie.