Installer une bibliothèque Arduino : gestionnaire, ZIP et manuel
Installer une bibliothèque Arduino pas à pas : gestionnaire, fichier .ZIP ou à la main, changer de version et corriger No such file or directory.
Installer une bibliothèque Arduino, c'est ajouter à l'Arduino IDE un paquet de code tout prêt pour pouvoir utiliser un capteur, un écran ou un module dans ton croquis, et il y a trois façons de le faire : le gestionnaire de bibliothèque (la plus simple et la plus recommandée), l'ajout d'un fichier .ZIP téléchargé dans l'IDE ou la copie manuelle du dossier de la bibliothèque dans le dossier libraries de ton carnet de croquis. Une fois l'installation faite, tu écris #include <NomBibliotheque.h> en haut de ton croquis et toutes les fonctions de la bibliothèque sont prêtes. La bonne bibliothèque s'installe en une minute ; la mauvaise bibliothèque ou la mauvaise version peut se transformer en heures de chasse aux erreurs.
Dans ce guide, nous détaillons les trois méthodes pas à pas dans l'Arduino IDE 2. Tu verras ensuite comment choisir la bonne parmi des dizaines de bibliothèques aux noms proches, revenir à une version plus ancienne, ouvrir les exemples d'une bibliothèque et régler les deux messages les plus fréquents : l'erreur No such file or directory et l'avertissement Multiple libraries were found. Les dernières parties expliquent quelles bibliothèques fonctionnent sur l'ESP32 et la Raspberry Pi Pico, lesquelles doivent être remplacées et comment ajouter des bibliothèques en MicroPython. Si l'IDE n'est pas encore installé, commence par Installer l'Arduino IDE.
Qu'est-ce qu'une bibliothèque Arduino et à quoi sert-elle ?
Une bibliothèque est un ensemble de fichiers de code qui remplit une tâche précise, empaqueté pour que d'autres puissent le réutiliser : au moins un fichier d'en-tête (.h), généralement un ou plusieurs fichiers source (.cpp) et presque toujours quelques croquis d'exemple. Le capteur DHT11, par exemple, envoie sa mesure sur un seul fil sous forme d'un paquet de 40 bits cadencé à la microseconde. Au lieu de programmer toi-même ce timing, tu installes la bibliothèque DHT et tu écris simplement dht.readTemperature() ; la bibliothèque s'occupe de la partie difficile. Ne confonds pas une bibliothèque avec un paquet de cartes : le paquet installé depuis le gestionnaire de cartes apprend à l'IDE une nouvelle famille de processeurs comme l'ESP32 ou la Pico, alors qu'une bibliothèque facilite l'usage d'un matériel ou d'une tâche précise. Les bibliothèques Arduino viennent de trois endroits différents :
| Type de bibliothèque | D'où vient-elle ? | Où se trouve-t-elle ? | Exemples |
|---|---|---|---|
| Bibliothèques intégrées | L'IDE les installe lui-même au premier lancement | Le dossier libraries dans Arduino15 | Servo, Stepper, LiquidCrystal, SD, Ethernet, Keyboard, Mouse |
| Bibliothèques du paquet de cartes | Elles arrivent avec le paquet installé depuis le gestionnaire de cartes | Le dossier libraries propre au paquet, sous Arduino15/packages | Wire, SPI, EEPROM, SoftwareSerial pour l'Uno ; WiFi, WebServer, HTTPClient, Preferences pour l'ESP32 |
| Bibliothèques que tu installes | Gestionnaire de bibliothèque, .ZIP ou copie manuelle | Le dossier libraries de ton carnet de croquis | DHT sensor library, LiquidCrystal I2C, Adafruit SSD1306, ESP32Servo |
Les bibliothèques fournies avec le paquet de cartes, comme Wire, SPI ou la bibliothèque WiFi de l'ESP32, n'ont pas besoin d'être installées ; la ligne #include suffit. Celles que tu installes toi-même vont dans le dossier libraries de ton carnet de croquis. Voici les emplacements par défaut selon le système d'exploitation :
| Système d'exploitation | Bibliothèques que tu installes | Arduino15 (bibliothèques intégrées et paquets de cartes) |
|---|---|---|
| Windows | C:\Users\<utilisateur>\Documents\Arduino\libraries | C:\Users\<utilisateur>\AppData\Local\Arduino15 |
| macOS | /Users/<utilisateur>/Documents/Arduino/libraries | /Users/<utilisateur>/Library/Arduino15 |
| Linux | /home/<utilisateur>/Arduino/libraries | /home/<utilisateur>/.arduino15 |
Méthode 1 : installer une bibliothèque avec le gestionnaire de bibliothèque
Le gestionnaire de bibliothèque te permet de chercher parmi des milliers de bibliothèques de l'index officiel d'Arduino et de les installer en un clic. Les bibliothèques de cet index suivent des règles de présentation précises : la structure des dossiers n'est donc jamais cassée, les autres bibliothèques dont elles ont besoin (dépendances) sont proposées automatiquement et l'IDE te prévient à chaque nouvelle version. Si la bibliothèque que tu cherches est dans la liste, utilise donc toujours cette méthode. Pour l'exemple, installons la bibliothèque d'Adafruit pour les capteurs DHT11 et DHT22 :
- Ouvre l'Arduino IDE 2 et clique sur l'icône des livres dans la barre latérale gauche. Tu peux aussi ouvrir le même panneau depuis Croquis > Importer une bibliothèque > Gérer les bibliothèques ou avec le raccourci Ctrl+Maj+I (Cmd+Maj+I sur macOS). Dans l'interface anglaise, le menu s'appelle Sketch > Include Library > Manage Libraries.
- Tape DHT sensor library dans la zone de recherche. En quelques secondes, toutes les bibliothèques dont le nom ou la description contient ces mots s'affichent sous forme de cartes.
- Chaque carte affiche en haut le nom et l'auteur de la bibliothèque, en dessous une courte description et le lien Plus d'information. Tu verras plusieurs bibliothèques DHT aux noms proches ; choisis la carte DHT sensor library dont l'auteur est Adafruit.
- La liste des versions en bas de la carte affiche la plus récente. Sauf raison particulière, garde la dernière version et clique sur Installer.
- L'IDE ouvre une fenêtre intitulée Installer les dépendances de la bibliothèque et indique que la bibliothèque a besoin d'une autre bibliothèque nommée Adafruit Unified Sensor. Clique sur Tout installer.
- Les lignes de téléchargement défilent dans le panneau de sortie et une notification comme Librairie installée avec succès DHT sensor library:1.4.7 apparaît en bas à droite. La carte affiche maintenant la version installée.
Le choix fait dans la fenêtre des dépendances compte. Installer sans les dépendances n'installe que la bibliothèque principale ; à la compilation, tu obtiens alors Adafruit_Sensor.h: No such file or directory, parce qu'un des fichiers de la bibliothèque DHT inclut cet en-tête. La chaîne de dépendances a parfois plusieurs maillons : la bibliothèque OLED Adafruit SSD1306 a besoin de l'Adafruit GFX Library, qui elle-même a besoin d'Adafruit BusIO. Avec Tout installer, l'IDE installe toute la chaîne d'un coup ; sauf si tu laisses volontairement une dépendance de côté, utilise toujours cette option.

Quand la liste devient trop longue, les deux filtres au-dessus de la zone de recherche te simplifient la vie :
| Filtre | Options | À quoi sert-il ? |
|---|---|---|
| Type | Tout, Pouvant être mis à jour, Installé, Arduino, Partenaire, Recommandé, Contribué, Retiré | Installé montre quelles bibliothèques sont installées et dans quelle version, Pouvant être mis à jour celles qui ont une version plus récente. Arduino liste les bibliothèques officielles, Contribué celles de la communauté et Retiré celles qui ne sont plus développées. |
| Sujet | Affichage, Capteurs, Communication, Contrôle d'appareil, Synchronisation, Stockage de données, Traitement de données, Signaux entrants/sortants, Autre, Non classé | Réduit les résultats quand tu ne connais pas le nom exact d'une bibliothèque ; sous Affichage, par exemple, il ne reste que les bibliothèques LCD, OLED et TFT. |
Choisir la bonne parmi des bibliothèques du même nom
Si tu tapes seulement DHT dans le gestionnaire de bibliothèque, tu obtiens des dizaines de résultats ; en cherchant LiquidCrystal I2C, tu verras aussi plusieurs bibliothèques aux noms presque identiques. Même si elles pilotent le même matériel, leurs noms de fonctions, les paramètres de leur constructeur et leurs exemples diffèrent. Un code écrit pour une bibliothèque ne compile souvent pas avec une autre au nom voisin. Pour choisir la bonne, suis cet ordre :
- Regarde la ligne #include de ton code : si l'exemple que tu suis indique #include <LiquidCrystal_I2C.h>, il te faut la bibliothèque qui contient ce fichier. Les bons exemples précisent aussi le nom de la bibliothèque et son auteur.
- Vérifie l'auteur : des noms connus comme Adafruit, SparkFun, Arduino et Espressif, ou le fabricant du composant, publient en général les bibliothèques les mieux documentées et maintenues le plus longtemps.
- Ouvre le lien Plus d'information : sur la page de la bibliothèque, regarde la date de la dernière mise à jour, les problèmes ouverts et les cartes prises en charge. Une bibliothèque abandonnée depuis des années peut poser problème sur un ESP32 ou une Pico.
- Regarde l'historique des versions : beaucoup de versions dans la liste montrent que la bibliothèque est développée régulièrement. Méfie-toi des bibliothèques avec une seule version et une description vide.
- Essaie d'abord l'exemple de la bibliothèque : après l'installation, compile un de ses exemples. Si l'exemple compile mais pas ton code, ton code a très probablement été écrit pour une autre bibliothèque.
| Composant | Rechercher dans le gestionnaire | Bibliothèque conseillée (auteur) et dépendances | Ligne #include |
|---|---|---|---|
| DHT11 / DHT22 | DHT sensor library | DHT sensor library (Adafruit) + Adafruit Unified Sensor | #include <DHT.h> |
| LCD 16x2 I2C | LiquidCrystal I2C | LiquidCrystal I2C (Frank de Brabander) | #include <LiquidCrystal_I2C.h> |
| OLED SSD1306 | Adafruit SSD1306 | Adafruit SSD1306 + Adafruit GFX Library + Adafruit BusIO | #include <Adafruit_SSD1306.h> |
| DS18B20 | DallasTemperature | DallasTemperature (Miles Burton) + OneWire | #include <DallasTemperature.h> |
| RFID RC522 | MFRC522 | MFRC522 (GithubCommunity) | #include <MFRC522.h> |
| Récepteur IR et télécommande | IRremote | IRremote (shirriff, z3t0, ArminJo) | #include <IRremote.hpp> |
| WS2812B NeoPixel | Adafruit NeoPixel | Adafruit NeoPixel (Adafruit) | #include <Adafruit_NeoPixel.h> |
| RTC DS1307 / DS3231 | RTClib | RTClib (Adafruit) + Adafruit BusIO | #include <RTClib.h> |
| Servo (sur l'ESP32) | ESP32Servo | ESP32Servo (Kevin Harrington, John K. Bennett) | #include <ESP32Servo.h> |

L'exemple le plus connu de cette confusion est l'écran LCD I2C. LiquidCrystal I2C (Frank de Brabander) du gestionnaire de bibliothèque démarre l'écran avec lcd.init(). Une autre version de la même bibliothèque qui circule sur GitHub utilise à la place lcd.begin() sans paramètre. Si tu compiles un code écrit pour cette version avec la bibliothèque du gestionnaire, tu obtiens no matching function for call to 'LiquidCrystal_I2C::begin()'. La solution est simple : remplace lcd.begin() par lcd.init() ou pars des exemples de la bibliothèque installée. Le câblage et la recherche de l'adresse I2C sont détaillés dans Utiliser un écran LCD I2C.
Tester l'installation : un afficheur de température à deux bibliothèques
Le moyen le plus rapide de vérifier que tes bibliothèques sont bien installées est de compiler un petit croquis qui les utilise. Le code ci-dessous affiche sur un LCD 16x2 I2C la température et l'humidité lues par un DHT11. Installe DHT sensor library (avec sa dépendance) et LiquidCrystal I2C depuis le gestionnaire de bibliothèque ; relie la broche de données du DHT11 à la broche 2 de l'Arduino Uno et les broches SDA et SCL du LCD à A4 et A5. Tu peux voir où se trouvent ces broches sur la carte avec l'outil Pinout.
1// Gereken kütüphaneler / Required libraries (Kütüphane Yöneticisi / Library Manager):
2// DHT sensor library (Adafruit) + Adafruit Unified Sensor
3// LiquidCrystal I2C (Frank de Brabander)
4#include <Wire.h> // kart paketiyle gelir / bundled with the board package
5#include <DHT.h> // DHT sensor library
6#include <LiquidCrystal_I2C.h> // LiquidCrystal I2C
7
8#define DHT_PIN 2 // DHT11 veri pini / DHT11 data pin
9#define DHT_TYPE DHT11 // DHT22 için DHT22 yaz / write DHT22 for a DHT22
10
11DHT dht(DHT_PIN, DHT_TYPE);
12LiquidCrystal_I2C lcd(0x27, 16, 2); // adres, sütun, satır / address, columns, rows
13
14void setup() {
15 Serial.begin(9600);
16 dht.begin();
17 lcd.init(); // bu kütüphanede begin() değil init() / init(), not begin(), in this library
18 lcd.backlight(); // arka ışığı aç / backlight on
19 lcd.print(F("Kutuphaneler OK"));
20 delay(1500);
21}
22
23void loop() {
24 float t = dht.readTemperature(); // santigrat / Celsius
25 float h = dht.readHumidity(); // bağıl nem % / relative humidity %
26
27 if (isnan(t) || isnan(h)) { // sensör cevap vermedi / sensor did not respond
28 Serial.println(F("DHT okunamadi / DHT read failed"));
29 delay(2000);
30 return;
31 }
32
33 lcd.clear();
34 lcd.setCursor(0, 0); // sütun 0, satır 0 / column 0, row 0
35 lcd.print(F("Sicaklik: "));
36 lcd.print(t, 1);
37 lcd.print(F(" C"));
38 lcd.setCursor(0, 1); // ikinci satır / second row
39 lcd.print(F("Nem: %"));
40 lcd.print(h, 0);
41
42 Serial.print(t);
43 Serial.print(F(" C "));
44 Serial.print(h);
45 Serial.println(F(" %"));
46 delay(2000); // DHT11 en fazla saniyede bir ölçer / DHT11 measures at most once per second
47}Les lignes #include du début indiquent au compilateur quels fichiers de bibliothèque ajouter. Wire.h est fourni avec le paquet de cartes, il ne s'installe donc pas à part ; DHT.h et LiquidCrystal_I2C.h viennent des bibliothèques que tu viens d'installer. Si tu cliques sur Vérifier et que tu vois la ligne Sketch uses ... bytes dans le panneau de sortie, toutes les bibliothèques ont été trouvées. Si un message rouge No such file or directory apparaît, passe à la partie sur les erreurs plus bas. Le fonctionnement du capteur et sa différence avec le DHT22 sont expliqués dans Capteur de température et d'humidité DHT11.
Méthode 2 : ajouter une bibliothèque depuis un fichier .ZIP
Certaines bibliothèques ne sont pas dans le gestionnaire : une bibliothèque récente pas encore ajoutée à l'index, un pilote qu'un fabricant de capteurs partage sur son propre site ou une bibliothèque maison issue d'un livre, d'un cours ou de ton professeur. Elles sont en général diffusées via GitHub ou directement sous forme de fichier .zip. L'Arduino IDE sait décompresser l'archive et la ranger lui-même au bon endroit :
- Sur la page GitHub de la bibliothèque, clique sur le bouton vert Code et choisis Download ZIP. Si la page a une section Releases, il est plus sûr d'y télécharger le zip d'une version stable.
- Laisse le fichier téléchargé tel quel, sans le décompresser. L'IDE décompresse lui-même le zip ; ce menu n'accepte pas les dossiers.
- Dans l'Arduino IDE, ouvre Croquis > Importer une bibliothèque > Ajouter la bibliothèque .ZIP... (en anglais, Sketch > Include Library > Add .ZIP Library...).
- Dans la fenêtre qui s'ouvre, sélectionne le fichier .zip téléchargé et clique sur Ouvrir.
- Si l'installation réussit, la notification Bibliothèque correctement installée depuis l'archive ... apparaît en bas à droite. Si une bibliothèque du même nom existe déjà, l'IDE te demande si tu veux l'écraser ; confirme si tu veux remplacer la version installée par la nouvelle.
- Vérifie que la bibliothèque est bien arrivée en cherchant son nom dans Fichier > Exemples > Exemples des librairies personnalisées.
Méthode 3 : copier la bibliothèque à la main dans le dossier libraries
L'installation manuelle est utile dans une salle informatique sans internet, pour un dossier de bibliothèque qu'un ami te donne sur une clé USB ou pour un zip que l'IDE refuse. Il te suffit de placer le dossier de la bibliothèque au bon endroit, avec la bonne structure :
- Ferme l'Arduino IDE. Il parcourt la liste des bibliothèques au démarrage et risque de ne pas voir tout de suite les dossiers copiés pendant qu'il est ouvert.
- Décompresse le fichier et trouve le dossier qui contient un fichier library.properties ou le fichier .h de la bibliothèque. C'est le dossier racine de la bibliothèque.
- Copie ce dossier dans le dossier libraries de ton carnet de croquis (sous Windows, en général Documents\Arduino\libraries). Si le dossier libraries n'existe pas, crée-le ; il doit s'appeler exactement libraries, en minuscules.
- Retire le suffixe -master ou -main du nom du dossier ; renomme par exemple IRremote-master en IRremote. Les noms de dossier de bibliothèque doivent commencer par une lettre ou un chiffre, ne contenir que des lettres latines simples, des chiffres, des tirets bas, des points et des tirets, et faire au plus 63 caractères ; n'utilise ni espaces ni accents.
- Rouvre l'IDE et vérifie que la bibliothèque apparaît dans le menu Fichier > Exemples.
| Structure des dossiers | Résultat |
|---|---|
| libraries/DHT_sensor_library/DHT.h | Correct : ancienne structure (à plat), l'IDE la trouve |
| libraries/DHT_sensor_library/library.properties + src/DHT.h | Correct : structure actuelle, l'IDE la trouve |
| libraries/DHT-master/DHT-sensor-library-master/DHT.h | Faux : un niveau de dossier en trop, l'IDE ne trouve pas la bibliothèque |
| libraries/DHT.h (fichier sans dossier) | Faux : chaque bibliothèque doit avoir son propre dossier |
| libraries/Ma bibliothèque/ | Risqué : les espaces et les accents enfreignent les règles de nommage et peuvent gêner la compilation |
| Dossier d'installation de l'IDE (ex. Program Files) | Incorrect : l'Arduino IDE 2 ne cherche pas de bibliothèques à cet endroit ; dans l'ancien IDE 1.8, elles pouvaient être effacées à la mise à jour ou à la désinstallation |
Changer la version d'une bibliothèque : mise à jour et retour en arrière
Les bibliothèques évoluent, et lors des grands changements de version certaines fonctions changent de nom ou d'usage. Si un exemple trouvé sur internet a été écrit pour une version d'il y a quelques années, il peut ne pas compiler avec la dernière version, ou compiler puis mal fonctionner. Dans ce cas, soit tu reviens à la version pour laquelle le code a été écrit, soit tu adaptes le code à la nouvelle version. Le gestionnaire de bibliothèque change de version en quelques clics :
- Cherche le nom de la bibliothèque dans le gestionnaire ou règle le filtre Type sur Installé. La carte indique la version installée.
- Ouvre la liste des versions en bas de la carte. Toutes les versions publiées de la bibliothèque apparaissent sous Autres versions.
- Choisis la version voulue et clique sur Installer. L'IDE retire l'ancienne version et installe celle que tu as choisie ; une bibliothèque n'a qu'une seule version dans le dossier libraries.
- Au démarrage, l'IDE affiche parfois la notification Des mises à jour sont disponibles pour certaines de vos bibliothèques. Avant de tout mettre à jour depuis là, note les versions dont dépendent tes projets qui fonctionnent ; une mise à jour groupée peut changer d'un coup la version majeure de nombreuses bibliothèques.
- Pour supprimer complètement une bibliothèque, survole sa carte et clique sur Supprimer ; l'IDE demande confirmation et efface son dossier de libraries.
| Bibliothèque | Ancien code | Nouveau code | Signe d'une mauvaise version |
|---|---|---|---|
| IRremote | 2.x : IRrecv irrecv(11); irrecv.decode(&results); results.value | 3.x et 4.x : IrReceiver.begin(11); IrReceiver.decode(); IrReceiver.decodedIRData.command | Avertissements deprecated avec l'ancien code, codes de touches vides ou faux |
| ArduinoJson | 6.x : StaticJsonDocument<200> doc; | 7.x : JsonDocument doc; | La 7.x compile les anciennes classes avec des avertissements deprecated ; le code de la 5.x (StaticJsonBuffer) ne compile pas du tout |
| LiquidCrystal I2C | Version GitHub : lcd.begin(); | Version du gestionnaire : lcd.init(); | no matching function for call to 'LiquidCrystal_I2C::begin()' |
| Paquet ESP32 et ESP32Servo | Paquet 2.x : ledcSetup(), ledcAttachPin() | Paquet 3.x : ledcAttach(); ESP32Servo 3.x | 'ledcSetup' was not declared in this scope |
Le meilleur moyen de noter pour quelle version ton code a été écrit est de mettre le nom et la version des bibliothèques en commentaire en haut du fichier. Certaines bibliothèques indiquent aussi leur version via une macro ; ArduinoJson, par exemple, définit ARDUINOJSON_VERSION_MAJOR. Le croquis ci-dessous arrête la compilation avec un message clair si la mauvaise version majeure est installée ; avec la bonne version, il produit un petit texte JSON et affiche la version de la bibliothèque dans le moniteur série :
1// ArduinoJson 7.x (Benoit Blanchon) gerekir / requires ArduinoJson 7.x
2#include <ArduinoJson.h>
3
4#if ARDUINOJSON_VERSION_MAJOR < 7
5#error "Bu kod ArduinoJson 7 ister, Kutuphane Yoneticisinden surumu degistir / This sketch needs ArduinoJson 7"
6#endif
7
8void setup() {
9 Serial.begin(115200);
10 while (!Serial) {} // yerel USB'li kartlarda seri portu bekle / wait for native USB serial
11
12 JsonDocument doc; // 7.x: boyut vermek gerekmez / 7.x: no capacity needed
13 doc["sensor"] = "DHT11";
14 doc["sicaklik"] = 23.5;
15 doc["nem"] = 48;
16
17 serializeJson(doc, Serial); // {"sensor":"DHT11","sicaklik":23.5,"nem":48}
18 Serial.println();
19 Serial.print(F("ArduinoJson: "));
20 Serial.println(ARDUINOJSON_VERSION); // ör. / e.g. 7.4.2
21}
22
23void loop() {
24}Ainsi, quand tu partages ton code avec tes camarades ou en ligne, quelqu'un qui a installé la mauvaise version voit une seule ligne qui lui dit quoi faire, au lieu d'erreurs incompréhensibles. Si tu aimes la ligne de commande, l'Arduino CLI installe directement une version précise : arduino-cli lib install "DHT sensor [email protected]". Pour voir quelle version de chaque bibliothèque est réellement utilisée, active dans les Préférences la sortie détaillée pendant la compilation ; à la fin, une ligne Using library ... at version ... in folder: ... s'affiche pour chaque bibliothèque.
L'erreur No such file or directory et sa solution
C'est l'erreur que tu verras le plus souvent en ajoutant des bibliothèques. Si le compilateur ne trouve dans aucun dossier de bibliothèque le fichier demandé par une ligne #include, le panneau de sortie affiche fatal error: DHT.h: No such file or directory et compilation terminated., et la notification Compilation error: DHT.h: No such file or directory apparaît en bas à droite. Le nom du fichier dans le message t'indique quelle bibliothèque manque. Attention : ce fichier ne vient pas toujours d'une ligne que tu as écrite ; une bibliothèque installée peut elle aussi inclure une autre bibliothèque :
| Fichier dans le message | Cause | Solution |
|---|---|---|
| Le fichier inclus par ton code (DHT.h, LiquidCrystal_I2C.h) | La bibliothèque n'a jamais été installée | La chercher dans le gestionnaire de bibliothèque et l'installer |
| Adafruit_Sensor.h (dans un code DHT) | Dépendance manquante : Installer sans les dépendances a été choisi à l'installation | Installer la bibliothèque Adafruit Unified Sensor |
| Adafruit_I2CDevice.h (dans un code OLED ou RTC) | Adafruit BusIO manque | Installer la bibliothèque Adafruit BusIO |
| OneWire.h (dans un code DS18B20) | DallasTemperature n'a pas installé OneWire automatiquement | Installer la bibliothèque OneWire séparément |
| SoftwareSerial.h (sur l'ESP32) | Cette bibliothèque est fournie avec le paquet AVR et n'existe pas dans le paquet ESP32 | Utiliser un port série matériel (Serial2) ou installer la bibliothèque EspSoftwareSerial |
| Dht.h, liquidcrystal_i2c.h | Erreur de majuscules ou de minuscules ; l'IDE cherche le nom du fichier lettre pour lettre, donc l'erreur apparaît aussi sous Windows et macOS | Écrire la ligne #include exactement comme le nom du fichier dans la bibliothèque |
| La bibliothèque semble installée mais le fichier est introuvable | Un niveau de dossier en trop après une copie manuelle, ou un carnet de croquis différent de celui de l'IDE (OneDrive) | Vérifier la structure des dossiers et l'emplacement du carnet de croquis dans les Préférences |
Que veut dire l'avertissement Multiple libraries were found ?
Ce message apparaît quand plusieurs bibliothèques peuvent répondre à une ligne #include de ton code. Par exemple, si tu as installé dans ton dossier Documents une vieille bibliothèque Servo d'un ancien projet, il y a deux candidates avec la bibliothèque Servo intégrée à l'IDE, et la sortie affiche Multiple libraries were found for "Servo.h" suivi de Used: C:\Users\<utilisateur>\Documents\Arduino\libraries\Servo et Not used: C:\Users\<utilisateur>\AppData\Local\Arduino15\libraries\Servo. Ce n'est pas une erreur mais une information ; la compilation continue. Il n'y a un problème que si la bibliothèque de la ligne Used n'est pas celle que tu veux. L'IDE choisit à peu près dans cet ordre :
| Ordre | Ce que l'IDE regarde | Exemple |
|---|---|---|
| 1 | Compatibilité d'architecture | Sur un ESP32, une bibliothèque dont le library.properties indique esp32 ou * est préférée à une qui n'indique que avr |
| 2 | Correspondance du nom | Pour Servo.h, un dossier nommé exactement Servo l'emporte sur un dossier Servo-master ou MyServo |
| 3 | Optimisation pour la carte | Une bibliothèque qui cite explicitement l'architecture de la carte (ex. architectures=esp32) passe avant une qui n'indique que * |
| 4 | Emplacement | Le dossier libraries de ton carnet de croquis passe avant les bibliothèques du paquet de cartes, qui passent avant les bibliothèques intégrées de l'IDE |
| 5 | En dernier recours | Si tout le reste est égal, c'est la bibliothèque dont le nom ressemble le plus au fichier inclus qui est choisie |
- Lis la ligne Used : le dossier utilisé est-il la bibliothèque attendue ? Si oui, tu n'as rien à faire ; tu peux ignorer le message.
- Supprime la copie en trop : si la mauvaise bibliothèque est choisie, trouve-la dans le gestionnaire et clique sur Supprimer, ou efface son dossier du dossier libraries de ton carnet de croquis pendant que l'IDE est fermé.
- Attention aux restes de l'ancien IDE : les vieilles bibliothèques copiées à la main à l'époque de l'Arduino IDE 1.8 restent dans ton dossier Documents et, grâce à la priorité d'emplacement, passent devant les bibliothèques intégrées à jour de l'IDE.
- Ne garde pas deux copies de la même bibliothèque : si le dossier libraries contient deux copies comme IRremote et IRremote-master, le gestionnaire ne peut pas mettre à jour cette bibliothèque et te demande de supprimer les doublons à la main.
- Sauvegarde avant de supprimer : au lieu d'effacer un dossier, déplace-le d'abord temporairement sur le bureau ; si tout fonctionne, supprime-le ensuite.
Ouvrir les exemples d'une bibliothèque et l'ajouter à ton code
Le moyen le plus rapide d'apprendre une bibliothèque, ce sont ses croquis d'exemple. Les exemples arrivent avec la version installée ; contrairement au code trouvé sur internet, ils lui correspondent donc toujours. Le menu Fichier > Exemples est construit pour la carte sélectionnée et comporte ces parties :
- Exemples inclus : les exemples de base de l'IDE, comme 01.Basics et 02.Digital, où se trouve Blink.
- La partie au nom de ta carte (ex. Exemples pour Arduino Uno) : les exemples des bibliothèques fournies avec l'IDE et avec le paquet de la carte choisie. Avec un Uno, tu y trouves Servo, EEPROM et SoftwareSerial ; avec un ESP32, WiFi, WebServer et Preferences.
- Exemples des librairies personnalisées : les exemples des bibliothèques que tu as installées toi-même (en anglais, Examples from Custom Libraries), par exemple DHT sensor library > DHTtester.
Tu peux aussi accéder aux exemples d'une bibliothèque installée depuis le menu à trois points à côté de sa carte dans le gestionnaire. L'exemple s'ouvre dans une nouvelle fenêtre ; si tu le modifies et veux l'enregistrer, l'IDE te demande un nouveau nom et un nouvel emplacement, car les fichiers d'exemple restent protégés dans le dossier de la bibliothèque. Pour ajouter une bibliothèque à ton propre croquis, il suffit de cliquer sur son nom dans le menu Croquis > Importer une bibliothèque : l'IDE écrit lui-même les lignes #include nécessaires en haut du code. Certaines bibliothèques contiennent plusieurs fichiers d'en-tête, ce menu peut donc ajouter plusieurs lignes ; tu peux effacer celles que tu n'utilises pas.
Compatibilité des bibliothèques sur l'ESP32

Comme l'ESP32 se programme aussi avec l'Arduino IDE, la plupart des bibliothèques y fonctionnent sans modification, surtout les bibliothèques de capteurs et d'écrans qui communiquent en I2C, en SPI ou sur un seul fil. Celles qui posent problème accèdent directement aux timers et aux registres du processeur ATmega328P de l'Arduino Uno. Si l'IDE ne trouve pas l'architecture ESP32 dans le library.properties d'une bibliothèque, il affiche cet avertissement au début de la compilation : WARNING: library LiquidCrystal I2C claims to run on avr architecture(s) and may be incompatible with your current board which runs on esp32 architecture(s). Ce n'est qu'un avertissement : LiquidCrystal I2C n'utilise que la bibliothèque Wire et fonctionne donc sans souci sur l'ESP32. La bibliothèque Servo, elle, arrête volontairement la compilation avec un message #error qui commence par This library only supports boards with an AVR, SAM, SAMD, NRF52. N'installe pas non plus depuis le gestionnaire les bibliothèques WiFi, WebServer, HTTPClient, Preferences et BluetoothSerial déjà fournies avec le paquet ESP32 ; d'autres bibliothèques du même nom ne font que semer la confusion.
| Ce que tu utilises sur l'Uno | À utiliser sur l'ESP32 | Pourquoi ? |
|---|---|---|
| Servo | ESP32Servo (gestionnaire de bibliothèque) | La bibliothèque Servo ne prend pas en charge l'ESP32 et s'arrête sur #error |
| SoftwareSerial | Serial1, Serial2 (UART matériel) ou EspSoftwareSerial | SoftwareSerial appartient au paquet AVR ; l'ESP32 a déjà trois UART matériels |
| EEPROM | Preferences (fournie avec le paquet de cartes) | Sur l'ESP32, l'EEPROM est émulée en flash ; Preferences enregistre des paires clé-valeur de façon plus sûre et plus simple |
| TimerOne, MsTimer2 | Ticker (fournie avec le paquet de cartes) | Les bibliothèques qui accèdent aux registres des timers AVR ne compilent pas sur l'ESP32 |
Si tu veux utiliser le même croquis sur l'Uno, l'ESP32 et la Pico, tu peux choisir la bonne bibliothèque pour chaque carte grâce aux macros d'architecture définies par les paquets de cartes. Le paquet ESP32 définit ARDUINO_ARCH_ESP32, le paquet arduino-pico de la Pico ARDUINO_ARCH_RP2040 et les cartes AVR comme l'Uno et la Nano ARDUINO_ARCH_AVR. Le croquis de servo ci-dessous compile sur les trois cartes ; pour l'ESP32, il te suffit d'installer la bibliothèque ESP32Servo :
1// Aynı kod Uno, ESP32 ve Pico'da / Same sketch on Uno, ESP32 and Pico
2#if defined(ARDUINO_ARCH_ESP32)
3 #include <ESP32Servo.h> // Kütüphane Yöneticisi: ESP32Servo / Library Manager: ESP32Servo
4 const int SERVO_PIN = 18; // güvenli bir GPIO / a safe GPIO
5#elif defined(ARDUINO_ARCH_RP2040)
6 #include <Servo.h> // arduino-pico paketiyle gelir / bundled with the arduino-pico core
7 const int SERVO_PIN = 15; // GP15
8#else
9 #include <Servo.h> // IDE ile gelir (Uno, Nano, Mega) / bundled with the IDE
10 const int SERVO_PIN = 9;
11#endif
12
13Servo servo;
14
15void setup() {
16#if defined(ARDUINO_ARCH_ESP32)
17 servo.setPeriodHertz(50); // yalnız ESP32: 50 Hz servo sinyali / ESP32 only: 50 Hz servo signal
18#endif
19 servo.attach(SERVO_PIN, 500, 2400); // darbe aralığı mikrosaniye / pulse range in microseconds
20}
21
22void loop() {
23 servo.write(0); delay(1000); // 0 derece / 0 degrees
24 servo.write(90); delay(1000); // orta konum / center
25 servo.write(180); delay(1000); // 180 derece / 180 degrees
26}Sur l'ESP32, il faut aussi que la version de la bibliothèque corresponde à celle du paquet de cartes. Dans la série 3.x du paquet ESP32, les fonctions PWM (LEDC) ont changé : ledcSetup() et ledcAttachPin() ont été supprimées et remplacées par ledcAttach(). C'est pourquoi les versions de bibliothèques et les exemples qui utilisent les anciennes fonctions échouent en 3.x avec 'ledcSetup' was not declared in this scope. Les versions actuelles d'ESP32Servo sont écrites pour le paquet 3.x. La solution consiste à passer à la version actuelle de la bibliothèque ou, si tu dois compiler un ancien projet tel quel, à revenir dans le gestionnaire de cartes au paquet esp32 2.0.17, la dernière version 2.x. Tu trouveras les broches de la carte et un premier projet Wi-Fi dans Qu'est-ce que l'ESP32 ?, et le branchement et l'alimentation d'un servo dans Qu'est-ce qu'un servomoteur ?.
Bibliothèques sur la Raspberry Pi Pico : Arduino IDE et MicroPython
Si tu programmes la Pico avec l'Arduino IDE (paquet de cartes Raspberry Pi Pico/RP2040/RP2350 d'Earle F. Philhower), les bibliothèques s'installent comme sur l'Uno et vont dans le même dossier libraries. Le nom d'architecture de ce paquet est rp2040 ; la puce RP2350 de la Pico 2 utilise le même nom. Wire, SPI, Servo, EEPROM et un SoftwareSerial basé sur le PIO sont inclus dans le paquet, et sur la Pico W la bibliothèque WiFi est prête elle aussi. La plupart des bibliothèques de capteurs et d'écrans d'Adafruit fonctionnent bien sur la Pico ; celles qui touchent aux registres AVR ne fonctionnent pas ici non plus. Sur la Pico, l'EEPROM est émulée en flash : on la démarre avec EEPROM.begin() et on enregistre les changements avec EEPROM.commit().
En MicroPython, une bibliothèque est un fichier .py (ou un .mpy compilé) dans le système de fichiers de la Pico, généralement placé dans le dossier /lib. Des modules comme machine, time, dht, onewire, ds18x20, neopixel et framebuf sont fournis avec MicroPython ; tape help("modules") dans le Shell de Thonny pour voir la liste complète. Un pilote absent de la liste s'ajoute de quatre façons :
| Méthode | Quand ? | Comment ? |
|---|---|---|
| Gestionnaire de paquets de Thonny | Le plus simple, avec la Pico branchée en USB | Cherche dans Tools > Manage packages ; pour ssd1306 par exemple, choisis micropython-ssd1306 et installe-le. Le fichier arrive dans le dossier /lib de la Pico |
| mpremote | Si tu utilises la ligne de commande | Sur l'ordinateur, mpremote mip install ssd1306 télécharge la bibliothèque depuis micropython-lib et la copie sur la Pico |
| mip (Pico W uniquement) | Pico W connectée au Wi-Fi, sans ordinateur | Exécute import mip puis mip.install("ssd1306") sur la Pico elle-même |
| Copie manuelle | Si la bibliothèque est un seul fichier .py | Dans le panneau Fichiers de Thonny, ouvre le dossier /lib de la Pico, fais un clic droit sur le fichier côté ordinateur et téléverse-le sur la Pico |
1# Pico W: kütüphane yoksa karttan kur, sonra dene / Pico W: install the library from the board if missing, then test
2import time
3
4try:
5 import ssd1306 # zaten kurulu mu? / already installed?
6except ImportError:
7 import network, mip
8 wlan = network.WLAN(network.STA_IF)
9 wlan.active(True)
10 wlan.connect("AG_ADI", "SIFRE") # kendi Wi-Fi ağın / your own Wi-Fi network
11 for _ in range(40): # en fazla 20 sn bekle / wait up to 20 s
12 if wlan.isconnected():
13 break
14 time.sleep(0.5)
15 if not wlan.isconnected(): # ağa bağlanamadı / could not join the network
16 raise RuntimeError("Wi-Fi baglantisi yok / no Wi-Fi connection")
17 mip.install("ssd1306") # /lib klasörüne iner / lands in /lib
18 import ssd1306
19
20from machine import Pin, I2C
21
22i2c = I2C(0, sda=Pin(4), scl=Pin(5), freq=400000) # GP4 = SDA, GP5 = SCL
23oled = ssd1306.SSD1306_I2C(128, 64, i2c)
24oled.fill(0) # ekranı temizle / clear the screen
25oled.text("Kutuphane OK", 0, 0)
26oled.show() # ekrana gönder / push to the screenLa première partie du code essaie d'importer le module ssd1306 ; s'il manque, elle connecte la Pico W au Wi-Fi, télécharge la bibliothèque depuis micropython-lib puis écrit un texte sur l'écran. Sur une Pico sans Wi-Fi, tu fais la même chose depuis l'ordinateur avec Thonny ou mpremote. Le câblage et les commandes de dessin de l'OLED sont dans Utiliser un écran OLED (SSD1306), les commandes de base et le système de fichiers de MicroPython dans Les bases de MicroPython. Si tu configures la Pico pour la première fois, commence par Qu'est-ce que la Raspberry Pi Pico ?.
Erreurs fréquentes en ajoutant des bibliothèques
- Installer la bibliothèque et oublier le paquet de cartes : installer une bibliothèque pour l'ESP32 ou la Pico n'apprend pas la carte à l'IDE ; installe d'abord le paquet de cartes depuis le gestionnaire de cartes, puis la bibliothèque.
- Sauter les dépendances : Installer sans les dépendances est la cause la plus fréquente des erreurs de fichiers manquants comme Adafruit_Sensor.h ou Adafruit_I2CDevice.h.
- Décompresser le zip puis utiliser le menu .ZIP : ce menu n'accepte que des fichiers zip ; si tu as un dossier, copie-le à la main dans le dossier libraries.
- Mettre la bibliothèque au mauvais endroit : une bibliothèque copiée dans le dossier du croquis, sur le bureau ou dans le dossier d'installation de l'IDE n'est pas trouvée ; le bon endroit est le dossier libraries de ton carnet de croquis.
- Plusieurs copies de la même bibliothèque : deux dossiers comme IRremote et IRremote-master provoquent l'avertissement Multiple libraries et l'utilisation de la mauvaise version ; supprime-en un.
- Tout mettre à jour à l'aveugle : une mise à jour qui change de version majeure peut casser un projet qui fonctionnait ; jette un œil aux notes de version de la bibliothèque avant de mettre à jour.
- Accents ou espaces dans ta propre bibliothèque : si tu écris ta propre bibliothèque, n'utilise dans les noms de dossiers et de fichiers que des lettres latines simples, des chiffres et des tirets bas.
Une fois que tu maîtrises l'installation des bibliothèques Arduino, chaque nouveau capteur ou écran ne prend que quelques minutes : trouve dans le gestionnaire la bibliothèque du bon auteur, installe-la avec ses dépendances, essaie d'abord son propre exemple, puis passe à ton code. Dans l'application BlueGrays, tu trouveras des projets qui utilisent des bibliothèques, comme la température et l'humidité avec le DHT11, un LCD I2C, un servomoteur, un lecteur de cartes RFID, une télécommande IR, des LED WS2812B et un jeu Pong sur OLED, avec des schémas de câblage et du code expliqué pas à pas.
Questions fréquentes
Où sont installées les bibliothèques Arduino ?
Les bibliothèques installées avec le gestionnaire, un .ZIP ou à la main vont dans le dossier libraries de ton carnet de croquis ; sous Windows, c'est en général Documents\Arduino\libraries, sous Linux ~/Arduino/libraries. L'emplacement exact s'affiche dans Fichier > Préférences. Les bibliothèques intégrées à l'IDE et celles des paquets de cartes se trouvent à part, dans le dossier Arduino15.
Pourquoi ma bibliothèque ZIP téléchargée ne s'installe-t-elle pas dans l'Arduino IDE ?
Le plus souvent, le zip contient plusieurs dossiers au lieu d'un seul dossier de bibliothèque, ou la bibliothèque est cachée dans un sous-dossier ; l'IDE affiche alors "multiple files found in zip file top level" ou "library not valid". Décompresse-le, trouve le dossier qui contient library.properties ou un fichier .h et copie-le à la main dans libraries. Si tu l'as déjà décompressé, le menu .ZIP n'accepte pas le dossier.
Comment désinstaller une bibliothèque Arduino ?
Trouve la bibliothèque dans le gestionnaire, survole sa carte et clique sur Supprimer ; l'IDE efface son dossier de libraries. Une bibliothèque installée à la main peut être supprimée du dossier libraries de ton carnet de croquis pendant que l'IDE est fermé. Ne touche pas aux bibliothèques des paquets de cartes dans le dossier Arduino15.
Comment corriger l'erreur "No such file or directory" sur Arduino ?
Trouve à quelle bibliothèque appartient le fichier .h du message et installe cette bibliothèque depuis le gestionnaire. S'il s'agit d'un en-tête que tu n'as pas inclus toi-même (ex. Adafruit_Sensor.h), il manque une dépendance d'une bibliothèque installée. Si l'erreur persiste alors que la bibliothèque est installée, vérifie les majuscules et minuscules de la ligne #include et la structure des dossiers copiés à la main.
Peut-on installer une bibliothèque Arduino sans internet ?
Oui. Télécharge le zip de la bibliothèque sur un autre ordinateur connecté et apporte-le sur une clé USB. Ajoute le zip avec Ajouter la bibliothèque .ZIP ou copie le dossier décompressé dans le dossier libraries de ton carnet de croquis ; n'oublie pas d'apporter aussi, une par une, les dépendances de la bibliothèque.
Les bibliothèques Arduino fonctionnent-elles sur l'ESP32 et la Raspberry Pi Pico ?
La plupart des bibliothèques de capteurs et d'écrans qui communiquent en I2C, en SPI ou sur un seul fil fonctionnent sans modification sur l'ESP32 et avec le paquet Arduino de la Pico. Les bibliothèques comme Servo et TimerOne, qui accèdent directement aux timers du processeur AVR, sont remplacées sur l'ESP32 par ESP32Servo et Ticker, tandis que le paquet de la Pico inclut sa propre bibliothèque Servo. L'avertissement "claims to run on avr architecture(s)" ne veut pas dire à lui seul que la bibliothèque ne fonctionnera pas.
Projets à réaliser après cet article
Voir tous les projets
Température et humidité avec DHT11
Quelle température fait-il dans ta chambre, et l'air est-il humide ou sec ? Le capteur DHT11 mesure la température et l'humidité, et l'Arduino affiche les valeurs sur un écran LCD à deux lignes, mises

Utilisation de l'écran LCD avec I2C
Offre un écran à ton Arduino et fais-lui écrire son premier message. L'écran LCD à deux lignes se branche avec seulement quelques fils ; un bonjour s'affiche sur la ligne du haut, puis un deuxième tex

Utilisation du servomoteur
Le bras d'un petit servomoteur tourne tour à tour vers trois positions : tout au début, pile au milieu et tout au bout, en attendant deux secondes à chaque arrêt. L'Arduino indique au moteur l'angle à

Lire les codes d'une télécommande IR
Chaque touche de ta télécommande envoie un code secret grâce à une lumière invisible à l'œil. Le récepteur infrarouge capte cette lumière et l'Arduino affiche sur l'écran de ton ordinateur le code de

Lecture des valeurs RFID
Le badge de ton immeuble ou ta carte d'accès cache un numéro d'identité secret, et ce projet le lit. Approche la carte du lecteur RFID, et l'Arduino écrit son numéro sur l'écran de ton ordinateur. La

Utilisation du ruban LED WS2812B
Tu découvres un ruban LED intelligent dont chaque lumière peut prendre sa propre couleur. L'Arduino allume d'abord les cinq premières LED en rouge, une seconde plus tard les cinq autres en bleu, puis

Jeu de Raquettes - SSD1306
Une balle, deux raquettes et toi : tu joues au tennis de table, l'un des tout premiers jeux vidéo, sur un petit écran OLED. Deux boutons font monter et descendre ta raquette à droite, tandis que l'ord

Configuration du module horloge RTC DS1302
Tu fais fonctionner un petit module horloge qui n'oublie jamais l'heure, même quand l'Arduino est éteint. Le module a sa propre petite pile et, une fois l'heure réglée, la date et l'heure s'affichent
Autres articles
Application BlueGrays
Réalise ce montage pas à pas sur ton téléphone
Schéma, code et liste des composants sur un seul écran. Plus de 160 projets Arduino, ESP32 et Pico à réaliser.
Scanne avec ton téléphone
Pointe l’appareil photo vers le code : la boutique d’applications de ton téléphone s’ouvre.
ou ouvre la boutique

