Problema Robot evita ostacoli

Buongiorno a tutti

vi sottopongo il mio dilemma.
sono alle prime armi, quindi può essere che non sto facendo qualcosa nel modo corretto....

Il mio progetto è un robot che evita gli ostacoli e che utilizza tre moduli IR per rivelare oggetti di fronte a se. i tre IR sono orientati tutti orientati nella parte anteriore del robot, ma ad angolazioni di 45 gradi diverse: quindi uno a 45 gradi a sinistra ( L ) , uno centrale che guarda avanti ( C ) e uno sul lato destro a 45 gradi da c (R).
il robot ha due ruote con motori DC che sono pilotati da una scheda YL86.

PROBLEMA: con il seguente script a volte capita che si blocca il robot incontrando un ostacolo e ripete la stessa funzione ,anche se il sensore non rileva più ostacoli.

void setup() {
 // put your setup code here, to run once:
 pinMode(2,OUTPUT);//Motor Driver Pin 1
 pinMode(3,OUTPUT);//Motor Driver Pin 2
 pinMode(4,OUTPUT);//Motor Driver Pin 3
 pinMode(5,OUTPUT);//Motor Driver Pin 4

 pinMode(10,INPUT);//Left Ir Sensor Signal Input
 pinMode(7,INPUT);//Central Ir Sensor Signal Input
 pinMode(9,INPUT);//Right Ir Sensor Signal Input
 /*
 //3 e 2 sono motore A (di destra) e 4 e 5 sono motore B (di sinistra)
digitalWrite(5,HIGH); AVANTI
digitalWrite(4,LOW);
digitalWrite(3,LOW);
digitalWrite(2,HIGH);
  //------------------------
digitalWrite(5,LOW); INDIETRO
digitalWrite(4,HIGH);
digitalWrite(3,HIGH);
digitalWrite(2,LOW);
  //------------------------
digitalWrite(5,LOW); RUOTA VERSO SX
digitalWrite(4,HIGH);
digitalWrite(3,LOW);
digitalWrite(2,HIGH);
  //------------------------
digitalWrite(5,HIGH); RUOTA VERSO DX
digitalWrite(4,LOW);
digitalWrite(3,HIGH);
digitalWrite(2,LOW);

sensori con funzione IF= valore high vuol dire che  hanno un ostacolo, con low si */
}

void loop() {
//sensori centrale right e left
 int c=digitalRead(7);
 int l=digitalRead(10);
 int r=digitalRead(9);
if(l == HIGH && c == HIGH && r == HIGH){
//se  NON c'è ostacolo va avanti
digitalWrite(5,HIGH); //AVANTI
digitalWrite(4,LOW);
digitalWrite(3,LOW);
digitalWrite(2,HIGH);
delay(15); 
}

else if(l == LOW){ //ostacolo a sinistra
 digitalWrite(5,HIGH); //RUOTA VERSO DX
digitalWrite(4,LOW);
digitalWrite(3,HIGH);
digitalWrite(2,LOW);
}
else if(c == LOW){ //ostacolo davanti
digitalWrite(5,LOW); //RUOTA VERSO SX
digitalWrite(4,HIGH);
digitalWrite(3,LOW);
digitalWrite(2,HIGH);
}
else if(r == LOW){ //ostacolo a destra
digitalWrite(5,LOW); //RUOTA VERSO SX
digitalWrite(4,HIGH);
digitalWrite(3,LOW);
digitalWrite(2,HIGH);
 }
}

Buongiorno,
prima di tutto, essendo il tuo primo post, nel rispetto del regolamento, ti chiedo cortesemente di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ...

... poi, in conformità al suddetto regolamento, punto 7, devi editare il tuo primo post (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More -> Modify che si trova in basso a destra del tuo post) e racchiudere il codice all'interno dei tag CODE (... sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra).

Grazie.

Guglielmo

P.S.: Qui una serie di link utili, NON necessariamente inerenti alla tua domanda:
- serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections
- pinout delle varie schede by xxxPighi: Pinout
- link generali utili: Link Utili

chiedo scusa. ho rimediato alle mie mancanze.grazie!

Ciao, a parte il codice che hai messo nel setup() motore avanti, destra,sinistra ecc.., che non ha senso metterlo nel setup().

Nel loop() leggi i tre sensori e con degli if() scegli la direzione dei motori, non è un codice che ti possa dare dei problemi "se un sensore è attivo fa qualcosa" è tutto li il codice.

La mia idea è che sia un problema di elettronica, per qualche motivo i sensori si attivano anche quando non dovrebbero, se riesci metti tre led che si accendano quando il sensore è attivo, cosi ti possono indicare un malfunzionamento dei sensori.