I know this has almost been beaten to death, but I can’t compile with the Adafruit VS1053 library because it can’t find the SPIDevice.h.
==> .pio\libdeps\uno\Adafruit VS1053 Library/Adafruit_VS1053.h:20:10: fatal error: Adafruit_SPIDevice.h: No such file or directory
It does, however, compile with the newest Arduino IDE, 2.1.0. So, there’s something either I’m missing or PIO is missing.
I don’t want to cross over to the dark side and use their IDE. But…
Full platformio.ini
and minimal src/main.cpp
code that reproduces the problem?
Processing uno (platform: atmelavr; board: uno; framework: arduino)
-----------------------------------------------------------------------------------------------------------------------------------------Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/atmelavr/uno.html
PLATFORM: Atmel AVR (3.4.0) > Arduino Uno
HARDWARE: ATMEGA328P 16MHz, 2KB RAM, 31.50KB Flash
DEBUG: Current (avr-stub) On-board (avr-stub, simavr)
PACKAGES:
- framework-arduino-avr @ 5.1.0
- toolchain-atmelavr @ 1.70300.191015 (7.3.0)
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 7 compatible libraries
Scanning dependencies...
Dependency Graph
|-- Adafruit VS1053 Library @ 1.3.0
Building in release mode
Compiling .pio\build\uno\lib669\Adafruit VS1053 Library\Adafruit_VS1053.cpp.o
In file included from .pio\libdeps\uno\Adafruit VS1053 Library\Adafruit_VS1053.cpp:26:0:
.pio\libdeps\uno\Adafruit VS1053 Library/Adafruit_VS1053.h:20:10: fatal error: Adafruit_SPIDevice.h: No such file or directory
****************************************************************************
* Looking for Adafruit_SPIDevice.h dependency? Check our library registry!
*
* CLI > platformio lib search "header:Adafruit_SPIDevice.h"
* Web > https://registry.platformio.org/search?q=header:Adafruit_SPIDevice.h
*
****************************************************************************
#include <Adafruit_SPIDevice.h>
^~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
*** [.pio\build\uno\lib669\Adafruit VS1053 Library\Adafruit_VS1053.cpp.o] Error 1
===========================================
[env:uno]
platform = atmelavr
board = uno
framework = arduino
upload_port = COM12
monitor_speed = 19200
lib_deps =
adafruit/Adafruit VS1053 Library@^1.3.0
arduino-libraries/SD@^1.2.4
adafruit/Adafruit BusIO@^1.14.1
===========================================
The compiler fails almost immediately as shown in the first snippet. Showing any more code
isn’t necessary, is it? The issue seems to be within the VS1053.h file where it #includes SPIDevice.h
// include SPI, MP3 and SD libraries
// include SPI, MP3 and SD libraries
#include <SPI.h>
#include <SD.h>
#include <Adafruit_VS1053.h>
//#include <Adafruit_SPIDevice.h>
#include <Wire.h>
I’m using your exact platformio.ini
and code (just added empty setup and loop functions) and it compiles perfecly fine.
CONFIGURATION: https://docs.platformio.org/page/boards/atmelavr/uno.html
PLATFORM: Atmel AVR (4.2.0) > Arduino Uno
HARDWARE: ATMEGA328P 16MHz, 2KB RAM, 31.50KB Flash
DEBUG: Current (avr-stub) External (avr-stub, simavr)
PACKAGES:
- framework-arduino-avr @ 5.1.0
- toolchain-atmelavr @ 1.70300.191015 (7.3.0)
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 8 compatible libraries
Scanning dependencies...
Dependency Graph
|-- Adafruit VS1053 Library @ 1.3.0
|-- SD @ 1.2.4
|-- Adafruit BusIO @ 1.14.1
|-- SPI @ 1.0
|-- Wire @ 1.0
Building in release mode
Compiling .pio/build/uno/src/main.cpp.o
Compiling .pio/build/uno/lib918/SPI/SPI.cpp.o
Compiling .pio/build/uno/libbd1/Wire/Wire.cpp.o
Compiling .pio/build/uno/libbd1/Wire/utility/twi.c.o
Compiling .pio/build/uno/libb1b/Adafruit BusIO/Adafruit_BusIO_Register.cpp.o
Compiling .pio/build/uno/libb1b/Adafruit BusIO/Adafruit_I2CDevice.cpp.o
Compiling .pio/build/uno/libb1b/Adafruit BusIO/Adafruit_SPIDevice.cpp.o
Compiling .pio/build/uno/libefa/SD/File.cpp.o
Compiling .pio/build/uno/libefa/SD/SD.cpp.o
Compiling .pio/build/uno/libefa/SD/utility/Sd2Card.cpp.o
Compiling .pio/build/uno/libefa/SD/utility/SdFile.cpp.o
Compiling .pio/build/uno/libefa/SD/utility/SdVolume.cpp.o
Compiling .pio/build/uno/lib18a/Adafruit VS1053 Library/Adafruit_VS1053.cpp.o
Archiving .pio/build/uno/libFrameworkArduinoVariant.a
Indexing .pio/build/uno/libFrameworkArduinoVariant.a
Compiling .pio/build/uno/FrameworkArduino/CDC.cpp.o
Compiling .pio/build/uno/FrameworkArduino/HardwareSerial.cpp.o
Archiving .pio/build/uno/libbd1/libWire.a
Archiving .pio/build/uno/lib918/libSPI.a
Indexing .pio/build/uno/libbd1/libWire.a
Compiling .pio/build/uno/FrameworkArduino/HardwareSerial0.cpp.o
.pio/libdeps/uno/Adafruit VS1053 Library/Adafruit_VS1053.cpp: In member function 'boolean Adafruit_VS1053::prepareRecordOgg(char*)':
.pio/libdeps/uno/Adafruit VS1053 Library/Adafruit_VS1053.cpp:550:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if (pluginStartAddr == 0xFFFF)
~~~~~~~~~~~~~~~~^~~~~~~~~
Indexing .pio/build/uno/lib918/libSPI.a
Compiling .pio/build/uno/FrameworkArduino/HardwareSerial1.cpp.o
Compiling .pio/build/uno/FrameworkArduino/HardwareSerial2.cpp.o
Compiling .pio/build/uno/FrameworkArduino/HardwareSerial3.cpp.o
Compiling .pio/build/uno/FrameworkArduino/IPAddress.cpp.o
Compiling .pio/build/uno/FrameworkArduino/PluggableUSB.cpp.o
Archiving .pio/build/uno/libb1b/libAdafruit BusIO.a
Indexing .pio/build/uno/libb1b/libAdafruit BusIO.a
Compiling .pio/build/uno/FrameworkArduino/Print.cpp.o
Compiling .pio/build/uno/FrameworkArduino/Stream.cpp.o
Compiling .pio/build/uno/FrameworkArduino/Tone.cpp.o
Compiling .pio/build/uno/FrameworkArduino/USBCore.cpp.o
Compiling .pio/build/uno/FrameworkArduino/WInterrupts.c.o
Compiling .pio/build/uno/FrameworkArduino/WMath.cpp.o
Compiling .pio/build/uno/FrameworkArduino/WString.cpp.o
Compiling .pio/build/uno/FrameworkArduino/abi.cpp.o
Compiling .pio/build/uno/FrameworkArduino/hooks.c.o
Compiling .pio/build/uno/FrameworkArduino/main.cpp.o
Archiving .pio/build/uno/libefa/libSD.a
Archiving .pio/build/uno/lib18a/libAdafruit VS1053 Library.a
Indexing .pio/build/uno/libefa/libSD.a
Compiling .pio/build/uno/FrameworkArduino/new.cpp.o
Indexing .pio/build/uno/lib18a/libAdafruit VS1053 Library.a
Compiling .pio/build/uno/FrameworkArduino/wiring.c.o
Compiling .pio/build/uno/FrameworkArduino/wiring_analog.c.o
Compiling .pio/build/uno/FrameworkArduino/wiring_digital.c.o
Compiling .pio/build/uno/FrameworkArduino/wiring_pulse.S.o
Compiling .pio/build/uno/FrameworkArduino/wiring_pulse.c.o
Compiling .pio/build/uno/FrameworkArduino/wiring_shift.c.o
Archiving .pio/build/uno/libFrameworkArduino.a
Indexing .pio/build/uno/libFrameworkArduino.a
Linking .pio/build/uno/firmware.elf
Checking size .pio/build/uno/firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM: [ ] 0.4% (used 9 bytes from 2048 bytes)
Flash: [ ] 1.4% (used 444 bytes from 32256 bytes)
Building .pio/build/uno/firmware.hex
========================================== [SUCCESS] Took 1.94 seconds ==========================================
I see you’re using an outdated AtmelAVR platform and possibly with it an outdated core.
Please do the following: Open a PlatformIO CLI and execute
pio upgrade --dev
pio pkg update -g -p atmelavr
then, delete the .pio
folder of the project and build again.
Ok. Success. Did what you said, plus I deleted the project and recreated it. Compiled with a few warnings, but generally ok. I don’t have the actual hardware yet - I was just getting a jump on the compilation.
Thanks again for your help.
1 Like