Programme simple (NQC)

Mercredi 25 janvier 2006, par Pierre Couillard // NQC : Not Quite C

Vous êtes débutant en robotique et plus particulièrement avec des Lego Mindstorms, vous avez déjà fait vos armes sur des robots programmés en langage Lego mais vous souhaitez passer à la vitesse supérieure en programmant à l’aide d’un vrai langage puissant qu’est le NQC.

Nous traiterons sur dans cet article (et les suivants !) de la structure d’un programme, des différentes actions que votre brique RCX peut exécuter, des opérations logiques qu’elle peut utiliser pour décider de ce que devra faire votre robot dans une situation donnée, des différentes façons d’utiliser un capteur et probablement un peu plus.

Après les trois premiers articles sur NQC, voici donc un article qui vous fera cheminer vers la création d’un premier programme utilisant le langage NQC. Allons-y !


Structure d’un programme NQC

Tout programme doit obéir à quelques règles que nous allons énoncer. Un programme en NQC est en fait une suite de petits programmes appelés “task” (tâches). Ces “task” commencent toujours par le mot task, puis le nom que vous lui donnez, des parenthèses : ( ) et, à la ligne suivante une accolade ouverte. La “task” se finit par une accolade fermée. Votre programme peut contenir autant de “task” que vous avez besoin.

Votre programme doit toujours comprendre une “task principal” : cette “task” doit toujours avoir pour nom “main” (principal). C’est ce “task” que la brique RCX va exécuter en premier. Vous pouvez ensuite démarrer d’autres “task” avec la commande “start” puis le nom du “task” voulu. Vous pouvez aussi en stopper avec la commande “stop” puis le nom de la “task” voulu. Il existe une commande "StopAllTasks ( )" (attention les majuscules ou non sont importantes !!!). Ensuite, chaque ligne de commande doit obligatoirement se finir par un point virgule.

Mais attention, il faut faire la différence entre ligne de commande et autre partie du programme. Nous allons vous le signaler lorsque l’une de ces parties ne demande pas de point virgule (le nom du programme ainsi que les accolades ne prennent pas de point virgule).

Finalement, vous pouvez faire des commentaires sur votre programme (c’est une bonne pratique de programmation afinde se rappeler à quoi sert chaque ligne, task... ou même si vous voulez publier votre programme. ) Il y a en NQC deux types de commentaires : ceux qui commencent par // et qui font une seule ligne, et ceux qui commencent par /* et finissent */ et qui peuvent durer autant de ligne que voulu. Les commentaires sont ignorés par le compilateur. Ils sont donc propre au code source.

Exemple de programme :

Commandes des moteurs, commandes de base

Nous verrons ici toutes les commandes relatives au moteur. Il faut savoir que toutes les commandes de moteur sont suivies de, entre parenthèses, le moteur voulu : on désigne le moteur par sa sortie. Le moteur connecté au port A est donc OUT_A et ainsi de suite pour les B et C. Plutôt que de retaper plusieurs fois la même ligne de commandes, vous pouvez mettre un plus (+) entre les désignations des deux ou des trois moteurs voulus.

Voyons d’abord les commandes simples telles que le démarrage ou l’arrêt d’un moteur. Vous avez pour le démarrage deux types de commandes :

- OnFwd (les moteurs) ;

- ou OnRev (les moteurs) ;

La première commande démarre le moteur vers l’avant et l’autre vers l’arrière. Une seule commande pour l’arrêt : Off (les moteurs) ; . Mais si vous ne rentrez que cette ligne de commande, le robot va avancer, le programme s’arrêter et le seul moyen pour couper les moteurs sera de mettre la brique RCX sous “off”. Il faut donc dire pour combien de temps les moteurs devront fonctionner : c’est la commande Wait ( ). Cette commande fait que la brique RCX attend pendant un certain temps, désigné entre parenthèses après la commande, en centième de seconde. Vous pouvez aussi jouer sur la puissance des moteurs avec la commande SetPower ( ), puis entre parenthèses les moteurs concernés ainsi que la puissance voulue s’échelonnant de 1 à 7, 1 étant la valeur la plus faible.

Vous pouvez aussi faire jouer des sons par la brique RCX avec la commande PlaySound ( ). Ensuite, entre les parenthèses vous indiquez le numéro du son. Il y a cinq sons. Vous pouvez aussi faire jouer une tonalité à la brique RCX. C’est la commande PlayTone ( ). Vous indiquez entre parenthèses la fréquence et la durée qui s’exprime en centième de seconde.

Exemple de programme :

PNG - 13 ko
Téléchargement du programme 01.nqc

Vous pouvez maintenant télécharger votre programme sur votre brique RCX et démarrer celle-ci afin de voir les résultats. Il serait intéressant pour vous de modifier certains paramètres afin d’approfondir votre expérimentation.