Morning Joe,
I have your project here, many thanks. Seeing your code etc has shown the problem.
TL;DR
I managed to get it to compile on an Uno, in only two compilation attempts.
In summary of your problems, and as pointed out many times previously:
- You have a pile of crud in
lib
. - You are
#including
the wrong headers, they are local not system headers, use double quotes not angle brackets; - You have a pile of crud in
lib_deps
- agreed, you just copied the ES project over and renamed it to uno. - There appears to be a problem with the fonts library, I cannot use it or download it (via
lib_deps
) so I had to remove it. -
Adafruit GFX
doesn’t seem to be available forlinux_x86_64
, but then it installs anyway. Interesting! - I cleaned out the potential crud in
.pio
.
It now compiles every time, it’s as happy as a piglet in brown stuff.
However, this project will not work on an Uno for one main reason, the Uno only has a single channel for tone()
- it cannot do more than one note at a time.
I think you have been corrupted by the Arduino IDE in that:
- You appear to confuse a header file with an actual library, they are not (always) the same thing.
- You may be confused when `#include’ is used as to when to use system headers and when to use local ones.
- Also, stop putting stuff in
lib
- unless you write it yourself, say a class header and implementation file.
In addition, You have far too many threads open and appear to be missing responses to your questions on other threads, then you start another. Please, slow down, take your time, and read the replies. Thanks.
HTH
Right, gory details follow of what I had to do to compile the Uno version. as I said, it won’t run, but it will compile, each and every time.
In platformio.ini
:
- Remove Arduino from
lib_deps
; - Remove Wire from
lib_deps
; - Remove Tone32 from
lib_deps
; - Change all
Adafruit_xxx
toAdafruit xxx
.
In lib
Directory:
- Deleted everything, from
lib
.
In .pio
Directory:
- Deleted
build
; - Deleted
libdeps
.
First Compile
The following is the extracted good news, and some bad!
Library Manager: Time @ 1.6.0 has been installed!
Library Manager: Installing Adafruit GFX
Warning! Could not find the package with 'Adafruit GFX' requirements for your system 'linux_x86_64'
Library Manager: Installing Adafruit SSD1306
Library Manager: Adafruit SSD1306 @ 2.4.0 has been installed!
Library Manager: Installing dependencies...
Library Manager: Installing Adafruit GFX Library
Library Manager: Adafruit GFX Library @ 1.10.1 has been installed!
Library Manager: Installing dependencies...
Library Manager: Installing Adafruit BusIO
Library Manager: Adafruit BusIO @ 1.4.2 has been installed!
Library Manager: Installing Fonts/FreeSerif9pt7b
KeyError: 'versions':
File "/home/norman/.platformio/penv/lib/python3.6/site-packages/platformio/builder/main.py", line 169:
env.SConscript("$BUILD_SCRIPT")
Etc etc etc
So, by removing all the crud (technical Term) you had dumped into lib
, the libraries were correctly installed.
OK, I’ll give you a problem in the fonts library, not sure why that’s needed though.
Back in platformio.ini
:
- Removed Fonts/FreeSerif9pt7b from
lib_deps
.
In src/main.cpp
:
- Removed
#include <Tone32.h>
line. - Removed
#include <Fonts/FreeSerif9pt7b.h>
line.
These are not system headers, they are local headers, DO NOT wrap them in ‘<’ and ‘>’ they should be in double quotes. The code now looks like:
#include "Arduino.h"
#include "Time.h"
#include "Wire.h"
#include "Adafruit_GFX.h"
#include "Adafruit_SSD1306.h"
- Commented out the line
display.setFont(&FreeSerif9pt7b);
as we are not able to use the fonts.
Second Compile:
It worked!
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 (2.2.0) > Arduino Uno
HARDWARE: ATMEGA328P 16MHz, 2KB RAM, 31.50KB Flash
DEBUG: Current (simavr) On-board (simavr)
PACKAGES:
- framework-arduino-avr 5.0.0
- toolchain-atmelavr 1.50400.190710 (5.4.0)
LDF: Library Dependency Finder -> http://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Library Manager: Installing Adafruit GFX
Warning! Could not find the package with 'Adafruit GFX' requirements for your system 'linux_x86_64'
Found 9 compatible libraries
Scanning dependencies...
Dependency Graph
|-- <Time> 1.6.0
|-- <Adafruit SSD1306> 2.4.0
| |-- <Adafruit GFX Library> 1.10.1
| | |-- <Adafruit BusIO> 1.4.2
| | | |-- <Wire> 1.0
| | | |-- <SPI> 1.0
| | |-- <Wire> 1.0
| | |-- <SPI> 1.0
| |-- <SPI> 1.0
| |-- <Wire> 1.0
|-- <Adafruit BusIO> 1.4.2
| |-- <Wire> 1.0
| |-- <SPI> 1.0
|-- <Adafruit GFX Library> 1.10.1
| |-- <Adafruit BusIO> 1.4.2
| | |-- <Wire> 1.0
| | |-- <SPI> 1.0
| |-- <Wire> 1.0
| |-- <SPI> 1.0
|-- <Wire> 1.0
Building in release mode
Compiling .pio/build/uno/src/main.cpp.o
Compiling .pio/build/uno/lib7b7/Wire/utility/twi.c.o
Compiling .pio/build/uno/lib178/SPI/SPI.cpp.o
Archiving .pio/build/uno/lib7b7/libWire.a
Indexing .pio/build/uno/lib7b7/libWire.a
Compiling .pio/build/uno/lib933/Adafruit BusIO/Adafruit_BusIO_Register.cpp.o
Archiving .pio/build/uno/lib178/libSPI.a
Indexing .pio/build/uno/lib178/libSPI.a
Compiling .pio/build/uno/lib933/Adafruit BusIO/Adafruit_I2CDevice.cpp.o
Compiling .pio/build/uno/lib933/Adafruit BusIO/Adafruit_SPIDevice.cpp.o
Compiling .pio/build/uno/lib42d/Adafruit GFX Library/Adafruit_GFX.cpp.o
Archiving .pio/build/uno/lib933/libAdafruit BusIO.a
Indexing .pio/build/uno/lib933/libAdafruit BusIO.a
Compiling .pio/build/uno/lib42d/Adafruit GFX Library/Adafruit_GrayOLED.cpp.o
.pio/libdeps/uno/Adafruit GFX Library/Adafruit_GFX.cpp: In member function 'void GFXcanvas1::drawFastRawHLine(int16_t, int16_t, int16_t, uint16_t)':
.pio/libdeps/uno/Adafruit GFX Library/Adafruit_GFX.cpp:2070:28: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (int8_t i = 0; i < lastByteBits; i++) {
^
.pio/libdeps/uno/Adafruit GFX Library/Adafruit_GFX.cpp: In member function 'void GFXcanvas16::drawFastRawHLine(int16_t, int16_t, int16_t, uint16_t)':
.pio/libdeps/uno/Adafruit GFX Library/Adafruit_GFX.cpp:2620:36: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (int16_t i = buffer_index; i < buffer_index + w; i++) {
^
Compiling .pio/build/uno/lib42d/Adafruit GFX Library/Adafruit_SPITFT.cpp.o
Compiling .pio/build/uno/lib42d/Adafruit GFX Library/glcdfont.c.o
Compiling .pio/build/uno/lib264/Adafruit SSD1306/Adafruit_SSD1306.cpp.o
Archiving .pio/build/uno/lib42d/libAdafruit GFX Library.a
Indexing .pio/build/uno/lib42d/libAdafruit GFX Library.a
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/lib264/libAdafruit SSD1306.a
Indexing .pio/build/uno/lib264/libAdafruit SSD1306.a
Compiling .pio/build/uno/FrameworkArduino/HardwareSerial0.cpp.o
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
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
Compiling .pio/build/uno/FrameworkArduino/new.cpp.o
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
Building .pio/build/uno/firmware.hex
Checking size .pio/build/uno/firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM: [=== ] 28.7% (used 588 bytes from 2048 bytes)
Flash: [===== ] 53.0% (used 17104 bytes from 32256 bytes)
==================================================== [SUCCESS] Took 4.30 seconds ====================================================
Cheers,
Norm.