Pisanie programu C poza Arduino IDE?

12

Podoba mi się pomysł użycia Arduino IDE do prostych projektów i rozpoczęcia pracy z Arduino, ale do tej pory osiągnąłem konsensus , że jest on dla tych, którzy są nowicjuszami w Arduino i / lub programowaniu w ogóle.

Moje zrozumienie jest, że jest to możliwe, aby napisać program w C od podstaw, całkowicie poza Arduino IDE, a następnie za pomocą narzędzia takie jak avrdude przesłać go do Arduino MCU. Ta opcja, choć atrakcyjna i interesująca, budzi pewne obawy:

  • Jakie biblioteki Arduino musiałyby zostać zaimportowane / połączone przez taki „surowy program”? Zakładam, że kiedy program oparty na Arduino IDE wykonuje a digitalWrite(...), to naprawdę wywołuje C lib, prawdopodobnie zapewniony przez Arduino, pod maską. Obawiam się, aby upewnić się, że wszystkie te „podstawowe biblioteki” zostały włączone do mojego programu w języku C. Myśli?
  • Czy coś jeszcze „zaginęło” przez latanie solo i wyjście poza Arduino IDE? Jakieś możliwości / funkcje, które musiałbym teraz „rozwinąć”?
smeeb
źródło
arduino.stackexchange.com/questions/9538/ ... Odpowiedzi na moje pytanie pomogły mi je skonfigurować. Możesz zastąpić / pominąć wszystko z Arduino. Możesz: -Zrób własną tablicę. -Użyj własnego IDE. -Użyj własnych bibliotek.
Paweł,

Odpowiedzi:

4

Oto dwa fajne artykuły o tym, jak Arduino faktycznie działa w tle. Jak usunęło tarcie z programowania mikrokontrolera.

  1. Tour of the Arduino Internals: Jak faktycznie działa Hello World?
  2. Arduino i GCC, kompilowanie i przesyłanie programów przy użyciu tylko makefile

Omówiono tu również Czy istnieje sposób lub samouczek do konwersji kodu Arduino na kod C?

Michał Foksa
źródło
Dzięki @Michal Foksa (+1) - Chyba jestem zszokowany, że odpowiedź na to pytanie nie jest dużo bardziej znana! Myślałem, że Arduino IDE miał, powiedzmy, lib/gdzieś katalogu pod nasady instalacyjnym, który miał takie rzeczy arduino-core.dll, arduino-io.dllitp
smeeb
@smeeb: Masz rację, instalacja Arduino IDE zawiera - musi - zawierać biblioteki podstawowych funkcji czasu wykonywania oraz funkcje dostarczone przez użytkownika. W połowie strony linku 2 w makefile wskazuje na nich symbol LIBS. Nie są to pliki .dll (które w systemie Windows są wywoływane w czasie wykonywania); są to pliki obiektowe (.o w systemach uniksopodobnych, prawdopodobnie takie same w systemie Windows), które są statycznie połączone ze skompilowanymi plikami obiektowymi w (ostatecznie) plik ładowania .hex, który jest kompletnym obrazem modułu ładującego. ...
JRobert
... Jest dobrze znany osobom, które piszą programy na życie, ale projektanci narzędzi Arduino (marki) celowo ukryli tak wiele bałaganu, jak to możliwe, aby udostępnić ludziom elektronikę cyfrową bez konieczności stania się profesjonalistami programiści i inżynierowie, aby to zrobić. Skuteczność tych informacji jest trudna do znalezienia w społeczności Arduino!
JRobert
Niestety, z powodów starszych, oprogramowanie Arduino buduje się zupełnie inaczej niż standardowy sposób akceptowany. Aby uprościć tarcie, stworzyli ogromną niekompatybilną społeczność. Każda „wtyczka” IDE jest próbą uczynienia czegoś niestandardowego działającym w prawie standardowy sposób. Pamiętaj o tym, gdy napotkasz problemy.
5

Masz całkowitą rację, że musisz połączyć się z innymi bibliotekami. Jednak niekoniecznie musisz martwić się o wszystkie szczegóły, chyba że chcesz / musisz zrobić coś niezwykłego. Kilka alternatywnych IDE już obsługuje Arduino, zazwyczaj za pomocą wtyczek, które automatycznie przetwarzają wiele szczegółów.

Zwykle polecam Eclipse, ponieważ jest to bardzo szeroko stosowane IDE do różnych celów. Istnieje jednak kilka innych możliwości. Zobacz to pytanie, aby uzyskać więcej informacji:

Peter Bloomfield
źródło
Dzięki @Peter R. Bloomfield (+1) - jednak naprawdę szukam odpowiedzi nie skoncentrowanej na IDE. Nie dlatego, że mam coś przeciwko IDE, po prostu, aby zrozumieć „krajobraz biblioteki” Arduino, czuję, że IDE to po prostu niepotrzebny środkowy człowiek. Powiedziawszy to, zakładam, że istnieje ponad 1 „podstawowa biblioteka”, z którą WSZYSTKIE aplikacje Arduino muszą się łączyć, oraz że istnieją opcjonalne biblioteki, których możesz potrzebować lub nie, w zależności od tego, co faktycznie robi Twoja aplikacja. Czy możesz wskazać mi listę tych „podstawowych bibliotek”, a także innych opcjonalnych? Dzięki jeszcze raz!
smeeb
Aby zakwalifikować to, co mówiłem powyżej o tym, że IDE są „niepotrzebnymi pośrednikami”, tak naprawdę mam na myśli: powinienem być w stanie napisać aplikację C poza dowolnym IDE (Arduino, Eclipse lub w inny sposób), link do bibliotek Arduino, które moja aplikacja potrzebuje i nadal kompiluje / wdraża aplikację na sprzęcie Arduino. Zastanawiam się, czym są te biblioteki i gdzie mogę znaleźć dokumentację na ich temat.
smeeb
@smeeb Biorąc pod uwagę, że Arduino jest skierowany do początkujących, nie sądzę, aby istnieje wiele (jeśli w ogóle) oficjalnej dokumentacji zgodnej z tymi zasadami. Spodziewam się, że najlepszym sposobem na badanie byłoby wyszukiwanie w Internecie przykładów makefile Arduino. Istnieje kilka starych przykładów u dołu tej strony .
Peter Bloomfield
@smeeb: Podobnie jak ty, nie jestem fanem IDE. W Internecie znajduje się kilka ogólnych plików makr Arduino. Zasadniczo trzeba skompilować biblioteki Arduino rdzenia do libore.a, następnie skompilować plik .ino z -x c++ -include Arduino.hza kompilator, aby go (plus kilka zrozumieć -D, -Iitp) i związek z libcore.a.
Edgar Bonet
0

Tak, możesz napisać program poza Arduino IDE. Na przykład próbowałem Eclipse IDE z wtyczką AVR i teraz trzymam się AVR Studio. Oczywiście nie będziesz mieć funkcji, których zwykle możesz używać podczas pisania w Arduino IDE, a także niektórych bibliotek. Ale dlaczego nie spróbować wdrożyć różnych rzeczy. Po co ograniczać się do funkcji i bibliotek stworzonych przez innych, kiedy możesz uczyć się i pisać własne, może lepiej niż te istniejące.

23ars
źródło
-3

ESP8266 + Arduino IDE 1.6.4 Portable - pełna instrukcja szybkiej instalacji www.instructables.com /.../ ESP8266-Arduino-IDE-164-Portable-F ...

Wszystkie pliki Arduino IDE v 1.6.4, w tym rozszerzenie ESP8266, szkice, zainstalowane biblioteki itp. Powinny znajdować się tylko w nowo utworzonym folderze „arduino-1.6.4”.

SMILEA
źródło
To nie jest bardzo pomocna odpowiedź. Link nie jest prawdziwym linkiem. I nawet gdyby tak było, Stack Exchange marszczy brwi w odpowiedziach zawierających tylko linki, ponieważ połączona witryna może ulec awarii. Rozwiń swoją odpowiedź.
Nick Gammon