#include <Servo.h> // Include servo library
Servo servoSx; // dichiaro il servo sx e dx
Servo servoDx;
void setup() // Built-in initialization block
{
pinMode(10, INPUT); pinMode(9, OUTPUT); // sensore sinistro IR LED & Receiver
pinMode(3, INPUT); pinMode(2, OUTPUT); // sensore destro IR LED & Receiver
pinMode(6, INPUT); pinMode(5, OUTPUT); // sensore centrale IR LED & Receiver
servoSx.attach(13); // servo sx su pin 13
servoDx.attach(12); // servo dx su pin 12
Serial.begin(9600);
}
void loop() // Main loop auto-repeats
{
ciclo:
if ((RCTimesx == 0) && (RCTimeC == 0) && (RCTimeDx == 0)) // se tutto sul nero, fermati
{
servoSx.detach(); // Stop servo signals
servoDx.detach();
tone(4, 3000, 1000); // inizio tone per 1 s
delay(1000);
}
else if ((RCTimesx == 0) && (RCTimeC == 0) && (RCTimeDx == ! 0)) // sx nero, c nero, dx bianco -> gira a sx
{
maneuver(-200, 200, 375); // gira a sx per 375ms
goto ciclo;
}
else if ((RCTimesx == 0) && (RCTimeC = !0) && (RCTimeDx == 0)) // sx nero, c bianco, dx nero -> impossibile
{
servoSx.detach(); // Stop servo signals
servoDx.detach();
}
else if ((RCTimesx == 0) && (RCTimeC = ! 0) && (RCTimeDx = ! 0)) // sx nero, c bianco, dx bianco = curva stretta a sx
{
maneuver(-200, 200, 375); // gira a sx per 375ms
goto ciclo;
}
else if (RCTimesx = ! 0) && (RCTimeC == 0) && (RCTimeDx == 0) // sx bianco, c nero, dx nero -> gira a dx
{
maneuver(200, -200, 375); // gira a dx per 375ms
goto ciclo;
}
else if (RCTimesx = ! 0) && (RCTimeC == 0) && (RCTimeDx = ! 0) // sx bianco, c nero, dx bianco -> procedi dritto
{
maneuver(200, 200, 375); // procede dritto
goto ciclo;
}
else if (RCTimesx = ! 0) && (RCTimeC = ! 0) && (RCTimeDx == 0) // sx bianco, c bianco, dx nero = curva stretta a dx
{
maneuver(200, -200, 375); // gira a dx per 375ms
goto ciclo;
}
else // condizione di perdita riferimenti
{
maneuver(-200, -200, 1000); // va indietro per un secondo
do {
maneuver(200, 0, 100); // gira a dx per 100ms
} while (RCTimesx = ! 0) && (RCTimeC = ! 0) && (RCTimeDx = ! 0) // gira a dx per 100ms e esce quando trova pista
goto ciclo;
}
}
Serial.print(RCTimesx(2));
Serial.print(" ");
Serial.print(RCTimeC(5));
Serial.print(" ");
Serial.print(RCTimeDx(8));
Serial.println(' ');
delay(500);
long RCTimesx(int sensorln2) {
long duration2 = 0;
pinMode(sensorln2, OUTPUT);
digitalWrite(sensorln2, HIGH);
delay(1);
pinMode(sensorln2, INPUT);
digitalWrite(sensorln2, LOW);
while (digitalRead(sensorln2)) {
duration2++;
}
return duration2;
Serial.println(RCTime5(5));
}
long RCTimeC(int sensorln5) {
long duration5 = 0;
pinMode(sensorln5, OUTPUT);
digitalWrite(sensorln5, HIGH);
delay(1);
pinMode(sensorln5, INPUT);
digitalWrite(sensorln5, LOW);
while (digitalRead(sensorln5)) {
duration5++;
}
return duration5;
}
long RCTimeDx(int sensorln8) {
long duration8 = 0;
pinMode(sensorln8, OUTPUT);
digitalWrite(sensorln8, HIGH);
delay(1);
pinMode(sensorln8, INPUT);
digitalWrite(sensorln8, LOW);
while (digitalRead(sensorln8)) {
duration8++;
}
return duration8;
}
void maneuver(int speedLeft, int speedRight, int msTime)
{
// speedLeft, speedRight ranges: Backward Linear Stop Linear Forward
// -200 -100......0......100 200
servoSx.writeMicroseconds(1500 + speedLeft); // Set left servo speed
servoDx.writeMicroseconds(1500 - speedRight); // Set right servo speed
if (msTime == -1) // if msTime = -1
{
servosx.detach(); // Stop servo signals
servoDx.detach();
}
delay(msTime); // Delay for msTime
}
Ci sono molti errori nello sketch.
Richiami funzioni come variabili, non è permesso. inoltre se è previsto gli devi passare i parametri.
Hai scritto una parte dei comandi fuori da qualsiasi funzione.
Dovresti cercare di eliminare i Goto: sono da programmazione in Basic e non da linguaggio C, anche se supportati dal compilatore.
Ti conviene utilizzare dei #define o delle costanti per definire i pin utilizzati in tutto il programma.
Non c'è bisogno di ridefinire N funzioni diverse quando hanno lo stesso codice, basta che gli invii parametri diversi.
Per il ciclo do...while ci vuole il ; finale
do {
codice
} while(condizione);
Spiega per bene cosa deve fare il programma, anche passo passo; così potremmo aiutarti meglio. 
Per usare al meglio il forum leggi il Regolamento, in particolare i punti 7, 8 e 9 --> [REGOLAMENTO] Come usare questa sezione del forum - Italiano - Arduino Forum
Benvenuto. 
p.s. Prima di postare il codice usa la funzione di formattazione automatica che trovi nel menu Strumenti dell'IDE di Arduino. Serve per identare il codice.