boucle void suivie dautres expressions “ void ”

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

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. 🙂

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *