Robot Arduino Labyrinthe

Bonjour à tous =)

Je travaille actuellement sur un projet qui consiste à faire sortir un robot (fonctionnant avec une Arduino Uno) d'un labyrinthe délimité à l'aide de scotch électrique noir car les capteurs utilisés pour se projet sont deux capteurs infrarouges.
Pour créer mon programme je me suis basé sur l'idée que le robot doit toujours tourner à droite dès qu'il le peut mais mon problème est que quand il tourne à droite et qu'à sa droite il se retrouve à nouveau prêt d'un mur celui-ci va de nouveau tourner à droite et par conséquent retourner d'où il est venu. Bien sûr je ne veux pas que cela arrive, alors je cherche un bloc de code qui pourrait me permettre de compter le nombre de fois où le robot tourne à droite pour lui dire qu'après avoir tourné une fois celui-ci doit continuer d'essayer de tourner mais à gauche.
Je souhaiterai avoir votre aide concernant ce bloc de code qui m'est inconnu car je débute un peu en programmation Arduino et je n'ai rien trouvé jusqu'à maintenant ou je m'y suis mal pris.

Merci d'avance pour vos réponses.

Code ?
Perso, si je tourne deux fois à droite, je fais un demi tour.
Si on dit 90 = droite et -90= gauche, alors
90+90=180 -> demi tour
90 -90 = 0 -> je revient à ma position initiale

Salut,

le forum n'est pas là pour faire le boulot à ta place. Si tu post ton code nous pourrons t'aider à l'améliorer.
Merci de lire les régles avant de poster et de mettre le code entre </>

@+

Merci pour cette amabilité... Le code est déjà réalisé je souhaite juste connaître une fonction qui pourrait faire ce dont j'ai besoin et qui m'est inconnu étant débutant et ne l'ayant trouvé nul part, en aucun cas je ne demande de faire mon travail ! Je trouve cela vraiment irrespectueux de votre part...

Si quelqu'un souhaite m'aiguiller et me conseiller sur cette fonction précise que je cherche à réaliser et NON PAS faire mon projet à ma place, je pourrais mettre en ligne le code ce soir.

Concernant la première réponse du sujet, le problème est bien cela le robot ne doit pas revenir en arrière sinon il ne sortira jamais du labyrinthe, il faudrait qu'il tourne à droite puis selon une fonction, que je connais pas, ne retourne pas à droite après une première tentative mais tourne à 180 degrés à gauche pour continuer son chemin dans la bonne directions. Cela sera sûrement plus claire quand je posterai mon code, mais je ne pourrais le faire avant quelques heures n'ayant pas le fichier sur moi.

Edit: Voilà le code si quelqu'un souhaite m'aider et merci d'avance si vous le faites.

#include <Servo.h>                           
 
Servo servoLeft;                             
Servo servoRight;
                                                         
void setup()                                 
{ 
  pinMode(10, INPUT);  pinMode(9, OUTPUT);   
  pinMode(3, INPUT);  pinMode(2, OUTPUT);    

  tone(4, 3000, 1000);                       
  delay(1000);                               

  servoLeft.attach(13);                      
  servoRight.attach(12);                     
}  
 
void loop()
{                                  
  int irLeft = irDetect(9, 10, 38000);       
  int irRight = irDetect(2, 3, 38000);       

  if((irLeft == 1) && (irRight == 1))        
  {                        
    turnRight(600);                           
  }
  else if(irLeft == 1)                      
  {   
    turnRight(600);
  }
  else if(irRight == 1)                      
  {
    turnLeft(600);                           
  }
  else                                       
  {
    forward(20);                             
  }
}

int irDetect(int irLedPin, int irReceiverPin, long frequency)
{
  tone(irLedPin, frequency, 8);              
  delay(1);                                  
  int ir = digitalRead(irReceiverPin);       
  delay(1);                                  
  return ir;                                 
}  

void forward(int time)                       
{
  servoLeft.writeMicroseconds(1700);         
  servoRight.writeMicroseconds(1300);        
  delay(time);                               
}

void turnLeft(int time)                      
{
  servoLeft.writeMicroseconds(1300);         
  servoRight.writeMicroseconds(1300);        
  delay(time);                               
}

void turnRight(int time)                     
{
  servoLeft.writeMicroseconds(1700);         
  servoRight.writeMicroseconds(1700);        
  delay(time);                               
}

void backward(int time)                      
{
  servoLeft.writeMicroseconds(1300);         
  servoRight.writeMicroseconds(1700);        
  delay(time);                               
}

Re,

désolé mais ce n'est pas inscrit dans le post que tu as déja réalisé un code.