Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision Les deux révisions suivantes | |||
les_exposes:robot_moteur [15/01/2015 11:03] haber créée |
les_exposes:robot_moteur [02/03/2015 14:04] haber |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | OH NON | + | "Pour écrire un programme, on utilise des fonctions qui interrogent les |
+ | capteurs et commandent les actionneurs. Ces fonctions ne font pas | ||
+ | partie du langage C lui-même, mais d’une extension de C fournie par le | ||
+ | fabricant du robot. | ||
+ | |||
+ | Pour faire avancer le robot, on utilise la fonction | ||
+ | MOT_STR. Par exemple, l’ins- | ||
+ | truction | ||
+ | MOT_STR(50,FWD,TIME,100); | ||
+ | fait avancer le robot à la vitesse 50, en | ||
+ | marche avant, pendant 10 secondes (100 dixièmes de seconde) | ||
+ | |||
+ | Le troisième argu- | ||
+ | ment indique si l’on souhaite spécifier une durée ou une distance. Dans ce | ||
+ | chapitre, nous spécifierons toujours une durée et cet argument sera | ||
+ | TIME. | ||
+ | Le quatrième argument, compris entre | ||
+ | 0 et 255, est la durée du mouve- | ||
+ | ment exprimée en dixièmes de second | ||
+ | es. | ||
+ | |||
+ | SOLUTION 1: On peut aussi faire avancer le | ||
+ | robot pendant un temps infini en donnant, conventionnellement, la | ||
+ | valeur 0 comme durée. | ||
+ | |||
+ | Le robot continue | ||
+ | alors son mouvement jusqu’à la fin, | ||
+ | à moins que ce mouvement ne soit | ||
+ | interrompu par l’initiation | ||
+ | d’un autre mouvement. | ||
+ | |||
+ | En effet, si la poursuite de l’exéc | ||
+ | ution du programme | ||
+ | initie un second | ||
+ | mouvement, alors le premier mouv | ||
+ | ement est interrompu. | ||
+ | |||
+ | Le mouvement rectiligne est interrompu quelques fractions de | ||
+ | secondes seulement après avoir été initié. Il n’est donc pas effectué. | ||
+ | |||
+ | SOLUTION 2: | ||
+ | Si on souhaite effectuer le mouvement rectiligne en entier, avant de | ||
+ | passer à la rotation, on doit utiliser la variable | ||
+ | MOT_END | ||
+ | qui prend la | ||
+ | valeur 0 (équivalent de | ||
+ | false | ||
+ | en C) quand le robot est en mouvement et | ||
+ | la valeur 1 (équivalent de | ||
+ | true | ||
+ | en C) quand le robot est immobile. Ainsi, | ||
+ | quand on exécute l’instruction : | ||
+ | MOT_STR(50,FWD,TIME,100); | ||
+ | while(!MOT_END){} | ||
+ | MOT_ROT(25,FWD,CENTER,LEFT,ANGLE,50) | ||
+ | " | ||
+ | |||
+ | |||
+ | EXPLICATION DES INTERRUPTIONS: | ||
+ | "A | ||
+ | LLER | ||
+ | PLUS | ||
+ | LOIN | ||
+ | Les interruptions | ||
+ | Organiser un programme en une grande boucle qui teste | ||
+ | les capteurs en permanence est possible, mais souvent | ||
+ | malcommode. On a donc introduit dans les langages de | ||
+ | programmation des outils qui | ||
+ | permettent d’exprimer la | ||
+ | même chose de manière plus simple. Le programme | ||
+ | décrit d’une part ce qu’il faut faire quand tout se passe | ||
+ | normalement, par exemple avance | ||
+ | r tout droit, et d’autre | ||
+ | part des conditions qui définissent des | ||
+ | interruptions | ||
+ | , par | ||
+ | exemple le fait qu’un détecteur signale un obstacle, et | ||
+ | des instructions à exécuter en cas d’interruption, par | ||
+ | exemple faire tourner le robot. Ces différentes instruc- | ||
+ | tions sont ensuite traduites | ||
+ | automatiquement en un pro- | ||
+ | gramme qui, de manière répé | ||
+ | tée, interroge les capteurs | ||
+ | et, selon qu’une interruption est déclenchée ou non, exé- | ||
+ | cute une instruction ou une autre. | ||
+ | Cette manière | ||
+ | réactive | ||
+ | de programmer, permet de | ||
+ | mieux prendre en compte le | ||
+ | s aléas de l’environnement : | ||
+ | d’une exécution d’un programme à une autre, un robot | ||
+ | rencontre rarement deux fois la même situation et il | ||
+ | doit s’adapter s’il rencontre une tache d’huil | ||
+ | e sur le sol, | ||
+ | des obstacles nouveaux, etc." | ||
+ | |||
+ | A FAIRE/COMPLETER/REFORMULER |