Skocz do zawartości

Pomoc w migracji z arduinoIDE do Platformio


SOYER

Pomocna odpowiedź

Cześć.

Proszę o pomoc w migracji jak w temacie.

Kiedy zaczynają się trochę bardziej skomplikowane tematy, lub zaczyna się przygoda z esp32, arduIDE to katorga.

Dajcie kilka rad, podpowiedzi, "oczywistych prawd" dla arduinowca.

Zakładamy na początek, że mam wszystko zainstalowane tak jak w tym poradniku:

https://randomnerdtutorials.com/vs-code-platformio-ide-esp32-esp8266-arduino/

czyli mam VSC, mam platformio.

Mam też projekt który kompiluje się(dluuuugo) w arduino IDE. Jak w prosty i łatwy sposób wyemigrować z tym projektem do platformio. Zainteresowani wiedzą o jaki projekt chodzi. Kilka(naście) plików, libsy jako foldery, lv.conf jako plik... itd.

Na czy się nie wywalić, o co nie potknąć, jak tego nie robić?

 

 

 

Link do komentarza
Share on other sites

Co do gita to mam swoja wersję na ardu IDE;), po prostu codziennie zapisuję nową wersję szkicu z datą i ew. ważnymi zmianami w nazwie. To pozwala nie tylkowrócić do działającej wersji, ale np po jakimś czasie widać jak projekt rósł i się rozwijał.

Link do komentarza
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

W pełni się zgadzam z @Treker-em, kiedyś dokładnie tak samo robiłem czyli miałem mnóstwo podkatalogów z kolejnymi wersjami. Ale to ma swoje wady - zajmuje sporo miejsca na dysku, ale co ważniejsze nie pozwala na posiadanie kilku "gałęzi" projektu. Czasem fajnie jest przykładowo wypróbować nową opcję, powiedzmy nową bibliotekę. W systemie wersjonowania możemy do tego wykorzystać rozgałęzienie projektu - mamy wtedy niejako dwie równoległe wersje: główną i eksperymentalną. W każdej chwili możemy się między nimi przełączać, dokonywać zmian, a nawet przenosić zmiany w kodzie między gałęziami. Podkatalogi czegoś takiego nie zapewniają, albo raczej są o wiele trudniejsze do opanowania.

Jest jeszcze jedna wada podkatalogów, którą znam z doświadczenia - przez pomyłkę łatwo jest otworzyć inną niż spodziewana wersję pliku... i wtedy mamy bałagan nie tylko w najnowszej wersji, ale i tej przypadkowo otwartej. To może kosztować dużo zdrowia i nerwów jeśli popsujemy ostatnią działającą wersję.

  • Lubię! 2
Link do komentarza
Share on other sites

35 minut temu, Elvis napisał:

proponowałbym więc podejść do tematu małymi krokami. Założyć nowy projekt, skompilować, przetestować. A później, kolejnymi etapami dodawać do niego kolejne biblioteki i sprawdzać jak działa.

Tak właśnie zrobię, w sumie projekt LCD mam ogarnięty, co chciałem zrobić to zrobiłem, reszta to wodotryski. To juz będę miał zajęcie na najbliższe dni i tygodnie, jak mi się uda przenieść ten projekt z LCD to będzie super. W życiu tak rozbudowanego szkicu nie miałem.

Tylko mnie przerażają te błędy xtensa itp o których pisałem ostatnio w wątku o monitorach HMI, przy okazji kompilacji w platformio...

Link do komentarza
Share on other sites

Nie(?):

strona 16, post z 00:11

platformio wyrzuciło:

Compiling .pio\build\4d_systems_esp32s3_gen4_r8n16\lib73f\ESP32_Display_Panel@src-e0425ba80f2563d241f14493974d868b\bus\I2C.cpp.o
.pio/libdeps/4d_systems_esp32s3_gen4_r8n16/ESP32_Display_Panel@src-e0425ba80f2563d241f14493974d868b/src/backlight/ESP_PanelBacklight.cpp: In constructor 'ESP_PanelBacklight::ESP_PanelBacklight(int, bool, bool)':
.pio/libdeps/4d_systems_esp32s3_gen4_r8n16/ESP32_Display_Panel@src-e0425ba80f2563d241f14493974d868b/src/backlight/ESP_PanelBacklight.cpp:18:92: error: no matching function for call to 'ledc_timer_config_t::ledc_timer_config_t(<brace-enclosed initializer list>)'
     _channel_config(ESP_PANEL_BACKLIGHT_LEDC_CHANNEL_CONFIG_DEFAULT(io_num, light_up_level))
                                                                                            ^
In file included from .pio/libdeps/4d_systems_esp32s3_gen4_r8n16/ESP32_Display_Panel@src-e0425ba80f2563d241f14493974d868b/src/backlight/ESP_PanelBacklight.h:9,
                 from .pio/libdeps/4d_systems_esp32s3_gen4_r8n16/ESP32_Display_Panel@src-e0425ba80f2563d241f14493974d868b/src/backlight/ESP_PanelBacklight.cpp:8:
C:/Users/katon/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/driver/include/driver/ledc.h:56:3: note: candidate: 'ledc_timer_config_t::ledc_timer_config_t()'
 } ledc_timer_config_t;
   ^~~~~~~~~~~~~~~~~~~
C:/Users/katon/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/driver/include/driver/ledc.h:56:3: note:   candidate expects 0 arguments, 1 provided
C:/Users/katon/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/driver/include/driver/ledc.h:56:3: note: candidate: 'constexpr ledc_timer_config_t::ledc_timer_config_t(const ledc_timer_config_t&)'
C:/Users/katon/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/driver/include/driver/ledc.h:56:3: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const ledc_timer_config_t&'     
C:/Users/katon/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/driver/include/driver/ledc.h:56:3: note: candidate: 'constexpr ledc_timer_config_t::ledc_timer_config_t(ledc_timer_config_t&&)'
C:/Users/katon/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/driver/include/driver/ledc.h:56:3: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'ledc_timer_config_t&&'
*** [.pio\build\4d_systems_esp32s3_gen4_r8n16\lib73f\ESP32_Display_Panel@src-e0425ba80f2563d241f14493974d868b\backlight\ESP_PanelBacklight.cpp.o] Error 1
=============================================== [FAILED] Took 29.61 seconds ===============================================
 *  The terminal process "C:\Users\katon\.platformio\penv\Scripts\platformio.exe 'run'" terminated with exit code: 1. 
 *  Terminal will be reused by tasks, press any key to close it. 

 

Link do komentarza
Share on other sites

1 godzinę temu, Elvis napisał:

W systemie wersjonowania możemy do tego wykorzystać rozgałęzienie projektu - mamy wtedy niejako dwie równoległe wersje: główną i eksperymentalną. W każdej chwili możemy się między nimi przełączać, dokonywać zmian, a nawet przenosić zmiany w kodzie między gałęziami. Podkatalogi czegoś takiego nie zapewniają, albo raczej są o wiele trudniejsze do opanowania.

Dodam do tego, że najlepsza metoda to wersja główna (master), która jest zablokowana na wysyłanie zmian (można tylko dodać zmiany z wersji experimental), wersja experimental, która też ma zablokowane wysyłanie zmian i do której można dodać tylko zmiany z innych gałęzi i jedna gałąź na każdy nowy feature np. obsługę SPI, czy dodanie stosu USB CDC.

I robienie commitów - jakieś drobne zmiany - commit, potem kolejne zmiany - commit. A gdy wszystko działa to ostatni commit i push wszystkich zmian. W ten sposób najłatwiej znaleźć wszystkie problemy w projekcie oraz datę ich powstania. Czegoś takiego używamy w pracy (poza archaicznymi projektami) i bardzo dobrze się sprawdza.

  • Lubię! 2
Link do komentarza
Share on other sites

@H1M4W4R1 Nie wiem jaka metoda jest najlepsza, szczególnie jeśli się jest jedynym użytkownikiem. Ale na pewno warto nauczyć się używania systemu wersjonowania i korzystać z jego możliwości 🙂

@SOYER Myślałem że błąd jest w innym miejscu, tutaj to sam nie wiem o co chodzi... W przypadku C++ komunikaty o błędach mówią o wszystkim tylko nie o ich przyczynie 😞 Tak jak wcześniej napisałem, uważam że najlepiej utworzyć nowy projekt i małymi krokami go rozwijać. Wtedy będzie łatwiej zrozumieć przyczynę błędu i ewentualnie ją poprawić. A odejście od automatycznych narzędzi do moim zdaniem bardzo dobre posunięcie - w przyszłości można pozbyć się również PlatformIO i po prostu kompilować projekt używając cmake. O ile wiem, tak właśnie robi IDF dla ESP32 i to chyba najlepsze rozwiązanie.

  • Lubię! 1
Link do komentarza
Share on other sites

Cześć, siedziałem ostatnio cały dzień nad platformio i próbowałem odpalić ten szkic z ekranem. Problem za problemem, jak nie jedno to drugie.

Dałem spokój bo odkryłem, że jeśli otworzę projekt w arduino IDE, ustawię zewnętrzny edytor, odpalę szkic na VSCode i projekt w EEZ Studio to zarówno po nadpisaniu w VSCode szkicu jak i nadpisaniu projektu w EEZ nie muszę od nowa odpalać ardu IDE by od razu skompilować poprawiony szkic. Zmiany wprowadzone w VSC i EEZ aktualizują się w tle, nie trzeba przeładowywać projektu w ardu IDE.

Nie wiedziałem tego.

Teraz mogę zrobić pierwszą kompilację na ardu IDE(ok25min) podczas rozpoczynania pracy i pracowania na kodzie w VSC i EEZ, każda kolejna kompilacja/upload trwa już ok 1-2min. Mogę więc na bieżąco i szybko sprawdzać wprowadzone zmiany.

Teraz mam wygodę, pracuję w fajnym edytorze VSC i szybko kompiluję/wgrywam szkic. Nic więcej mi nie potrzeba.

  • Lubię! 2
Link do komentarza
Share on other sites

@SOYER To ja polecam podłączyć do VSC z Platformio Copilota.

W piątek podłączyłem i poprawianie błędów oraz sugestie działają (bardzo) dobrze. Sporo ułatwia pracę.

Jeżeli sensownie zadaje się pytania - miodzio.

Jest błąd w kodzie, zaznaczam fragment, wybieram polecenie "wyjaśnij" lub napraw i wszystko ładnie w okienku wyjaśnione z fragmentem kodu. Oczywiście są sytuacje, w których trzeba wprowadzić poprawki do jego sugestii. Więc myślenie konieczne 🙂

Co do git - nie wypowiem się, nie używam (jeszcze) jakoś strachy mam...🙄

  • Pomogłeś! 1
Link do komentarza
Share on other sites

(edytowany)

Myślę, że idealnie wpisuje się w temat.

Obsługa bardzo podobna jak arduino ide, wydaje się, dużo niższy próg przejścai z arduIDE do VSC.

Jutro sprawdzę co to jest.

Edytowano przez SOYER
  • Lubię! 1
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • 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.