Comment écrire du code modulaire pour arduino?

Je voudrais créer un programme avec des modules séparés, est-ce possible d'utiliser Arduino IDE?

2

5 Réponses

Bien que vous puissiez créer vos propres bibliothèques pour Arduino, un moyen simple de créer du code réutilisable consiste à créer un fichier d’en-tête (.h) contenant le code que vous souhaitez rendre réutilisable.

Plus précisément, dans l'IDE Arduino, créer un nouvel onglet portant le nom foo .h et dans votre onglet principal, ajoutez #include "foo.h" en haut de votre code. Cela consiste essentiellement à copier-coller le code de foo.h dans votre code pendant la processus de construction . Bien que simple d’exécution, cela aide vraiment à organiser du code plus complexe et, dans votre cas, à réutiliser du code.

Vous pouvez également utiliser "des fichiers de code Arduino normaux (aucune extension visible), des fichiers C (extension .c), des fichiers C ++ (.cpp) ou des fichiers d’en-tête (.h)". "

Et une note supplémentaire pour vous aider - les fichiers d’en-tête n’ont pas accès à certaines commandes et fonctionnalités Arduino typiques, telles que delay() ou Serial , sauf si vous ajoutez < code> #include "Arduino.h" . Toutefois, pour les versions de l'EDI inférieures à 1.0, utilisez #include "WProgram.h" . Cela vous donnera accès à ces fonctions.

2
ajouté

Les esquisses Arduino peuvent inclure des bibliothèques (voir https://www.arduino.cc/en/Guide/Libraries ).

Pour pouvoir travailler avec l'IDE Arduino, une telle bibliothèque est tenue de respecter une certaine structure de dossiers et certaines conventions de dénomination (comme décrit dans le guide ci-dessus).

En dehors de cela, il est similaire au code modularisé dans n'importe quelle autre langue. Le langage canonique dans les bibliothèques Arduino est C ++.

Étant donné qu'une installation IDE Arduino standard est déjà préinstallée avec une multitude de bibliothèques, vous pouvez y jeter un coup d'œil et partir.

Je vous recommande de parcourir les exemples d'esquisses (à partir de l'option de menu "Exemples"). Chaque fois que vous voyez une déclaration #include en haut de l'esquisse, vous avez une indication sur la prochaine étape à suivre pour mieux comprendre les travaux intérieurs.

2
ajouté

Le code d’esquisse peut facilement être fractionné en plusieurs fichiers en créant un nouvel onglet (fichier) sans extension de nom de fichier ni .ino ( source ). Pas besoin de #include , car l'EDI Arduino combine ces fichiers pour le processus de construction.

Pour une modularisation appropriée, créez une bibliothèque ou cliquez sur le lien ci-dessus pour plus d'informations sur l'utilisation de .h/.c/.cpp en tant que modules.

0
ajouté

J'aimerais créer un programme avec des modules séparés. Est-ce possible d'utiliser Arduino IDE?

la réponse dépend de votre code.

l'écriture de code modulaire est principalement un processus de pensée:

1) vous devez concevoir votre code selon un modèle logique: au lieu de définir une led sur la broche 2, vous concevez votre code pour définir une broche, utilisez ce code pour définir une broche spécifiée comme LED_PIN, puis définissez LED_PIN sur la broche 2 Avec cette approche, vous pouvez simplement redéfinir LED_PIN dans votre nouveau projet pour utiliser le même code.

2) vous devez concevoir votre code de haut en bas: plutôt que de commencer à écrire votre code immédiatement, décomposez-le en blocs logiques, concevez l'entrée et la sortie de chaque bloc de manière à ce qu'ils fonctionnent ensemble de manière cohérente. C'est la partie la plus difficile de l'écriture de code modulaire.

ensuite, décomposer le code en fichiers .c/.h devient un jeu d’art.

0
ajouté

Eh bien .... Les réponses sont intéressantes mais dépendent de ce à quoi JuanV pense quand il dit "modules séparés" ... Pour moi, en tant que "vieux logiciel de minuterie", "modules séparés" signifie que je construis un bloc de code central (un mot) et le module de téléchargement utilisateur qui sont automatiquement "branchés" sur le mot, développant la fonctionnalité. Un peu comme un pilote d’imprimante que vous ajoutez à votre système et qui ajoute des fonctionnalités à tous les logiciels. Quand je regarde mon ancien développeur utilisant cela, je dois admettre que j'ai du mal à penser à cela sur Arduino. Si vous cherchez cela, vous devez penser à divers problèmes:

1) comment mettre à jour? Peut-être avec une application Android obtenant le code du Web et envoyant ces données à l'Arduino via Bluetooth. Vous pouvez également penser à ajouter une interface Wifi sur l'Arduino

2) où stocker le nouveau morceau de code ... Il semble que vous pouvez écrire sur le flash "à la volée" mais semble être compliqué

En raison de ce deuxième point, le moyen le plus simple serait peut-être de créer un mot qui "interprétera" les données (donc qui lira une sorte de petit script) et il ne vous restera plus qu'à envoyer les données. Je suggère de jeter un coup d'œil à la CNC réalisée avec Arduino. Dans la plupart des cas, ils utilisent un interpréteur GCode. GCode est un langage descriptif pour les machines CNC. Ainsi, l'interprète lit le code et, conformément au code, envoie des "ordres" à la machine. Une telle chose serait peut-être un bon point de départ.

D'autre part, si ce que vous appelez "approche modulaire" est simplement le moyen de construire et de réutiliser lib, la réponse de Lord Gonk est le moyen :)

0
ajouté