tout d'abord merci bcp pour la réponse
et je suis désolé a propos les commentaires dans le code ... j'ai l’écrit pendant les tests
voila mon code avec les modification mais rien changé
#include <NewPing.h>
// capteur ultrasonic
#define trigPin 12 // Pin Trigger branchée sur la broche 12 de l'arduino
#define echoPin 11 // Pin Echo branchée sur la broche 11 de l'arduino
NewPing sonar(trigPin, echoPin);
int cm = 0; //declare une variable cm qui je l'utilise dans la comparaison
boolean PasObstacle;
const int distanceObstacle =10; // Distance de détection d'un obstable : ici 10 cm
int distance = 0;
//définition des bouttons
int button1=20; //vert
int button=21; //rouge
int z;
int w;
// définition des capteur ultrason
int cap1=3; // cap gauche
int cap2=4; // cap milieu
int cap3=5; // cap milieu
int cap4=6; // cap droite
// definition de boche de la carte de puissance
int varmot2=9;
int av2=7; //avant
int ar2=8; //arrière
int varmot1=14;
int av1=15; //avant
int ar1=16;
boolean a;
boolean b;//les deux capteurs au milieu
boolean c;//les deux capteurs au milieu
boolean d;
boolean stope;// j'ecrit stope à la fin "e" car tt simplement lorque j'ecrit stop elle devient en rouge don je pense que c'est une fonction prédifine.
boolean left;
boolean right;
boolean forward;
boolean backward;
void setup() {
pinMode(varmot1,OUTPUT);
pinMode(av1,OUTPUT);
pinMode(ar1,OUTPUT);
pinMode(varmot2,OUTPUT);
pinMode(av2,OUTPUT);
pinMode(ar2,OUTPUT);
Serial.begin(9600);
pinMode(button,INPUT);
pinMode(button1,INPUT);
}
void loop() {
a = digitalRead(cap1) ; // a recoi la valeur de cap1 (1 ou 0)
b = digitalRead(cap2) ;// b recoi la valeur de cap2 (1 ou 0)
c = digitalRead(cap3) ;// c recoi la valeur de cap3 (1 ou 0)
d = digitalRead(cap4) ;// d recoi la valeur de cap4 (1 ou 0)
right=(((!a)&&(d))&&(c||(!b))); // le robot doit tourner à droite lorsque la condition est vrai c'est à dire ( le capteur à droite est en noir OU bien le capteur droite ET le milieu en noir )
left=((a&&(!d))&&(b||(!c))); // le robot doit tourner à gauche lorsque la condition est vrai c'est à dire ( le capteur à gauche est en noir OU bien le capteur gauche ET le milieu en noir )
backward=(((!a)&&(!c))&&((!b)&&(!d))); // le robot doit étre marche en arriére lorsque il sort de map c'est à dire les 4 capteur en blanc
forward=((!a)&&(b)&&(c)&&(!d)); // le robot doit étre marche en avant lorsque le 2 capteur au milieu est en noir
stope=(a&&b&&c&&d);// le robot fait un stop lorsque les 4 capteur en noir
lecture ();// fonction pour just affichier le valeur des capteur en moniteur série
distance = mesureDistance(); // on lit la valeur en cm
if (PasObstacle) {
z=digitalRead(20);
w=digitalRead(21);
if ((stope)&&(w==1)) // si le robot est en stop est on appui sue le bouton rouge il tourne droite
{
droite ();
delay(500);
}
else if ((stope)&&(z==1)) // si le robot est en stop est on appui sue le bouton vert rouge il marche avant
{
avant();
delay(500);
}
if (left)
{
gauche () ;
}
else if (right)
{
droite();
}
else if (forward)
{
avant();
}
else if (backward)
{
arrier ();
}
else if (stope)
{
stopp();}
}
else
{
stopp();}
}
unsigned int mesureDistance() { // fonctin pour comparer la distance calculé avec la distanceobstacle
int cm = sonar.ping_cm();
if (cm > distanceObstacle) {
PasObstacle = true; // on renvoie true s'il n'y pas d'obstacle
}
else {
PasObstacle = false; // on renvoie false s'il y a un obstacle
}
return cm; // retourne la distance du capteur en cm
}
void lecture ()
{
Serial.print(a);
Serial.print(b);
Serial.print(c);
Serial.println(d);
}
void gauche ()
{
analogWrite(varmot1,100);
digitalWrite(av1,0);
digitalWrite(ar1,0);
analogWrite(varmot2,255);
digitalWrite(av2,1);
digitalWrite(ar2,0);
}
void droite ()
{
analogWrite(varmot1,255);
digitalWrite(av1,1);
digitalWrite(ar1,0);
analogWrite(varmot2,100);
digitalWrite(av2,0);
digitalWrite(ar2,0);
}
void avant ()
{
analogWrite(varmot1,250);
digitalWrite(av2,HIGH);
digitalWrite(ar2,LOW);
analogWrite(varmot2,250);
digitalWrite(av1,1);
digitalWrite(ar1,0);
}
void arrier ()
{
analogWrite(varmot1,150);
digitalWrite(av2,LOW);
digitalWrite(ar2,HIGH);
analogWrite(varmot2,150);
digitalWrite(av1,0);
digitalWrite(ar1,1);
}
void stopp ()
{
digitalWrite(av1,LOW);
digitalWrite(ar1,LOW);
digitalWrite(av2,LOW);
digitalWrite(ar2,LOW);
}