logo admiroutes Les automates intelligents
robotique, vie artificielle, réalité virtuelle


information, réflexion, discussion
logo automate © Anne Bedel
Jean-Paul Baquiast Jean-Paul.Baquiast@wanadoo.fr
Christophe Jacquemin christophe.jacquemin@admiroutes.asso.fr

27
Retour au sommaire
 
Programmer en legOS

La rubrique des passionnés Lego Mindstorms
Brique RCX
par Nanobapt nanobapt@nordnet.fr
(rewriting : Christophe Jacquemin)
16/02/02

Après avoir installé les différents composants que nécessitent legOS(1), voyons maintenant voir comment compiler et télécharger ce programme dans le RCX.

Sachez tout d'abord que des programmes "exemple" sont compilés dès que vous installer legOS. Pour cela, legOS a utilisé le Makefile qui se trouve dans le répertoire demo. Supprimez le fichier helloworld.lx et tapez alors (dans le répertoire demo) la commande make helloworld.lx : vous remarquerez alors l'apparition de commande (incompréhensible de prime abord), le programme helloworld.c est alors compilé.

Pour télécharger le programme dans votre RCX
Pour télécharger helloworld.c dans votre RCX (n'oubliez pas de l'allumer ), tapez la commande suivante : ../util/dll helloworld.lx
Il ne vous reste plus qu'a exécuter le programme en pressant la touche RUN de votre RCX : le message "hello" apparaîtra sur la fenêtre d'affichage de la brique RCX, ceci voulant dire que tout se passe bien.

 

Notre premier programme
Avant toute chose, et ceci afin d'éviter toutes sortes de problèmes, je vous conseille de créer un répertoire projet ou vous stockerez vos programmes (ce répertoire doit nécessairement se trouver dans le répertoire de legOS).

Passons maintenant à notre premier programme. Je vous rassure tout de suite : celui-ci ne fait absolument rien...
Je vous vois déjà venir : "à quoi cela sert-il alors ?". Eh bien, il va vous permettre de comprendre comment compiler un programme.

Ouvrez un éditeur quelconque (si possible autre que les éditeurs Word ou StarOffice) et tapez ces quelques lignes de programme :

/*premier.c*/

int main()
{
return 0;
}


Copiez alors le fichier Makefile se trouvant dans le répertoire de programme de démonstration. Enregistrez le programme premier.c (celui que vous venez de taper plus haut) dans ce répertoire. Ouvrez une console et tapez la commande suivante : make premier.lx dans le répertoire dans lequel se trouve votre fichier. Votre programme se compile : vous devriez alors avoir l'apparition de 2 fichiers : premier.o et premier.lx. Le premier sert de base pour le deuxième. Il faut donc envoyer le deuxième fichier au RCX. Tapez alors la commande suivante../util/dll premier.lx
Il est alors judicieux d'ajouter les programmes dll et firmdl3 a votre PATH ce qui éviterait de toujours taper le chemin d'accès de ces programmes. Vous êtes alors prêt pour créer et exécuter vos programmes

Remarque : le précédent programme ne fait absolument rien quand on appuie sur le bouton RUN du RCX.

Messages possibles d'erreur

Remarques : firmdl3 comporte plusieurs messages d'erreur :

  • /dev/ttyS0 : Permission denied -> vous n'avez pas les droits d'écriture sur le port sériel. Donnez-vous alors ces droits. Pour cela, ouvrez une session (loguez-vous) en mode root (super utilisateur) et tapez chmod +222 /dev/ttyS0
  • /dev/ttyS0 : Input/output error -> Ce message peut signifier plusieurs choses :
    - soit les batteries de votre tour IR sont à plat, ou alors
    - soit le port spécifié ne correspond pas au port où se trouve la tour IR. Il suffit alors de l'indiquer avec la commande -tty= "votre port"
  • no reponse from RCX -> le RCX est peut-être éteint ou les batteries de votre tour IR sont à plat.
  • Unlock firmware failed -> il y a eu une erreur lors du téléchargement : recommencez
  • Delete firmware failed ->cela indique que legOS est déjà présent dans le RCX. Il faut l'enlever soit en retirant les piles du RCX, soit en pressant le bouton On/Off et le bouton Prgm simultanément.

On remarquera aussi que dll ne contient qu'un seul message d'erreur : error deleting program. Vérifier alors que le RCX est allumé et qu'aucun programme ne s'exécute.


 


(1) Cf http://www.automatesintelligents.com/labo/2002/fev/legos.html. Remonter d'où l'on vient

Retour au sommaire