robot suiveur de ligne et détecteur d'obstacle


j’ai un problème dans le programme de mon robot suiveur de ligne et detecteur d’obstacle . SVP donne moi le code correcte !! ç’est très urgent SVP

int trigg=4;
int echog=5;
int trigf=6;
int echof=7;
int en1=9;
int in1=8;
int in2=10;
int en2=11;
int in3=12;
int in4=13;
#define CNYd A0
#define CNYg A1
int v=50;
int Dg;


void setup() {
  // put your setup code here, to run once:
pinMode(trigf,OUTPUT);
pinMode(trigg,OUTPUT);
pinMode(echof,INPUT);
pinMode(echog,INPUT);
pinMode(en1,OUTPUT);
pinMode(in1,OUTPUT);
pinMode(in2,OUTPUT);
pinMode(in3,OUTPUT);
pinMode(in4,OUTPUT);
pinMode(en2,OUTPUT);
pinMode(CNYd,INPUT);
pinMode(CNYg,INPUT);
Serial.begin(9600);
}

void forward(){
  analogWrite(en1,50);
  analogWrite(en2,50);
  digitalWrite(in1,HIGH);
  digitalWrite(in3,HIGH);
  digitalWrite(in2,LOW);
  digitalWrite(in4,LOW);
}

void backward(){
  analogWrite(en1,50);
  analogWrite(en2,50);
  digitalWrite(in2,HIGH);
  digitalWrite(in4,HIGH);
  digitalWrite(in1,LOW);
  digitalWrite(in3,LOW);
}

void left(int a){
  analogWrite(en1,a);
  analogWrite(en2,5);
  digitalWrite(in1,HIGH);
  digitalWrite(in3,HIGH);
  digitalWrite(in2,LOW);
  digitalWrite(in4,LOW);
}

void right(int b){
  analogWrite(en1,5);
  analogWrite(en2,b);
  digitalWrite(in1,HIGH);
  digitalWrite(in3,HIGH);
  digitalWrite(in2,LOW);
  digitalWrite(in4,LOW);
}
long testUSf(){
    long duration_f, Df;
   digitalWrite(trigf, LOW); 
  delayMicroseconds(2);
  digitalWrite(trigf, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigf, LOW);
  duration_f = pulseIn(echof, HIGH);
  Df = (duration_f/2) / 29.1;
return Df;
}

int testUSg(){
    long duration_g, Dg;
   digitalWrite(trigg, LOW); 
  delayMicroseconds(2);
  digitalWrite(trigg, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigg, LOW);
  duration_g = pulseIn(echog, HIGH);
  Dg = (duration_g/2) / 29.1;
return Dg;
}




void loop() {
  // put your main code here, to run repeatedly:

int g=analogRead(CNYg);
int d=analogRead(CNYd);

  if ( (d<400) && (g>400)) 
  {
    left(v);
  }
 else if ( (g<400) && (d>400)) 
  {
    right(v);
  }
  else
  {
    forward();
  }
}
void obstacle()
{
  if ( echof<20)
  {
  left(v);
  
  }
  else
  {
    forward();
  } 
  }

bonjour déjà, quel problème

le Programme est incorrect

Super!!! on a vachement avancé là.

Tu pourrais pas expliquer clairement ce que tu attends et ce qui se passe. Que retournent les capteurs?

Salut,

De plus il manque aussi des informations, quel type de carte moteur shield ou équivalent pour le pilotage des moteurs CC, détecteur obstacle par capteurs Ultra-son , quid des capteurs de suivi de ligne ?

Le plus simple serait de faire un programme pour capteurs protection obstacle et valider fonctionnement du programme, puis faire de même avec gestion pilotage moteur et suivi de ligne.

@+

salut . Voici la vidéo https://vimeo.com/225280220 le matériels utilise 1 arduino uno 1 l298 (pent H) 2 motoreducteur+roue 1 roue folle 2 ultra-son ( avant et a gauche ) 2 cny 70 et merci

le programme fait bien ce que tu lui demande, il suit la ligne, s'arrête devant l'obstacle. maintenant, c'est ta manière de faire qui n'est pas bonne. Tu lui fais faire un 360, puis tout droit, un 1/8 de tour et tout droit.

tu peux me donner le programme pour faire ça correctement

anisrguez:
tu peux me donner le programme pour faire ça correctement

t’es mignon toi, déjà en lisant ton 1er post sans bonjour ni rien

j’ai un problème dans le programme de mon robot suiveur de ligne et detecteur d’obstacle . SVP donne moi le code correcte !! ç’est très urgent SVP

c’est à toi de cogiter un peu pour savoir ce que doit faire ton robot.
mets toi à sa place, papier crayon et retranscris après en code.

ce la première fois que je publie dans cette forum donc je suis désole et aussi ce mon première robot et je une compétition après demain donc svp aide moi

On ne sait toujours pas comment le robot devrait se comporter face à l'obstacle. Si tu décrivais clairement ce que le robot devrait faire, tu ne crois pas que ce serait plus facile pour le programmer?

3 mois pour atteindre ce stade, mais ne tiennent pas seulement un jour.Et j'essaie toute solution :'(

Désolé pas compris!!!

Qu'est-ce que le robot devrait faire lorsqu'il rencontre un obstacle?

Évitement Obstacle et Continuer de suivre la ligne

Dans le programe que tu donnes, tu n'appelles même pas la fonction de détection d'obstacle.

Donc évitement ça veut dire quoi: 1) tu contournes par un coté disons par exemple par la droite: - tourner à droite 90° - avancer d'une certaine distance - tourner à gauche 90° - avancer d'une certaine distance - tourner à gauche 90° - avancer jusqu'à trouver la ligne

2) le contournement terminé, il faut se recaler sur la ligne - tourner sur la droite en se centrant sur la ligne

3) et c'est reparti

oui je changer le programme . voici void obstacle () { left(100); delay(550); Stop(); delay(200); forward(70); delay(450); Stop(); delay(100); right(100); delay(400); forward(70); delay(500); Stop(); delay(500); } else {} } Encore ne fonctionnait pas