Questo sembra essere un problema generale dell'IDE di Arduino: riconosce solo le librerie incluse nel file (primario) .ino
.
Se guardi il invocazione del compilatore, il percorso di una determinata libreria viene aggiunto solo se il file di intestazione di questa libreria è incluso nel file .ino
.
L'ho testato con la libreria EEPROM. Se questa libreria è inclusa nel file .ino
, il compilatore viene chiamato con
avr-g ++ -c -g -Os -Wall -fno-exceptions -ffunction -sezioni -fdata-sezioni -mmcu = atmega328p -DF_CPU = 16000000L -DARDUINO = 100 -I / usr / share / arduino / hardware / arduino / cores / arduino -I / usr / share / arduino / hardware / arduino / variant / eightanaloginputs -I / usr / share / arduino / libraries / EEPROM /tmp/build2678545434708654378.tmp/test.cpp -o / tmp / build2678545434708654378.tmp / test.cpp.o
dove l'importante parte è -I/usr/share/arduino/libraries/EEPROM
.
Se ora rimuovo #include <EEPROM.h>
(ma ho ancora in un altro file di intestazione che a sua volta è incluso in .ino
come nel tuo caso), la chiamata del compilatore cambia in
avr-g ++ -c -g - Os -Wall -fno-exceptions -ffunction-sezioni -fdata-sezioni -mmcu = atmega328p -DF_CPU = 16000000L -DARDUINO = 100 -I / usr / share / arduino / hardware / arduino / cores / arduino -I / usr / share / arduino / hardware / arduino / variant / eightanaloginputs /tmp/build2678545434708654378.tmp/test.cpp -o / tmp / build2678545434708654378.tmp / test.cpp.o
dove ora include il percorso della libreria è mancante.
TL; DR
Se è necessario utilizzare una libreria, è sufficiente (anche) aggiungere un'inclusione al file .ino
. Non ti costa nulla e risolverà il tuo problema;)
#include <file>
contro #include "file"
Dalla documentazione di gcc:
- #include <file> viene utilizzato per i file di intestazione di sistema. Cerca un file denominato file in un elenco standard di directory di sistema. [...]
- #include "file" viene utilizzato per i file di intestazione del tuo programma. Cerca un file denominato file prima nella directory contenente il file corrente, quindi nelle directory delle virgolette e quindi nelle stesse directory utilizzate per <file>. [...]