Aller au contenu


Photo
- - - - -

Soucis avec création fonction


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

#1 Ulmo

Ulmo

    Membre

  • Membres
  • 32 messages

Posté 02 octobre 2012 - 12:36

Bonjour,

je voudrais créer une fonction pour renvoyer une distance avec un capteur US:

int ECHO()
{
long durationG, distanceG;
digitalWrite(trigG, LOW);
delayMicroseconds(2);
digitalWrite(trigG, HIGH);
delayMicroseconds(10);
digitalWrite(trigG, LOW);
durationG = pulseIn (echoG, HIGH);
distanceG = (durationG/2)/29.1;
return distanceG;
}

Mais, lors de la compilation, l'erreur est : " a fonction-definition is not allowed here before '{'token "

Je pige pas, j'ai pourtant suivi des exemples de création de fonction...Quelle est mon erreur ?

#2 R1D1

R1D1

    Modérateur et Membre passionné

  • Modérateur
  • PipPipPipPipPip
  • 1 211 messages
  • Gender:Male
  • Location:Autriche

Posté 02 octobre 2012 - 12:55

Utilise la balise [code ] et pense à indenter correctement, ça aide.

En toute logique, il nous manque le reste du programme pour être sûr de ton erreur. Mais a priori, je suppose que tu déclares ta fonction dans loop ou dans setup (et je suppose aussi que tu parles d'un programme Arduino).

Accessoirement : Tuto Ping
R1D1 - Calculo Sed Ergo Sum -- en ce moment, M.A.R.C.E.L.
Avatar tiré du site bottlebot

#3 Ulmo

Ulmo

    Membre

  • Membres
  • 32 messages

Posté 02 octobre 2012 - 05:09

Merci de ta réponse.

Je ne comprends pas "indenter" dans ton message.
J'ai bien déclaré la fonction dans le void loop.
Mais à aucun endroit je ne trouve ces balises [] dans plusieurs exemples de création de fonction.
Oui, c'est bien sur Arduino (mega) que je programme.

Mes retours de mesure de distance sont bons. J'ai juste un soucis (décrit dans le premier message)avec cette fonction, puisque je voudrais pouvoir l'appeler quand j'en ai besoin, et pas recopier le code à chaque fois.

#4 R1D1

R1D1

    Modérateur et Membre passionné

  • Modérateur
  • PipPipPipPipPip
  • 1 211 messages
  • Gender:Male
  • Location:Autriche

Posté 02 octobre 2012 - 05:41

[quote name='R1D1' timestamp='1349178913' post='49139']
Utilise la balise [code ] et pense à indenter correctement, ça aide. <-- ceci concerne ton post
-----------------------------------------------------------------------------
En toute logique, il nous manque le reste du programme pour être sûr de ton erreur. Mais a priori, je suppose que tu déclares ta fonction dans [i]loop[/i] ou dans [i]setup[/i] (et je suppose aussi que tu parles d'un programme Arduino). <-- ceci concerne ton programme
[/quote]
--> [url="http://bit.ly/SlkzFE"]Indenter[/url]

Ce que je veux dire, c'est que tu déclares une fonction dans une fonction. Relis tes cours de C/C++ et les exemples Arduino : on NE déclare PAS une fonction dans une autre. On déclare ses différentes fonctions séparément et ensuite on peut les appeler dans le [i]main[/i].

[code]
void setup()
{
// code de configuration
}

void loop()
{
// code bouclé
banane("pomme");
mesurer();
}

bool banane(string fruit)
{
// code de la fonction
}

float mesurer()
{
// code de la fonction
}
[/code]
R1D1 - Calculo Sed Ergo Sum -- en ce moment, M.A.R.C.E.L.
Avatar tiré du site bottlebot

#5 Ulmo

Ulmo

    Membre

  • Membres
  • 32 messages

Posté 02 octobre 2012 - 05:46

Ok, excuse moi, je suis en plein dans les cours sur le langage C, j'ai le bouquin du site du zero.
C'est vrai, j'avais pas vu que c'etait hors de la fonction loop qu'il fallait déclarer une autre fonction.
Je n'ai pas encore les automatismes.

Merci beaucoup, j'aurai pu chercher peut être longtemps.




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

0 members, 0 guests, 0 anonymous users