Une librairie (ou bibliothèque logicielle) est un ensemble de code pré-écrit et testé qui fournit des fonctionnalités réutilisables. Dans le contexte Arduino et PlatformIO, les librairies permettent de:
Plutôt que de tout programmer à partir de zéro, les librairies fournissent des solutions éprouvées pour des tâches courantes. Par exemple:
Les librairies cachent la complexité technique et offrent une interface simple. Par exemple, pour lire un capteur DHT22:
Sans librairie (complexe):
// Des centaines de lignes de code pour gérer:
// - Le protocole de communication spécifique
// - Les timings précis en microsecondes
// - La conversion des données brutes
// - La gestion des erreurs
// - Les calculs de température et humidité
Avec librairie (simple):
#include <DHT.h>
DHT capteur(PIN, DHT22);
float temperature = capteur.readTemperature();
float humidite = capteur.readHumidity();
Au lieu de passer des heures (voire des jours) à comprendre un protocole de communication ou un composant électronique, vous pouvez utiliser une librairie et vous concentrer sur la logique de votre application.
Les librairies populaires sont:
Les librairies sont souvent écrites par des experts qui connaissent parfaitement le matériel ou le protocole concerné. Vous bénéficiez de leur expertise sans avoir à tout apprendre.
Permettent de contrôler des composants électroniques:
DHT sensor library: Capteurs de température/humiditéAdafruit NeoPixel: LEDs RGB programmablesLiquidCrystal: Écrans LCDServo: Contrôle de servomoteursWire: Communication I2CSPI: Communication SPIFacilitent les échanges de données:
WiFiEsp: Connexion WiFi avec ESP8266ArduinoJson: Manipulation de données JSONPubSubClient: Protocole MQTTHTTPClient: Requêtes HTTPAjoutent des fonctionnalités au langage:
Streaming: Utilisation de l’opérateur << pour SerialTime: Gestion du temps et des datesArduinoSTL: Structures de données C++ (vector, map, etc.)CRC: Calculs de sommes de contrôleDéjà incluses avec Arduino:
Arduino.h: Fonctions de base (pinMode, digitalWrite, etc.)Serial: Communication sérieEEPROM: Lecture/écriture de la mémoire permanenteUne librairie typique contient:
MaLibrairie/
├── src/
│ ├── MaLibrairie.h // Déclarations (interface)
│ └── MaLibrairie.cpp // Implémentation
├── examples/ // Exemples d'utilisation
│ └── exemple_basique.ino
├── keywords.txt // Coloration syntaxique
├── library.properties // Métadonnées
└── README.md // Documentation
Le fichier .h (header) déclare ce que la librairie peut faire:
class MaLibrairie {
public:
void initialiser();
int lireValeur();
void ecrireValeur(int valeur);
};
Le fichier .cpp contient l’implémentation réelle du code.




Avantages du gestionnaire de librairies PlatformIO:
Critères à considérer:
La librairie Streaming est un excellent exemple de librairie utilitaire qui améliore l’expérience de développement.
Problème: Avec Arduino standard, afficher plusieurs valeurs demande plusieurs instructions:
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.print(" C, Humidite: ");
Serial.print(humidite);
Serial.println(" %");
Solution: Avec Streaming, on utilise l’opérateur << comme en C++:
Serial << "Temperature: " << temperature << " C, Humidite: " << humidite << " %" << endl;
C’est plus concis, plus lisible et plus proche du C++ standard.
#include <Arduino.h>
#include <Streaming.h>
void setup() {
Serial.begin(9600);
Serial << "Bonjour le Monde!" << endl;
}
void loop() {
}
Explication du code:
#include <Streaming.h>: Inclusion de la librairie Streaming<< pour afficher dans le port série, rendant le code plus lisible et proche du C++ standardendl est équivalent à \n et force l’envoi immédiat du messagecout du C++ standardAvantages de cette approche:
Pour des fonctionnalités spécifiques à votre projet, vous pouvez créer une librairie locale dans le dossier lib/:
mon_projet/
└── lib/
└── MesUtilitaires/
├── MesUtilitaires.h
└── MesUtilitaires.cpp
Exemple de librairie personnalisée:
MesUtilitaires.h:
#ifndef MES_UTILITAIRES_H
#define MES_UTILITAIRES_H
#include <Arduino.h>
class MesUtilitaires {
public:
static void clignoterLED(int pin, int fois);
static float convertirCelsiusVersF(float celsius);
};
#endif
MesUtilitaires.cpp:
#include "MesUtilitaires.h"
void MesUtilitaires::clignoterLED(int pin, int fois) {
for(int i = 0; i < fois; i++) {
digitalWrite(pin, HIGH);
delay(200);
digitalWrite(pin, LOW);
delay(200);
}
}
float MesUtilitaires::convertirCelsiusVersF(float celsius) {
return (celsius * 9.0 / 5.0) + 32.0;
}
Utilisation dans main.cpp:
#include <Arduino.h>
#include "MesUtilitaires.h"
void setup() {
pinMode(13, OUTPUT);
MesUtilitaires::clignoterLED(13, 5);
}
void loop() {
// ...
}
Dans PlatformIO, vous pouvez spécifier la version exacte d’une librairie dans platformio.ini:
lib_deps =
mikem/Streaming @ ^1.0.0 # Accepte 1.x.x (mises à jour mineures)
bblanchon/ArduinoJson @ 6.21.3 # Version exacte
adafruit/DHT sensor library # Dernière version disponible
https://github.com/user/lib.git # Depuis un dépôt Git
Symboles de version:
@1.0.0: Version exacte@^1.0.0: Compatible avec 1.x.x (pas 2.0.0)@~1.0.0: Compatible avec 1.0.x uniquementPourquoi spécifier une version?
Certaines librairies dépendent d’autres librairies. PlatformIO gère automatiquement ces dépendances.
Exemple: La librairie Adafruit GFX Library est nécessaire pour utiliser Adafruit SSD1306:
lib_deps =
adafruit/Adafruit SSD1306 # Installera automatiquement Adafruit GFX
PlatformIO détecte et installe automatiquement Adafruit GFX Library et Adafruit BusIO qui sont requises.
| Aspect | Sans librairie | Avec librairie |
|---|---|---|
| Temps de développement | Des heures/jours pour comprendre le matériel | Quelques minutes pour intégrer |
| Complexité du code | Des centaines de lignes | Quelques lignes simples |
| Fiabilité | Erreurs fréquentes au début | Code testé par la communauté |
| Maintenance | Tout corriger soi-même | Bénéficier des corrections |
| Documentation | Lire les datasheets techniques | Exemples prêts à l’emploi |
| Évolution | Tout réécrire pour chaque amélioration | Mises à jour automatiques |
En résumé: Les librairies sont comme des outils dans une boîte à outils. Vous pourriez construire chaque outil à la main, mais c’est beaucoup plus efficace d’utiliser des outils existants et de vous concentrer sur votre projet principal!

TODO:
Document rédigé par Alain Boudreault © 2021-2026
Version 2025.12.14.01
Contenu par VE2CUY