Photo d'une carte Arduino Uno, 3 DEL et un afficheur 7 segments

Créer une bibliothèque Arduino

Le "Hello, World!" de la bibliothèque Arduino


Bonjour tout le monde,

Aujourd'hui nous allons aborder un petit sujet simple. Il s'agit de la création d'une bibliothèque pour Arduino.

En effet, une fois que l'on a implémenté l'utilisation d'un nouveau composant dans son croquis Arduino, ou une partie d'un sketch que l'on voudrait réutiliser plus tard dans de nouveaux projets ou le diffuser, comment faire pour que ce soit aussi simple qu'un "Croquis / Inclure une bibliothèque > Nom de la bibliothèque" dans l'IDE ?

C'est ce que nous allons voir dans ce petit tutoriel :)

Au menu, nous allons voir comment :

Convertir une portion de croquis en bibliothèque C++

Arduino, bien que basé sur le langage Processing et le framework Wiring, utilise toujours un compilateur C++ en interne pour compiler vos croquis et est donc compatible avec ce langage.

C'est d'ailleurs sous forme d'une bibliothèque C++ que nous allons convertir la portion du croquis que nous voulons conserver.

Pour ce tutoriel, je vais convertir le croquis de Blink, le programme par défaut des cartes Arduino faisant clignoter la DEL verte, en une nouvelle bibliothèque nommée "Blink", dont il suffira d'appeler une fonction appelée blink pour faire clignoter cette DEL et une fonction appelée setup_blink pour initialiser notre bibliothèque. Pour rappel, voici a quoi ressemble ce sketch :

Capture d'écran du croquis Blink dans l'IDE Arduino

Pour convertir ce croquis en bibliothèque, nous allons déplacer le code contenu dans les fonctions void setup() et void loop() dans deux nouvelles fonctions : void setup_blink() et void blink().

Déplacer le code Blink dans des fonctions

Cette étape est très facile. Nous avons besoin d'appeler seulement une seule fois le code contenu dans la fonction void setup() et de manière répétée pour le code contenu dans la fonction void loop(). Le code contenu dans la fonction void setup() sera déplacé dans la fonction void setup_blink() et le code contenu dans la fonction void loop() sera déplacé dans la fonction void blink()void loop() pour exécuter notre code. Pour enregistrer les modifications que vous apportez aux programmes d'exemples d'Arduino, vous devez les enregistrer sous un nouveau nom. Pour cet article, j'ai choisi d'utiliser le nom "BibliothequeBlink". Voici a quoi devrait ressembler à présent notre croquis :

Capture d'écran de l'IDE Arduino avec le code déporté dans les nouvelles fonctions setup_blink et blink

Maintenant que nous avons déplacé le code de notre programme dans fonctions séparées, nous avons besoin de les déplacer dans des fichiers sources dédiés.

Déplacer du code Arduino dans fichiers sources C++

Pour déplacer nos fonctions dans de nouveaux fichiers sources à inclure, nous avons besoin de créer des fichiers sources C ou C++. En effet, votre croquis Arduino est censé être l'unique fichier .ino de votre projet. Pour cela, nous allons créer deux nouveaux fichiers nommés "Blink.h" et "Blink.cpp". Blink.h sera le fichier d'en-tête que l'IDE inclura automatiquement lorsque vous voudrez utiliser votre bibliothèque.

Pour créer un nouveau fichier dans l'IDE Arduino, il vous faut cliquer sur l'icône représentant un triangle pointant vers le bas à droite du nom de votre croquis, sous l'icône loupe puis cliquer sur "Nouvel onglet" ou utiliser la combinaison de touches "Ctrl" + "Majuscule" (la flèche pointant vers le haut à gauche de votre clavier, sous la touche cadenas) + "N" sur votre clavier :

Capture d'écran de la création d'un nouveau fichier dans l'IDE Arduino

Un nouveau menu avec un champ texte et deux boutons "Ok" et "Annuler" devraient s'ouvrir en bas de l'IDE Arduino :

Capture d'écran du menu de création de nouveau fichier de l'IDE Arduino

Ecrivez-y "Blink.h" puis cliquez sur le bouton "OK". Un nouvel onglet devrait alors s'ouvrir. Répétez l'opération pour le fichier "Blink.cpp" et vous devriez obtenir un affichage ressemblant à celui-ci :

Capture d'écran des onglets ouverts dans l'IDE Arduino

Nous devons à présent déplacer nos deux fonctions void setup_blink() et void blink() dans l'onglet "Blink.cpp". Nous devons aussi écrire au début de notre fichier les deux lignes suivantes :

#include <Arduino.h>
#include "Blink.h"

Ces deux lignes indiquent au compilateur d'inclure notre fichier d'en-tête et celui d'Arduino. C'est ce qui lui permet de connaître l'existence des fonctions d'Arduino (comme les fonctions pinMode, digitalWrite et delay que nous utilisons ici) et celles que nous avons écrites dans notre fichier source. Votre fichier Blink.cpp devrait à présent ressembler à ceci :

Capture d'écran du contenu de Blink.cpp dans l'IDE Arduino

Nous avons presque terminé. Nous devons maintenant écrire le contenu du fichier "Blink.h", qui comme dit précédemment, est un fichier permettant au compilateur d'Arduino de connaître les fonctions que nous avons écrites dans "Blink.cpp".

La première ligne à écrire à l'intérieur du fichier "Blink.h" est pragma once. Cette ligne est très importante dans le sens où elle empêche certaines erreurs de compilation si notre fichier "Blink.h" est inclus plusieurs fois. Ensuite, nous devons écrire les prototypes de nos fonctions. Les prototypes de fonctions ont un format similaire à la création d'une fonction, mais elles sont terminées par un ";" à la place des accolades avec le code à l'intérieur. Ainsi, les prototypes de nos deux fonctions sont void setup_blink(); et void blink();. Le contenu de l'onglet "Blink.h" devrait donc ressembler à ceci :

Capture d'écran de l'onglet Blink.h

Enregistrez les modifications et nos deux fichiers sources pour notre bibliothèque sont finalement prêts. Maintenant nous allons créer une bibliothèque Arduino et les déplacer à l'intérieur afin de pouvoir les utiliser dans n'importe quel projet.

Créer une bibliothèque Arduino à partir de fichiers sources C/C++ existants

Pour créer une nouvelle bibliothèque Arduino, nous avons besoin de créer un nouveau dossier dans le dossier "librairies" d'Arduino. Par défaut, ce dossier se trouve aux emplacements suivants :

  • Sous Windows : Documents\Arduino\libraries (Ce PC > Documents > Arduino > libraries dans l'explorateur Windows)
  • Sous OS X : Nom de l'utilisateur/Arduino/libraries
  • Sous Linux : ~/Arduino/libraries ("~" correspondant au dossier "Home" de l'utilisateur)

Le dossier pour notre bibliothèque doit avoir le même nom que le fichier header, sans le ".h" à la fin. Par exemple, si vous avez appelé vos fichiers sources "Blink.cpp" et "Blink.h" comme moi, vous devez créer un nouveau dossier nommé "Blink" comme ceci :

Capture d'écran d'exemple d'un dossier libraries d'Arduino

Déplacer à présent vos fichiers sources dans le dossier "Blink" que nous avons créé. Attention ! Déplacez les fichiers, ne laissez pas une copie dans le dossier du croquis Arduino. Le dossier de votre croquis se trouve dans le dossier Arduino, à côté du dossier libraries. Le contenu du dossier Blink devrait ressembler à ceci :

Capture d'écran du dossier Blink

Notre bibliothèque est maintenant prête. Nous avons seulement besoin que l'IDE Arduino actualise sa liste de bibliothèque installée. Pour ceci, ouvrez le "Gestionnaire de bibliothèques" dans le menu "Croquis > Inclure une bibliothèque > Gérer les bibliothèques" :

Capture d'écran du menu pour ouvrir le gestionnaire de bibliothèques d'Arduino

Une nouvelle fenêtre va s'ouvrir. Nous pouvons parcourir la liste et une nouvelle entrée, avec le nom de notre bibliothèque, Blink, devrait être créée avec la mention "INSTALLED" écrite à côté :

Capture d'écran du gestionnaire de bibliothèques d'Arduino avec notre nouvelle bibliothèque installée

Nous y sommes ! Nous pouvons maintenant utiliser notre bibliothèque dans nos croquis Arduino. Terminons à présent notre croquis Blink utilisant notre bibliothèque. Pour cela nous devons l'inclure en utilisant le menu Croquis > Inclure une bibliothèque > Blink :

Capture d'écran du menu pour inclure notre bibliothèque Blink

L'IDE Arduino va alors ajouter une nouvelle ligne #include <Blink.h> en haut de notre croquis. Nous n'avons maintenant plus qu'à appeler nos fonctions setup_blink et blink dans les fonctions void setup() et void loop() pour que le clignotement de la DEL soit provoquée par notre bibliothèque, tandis que notre croquis pourrait faire quelque chose de complètement différent à côté. Notre croquis devrait à présent ressembler à ceci (note : j'ai retiré le commentaire en début de croquis pour que le croquis entier soit visible) :

Capture d'écran du croquis final utilisant notre bibliothèque

Finalement, nous avons enfin terminé ! Notre bibliothèque est prête et notre croquis compile en l'utilisant. Vous savez maintenant comment créer une bibliothèque Arduino pour réutiliser votre code.

J'espère que cet article vous aura plu et à bientôt :)


Publié le 11/2/2018