Je travaille avec certaines bibliothèques qui fournissent des API pour interagir avec des puces matérielles spécifiques (qui font ces pilotes?). Cependant, différentes cartes ou écrans personnalisés auront la puce mappée sur différentes broches, ce qui signifie que la bibliothèque doit être modifiée pour chaque cas. La nécessité de modifier la bibliothèque ne fonctionne pas bien avec le gestionnaire de bibliothèque Arduino IDE.
Existe-t-il des modèles préférés / recommandés pour exposer cette configuration afin que la bibliothèque elle-même n'ait pas besoin d'être modifiée à chaque fois?
Réponses:
La méthode que j'utilise est de fournir les broches en tant que paramètres au constructeur. Ces numéros de broches sont stockés dans des variables à utiliser plus tard dans la
.begin()
fonction et ailleurs.La plupart du temps, j'utilise des listes d'initialisation pour garder les choses simples. Par exemple:
la source
J'utiliserais l'une des deux possibilités suivantes:
Utilisez des variables (de classe) et définissez-les dans le constructeur.
Avantages:
Utilisez une méthode distincte (par exemple, Init).
Avantages:
Remarques
Pour les réglages des broches, des circuits principalement statiques sont utilisés, donc la première approche est probablement meilleure.
Pour les paramètres, la deuxième méthode est généralement meilleure.
Si plusieurs broches sont impliquées (peu probable), utilisez une structure ou une classe de paramètres de broches distincte.
Macros
Ce que je ne conseillerais pas, ce sont les macros. Lorsque les utilisateurs doivent modifier le code source eux-mêmes et que de nouvelles versions sont installées, ils doivent fusionner ou refaire les modifications. Les avantages sont un peu moins de code (machine), un peu plus rapide probablement et un peu moins de mémoire, mais les trois aspects sont minimes.
la source
selon votre approche.
1) si vous fournissez simplement les fichiers binaires + en-tête, vous devrez faire les variables pins.
2) si vous fournissez le code source et attendez de l'utilisateur qu'il recompile le code source, utilisez des macros.
la source
Dans le cas où vous évitez les éléments du constructeur C ++ qui sont assez couramment une surpuissance sur Arduino, vous pouvez utiliser
#define
les (macros de type objet).Ainsi:
Le préprocesseur sera facilement remplacé
PIN_ONE
par le numéro 1 etPIN_TWO
par 2 en supposant que ces définitions se trouvent dans le.h
fichier d'en- tête de la bibliothèque . Cela prendra probablement le moins de ressources par rapport aux autres solutions possibles.la source