Ratgeber · 19 Min. Lesezeit

Arduino Bibliothek installieren: ZIP, manuell und Fehler lösen

Arduino Bibliothek installieren: Bibliotheksverwalter, .ZIP oder manuell, Version wechseln und No such file or directory sowie Multiple libraries lösen.

Eine Arduino Bibliothek installieren heißt, ein fertiges Code-Paket in die Arduino IDE einzubinden, damit du einen Sensor, ein Display oder ein Modul in deinem Sketch nutzen kannst. Dafür gibt es drei Wege: den Bibliotheksverwalter (den einfachsten und empfohlenen Weg), eine heruntergeladene .ZIP-Datei in die IDE einbinden oder den Bibliotheksordner von Hand in den libraries-Ordner deines Sketchbooks kopieren. Nach der Installation schreibst du #include <BibliotheksName.h> an den Anfang deines Sketches, und alle Funktionen der Bibliothek stehen bereit. Die richtige Bibliothek ist in einer Minute installiert; die falsche Bibliothek oder die falsche Version kann dagegen in eine stundenlange Fehlersuche ausarten.

In dieser Anleitung zeigen wir dir alle drei Methoden Schritt für Schritt in der Arduino IDE 2. Danach siehst du, wie du unter Dutzenden ähnlich benannter Bibliotheken die richtige auswählst, zu einer älteren Version zurückkehrst, die Beispiele einer Bibliothek öffnest und die zwei häufigsten Meldungen löst: den Fehler No such file or directory und die Warnung Multiple libraries were found. In den letzten Abschnitten erfährst du, welche Bibliotheken auf dem ESP32 und dem Raspberry Pi Pico laufen, welche einen Ersatz brauchen und wie du Bibliotheken in MicroPython hinzufügst. Ist die IDE noch nicht installiert, lies zuerst Arduino IDE installieren.

Was ist eine Arduino Bibliothek und wofür braucht man sie?

Eine Bibliothek ist eine Sammlung von Code-Dateien, die eine bestimmte Aufgabe erledigt und so verpackt ist, dass andere sie wiederverwenden können: mindestens eine Header-Datei (.h), meist eine oder mehrere Quelldateien (.cpp) und fast immer ein paar Beispiel-Sketches. Der DHT11 zum Beispiel sendet seinen Messwert über eine einzige Leitung als 40-Bit-Paket mit Timing im Mikrosekundenbereich. Statt dieses Timing selbst zu programmieren, installierst du die DHT-Bibliothek und schreibst nur dht.readTemperature(); den schwierigen Teil erledigt die Bibliothek. Verwechsle eine Bibliothek nicht mit einem Board-Paket: Ein Board-Paket aus der Board-Verwaltung bringt der IDE eine neue Prozessorfamilie wie den ESP32 oder den Pico bei, eine Bibliothek vereinfacht dagegen eine bestimmte Hardware oder Aufgabe. Arduino-Bibliotheken stammen aus drei verschiedenen Quellen:

BibliotheksartWoher kommt sie?Wo liegt sie?Beispiele
Mitgelieferte BibliothekenDie IDE installiert sie beim ersten Start selbstOrdner libraries im Arduino15-VerzeichnisServo, Stepper, LiquidCrystal, SD, Ethernet, Keyboard, Mouse
Bibliotheken eines Board-PaketsSie kommen mit dem Paket, das du in der Board-Verwaltung installierstEigener libraries-Ordner des Pakets unter Arduino15/packagesWire, SPI, EEPROM, SoftwareSerial für den Uno; WiFi, WebServer, HTTPClient, Preferences für den ESP32
Selbst installierte BibliothekenBibliotheksverwalter, .ZIP oder manuelles KopierenOrdner libraries in deinem SketchbookDHT sensor library, LiquidCrystal I2C, Adafruit SSD1306, ESP32Servo

Bibliotheken, die mit dem Board-Paket kommen, etwa Wire, SPI oder die WiFi-Bibliothek des ESP32, musst du nicht extra installieren; die #include-Zeile reicht. Selbst installierte Bibliotheken landen dagegen im libraries-Ordner deines Sketchbooks. Das sind die Standardpfade je nach Betriebssystem:

BetriebssystemSelbst installierte BibliothekenArduino15 (mitgelieferte Bibliotheken und Board-Pakete)
WindowsC:\Users\<Benutzer>\Documents\Arduino\librariesC:\Users\<Benutzer>\AppData\Local\Arduino15
macOS/Users/<Benutzer>/Documents/Arduino/libraries/Users/<Benutzer>/Library/Arduino15
Linux/home/<Benutzer>/Arduino/libraries/home/<Benutzer>/.arduino15
Den tatsächlichen Ort deines Sketchbooks siehst du unter Datei > Einstellungen im Feld Pfad für Sketchbook; der libraries-Ordner liegt immer darin. Wird dein Dokumente-Ordner unter Windows mit OneDrive synchronisiert, kann der Pfad C:\Users\<Benutzer>\OneDrive\Documents\Arduino lauten. Die Ordner AppData (Windows), Library (macOS) und .arduino15 (Linux) sind standardmäßig versteckt; blende im Dateiexplorer versteckte Elemente ein oder drücke im macOS-Finder Cmd + Shift + ..

Methode 1: Bibliothek mit dem Bibliotheksverwalter installieren

Mit dem Bibliotheksverwalter durchsuchst du Tausende Bibliotheken aus dem offiziellen Arduino-Bibliotheksindex und installierst sie mit einem Klick. Die Bibliotheken in diesem Index sind nach festen Regeln verpackt; die Ordnerstruktur ist also nie kaputt, benötigte weitere Bibliotheken (Abhängigkeiten) werden automatisch angeboten, und die IDE meldet sich, wenn eine neue Version erscheint. Wenn die gesuchte Bibliothek in der Liste steht, nimm deshalb immer diesen Weg. Als Beispiel installieren wir die Adafruit-Bibliothek für die Sensoren DHT11 und DHT22:

  1. Öffne die Arduino IDE 2 und klicke in der linken Seitenleiste auf das Bücher-Symbol. Dasselbe Fenster öffnest du auch über Sketch > Bibliothek einbinden > Bibliotheken verwalten oder mit Strg+Umschalt+I (Cmd+Shift+I auf dem Mac). In der englischen Oberfläche heißt das Menü Sketch > Include Library > Manage Libraries.
  2. Gib DHT sensor library in das Suchfeld ein. Nach wenigen Sekunden erscheinen alle Bibliotheken, deren Name oder Beschreibung diese Wörter enthält, als Karten untereinander.
  3. Jede Karte zeigt oben den Namen und den Autor der Bibliothek, darunter eine kurze Beschreibung und den Link Mehr Information. Du siehst mehrere DHT-Bibliotheken mit ähnlichen Namen; wähle die Karte DHT sensor library mit dem Autor Adafruit.
  4. Die Versionsliste unten auf der Karte zeigt die neueste Version. Lass sie ohne besonderen Grund auf der neuesten Version und klicke auf Installieren.
  5. Die IDE öffnet ein Fenster Bibliotheksabhängigkeiten installieren und meldet, dass die Bibliothek eine weitere Bibliothek namens Adafruit Unified Sensor braucht. Klicke auf Alle installieren.
  6. Im Ausgabefenster laufen die Download-Zeilen durch, und unten rechts erscheint eine Meldung wie Bibliothek DHT sensor library:1.4.7 erfolgreich installiert. Auf der Karte steht jetzt die installierte Version.

Die Wahl im Abhängigkeitsfenster ist wichtig. Ohne Abhängigkeiten installieren installiert nur die Hauptbibliothek; beim Kompilieren bekommst du dann Adafruit_Sensor.h: No such file or directory, weil eine Datei der DHT-Bibliothek diesen Header einbindet. Manchmal hat die Kette mehrere Glieder: Die OLED-Bibliothek Adafruit SSD1306 braucht die Adafruit GFX Library, und diese wiederum Adafruit BusIO. Mit Alle installieren installiert die IDE die ganze Kette in einem Rutsch; wenn du nicht absichtlich eine Abhängigkeit weglässt, nimm immer diese Option.

0,96-Zoll-I2C-OLED-Displaymodul
0,96-Zoll-OLED-Display: Bei der Installation der Adafruit-SSD1306-Bibliothek kommen die Adafruit GFX Library und Adafruit BusIO als Abhängigkeiten mit; fehlt eine davon, lässt sich der Code nicht kompilieren.

Wenn die Liste unübersichtlich wird, helfen die zwei Filter über dem Suchfeld:

FilterOptionenWofür?
TypAlle, Aktualisierbar, Installiert, Arduino, Partner, Empfohlen, Beigetragen, ZurückgezogenInstalliert zeigt, welche Bibliotheken in welcher Version installiert sind, Aktualisierbar die mit neuerer Version. Arduino listet die offiziellen Bibliotheken, Beigetragen die Community-Bibliotheken und Zurückgezogen die nicht mehr weiterentwickelten.
ThemaAnzeige, Sensoren, Kommunikation, Gerätesteuerung, Timing, Datenspeicher, Datenverarbeitung, Signal Ein-/Ausgang, Weitere, Nicht kategorisiertGrenzt die Treffer ein, wenn du den genauen Namen nicht kennst; unter Anzeige bleiben zum Beispiel nur LCD-, OLED- und TFT-Bibliotheken übrig.

Unter gleichnamigen Bibliotheken die richtige wählen

Tippst du nur DHT in den Bibliotheksverwalter, bekommst du Dutzende Treffer; auch bei LiquidCrystal I2C siehst du mehrere Bibliotheken mit fast gleichem Namen. Obwohl sie dieselbe Hardware ansteuern, unterscheiden sich Funktionsnamen, Konstruktor-Parameter und Beispiele. Code für die eine Bibliothek lässt sich mit einer ähnlich benannten anderen oft nicht kompilieren. So findest du die richtige:

  • Schau auf die #include-Zeile in deinem Code: Steht im Beispiel #include <LiquidCrystal_I2C.h>, brauchst du die Bibliothek, die genau diese Datei enthält. Gute Beispiele nennen auch den Namen der Bibliothek und ihren Autor.
  • Prüfe den Autor: Bekannte Namen wie Adafruit, SparkFun, Arduino und Espressif oder der Hersteller des Bauteils veröffentlichen meist die am besten dokumentierten und am längsten gepflegten Bibliotheken.
  • Öffne den Link Mehr Information: Achte auf der Seite der Bibliothek auf das Datum der letzten Aktualisierung, offene Issues und die unterstützten Boards. Eine seit Jahren nicht gepflegte Bibliothek kann auf ESP32 oder Pico Probleme machen.
  • Sieh dir die Versionsgeschichte an: Viele Versionen zeigen, dass die Bibliothek regelmäßig weiterentwickelt wird. Finger weg von Bibliotheken mit nur einer Version und leerer Beschreibung.
  • Teste zuerst das Beispiel der Bibliothek: Kompiliere nach der Installation eines ihrer Beispiele. Läuft das Beispiel durch, dein Code aber nicht, wurde dein Code sehr wahrscheinlich für eine andere Bibliothek geschrieben.
BauteilSuche im BibliotheksverwalterEmpfohlene Bibliothek (Autor) und Abhängigkeiten#include-Zeile
DHT11 / DHT22DHT sensor libraryDHT sensor library (Adafruit) + Adafruit Unified Sensor#include <DHT.h>
16x2 I2C LCDLiquidCrystal I2CLiquidCrystal I2C (Frank de Brabander)#include <LiquidCrystal_I2C.h>
SSD1306 OLEDAdafruit SSD1306Adafruit SSD1306 + Adafruit GFX Library + Adafruit BusIO#include <Adafruit_SSD1306.h>
DS18B20DallasTemperatureDallasTemperature (Miles Burton) + OneWire#include <DallasTemperature.h>
RC522 RFIDMFRC522MFRC522 (GithubCommunity)#include <MFRC522.h>
IR-Empfänger und FernbedienungIRremoteIRremote (shirriff, z3t0, ArminJo)#include <IRremote.hpp>
WS2812B NeoPixelAdafruit NeoPixelAdafruit NeoPixel (Adafruit)#include <Adafruit_NeoPixel.h>
DS1307 / DS3231 RTCRTClibRTClib (Adafruit) + Adafruit BusIO#include <RTClib.h>
Servo (am ESP32)ESP32ServoESP32Servo (Kevin Harrington, John K. Bennett)#include <ESP32Servo.h>
16x2-LCD mit I2C-Adapter
16x2-LCD mit I2C-Adapter: Für dieses Display gibt es mehrere Bibliotheken mit fast gleichem Namen, und jede startet es mit einer anderen Funktion.

Das bekannteste Beispiel für dieses Durcheinander ist das I2C-LCD. LiquidCrystal I2C (Frank de Brabander) aus dem Bibliotheksverwalter startet das Display mit lcd.init(). Eine andere, auf GitHub verbreitete Fassung derselben Bibliothek nutzt stattdessen lcd.begin() ohne Parameter. Kompilierst du Code für diese Fassung mit der Bibliothek aus dem Bibliotheksverwalter, erhältst du no matching function for call to 'LiquidCrystal_I2C::begin()'. Die Lösung ist einfach: Ändere lcd.begin() in lcd.init() oder starte mit den Beispielen der installierten Bibliothek. Verkabelung und I2C-Adresse erklären wir ausführlich in I2C-LCD-Display verwenden.

Installation testen: Temperaturanzeige mit zwei Bibliotheken

Am schnellsten prüfst du die Installation, indem du einen kleinen Sketch kompilierst, der die Bibliotheken nutzt. Der folgende Code zeigt die vom DHT11 gemessene Temperatur und Luftfeuchtigkeit auf einem 16x2-I2C-LCD an. Installiere DHT sensor library (mit Abhängigkeit) und LiquidCrystal I2C aus dem Bibliotheksverwalter; verbinde den Datenpin des DHT11 mit Pin 2 des Arduino Uno und SDA und SCL des LCD mit A4 und A5. Wo diese Pins auf dem Board liegen, zeigt dir das Werkzeug Pinout.

Arduino (C++)
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}

Die #include-Zeilen am Anfang sagen dem Compiler, welche Bibliotheksdateien er einbinden soll. Wire.h kommt mit dem Board-Paket und wird nicht extra installiert; DHT.h und LiquidCrystal_I2C.h stammen aus den gerade installierten Bibliotheken. Klickst du auf Überprüfen und siehst im Ausgabefenster die Zeile Sketch uses ... bytes, wurden alle Bibliotheken gefunden. Erscheint eine rote Meldung No such file or directory, springe zum Fehlerabschnitt weiter unten. Wie der Sensor funktioniert und was ihn vom DHT22 unterscheidet, steht in DHT11 Temperatur- und Feuchtigkeitssensor.

Methode 2: Bibliothek aus einer .ZIP-Datei hinzufügen

Manche Bibliotheken stehen nicht im Bibliotheksverwalter: eine neue Bibliothek, die noch nicht im Index ist, ein Treiber, den ein Sensorhersteller auf seiner eigenen Seite anbietet, oder eine eigene Bibliothek aus einem Buch, einem Kurs oder von deiner Lehrkraft. Sie werden meist über GitHub oder direkt als .zip-Datei verteilt. Die Arduino IDE kann das Archiv selbst entpacken und in den richtigen Ordner legen:

  1. Klicke auf der GitHub-Seite der Bibliothek auf den grünen Button Code und wähle Download ZIP. Gibt es einen Bereich Releases, ist die ZIP-Datei einer stabilen Version von dort die sicherere Wahl.
  2. Lass die heruntergeladene Datei, wie sie ist, also nicht entpacken. Die IDE entpackt die ZIP-Datei selbst; dieses Menü nimmt keine Ordner an.
  3. Öffne in der Arduino IDE Sketch > Bibliothek einbinden > .ZIP-Bibliothek hinzufügen... (englisch: Sketch > Include Library > Add .ZIP Library...).
  4. Wähle im Dialog die heruntergeladene .zip-Datei aus und klicke auf Öffnen.
  5. Bei Erfolg erscheint unten rechts die Meldung Bibliothek erfolgreich vom Archiv ... installiert. Gibt es schon eine Bibliothek mit diesem Namen, fragt die IDE, ob du sie überschreiben willst; bestätige, wenn die installierte Version ersetzt werden soll.
  6. Prüfe, ob die Bibliothek angekommen ist: Ihr Name muss unter Datei > Beispiele > Beispiele aus angepassten Bibliotheken stehen.
Manchmal lehnt die IDE die ZIP-Datei ab. Der Fehler archive is not valid: multiple files found in zip file top level bedeutet, dass auf der obersten Ebene des Archivs mehrere Dateien oder Ordner liegen statt eines einzigen Bibliotheksordners; meist ist es ein Projektpaket mit mehreren Bibliotheken, Code und Dokumenten. Der Fehler library not valid heißt, dass weder im Hauptordner noch im Unterordner src eine Header-Datei liegt, die eigentliche Bibliothek also eine Ebene tiefer steckt. In beiden Fällen entpackst du das Archiv, suchst den Bibliotheksordner darin und kopierst ihn mit der nächsten Methode von Hand.

Methode 3: Bibliothek manuell in den libraries-Ordner kopieren

Die manuelle Installation hilft im Schullabor ohne Internet, bei einem Bibliotheksordner, den du von einem Freund auf einem USB-Stick bekommst, oder bei einer ZIP-Datei, die die IDE ablehnt. Du musst nur den Bibliotheksordner mit der richtigen Struktur an die richtige Stelle legen:

  1. Schließe die Arduino IDE. Sie liest die Bibliotheksliste beim Start ein und bemerkt Ordner, die du während des Betriebs kopierst, eventuell nicht sofort.
  2. Entpacke die Datei und suche den Ordner, der eine library.properties-Datei oder die .h-Datei der Bibliothek enthält. Das ist der Hauptordner der Bibliothek.
  3. Kopiere diesen Ordner in den libraries-Ordner deines Sketchbooks (unter Windows meist Dokumente\Arduino\libraries). Fehlt der libraries-Ordner, lege ihn selbst an; er muss genau libraries heißen, kleingeschrieben.
  4. Entferne die Endung -master oder -main aus dem Ordnernamen; benenne zum Beispiel IRremote-master in IRremote um. Ordnernamen von Bibliotheken müssen mit einem Buchstaben oder einer Ziffer beginnen, dürfen nur lateinische Grundbuchstaben, Ziffern, Unterstriche, Punkte und Bindestriche enthalten und höchstens 63 Zeichen lang sein; verwende keine Leerzeichen und keine Umlaute.
  5. Öffne die IDE wieder und prüfe, ob die Bibliothek im Menü Datei > Beispiele auftaucht.
OrdnerstrukturErgebnis
libraries/DHT_sensor_library/DHT.hRichtig: alte (flache) Struktur, die IDE findet sie
libraries/DHT_sensor_library/library.properties + src/DHT.hRichtig: aktuelle Struktur, die IDE findet sie
libraries/DHT-master/DHT-sensor-library-master/DHT.hFalsch: eine Ordnerebene zu viel, die IDE findet die Bibliothek nicht
libraries/DHT.h (Datei ohne Ordner)Falsch: Jede Bibliothek braucht ihren eigenen Ordner
libraries/Meine Bibliothek/Riskant: Leerzeichen und Umlaute verstoßen gegen die Namensregeln und können beim Kompilieren Probleme machen
Installationsordner der IDE (z. B. Programme)Falsch: Die Arduino IDE 2 sucht dort gar nicht nach Bibliotheken; in der alten IDE 1.8 konnten sie beim Aktualisieren oder Deinstallieren gelöscht werden
Brauchst du eine Bibliothek nur in einem einzigen Projekt und soll sie beim Weitergeben mitreisen, lege im Sketch-Ordner einen Ordner namens src an und lege die Bibliotheksdateien dort ab (z. B. src/MyLib/MyLib.h). Dann bindest du sie nicht mit spitzen Klammern ein, sondern mit Anführungszeichen und Pfad: #include "src/MyLib/MyLib.h". Die IDE kompiliert den src-Ordner zusammen mit dem Sketch; im libraries-Ordner musst du nichts installieren.

Version einer Bibliothek wechseln: aktualisieren und zurückgehen

Bibliotheken entwickeln sich weiter, und bei großen Versionssprüngen ändern sich manchmal Namen oder Verwendung von Funktionen. Wurde ein Beispiel aus dem Internet für eine ein paar Jahre alte Version geschrieben, kompiliert es mit der neuesten Version vielleicht nicht oder läuft danach falsch. Dann gehst du entweder auf die Version zurück, für die der Code geschrieben wurde, oder passt den Code an die neue Version an. Der Bibliotheksverwalter wechselt die Version mit wenigen Klicks:

  1. Suche im Bibliotheksverwalter nach dem Namen der Bibliothek oder stelle den Filter Typ auf Installiert. Auf der Karte steht die installierte Version.
  2. Öffne die Versionsliste unten auf der Karte. Unter Andere Versionen stehen alle veröffentlichten Versionen der Bibliothek.
  3. Wähle die gewünschte Version und klicke auf Installieren. Die IDE entfernt die alte und installiert die gewählte Version; im libraries-Ordner gibt es von jeder Bibliothek nur eine Version.
  4. Beim Start zeigt die IDE manchmal die Meldung Es sind Updates für einige deiner Bibliotheken verfügbar. Notiere dir vor einem Sammel-Update, auf welche Versionen sich deine funktionierenden Projekte verlassen; ein Sammel-Update kann die Hauptversion vieler Bibliotheken auf einmal ändern.
  5. Um eine Bibliothek komplett zu löschen, fahre mit der Maus über ihre Karte und klicke auf Entfernen; die IDE fragt nach und löscht den Ordner aus libraries.
BibliothekAlter CodeNeuer CodeAnzeichen für eine falsche Version
IRremote2.x: IRrecv irrecv(11); irrecv.decode(&results); results.value3.x und 4.x: IrReceiver.begin(11); IrReceiver.decode(); IrReceiver.decodedIRData.commandDeprecated-Warnungen bei altem Code, leere oder falsche Tastencodes
ArduinoJson6.x: StaticJsonDocument<200> doc;7.x: JsonDocument doc;7.x kompiliert die alten Klassen mit Deprecated-Warnungen; Code für 5.x (StaticJsonBuffer) kompiliert gar nicht
LiquidCrystal I2CGitHub-Fassung: lcd.begin();Fassung aus dem Bibliotheksverwalter: lcd.init();no matching function for call to 'LiquidCrystal_I2C::begin()'
ESP32-Board-Paket und ESP32ServoBoard-Paket 2.x: ledcSetup(), ledcAttachPin()Board-Paket 3.x: ledcAttach(); ESP32Servo 3.x'ledcSetup' was not declared in this scope

Am besten hältst du fest, für welche Version dein Code geschrieben ist, indem du Namen und Versionen der Bibliotheken als Kommentar an den Anfang der Datei schreibst. Manche Bibliotheken melden ihre Version auch über ein Makro; ArduinoJson definiert zum Beispiel ARDUINOJSON_VERSION_MAJOR. Der folgende Sketch bricht das Kompilieren mit einer klaren Meldung ab, wenn die falsche Hauptversion installiert ist; mit der richtigen Version erzeugt er einen kleinen JSON-Text und gibt die Bibliotheksversion im seriellen Monitor aus:

Arduino (C++)
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}

So sieht jemand, der beim Weitergeben deines Codes an Mitschüler oder im Netz die falsche Version installiert hat, statt rätselhafter Fehler eine einzige Zeile, die ihm sagt, was zu tun ist. Wenn du die Kommandozeile magst, installierst du mit der Arduino CLI direkt eine bestimmte Version: arduino-cli lib install "DHT sensor [email protected]". Welche Version welcher Bibliothek tatsächlich verwendet wird, siehst du, wenn du in den Einstellungen die ausführlichen Compiler-Meldungen beim Kompilieren einschaltest; am Ende steht für jede Bibliothek eine Zeile Using library ... at version ... in folder: ....

Fehler No such file or directory beheben

Diesen Fehler siehst du beim Hinzufügen von Bibliotheken am häufigsten. Findet der Compiler die von einer #include-Zeile verlangte Datei in keinem Bibliotheksordner, zeigt das Ausgabefenster fatal error: DHT.h: No such file or directory und compilation terminated., und unten rechts erscheint Compilation error: DHT.h: No such file or directory. Der Dateiname in der Meldung verrät dir, welche Bibliothek fehlt. Beachte: Die Datei stammt nicht immer aus einer Zeile, die du selbst geschrieben hast; auch eine installierte Bibliothek kann eine andere Bibliothek einbinden:

Datei in der MeldungUrsacheLösung
Die Datei, die dein Code einbindet (DHT.h, LiquidCrystal_I2C.h)Die Bibliothek wurde nie installiertIm Bibliotheksverwalter suchen und installieren
Adafruit_Sensor.h (im DHT-Code)Fehlende Abhängigkeit: Bei der Installation wurde Ohne Abhängigkeiten installieren gewähltDie Bibliothek Adafruit Unified Sensor installieren
Adafruit_I2CDevice.h (im OLED- oder RTC-Code)Adafruit BusIO fehltDie Bibliothek Adafruit BusIO installieren
OneWire.h (im DS18B20-Code)DallasTemperature hat OneWire nicht automatisch mitinstalliertDie Bibliothek OneWire zusätzlich installieren
SoftwareSerial.h (am ESP32)Diese Bibliothek gehört zum AVR-Board-Paket und fehlt im ESP32-PaketEine Hardware-Schnittstelle (Serial2) nutzen oder die Bibliothek EspSoftwareSerial installieren
Dht.h, liquidcrystal_i2c.hFalsche Groß- und Kleinschreibung; die IDE sucht Header-Namen buchstabengetreu, deshalb scheitert das auch unter Windows und macOSDie #include-Zeile genau wie den Dateinamen in der Bibliothek schreiben
Die Bibliothek scheint installiert, die Datei wird aber nicht gefundenEine Ordnerebene zu viel nach manuellem Kopieren oder ein anderes Sketchbook als das der IDE (OneDrive)Ordnerstruktur und Pfad für Sketchbook in den Einstellungen prüfen
Scrolle im Ausgabefenster nach oben, um die ganze Fehlermeldung zu sehen; die eigentliche Ursache steht meist in der ersten roten Zeile. Der Dateipfad in dieser Zeile zeigt, welche Datei den fehlenden Header verlangt: Endet der Pfad auf DHT_U.h und nennt die Meldung Adafruit_Sensor.h, braucht nicht dein Code, sondern die DHT-Bibliothek die fehlende Datei. Für Tippfehler, fehlende Semikolons und andere Compiler-Fehler wie was not declared in this scope lies Arduino Kompilierfehler.

Was bedeutet die Warnung Multiple libraries were found?

Diese Meldung erscheint, wenn mehr als eine Bibliothek eine #include-Zeile deines Codes erfüllen könnte. Hast du zum Beispiel eine alte Servo-Bibliothek aus einem früheren Projekt in deinen Dokumente-Ordner installiert, gibt es zusammen mit der mitgelieferten Servo-Bibliothek der IDE zwei Kandidaten, und die Ausgabe zeigt Multiple libraries were found for "Servo.h", darunter Used: C:\Users\<Benutzer>\Documents\Arduino\libraries\Servo und Not used: C:\Users\<Benutzer>\AppData\Local\Arduino15\libraries\Servo. Das ist kein Fehler, sondern ein Hinweis; das Kompilieren läuft weiter. Ein Problem gibt es nur, wenn in der Zeile Used nicht die Bibliothek steht, die du willst. Die IDE entscheidet grob in dieser Reihenfolge:

RangWas prüft die IDE?Beispiel
1Architektur-KompatibilitätAuf einem ESP32 wird eine Bibliothek, deren library.properties esp32 oder * angibt, einer Bibliothek vorgezogen, die nur avr angibt
2NamensübereinstimmungFür Servo.h gewinnt ein Ordner, der genau Servo heißt, vor einem Ordner Servo-master oder MyServo
3Optimierung für das BoardEine Bibliothek, die die Architektur des Boards ausdrücklich nennt (z. B. architectures=esp32), hat Vorrang vor einer, die nur * angibt
4SpeicherortDer libraries-Ordner deines Sketchbooks kommt vor den Bibliotheken des Board-Pakets und diese vor den mitgelieferten Bibliotheken der IDE
5Letzte InstanzIst alles andere gleich, gewinnt die Bibliothek, deren Name dem eingebundenen Dateinamen am ähnlichsten ist
  • Lies die Zeile Used: Ist der verwendete Ordner die erwartete Bibliothek? Dann musst du nichts tun und kannst die Meldung ignorieren.
  • Entferne die überzählige Kopie: Wird die falsche Bibliothek gewählt, suche sie im Bibliotheksverwalter und klicke auf Entfernen, oder lösche ihren Ordner bei geschlossener IDE aus dem libraries-Ordner deines Sketchbooks.
  • Achte auf Reste der alten IDE: Alte, aus Zeiten der Arduino IDE 1.8 von Hand kopierte Bibliotheken liegen im Dokumente-Ordner und überstimmen dank des Speicherort-Vorrangs die aktuellen mitgelieferten Bibliotheken der IDE.
  • Behalte keine zwei Kopien derselben Bibliothek: Liegen im libraries-Ordner zwei Kopien wie IRremote und IRremote-master, kann der Bibliotheksverwalter diese Bibliothek nicht aktualisieren und bittet dich, die Duplikate von Hand zu entfernen.
  • Sichere vor dem Löschen: Statt einen Ordner zu löschen, verschiebe ihn zuerst vorübergehend auf den Desktop; klappt alles, löschst du ihn später.
Fasse den Unterordner packages in Arduino15 und die mitgelieferten Bibliotheken nicht von Hand an. Bibliotheken wie Wire, SPI oder WiFi dort gehören zum Board-Paket; löschst du sie, kompiliert für dieses Board nichts mehr, und du musst das Paket über die Board-Verwaltung neu installieren. Die störende Kopie liegt fast immer im libraries-Ordner deines eigenen Sketchbooks.

Beispiele einer Bibliothek öffnen und Bibliothek in den Code einbinden

Am schnellsten lernst du eine Bibliothek über ihre Beispiel-Sketches. Die Beispiele kommen mit der installierten Version und passen daher, anders als Code aus dem Internet, immer zu ihr. Das Menü Datei > Beispiele wird für das gewählte Board zusammengestellt und hat diese Abschnitte:

  • Mitgelieferte Beispiele: die Grundbeispiele der IDE wie 01.Basics und 02.Digital, in denen auch Blink steckt.
  • Abschnitt mit dem Namen deines Boards (z. B. Beispiele für Arduino Uno): Beispiele der Bibliotheken, die mit der IDE und dem Paket des gewählten Boards kommen. Mit einem Uno findest du hier Servo, EEPROM und SoftwareSerial, mit einem ESP32 WiFi, WebServer und Preferences.
  • Beispiele aus angepassten Bibliotheken: Beispiele der Bibliotheken, die du selbst installiert hast (englisch: Examples from Custom Libraries), zum Beispiel DHT sensor library > DHTtester.

Die Beispiele einer installierten Bibliothek erreichst du auch über das Drei-Punkte-Menü neben ihrer Karte im Bibliotheksverwalter. Das Beispiel öffnet sich in einem neuen Fenster; willst du es nach Änderungen speichern, fragt die IDE nach neuem Namen und Speicherort, weil die Beispieldateien im Ordner der Bibliothek schreibgeschützt bleiben. Um eine Bibliothek in deinen eigenen Sketch einzubinden, klicke im Menü Sketch > Bibliothek einbinden auf ihren Namen: Die IDE schreibt die nötigen #include-Zeilen selbst an den Anfang deines Codes. Manche Bibliotheken enthalten mehrere Header-Dateien, daher fügt dieses Menü eventuell mehrere Zeilen ein; nicht benötigte kannst du löschen.

Tauchen die Beispiele deiner Bibliothek nicht im Menü auf, prüfe zuerst die Board-Auswahl: Die Beispielliste wird für das gewählte Board erstellt, und Beispiele von Bibliotheken, die die Architektur deines Boards nicht unterstützen, werden eventuell nicht angezeigt. Hast du die Bibliothek von Hand kopiert, starte die IDE neu. Ist die Ordnerstruktur falsch (eine Ebene zu viel), sind Bibliothek und Beispiele komplett unsichtbar.

Bibliotheks-Kompatibilität beim ESP32

ESP32-Entwicklungsboard
ESP32: Die meisten Arduino-Bibliotheken laufen, aber Bibliotheken, die direkt auf Timer und Register des Uno zugreifen, werden durch ESP32-Gegenstücke ersetzt.

Da auch der ESP32 mit der Arduino IDE programmiert wird, laufen die meisten Bibliotheken ohne Änderung darauf, vor allem Sensor- und Display-Bibliotheken, die über I2C, SPI oder eine einzelne Leitung kommunizieren. Ärger machen Bibliotheken, die direkt auf Timer und Register des ATmega328P-Prozessors im Arduino Uno zugreifen. Findet die IDE die ESP32-Architektur nicht in der library.properties einer Bibliothek, gibt sie zu Beginn des Kompilierens diese Warnung aus: 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). Das ist nur eine Warnung: LiquidCrystal I2C nutzt ausschließlich die Wire-Bibliothek und funktioniert auf dem ESP32 problemlos. Die Servo-Bibliothek dagegen bricht das Kompilieren absichtlich mit einer #error-Meldung ab, die mit This library only supports boards with an AVR, SAM, SAMD, NRF52 beginnt. Installiere außerdem die Bibliotheken WiFi, WebServer, HTTPClient, Preferences und BluetoothSerial, die mit dem ESP32-Board-Paket kommen, nicht zusätzlich über den Bibliotheksverwalter; gleichnamige andere Bibliotheken stiften nur Verwirrung.

Am Uno nutzt duAm ESP32 nimmst duWarum?
ServoESP32Servo (Bibliotheksverwalter)Die Servo-Bibliothek unterstützt den ESP32 nicht und bricht mit #error ab
SoftwareSerialSerial1, Serial2 (Hardware-UART) oder EspSoftwareSerialSoftwareSerial gehört zum AVR-Paket; der ESP32 hat bereits drei Hardware-UARTs
EEPROMPreferences (kommt mit dem Board-Paket)Beim ESP32 wird das EEPROM im Flash nachgebildet; Preferences speichert Schlüssel-Wert-Paare sicherer und einfacher
TimerOne, MsTimer2Ticker (kommt mit dem Board-Paket)Bibliotheken, die auf AVR-Timerregister zugreifen, kompilieren auf dem ESP32 nicht

Willst du denselben Sketch auf Uno, ESP32 und Pico nutzen, kannst du über die Architektur-Makros der Board-Pakete für jedes Board die passende Bibliothek wählen. Das ESP32-Paket definiert ARDUINO_ARCH_ESP32, das arduino-pico-Paket des Pico ARDUINO_ARCH_RP2040 und AVR-Boards wie Uno und Nano ARDUINO_ARCH_AVR. Der folgende Servo-Sketch kompiliert auf allen drei Boards; für den ESP32 musst du nur die Bibliothek ESP32Servo installieren:

Arduino (C++)
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}

Beim ESP32 ist außerdem wichtig, dass die Version der Bibliothek zur Version des Board-Pakets passt. In der 3.x-Serie des ESP32-Board-Pakets haben sich die PWM-Funktionen (LEDC) geändert: ledcSetup() und ledcAttachPin() wurden entfernt und durch ledcAttach() ersetzt. Deshalb scheitern Bibliotheksversionen und Beispiele, die die alten Funktionen nutzen, unter 3.x mit 'ledcSetup' was not declared in this scope. Aktuelle Versionen von ESP32Servo sind für das Board-Paket 3.x geschrieben. Die Lösung: Wechsle auf die aktuelle Version der Bibliothek, oder stufe das esp32-Paket in der Board-Verwaltung auf 2.0.17 herunter, die letzte 2.x-Version, wenn du ein altes Projekt unverändert kompilieren musst. Pins und ein erstes WLAN-Projekt findest du in Was ist der ESP32?, Anschluss und Stromversorgung eines Servos in Was ist ein Servomotor?.

Bibliotheken auf dem Raspberry Pi Pico: Arduino IDE und MicroPython

Programmierst du den Pico mit der Arduino IDE (Board-Paket Raspberry Pi Pico/RP2040/RP2350 von Earle F. Philhower), installierst du Bibliotheken genauso wie beim Uno, und sie landen im selben libraries-Ordner. Die Architektur dieses Pakets heißt rp2040; der RP2350-Chip des Pico 2 verwendet denselben Namen. Wire, SPI, Servo, EEPROM und ein PIO-basiertes SoftwareSerial sind im Board-Paket enthalten, beim Pico W auch die WiFi-Bibliothek. Die meisten Sensor- und Display-Bibliotheken von Adafruit laufen problemlos auf dem Pico; Bibliotheken, die AVR-Register ansprechen, funktionieren aber auch hier nicht. Auf dem Pico wird das EEPROM im Flash nachgebildet: Du startest es mit EEPROM.begin() und speicherst Änderungen mit EEPROM.commit().

In MicroPython ist eine Bibliothek eine .py-Datei (oder eine kompilierte .mpy-Datei) im Dateisystem des Pico, meist im Ordner /lib. Module wie machine, time, dht, onewire, ds18x20, neopixel und framebuf sind in MicroPython bereits enthalten; tippe help("modules") in Thonnys Shell, um die vollständige Liste zu sehen. Einen Treiber, der nicht in der Liste steht, fügst du auf vier Arten hinzu:

MethodeWann?Wie?
Thonny-PaketverwaltungAm einfachsten, wenn der Pico per USB verbunden istUnter Tools > Manage packages suchen; für ssd1306 zum Beispiel micropython-ssd1306 wählen und installieren. Die Datei landet im Ordner /lib auf dem Pico
mpremoteWenn du die Kommandozeile nutztAuf dem Computer lädt mpremote mip install ssd1306 die Bibliothek aus micropython-lib und kopiert sie auf den Pico
mip (nur Pico W)Wenn der Pico W im WLAN ist, ganz ohne ComputerAuf dem Pico selbst import mip und mip.install("ssd1306") ausführen
Manuell kopierenWenn die Bibliothek eine einzelne .py-Datei istIm Dateien-Bereich von Thonny den Ordner /lib auf dem Pico öffnen, die Datei auf dem Computer mit der rechten Maustaste anklicken und auf den Pico hochladen
MicroPython
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 screen

Der erste Teil des Codes versucht, das Modul ssd1306 zu importieren; fehlt es, verbindet er den Pico W mit dem WLAN, lädt die Bibliothek aus micropython-lib und schreibt danach Text aufs Display. Auf einem Pico ohne WLAN erledigst du dasselbe vom Computer aus mit Thonny oder mpremote. Verkabelung und Zeichenbefehle des OLED findest du in OLED-Display (SSD1306) verwenden, die Grundbefehle und das Dateisystem von MicroPython in MicroPython Grundlagen. Richtest du den Pico zum ersten Mal ein, beginne mit Was ist der Raspberry Pi Pico?.

Häufige Fehler beim Hinzufügen von Bibliotheken

  • Bibliothek installiert, Board-Paket vergessen: Eine Bibliothek für ESP32 oder Pico bringt der IDE das Board nicht bei; installiere zuerst das Board-Paket über die Board-Verwaltung, dann die Bibliothek.
  • Abhängigkeiten übersprungen: Ohne Abhängigkeiten installieren ist die häufigste Ursache für Fehler mit fehlenden Dateien wie Adafruit_Sensor.h oder Adafruit_I2CDevice.h.
  • Erst entpackt, dann das .ZIP-Menü benutzt: Dieses Menü nimmt nur ZIP-Dateien an; hast du einen Ordner, kopiere ihn von Hand in den libraries-Ordner.
  • Bibliothek am falschen Ort: Eine Bibliothek im Sketch-Ordner, auf dem Desktop oder im Installationsordner der IDE wird nicht gefunden; der richtige Ort ist der libraries-Ordner deines Sketchbooks.
  • Mehrere Kopien derselben Bibliothek: Zwei Ordner wie IRremote und IRremote-master führen zur Warnung Multiple libraries und dazu, dass die falsche Version benutzt wird; lösche einen davon.
  • Blind alles aktualisieren: Ein Update über eine Hauptversion hinweg kann ein funktionierendes Projekt kaputt machen; wirf vorher einen Blick in die Versionshinweise der Bibliothek.
  • Umlaute oder Leerzeichen in der eigenen Bibliothek: Wenn du eine eigene Bibliothek schreibst, verwende in Ordner- und Dateinamen nur lateinische Grundbuchstaben, Ziffern und Unterstriche.
Schreib zu Beginn eines Projekts Name, Autor und Version jeder verwendeten Bibliothek als Kommentar an den Anfang des Codes, etwa // DHT sensor library (Adafruit) 1.4.7. Öffnest du das Projekt Monate später wieder oder gibst es an einen Freund weiter, siehst du auf einen Blick, welche Version welcher Bibliothek installiert sein muss. Kompiliert dein Code, lässt sich aber nicht aufs Board hochladen, liegt es nicht an der Bibliothek; lies dann Arduino Hochladen-Fehler beheben.

Hast du das Installieren von Arduino-Bibliotheken einmal verinnerlicht, ist jeder neue Sensor und jedes neue Display eine Sache von wenigen Minuten: Bibliothek vom richtigen Autor im Bibliotheksverwalter finden, mit Abhängigkeiten installieren, zuerst das Beispiel der Bibliothek testen, dann zum eigenen Code übergehen. In der BlueGrays-App findest du Projekte mit Bibliotheken, etwa Temperatur und Luftfeuchtigkeit mit dem DHT11, ein I2C-LCD, einen Servomotor, einen RFID-Kartenleser, eine IR-Fernbedienung, WS2812B-LEDs und ein OLED-Pong-Spiel, mit Schaltplänen und Schritt für Schritt erklärtem Code.

Häufige Fragen

Wo werden Arduino Bibliotheken installiert?

Bibliotheken, die du über den Bibliotheksverwalter, eine .ZIP-Datei oder von Hand installierst, landen im libraries-Ordner deines Sketchbooks; unter Windows ist das meist Dokumente\Arduino\libraries, unter Linux ~/Arduino/libraries. Den genauen Ort siehst du unter Datei > Einstellungen im Feld Pfad für Sketchbook. Die mit der IDE mitgelieferten Bibliotheken und die Bibliotheken der Board-Pakete liegen getrennt davon im Arduino15-Ordner.

Warum lässt sich meine heruntergeladene ZIP-Bibliothek nicht installieren?

Meist enthält die ZIP-Datei mehrere Ordner statt eines einzigen Bibliotheksordners, oder die Bibliothek steckt in einem Unterordner; die IDE meldet dann "multiple files found in zip file top level" oder "library not valid". Entpacke die Datei, suche den Ordner mit library.properties oder einer .h-Datei und kopiere ihn von Hand nach libraries. Hast du die Datei schon entpackt, nimmt das .ZIP-Menü den Ordner nicht an.

Wie deinstalliere ich eine Arduino Bibliothek?

Suche die Bibliothek im Bibliotheksverwalter, fahre mit der Maus über ihre Karte und klicke auf Entfernen; die IDE löscht ihren Ordner aus libraries. Eine von Hand installierte Bibliothek kannst du bei geschlossener IDE aus dem libraries-Ordner deines Sketchbooks löschen. Die Bibliotheken der Board-Pakete im Arduino15-Ordner fasst du nicht an.

Wie behebe ich "No such file or directory" bei Arduino?

Finde heraus, zu welcher Bibliothek die .h-Datei in der Meldung gehört, und installiere diese Bibliothek über den Bibliotheksverwalter. Ist es ein Header, den du nicht selbst eingebunden hast (z. B. Adafruit_Sensor.h), fehlt eine Abhängigkeit einer installierten Bibliothek. Bleibt der Fehler trotz installierter Bibliothek, prüfe die Groß- und Kleinschreibung in der #include-Zeile und die Struktur von Hand kopierter Ordner.

Kann ich eine Arduino Bibliothek ohne Internet installieren?

Ja. Lade die ZIP-Datei der Bibliothek auf einem anderen Computer mit Internet herunter und bring sie per USB-Stick mit. Füge die ZIP-Datei über .ZIP-Bibliothek hinzufügen ein oder kopiere den entpackten Ordner in den libraries-Ordner deines Sketchbooks; vergiss nicht, die Abhängigkeiten der Bibliothek genauso einzeln mitzubringen.

Funktionieren Arduino Bibliotheken auf dem ESP32 und dem Raspberry Pi Pico?

Die meisten Sensor- und Display-Bibliotheken, die über I2C, SPI oder eine einzelne Leitung kommunizieren, laufen ohne Änderung auf dem ESP32 und mit dem Arduino-Paket des Pico. Bibliotheken wie Servo und TimerOne, die direkt auf die Timer des AVR-Prozessors zugreifen, ersetzt du auf dem ESP32 durch ESP32Servo und Ticker; das Board-Paket des Pico bringt eine eigene Servo-Bibliothek mit. Die Warnung "claims to run on avr architecture(s)" allein bedeutet nicht, dass die Bibliothek nicht funktioniert.

Alle Projekte ansehen
Temperatur und Luftfeuchtigkeit mit DHT11
#55Mittel

Temperatur und Luftfeuchtigkeit mit DHT11

Wie warm ist dein Zimmer, und ist die Luft feucht oder trocken? Der DHT11-Sensor misst Temperatur und Luftfeuchtigkeit, und der Arduino schreibt die Werte auf ein zweizeiliges LCD und aktualisiert sie

4.7(47)
64
Verwendung des LCD-Bildschirms mit I2C
#32Anfänger
Premium

Verwendung des LCD-Bildschirms mit I2C

Gib deinem Arduino ein eigenes Display und lass es seine erste Nachricht schreiben. Das zweizeilige LCD wird mit nur wenigen Kabeln angeschlossen; oben erscheint ein Gruß, dann unten eine zweite Zeile

4.8(53)
70
Verwendung von Servomotoren
#35Anfänger
Premium

Verwendung von Servomotoren

Der Arm eines kleinen Servomotors dreht sich nacheinander in drei Stellungen: ganz an den Anfang, genau in die Mitte und ganz ans Ende, mit jeweils zwei Sekunden Pause. Der Arduino sagt dem Motor, bei

4.7(48)
67
IR-Fernbedienungscodes auslesen
#16Anfänger
Premium

IR-Fernbedienungscodes auslesen

Jede Taste deiner Fernbedienung schickt mit unsichtbarem Licht einen geheimen Code. Der Infrarotempfänger fängt dieses Licht auf, und der Arduino schreibt den Code jeder gedrückten Taste auf deinen Co

4.5(39)
55
RFID-Werte lesen
#53Anfänger
Premium

RFID-Werte lesen

In deinem Schlüsselanhänger für die Haustür oder deiner Zugangskarte steckt eine geheime Kennnummer, und dieses Projekt liest sie aus. Halte die Karte an den RFID-Leser, und der Arduino schreibt ihre

4.7(47)
61
WS2812B-LED-Streifen verwenden
#69Mittel
Premium

WS2812B-LED-Streifen verwenden

Du lernst einen smarten LED-Streifen kennen, bei dem du jedes einzelne Licht für sich einfärben kannst. Der Arduino lässt zuerst die ersten fünf LEDs rot leuchten, eine Sekunde später die übrigen fünf

4.8(54)
70
Paddle-Ball-Spiel - SSD1306
#86Mittel
Premium

Paddle-Ball-Spiel - SSD1306

Ein Ball, zwei Schläger und du: Du spielst Tischtennis, eines der allerersten Videospiele, auf einem kleinen OLED-Display. Mit zwei Knöpfen bewegst du deinen Schläger rechts nach oben und unten, den l

4.5(47)
65
DS1302-RTC-Uhrenmodul einrichten
#45Anfänger
Premium

DS1302-RTC-Uhrenmodul einrichten

Du bringst ein kleines Uhrmodul zum Laufen, das die Zeit nicht vergisst, selbst wenn der Arduino ausgeschaltet ist. Das Modul hat seine eigene winzige Batterie, und sobald die Uhr einmal gestellt ist,

4.5(23)
31