Skocz do zawartości

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.

 

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
Link to post
Share on other sites

Witam, przy instalacji Platformio, zarówno na VSC jak i Atomie wyrzuca mi komunikat abym zainstalował Phytona, zainstalowałem najnowszego Pythona, jednak komunikat dalej się pojawia, w czym może być problem?

Link to post
Share on other sites

@Treker Za 10 próbą, 20 resetem komputera, 3 wersją Visula Studio Code - Insiders w końcu Platformio zainstalowało się prawidłowo, bez żadnych komplikacji. Wcześniej było tak - komunikat jak na screenie "inst pyth", z racji tego że pythona mam zainstalowanego klikam "i have python", wtedy wyrzuca okienko do podania ścieżki lokalizacji - screen inst pyth 2, podaje lokalizację do python.exe tak jak mam zainstalowane na dysku , jednak Visual twierdził że ścieżka jest nie prawidłowa. Co robiłem nie tak? Straciłem na ten problem z 6 h godzin życia najmniej, myślę, że warto by go było rozwiązać dla potomności. 

instal pyth.png

inst pyth 2.png

Link to post
Share on other sites

@Daro_P Fajnie że w końcu się udało 🙂 

14 godzin temu, Daro_P napisał:

Co robiłem nie tak? Straciłem na ten problem z 6 h godzin życia najmniej,

No trudno, czas zawsze gdzieś tam ucieka. A co było przyczyną? Może nie miałeś ścieżki środowiskowej, ciężko powiedzieć, trzeba by mieć wgląd w to co masz na komputerze. Ze swojej strony dodam, że VSC jak i Platformio działają naprawdę dobrze, używam tego od czasu do czasu i nie mam większych problemów, więc jak już masz wszystko dopięte to powinno działać dużo sprawniej od Arduino IDE.

Link to post
Share on other sites

Dziękuję za sugestie. Rodzi się kolejne pytanie w kwestii bibliotek, próbowałem metody zaproponowanej @matrix0606, jednak na dzień dobry w ostro banalnym kodzie taki problem jak na screenie, czy to właśnie jakaś kwestia niezgodności/niedoborów bibliotek? Mam wątpliwości czy w ogóle poprawnie u mnie funkcjonuje to VSC, ciągle jakieś błędy.

błądd.png

Link to post
Share on other sites

@Daro_P To co pokazałeś to jest jakiś problem VSC - nie wiemy jaki dokładnie bo nie pokazałeś całości. Plik c_cpp_properties.json to jest plik, który VSC tworzy automatycznie i automatyczne go edytuje - Ty z kolei nie powinieneś go edytować bo i tak Twoje zmiany zostaną nadpisane. Jak spojrzysz w drzewo projektu to zobaczysz tam dwa katalogi .pio i .vscode

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        20.11.2020     17:49                .pio
d-----        20.11.2020     17:49                .vscode
d-----        20.11.2020     17:49                include
d-----        20.11.2020     17:49                lib
d-----        20.11.2020     17:49                src
d-----        20.11.2020     17:49                test
-a----        20.11.2020     17:49             94 .gitignore
-a----        20.11.2020     17:49            441 platformio.ini

Pierwszy z nich (.pio) generuje PlatformIO tam np. znajdziesz np. plik wsadowy dla mikrokontrolera (firmware.hex) i generalnie pliki po kompilacji Twojego projektu. Możesz ten katalog usunąć a PIO i tak go ponownie stworzy.

Drugi katalog (.vscode) generuje VSC i tam właśnie znajdziesz plik, w którym VSC znajduje Ci problemy. Tak samo możesz go usunąć a po resecie VSC, ten katalog wraz z zawartością zostanie stworzony automatycznie. 

Więc pierwsze co możesz spróbować to po prostu zbudować projekt który pokazałeś. Czy z tym jest jakiś problem? Następnie możesz usunąć katalog .vscode i zresetować VSC i zobaczyć czy nadal występuje problem.  

  • Lubię! 1
Link to post
Share on other sites

@Matthew11  jeszcze raz skopiowałem poprzedni projekt z Arduino IDE do VSC i o dziwo opisany wcześniej błąd nie wystąpił. Postanowiłem więc przenieść bardziej złożony projekt i okazuje się, że wyrzuca dokładnie ten sam błąd, rozwinąłem listę tym razem, aby pokazać go dokładniej. 

1 godzinę temu, Matthew11 napisał:

Więc pierwsze co możesz spróbować to po prostu zbudować projekt który pokazałeś. Czy z tym jest jakiś problem? 

Tu masz na myśli żeby po prostu wgrać program na płytkę i sprawdzić czy działa, nie zważając na pokazane błędy ?

błąd.png

Dodam jeszcze, że kasowałem plik tak jak sugerowałeś, VSC tworzy go od nowa jednak błąd nie znika.

Edytowano przez Daro_P
dodanie wątku
Link to post
Share on other sites
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

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...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.