Cours:StartMindstorm : Différence entre versions
(→{{Bleu|Compilation/Exécution}}) |
(→{{Bleu|Le programme :}}) |
||
| Ligne 72 : | Ligne 72 : | ||
Quelques explications sur le programme maintenant : | Quelques explications sur le programme maintenant : | ||
*On doit nécessairement écrire une fonction "main" | *On doit nécessairement écrire une fonction "main" | ||
| − | + | *elle est exécutée au lancement du programme | |
| − | + | * {{Rouge|int}} main(void) : | |
| − | + | **elle retourne une valeur de type entier | |
| − | + | **la valeur est récupérée à la fermeture du programme | |
| − | + | **si la valeur est {{Rouge|0}}, tout s'est bien passé | |
| − | + | **sinon la valeur représente un code d'erreur | |
| − | + | * int main({{Rouge|void}}) : | |
| − | + | **on ne passe pas de paramètre à la fonction main | |
| − | + | **on peut aussi écrire : int main() | |
| − | + | *{{Rouge|{}} : la déclaration de la fonction main commence juste après l'accolade ouvrante | |
| − | + | *{{Rouge|}}} : la déclaration de la fonction main se termine juste avant l'accolade fermante | |
| − | + | *{{Rouge|return }}0; | |
| − | + | **on quitte la fonction (main ici) en envoyant la valeur {{Rouge|0}} : tout s'est bien passé. | |
| − | + | **si on ajoute des lignes après "return", elles ne seront pas exécutées | |
| + | *Le reste du programme correspond à l'exécution de fonctions : | ||
| + | **il y a {{Rouge|toujours}} des parenthèses après le nom d'une fonction | ||
| + | **il {{Rouge|peut}} y avoir des valeurs entre les parenthèses : ce sont des {{Rouge|paramètres}} | ||
| + | **{{Rouge|InitEV3()}} : fonction d'initialisation des moteurs/capteurs ... | ||
| + | **{{Rouge|FreeEV3()}} : pour remettre la brique lego dans un état "normal" à la fermeture | ||
Version du 4 juillet 2018 à 22:01
Nous allons programmer la brique levo mindstorm EV3 à l'aide de l'ensemble logiciel c4ev3.
Vous pourrez bien entendu utiliser votre ordinateur Windows/Linux/Mac à condition d'avoir mené à bien l'ensemble des configurations nécessaires.
Nous utiliserons l'IDE éclipse pour l'édition, la compilation, le téléchargement ainsi que l'exécution des programmes.
Prise en main d'éclipse
Eclipse fonctionne à l'aide de projet : chaque fois que vous souhaitez écrire un nouveau programme, il convient d'en faire un nouveau.
Nouveau projet
Voici les étapes nécessaires à la bonne configuration d'un projet pour programmer la brique EV3 :
- File>New>C Project ... ça doit vouloir dire faire un nouveau projet en langage C !
- 1ère fenêtre :
- choisir un nom pour le projet : tp1
- projet de type : Executable/Hello World EV3 Project
- Toolchains : Cross ARM/EV3 GCC (votre ordinateur est une architecture x86_64, la brique EV3 comme la plupart des smartphones une architecture ARM => ce n'est pas la même chose on fait de la cross-compilation)
- Suivant, enfin NEXT plutôt !
- 2ème fenêtre, il faut vérifier :
- API path : /opt/electronique/lego/EV3-API/API
- Upload path : SD-Card
- Source : src
- NEXT
- 3ème fenêtre :
- on décoche debug
- on garde Release
- NEXT
- 4ème fenêtre, il suffit normalement de vérifier :
- Toolchain name : Sourcery CodeBench Lite for ARM ...
- Toolchain path : /opt/electronique/lego/arm-2009q1/bin
- EV3 Uploader : /usr/lib/ev3duder
- FINISH
Compilation/Exécution
Le code source du programme "minimum" devrait s'afficher à l'écran. Sinon, on le retrouve à gauche dans l'arborescence du projet dans le projet que l'on vient de créer, dans le dossier "src", par exemple "tp1.c" :
#include <ev3.h>
int main(void)
{
//TODO Place here your variables
InitEV3();
//TODO Place here your code
LcdPrintf(1, "Hello World!\n");
Wait(SEC_2);
FreeEV3();
return 0;
}
Avant d'expliquer plus en détail se programme, nous allons :
- le compiler :
- dans la barre d'icône au dessus de l'écran
- l'icône en forme de marteau : build
- on vérifie en bas de l'écran dans l'onglet "console" que tout s'est bien déroulé.
- on vérifie qu'il n'y a pas d'astérisque (*), à côté du nom du fichier, par ex tp1.c*
- si c'est le cas, il faut sauvegarder le fichier et recommencer
- Un robot connecté en USB et démarré ça pourrait servir maintenant !
- Exécution du programme
- barre de menu
- EV3>Upload and run ... je vous laisse traduire !
- On regarde l'écran, on doit voir le message "Hello World!"
Le programme :
Quelques explications sur le programme maintenant :
- On doit nécessairement écrire une fonction "main"
- elle est exécutée au lancement du programme
- int main(void) :
- elle retourne une valeur de type entier
- la valeur est récupérée à la fermeture du programme
- si la valeur est 0, tout s'est bien passé
- sinon la valeur représente un code d'erreur
- int main(void) :
- on ne passe pas de paramètre à la fonction main
- on peut aussi écrire : int main()
- { : la déclaration de la fonction main commence juste après l'accolade ouvrante
- } : la déclaration de la fonction main se termine juste avant l'accolade fermante
- return 0;
- on quitte la fonction (main ici) en envoyant la valeur 0 : tout s'est bien passé.
- si on ajoute des lignes après "return", elles ne seront pas exécutées
- Le reste du programme correspond à l'exécution de fonctions :
- il y a toujours des parenthèses après le nom d'une fonction
- il peut y avoir des valeurs entre les parenthèses : ce sont des paramètres
- InitEV3() : fonction d'initialisation des moteurs/capteurs ...
- FreeEV3() : pour remettre la brique lego dans un état "normal" à la fermeture