Vous êtes sur la page 1sur 13

SDI 1201 : Sciences de l'ingénieur

•Prise en main du robot NXT

serge.rebois@univ-ubs.fr -1-
1
Prise en main du robot NXT
Composants d'un robot NXT de Lego®

La brique

Les capteurs

Les moteurs
Programmation du robot

Bricx Command Center

Langage NXC – généralités

Moteurs

Capteurs

Affichage

serge.rebois@univ-ubs.fr -2-
2
Composants du robot

Moteurs (≤ 3)

« Brique » de
commmande

Capteurs (≤ 4)

serge.rebois@univ-ubs.fr -3-
3
Composants du robot : la brique
Moteurs OUT_A, Liaison USB
OUT_B, OUT_C

Menu
suivant
Allumage,
sélection Écran LCD
Menu
précédent
Boutons de
Sortie menu
commande
courant,
interruption

Capteurs S1, S2, S3, S4

serge.rebois@univ-ubs.fr -4-
4
Composants du robot : les capteurs

Capteur sonore (détecte les sons)

Capteur de luminosité

Capteur de contact

Capteur de distance (ultrasons)

… et beaucoup d'autres (gyroscopique, couleur...)

serge.rebois@univ-ubs.fr -5-
5
Composants du robot : les moteurs

serge.rebois@univ-ubs.fr -6-
6
Programmation du robot

Langage utilisé lors des TPs : NXC (Not eXactly C)


- Langage proche du C
- Programmation croisée : écriture du code et compilation sur PC, puis
transfert dans la brique
Environnement de programmation : BricxCC (Bricx Command Center)
- Editeur de langage NXC
- Compilateur
-...

serge.rebois@univ-ubs.fr -7-
7
Programmation : Bricx Command Center
Au lancement
(robot allumé
et connecté)

AIDE

(code explorer)
Explorateur de code
(templates) Modèles
de commandes –
apparaît par F9

Zone de
programmation

serge.rebois@univ-ubs.fr -8-
8
Programmation : langage NXC - généralités
[cf. tutoriel sur le cours en ligne http://foad.univ-ubs.fr/course/view.php?id=1745]

tâches : un programme est composé de tâches (task) contenant les instructions

Tâche principale – contient les


task main() instructions entre accolades
{
Instruction_1; //Ceci est un commentaire
Instruction_2; /*Ceci aussi*/
}
À la fin de chaque instruction

 Les majuscules ont une importance...

Boucles : voir « Loops etc... » dans l'onglet templates


Conditions : voir « If statements » dans l'onglet templates
Fonctions, procédures : voir « Programs » dans l'onglet templates

serge.rebois@univ-ubs.fr -9-
9
Programmation : moteurs

Quelques commandes utiles :


OnFwd(OUT_A, 75); //Moteur A en avant, 75% de puissance
OnRev(OUT_AB, 75); //Moteurs A&B en arrière, 75% de puissance
Off(OUT_A); //Arrêt du moteur A (frein)
MotorTachoCount(OUT_A);//Nombre de degrés effectués (moteur A)
ResetTachoCount(OUT_A);//mise à 0 du compteur d'angle (moteur A)

 Possibilités d'asservissement, de synchronisation de plusieurs moteurs...

serge.rebois@univ-ubs.fr - 10 -
10
Programmation : capteurs
 Il faut préciser à la brique quels capteurs sont branchés sur ses
entrées S1 à S4.
Type de capteur (exemples) :
SENSOR_TYPE_TOUCH Capteur de contact
SENSOR_TYPE_LIGHT_INACTIVE Capteur de lumière (LED rouge éteinte)
(…)  voir « sensor types » dans l'onglet templates
Mode de mesure (exemples) :
SENSOR_MODE_RAW valeur entre 0 et 1023
SENSOR_MODE_PERCENT valeur entre 0 et 100
SENSOR_MODE_BOOL booléen (0 ou 1)
(…)  voir « sensor types » dans l'onglet templates

Configuration d'un capteur : choisir un type et un mode


SetSensorType(S1, SENSOR_TYPE_TOUCH);//capteur de contact
SetSensorMode(S1, SENSOR_MODE_BOOL); //mode booléen(appuyé/relâché)
ResetSensor(S1);

serge.rebois@univ-ubs.fr - 11 -
11
Programmation : capteurs
Configurations prédéfinies (exemples) :
SENSOR_TOUCH Capteur de contact en mode booléen
SENSOR_NXTLIGHT Capteur de lumière en mode pourcentage, avec LED
rouge allumée
(…)  voir « sensors » dans l'onglet templates
SetSensor(S1, SENSOR_NXTLIGHT); //configure S1 comme un capteur de lumière
en mode pourcentage, avec LED rouge allumée

Lecture d'un capteur (sauf capteur à ultrasons) :


valeur_lue = Sensor(S2); //Lit S2 et place la valeur dans la variable valeur_lue

serge.rebois@univ-ubs.fr - 12 -
12
Programmation : affichage
L'écran :
100x64 pixels
8 lignes d'écriture (LCD_LINE1... LCD_LINE8)

Commandes d'affichage :
ClearScreen(); //Efface l'écran
TextOut(x, LCD_LINE1, texte, options); //Affiche le texte contenu dans texte
//sur la 1ère ligne de l'écran à partir du
//xième pixel.
Ex : TextOut(0, LCD_LINE1, "Bonjour", true); // affiche le mot Bonjour
TextOut(0, LCD_LINE1, affichage, true); // affiche le contenu de la variable nommée affichage

NumOut(x, LCD_LINE2, valeur, options); //Affiche la valeur contenue dans valeur


//sur la 2ème ligne de l'écran à partir du
//xième pixel

serge.rebois@univ-ubs.fr - 13 -
13

Vous aimerez peut-être aussi