Panduan · 18 mnt baca

Cara Instal Library Arduino: Library Manager, ZIP, dan Manual

Cara instal library Arduino langkah demi langkah: Library Manager, instal .ZIP dan manual, berganti versi, serta mengatasi error No such file or directory.

Menginstal library Arduino berarti menambahkan paket kode siap pakai ke Arduino IDE agar kamu bisa memakai sensor, layar, atau modul di sketch-mu, dan ada tiga cara melakukannya: Library Manager (cara termudah dan yang dianjurkan), menambahkan file .ZIP yang sudah diunduh ke IDE, atau menyalin folder library secara manual ke folder libraries di sketchbook-mu. Setelah terinstal, kamu menulis #include <LibraryName.h> di bagian atas sketch dan semua fungsi library siap dipakai. Library yang tepat butuh satu menit untuk diinstal; library atau versi yang salah bisa berubah menjadi berjam-jam mencari bug.

Di panduan ini kita membahas ketiga cara langkah demi langkah di Arduino IDE 2. Setelah itu kamu akan melihat cara memilih yang tepat di antara puluhan library bernama mirip, kembali ke versi lama, membuka contoh-contoh library, dan mengatasi dua pesan yang paling umum: error No such file or directory dan peringatan Multiple libraries were found. Bagian terakhir membahas library mana yang bekerja di ESP32 dan Raspberry Pi Pico, mana yang perlu diganti, dan cara menambahkan library di MicroPython. Jika IDE belum terinstal, mulailah dari Cara Instal Arduino IDE 2.

Apa itu library Arduino dan untuk apa?

Library adalah kumpulan file kode yang melakukan satu tugas tertentu, dikemas agar orang lain bisa memakainya lagi: minimal satu file header (.h), biasanya satu atau lebih file sumber (.cpp), dan hampir selalu beberapa contoh sketch. Misalnya, sensor DHT11 mengirim pembacaannya lewat satu kabel sebagai paket 40 bit dengan waktu yang diatur sampai mikrodetik. Alih-alih menulis pengaturan waktu itu sendiri, kamu menginstal library DHT dan cukup menulis dht.readTemperature(); library menangani bagian yang sulit. Jangan samakan library dengan paket board: paket board yang diinstal dari Boards Manager mengajari IDE keluarga prosesor baru seperti ESP32 atau Pico, sedangkan library memudahkan pemakaian hardware atau tugas tertentu. Library Arduino datang dari tiga tempat berbeda:

Jenis libraryDatang dari mana?Disimpan di mana?Contoh
Library bawaanIDE menginstalnya sendiri ketika pertama kali dijalankanFolder libraries di dalam Arduino15Servo, Stepper, LiquidCrystal, SD, Ethernet, Keyboard, Mouse
Library paket boardIkut bersama paket yang kamu instal dari Boards ManagerFolder libraries milik paket itu di bawah Arduino15/packagesWire, SPI, EEPROM, SoftwareSerial untuk Uno; WiFi, WebServer, HTTPClient, Preferences untuk ESP32
Library yang kamu instalLibrary Manager, .ZIP, atau salin manualFolder libraries di sketchbook-muDHT sensor library, LiquidCrystal I2C, Adafruit SSD1306, ESP32Servo

Kamu tidak perlu menginstal library yang ikut bersama paket board, seperti Wire, SPI, atau library WiFi ESP32; cukup menulis baris #include. Library yang kamu instal sendiri masuk ke folder libraries di dalam sketchbook-mu. Berikut lokasi bawaan untuk setiap sistem operasi:

Sistem operasiLibrary yang kamu instalArduino15 (library bawaan dan paket board)
WindowsC:\Users\<user>\Documents\Arduino\librariesC:\Users\<user>\AppData\Local\Arduino15
macOS/Users/<user>/Documents/Arduino/libraries/Users/<user>/Library/Arduino15
Linux/home/<user>/Arduino/libraries (folder sketchbook)/home/<user>/.arduino15
Kamu bisa melihat lokasi sebenarnya sketchbook-mu di kolom Sketchbook location di File > Preferences; folder libraries selalu ada di dalamnya. Di Windows, jika folder Documents-mu tersinkron dengan OneDrive, jalurnya bisa menjadi C:\Users\<user>\OneDrive\Documents\Arduino. Folder AppData (Windows), Library (macOS), dan .arduino15 (Linux) tersembunyi secara bawaan; nyalakan tampilan item tersembunyi di file explorer-mu, atau tekan Cmd + Shift + . di Finder macOS.

Cara 1: Instal library dengan Library Manager

Library Manager memungkinkanmu mencari ribuan library di indeks library resmi Arduino dan menginstalnya dengan satu klik. Library di indeks ini dikemas menurut spesifikasi tetap, jadi struktur foldernya tidak pernah rusak, library lain yang dibutuhkan (dependensi) ditawarkan otomatis, dan IDE memberi tahu ketika ada versi baru. Jadi jika library yang kamu butuhkan ada di daftar, selalu pakai cara ini. Sebagai contoh, mari instal library Adafruit untuk sensor DHT11 dan DHT22:

  1. Buka Arduino IDE 2 dan klik ikon buku di bilah samping kiri. Kamu juga bisa membuka panel yang sama dari Sketch > Include Library > Manage Libraries atau dengan pintasan Ctrl+Shift+I (Cmd+Shift+I di macOS).
  2. Ketik DHT sensor library di kotak pencarian. Dalam beberapa detik, setiap library yang nama atau deskripsinya mengandung kata-kata itu muncul sebagai daftar kartu.
  3. Setiap kartu menampilkan nama dan pembuat library di atas, deskripsi singkat di bawahnya, dan tautan More info. Kamu akan melihat beberapa library DHT dengan nama mirip; pilih kartu DHT sensor library yang pembuatnya Adafruit.
  4. Daftar versi di bagian bawah kartu menunjukkan versi terbaru. Kecuali kamu punya alasan khusus, biarkan di versi terbaru lalu klik Install.
  5. IDE membuka jendela berjudul Install library dependencies dan memberi tahu bahwa library ini butuh library lain bernama Adafruit Unified Sensor. Klik Install All.
  6. Baris-baris unduhan bergulir di panel output dan notifikasi seperti Successfully installed library DHT sensor library:1.4.7 muncul di kanan bawah. Kartu sekarang menampilkan versi yang terinstal.

Pilihan yang kamu buat di jendela dependensi itu penting. Install without dependencies hanya menginstal library utama; ketika kamu mengompilasi, kamu mendapat Adafruit_Sensor.h: No such file or directory, karena salah satu file library DHT menyertakan header itu. Kadang rantai dependensinya punya beberapa mata rantai: library OLED Adafruit SSD1306 butuh Adafruit GFX Library, yang pada gilirannya butuh Adafruit BusIO. Ketika kamu mengklik Install All, IDE menginstal seluruh rantai sekaligus; kecuali kamu sengaja melewati sebuah dependensi, selalu pakai opsi ini.

Modul layar OLED I2C 0,96 inci
Layar OLED 0,96 inci: ketika kamu menginstal library Adafruit SSD1306, Adafruit GFX Library dan Adafruit BusIO ikut sebagai dependensi; jika salah satunya tidak ada, kode tidak bisa dikompilasi.

Ketika daftarnya ramai, dua filter di atas kotak pencarian memudahkan pekerjaan:

FilterOpsiKegunaannya
TypeAll, Updatable, Installed, Arduino, Partner, Recommended, Contributed, RetiredInstalled menampilkan library mana yang terinstal dan versinya, Updatable menampilkan yang punya rilis lebih baru. Arduino mencantumkan library resmi, Contributed library komunitas, dan Retired library yang sudah tidak dikembangkan.
TopicDisplay, Sensors, Communication, Device Control, Timing, Data Storage, Data Processing, Signal Input/Output, Other, UncategorizedMempersempit hasil ketika kamu tidak tahu nama persis sebuah library; misalnya, di Display hanya library LCD, OLED, dan TFT yang tersisa.

Memilih yang tepat di antara library bernama sama

Ketik DHT saja di Library Manager dan kamu mendapat puluhan hasil; mencari LiquidCrystal I2C juga menampilkan beberapa library dengan nama yang hampir sama. Walaupun mengendalikan hardware yang sama, nama fungsi, parameter constructor, dan contoh-contohnya berbeda. Kode yang ditulis untuk satu library sering tidak bisa dikompilasi dengan library lain yang namanya mirip. Untuk memilih yang tepat, ikuti urutan ini:

  • Lihat baris #include di kodemu: jika contoh yang kamu ikuti menulis #include <LiquidCrystal_I2C.h>, kamu butuh library yang berisi file itu. Contoh yang ditulis dengan baik juga menyebut nama library dan pembuatnya.
  • Cek pembuatnya: nama terkenal seperti Adafruit, SparkFun, Arduino, dan Espressif, atau produsen komponennya, biasanya menerbitkan library yang dokumentasinya paling baik dan paling lama dirawat.
  • Buka tautan More info: di halaman library, cek tanggal pembaruan terakhir, issue yang masih terbuka, dan board apa saja yang didukung. Library yang bertahun-tahun tidak diperbarui bisa bermasalah di ESP32 atau Pico.
  • Lihat riwayat versinya: daftar versi yang panjang menunjukkan library itu dikembangkan secara teratur. Jauhi library yang hanya punya satu versi dan deskripsi kosong.
  • Coba dulu contoh bawaan library: setelah menginstal, kompilasi salah satu contohnya. Jika contohnya berhasil dikompilasi tapi kodemu tidak, kemungkinan besar kodemu ditulis untuk library yang berbeda.
KomponenCari di Library ManagerLibrary yang dianjurkan (pembuat) dan dependensinyaBaris #include
DHT11 / DHT22DHT sensor libraryDHT sensor library (Adafruit) + Adafruit Unified Sensor#include <DHT.h>
LCD I2C 16x2LiquidCrystal I2CLiquidCrystal I2C (Frank de Brabander)#include <LiquidCrystal_I2C.h>
OLED SSD1306Adafruit SSD1306Adafruit SSD1306 + Adafruit GFX Library + Adafruit BusIO#include <Adafruit_SSD1306.h>
DS18B20DallasTemperatureDallasTemperature (Miles Burton) + OneWire#include <DallasTemperature.h>
RFID RC522MFRC522MFRC522 (GithubCommunity)#include <MFRC522.h>
Penerima IR dan remoteIRremoteIRremote (shirriff, z3t0, ArminJo)#include <IRremote.hpp>
WS2812B NeoPixelAdafruit NeoPixelAdafruit NeoPixel (Adafruit)#include <Adafruit_NeoPixel.h>
RTC DS1307 / DS3231RTClibRTClib (Adafruit) + Adafruit BusIO#include <RTClib.h>
Servo (di ESP32)ESP32ServoESP32Servo (Kevin Harrington, John K. Bennett)#include <ESP32Servo.h>
Layar LCD 16x2 dengan backpack I2C
LCD 16x2 dengan backpack I2C: ada beberapa library dengan nama yang hampir sama untuk layar ini, dan masing-masing memulainya dengan fungsi yang berbeda.

Contoh paling terkenal dari kebingungan ini adalah LCD I2C. LiquidCrystal I2C (Frank de Brabander) di Library Manager memulai layar dengan lcd.init(). Versi lain dari library yang sama yang beredar di GitHub memakai lcd.begin() tanpa parameter sebagai gantinya. Jika kamu mengompilasi kode yang ditulis untuk versi itu dengan library dari Library Manager, kamu mendapat no matching function for call to 'LiquidCrystal_I2C::begin()'. Solusinya sederhana: ubah lcd.begin() menjadi lcd.init() atau mulai dari contoh library yang kamu instal. Kami membahas pengkabelan dan cara menemukan alamat I2C secara rinci di Cara Memakai Layar LCD I2C.

Uji instalasinya: tampilan suhu dengan dua library

Cara tercepat untuk mengecek apakah library-mu terinstal dengan benar adalah mengompilasi sketch kecil yang memakainya. Kode di bawah menampilkan suhu dan kelembapan yang dibaca dari DHT11 di LCD I2C 16x2. Instal DHT sensor library (beserta dependensinya) dan LiquidCrystal I2C dari Library Manager; sambungkan pin data DHT11 ke pin 2 Arduino Uno dan pin SDA serta SCL LCD ke A4 dan A5. Kamu bisa melihat letak pin-pin itu di board dengan alat Pinout.

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

Baris-baris #include di atas memberi tahu compiler file library mana yang perlu ditambahkan. Wire.h ikut bersama paket board, jadi tidak perlu diinstal terpisah; DHT.h dan LiquidCrystal_I2C.h berasal dari library yang baru saja kamu instal. Jika kamu mengklik Verify dan melihat baris Sketch uses ... bytes di panel output, semua library sudah ditemukan. Jika kamu melihat pesan merah No such file or directory, lompat ke bagian error di bawah. Cara kerja sensor dan perbedaannya dengan DHT22 dibahas di Sensor Suhu dan Kelembapan DHT11.

Cara 2: Tambahkan library dari file .ZIP

Sebagian library tidak ada di Library Manager: mungkin library baru yang belum ditambahkan ke indeks, driver yang dibagikan produsen sensor di situsnya sendiri, atau library khusus dari buku, kursus, atau gurumu. Library seperti ini biasanya dibagikan lewat GitHub atau sebagai file .zip biasa. Arduino IDE bisa membongkar arsipnya dan menaruhnya di folder yang tepat sendiri:

  1. Di halaman GitHub library, klik tombol hijau Code dan pilih Download ZIP. Jika halamannya punya bagian Releases, mengunduh zip rilis stabil dari sana lebih aman.
  2. Biarkan file yang sudah diunduh apa adanya, tanpa diekstrak. IDE mengekstrak zip-nya sendiri; menu ini tidak menerima folder.
  3. Di Arduino IDE, buka Sketch > Include Library > Add .ZIP Library....
  4. Di jendela yang terbuka, pilih file .zip yang kamu unduh lalu klik Open.
  5. Jika instalasi berhasil, notifikasi Successfully installed library from ... archive muncul di kanan bawah. Jika library dengan nama yang sama sudah ada, IDE bertanya apakah kamu ingin menimpanya; konfirmasi jika kamu ingin mengganti versi yang terinstal dengan yang baru.
  6. Pastikan library sudah masuk dengan mencari namanya di File > Examples > Examples from Custom Libraries.
Kadang IDE menolak file zip. Error archive is not valid: multiple files found in zip file top level berarti tingkat teratas arsip berisi beberapa file atau folder, bukan satu folder library; biasanya itu bundel proyek yang berisi beberapa library, kode, dan dokumen. Error library not valid berarti tidak ada file header di akar folder atau di subfolder src-nya, jadi library sebenarnya tersangkut satu folder lebih dalam. Dalam kedua kasus, ekstrak arsipnya, cari folder library di dalamnya, lalu salin secara manual dengan cara berikutnya.

Cara 3: Salin library ke folder libraries secara manual

Instalasi manual berguna di laboratorium sekolah tanpa koneksi internet, untuk folder library yang diberikan temanmu lewat flashdisk, atau untuk file zip yang ditolak IDE. Yang perlu kamu lakukan hanyalah menaruh folder library di tempat yang tepat, dengan struktur yang tepat:

  1. Tutup Arduino IDE. IDE memindai daftar library ketika dimulai, jadi mungkin tidak melihat folder yang disalin selama ia berjalan.
  2. Ekstrak file-nya dan cari folder yang berisi file library.properties atau file .h library. Itulah folder akar library.
  3. Salin folder ini ke folder libraries di sketchbook-mu (biasanya Documents\Arduino\libraries di Windows). Jika tidak ada folder libraries, buat sendiri; namanya harus persis libraries, dengan huruf kecil.
  4. Hapus akhiran -master atau -main dari nama folder; misalnya, ganti nama IRremote-master menjadi IRremote. Nama folder library harus dimulai dengan huruf atau angka, hanya berisi huruf Latin dasar, angka, garis bawah, titik, dan tanda hubung, dan panjangnya paling banyak 63 karakter; jangan pakai spasi atau karakter beraksen.
  5. Buka IDE lagi dan pastikan library muncul di menu File > Examples.
Struktur folderHasil
libraries/DHT_sensor_library/DHT.hBenar: tata letak lama (datar), IDE menemukannya
libraries/DHT_sensor_library/library.properties + src/DHT.h (tata letak baru)Benar: tata letak sekarang, IDE menemukannya
libraries/DHT-master/DHT-sensor-library-master/DHT.h (folder bersarang)Salah: kelebihan satu tingkat folder, IDE tidak bisa menemukan library-nya
libraries/DHT.h (file tanpa folder)Salah: setiap library harus berada di foldernya sendiri
libraries/My Library/Berisiko: spasi dan karakter beraksen melanggar aturan penamaan dan bisa menimbulkan masalah build
Folder instalasi IDE (mis. Program Files)Salah: Arduino IDE 2 tidak pernah mencari library di sana; di IDE 1.8 lama library di sana bisa terhapus ketika IDE diperbarui atau dihapus
Jika kamu hanya akan memakai sebuah library di satu proyek dan ingin library itu ikut terbawa ketika proyeknya dibagikan, buat folder bernama src di dalam folder sketch dan taruh file library di sana (mis. src/MyLib/MyLib.h). Dalam kasus itu kamu menyertakan library dengan tanda kutip dan jalurnya, bukan kurung sudut: #include "src/MyLib/MyLib.h". IDE mengompilasi folder src bersama sketch, jadi kamu tidak perlu menginstal apa pun ke folder libraries.

Mengganti versi library: memperbarui dan kembali ke versi lama

Library berkembang seiring waktu, dan pada perubahan versi besar sebagian fungsi bisa berganti nama atau bekerja berbeda. Jika contoh yang kamu temukan di internet ditulis untuk versi beberapa tahun lalu, contoh itu mungkin tidak bisa dikompilasi dengan versi terbaru, atau bisa dikompilasi tapi berperilaku salah. Dalam kasus itu kamu kembali ke versi tempat kode itu ditulis atau menyesuaikan kodenya dengan versi baru. Library Manager berganti versi dalam beberapa klik:

  1. Cari nama library di Library Manager atau atur filter Type ke Installed. Kartunya menampilkan versi yang terinstal.
  2. Buka daftar versi di bagian bawah kartu. Semua versi library yang pernah diterbitkan tercantum di Other Versions.
  3. Pilih versi yang kamu mau lalu klik Install. IDE menghapus versi lama dan menginstal versi yang kamu pilih; satu library hanya punya satu versi di folder libraries.
  4. Ketika dimulai, IDE kadang menampilkan notifikasi Updates are available for some of your libraries. Sebelum memperbarui semuanya sekaligus dari sana, catat versi apa yang dipakai proyek-proyekmu yang sudah berfungsi; pembaruan massal bisa mengubah versi besar banyak library sekaligus.
  5. Untuk menghapus library sepenuhnya, arahkan kursor ke kartunya lalu klik Remove; IDE meminta konfirmasi dan menghapus foldernya dari libraries.
LibraryKode lamaKode baruGejala jika tidak cocok
IRremote2.x: IRrecv irrecv(11); irrecv.decode(&results); results.value (API lama)3.x dan 4.x: IrReceiver.begin(11); IrReceiver.decode(); IrReceiver.decodedIRData.commandPeringatan deprecated di kode lama, kode tombol kosong atau salah
ArduinoJson6.x: StaticJsonDocument<200> doc;7.x: JsonDocument doc;7.x mengompilasi kelas lama dengan peringatan deprecated; kode 5.x (StaticJsonBuffer) sama sekali tidak bisa dikompilasi
LiquidCrystal I2CVersi GitHub: lcd.begin();Versi Library Manager: lcd.init();“no matching function for call to 'LiquidCrystal_I2C::begin()'”
Paket board ESP32 dan ESP32ServoPaket board 2.x: ledcSetup(), ledcAttachPin()Paket board 3.x: ledcAttach(); ESP32Servo 3.x“'ledcSetup' was not declared in this scope”

Cara terbaik untuk mencatat versi tempat kodemu ditulis adalah menaruh nama dan versi library di komentar di bagian atas file. Sebagian library juga melaporkan versinya lewat makro; ArduinoJson, misalnya, mendefinisikan ARDUINOJSON_VERSION_MAJOR. Sketch di bawah menghentikan build dengan pesan yang jelas jika versi besar yang terinstal salah; dengan versi yang benar, sketch ini membuat string JSON kecil dan mencetak versi library ke Serial Monitor:

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

Dengan pendekatan ini, ketika kamu membagikan kode ke teman sekelas atau di internet, orang yang menginstal versi yang salah melihat satu baris yang memberi tahu apa yang harus dilakukan, bukan error yang membingungkan. Jika kamu suka command line, kamu bisa menginstal versi tertentu langsung dengan Arduino CLI: arduino-cli lib install "DHT sensor [email protected]". Untuk melihat versi library mana yang benar-benar dipakai, nyalakan verbose output selama kompilasi di Preferences; di akhir build, baris Using library ... at version ... in folder: ... dicetak untuk setiap library.

Error No such file or directory dan cara mengatasinya

Ini error yang paling sering kamu lihat ketika menambahkan library. Jika compiler tidak bisa menemukan file yang diminta baris #include di folder library mana pun, panel output menampilkan fatal error: DHT.h: No such file or directory dan compilation terminated., dan notifikasi Compilation error: DHT.h: No such file or directory muncul di kanan bawah. Nama file di pesan itu memberi tahu library mana yang hilang. Ingat bahwa file itu tidak selalu berasal dari baris yang kamu tulis; library yang kamu instal bisa saja menyertakan library lain:

File di pesanPenyebabSolusi
File yang disertakan kodemu (DHT.h, LiquidCrystal_I2C.h)Library-nya belum pernah diinstalCari di Library Manager lalu instal
Adafruit_Sensor.h (di kode DHT)Dependensi hilang: Install without dependencies dipilih ketika instalasiInstal library Adafruit Unified Sensor
Adafruit_I2CDevice.h (di kode OLED atau RTC)Adafruit BusIO tidak adaInstal library Adafruit BusIO
OneWire.h (di kode DS18B20)DallasTemperature tidak menginstal OneWire secara otomatisInstal library OneWire secara terpisah
SoftwareSerial.h (di ESP32)Library ini ikut bersama paket board AVR dan tidak ada di paket ESP32Pakai port serial hardware (Serial2) atau instal library EspSoftwareSerial
Dht.h, liquidcrystal_i2c.hHuruf besar atau kecil salah; IDE mencari nama header huruf demi huruf, jadi ini gagal juga di Windows dan macOSTulis baris #include persis seperti nama file di library
Library terlihat terinstal tapi file-nya tidak ditemukanKelebihan satu tingkat folder karena salin manual, atau sketchbook yang berbeda dari yang dipakai IDE (OneDrive)Cek struktur folder dan lokasi sketchbook di Preferences
Gulir ke atas di panel output untuk melihat seluruh pesan error; penyebab sebenarnya biasanya ada di baris merah pertama. Jalur file di baris itu menunjukkan file mana yang meminta header yang hilang: jika jalurnya berakhir di DHT_U.h dan pesannya menyebut Adafruit_Sensor.h, yang butuh file yang hilang adalah library DHT, bukan kodemu. Untuk salah ketik, titik koma yang hilang, dan error compiler lain seperti was not declared in this scope, lihat error kompilasi Arduino.

Apa arti peringatan Multiple libraries were found?

Pesan ini muncul ketika lebih dari satu library bisa memenuhi sebuah baris #include di kodemu. Misalnya, jika kamu pernah menginstal library Servo lama dari proyek sebelumnya di folder Documents, bersama library Servo bawaan IDE ada dua kandidat, dan output menampilkan Multiple libraries were found for "Servo.h" diikuti Used: C:\Users\<user>\Documents\Arduino\libraries\Servo dan Not used: C:\Users\<user>\AppData\Local\Arduino15\libraries\Servo. Ini bukan error, melainkan informasi; build tetap berjalan. Masalah hanya muncul jika library di baris Used bukan yang kamu inginkan. IDE memilih kira-kira dengan urutan ini:

UrutanYang dicek IDEContoh
1Kompatibilitas arsitekturDi ESP32, library yang library.properties-nya menyebut esp32 atau * lebih diutamakan daripada yang hanya menyebut avr
2Kecocokan namaUntuk Servo.h, folder yang namanya persis Servo menang atas folder Servo-master atau MyServo
3Optimasi khusus boardLibrary yang mencantumkan arsitektur board secara eksplisit (mis. architectures=esp32) lebih diutamakan daripada yang hanya menyebut *
4LokasiFolder libraries di sketchbook-mu didahulukan daripada library paket board, yang didahulukan daripada library bawaan IDE
5Pilihan terakhirJika semua hal lain sama, dipilih library yang namanya paling dekat dengan nama file yang disertakan
  • Baca baris Used: apakah folder yang dipakai adalah library yang kamu harapkan? Jika ya, kamu tidak perlu melakukan apa-apa; pesannya bisa diabaikan.
  • Hapus salinan yang berlebih: jika library yang salah terpilih, cari di Library Manager lalu klik Remove, atau hapus foldernya dari folder libraries di sketchbook-mu selagi IDE tertutup.
  • Hati-hati dengan sisa dari IDE lama: library lama yang disalin manual di zaman Arduino IDE 1.8 berada di folder Documents dan, berkat prioritas lokasi, menimpa library bawaan IDE yang lebih baru.
  • Jangan simpan dua salinan library yang sama: jika folder libraries berisi dua salinan seperti IRremote dan IRremote-master, Library Manager tidak bisa memperbarui library itu dan memintamu menghapus duplikatnya secara manual.
  • Cadangkan sebelum menghapus: alih-alih menghapus folder, pindahkan dulu sementara ke desktop; jika semuanya berjalan, hapus nanti.
Jangan sentuh subfolder packages di Arduino15 atau library bawaannya secara manual. Library seperti Wire, SPI, atau WiFi di sana adalah bagian dari paket board; jika kamu menghapusnya, tidak ada yang bisa dikompilasi untuk board itu dan kamu harus menginstal ulang paketnya dari Boards Manager. Salinan yang bermasalah hampir selalu ada di folder libraries di sketchbook-mu sendiri.

Membuka contoh library dan menambahkan library ke kodemu

Cara tercepat mempelajari sebuah library adalah lewat contoh-contoh sketch-nya. Contohnya ikut bersama versi yang kamu instal, jadi berbeda dengan kode dari internet, contoh itu selalu cocok dengan versi yang terinstal. Menu File > Examples disusun untuk board yang dipilih dan punya bagian-bagian ini:

  • Contoh bawaan: contoh dasar IDE, seperti 01.Basics dan 02.Digital, tempat Blink berada.
  • Bagian yang dinamai sesuai board-mu (mis. Examples for Arduino Uno): contoh dari library yang ikut bersama IDE dan paket board yang dipilih. Dengan Uno terpilih kamu akan menemukan Servo, EEPROM, dan SoftwareSerial di sini; dengan ESP32 terpilih, WiFi, WebServer, dan Preferences.
  • Examples from Custom Libraries: contoh dari library yang kamu instal sendiri, misalnya DHT sensor library > DHTtester.

Kamu juga bisa mencapai contoh library yang terinstal dari menu tiga titik di samping kartunya di Library Manager. Contohnya terbuka di jendela baru; ketika kamu mengubahnya dan ingin menyimpan, IDE meminta nama dan lokasi baru, karena file contoh disimpan dalam mode baca-saja di folder library. Untuk menambahkan library ke sketch-mu sendiri, cukup klik nama library di menu Sketch > Include Library: IDE menulis baris #include yang diperlukan di bagian atas kodemu. Sebagian library berisi beberapa file header, jadi menu ini bisa menambahkan beberapa baris; kamu bisa menghapus yang tidak dipakai.

Jika contoh library-mu tidak muncul di menu, cek dulu pilihan board: daftar contoh disusun untuk board yang dipilih, dan contoh dari library yang tidak mendukung arsitektur board-mu mungkin tidak dicantumkan. Jika kamu menyalin library secara manual, mulai ulang IDE. Jika struktur foldernya salah (kelebihan satu tingkat folder), library dan contoh-contohnya sama sekali tidak terlihat.

Kompatibilitas library di ESP32

Board pengembangan ESP32
ESP32: kebanyakan library Arduino bekerja, tapi library yang mengakses timer dan register Uno secara langsung diganti dengan padanan ESP32.

Karena ESP32 juga diprogram dengan Arduino IDE, kebanyakan library, terutama library sensor dan layar yang berkomunikasi lewat I2C, SPI, atau satu kabel, bekerja di ESP32 tanpa perubahan. Yang bermasalah adalah library yang langsung menyentuh timer dan register prosesor ATmega328P di Arduino Uno. Jika IDE tidak melihat arsitektur ESP32 di file library.properties sebuah library, IDE mencetak peringatan ini di awal build: 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). Itu hanya peringatan: LiquidCrystal I2C hanya memakai library Wire, jadi bekerja baik di ESP32. Library Servo, sebaliknya, sengaja menghentikan build dengan pesan #error yang diawali This library only supports boards with an AVR, SAM, SAMD, NRF52. Selain itu, jangan instal library WiFi, WebServer, HTTPClient, Preferences, dan BluetoothSerial yang ikut bersama paket board ESP32 dari Library Manager; library lain dengan nama yang sama hanya menimbulkan kebingungan.

Yang kamu pakai di UnoPakai di ESP32Kenapa?
ServoESP32Servo (Library Manager)Library Servo tidak mendukung ESP32 dan berhenti dengan #error
SoftwareSerialSerial1, Serial2 (UART hardware) atau EspSoftwareSerialSoftwareSerial milik paket AVR; ESP32 sudah punya tiga UART hardware
EEPROMPreferences (ikut bersama paket board)Di ESP32, EEPROM diemulasikan di flash; Preferences menyimpan data kunci-nilai dengan lebih aman dan mudah
TimerOne, MsTimer2Ticker (ikut bersama paket board)Library yang mengakses register timer AVR tidak bisa dikompilasi di ESP32

Jika kamu ingin memakai sketch yang sama di Uno, ESP32, dan Pico, kamu bisa memilih library yang tepat untuk setiap board dengan makro arsitektur yang didefinisikan paket board. Paket ESP32 mendefinisikan ARDUINO_ARCH_ESP32, paket arduino-pico untuk Pico ARDUINO_ARCH_RP2040, dan board AVR seperti Uno dan Nano ARDUINO_ARCH_AVR. Sketch servo di bawah bisa dikompilasi di ketiga board; untuk ESP32 kamu hanya perlu menginstal library ESP32Servo:

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

Di ESP32 juga penting agar versi library cocok dengan versi paket board. Di seri 3.x paket board ESP32, fungsi PWM (LEDC) berubah: ledcSetup() dan ledcAttachPin() dihapus dan diganti dengan ledcAttach(). Karena itu versi library dan contoh yang memakai fungsi lama gagal di 3.x dengan 'ledcSetup' was not declared in this scope. Versi ESP32Servo yang sekarang ditulis untuk paket board 3.x. Solusinya adalah pindah ke versi library yang sekarang atau, jika kamu perlu mem-build proyek lama tanpa perubahan, menurunkan paket esp32 di Boards Manager ke 2.0.17, rilis 2.x terakhir. Kamu akan menemukan pin board dan proyek Wi-Fi pertama di Apa Itu ESP32?, serta pengkabelan dan daya servo di Apa Itu Motor Servo?.

Library di Raspberry Pi Pico: Arduino IDE dan MicroPython

Jika kamu memprogram Pico dengan Arduino IDE (paket board Raspberry Pi Pico/RP2040/RP2350 buatan Earle F. Philhower), library diinstal dengan cara yang sama seperti di Uno dan masuk ke folder libraries yang sama. Nama arsitektur paket ini adalah rp2040; chip RP2350 di Pico 2 memakai nama yang sama. Wire, SPI, Servo, EEPROM, dan SoftwareSerial berbasis PIO sudah ada di dalam paket board, dan di Pico W library WiFi juga sudah siap. Kebanyakan library sensor dan layar Adafruit bekerja baik di Pico; library yang menyentuh register AVR juga tidak bekerja di sini. Di Pico, EEPROM diemulasikan di flash, jadi kamu memulainya dengan EEPROM.begin() dan menyimpan perubahan dengan EEPROM.commit().

Di MicroPython, library adalah file .py (atau .mpy yang sudah dikompilasi) di sistem file Pico, biasanya ditaruh di folder /lib. Modul seperti machine, time, dht, onewire, ds18x20, neopixel, dan framebuf sudah ikut bersama MicroPython; ketik help("modules") di Shell Thonny untuk melihat daftar lengkapnya. Kamu bisa menambahkan driver yang tidak ada di daftar dengan empat cara:

CaraKapan?Bagaimana?
Pengelola paket ThonnyCara termudah, dengan Pico tersambung lewat USBCari di Tools > Manage packages; untuk ssd1306, misalnya, pilih micropython-ssd1306 lalu instal. File-nya masuk ke folder /lib di Pico
mpremoteJika kamu memakai command lineDi komputermu, mpremote mip install ssd1306 mengunduh library dari micropython-lib dan menyalinnya ke Pico
mip (hanya Pico W)Dengan Pico W tersambung ke Wi-Fi, tanpa komputerJalankan import mip dan mip.install("ssd1306") di Pico itu sendiri
Salin manualJika library-nya satu file .pyDi panel Files Thonny, buka folder /lib di Pico, klik kanan file di komputermu lalu upload ke Pico
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

Bagian pertama kode mencoba mengimpor modul ssd1306; jika tidak ada, kode menyambungkan Pico W ke Wi-Fi, mengunduh library dari micropython-lib, lalu menulis teks di layar. Di Pico tanpa Wi-Fi, kamu melakukan pekerjaan yang sama dari komputer dengan Thonny atau mpremote. Pengkabelan OLED dan perintah menggambar ada di Cara Memakai Layar OLED (SSD1306), dan perintah dasar serta sistem file MicroPython di Dasar-dasar MicroPython. Jika kamu baru pertama kali menyiapkan Pico, mulailah dari Apa Itu Raspberry Pi Pico?.

Kesalahan umum ketika menambahkan library

  • Menginstal library tapi lupa paket board: menginstal library untuk ESP32 atau Pico tidak mengajari IDE board-nya; instal dulu paket board dari Boards Manager, baru library-nya.
  • Melewatkan dependensi: Install without dependencies adalah penyebab paling umum error file hilang seperti Adafruit_Sensor.h atau Adafruit_I2CDevice.h.
  • Mengekstrak dulu lalu memakai menu .ZIP: menu itu hanya menerima file zip; jika kamu punya folder, salin ke folder libraries secara manual.
  • Menaruh library di tempat yang salah: library yang disalin ke folder sketch, ke desktop, atau ke folder instalasi IDE tidak akan ditemukan; tempat yang benar adalah folder libraries di sketchbook-mu.
  • Beberapa salinan library yang sama: dua folder seperti IRremote dan IRremote-master menimbulkan peringatan Multiple libraries dan versi yang salah terpakai; hapus salah satunya.
  • Memperbarui semuanya tanpa melihat: pembaruan yang melompati versi besar bisa merusak proyek yang sudah berfungsi; lihat sekilas catatan rilis library sebelum memperbarui.
  • Karakter beraksen atau spasi di library buatanmu: jika kamu menulis library sendiri, pakai hanya huruf Latin dasar, angka, dan garis bawah di nama folder dan file.
Ketika memulai proyek, tulis nama, pembuat, dan versi setiap library yang kamu pakai di komentar di bagian atas kode, misalnya // DHT sensor library (Adafruit) 1.4.7. Ketika kamu membuka proyek itu lagi berbulan-bulan kemudian atau membagikannya ke teman, kamu langsung melihat versi library mana yang perlu diinstal. Jika kodemu berhasil dikompilasi tapi tidak mau di-upload ke board, masalahnya bukan di library; lihat Kode Arduino Gagal Di-upload.

Begitu kamu terbiasa menginstal library Arduino, setiap sensor dan layar baru hanya butuh beberapa menit: cari library dari pembuat yang tepat di Library Manager, instal bersama dependensinya, coba dulu contoh bawaan library, lalu lanjut ke kodemu sendiri. Di aplikasi BlueGrays kamu akan menemukan proyek yang memakai library, seperti suhu dan kelembapan dengan DHT11, LCD I2C, motor servo, pembaca kartu RFID, remote IR, LED WS2812B, dan game Pong di OLED, lengkap dengan skema rangkaian dan kode yang dijelaskan langkah demi langkah.

Pertanyaan umum

Di mana library Arduino diinstal?

Library yang kamu instal dengan Library Manager, file .ZIP, atau secara manual masuk ke folder libraries di sketchbook-mu; di Windows biasanya Documents\Arduino\libraries, di Linux ~/Arduino/libraries. Kamu bisa melihat lokasi persisnya di kolom Sketchbook location di File > Preferences. Library bawaan yang ikut bersama IDE dan library paket board disimpan terpisah di folder Arduino15.

Kenapa library ZIP yang kuunduh tidak mau terinstal di Arduino IDE?

Penyebab paling umum adalah zip-nya berisi beberapa folder, bukan satu folder library, atau library-nya terkubur di subfolder; IDE lalu melaporkan “multiple files found in zip file top level” atau “library not valid”. Ekstrak zip-nya, cari folder yang berisi library.properties atau file .h, lalu salin folder itu ke libraries secara manual. Jika sudah kamu ekstrak, menu .ZIP tidak akan menerima foldernya.

Bagaimana cara menghapus library Arduino?

Cari library di Library Manager, arahkan kursor ke kartunya, lalu klik Remove; IDE menghapus foldernya dari libraries. Library yang kamu instal secara manual bisa dihapus dari folder libraries di sketchbook-mu selagi IDE tertutup. Jangan sentuh library paket board di folder Arduino15.

Bagaimana cara mengatasi “No such file or directory” di Arduino?

Cari tahu file .h di pesan itu milik library mana, lalu instal library itu dari Library Manager. Jika itu header yang tidak kamu tulis sendiri (mis. Adafruit_Sensor.h), ada dependensi library yang kamu instal yang hilang. Jika error-nya tetap muncul walaupun library sudah terinstal, cek huruf besar dan kecil di baris #include dan struktur folder yang kamu salin secara manual.

Bisakah aku menginstal library Arduino tanpa internet?

Bisa. Unduh file zip library di komputer lain yang tersambung internet dan bawa dengan flashdisk. Tambahkan zip-nya dengan Add .ZIP Library, atau salin folder yang sudah diekstrak ke folder libraries di sketchbook-mu; jangan lupa membawa dependensi library dengan cara yang sama, satu per satu.

Apakah library Arduino bekerja di ESP32 dan Raspberry Pi Pico?

Kebanyakan library sensor dan layar yang berkomunikasi lewat I2C, SPI, atau satu kabel bekerja tanpa perubahan di ESP32 dan di paket Arduino untuk Pico. Library seperti Servo dan TimerOne yang langsung mengakses timer prosesor AVR diganti di ESP32 dengan ESP32Servo dan Ticker, sedangkan paket board Pico menyertakan library Servo-nya sendiri. Peringatan “claims to run on avr architecture(s)” saja tidak berarti library-nya tidak akan bekerja.

Lihat semua proyek
Suhu dan Kelembapan dengan DHT11
#55Menengah

Suhu dan Kelembapan dengan DHT11

Seberapa hangat kamarmu, dan apakah udaranya lembap atau kering? Sensor DHT11 mengukur suhu dan kelembapan, dan Arduino menulis nilainya di layar LCD dua baris, diperbarui setiap beberapa detik. Jika

4.7(47)
73
Menggunakan Layar LCD dengan I2C
#32Pemula
Premium

Menggunakan Layar LCD dengan I2C

Beri Arduino-mu layar sendiri dan buat ia menulis pesan pertamanya. Layar LCD dua baris tersambung hanya dengan beberapa kabel; sapaan muncul di baris atas, lalu pesan kedua di baris bawah, layar dibe

4.8(53)
70
Menggunakan Motor Servo
#35Pemula
Premium

Menggunakan Motor Servo

Lengan motor servo kecil berputar ke tiga posisi bergantian: penuh ke awal, tepat ke tengah, dan penuh ke akhir, menunggu dua detik di setiap perhentian. Arduino memberi tahu motor sudut mana yang har

4.7(48)
67
Membaca Kode Remote Control IR
#16Pemula
Premium

Membaca Kode Remote Control IR

Setiap tombol di remote TV-mu mengirim kode rahasia lewat cahaya yang tidak bisa kamu lihat. Penerima inframerah menangkap cahaya itu, dan Arduino menulis kode setiap tombol yang kamu tekan ke layar k

4.5(39)
55
Membaca Nilai RFID
#53Pemula
Premium

Membaca Nilai RFID

Gantungan kunci akses gedung atau kartu aksesmu menyimpan nomor ID rahasia, dan proyek ini membacanya. Dekatkan kartu ke pembaca RFID dan Arduino menulis nomor kartunya ke layar komputermu. Langkah pe

4.7(47)
61
Menggunakan LED Strip WS2812B
#69Menengah
Premium

Menggunakan LED Strip WS2812B

Kenalan dengan LED strip pintar yang setiap lampunya bisa kamu warnai sendiri-sendiri. Arduino pertama-tama menyalakan lima LED pertama dengan warna merah, sedetik kemudian lima lainnya biru, lalu mem

4.8(54)
70
Game Bola Pemukul - SSD1306
#86Menengah
Premium

Game Bola Pemukul - SSD1306

Satu bola, dua pemukul, dan kamu: kamu bermain tenis meja, salah satu video game paling awal, di layar OLED kecil. Dua tombol menggerakkan pemukulmu di kanan ke atas dan ke bawah, sementara komputer m

4.5(47)
65
Menyiapkan Modul Jam RTC DS1302
#45Pemula

Menyiapkan Modul Jam RTC DS1302

Kamu menjalankan modul jam kecil yang tidak pernah lupa waktu, bahkan ketika Arduino dimatikan. Modul ini punya baterai mungilnya sendiri, dan begitu jamnya diatur, tanggal dan waktu tercetak di layar

4.5(23)
31