• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Ошибка компиляции в PlatformIO

allleksey

New member
Добрый день, коллеги!

Ошибка в компиляции. Подскажите, пожалуйста, в чем я накосячил.
Код:
#include <Arduino.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
#define OLED_RESET     -1 // Reset pin # (or -1 if sharing Arduino resetpin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

void setup() {

}

void loop() {

}
Выдает ошибку:
lib/Wire/utility/twi.c:25:10: fatal error: avr/io.h: No such file or directory
#include <avr/io.h>
^~~~~~~~~~
compilation terminated.
Compiling .pio\build\upesy_wrover\liba7c\Adafruit BusIO\Adafruit_I2CDevice.cpp.o
Compiling .pio\build\upesy_wrover\lib218\Adafruit-GFX-Library-master\Adafruit_GFX.cpp.o
*** [.pio\build\upesy_wrover\lib310\Wire\utility\twi.c.o] Error 1
.pio/libdeps/upesy_wrover/Adafruit BusIO/Adafruit_I2CDevice.cpp: In constructor 'Adafruit_I2CDevice::Adafruit_I2CDevice(uint8_t, TwoWire*)':
.pio/libdeps/upesy_wrover/Adafruit BusIO/Adafruit_I2CDevice.cpp:17:20: error: 'I2C_BUFFER_LENGTH' was not declared in this scope
_maxBufferSize = I2C_BUFFER_LENGTH;
^~~~~~~~~~~~~~~~~
.pio/libdeps/upesy_wrover/Adafruit BusIO/Adafruit_I2CDevice.cpp:17:20: note: suggested alternative: 'BUFFER_LENGTH'
_maxBufferSize = I2C_BUFFER_LENGTH;

^~~~~~~~~~~~~~~~~
BUFFER_LENGTH
.pio/libdeps/upesy_wrover/Adafruit BusIO/Adafruit_I2CDevice.cpp: In member function 'bool Adafruit_I2CDevice::setSpeed(uint32_t)':

.pio/libdeps/upesy_wrover/Adafruit BusIO/Adafruit_I2CDevice.cpp:306:10: error: 'class TwoWire' has no member named 'setClock'
_wire->setClock(desiredclk);
^~~~~~~~
*** [.pio\build\upesy_wrover\liba7c\Adafruit BusIO\Adafruit_I2CDevice.cpp.o] Error 1
================================================================================================== [FAILED] Took 12.60 seconds =================================================================================================
 

aZholtikov

Active member
Начинает ругаться при подключении библиотеки Wire
Предлагаю обнулить кэш или переустановить PlatformIO.
Это компилируется нормально:

[env:esp32]
platform = espressif32
board = upesy_wrover
framework = arduino
lib_deps =
adafruit/Adafruit GFX Library@^1.11.3
adafruit/Adafruit SSD1306@^2.5.7

#include <Arduino.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino resetpin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
void setup()
{
}
void loop()
{
}
 

aZholtikov

Active member
а где такой скачать?
Как обнулить кэш?
Обновить - по пунктам меню. PlatformIO - PIO Home - Platforms - Updates.
Почистить - Удалить PlatformIO. Закрыть VSCode. В папке пользователя на ПК есть папка .platformio (скрытая). Стереть найух! :) Запустить VSCode. Переустановить PlatformIO.
 

allleksey

New member
Еще раз снес PlatformIO (с удалением папки на компьютере) и установил заново.
Ошибок меньше, но есть.
Compiling .pio\build\esp32\libc71\Wire\utility\twi.c.o
lib/Wire/utility/twi.c:25:10: fatal error: avr/io.h: No such file or directory
#include <avr/io.h>
^~~~~~~~~~
compilation terminated.
Compiling .pio\build\esp32\libb4f\SPI\SPI.cpp.o
Compiling .pio\build\esp32\libcd9\Adafruit_BusIO-master\Adafruit_BusIO_Register.cpp.o
*** [.pio\build\esp32\libc71\Wire\utility\twi.c.o] Error 1

======================================================================================== [FAILED] Took 9.25 seconds =========
 

aZholtikov

Active member
Еще раз снес PlatformIO (с удалением папки на компьютере) и установил заново.
Ошибок меньше, но есть.
Попробуй именно этот конфиг полностью без изменений и дополнений и в коде убери Wire.h

[env:esp32]
platform = espressif32
board = upesy_wrover
framework = arduino
lib_deps =
adafruit/Adafruit GFX Library@^1.11.3
adafruit/Adafruit SSD1306@^2.5.7
 

allleksey

New member
Error: Invalid 'C:\Users\FedosovAN\Documents\PlatformIO\Projects\Trek\platformio.ini' (project configuration file): 'Source contains parsing errors: 'C:\\Users\\FedosovAN\\Documents\\PlatformIO\\Projects\\Trek\\platformio.ini'
[line 17]: 'adafruit/Adafruit GFX Library@^1.11.3\n'
[line 18]: 'adafruit/Adafruit SSD1306@^2.5.7\n''


Файл вот так выглядит
[env:esp32]
platform = espressif32
board = upesy_wrover
framework = arduino
upload_port = COM[9]
lib_deps =
adafruit/Adafruit GFX Library@^1.11.3
adafruit/Adafruit SSD1306@^2.5.7
 

aZholtikov

Active member
Error: Invalid 'C:\Users\FedosovAN\Documents\PlatformIO\Projects\Trek\platformio.ini' (project configuration file): 'Source contains parsing errors: 'C:\\Users\\FedosovAN\\Documents\\PlatformIO\\Projects\\Trek\\platformio.ini'
[line 17]: 'adafruit/Adafruit GFX Library@^1.11.3\n'
[line 18]: 'adafruit/Adafruit SSD1306@^2.5.7\n''
Там надо ТАБ перед ссылкой.
Код:
[env:esp32]
platform = espressif32
board = upesy_wrover
framework = arduino
lib_deps =
    adafruit/Adafruit GFX Library@^1.11.3
    adafruit/Adafruit SSD1306@^2.5.7
 
Сверху Снизу