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:
| Bibliotheksart | Woher kommt sie? | Wo liegt sie? | Beispiele |
|---|---|---|---|
| Mitgelieferte Bibliotheken | Die IDE installiert sie beim ersten Start selbst | Ordner libraries im Arduino15-Verzeichnis | Servo, Stepper, LiquidCrystal, SD, Ethernet, Keyboard, Mouse |
| Bibliotheken eines Board-Pakets | Sie kommen mit dem Paket, das du in der Board-Verwaltung installierst | Eigener libraries-Ordner des Pakets unter Arduino15/packages | Wire, SPI, EEPROM, SoftwareSerial für den Uno; WiFi, WebServer, HTTPClient, Preferences für den ESP32 |
| Selbst installierte Bibliotheken | Bibliotheksverwalter, .ZIP oder manuelles Kopieren | Ordner libraries in deinem Sketchbook | DHT 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:
| Betriebssystem | Selbst installierte Bibliotheken | Arduino15 (mitgelieferte Bibliotheken und Board-Pakete) |
|---|---|---|
| Windows | C:\Users\<Benutzer>\Documents\Arduino\libraries | C:\Users\<Benutzer>\AppData\Local\Arduino15 |
| macOS | /Users/<Benutzer>/Documents/Arduino/libraries | /Users/<Benutzer>/Library/Arduino15 |
| Linux | /home/<Benutzer>/Arduino/libraries | /home/<Benutzer>/.arduino15 |
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:
- Ö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.
- 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.
- 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.
- Die Versionsliste unten auf der Karte zeigt die neueste Version. Lass sie ohne besonderen Grund auf der neuesten Version und klicke auf Installieren.
- 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.
- 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.

Wenn die Liste unübersichtlich wird, helfen die zwei Filter über dem Suchfeld:
| Filter | Optionen | Wofür? |
|---|---|---|
| Typ | Alle, Aktualisierbar, Installiert, Arduino, Partner, Empfohlen, Beigetragen, Zurückgezogen | Installiert 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. |
| Thema | Anzeige, Sensoren, Kommunikation, Gerätesteuerung, Timing, Datenspeicher, Datenverarbeitung, Signal Ein-/Ausgang, Weitere, Nicht kategorisiert | Grenzt 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.
| Bauteil | Suche im Bibliotheksverwalter | Empfohlene Bibliothek (Autor) und Abhängigkeiten | #include-Zeile |
|---|---|---|---|
| DHT11 / DHT22 | DHT sensor library | DHT sensor library (Adafruit) + Adafruit Unified Sensor | #include <DHT.h> |
| 16x2 I2C LCD | LiquidCrystal I2C | LiquidCrystal I2C (Frank de Brabander) | #include <LiquidCrystal_I2C.h> |
| SSD1306 OLED | Adafruit SSD1306 | Adafruit SSD1306 + Adafruit GFX Library + Adafruit BusIO | #include <Adafruit_SSD1306.h> |
| DS18B20 | DallasTemperature | DallasTemperature (Miles Burton) + OneWire | #include <DallasTemperature.h> |
| RC522 RFID | MFRC522 | MFRC522 (GithubCommunity) | #include <MFRC522.h> |
| IR-Empfänger und Fernbedienung | IRremote | IRremote (shirriff, z3t0, ArminJo) | #include <IRremote.hpp> |
| WS2812B NeoPixel | Adafruit NeoPixel | Adafruit NeoPixel (Adafruit) | #include <Adafruit_NeoPixel.h> |
| DS1307 / DS3231 RTC | RTClib | RTClib (Adafruit) + Adafruit BusIO | #include <RTClib.h> |
| Servo (am ESP32) | ESP32Servo | ESP32Servo (Kevin Harrington, John K. Bennett) | #include <ESP32Servo.h> |

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.
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:
- 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.
- Lass die heruntergeladene Datei, wie sie ist, also nicht entpacken. Die IDE entpackt die ZIP-Datei selbst; dieses Menü nimmt keine Ordner an.
- Öffne in der Arduino IDE Sketch > Bibliothek einbinden > .ZIP-Bibliothek hinzufügen... (englisch: Sketch > Include Library > Add .ZIP Library...).
- Wähle im Dialog die heruntergeladene .zip-Datei aus und klicke auf Öffnen.
- 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.
- Prüfe, ob die Bibliothek angekommen ist: Ihr Name muss unter Datei > Beispiele > Beispiele aus angepassten Bibliotheken stehen.
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:
- 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.
- 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.
- 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.
- 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.
- Öffne die IDE wieder und prüfe, ob die Bibliothek im Menü Datei > Beispiele auftaucht.
| Ordnerstruktur | Ergebnis |
|---|---|
| libraries/DHT_sensor_library/DHT.h | Richtig: alte (flache) Struktur, die IDE findet sie |
| libraries/DHT_sensor_library/library.properties + src/DHT.h | Richtig: aktuelle Struktur, die IDE findet sie |
| libraries/DHT-master/DHT-sensor-library-master/DHT.h | Falsch: 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 |
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:
- Suche im Bibliotheksverwalter nach dem Namen der Bibliothek oder stelle den Filter Typ auf Installiert. Auf der Karte steht die installierte Version.
- Öffne die Versionsliste unten auf der Karte. Unter Andere Versionen stehen alle veröffentlichten Versionen der Bibliothek.
- 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.
- 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.
- 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.
| Bibliothek | Alter Code | Neuer Code | Anzeichen für eine falsche Version |
|---|---|---|---|
| IRremote | 2.x: IRrecv irrecv(11); irrecv.decode(&results); results.value | 3.x und 4.x: IrReceiver.begin(11); IrReceiver.decode(); IrReceiver.decodedIRData.command | Deprecated-Warnungen bei altem Code, leere oder falsche Tastencodes |
| ArduinoJson | 6.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 I2C | GitHub-Fassung: lcd.begin(); | Fassung aus dem Bibliotheksverwalter: lcd.init(); | no matching function for call to 'LiquidCrystal_I2C::begin()' |
| ESP32-Board-Paket und ESP32Servo | Board-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:
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 Meldung | Ursache | Lösung |
|---|---|---|
| Die Datei, die dein Code einbindet (DHT.h, LiquidCrystal_I2C.h) | Die Bibliothek wurde nie installiert | Im Bibliotheksverwalter suchen und installieren |
| Adafruit_Sensor.h (im DHT-Code) | Fehlende Abhängigkeit: Bei der Installation wurde Ohne Abhängigkeiten installieren gewählt | Die Bibliothek Adafruit Unified Sensor installieren |
| Adafruit_I2CDevice.h (im OLED- oder RTC-Code) | Adafruit BusIO fehlt | Die Bibliothek Adafruit BusIO installieren |
| OneWire.h (im DS18B20-Code) | DallasTemperature hat OneWire nicht automatisch mitinstalliert | Die Bibliothek OneWire zusätzlich installieren |
| SoftwareSerial.h (am ESP32) | Diese Bibliothek gehört zum AVR-Board-Paket und fehlt im ESP32-Paket | Eine Hardware-Schnittstelle (Serial2) nutzen oder die Bibliothek EspSoftwareSerial installieren |
| Dht.h, liquidcrystal_i2c.h | Falsche Groß- und Kleinschreibung; die IDE sucht Header-Namen buchstabengetreu, deshalb scheitert das auch unter Windows und macOS | Die #include-Zeile genau wie den Dateinamen in der Bibliothek schreiben |
| Die Bibliothek scheint installiert, die Datei wird aber nicht gefunden | Eine 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 |
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:
| Rang | Was prüft die IDE? | Beispiel |
|---|---|---|
| 1 | Architektur-Kompatibilität | Auf einem ESP32 wird eine Bibliothek, deren library.properties esp32 oder * angibt, einer Bibliothek vorgezogen, die nur avr angibt |
| 2 | Namensübereinstimmung | Für Servo.h gewinnt ein Ordner, der genau Servo heißt, vor einem Ordner Servo-master oder MyServo |
| 3 | Optimierung für das Board | Eine Bibliothek, die die Architektur des Boards ausdrücklich nennt (z. B. architectures=esp32), hat Vorrang vor einer, die nur * angibt |
| 4 | Speicherort | Der libraries-Ordner deines Sketchbooks kommt vor den Bibliotheken des Board-Pakets und diese vor den mitgelieferten Bibliotheken der IDE |
| 5 | Letzte Instanz | Ist 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.
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.
Bibliotheks-Kompatibilität beim ESP32

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 du | Am ESP32 nimmst du | Warum? |
|---|---|---|
| Servo | ESP32Servo (Bibliotheksverwalter) | Die Servo-Bibliothek unterstützt den ESP32 nicht und bricht mit #error ab |
| SoftwareSerial | Serial1, Serial2 (Hardware-UART) oder EspSoftwareSerial | SoftwareSerial gehört zum AVR-Paket; der ESP32 hat bereits drei Hardware-UARTs |
| EEPROM | Preferences (kommt mit dem Board-Paket) | Beim ESP32 wird das EEPROM im Flash nachgebildet; Preferences speichert Schlüssel-Wert-Paare sicherer und einfacher |
| TimerOne, MsTimer2 | Ticker (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:
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:
| Methode | Wann? | Wie? |
|---|---|---|
| Thonny-Paketverwaltung | Am einfachsten, wenn der Pico per USB verbunden ist | Unter Tools > Manage packages suchen; für ssd1306 zum Beispiel micropython-ssd1306 wählen und installieren. Die Datei landet im Ordner /lib auf dem Pico |
| mpremote | Wenn du die Kommandozeile nutzt | Auf 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 Computer | Auf dem Pico selbst import mip und mip.install("ssd1306") ausführen |
| Manuell kopieren | Wenn die Bibliothek eine einzelne .py-Datei ist | Im 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 |
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 screenDer 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.
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.
Projekte, die du danach bauen kannst
Alle Projekte ansehen
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

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

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

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

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

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

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

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,
Weitere Artikel
BlueGrays-App
Diese Schaltung Schritt für Schritt auf dem Handy nachbauen
Schaltplan, Code und Teileliste auf einem Bildschirm. Über 160 Arduino-, ESP32- und Pico-Projekte zum Nachbauen.
Mit dem Handy scannen
Richte die Kamera auf den Code, dann öffnet sich der App-Store deines Handys.
oder im Store öffnen

