Pages: [1] 2 3   Go Down
Author Topic: help code robot autonome  (Read 1870 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 23
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,
Je suis en train de réaliser un robot à apprentissage automatique basé sur la régression linéaire (Le robot n'est à la base pas programmé pour se déplacer dans une pièce mais après l'avoir guidé avec une télécommande il comprend les tensions qu'il doit envoyé dans ses moteurs en fonction des valeurs retournées par ses capteurs.)
Bref, tout d'abord, il faut que je sache programmé le robot de façon à ce qu'il se déplace dans une pièce tout seul (comme roby) pour après passer à la partie intelligence artificielle.
Mais voilà je bloque. Je sais que mes fonctions avancer,reculer,droite,gauche sont juste (j'ai fait un programme ou le robot effectue les déplacements que je lui demande). Je sais aussi que les capteurs ultrasons sont programmés correctement puisque qu'avec le serial monitor j'ai vérifié que les valeurs retournées étaient justes.
C'est dans ma fonction "if" que j'ai des doutes...et j'ai peur aussi que je me trompe quand j'essaye de retourner les valeurs des capteurs obtenues dans les différentes fonctions. Pourtant j'ai vérifié qu'elles sont bien supérieurs à la valeur que je test mais le robot tourne sur lui même à droite.
Et si je change la valeur des if çà ne change rien le robot tourne quand même sur lui même!
Voilà le code si quelqu'un pouvait m'aider.
Merci beaucoup
Code:
/*--------------------------------------------------------*/
/** Déclaration des prototypes des fonctions **/
/*--------------------------------------------------------*/

// Capteurs US
void requete();
int mesure_distance(char capteur);
int mesure_reponse(char capteur);
void affichage();

//Déplacement
void avancer(char a,char B);
void reculer(char c,char d);
void droite(char e,char f);
void gauche(char g,char h);


/*--------------------------------------------------------*/
/** Déclaration des constantes et variables blobales **/
/*--------------------------------------------------------*/
//capteurs US
const int capteurdroit=7;
const int capteurgauche=8;
long duree;
int distance_cm;
int distancedroite, distancegauche;

//Moteurs
const int E1 = 5; // contrôle la vitesse du moteur 1 (gauche)
const int E2 = 6; // contrôle la vitesse du moteur 2 (droite)
const int M1 = 4; //contrôle la direction (avancer ou reculer) du moteur 1 (gauche)
const int M2 = 7; //contrôle la direction (avancer ou reculer) du moteur 2 (gauche)






/*--------------------------------------------------------*/
/** Début du programme - Setup **/
/*--------------------------------------------------------*/
void setup() {
Serial.begin(9600);

//direction robot
pinMode(M1, OUTPUT); //met la pin du moteur 1 en sortie
pinMode(M2, OUTPUT); //met la pin du moteur 2 en sortie
pinMode(E1, OUTPUT); //met la pin de E1 en sortie
pinMode(E2, OUTPUT); //met la pin de E2 en sortie
//direction robot
}

/*--------------------------------------------------------*/
/** Boucle principale du programme **/
/*--------------------------------------------------------*/
void loop()
{
distancedroite=mesure_distance(capteurdroit); //recupere l'info de distance de l'obstacle du capteur droit
//Serial.println("capteur droit:");
//affichage(); //affiche cette distance

distancegauche=mesure_distance(capteurgauche); //recupere l'info de distance de l'obstacle du capteur droit
//Serial.println("capteur gauche:");
//affichage(); //affiche cette distance

if (distancegauche<20) //si un obstacle se presente à gauche
{
droite (100,100); //on tourne à droite
delay(400); //pendant 0,4 secondes
}

else if (distancedroite<20) //si un obstacle se presente à droite
{
gauche (100,100); //on tourne à gauche
delay(400); //pednant 0,4 secondes
}

else
{
avancer (130,130); //sinon on avance tout le temps
}
//delay(1000); //attend pour un affichage plus clair
}




/*--------------------------------------------------------*/
/** Fonctions relatives aux capteurs US **/
/*--------------------------------------------------------*/
int mesure_distance(char capteur)
{
requete(capteur); //envoie la demande au capteur
mesure_reponse(capteur); //recupere la distance mesurée
return distance_cm;
}


void requete(char capteur)
{
pinMode(capteur,OUTPUT);

digitalWrite(capteur, LOW);
delayMicroseconds(2); //delai d'attente au départ, au niveau 0
digitalWrite(capteur, HIGH);
delayMicroseconds(15); // delai de 15 uS, imposant un niveau '1' au capteur
digitalWrite(capteur, LOW);
}




int mesure_reponse(char capteur)
{
pinMode(capteur,INPUT);

duree=pulseIn(capteur,HIGH); // attend l'impulsion du capteur, et retourne sa durée en microseconde

//if(duree>30000) //test de la condition d'abscence d'obstacle
// duree=0;

distance_cm=duree/58;
return distance_cm;
}


void affichage()
{

// if(duree==0) // Si on a détécté precedemment qu'il n'y a pas d'obstacle, on l'affiche
// Serial.println("Pas d'obstacle!!!!!");

// else // Si non, on affiche la distance
// {
Serial.print(duree);
Serial.println("uS");

Serial.print(distance_cm);
Serial.println("cm");
// }
}



/*--------------------------------------------------------*/
/** Fonctions relatives aux moteurs **/
/*--------------------------------------------------------*/


void avancer(char a,char B) //avancer
{
analogWrite (E1,a); //PWM Speed Control a permet de changer la vitesse du moteur 1
digitalWrite(M1,HIGH); //M1 avance
analogWrite (E2,B);
digitalWrite(M2,HIGH); //M2 avance
}

void reculer(char c,char d) //reculer
{
analogWrite (E1,c); //PWM Speed Control
digitalWrite(M1,LOW); //M1 recule
analogWrite (E2,d);
digitalWrite(M2,LOW); //M2 recule
}

void droite(char e,char f) //tourner à droite
{
analogWrite (E1,e); //PWM Speed Control
digitalWrite(M1,HIGH);
analogWrite (E2,f);
digitalWrite(M2,LOW);
}

void gauche(char g,char h) //tourner à gauche
{
analogWrite (E1,g); //PWM Speed Control
digitalWrite(M1,LOW);
analogWrite (E2,h);
digitalWrite(M2,HIGH);
}


Edit de Jean-François : merci de mettre le code entre les balises avec le bouton #
« Last Edit: January 17, 2012, 01:41:50 am by Jean-François » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 23
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Voilà les résultats de quelques tests si çà peut vous aider:
Si à la place du if je lui fait faire des mouvements prédéfinis il n'y arrive pas. Maintenant si je supprime les lignes de code concernant le calcul de distancedroite et distancegauche  çà marche (le robot exécute les bons mouvements.)
C'est donc ces fonctions qui posent problème. Pourtant je sais que les valeurs qu'elles prennent sont les bonnes (200cm car j'ai un appartement de 4m donc quand il est au milieu...)
Je me demande si comme j'ai écrit le programme le robot exécute seulement la 1ère instruction plein de fois et il arrive jamais au if?
Enfin j'en sais rien en fait je bloque dessus depuis 3 semaines c'est vraiment frustrant.
Merci pour votre aide
mopi
Logged

Offline Offline
God Member
*****
Karma: 3
Posts: 670
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut Mopi
J'ai regardé succintement ton programmme ,et je vais peut-etre une bétise ,mais dans le Prog principale je ne vois pas d'appel à la fonction lecture capteurs ?? ou ai-je mal regardé ?!! ou pas bien compris (ce qui ne m'étonnerai pas non plus  smiley-lol smiley-wink  )
@+
William
Logged

The truth is elsewhere !!

Offline Offline
Newbie
*
Karma: 0
Posts: 23
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut!
Merci pour ta réponse smiley
Je ne sais pas si tu parles de la fonction afficher? Si c'est le cas, oui je ne l'appelle pas puisqu'elle me sert à rien c'était juste pour vérifier que j'avais bien programmé les capteurs en utilisant la datasheet et en effet ils me renvoient bien les bonnes distances.
Sinon j'utilise bien la fonction "mesuredistance" qui elle fait appelle à  autres fonctions (les capteurs nécessitent une initialisation avant chaque mesure c'est pourquoi il faut faire une requête avant de mesurer un temps (que je convertis après en distance))
Voilà si tu as d'autres questions? Je suis vraiment bloqué là je te remercie pour ton aide
merci
mopi
Logged

0
Offline Offline
God Member
*****
Karma: 0
Posts: 798
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Yep!

Pourquoi declares-tu la variable 'capteur' de type char ???

Pour ma part, ce serait plutôt une variable integrale !!! Quelles sont les infos que te retournent tes US (pin digital ou analogique) ???

@+

Zoroastre.
« Last Edit: January 17, 2012, 12:56:41 pm by zoroastre » Logged

Veuillez indiquer [RESOLU] dans l'entête du titre en éditant votre premier message smiley-wink

Offline Offline
Newbie
*
Karma: 0
Posts: 23
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut
En fait j'utilise la même fonction pour trouver la distance d'un obstacle au capteur droit ou au capteur gauche.
Donc la fonction reçoit en entrée le capteur droit ou gauche qui sont à la patte 7 et 8 donc un char suffit amplement non?
Les ultrasons calculent un temps que je convertis en cm grâce à l vitesse du son dans l'air donc ils me retournent une distance en cm (environ 200cm dans mon appartement quand le robot est au milieu.)
Je n'ai jamais apprit la notion de variable integrale désolé.
Merci zoroastre !!!!!
Logged

0
Offline Offline
God Member
*****
Karma: 0
Posts: 798
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Yep!

Essayes de remplacer :
Code:
int mesure_distance(char capteur);
int mesure_reponse(char capteur);
par
Code:
int mesure_distance(int capteur);
int mesure_reponse(int capteur);

Idem dans tes fonctions suivantes...

integral = int

Je pense que si tu declares un char, tu le convertis ensuite en valeur integrale. Et char(135) n'equivaut pas à int(135)...

@+

Zoroastre
« Last Edit: January 17, 2012, 01:16:45 pm by zoroastre » Logged

Veuillez indiquer [RESOLU] dans l'entête du titre en éditant votre premier message smiley-wink

Offline Offline
Sr. Member
****
Karma: 2
Posts: 259
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut,

Voici la déclaration et l'intégration de ta fonction 'mesure_distance()':
Code:
int mesure_distance(char capteur);

...

int mesure_distance(char capteur)
{
requete(capteur); //envoie la demande au capteur
mesure_reponse(capteur); //recupere la distance mesurée
return distance_cm;
}

Tu utilises une variable de type char en paramètre.

Voici maintenant la variable que tu envoies en paramètre, dans la fonction 'mesure_distance()':
Code:
const int capteurdroit=7;

...

mesure_distance(capteurdroit);

Tu passes donc une variable type int dans une fonction qui demande une variable type char.
Remplace soit le type de la constante, soit le type de variable appelée dans ta fonction; essaie et tiens nous au courant.

EDIT: grillé par zoroastre  smiley-cool
« Last Edit: January 17, 2012, 01:20:31 pm by schizophrene » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 23
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci beaucoup pour votre aide çà fait du bien !!
Mais çà ne marche toujours pas il doit y avoir une autre erreur. Mais merci çà m'a permit d'apprendre qu'on passait pas d'un char à un int aussi facilement.
Voilà le nouveau programme si j'ai bien compris:

Code:
/*--------------------------------------------------------*/
/** Déclaration des prototypes des fonctions **/
/*--------------------------------------------------------*/

// Capteurs US
void requete(int capteur);
int mesure_distance(int capteur);
int mesure_reponse(int capteur);
void affichage();

//Déplacement
void avancer(char a,char B);
void reculer(char c,char d);
void droite(char e,char f);
void gauche(char g,char h);


/*--------------------------------------------------------*/
/** Déclaration des constantes et variables blobales **/
/*--------------------------------------------------------*/
//capteurs US
const int capteurdroit=7;
const int capteurgauche=8;
long duree;
int distance_cm;
int distancedroite, distancegauche;

//Moteurs
const int E1 = 5; // contrôle la vitesse du moteur 1 (gauche)
const int E2 = 6; // contrôle la vitesse du moteur 2 (droite)
const int M1 = 4; //contrôle la direction (avancer ou reculer) du moteur 1 (gauche)
const int M2 = 7; //contrôle la direction (avancer ou reculer) du moteur 2 (gauche)






/*--------------------------------------------------------*/
/** Début du programme - Setup **/
/*--------------------------------------------------------*/
void setup() {
Serial.begin(9600);

//direction robot
pinMode(M1, OUTPUT); //met la pin du moteur 1 en sortie
pinMode(M2, OUTPUT); //met la pin du moteur 2 en sortie
pinMode(E1, OUTPUT); //met la pin de E1 en sortie
pinMode(E2, OUTPUT); //met la pin de E2 en sortie
//direction robot
}

/*--------------------------------------------------------*/
/** Boucle principale du programme **/
/*--------------------------------------------------------*/
void loop()
{
distancedroite=mesure_distance(capteurdroit); //recupere l'info de distance de l'obstacle du capteur droit
//Serial.println("capteur droit:");
//affichage(); //affiche cette distance

distancegauche=mesure_distance(capteurgauche); //recupere l'info de distance de l'obstacle du capteur droit
//Serial.println("capteur gauche:");
//affichage(); //affiche cette distance

if (distancegauche<20) //si un obstacle se presente à gauche
{
droite (100,100); //on tourne à droite
delay(400); //pendant 0,4 secondes
}

else if (distancedroite<20) //si un obstacle se presente à droite
{
gauche (100,100); //on tourne à gauche
delay(400); //pednant 0,4 secondes
}

else
{
avancer (130,130); //sinon on avance tout le temps
}
//delay(1000); //attend pour un affichage plus clair
}




/*--------------------------------------------------------*/
/** Fonctions relatives aux capteurs US **/
/*--------------------------------------------------------*/
int mesure_distance(int capteur)
{
requete(capteur); //envoie la demande au capteur
mesure_reponse(capteur); //recupere la distance mesurée
return distance_cm;
}


void requete(int capteur)
{
pinMode(capteur,OUTPUT);

digitalWrite(capteur, LOW);
delayMicroseconds(2); //delai d'attente au départ, au niveau 0
digitalWrite(capteur, HIGH);
delayMicroseconds(15); // delai de 15 uS, imposant un niveau '1' au capteur
digitalWrite(capteur, LOW);
}




int mesure_reponse(int capteur)
{
pinMode(capteur,INPUT);

duree=pulseIn(capteur,HIGH); // attend l'impulsion du capteur, et retourne sa durée en microseconde

//if(duree>30000) //test de la condition d'abscence d'obstacle
// duree=0;

distance_cm=duree/58;
return distance_cm;
}


void affichage()
{

// if(duree==0) // Si on a détécté precedemment qu'il n'y a pas d'obstacle, on l'affiche
// Serial.println("Pas d'obstacle!!!!!");

// else // Si non, on affiche la distance
// {
Serial.print(duree);
Serial.println("uS");

Serial.print(distance_cm);
Serial.println("cm");
// }
}



/*--------------------------------------------------------*/
/** Fonctions relatives aux moteurs **/
/*--------------------------------------------------------*/


void avancer(char a,char B) //avancer
{
analogWrite (E1,a); //PWM Speed Control a permet de changer la vitesse du moteur 1
digitalWrite(M1,HIGH); //M1 avance
analogWrite (E2,B);
digitalWrite(M2,HIGH); //M2 avance
}

void reculer(char c,char d) //reculer
{
analogWrite (E1,c); //PWM Speed Control
digitalWrite(M1,LOW); //M1 recule
analogWrite (E2,d);
digitalWrite(M2,LOW); //M2 recule
}

void droite(char e,char f) //tourner à droite
{
analogWrite (E1,e); //PWM Speed Control
digitalWrite(M1,HIGH);
analogWrite (E2,f);
digitalWrite(M2,LOW);
}

void gauche(char g,char h) //tourner à gauche
{
analogWrite (E1,g); //PWM Speed Control
digitalWrite(M1,LOW);
analogWrite (E2,h);
digitalWrite(M2,HIGH);
}
Logged

Offline Offline
Sr. Member
****
Karma: 2
Posts: 259
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Re salut,

Voici le code de ta fonction 'requete()':
Code:
void requete(int capteur)
{
pinMode(capteur,OUTPUT);

digitalWrite(capteur, LOW);
delayMicroseconds(2); //delai d'attente au départ, au niveau 0
digitalWrite(capteur, HIGH);
delayMicroseconds(15); // delai de 15 uS, imposant un niveau '1' au capteur
digitalWrite(capteur, LOW);
}

Je ne suis pas sûr de ce que j'avance, mais il me semble qu'utiliser pinMode() en plein programme ne fonctionne pas (mais je peux me tromper, il me semblait l'avoir lu ici même une fois). Il faut utiliser la manipulation de port à la place.

Essaie de mettre les pinMode() dans le setup(), et tiens nous au courant.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 23
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Si çà peut vous aider, voilà ce que j’obtiens dans mon serial monitor si j'active l'affichage:
(une première mesure au milieu de l'appartement puis je mets mes mains devant les capteurs)

capteur droit:
17855uS
307cm
capteur gauche:
11839uS
204cm
capteur droit:
797uS
13cm
capteur gauche:
501uS
8cm
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 23
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Je suis obligé de le faire dans la requête car il faut la mettre en sortie avant chaque nouvelle mesure et vu que la setup se lance qu'une seule fois c'est pas possible comme çà.
J'ai quand même essayé et du coup il fait qu'une seule mesure et après les capteurs renvoient 0 donc j'ai triché et j'ai fait un
if(duree==0)   duree=20000;

Comme çà après la 1ère mesure les capteur renvoient une très grande distance. Mais çà veut quand même pas marché donc çà ne doit pas venir de là.
Merci pour ton aide en tout cas.
Logged

0
Offline Offline
God Member
*****
Karma: 0
Posts: 798
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Yep!

Tes resultats ont l'air correct, non ??? (Il faut pas diviser le temps du signal par 2 pour aller/retour ???)

Faudrait virer tout les char, ceux des déplacements aussi. Ca fait pas propre d'envoyer des a, des z, etc au moteur...

Lorsque tu fais gauche (100,100);, on sait pas trop si tu envoies char(100) ou int(100). A priori, c'est un char que tu envoies et je ne vois pas comment tes pins sorties moteur peuvent l'interpreter...

@+

Zoroastre.
Logged

Veuillez indiquer [RESOLU] dans l'entête du titre en éditant votre premier message smiley-wink

Offline Offline
Newbie
*
Karma: 0
Posts: 23
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

J'ai bien divisé par 2. (et les résultats sont correct oui)

J'ai changé le programme mais en fait j'avais fait çà car les pin E1 et E2 permettent de contrôler les vitesses des moteurs mais bon je peux faire comme tu me dis et mettre des vitesses constantes comme ceci (mais ce code ne marche toujours pas, le robot tourne sur lui même vers la droite et si je met main devant le capteur gauche rien ne ce passe et si je la met devant le droit, le robot recule alors que je ne fait jamais appel à la fonction reculer je ne comprend plus rien! )
merci pour ton aide !!!!!!

Code:
/*--------------------------------------------------------*/
/** Déclaration des prototypes des fonctions **/
/*--------------------------------------------------------*/

// Capteurs US
void requete(int capteur);
int mesure_distance(int capteur);
int mesure_reponse(int capteur);
void affichage();

//Déplacement
void avancer();
void reculer();
void droite();
void gauche();


/*--------------------------------------------------------*/
/** Déclaration des constantes et variables blobales **/
/*--------------------------------------------------------*/
//capteurs US
const int capteurdroit=7;
const int capteurgauche=8;
long duree;
int distance_cm;
int distancedroite, distancegauche;

//Moteurs
const int E1 = 5; // contrôle la vitesse du moteur 1 (gauche)
const int E2 = 6; // contrôle la vitesse du moteur 2 (droite)
const int M1 = 4; //contrôle la direction (avancer ou reculer) du moteur 1 (gauche)
const int M2 = 7; //contrôle la direction (avancer ou reculer) du moteur 2 (gauche)






/*--------------------------------------------------------*/
/** Début du programme - Setup **/
/*--------------------------------------------------------*/
void setup() {
Serial.begin(9600);

//direction robot
pinMode(M1, OUTPUT); //met la pin du moteur 1 en sortie
pinMode(M2, OUTPUT); //met la pin du moteur 2 en sortie
pinMode(E1, OUTPUT); //met la pin de E1 en sortie
pinMode(E2, OUTPUT); //met la pin de E2 en sortie
//direction robot
}

/*--------------------------------------------------------*/
/** Boucle principale du programme **/
/*--------------------------------------------------------*/
void loop()
{
distancedroite=mesure_distance(capteurdroit); //recupere l'info de distance de l'obstacle du capteur droit
//Serial.println("capteur droit:");
//affichage(); //affiche cette distance

distancegauche=mesure_distance(capteurgauche); //recupere l'info de distance de l'obstacle du capteur droit
//Serial.println("capteur gauche:");
//affichage(); //affiche cette distance

if (distancegauche<20) //si un obstacle se presente à gauche
{
droite (); //on tourne à droite
delay(400); //pendant 0,4 secondes
}

else if (distancedroite<20) //si un obstacle se presente à droite
{
gauche (); //on tourne à gauche
delay(400); //pednant 0,4 secondes
}

else
{
avancer (); //sinon on avance tout le temps
}
//delay(1000); //attend pour un affichage plus clair
}




/*--------------------------------------------------------*/
/** Fonctions relatives aux capteurs US **/
/*--------------------------------------------------------*/
int mesure_distance(int capteur)
{
requete(capteur); //envoie la demande au capteur
mesure_reponse(capteur); //recupere la distance mesurée
return distance_cm;
}


void requete(int capteur)
{
pinMode(capteur,OUTPUT);

digitalWrite(capteur, LOW);
delayMicroseconds(2); //delai d'attente au départ, au niveau 0
digitalWrite(capteur, HIGH);
delayMicroseconds(15); // delai de 15 uS, imposant un niveau '1' au capteur
digitalWrite(capteur, LOW);
}




int mesure_reponse(int capteur)
{
pinMode(capteur,INPUT);

duree=pulseIn(capteur,HIGH); // attend l'impulsion du capteur, et retourne sa durée en microseconde

//if(duree>30000) //test de la condition d'abscence d'obstacle
// duree=0;

distance_cm=duree/58;
return distance_cm;
}


void affichage()
{

// if(duree==0) // Si on a détécté precedemment qu'il n'y a pas d'obstacle, on l'affiche
// Serial.println("Pas d'obstacle!!!!!");

// else // Si non, on affiche la distance
// {
Serial.print(duree);
Serial.println("uS");

Serial.print(distance_cm);
Serial.println("cm");
// }
}



/*--------------------------------------------------------*/
/** Fonctions relatives aux moteurs **/
/*--------------------------------------------------------*/


void avancer() //avancer
{
analogWrite (E1,200); //PWM Speed Control a permet de changer la vitesse du moteur 1
digitalWrite(M1,HIGH); //M1 avance
analogWrite (E2,200);
digitalWrite(M2,HIGH); //M2 avance
}

void reculer() //reculer
{
analogWrite (E1,200); //PWM Speed Control
digitalWrite(M1,LOW); //M1 recule
analogWrite (E2,200);
digitalWrite(M2,LOW); //M2 recule
}

void droite() //tourner à droite
{
analogWrite (E1,200); //PWM Speed Control
digitalWrite(M1,HIGH);
analogWrite (E2,200);
digitalWrite(M2,LOW);
}

void gauche() //tourner à gauche
{
analogWrite (E1,200); //PWM Speed Control
digitalWrite(M1,LOW);
analogWrite (E2,200);
digitalWrite(M2,HIGH);
}
Logged

0
Offline Offline
God Member
*****
Karma: 0
Posts: 798
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Yep!

Commentes cette première partie et vois comment ton robot réagit.

Code:
/*
//Déplacement
void avancer();
void reculer();
void droite();
void gauche();
*/

@+

Zoroastre.
Logged

Veuillez indiquer [RESOLU] dans l'entête du titre en éditant votre premier message smiley-wink

Pages: [1] 2 3   Go Up
Jump to: