Questions fréquentes sur la programmation
Exécution séquentielle des instructions :
Les instructions d'un programme sont exécutées les unes après les autres. Il n'exécute pas plusieurs
instructions à la fois.
Pour ne pas « rater » un événement extérieur :
Une instruction est constituée par un mot clé du langage de programmation (ici il s'agit des « blocs »
utilisés dans les diagrammes). Une instruction a un rôle bien déterminé et peut être paramétrée.
Par exemple « pause xxx » indique au microcontrôleur d'attendre pendant un temps de xxx ms où xxx
est une valeur paramétrable exprimée en millisecondes (de 1 à 65 535 ms).
Tant que le microcontrôleur exécute cette instruction, il ne fait rien d'autre.
Ainsi, si l'on veut réagir immédiatement à un stimulus extérieur à l'aide des fonctions de test (par
exemple détection d'un marquage au sol), il faut s'arranger pour que le programme ne soit pas
« coincé » trop longtemps sur l'exécution de l'instruction en cours (par exemple avancer pendant 2s),
sans quoi on risque de rater l'événement (croisement du marquage au sol pendant la période de 2s où
MiniRobot avance).
Pour vérifier fréquemment l'état d'un capteur, on peut par exemple intercaler des sauts réguliers à un
sous programme qui traite l'acquisition des données reçues par un capteur.
Le microcontrôleur de MiniRobot enchaîne l'exécution des instructions au rythme de 1 million
d'instructions par secondes (ordre de grandeur).
Persistance des commandes de déplacement :
A la mise sous tension de MiniRobot, le microcontrôleur est initialisé et toutes ses sorties sont remises à
zéro.
Le microcontrôleur commence à exécuter son programme à partir de l'instruction « Début ».
Les instructions qui commandent le déplacement de MiniRobot (avancer, gauche, droit, reculer) pilotent
les moteurs.
L'action engendrée par ce type d'instruction est maintenue tant que le programme ne rencontre pas une
nouvelle instruction de déplacement qui l'annulera en la remplaçant.
Gestion de la vitesse :
La vitesse des moteurs est gérée par un microcontrôleur secondaire. Celui-ci a besoin d'un temps
d'initialisation de 100 ms pour pouvoir initialiser leur vitesse à une nouvelle valeur.
Si l'on souhaite modifier la valeur de la vitesse au cours d'un programme, il est conseillé d'introduire un
temps d'attente de 100 ms (pause 100) avant de modifier la valeur de la vitesse à l'aide de la commande
« speed ».
La vitesse de rotation des moteurs est gérée par des impulsions de longueur variable (paramétrables
par la commande « speed ».
La vitesse de rotation des moteurs est dans une certaine limite indépendante de l'état des de piles.
Cependant, des piles usées dont la capacité (mAh) aurait chuté de manière trop importante ne
permettent pas de fournir l'énergie suffisante pour entraîner correctement MiniRobot.
Dans ce cas, les moteurs tentent d'imposer la vitesse de rotation qui est programmée mais ils manquent
de puissance et MiniRobot se déplacera alors plus lentement.
Il est recommandé d'utiliser des piles alcalines pour alimenter MiniRobot. Par ailleurs, il est recommandé
d'ôter les piles de MiniRobot en cas de non utilisation prolongée.
Utilisation des variables locales :
Le module à ultrasons et le module télécommande mémorisent le résultat de leurs acquisitions dans des
variables locales. Il convient de prendre garde à l'utilisation redondante de ces mêmes variables locales
à d'autres fins dans les programme afin d'éviter des confusions sur leur contenu au moment où l'on
souhaite exploiter leur valeur dans un programme.
Comment vérifier la longueur d'un programme :
Lorsque le diagramme est affiché, appuyer sur F5 pour le convertir en basic puis sur F4 pour vérifier sa
syntaxe et sa longueur.
Dossier MiniRobot – 05.2015
116