Tuto - Arduino et Xcode avec embedXcode

Bonjour à tous.

Développant avec l’IDE Arduino sur Mac, je parcours régulièrement le web pour prendre connaissance des IDE gratuits disponibles et surtout fonctionnels.

J’avais mis de côté « embedXcode » pour la principale raison que je n’avais jamais réussi une installation parfaite.

Une nouvelle tentative a cette fois été faite avec succès, après avoir recueilli quelques informations complémentaires sans lesquelles embedXcode n’était pas toujours pas opérationnel sur mon Mac.

L’utilisation de Xcode avec embedXcode permet, notamment :

  • de travailler avec l’environnement Xcode en lieu et place de l’IDE Arduino et de ses limitations ;
  • de disposer, entre autre, de l’autocomplétion lors de la frappe du code.

Toutefois, le suivi scrupuleux de la procédure décrite sur le site de « embedXcode » ne m’avait pas encore permis d’effectuer une compilation et un téléchargement du code vers la platine Arduino. De plus, les couleurs des mots-clefs et l’autocomplétion n’étaient pas gérées.

Pour faciliter l’installation de « embedXcode » dans Xcode, vous trouverez, ci-dessous, une procédure complète. Elle parait compliquée, mais est, en réalité, fort simple. Parfaitement détaillée, l’installation finale sera ainsi aisée et de surcroit opérationnelle. Le développement de code pour Arduino sous Xcode est aisé et fort agréable.

A. Préalable à l’installation


A1. Vérifier que l’iDE Arduino standard est déjà installé.
A2. Vérifier que Xcode est déjà installé.

B. Téléchargement


B1. Télécharger embedXcode-289b.pkg sur le site
http://embedxcode.weebly.com/l0_download-88rtxp4cozqdxneqdc8rxp4c.html

B2. Eventuellement, télécharger embedXcodeTools….pkg sur ce même site.
(ce package m’est actuellement inutile et ne sera pas installé dans ce tutoriel. Voir la page :
https://developer.mbed.org/handbook/mbed-SDK
pour le détail et la nécessité de ce package.)

C. Installation de embedXcode-xxx.pkg


C1. Double cliquer sur l’icône « embedXcode-289b.pkg » pour procéder à l’installation.

C2. En fin d’installation, un dossier est demandé (il va contenir les « Librairies »).

  • Sélectionner « Documents » et créer un nouveau dossier dénommé, par exemple, « Arduino_Xcode ».
  • Cliquer « Créer » et ensuite « Choisir ».

C3. Un dossier de projets est ensuite demandé.

  • Sélectionner « Documents » et créer un nouveau dossier dénommé, par exemple,
    « Arduino_Xcode_Projects ».
  • Cliquer « Créer » et ensuite « Choisir ».

C4. Une petite musique termine l’installation.

D. Création du projet avec Xcode et embedXcode


D1. Lancer Xcode.

D2. Sélectionner File > New > Project.

D3. En partie gauche, dans la zone OS X, sélectionner « embedXcode. »

D4. En partie droite (actualisée), sélectionner « embedXcode Sketch ».

D5. Cliquer « Next ».

D6. Dans « Product Name », entrer le nom du projet, par exemple Test_01. Cliquer « Next ».

D7. Sélectionner un dossier de destination du projet
(par exemple « Arduino_Xcode_Projects » créé à l'étape C3).

D8. Cliquer « Create ».
Un dossier du nom du projet sera automatiquement créé.

E. Note de l’adresse du port de la platine Arduino


E1. Insérer la platine Arduino sur le port USB du Mac.

E2. Ouvrir l’application IDE Arduino et sélectionner « Outils > Ports ».

E3. Noter, sans erreur, l’adresse du port.
Dans ma configuration cette adresse est : /dev/cu.usbmodem621 (Arduino Uno)

E4. Fermer l’application IDE Arduino.

F. Modification du fichier Make de Xcode


F1. Dans Xcode, en partie gauche, cliquer sur le fichier Makefile (localisé sous le main.cpp) et copier la ligne suivante
(n° 51 dans ma configuration) :
#BOARD_PORT = /dev/tty.usbmodem*

F2. Coller cette ligne sous la ligne copiée ; cette ligne devient donc la n° 52.
On a donc 2 lignes identiques (la première est conservée par sécurité).

F3. Modifier cette dernière ligne comme suit:
A. Retirer le # pour la décommenter ;
B. Remplacer le nom du port par celui noté à l’étape E3.
Dans mon cas, la ligne devient :
BOARD_PORT = /dev/cu.usbmodem621 (Arduino Uno)

F4. Depuis le menu de Xcode, sélectionner File > Save pour sauvegarder ce fichier Makefile.

G. Utilisation de Xcode avec embedXcode


G1. Dans Xcode, en partie gauche, par clic sur les petits triangles, réduire le développement des dossiers suivants :
Sketchbook, Configurations, Makefiles, About et Utilities.

G2. En partie gauche, sélectionner le document d’extension ino
(Test_01.ino dans cet exemple).

G3. Laisser le code de base (programme de type blink [clignotant]).

  • Les fonctions setup() et loop() sont visibles.
  • La couleur des mots clefs est absente à ce stade.
  • L’auto-complétion est non fonctionnelle à ce stade.

H. Première compilation et premier téléversement


Pour activer la couleur des mots clefs et l’autocomplétion, il faut compiler le programme (la platine Arduino est toujours connectée au port USB). Procéder comme suit :

H1. En partie haute de Xcode, sélectionner (Ronds rouges) ALL > MyMac.

H2. En partie haute de Xcode, cliquer le triangle noir pour lancer la compilation.
« Build succeeded » est affiché.
Si « Build failed » est affiché, cliquer sur l'un des deux points rouges en partie haute de la fenêtre ;
vérifier la cause du message d'erreur. Il y a toutes les chances que le port soit mal recopié.

H3. Le code compilé (projet de type blink par défaut) est directement téléversé vers la platine Arduino.

H4. A partir de ce moment :

  • les mots-clefs sont en couleur ;
  • l’autocomplétion fonctionne automatiquement ou par CTRL+barre d’espace.

J. Entrée du code du sketch


J1. Entrer le code comme sur un environnement IDE Arduino.

  • L'autocomplétion fonctionne parfaitement.
  • Attention : il est impératif de déclarer les prototypes des fonctions en partie haute du code.
    Dans le cas contraire, Xcode émet, à la compilation, un message d'erreur de type
    "nom_de_la_fonction was not declared in this scope".

K. Notes complémentaires


K1. Les fichiers de type « .ino » (éventuellement affichables directement dans l’IDE Arduino) sont
accessibles dans le dossier du projet ;
Si le fichier .ino est ouvert avec l’IDE Arduino, on note la présence d’onglets correspondants
aux fichiers .cpp et .h du projet de base.

K2. Informations diverses recueillies sur :
Lien A
Lien B
Lien C

Je ne suis pas utilisateur de mac mais il y a t-il un lien entre ton tuto et le même sujet lancé depuis plusieurs années "Avenue33" sur le forum général ?

Je n'ai pas regardé Avenue33 avant de poster parce que je n'en connaissais pas son existence.

J'ai simplement souhaité partager mon expérience, cette fois concluante, du développement Arduino avec Xcode.

Si ce tuto peut servir à au moins une personne, j'en serai heureux !

Je posais la question parce qu'il a beaucoup travaillé sur l'intégration des fonctions Wiring/arduino dans Xcode.
Il semble qu'il se soit un peu fâché (tout comme Jantsen pour l'équivalent Eclipse) contre les responsables des modifications de l'architecture des librairies dans l'IDE, qui font tout comme s'ils voulaient empécher qu'on utilise autre chose que leur merveille, mais bien entendu ce ne peut pas être le cas :smiling_imp: .

Deux approches indépendantes du même sujet ne peuvent qu'apporter que du positif.

Merci beaucoup pour ce tuto.

J'ai eu un problème lors de la compilation qui a dû arriver à certain d'entre vous avec l'erreur de compilation suivante :"ERROR mega 2560 board is unknown".

==== Check project XXX ====
==== Project XXX checked ====

.
==== Info ====
ERROR mega2560 board is unknown
==== Info done ====
exit 2
make: *** [info] Error 2
Command /Applications/Xcode.app/Contents/Developer/usr/bin/make failed with exit code 2

J'ai résolu le problème en déplaçant l'application Arduino dans le dossier des Applications du Mac.

C'est tout !

Bye.

Merci, comme toi, j'avais fait une tentative d'installer embeddedXCode infructueuse. J'avais fini par me faire des librairies "bouchon" (où il n'y a que les interfaces, mais pas le contenu des fonctions) pour pouvoir coder sous XCode quand même. Sauf que je ne suis pas à 100% couvrant d'un code Arduino, je n'ai "porté" que les fonctions/classes principales.
Grace à toi je vais certainement tenter une nouvelle fois l'install de embeddedXCode : merci !

Bonjour,

J'ai réussi à compiler et charger mon premier programme sous Xcode vers ma carte Arduino.
Je vous présente 2 petits trucs qui peuvent vous éviter de perdre du temps:

  1. Déclaration des librairies additionnelles

A la compilation si vous rencontrez le message "no such file or directory" faisant référence à une librairie additionnelle (ex. LiquidCristal.h), il faut déclarer la librairie dans le Makefile au niveau de la ligne APP_LIBS_LIST (ex. APP_LIBS_LIST = LiquidCrystal)

  1. Déclaration des prototypes de fonctions

Lors de la compilation, si un message indique " was not declared in this scope", il faut déclarer le prototype de la fonction avant le setup (ex. void mafonction(void); )

Je déterre un peu ce topic. Travaillant sur un projet Arduino sous OSX 10.7, et en ayant marre de l'IDE Arduino, j'ai porté mon projet sous Xcode 4 (sans embedXcode qui n'est pas compatible avec cette vieille version d'Xcode/OSX).

Pour la compilation/upload, je pilote directement le logiciel Arduino en cli avec un projet de type "External Build System"...

Le code completion est disponible sur tout le projet ainsi que pour mes librairies externes moyennant un petit hack...

La liaison série est gérée avec CoolTerm que je pilote en AppleScript au niveau des pre-actions/post-actions des schemes...

Autant dire que c'est le jour et la nuit par rapport à l'IDE Arduino. Je bosse enfin de manière efficace avec mon Mac et mon Arduino.

Si cela intéresse un peu de monde, n'hésitez pas à me faire signe. Je peux éventuellement faire un tuto compatible pour la plupart des versions d'Xcode je pense.