Aller au contenu


Photo
- - - - -

Probleme sur code.


  • Veuillez vous connecter pour répondre
14 réponses à ce sujet

#1 Newbies

Newbies

    Membre passionné

  • Membres
  • PipPipPip
  • 487 messages
  • Gender:Male
  • Location:Paris

Posté 09 décembre 2012 - 12:45

Alors voila je viens de recevoir mon arduino et , aprés avoir lu le MEGA tuto du site du zero ( 300 pages ^^) je me sens fin prés pour mon premier projet. Un robot autonome !

Il serait composé de deux capteur ultrasons HC-SR04 placé a l'avant du robot a 45°.

Une arduino UNO R3.

Deux moteurs CC sans controleur.

Le chassis est dejas fait est il est a chenilles.


Voici le code que j'ai fais ( je sais qu'il est faux car le compilateur n'en veut pas ) mais je ne sais pas ce qui est faux ^^


C'est donc le que j'ai besoin de votre aide... ( soyez indulgent c'est un de mes premier code ^^).


Voila le code :

int TRIGPINcapteurg = 13;
int ECHOPINcapteurg = 12;
int TRIGPINcapteurd = 11;
int ECHOPINcapteurd = 10;
int moteurgauche = 9;
int moteurdroit = 8;

void setup() {  
  pinMode(ECHOPINcapteurg, INPUT);
  pinMode(TRIGPINcapteurg, OUTPUT);
  pinMode(ECHOPINcapteurd, INPUT);
  pinMode(TRIGPINcapteurd, OUTPUT);
  pinMode(moteurgauche,OUTPUT);
  pinMode(moteurdroit,OUTPUT);
 }

void loop() {

// recuperation données du capteur gauche.

long durationcapteurg, cmcapteurg;
digitalWrite (TRIGPINcapteurg, LOW);
delayMicroseconds(2)
digitalWrite(TRIGPINcapteurg, HIGH)
delayMicroseconds(10)
digitalWrite(TRIGPINcapteurg, LOW);
durationcapteurg = pulseIn(ECHOPINcapteurg, HIGH);
cmcapteurg = durationcapteurg / 29 / 2; 
}

// recuperation données du capteur droit.

long durationcapteurd, cmcapteurd;
digitalWrite (TRIGPINcapteurd, LOW);
delayMicroseconds(2);
digitalWrite(TRIGPINcapteurd, HIGH)
delayMicroseconds(10);
digitalWrite(TRIGPINcapteurd, LOW);
durationcapteurd = pulseIn(ECHOPINcapteurd, HIGH);
cmcapteurd = durationcapteurd / 29 / 2; //


if ( cmcapteurg < 15)

{
digitalWrite ( moteurgauche, LOW);
digitalWrite ( moteurdroit, HIGH);
}

else if ( cmcapteurg => 15)

{
digitalWrite ( moteurgauche, HIGH);
digitalWrite ( moteurdroit, LOW);
}

else 

{
  digitalWrite ( moteurgauche, LOW);
digitalWrite ( moteurdroit, LOW);
}


if ( cmcapteurd < 15)
{

digitalWrite ( moteurgauche, LOW);
digitalWrite ( moteurdroit, HIGH);
}

else if ( cmcapteurd => 15)
{

digitalWrite ( moteurgauche, HIGH);
digitalWrite ( moteurdroit, LOW);
}

else 
{
  digitalWrite ( moteurgauche, LOW);
digitalWrite ( moteurdroit, LOW);
}






Et le message d'erreur du compilateur :


debut_code_robot.ino: In function 'void loop()':
debut_code_robot:24: error: expected `;' before 'digitalWrite'
debut_code_robot.ino: At global scope:
debut_code_robot:34: error: expected constructor, destructor, or type conversion before '(' token
debut_code_robot:35: error: expected constructor, destructor, or type conversion before '(' token
debut_code_robot:36: error: expected constructor, destructor, or type conversion before '(' token
debut_code_robot:38: error: expected constructor, destructor, or type conversion before '(' token
debut_code_robot:39: error: expected constructor, destructor, or type conversion before '=' token
debut_code_robot:40: error: expected constructor, destructor, or type conversion before '=' token
debut_code_robot:43: error: expected unqualified-id before 'if'
debut_code_robot:45: error: expected unqualified-id before '{' token
debut_code_robot:50: error: expected unqualified-id before 'else'
debut_code_robot:52: error: expected unqualified-id before '{' token
debut_code_robot:57: error: expected unqualified-id before 'else'
debut_code_robot:59: error: expected unqualified-id before '{' token
debut_code_robot:65: error: expected unqualified-id before 'if'
debut_code_robot:72: error: expected unqualified-id before 'else'
debut_code_robot:79: error: expected unqualified-id before 'else'


#2 flo_geek

flo_geek

    Membre occasionnel

  • Membres
  • Pip
  • 89 messages
  • Gender:Male

Posté 09 décembre 2012 - 01:15

Salut déjà il te manque plein de point virgule ensuite tu a plein de ligne de code hors de ta fonction loop qui sont déclaré dans aucune fonction à partir de // récupération du capteur droit
Essai de réglé ces erreurs tu devrait avoir moins de problème ensuite reposte nous les erreurs de compilation si il y en a encore @++

#3 Black Templar

Black Templar

    Membre

  • Membres
  • PipPipPipPipPip
  • 1 430 messages
  • Gender:Male
  • Location:Lille

Posté 09 décembre 2012 - 06:20

Et aussi, indente ton code pour y voir plus clair !
Tu verras alors que tu as du code en dehors de fonction, ce qui n'est pas possible

Mon site internet : http://ferdinandpiette.com/


#4 Newbies

Newbies

    Membre passionné

  • Membres
  • PipPipPip
  • 487 messages
  • Gender:Male
  • Location:Paris

Posté 09 décembre 2012 - 11:46

Voila, j'ai remis tout bien dans le loop et mis les points virgules et voila maintenant il me surligne cette ligne " if ( cmcapteurg < 15); " et me dit " expected unqualified-id before "if" ".

Et le compilateur me donne encore les erreurs suivantes :



debut_code_robot:44: error: expected unqualified-id before 'if'
debut_code_robot:46: error: expected unqualified-id before '{' token
debut_code_robot:51: error: expected unqualified-id before 'else'
debut_code_robot:53: error: expected unqualified-id before '{' token
debut_code_robot:58: error: expected unqualified-id before 'else'
debut_code_robot:60: error: expected unqualified-id before '{' token
debut_code_robot:66: error: expected unqualified-id before 'if'
debut_code_robot:67: error: expected unqualified-id before '{' token
debut_code_robot:73: error: expected unqualified-id before 'else'
debut_code_robot:74: error: expected unqualified-id before '{' token
debut_code_robot:80: error: expected unqualified-id before 'else'
debut_code_robot:81: error: expected unqualified-id before '{' token


Et aussi, indente ton code pour y voir plus clair !


Comment fait on sa ? :)

#5 Microrupteurman

Microrupteurman

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 2 210 messages
  • Gender:Male
  • Location:Aquitaine,Gironde

Posté 09 décembre 2012 - 11:57

Ya plus rapide pour lire tes capteur US ! Cherche.

 
Page Facebook : https://www.facebook...appartelier2.0/
Page Twitter :  https://twitter.com/2Appartelier (bateau seulement)
Boutique Robot-Maker : https://www.robot-ma...er-20/produits/

Besoin d'une impression 3D grand format ? Contactez moi !
 


#6 Black Templar

Black Templar

    Membre

  • Membres
  • PipPipPipPipPip
  • 1 430 messages
  • Gender:Male
  • Location:Lille

Posté 09 décembre 2012 - 11:57

Voila, j'ai remis tout bien dans le loop et mis les points virgules et voila maintenant il me surligne cette ligne " if ( cmcapteurg < 15); " et me dit " expected unqualified-id before "if" ".


Poste ton nouveau code, mais met le entre balises [ code] [ /code] pour le mise en page Image IPB


Comment fait on sa ? Image IPB


à chaque fois que tu entre dans un if, il faut que tu appuies sur tabulation pour décaler le code, afin que visuellement l'on sache que ce bout de code appartient au if. Et c'est vrai de façon général pour toutes les accolades (if, else, for, while, fonctions, etc.)

Exemple, ton code non indenté
if ( cmcapteurg < 15)

{
digitalWrite ( moteurgauche, LOW);
digitalWrite ( moteurdroit, HIGH);
}

else if ( cmcapteurg => 15)

{
digitalWrite ( moteurgauche, HIGH);
digitalWrite ( moteurdroit, LOW);
}

else 

{
digitalWrite ( moteurgauche, LOW);
digitalWrite ( moteurdroit, LOW);
}

ton code bien indenté
if ( cmcapteurg < 15) {
	digitalWrite ( moteurgauche, LOW);
	digitalWrite ( moteurdroit, HIGH);
} else if ( cmcapteurg => 15) {
	digitalWrite ( moteurgauche, HIGH);
	digitalWrite ( moteurdroit, LOW);
} else {
	digitalWrite ( moteurgauche, LOW);
	digitalWrite ( moteurdroit, LOW);
}

à la limite, cette config marche aussi :
if ( cmcapteurg < 15) 
{
	digitalWrite ( moteurgauche, LOW);
	digitalWrite ( moteurdroit, HIGH);
} 
else if ( cmcapteurg => 15) 
{
	digitalWrite ( moteurgauche, HIGH);
	digitalWrite ( moteurdroit, LOW);
} 
else 
{
	digitalWrite ( moteurgauche, LOW);
	digitalWrite ( moteurdroit, LOW);
}

Mon site internet : http://ferdinandpiette.com/


#7 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 969 messages
  • Gender:Male
  • Location:Anglet

Posté 09 décembre 2012 - 12:18

J'ai pas trop le temps de zieuter ton code mais j'ai aussi un autre conseil : en plus d'indenter ton code, commente le ! Limite à chaque ligne surtout au début !

exemple de code indenté et commenté:

/* Ce programme a été ecrit par XXXXXXX xxxxxxxx alias mike118 en 2012*/
/* Il permet d'afficher une matrice de caractère de largeur WIDTH et de longueur HEIGHT */
/* Tous les caractère de cette matrice sont initialisé en "-" */ 
/* Une première modification de la matrice permet d'afficher un carré A B C D*/
/* Une seconde modification de la matrice permet d'afficher la fonction sin() */


/**/											/* DIRECTIVES PREPROCESSEUR */


#define WIDTH 30								/* Declaration et initialisation de la largeur de la matrice*/
#define HEIGHT 10								/* Declaration et initialisation de la longueur de la matrice*/

#include <stdio.h>								/* Declaration de printf() et fprintf()  */
#include <stdlib.h> 	               						/* Declaration de exit() */
#include <math.h> 								/* Declaration de sin() */


/**/											/* DECLARATION DES PRTOTYPES DES FONCTIONS */


void init(char[WIDTH][HEIGHT] );	                			/* Déclaration de la fonction d'initialisation */
void afficher(char[WIDTH][HEIGHT] );	                         		/* Déclaration de la fonction afficher */
void modif1(char a[WIDTH][HEIGHT] );		                        	/* Déclaration de la fonction modif1 */
void modif2(char a[WIDTH][HEIGHT] );		                         	/* Déclaration de la fonction modif2 */


/**/                                                                                    /* FONCTION PRINCIPALE */


int main()								        /* Début de la fonction principale */
{
	char grille[WIDTH][HEIGHT];					        /* Déclaration de la matrice grille */
	
	init(grille);								/* Initialisation de la matrice */
	modif1(grille);								/* Modification pour affichage du carre ABCD */
	afficher( grille);							/* Afficher la grille */
	init(grille);								/* Initialisation de la matrice */
	modif2(grille);								/* Modification pour affichage du sinus */
	afficher( grille);							/* Afficher la grille */
	system("cls");								/* On nettoit l'écran */
	return 0 ;                                                              /* Fin de la fonction principale */
}

/**/											/* DEFINITION DES FONCTIONS */


void init(char a[WIDTH][HEIGHT] )       				                /* Initialisation de la matrice */
{
	int i=0;								/* Variable de parcours de colonne */
	int j=0;								/* Variable de parcours de ligne */
	for (i=0;i<WIDTH;i++)							/* Double boucle imbriquée pour parcourir la matrice et initialiser toute les valeurs à "-" */
	{ 
		for (j=0;j<HEIGHT;j++)
		{
			a[i][j] = '-';						/* Initialisation de la valeur de l'élément de la matrice à "-" */
		}
	}
}


void afficher(char a[WIDTH][HEIGHT] )	                		                /* Afficher la grille */
{	
	system("cls");								/* On nettoit l'écran avant d'afficher */
	printf("\n");                                            	        /* Saut de ligne */
	int i=0;								/* Variable de parcours de colonne */
	int j=0;			        				/* Variable de parcours de ligne */
	for (j=0;j<HEIGHT;j++)							/* Double boucle imbriquée pour parcourir tout la matrice et afficher toute les valeurs */
	{ 
		for (i=0;i<WIDTH;i++)
		{
			printf("%c ",a[i][j]);					/* Affichage de valeur */
		}
		printf("\n");                                                   /* Saut de ligne */
	}
	printf("\nAppuyez sur ENTREE pour continuer");  			/* demande d'appuyer sur entrée pour afficher étape par étape les modifications */
	scanf("%*c");								/* On appuit sur une touche pour continuer*/
}


void modif1(char a[WIDTH][HEIGHT] )		                 	        	/* Modification pour affichage du carre ABCD */
{
	a[1][1]='A';								/*On impose les valeurs A B C D aux 4 points particuliers souhaité */ 
	a[5][1]='B';
	a[1][5]='C';
	a[5][5]='D';
}

void modif2(char a[WIDTH][HEIGHT] ) 	                                		/* Modification pour affichage du sinus */
{
	int x=0;								/* Variable de parcour de la colonne = variable de la fonction sinus */
	for (x =0; x<WIDTH; x++)						/* Boucle simple sur la valeur de colonne */
	{ 
		a[x][(int)(3+3*sin(x))] = 'o';					/* création de la valeur de ligne qui sera modifié en fonction de la colone par le sinus */
	}									/* et remplacement de l'élément choisis par "o" */
}

												/* FIN DU PROGRAMME */

Perso je pars du principe que si je ne suis pas capable de comprendre les grandes ligne du programme juste en lisant les commentaires, ce programme ne vaut pas la peine que je passe du temps dessus à la debugger... car je risque de perdre plus de temps à comprendre les grandes lignes pour pouvoir effectuer le debuggage que de faire le debuggage en lui même...

Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#8 Newbies

Newbies

    Membre passionné

  • Membres
  • PipPipPip
  • 487 messages
  • Gender:Male
  • Location:Paris

Posté 09 décembre 2012 - 01:07

Voila mon code modifier et commenté. :)


int TRIGPINcapteurg = 13;              // Declaration des variables.
int ECHOPINcapteurg = 12;              //
int TRIGPINcapteurd = 11;              //
int ECHOPINcapteurd = 10;              //
int moteurgauche = 9;                  //
int moteurdroit = 8;                   //

void setup() {                         // Initialisation.
  pinMode(ECHOPINcapteurg, INPUT);     //
  pinMode(TRIGPINcapteurg, OUTPUT);    //
  pinMode(ECHOPINcapteurd, INPUT);     //
  pinMode(TRIGPINcapteurd, OUTPUT);    //
  pinMode(moteurgauche,OUTPUT);        //
  pinMode(moteurdroit,OUTPUT);         //
 }

void loop() {
                                                   // recuperation données du capteur gauche et convertionen cm.
long durationcapteurg, cmcapteurg;                 //
digitalWrite (TRIGPINcapteurg, LOW);               //
delayMicroseconds(2);                              //
digitalWrite (TRIGPINcapteurg, HIGH);              //
delayMicroseconds(10);                             //
digitalWrite(TRIGPINcapteurg, LOW);                //
durationcapteurg = pulseIn(ECHOPINcapteurg, HIGH); //
cmcapteurg = durationcapteurg / 29 / 2;            //


                                                   // recuperation données du capteur droit et convertion en cm.
long durationcapteurd, cmcapteurd;                 //
digitalWrite (TRIGPINcapteurd, LOW);               //
delayMicroseconds(2);                              //
digitalWrite(TRIGPINcapteurd, HIGH);               //
delayMicroseconds(10);                             //
digitalWrite(TRIGPINcapteurd, LOW);                //
durationcapteurd = pulseIn(ECHOPINcapteurd, HIGH); //
cmcapteurd = durationcapteurd / 29 / 2;            //
}


if ( cmcapteurg < 15);                // Si distance entre capteurg et obstacle inferieur a 15 cm.

{
digitalWrite ( moteurgauche, LOW);   // On tourne a droite.
digitalWrite ( moteurdroit, HIGH);   //
}

else if ( cmcapteurg => 15);         // Sinon si distance entre capteurg et obstacle superieur ou egal a 15 cm.

{
digitalWrite ( moteurgauche, HIGH);  // On tourne a gauche.
digitalWrite ( moteurdroit, LOW);    //
}

else ;                               // Sinon.

{
  digitalWrite ( moteurgauche, LOW);  // On avance tout droit.
  digitalWrite ( moteurdroit, LOW);   //
}

if ( cmcapteurd < 15);                // Si distance entre capteurd et obstacle inferieur a 15 cm.
{

digitalWrite ( moteurgauche, HIGH);  // On tourne a gauche.
digitalWrite ( moteurdroit, LOW);    //
}

else if ( cmcapteurd => 15);         // Sinon si distance entre capteurd et obstacle superieur ou egal a 15 cm.
{

digitalWrite ( moteurgauche, HIGH);  // On tourne a droite.
digitalWrite ( moteurdroit, LOW);    //
}

else ;                               // Sinon.
{
  digitalWrite ( moteurgauche, LOW); // On avance tout droit
digitalWrite ( moteurdroit, LOW);    //
}

// FIN DU PROGRAMME




Ya plus rapide pour lire tes capteur US ! Cherche.



J'ai beaucoup cherché mais la plus pars des code plus simple que j'ai trouvé se font avec des capteur a une seul PIN de sortit ( ping ) alors que moi j'ai trig et echo.

Exemple code avec ping ( exemple arduino )

/* Ping))) Sensor
  
   This sketch reads a PING))) ultrasonic rangefinder and returns the
   distance to the closest object in range. To do this, it sends a pulse
   to the sensor to initiate a reading, then listens for a pulse 
   to return.  The length of the returning pulse is proportional to 
   the distance of the object from the sensor.
     
   The circuit:
	* +V connection of the PING))) attached to +5V
	* GND connection of the PING))) attached to ground
	* SIG connection of the PING))) attached to digital pin 7

   http://www.arduino.cc/en/Tutorial/Ping
   
   created 3 Nov 2008
   by David A. Mellis
   modified 30 Aug 2011
   by Tom Igoe
 
   This example code is in the public domain.

 */

// this constant won't change.  It's the pin number
// of the sensor's output:
const int pingPin = 7;

void setup() {
  // initialize serial communication:
  Serial.begin(9600);
}

void loop()
{
  // establish variables for duration of the ping, 
  // and the distance result in inches and centimeters:
  long duration, inches, cm;

  // The PING))) is triggered by a HIGH pulse of 2 or more microseconds.
  // Give a short LOW pulse beforehand to ensure a clean HIGH pulse:
  pinMode(pingPin, OUTPUT);
  digitalWrite(pingPin, LOW);
  delayMicroseconds(2);
  digitalWrite(pingPin, HIGH);
  delayMicroseconds(5);
  digitalWrite(pingPin, LOW);

  // The same pin is used to read the signal from the PING))): a HIGH
  // pulse whose duration is the time (in microseconds) from the sending
  // of the ping to the reception of its echo off of an object.
  pinMode(pingPin, INPUT);
  duration = pulseIn(pingPin, HIGH);

  // convert the time into a distance
  inches = microsecondsToInches(duration);
  cm = microsecondsToCentimeters(duration);
  
  Serial.print(inches);
  Serial.print("in, ");
  Serial.print(cm);
  Serial.print("cm");
  Serial.println();
  
  delay(100);
}

long microsecondsToInches(long microseconds)
{
  // According to Parallax's datasheet for the PING))), there are
  // 73.746 microseconds per inch (i.e. sound travels at 1130 feet per
  // second).  This gives the distance travelled by the ping, outbound
  // and return, so we divide by 2 to get the distance of the obstacle.
  // See: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf
  return microseconds / 74 / 2;
}

long microsecondsToCentimeters(long microseconds)
{
  // The speed of sound is 340 m/s or 29 microseconds per centimeter.
  // The ping travels out and back, so to find the distance of the
  // object we take half of the distance travelled.
  return microseconds / 29 / 2;
}


#9 Black Templar

Black Templar

    Membre

  • Membres
  • PipPipPipPipPip
  • 1 430 messages
  • Gender:Male
  • Location:Lille

Posté 09 décembre 2012 - 01:08

ton code n'est absolument pas modifié (toujours plein de code en dehors de fonction) et absolument pas indenté.
La seule modif, c'est que t'as rajouté des pts virgules là où il n'en fallait pas.

Alors voila je viens de recevoir mon arduino et , aprés avoir lu le MEGA tuto du site du zero ( 300 pages ^^) je me sens fin prés pour mon premier projet.

Si tu n'as fait que lire le tuto, alors ça n'a servi à rien.
Il faut coder en même temps !

Mon site internet : http://ferdinandpiette.com/


#10 Microrupteurman

Microrupteurman

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 2 210 messages
  • Gender:Male
  • Location:Aquitaine,Gironde

Posté 09 décembre 2012 - 01:20

Voila la soluce la plus simple (si ca marche pas, inverse trig et echo)

/////////robot rectangle 07.06.2012


#include "Ultrasonic.h"   // libraire ultrasonic

 


Ultrasonic Hsr1 (12,11); // capteur us brancher sur les pin 12 (trig) et 11 (echo)

void setup ()
{
Serial.begin(9600);
}

void loop ()
{

  int Dhsr1 =Hsr1.Ranging (CM); // aquisition des données du catpeur
  
Serial.println(Dhsr);
delay(50);

   


 
Page Facebook : https://www.facebook...appartelier2.0/
Page Twitter :  https://twitter.com/2Appartelier (bateau seulement)
Boutique Robot-Maker : https://www.robot-ma...er-20/produits/

Besoin d'une impression 3D grand format ? Contactez moi !
 


#11 Newbies

Newbies

    Membre passionné

  • Membres
  • PipPipPip
  • 487 messages
  • Gender:Male
  • Location:Paris

Posté 09 décembre 2012 - 01:54

ton code n'est absolument pas modifié (toujours plein de code en dehors de fonction) et absolument pas indenté.
La seule modif, c'est que t'as rajouté des pts virgules là où il n'en fallait pas.



Voila mais maintenant il y a plus d'erreur qu'avant.


int TRIGPINcapteurg = 13;              // Declaration des variables.
int ECHOPINcapteurg = 12;              //
int TRIGPINcapteurd = 11;              //
int ECHOPINcapteurd = 10;              //
int moteurgauche = 9;                  //
int moteurdroit = 8;                   //

void setup() {                         // Initialisation.
  pinMode(ECHOPINcapteurg, INPUT);     //
  pinMode(TRIGPINcapteurg, OUTPUT);    //
  pinMode(ECHOPINcapteurd, INPUT);     //
  pinMode(TRIGPINcapteurd, OUTPUT);    //
  pinMode(moteurgauche,OUTPUT);        //
  pinMode(moteurdroit,OUTPUT);         //
 }

void loop() {
                                                   // recuperation données du capteur gauche et convertionen cm.
long durationcapteurg, cmcapteurg;                 //
digitalWrite (TRIGPINcapteurg, LOW);               //
delayMicroseconds(2);                              //
digitalWrite (TRIGPINcapteurg, HIGH);              //
delayMicroseconds(10);                             //
digitalWrite(TRIGPINcapteurg, LOW);                //
durationcapteurg = pulseIn(ECHOPINcapteurg, HIGH); //
cmcapteurg = durationcapteurg / 29 / 2;            //


                                                   // recuperation données du capteur droit et convertion en cm.
long durationcapteurd, cmcapteurd;                 //
digitalWrite (TRIGPINcapteurd, LOW);               //
delayMicroseconds(2);                              //
digitalWrite(TRIGPINcapteurd, HIGH);               //
delayMicroseconds(10);                             //
digitalWrite(TRIGPINcapteurd, LOW);                //
durationcapteurd = pulseIn(ECHOPINcapteurd, HIGH); //
cmcapteurd = durationcapteurd / 29 / 2;            //



if ( cmcapteurg < 15); {                   // Si distance entre capteurg et obstacle inferieur a 15 cm.

      digitalWrite ( moteurgauche, LOW);   // On tourne a droite.
      digitalWrite ( moteurdroit, HIGH);   //

} else if ( cmcapteurg => 15); {           // Sinon si distance entre capteurg et obstacle superieur ou egal a 15 cm.

      digitalWrite ( moteurgauche, HIGH);  // On tourne a gauche.
      digitalWrite ( moteurdroit, LOW);    //

} else ; {                                  // Sinon.

        digitalWrite ( moteurgauche, LOW);  // On avance tout droit.
        digitalWrite ( moteurdroit, LOW);   //    
      }

if ( cmcapteurd < 15); {                   // Si distance entre capteurd et obstacle inferieur a 15 cm.


      digitalWrite ( moteurgauche, HIGH);  // On tourne a gauche.
      digitalWrite ( moteurdroit, LOW);    //


} else if ( cmcapteurd => 15); {           // Sinon si distance entre capteurd et obstacle superieur ou egal a 15 cm.


      digitalWrite ( moteurgauche, LOW);   // On tourne a droite.
      digitalWrite ( moteurdroit, HIGH);   //


} else ; {                                 // Sinon.

      digitalWrite ( moteurgauche, LOW);   // On avance tout droit
      digitalWrite ( moteurdroit, LOW);    //
      }

// FIN DU PROGRAMME




Et voila les erreurs dont une que je ne comprend pas car il me dit qu'il y a un else sans if devant ce qui est faux... Enfin je vous laisse en juger par vous meme ;)


Erreurs : debut_code_robot.ino: In function 'void loop()':
debut_code_robot:48: error: 'else' without a previous 'if'
debut_code_robot:48: error: expected primary-expression before '>' token
debut_code_robot:55: error: 'else' without a previous 'if'
debut_code_robot:67: error: 'else' without a previous 'if'
debut_code_robot:67: error: expected primary-expression before '>' token
debut_code_robot:74: error: 'else' without a previous 'if'
debut_code_robot:78: error: expected `}' at end of input
debut_code_robot:78: error: expected `}' at end of input
debut_code_robot:78: error: expected `}' at end of input
debut_code_robot:78: error: expected `}' at end of input
debut_code_robot:78: error: expected `}' at end of input

#12 Black Templar

Black Templar

    Membre

  • Membres
  • PipPipPipPipPip
  • 1 430 messages
  • Gender:Male
  • Location:Lille

Posté 09 décembre 2012 - 02:05

Voilà qui est mieux !
Sauf que :
  • tu n'as pas fermé l'accolade de la fonction loop() (tu aurais vu ça si tu avais correctement indenté ton code dans cette fonction !)
  • tu as mis des point-virgules après tes if, else et else if ! Il ne faut jamais faire ça ! un point-virgule ne se met qu'après une instruction ! (c'est pourquoi le compilo te dit qu'il n'y a pas de il avant le else ! le compilo ne se trompe jamais !)

Mon site internet : http://ferdinandpiette.com/


#13 Newbies

Newbies

    Membre passionné

  • Membres
  • PipPipPip
  • 487 messages
  • Gender:Male
  • Location:Paris

Posté 09 décembre 2012 - 02:45

Voila j'ai resolut le probleme en : - elevant les point virgules inutiles
- terminant la fontion loop a l'aide d'une accolade
- en remplacant les => en >=

Voila le code final reste plus qu'a faire le robot et a tester ;)/>

int TRIGPINcapteurg = 13;                                // Declaration des variables.
int ECHOPINcapteurg = 12;                                //
int TRIGPINcapteurd = 11;                                //
int ECHOPINcapteurd = 10;                                //
int moteurgauche = 9;                                    //
int moteurdroit = 8;                                     //

void setup() {                                           // Initialisation.
  pinMode(ECHOPINcapteurg, INPUT);                       //
  pinMode(TRIGPINcapteurg, OUTPUT);                      //
  pinMode(ECHOPINcapteurd, INPUT);                       //
  pinMode(TRIGPINcapteurd, OUTPUT);                      //
  pinMode(moteurgauche,OUTPUT);                          //
  pinMode(moteurdroit,OUTPUT);                           //
 }

void loop() {
                                                         // recuperation données du capteur gauche et convertionen cm.
      long durationcapteurg, cmcapteurg;                 //
      digitalWrite (TRIGPINcapteurg, LOW);               //
      delayMicroseconds(2);                              //
      digitalWrite (TRIGPINcapteurg, HIGH);              //
      delayMicroseconds(10);                             //
      digitalWrite(TRIGPINcapteurg, LOW);                //
      durationcapteurg = pulseIn(ECHOPINcapteurg, HIGH); //
      cmcapteurg = durationcapteurg / 29 / 2;            //


                                                         // recuperation données du capteur droit et convertion en cm.
      long durationcapteurd, cmcapteurd;                 //
      digitalWrite (TRIGPINcapteurd, LOW);               //
      delayMicroseconds(2);                              //
      digitalWrite(TRIGPINcapteurd, HIGH);               //
      delayMicroseconds(10);                             //
      digitalWrite(TRIGPINcapteurd, LOW);                //
      durationcapteurd = pulseIn(ECHOPINcapteurd, HIGH); //
      cmcapteurd = durationcapteurd / 29 / 2;            //




if ( cmcapteurg < 15) {                                  // Si distance entre capteurg et obstacle inferieur a 15 cm.

      digitalWrite ( moteurgauche, LOW);                 // On tourne a droite.
      digitalWrite ( moteurdroit, HIGH);                 //

} else if ( cmcapteurg >= 15) {                          // Sinon si distance entre capteurg et obstacle superieur ou egal a 15 cm.

      digitalWrite ( moteurgauche, HIGH);                // On tourne a gauche.
      digitalWrite ( moteurdroit, LOW);                  //

} else ; {                                               // Sinon.

        digitalWrite ( moteurgauche, LOW);               // On avance tout droit.
        digitalWrite ( moteurdroit, LOW);                //    
      }

if ( cmcapteurd < 15) {                                  // Si distance entre capteurd et obstacle inferieur a 15 cm.


      digitalWrite ( moteurgauche, HIGH);                // On tourne a gauche.
      digitalWrite ( moteurdroit, LOW);                  //


} else if ( cmcapteurd >= 15) {                          // Sinon si distance entre capteurd et obstacle superieur ou egal a 15 cm.


      digitalWrite ( moteurgauche, LOW);                 // On tourne a droite.
      digitalWrite ( moteurdroit, HIGH);                 //


} else  {                                                // Sinon.

      digitalWrite ( moteurgauche, LOW);                 // On avance tout droit
      digitalWrite ( moteurdroit, LOW);                  //
}}

// FIN DU PROGRAMME


Merci encore ;)/>

#14 Black Templar

Black Templar

    Membre

  • Membres
  • PipPipPipPipPip
  • 1 430 messages
  • Gender:Male
  • Location:Lille

Posté 09 décembre 2012 - 03:09

Voilà, c'est beaucoup mieux Image IPB

J'ai corrigé les dernières petites erreurs d'indentations et tu avais laissé un pt-virgules en trop après le dernier else

// Declaration des variables
int TRIGPINcapteurg = 13;                           	
int ECHOPINcapteurg = 12;                           	
int TRIGPINcapteurd = 11;                           	
int ECHOPINcapteurd = 10;                           	
int moteurgauche = 9;                               	
int moteurdroit = 8;                                                	

// Initialisation
void setup() {                                                      	
	pinMode(ECHOPINcapteurg, INPUT);                            	
	pinMode(TRIGPINcapteurg, OUTPUT);                   	
	pinMode(ECHOPINcapteurd, INPUT);                            	
	pinMode(TRIGPINcapteurd, OUTPUT);                   	
	pinMode(moteurgauche,OUTPUT);                       	
	pinMode(moteurdroit,OUTPUT);                                	
}

// Boucle principale
void loop() {
	// recuperation données du capteur gauche et convertionen cm.
	long durationcapteurg, cmcapteurg;                          	
	digitalWrite (TRIGPINcapteurg, LOW);                	
	delayMicroseconds(2);                       	
	digitalWrite (TRIGPINcapteurg, HIGH);       	
	delayMicroseconds(10);                                      	
	digitalWrite(TRIGPINcapteurg, LOW);         	
	durationcapteurg = pulseIn(ECHOPINcapteurg, HIGH); 
	cmcapteurg = durationcapteurg / 29 / 2;     	


	// recuperation données du capteur droit et convertion en cm.
	long durationcapteurd, cmcapteurd;                          	
	digitalWrite (TRIGPINcapteurd, LOW);                	
	delayMicroseconds(2);                       	
	digitalWrite(TRIGPINcapteurd, HIGH);                	
	delayMicroseconds(10);                                      	
	digitalWrite(TRIGPINcapteurd, LOW);         	
	durationcapteurd = pulseIn(ECHOPINcapteurd, HIGH); 
	cmcapteurd = durationcapteurd / 29 / 2;     	




	if ( cmcapteurg < 15) {							// Si distance entre capteurg et obstacle inferieur a 15 cm.
		digitalWrite ( moteurgauche, LOW);			// On tourne a droite.
		digitalWrite ( moteurdroit, HIGH);                  	
	} else if ( cmcapteurg >= 15) {					// Sinon si distance entre capteurg et obstacle superieur ou egal a 15 cm.
		digitalWrite ( moteurgauche, HIGH);			// On tourne a gauche.
		digitalWrite ( moteurdroit, LOW);           	
	} else {										// Sinon.
		digitalWrite ( moteurgauche, LOW);			// On avance tout droit.
		digitalWrite ( moteurdroit, LOW);           	
	}

	if ( cmcapteurd < 15) {							// Si distance entre capteurd et obstacle inferieur a 15 cm.
		digitalWrite ( moteurgauche, HIGH);			// On tourne a gauche.
		digitalWrite ( moteurdroit, LOW);           	
	} else if ( cmcapteurd >= 15) {					// Sinon si distance entre capteurd et obstacle superieur ou egal a 15 cm.
		digitalWrite ( moteurgauche, LOW);			// On tourne a droite.
		digitalWrite ( moteurdroit, HIGH);                  	
	} else  {										// Sinon.
		digitalWrite ( moteurgauche, LOW);			// On avance tout droit
		digitalWrite ( moteurdroit, LOW);           	
	}
}

// FIN DU PROGRAMME

Mon site internet : http://ferdinandpiette.com/


#15 Newbies

Newbies

    Membre passionné

  • Membres
  • PipPipPip
  • 487 messages
  • Gender:Male
  • Location:Paris

Posté 09 décembre 2012 - 09:12

C'est vrai que le tien est plus propre ;)

En tout cas merci d'avoir pris de votre temps pour mon probleme :)


Je vous informerais de l'avancer de mon projet.




0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users