Skocz do zawartości
Komentator

PlatformIO - alternatywne środowisko dla Arduino IDE

Pomocna odpowiedź

Witam. Ogólnie nie miałem jakiś wielkich kłopotów z instalacją czy uruchomieniem PlatformIO. Po drobnych kłopotach udało się uruchomić całość na tyle że dam radę wgrywać kod do arduino. Jedyne z czym w obecnej chwili mam problem to załączanie bibliotek. Nie dołączają się z automatu i przy każdym nowym projekcie muszę z palca klepać wszystkie biblioteki jakie są załączone do projektu.

(Korzystam z Linux Mint 20 Ulyana)

Taki początek pewnego programu:

#include <Arduino.h>

#include <DS3231.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <RotaryEncoder.h>
#include <EEPROM.h>

powoduje że kompilator wypluwa mi taki błąd jak niżej, który oczywiście wiem że oznacza brak danej biblioteki.

> Executing task in folder stacja lutownicza v2: platformio run <

Processing nanoatmega328 (platform: atmelavr; board: nanoatmega328; framework: arduino)
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/atmelavr/nanoatmega328.html
PLATFORM: Atmel AVR (2.2.0) > Arduino Nano ATmega328
HARDWARE: ATMEGA328P 16MHz, 2KB RAM, 30KB 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
Found 5 compatible libraries
Scanning dependencies...
Dependency Graph
|-- <EEPROM> 2.0
|-- <Wire> 1.0
Building in release mode
Compiling .pio/build/nanoatmega328/src/main.cpp.o
Archiving .pio/build/nanoatmega328/lib286/libEEPROM.a
Compiling .pio/build/nanoatmega328/lib42f/Wire/Wire.cpp.o
src/main.cpp:3:20: fatal error: DS3231.h: No such file or directory

****************************************************************
* Looking for DS3231.h dependency? Check our library registry!
*
* CLI  > platformio lib search "header:DS3231.h"
* Web  > https://platformio.org/lib/search?query=header:DS3231.h
*
****************************************************************

compilation terminated.
Compiling .pio/build/nanoatmega328/lib42f/Wire/utility/twi.c.o
Archiving .pio/build/nanoatmega328/libFrameworkArduinoVariant.a
Indexing .pio/build/nanoatmega328/lib286/libEEPROM.a
Indexing .pio/build/nanoatmega328/libFrameworkArduinoVariant.a
Compiling .pio/build/nanoatmega328/FrameworkArduino/CDC.cpp.o
Compiling .pio/build/nanoatmega328/FrameworkArduino/HardwareSerial.cpp.o
*** [.pio/build/nanoatmega328/src/main.cpp.o] Error 1
Compiling .pio/build/nanoatmega328/FrameworkArduino/HardwareSerial0.cpp.o
==================================================================================== [FAILED] Took 0.62 seconds ====================================================================================
The terminal process "platformio 'run'" terminated with exit code: 1.

Terminal will be reused by tasks, press any key to close it.

 

Udostępnij ten post


Link to post
Share on other sites
20 minut temu, matrix0606 napisał:

Jedyne z czym w obecnej chwili mam problem to załączanie bibliotek. Nie dołączają się z automatu i przy każdym nowym projekcie muszę z palca klepać wszystkie biblioteki jakie są załączone do projektu.

Te biblioteki, które używasz to są głównie biblioteki "zewnętrzne" - nie obsługują one konkretnego mikrokontrolera (mówimy wtedy o bibliotekach, które nazywamy "core") jak np. funkcja digitalWrite(). Więc to co dostajesz w projekcie zawiera tylko elementy z core, pozostałe musisz zainstalować albo dodać ich kody źródłowe do projektu. 

Problem można rozwiązać przez a) zainstalowanie tych bibliotek przez PlatformIO: https://docs.platformio.org/en/latest/librarymanager/

image.thumb.png.b29bd91c9a5fa774772f95c3f1453de3.png

Albo b) pobranie ich kodu źródłowego z konkretnego repozytorium i dodanie go do projektu do katalogu lib, wcześniej zapoznając się z instrukcją, którą rozszerzenie dodaje automatycznie:

image.thumb.png.45826cb4668c6fccd6d51c754599e78b.png

Opcja a) zapewnia najnowszą w danym momencie wersję biblioteki (PlatformIO powinno też ją aktualizować, gdy wyjdzie nowa), ale chcąc uruchomić projekt na innej maszynie będziesz musiał zainstalować wszystko od nowa. Opcja b) ma taką zaletę, że wraz z Twoim kodem, wędruje też kod biblioteki, więc jak będziesz chciał uruchomić projekt na innej maszynie to wszystko co nie dotyczy core będziesz już miał przygotowane. Natomiast wadą jest to, że nie będziesz miał aktualnej wersji biblioteki, gdy taka się pojawi.

  • Lubię! 2

Udostępnij ten post


Link to post
Share on other sites

Zdecydowanie wolę podpowiedź a) lecz tak jak mówię, w takim przypadku do każdego projektu muszę bibliotekę dodawać ręcznie bo nie dodają mi się globalnie.

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...