Écrire un programme C en dehors de l'IDE Arduino?

12

J'aime l'idée d'utiliser l'Arduino IDE pour des projets simples et pour démarrer avec Arduino, mais le consensus que j'ai obtenu jusqu'à présent est que c'est pour ceux qui sont nouveaux sur Arduino et / ou la programmation en général.

Ma compréhension est qu'il est possible d'écrire un programme C à partir de zéro, complètement en dehors de l'IDE Arduino, puis d'utiliser un outil comme AVRDUDE pour le télécharger sur un MCU Arduino. Cette option, quoique attrayante et intéressante, me laisse avec quelques inquiétudes:

  • Quelles bibliothèques Arduino devraient être importées / liées par un tel programme "C brut"? Je suppose que lorsqu'un programme basé sur Arduino IDE exécute un, digitalWrite(...)il appelle vraiment un C lib, probablement fourni par Arduino, sous le capot. Je souhaite m'assurer que toutes ces "bibliothèques sous-jacentes" sont incluses dans mon programme C. Pensées?
  • Y a-t-il autre chose "perdu" en volant en solo et en s'aventurant en dehors de l'IDE Arduino? Y a-t-il des capacités / fonctionnalités que je devrais maintenant "lancer moi-même"?
smeeb
la source
arduino.stackexchange.com/questions/9538/… Les réponses à ma question m'ont aidé à le configurer. Vous pouvez remplacer / laisser de côté quoi que ce soit d'arduino. Vous pouvez: -Faire votre propre planche. -Utilisez votre propre IDE. -Utilisez vos propres bibliothèques.
Paul

Réponses:

4

Voici deux beaux articles sur la façon dont Arduino fonctionne réellement en arrière-plan. Comment cela a supprimé la friction de la programmation du microcontrôleur.

  1. Une visite des Arduino Internals: Comment fonctionne réellement Hello World?
  2. Arduino et GCC, compilant et téléchargeant des programmes en utilisant uniquement des makefiles

Il a également été discuté ici Existe-t-il un moyen ou un tutoriel pour convertir le code Arduino en code C?

Michal Foksa
la source
Merci @Michal Foksa (+1) - Je suppose que je suis juste choqué que la réponse à cela ne soit pas beaucoup plus connue! J'aurais pensé que l'Arduino IDE avait, par exemple, un lib/endroit de répertoire sous la racine d'installation qui avait des choses comme arduino-core.dll, arduino-io.dll, etc.
smeeb
@smeeb: Vous avez raison, l'installation Arduino IDE inclut - doit - inclure des bibliothèques des fonctions d'exécution de base plus celles fournies par l'utilisateur. Au milieu de la page du lien 2, dans le makefile, le symbole LIBS pointe vers eux. Ce ne sont pas des fichiers .dll (qui, sous Windows, sont appelés au moment de l'exécution); ce sont des fichiers objets (.o sous des systèmes de type Unix, probablement les mêmes sous Windows) qui sont liés statiquement avec vos fichiers objets compilés en (finalement) un fichier de chargement .hex, qui est l'image complète du chargeur. ...
JRobert
... C'est bien connu des gens qui écrivent des programmes pour gagner leur vie, mais les concepteurs d'outils Arduino (marque) ont délibérément caché autant de détails en désordre que possible pour rendre l'application de l'électronique numérique accessible aux personnes sans qu'elles aient à devenir un niveau professionnel programmeurs et ingénieurs pour le faire. Dans la mesure où vous trouvez ces informations difficiles à trouver dans la communauté Arduino, elles ont réussi!
JRobert
Malheureusement, pour des raisons héritées, vous construisez un logiciel Arduino assez différemment de la manière standard acceptée. En «supprimant les frictions» pour simplifier les choses, ils ont créé une énorme communauté incompatible. Chaque «plugin» IDE est une tentative de faire fonctionner quelque chose qui n'est pas standard de manière quasi standard. Gardez cela à l'esprit lorsque vous rencontrez des problèmes.
5

Vous avez absolument raison de devoir établir un lien avec d'autres bibliothèques. Cependant, vous n'avez pas nécessairement besoin de vous soucier de tous les détails vous-même, sauf si vous voulez / devez faire quelque chose d'inhabituel. Plusieurs IDE alternatifs prennent déjà en charge Arduino, généralement via des plugins qui gèrent automatiquement une grande partie des détails.

Je recommande normalement Eclipse car c'est un IDE très largement utilisé à diverses fins. Cependant, il existe plusieurs autres possibilités. Voir cette question pour plus d'informations:

Peter Bloomfield
la source
Merci @Peter R. Bloomfield (+1) - mais je suis vraiment à la recherche d'une réponse non centrée sur l'IDE. Non pas que j'aie quoi que ce soit contre les IDE, c'est juste que pour comprendre le "paysage de bibliothèque" d'Arduino, j'ai l'impression que les IDE ne sont qu'un intermédiaire inutile. Cela dit, je suppose qu'il existe 1+ "bibliothèques de base" avec lesquelles TOUTES les applications Arduino doivent se lier, et qu'il y a ensuite des bibliothèques optionnelles dont vous pouvez ou non avoir besoin, selon ce que fait réellement votre application. Pouvez-vous m'indiquer une liste de ces "bibliothèques de base", ainsi que toutes les autres facultatives? Merci encore!
smeeb
Et pour qualifier ce que je disais ci-dessus à propos des IDE comme étant des "intermédiaires inutiles", ce que je veux vraiment dire, c'est que je devrais pouvoir écrire une application C en dehors de n'importe quel IDE (Arduino, Eclipse ou autre), un lien vers les bibliothèques Arduino qui mon application a besoin, et toujours compiler / déployer l'application sur le matériel Arduino. Je me demande ce que sont ces bibliothèques et où je peux trouver de la documentation à leur sujet.
smeeb
@smeeb Étant donné qu'Arduino s'adresse aux débutants, je ne pense pas qu'il y ait beaucoup (voire pas) de documentation officielle dans ce sens. Je m'attends à ce que la meilleure façon de rechercher ce soit de rechercher en ligne des exemples de makefiles Arduino. Il y a quelques anciens exemples au bas de cette page .
Peter Bloomfield
@smeeb: Comme vous, je ne suis pas fan des IDE. Il existe quelques makefiles Arduino génériques flottant sur le Web. Vous avez essentiellement de compiler la bibliothèque de base Arduino dans libore.a, puis compiler votre fichier .ino avec -x c++ -include Arduino.hvotre compilateur pour le comprendre (plus un tas de -D, -I, etc.) et le lien avec libcore.a.
Edgar Bonet
0

Oui, vous pouvez écrire un programme en dehors de l'IDE Arduino. Par exemple, j'ai essayé Eclipse IDE avec le plug-in AVR et maintenant je m'en tiens à AVR Studio. Bien sûr, vous n'aurez pas certaines fonctions que vous utiliserez peut-être habituellement lorsque vous écrivez dans Arduino IDE et aussi certaines bibliothèques. Mais, pourquoi ne pas essayer d'implémenter des trucs. Pourquoi vous limiter aux fonctions et bibliothèques créées par d'autres alors que vous pouvez apprendre et écrire les vôtres, peut-être mieux que celles existantes.

23ars
la source
-3

ESP8266 + Arduino IDE 1.6.4 Portable - Guide d'installation rapide complet www.instructables.com /.../ ESP8266-Arduino-IDE-164-Portable-F ...

Tous vos fichiers Arduino IDE v 1.6.4, y compris l'extension ESP8266, les croquis, les bibliothèques installées, etc. ne doivent se trouver que sous le nouveau dossier "arduino-1.6.4" créé.

SMILEA
la source
Ce n'est pas une réponse très utile. Le lien n'est pas un vrai lien. Et même si c'était le cas, Stack Exchange fronce les sourcils sur les réponses de lien uniquement, car le site lié peut descendre. Veuillez développer votre réponse.
Nick Gammon