Le forum a migré vers l'adresse suivante:

Forum

Masquer ce message

Simple-Duino Index du Forum



Problème Programme


 
Poster un nouveau sujet   Répondre au sujet    Simple-Duino Index du Forum -> Arduino & Électronique -> Questions
Sujet précédent :: Sujet suivant  
Auteur Message
xxpuniisherxx
Débutant

Hors ligne

Inscrit le: 09 Jan 2014
Messages: 8
Masculin
Niveau d'éléctronique: Débutant

MessagePosté le: Sam 1 Fév - 12:20 (2014)    Sujet du message: Problème Programme Répondre en citant

PublicitéSupprimer les publicités ?
Bonjour,


Je me présente j'ai 16 ans, je suis en 1ère S sciences de l'ingénieur. Cette année je dois réalisé un projet pour les TPE. Avec mon groupe de 3 on a choisit de réaliser un minibot arduino (sparkfun) qui évite les obstacle, qui allume une led de gauche ou droite suivant de quel côté est l'obstacle. On ne connais presque rien en programmation mais nous sommes en train d'apprendre le langage C. Le minibot est monté, j'ai plusieurs messages d'erreurs du même type qui s'affiche 
( error: a function-definition is not allowed here before '{' token ) 
et que je n'arrive pas à résoudre... J'éspèré donc que vous pourriez m'aider.
Si quelqu’un pourrait nous aider svp.


Merci d'avoir lu mon message en espérant avoir de l'aide !


Voici le programme


#define LEFT_LED     9
#define LEFT_BUMP    A1
#define RIGHT_LED    10
#define RIGHT_BUMP   A0


// Les broches PWM (Power Motor) servent à contrôler les vitesses des moteurs.
// Les autres broches sont utilisées pour sélectionner celui de droite/gauche, 
//Avant/Arrière et Arrêter/Frein.


#define LEFT_PWM     3
#define LEFT_1       4
#define LEFT_2       2
#define RIGHT_PWM    6
#define RIGHT_1      5
#define RIGHT_2      7


#define PING_DELAY 1   // On définit le delais le delais pour les capteurs.
#define PING_RATE  10 // On définit les capteurs pour la détéction d'obstacles.




//  Variables d'étalonnage et constantes. Nous utilisons deux niveaux pour détecter le clair 
//et donc fournir un peu d'hystérésis.
//Une fois qu'un objet est détecté, nous voulons attendre un peu avant de le déclarer effacé


// On initialise la variable détécter (droite/gauche) pour la détection et les 2 LEDs.


int rightDetectLevel = 0;
int leftDetectLevel = 0;
int led1 = 13;
int led2 = 2;


// Lorsque le robot ne rencontre plus l'obstacle, il éfface la variable.
int rightClearLevel = 0;
int leftClearLevel = 0;


// Ce sont des changements percentile du niveau, pas de changements absolus. Ainsi, lorsque 
// Le niveau de lumière s'écarte plus que 20% de son "fond" niveau normal, 
// On appelle ça un "hit" et quand il est revenu à moins de 5% de sa normale 
// Niveau, nous considérons que cela soit clair.
#define LEFT_DETECT_OFFSET   20
#define RIGHT_DETECT_OFFSET  20
#define LEFT_CLEAR_OFFSET    5
#define RIGHT_CLEAR_OFFSET   5


// Fin de la définition des variables etc ----------------------------------------------------


// Installation qui s'éxécute au démarrage pour configurer les broches.


void setup()
{
  Serial.begin(57600); // Cette instruction se place obligatoirement
  pinSetup();           // Configure les broches pour la fonctionnalité.
  driveStop();          // Configure la fonctionnalité pour arrêter le robot
  sensorCal();          // testCode() will never return; we'll only execute this
                        //  if we are NOT in test mode. We will also only
                        //  proceed to loop() if we are not in test mode.
                        // initialize the digital pin as an output.
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
}


// C'est ici le "coeur" du programme. 
void loop()
{
  driveRev(60);     // Cette ligne de code dis au robot d'avancer à une vitesse de 60
  delay(PING_RATE);  // Cette ligne permet de limiter la vitesse du balayage des capteurs.
                  
  digitalWrite(LEFT_LED, HIGH);  // Déclanche le capteur gauche.
  digitalWrite(RIGHT_LED, LOW);  // Déclanche le capteur droit.
  delay(2);   // Delais avant de vérifier le niveau.
  
  if (analogRead(LEFT_BUMP) <= leftDetectLevel) // Si le capteur gauche détecte un obstacle
  {
    driveStop();  // Arrêter le moteur
    delay(10);   // pendant 10 millisecondes
    digitalWrite(led2,HIGH); // appeller la variable led2 : LED Verte à s'allumer
    delay(2000); // pendant 2 000 milliscondes c'est a dire 2 secondes
    digitalWrite(led2,LOW); // Lui dis de s'éteindre
    delay(10); 
    
    while(analogRead(LEFT_BUMP) <= leftClearLevel)
    { 
      // Tourner du côté opposé à l'obstacle détécté
      leftRev(59); // Moteur gauche avance à une vitesse de 59
      rightFwd(59); // Moteur droite recule à la même vitesse
      digitalWrite(led1,HIGH); // Eclaire la LED du côté opposé
      delay(100); // pendant 100 millisecondes
      digitalWrite(led1,LOW); // L'éteint
    }
    delay(125);  // attendre 125 ms
    driveRev(60);  // ...puis avancer
  
  // Et c'est repartit pour le même procédé
  digitalWrite(LEFT_LED, LOW);
  digitalWrite(RIGHT_LED, HIGH);
  delay(2);
  if (analogRead(RIGHT_BUMP) <= rightDetectLevel) // mais pour le capteur de droite
  {
    driveStop();
    delay(10);
    digitalWrite(led1,HIGH);
    delay(2000);
    digitalWrite(led1,LOW);
    delay(10);
    while(analogRead(RIGHT_BUMP) <= rightClearLevel)
    {
      rightRev(59);
      leftFwd(59);
    }
    delay(125);
    driveRev(60);
  } // Fin de la détéction de droite
} // Fin de la boucle


// Cette fonction définit les broches nécéssaires : fonctionnement des capteurs, commande de moteur, etc
void pinSetup()
{
  // Entrées analogiques pour les capteurs de détection d'objet.
  pinMode(LEFT_BUMP, INPUT);
  pinMode(RIGHT_BUMP, INPUT);
  // Sorties pour les diodes de détection d'objet.
  pinMode(LEFT_LED, OUTPUT);
  pinMode(RIGHT_LED, OUTPUT);
  // Contrôle des moteur: avancer, reculer, stop ...
  pinMode(LEFT_PWM, OUTPUT);
  pinMode(LEFT_1, OUTPUT);
  pinMode(LEFT_2, OUTPUT);
  pinMode(RIGHT_PWM, OUTPUT);
  pinMode(RIGHT_1, OUTPUT);
  pinMode(RIGHT_2, OUTPUT);
}
// Cette fonction étalonne les conditions d'éclairage locales de sorte que les capteurs 
// puissent détecter des objets sans blindage fantaisie.
void sensorCal()
{
  // initialise les variables à 0 pour qu'elles puissent prendre d'autres valeurs
  int leftCalLevel = 0;
  int rightCalLevel = 0;
  // ... puis lis les capteurs
  digitalWrite(LEFT_LED, HIGH);
  digitalWrite(RIGHT_LED, LOW);
  delay(2);
  leftCalLevel = analogRead(LEFT_BUMP);
  // Now that we have a baseline for the light level with the LED on, but
  //  (hopefully) no object in front of the sensor, under the operating
  //  ambient light conditions, we can calculate the trip levels.
  // First, the detection level. We want to trigger on a level which is some
  //  percentage below "normal" (remembering that, as more light is reflected
  //  to the sensor, the analog value *falls*)...
  leftDetectLevel = int((float)leftCalLevel * (1- (.01 * LEFT_DETECT_OFFSET)));
  // ...then, establish the "clear" point- which is a point below the normal
  //  level, but above the detection point...
  leftClearLevel = int((float)leftCalLevel * (1- (.01 * LEFT_CLEAR_OFFSET)));
  // ...and then repeat for the other side.
  digitalWrite(LEFT_LED, LOW);
  digitalWrite(RIGHT_LED, HIGH);
  delay(2);
  rightCalLevel = analogRead(RIGHT_BUMP);
  // A note on syntax- by putting (float) in front of rightCalLevel, we direct
  //  the compiler to treat that value as a floating point number rather than
  //  as the int we declared it as above. This is called "typecasting" and is
  //  extremely powerful. We then use the int() function to convert the result
  //  back to an integer before storing it.
  rightDetectLevel = int((float)rightCalLevel * (1- (.01 * RIGHT_DETECT_OFFSET)));
  rightClearLevel = int((float)rightCalLevel * (1- (.01 * RIGHT_CLEAR_OFFSET)));
}


// Dans cette partie du programme on va créer les fonctions que l'on a utilisées plus haut
// Ici la fonction qui permet au robot de s'arrêter
void driveStop()
{
  leftStop();
  rightStop(); 
}


// Ici la fonction qui permet de freiner
void driveBrake()
{
  leftBrake();
  rightBrake(); 
}


// Ici pour reculer (foward = avancer, mais sur ce 
// robot il y a un problème donc on a du inverser reculer et avancer)
void driveFwd(byte spd)
{
  leftFwd(spd);
  rightFwd(spd);
}
// donc ici pour reculer 
void driveRev(byte spd)
{
  leftRev(spd);
  rightRev(spd);
}


void leftRev(byte spd)
{
  spd = spd + 30; // Sur cette ligne on a augmenter la vitesse du moteur
                  // gauche pour que le robot puisse rouler droit car les 2 moteurs n'allaient 
                  // pas à la même vitesse
  digitalWrite(LEFT_1, HIGH);
  digitalWrite(LEFT_2, LOW);
  analogWrite(LEFT_PWM, spd);
}


void leftFwd(byte spd)
{
  digitalWrite(LEFT_1, LOW);
  digitalWrite(LEFT_2, HIGH);
  analogWrite(LEFT_PWM, spd);
}


void rightRev(byte spd)
{
  digitalWrite(RIGHT_1, HIGH);
  digitalWrite(RIGHT_2, LOW);
  analogWrite(RIGHT_PWM, spd);
}


void rightFwd(byte spd)
{
  digitalWrite(RIGHT_1, LOW);
  digitalWrite(RIGHT_2, HIGH);
  analogWrite(RIGHT_PWM, spd);
}


void leftBrake()
{
  digitalWrite(LEFT_1, HIGH);
  digitalWrite(LEFT_2, HIGH);
  analogWrite(LEFT_PWM, 0);
}


void rightBrake()
{
  digitalWrite(RIGHT_1, HIGH);
  digitalWrite(RIGHT_2, HIGH);
  analogWrite(RIGHT_PWM, 0);
}


void leftStop()
{
  digitalWrite(LEFT_1, LOW);
  digitalWrite(LEFT_2, LOW);
  analogWrite(LEFT_PWM, 0);
}


void rightStop()
{
  digitalWrite(RIGHT_1, LOW);
  digitalWrite(RIGHT_2, LOW);
  analogWrite(RIGHT_PWM, 0);
}
Revenir en haut
xxpuniisherxx
Débutant

Hors ligne

Inscrit le: 09 Jan 2014
Messages: 8
Masculin
Niveau d'éléctronique: Débutant

MessagePosté le: Sam 1 Fév - 12:21 (2014)    Sujet du message: Problème Programme Répondre en citant

Et voila les erreurs :

tpe__led_termin__traduit.ino: In function 'void loop()':
tpe__led_termin__traduit:130: error: a function-definition is not allowed here before '{' token
tpe__led_termin__traduit:148: error: a function-definition is not allowed here before '{' token
tpe__led_termin__traduit:184: error: a function-definition is not allowed here before '{' token
tpe__led_termin__traduit:191: error: a function-definition is not allowed here before '{' token
tpe__led_termin__traduit:199: error: a function-definition is not allowed here before '{' token
tpe__led_termin__traduit:205: error: a function-definition is not allowed here before '{' token
tpe__led_termin__traduit:211: error: a function-definition is not allowed here before '{' token
tpe__led_termin__traduit:221: error: a function-definition is not allowed here before '{' token
tpe__led_termin__traduit:228: error: a function-definition is not allowed here before '{' token
tpe__led_termin__traduit:235: error: a function-definition is not allowed here before '{' token
tpe__led_termin__traduit:242: error: a function-definition is not allowed here before '{' token
tpe__led_termin__traduit:249: error: a function-definition is not allowed here before '{' token
tpe__led_termin__traduit:256: error: a function-definition is not allowed here before '{' token
tpe__led_termin__traduit:263: error: a function-definition is not allowed here before '{' token
tpe__led_termin__traduit:267: error: expected `}' at end of input
Revenir en haut
xxpuniisherxx
Débutant

Hors ligne

Inscrit le: 09 Jan 2014
Messages: 8
Masculin
Niveau d'éléctronique: Débutant

MessagePosté le: Sam 1 Fév - 12:25 (2014)    Sujet du message: Problème Programme Répondre en citant

Veuillez m'excuser ce n'était pas le bon programme ...
Revenir en haut
Admin
Fondateur

Hors ligne

Inscrit le: 12 Avr 2012
Messages: 860
Masculin
Niveau d'éléctronique: Pro

MessagePosté le: Dim 2 Fév - 10:18 (2014)    Sujet du message: Problème Programme Répondre en citant

Ok on attend le bon alors  fumeurs
____________________________
http://simple-duino.com
Revenir en haut
arnaud39
Débutant

Hors ligne

Inscrit le: 01 Avr 2013
Messages: 378
Masculin
Niveau d'éléctronique: Dieu vivant

MessagePosté le: Jeu 6 Fév - 21:31 (2014)    Sujet du message: Problème Programme Répondre en citant

Ce forum n'accepte plus les nouveau topic , le nouveau est le suivant : tutoarduino.com/forum
Merci de ta compréhension
____________________________
Ancien admin du forum, co-fondateur tutoarduino.com
Revenir en haut
Contenu Sponsorisé






MessagePosté le: Aujourd’hui à 09:06 (2017)    Sujet du message: Problème Programme

Revenir en haut
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Simple-Duino Index du Forum -> Arduino & Électronique -> Questions Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  

Index | creer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Powered by phpBB
Propulsé par Simple-Duino