I Jespère que cest une simple demande dun nouveau venu à Arduino et à la programmation. Jai compris quune fois quun programme entre dans une section de boucle vide, il tourne indéfiniment. Cependant, jai récemment vu des exemples de croquis où une autre section vide $$$$$ suit la fermeture (par}) de la boucle vide. Au moment où jécris ceci, je regarde un exemple concernant un affichage à 7 segments où « void Num_Write (int) » suit la fermeture de la boucle void. Si la section « boucle » fait exactement cela, comme jai été amené à le croire, comment accéder à la section suivante?
Merci, Rob
Commentaires
- En lappelant. tutorialspoint.com/cplusplus/cpp_functions.htm
- Cela ' est également traité dans le Référence Arduino: arduino.cc/en/Reference/FunctionDeclaration
- Pour couronner le tout: cplusplus.com/doc/tutorial/functions
Answer
Le void loop()
la section est une fonction, tout comme void setup()
est une fonction. Lorsque vous démarrez votre programme Arduino une autre fonction, que vous ne pouvez « pas voir dans lIDE, appelez setup()
puis appelez loop()
à plusieurs reprises.
Ces autres fonctions que vous avez vues, cest-à-dire void Num_Write(int n)
peuvent être appelées depuis setup()
ou loop()
et ils exécuteront leurs instructions avant de retourner à la fonction qui les a appelés. Il est également possible que Num_Write()
appelle dautres fonctions avant de renvoyer le contrôleur à la fonction qui a appelé
Le type void
est utilisé pour ne rien représenter (cest en fait plus complexe que cela, mais pour ce niveau dexplication, rien ne fera laffaire). Dautres fonctions peuvent renvoie dautres types int
, char
, bool
par exemple. Donc, si nous avions une fonction comme ceci:
int theMeaningOfLife(void) { return 42; }
Il sagit dune fonction qui renvoie un int
(un umber) donc vous lappelleriez comme ceci:
void setup() { int number = theMeaningOfLife(); }
Il y a une capture, la fonction doit être déclarée AVANT dêtre utilisée, cela permet au compilateur de sachez de quoi vous parlez. La façon la plus simple de faire cela est décrire la fonction au-dessus de la fonction qui lappelle. La deuxième façon est décrire simplement la signature de la fonction au-dessus de la fonction qui lutilise, cest à dire:
int theMeaningOfLife(void); void setup() { int number = theMeaningOfLife(); }
La meilleure façon (mais pas toujours pratique sur un Arduino ) est davoir toutes les déclarations de fonction dans un fichier den-tête (.h) et le code dans un fichier .cpp. (Jetez un œil à une bibliothèque pour voir ce que je veux dire).
Résumé
Il ny a quune seule fonction qui est appelée à plusieurs reprises et cest le loop
. Le simple fait quune fonction renvoie void ne signifie pas quelle va en boucle à plusieurs reprises.
Commentaires
- Vous avez écrit: « la fonction doit être déclarée AVANT dêtre utilisée ». En fait, lIDE Arduino exécute votre code à travers une étape de pré-traitement qui le fait pour vous, ce qui signifie que vous navez pas besoin de le faire vous-même. Je considérerais toujours une bonne pratique pour men tenir à cette règle, ne serait-ce que parce quelle rend le code compilable en dehors de lEDI, par exemple avec un Makefile .
- @EdgarBonet – Merci, je ne lai jamais su. Je pense que je devrais loublier, sinon je ' commencerai à lessayer au travail et finirai par marracher les cheveux pour essayer de comprendre pourquoi [il] a gagné ' t compiler. 🙂