mardi 29 décembre 2015

l'IDE Arduino, c'est bien, mais ...

L'idée initiale

Quand on passe ses journées de boulot à coder et qu'on a quelques années d'usage intensif d'Emacs puis d'Éclipse, l'environnement de développement Arduino, c'est bien gentil, mais on s'y sent un peu à l'étroit ...

Un autre point un peu pénible, c'est la console série, et le fait qu'elle dégage à chaque upload du code.

Du coup, je me suis assez rapidement penché sur la possibilité d'éditer et compiler depuis Éclipse mais aussi de dialoguer avec le port série de façon un peu plus confortable.

Le résultat est assez fouilli, et il faudrait y faire le ménage, mais si ça botte des gens, voila quelques explications.

Éclipse

Déjà, une petite copie d'écran, pour prouver que ça existe en vrai :-)
  • À gauche, les projets avec les fichiers sources
  • Au milieu le source de mon projet de sonnette (j'y reviendrai ...)
  • À droite, les constantes, variables et fonctions qui y sont définies, pour naviguer dans le code
  • En bas, le résultat d'une compilation.
On a la coloration syntaxique, l'autocomplétion, et on peut préciser la cible (Uno, Mega, Tiny ...) afin de mettre en valeur le code selon les "define".
Bref, un vrai IDE quoi :-)

La console série

À coté de ça, je me suis lancé dans un projet "ArdDude", qui contient de quoi appeler "avrdude" (l'outil pour uploader un code vers l'arduino) et une console série.
L'intérêt, c'est qu'on peut lui passer en argument un binaire à surveiller : dès que ce fichier est modifié, on lance l'upload et on reconnecte le port série.
Ainsi, dès qu'on lance une compilation depuis Éclipse, le résultat est envoyé à l'arduino, et le console redevient disponible juste après.
En plus, la console permet d'afficher/saisir de l'hexa et d'avoir un historique de la saisie.

Comment ça marche

Pour compiler en dehors de l'IDE Arduino, j'avais commencé par créer un projet "ArduinoCore" qui contenait les "includes" de l'environnement arduino, et des Makefiles en conséquence.
Depuis, j'ai refondu tout ça afin de l'intégrer à mon projet ArdDude
L'intéret, c'est qu'arddude doit utiliser des classes de l'environnement Arduino pour déterminer certaines choses. Les même classes permettent de parcourir les fichiers de config qui précisent comment effectuer chaque étape de compilation.
C'est donc dans ce projet qu'il y a des Makefile pour gérer toute cette tambouille.

Pour créer un projet Éclipse qui utilise tout ça, le mode d'emploi est ici

Hope this helps ...

Aucun commentaire:

Enregistrer un commentaire