J’ai décrit ailleurs les limitations de l’IDE "processing" pour l’arduino.
J’avais trouvé à l’époque un lien vers une configuration de kdevelop pour arduino. Celle-ci ne fonctionnait pas et je n’avais pas été plus loin.
Profitant du congé de noël, je me suis replongé dans le problème ... et ça marche !
Le pourquoi
- Avantages d’un IDE : Kdevelop apporte de multiples avantages au développeur.
- numérotation des lignes : Dès qu’un code source devient un peu conséquent, la numérotation automatique des lignes devient un "must" incontournable. Sinon, on est perdu !
- gestion des projets : De même, pouvoir "éclater" un code sur plusieurs fichiers permet d’avoir un code beaucoup plus propre. Par exemple, un fichier pour les fonctions, un autre pour l’interface, un troisième pour les "maths"... On peut aussi réutiliser un même fichier dans plusieurs projets. S’il faut ouvrir les fichiers individuellement, c’est la foire garantie. Ici, il suffit d’ouvrir un projet et tous les fichiers lui appartenant sont clairement identifiés dans une fenêtre à part.
- message d’erreur cliquable : Un grand classique dont on ne sait plus se passer quand on y a goûté : Dans la fenêtre des messages de compilation, il suffit de cliquer sur un message d’erreur pour que le fichier source correspondant s’ouvre et que le curseur se positionne à la bonne ligne.
- documentation automatique des librairies, classes, etc Kdevelop permet aussi de visualiser la documentation d’un objet du code. Il suffit de laisser la souris sur un mot du code.
- DéplierDocumentation automatique de "Arduino.h"
- Ici le passage de la souris sur "Arduino.h" déclenche l’affichage du "path" et d’une multitude d’informations sur le fichier.
Le comment !
- Le projet original et ses problèmes : On trouve sur le site d’arduino et sur celui de Kde ce projet qui permet de compiler le code "natif" [1] de l’arduino et d "uploader" le binaire vers l’arduino
- templates : Kdevelop permet d’utiliser des "templates". Ces canevas sont des fichiers "tar.bz". Il suffit de les copier dans "/usr/share/kde4/apps/kdevappwizard/templates/" et ils sont décompressés "à la volée" quand on fait appel à eux. Le nôtre s’appelle "arduino.tar.bz2".Copiez le fichier dans un dossier vous appartenant puis faites un bunzip arduino.tar.bz2" et "tar xvf arduino.tar" si vous voulez voir et/ou modifier le contenu de ce fichier.
- deux scripts externes
Il faut créer DEUX [2] "scripts externes" dans kdevelop. (clic droit sur la partie la plus à droite dans kdevelop)
Le premier peut s’appeler "Compile Arduino" et contenir la commande suivante :
"
make TARGET=%b all
".
Le deuxième peut s’appeler "Upload Arduino" et contenir la commande suivante :
"
make TARGET=%b upload
".
- Sélectionner "New from template" dans le menu "Projet".
- Sélectionner le template "Simpre Arduino application".
- Sélectionner un nom pour votre projet, cliquer sur "Next" puis "Finish".
Kdevelop va décompresser une série de fichiers dans votre dossier de projet. Au départ il y avait une "Makefile" qui appelle "arduino.mk". Ces deux fichiers ainsi que "arduino.kdevtemplate" et deux fichiers "%PROJECTDIRNAME.pde" et "%PROJECTDIRNAME.kdev4". J’ai ajouté dans mon archive le "pins_arduino.h" correspondant à l’arduino UNO [3]. Par défaut, il y a un fichier créé automatiquement avec le nom du projet et l’extension ".pde" : le "hello world !" de l’arduino càd. "blink". Il suffit de le modifier. Vous trouverez quelques explications plus bas sur le "pourquoi" de ces opérations.
- Sélectionner "Compile Arduino" pour compiler
- Sélectionner "Upload Arduino" pour flasher l’arduino.
- compilation et syntaxe
L’auteur conseille d’appeler des fichiers "headers" dans le code. J’ai rencontré quelques problèmes ici.
- arduino.h : Le projet originel utilisait la syntaxe "WProgram.h" qui est obsolète, il a fallu remplacer ceci par "arduino.h" à différent endroits du code.
- pins_arduino.h : La makefile ne trouvait pas ce fichier à la compilation. Le fichier "pins_arduino.h" correspondant à votre arduino doit se trouver dans le dossier racine du projet. J’ai ajouté celui de l’arduino UNO.
- avrdude ou comment "uploader" sur l’arduino
La syntaxe d’avrdude me semble très sensible à l’ordre dans le quel les arguments sont donnés. J’ai du beaucoup modifier la "makefile" "Arduino.mk" pour finalement flasher l’arduino.
Remarques et caveat divers
- Je n’ai testé ceci que pour l’arduino UNO.
- Il faut régulièrement débrancher et rebrancher l’arduino du PC. Le device peut changer suite à un bloquage. Il faut alors passer de "/dev/ttyACM0" à "/dev/ttyACM1" dans la Makefile.
- Les appels au programme "arduino" et "avrdude" sont réglés pour ubuntu 12.04. Ces fichiers peuvent se trouver ailleurs sur d’autres distributions, il faut modifier la "Makefile" en conséquence !
- Path : Ce projet emploie le programme "arduino" et le "avrdude" du paquet "arduino-core". J’ai utilisé les chemins d’accès pour ubunutu 12.04. Si vous utlisez une autre distribution, ceci peut changer.
Projet
Il y a encore du boulot pour améliorer tout ceci.
- nettoyage du code C’est "brut de décoffrage" pour l’instant.
- Appel aux configs spécifiques à chaque arduino par l’activation d’ "include" dans la "makefile".
Càd. dans la Makefile quelque chose du style :
include ArduinoUno.mk
# include ArduinoMegaAdk.mk
Et des fichiers "ArduinoUno.mk" comprennant les options adéquates.
- Quid des"pins-arduino.h" ? Pour programmer l’arduino mega ADK et tous les autres. Probablement des alias.
- extension Le "main" reçoit le nomdu projet avec l’extension ".pde". Je pourrais changer ça en ".ino". (Mais ce n’est pas ultra-prioritaire.
Conclusion
L’utilisation de kdevelop est beaucoup plus confortable que l’ide "normal" de l’arduino. Ici on utilise les outils "natifs" de l’arduino mais avec le confort d’un IDE "adulte". Il y a encore du boulot de "polissage" mais le gain de temps est déjà conséquent même sur de petits projets.