Valeur de cette activité : 3 points
Compétence :
Compétence :
Compétence :
PEPS - Robot NXT Linux 01 - NBC/NXC et t2n

A-Module 12 : ROBOTIQUE - Linux : 3 points - difficulté : 2

Nxt Linux

ROBOT-NXT sous Linux

Utilisez au besoin :
le guide suivant
  1. Afficher le section Étape 0 en cliquant ICI
  2. Affichez le défi à réaliser liste défis :
    A, C, H, i, zoro, K, L, M, N, O, P , Q R
  3. Copiez-collez le titre du défi dans le champ titre
  4. Sélectionnez le MODULE ROBOTIQUE
  5. Sélectionnez la matière Informatique
  6. Ajoutez un TITRE DE NIVEAU 1 dans votre page contenant le titre de votre défi
  7. Copiez-collez sous ce titre la description de la tâche demandée
  8. Ajoutez le balises <pre></pre>
  9. Enregistrez votre page
  10. Affichez le programme troué pour le défi à relever :

    A, C, H, i, K, L, M, N, O, P , Q
  11. Lancez GEANY
  12. Servez vous du programme troué et complétez votre programme afin de réaliser la tâche demandée
  13. Enregistrez votre programme dans le répertoire /home/cb/ sous le nom a.nxc (en remplaçant la lettre a par la lettre identifiant le défi à relever)
  14. Compilez votre programme en tapant dans le terminal la commande
    nbc a.nxc -O=a.rxe
    (en remplaçant la lettre a par la lettre identifiant le défi à relever)
  15. Branchez et allumez votre robot et téléchargez le programme dans le robot en tapanat dans le terminal
    sudo t2n -put a.rxe
    (en remplaçant la lettre a par la lettre identifiant le défi à relever)
  16. Validez le fonctionnement de votre programme et corrigez au besoin
  17. Copiez-collez le code de votre programme dans votre page entre les balises <pre></pre>
  18. Cochez la case de correction de votre page et enregistrez


Afficher l'introduction - Masquer l'introduction

Étape 0 : Liste des programmes à écrire :

Afficher cette section - Masquer cette section


Vous devez faire les programmes (Défis) A, C, H, i, K, L, M, N, O, P , Q

Dans cette section, votre travail consiste à:
a) bien lire la tâche demandée
b) copier/coller le programme troué pour une des fonctions du robot NXT
c) Copier/coller le titre du défi dans le champ TITRE et comme titre de niveau 1 dans votre page
d) Copier/coller la description du défi dans votre page
e) Ajouter les balises <pre></pre> dans votre page
IMPORTANT Piste d'aide : Afin de trouver comment utiliser chacune des commandes ci-dessous, copier/coller les commandes inscrites dans les rectangles jaunes
  1. Utilisez les exemples de programmes accompagnant chacune des commandes (en complétant le programme troué )
  2. Au besoin, utilisez également les fichiers en exemple situés dans le répertoire "/home/cb/.wine/drive_c/Program Files/BricxCC/Documentation/Samples/NXC"
  3. Au besoin, utilisez également le menu VIEW + TEMPLATES du logiciel BRICXCC sous wine
  4. Au besoin, utilisez également GOOGLE avec les mots de recherche : "nxt nom_la_commande_recherchée" ou "nxc nom_la_commande_recherchée"


  • A : TITRE DU DÉFI : utiliser l'affichage en mode texte : commande :TextOut

    Votre tâche consiste à afficher le texte "Allo Maman" dans l'écran du robot en position 10,10 pendant 5 secondes.

    Programme troué :

    Notez que la position verticale peut également être indiquée en utilisant la ligne: exemple : TextOut(10, LCD_LINE7, "Allo Maman");
    task main()
    {
     Tex ...  
     Wa ...
    }
    
    Masquer cette section
  • B: TITRE DU DÉFI : utiliser l'affichage en mode illustration : commande : GraphicOut


    Votre tâche consiste à afficher une image de votre choix parmi celles téléchargées
    (l'image stop.ric ou une autre parmi celles présentes dans le répertoire /home/cb/) en position 10 ,10 pendant 5 secondes

    Cliquez ici afin d'afficher le nom des fichiers illustrations

    Téléchargez l'ensemble des fichiers images au format .ric en tapant dans le terminal :
    wget http://ladifference.info/i/images//profPierreMorissette/robotique/nbc/fichiers.ric.zip && unzip ./fichiers.ric.zip && rm ./fichiers.ric.zip && cp ./Pictures/* ./

    Voici le liste des images additionnelles que vous pourrez utiliser
    Accept 03.ric         LEGO Brick.ric         Send.ric
    Aim.ric               LEGO Minifig Head.ric  Signal.ric
    Angry 01.ric          Letter.ric             Skeleton 02.ric
    Angry 02.ric          Light Bulb.ric         Sleeping.ric
    Angry 04.ric          Lightning Cloud.ric    Smile 01.ric
    Backward.ric          Lights 02.ric          Smile 02.ric
    Battery Electric.ric  List.ric               Smile 03.ric
    Bluetooth.ric         Lock Locked.ric        Snail.ric
    Bomb.ric              Lock Unlocked.ric      Sound.ric
    Boom.ric              Looking Left.ric       Stop 01.ric
    Camera.ric            Looking Right.ric      Stop 02.ric
    Crazy 01.ric          Map.ric                Stop.ric
    Crazy 02.ric          Microphone.ric         Sun.ric
    Dead.ric              Mobile.ric             Surprise.ric
    Decline 03.ric        Mountain 02.ric        Swearing.ric
    Dont Walk 02.ric      Note 03.ric            Talk 01.ric
    Dont Walk.ric         NXT.ric                Talk 02.ric
    Ear.ric               PC.ric                 Temperature C.ric
    Earth.ric             Point Left.ric         Think.ric
    Eye Closed.ric        Point Right.ric        Time 00.ric
    Eye Open.ric          Point Up.ric           Time 01.ric
    Eye.ric               Power.ric              Time 02.ric
    Floppy Disks.ric      Push Button.ric        Time 03.ric
    Flower.ric            Rabbit.ric             Time 04.ric
    Follow.ric            !.ric                  Timeglass.ric
    Forward.ric           Right 02.ric           Time.ric
    Gasoline.ric          Rotation.ric           Tired 01.ric
    Grey Bulb.ric         Run 01.ric             Trash Can.ric
    Hand.ric              Sad 02.ric             Two Arrows.ric
    Heart 01.ric          Sad.ric                Walk 02.ric
    Heart 02.ric          Satellite 03.ric       Zzzz.ric
    Left 02.ric           Search.ric


    Les images au format .ric seront présentes dans le répertoire /home/cb/


    Tapez dans le terminal la commande suivante afin d'afficher le nom de tous les fichiers .ric
    ls *.ric

    Notez que vous pouvez utiliser le logiciel "NXT2 Programming" sous Windows pour éditer/créer un fichier image au format .ric en utilisant le menu TOOLS + IMAGE EDITOR (tutoriel ici)

    Vous devez vous assurer que le fichier image au format .ric est présent dans la brique nxt en
    1)Branchant votre robot dans le port USB de votre ordinateur et allumez votre robot.
    2) tapant dans le terminal :
    sudo t2n -put nom_du_fichier.ric


    Si le nom du fichier .ric contient des espaces, veuillez renommer ce fichier en supprimant les espaces.

    ATTENTION à respecter la casse (majuscules et minuscules dans le nom du fichier)

    Notez que vous pouvez utiliser au besoin (méthode alternative) le programme NXTTOOLS+FILE EXPLORER pour télécharger votre fichier .ric dans la brique

    IMPORTANT :
    Téléchargez le fichier "stop.ric" dans le répertoire /home/cb et décompactez ce fichier en tapant dans le terminal
    wget http://ladifference.info/i/images//profPierreMorissette/robotique/stop.ric.zip && unzip stop.ric.zip && rm stop.ric.zip

    Le fichier sera présent à cet emplacement : /home/cb/stop.ric
    Téléchargez maintenant ce fichier dans votre robot en : 1)Branchant votre robot dans le port USB de votre ordinateur et allumez votre robot.
    2) tapant dans le terminal :
    sudo t2n -put stop.ric
    Programme troué :
    task main()
    {
    Clear...
    Graphic...
    Wai...
    Clear...
    }
    

    Masquer cette section
  • C: TITRE DU DÉFI : utiliser l'affichage en mode dessin (dessiner sur l'écran) commandes : LineOut, CircleOut, RectOut,...
    Votre tâche consiste à dessiner cette figure sur l'écran du robot


    Exemple d'un programme :

    Notez que la position verticale peut également être indiquée en utilisant la ligne: exemple : TextOut(10, LCD_LINE7, "Allo");
     
     
    task main(){
    Rec...
    Lin...
    Cir...
    Cir...
    Cir...
    Wai...
    }
    
    



  • D: TITRE DU DÉFI : jouer un son de type fichier audio (un fichier son.rso) commande : PlayFileEx
    Votre tâche consiste à faire jouer un fichier son de votre choix (startup.rso un un autre fichier .rso) en boucle pendant 3 secondes
    Cliquez ici afin d'afficher le nom des fichiers audios
    Téléchargez l'ensemble des sons au format .rso en tapant dans le terminal :
    wget http://ladifference.info/i/images//profPierreMorissette/robotique/nbc/fichiers.rso.zip && unzip ./fichiers.rso.zip && rm ./fichiers.rso.zip && cp ./Sounds/* ./


    Voici la liste des sons additionnels que vous pourrez utiliser :
    00.rso           Champion.rso         LEGO.rso             Robot.rso
    01.rso           ! Click.rso          Light.rso            Rotation.rso
    02.rso           Cold.rso             Logging.rso          Score.rso
    03.rso           Comma.rso            Log.rso              See.rso
    04.rso           Cool.rso             Lost Object.rso      Sensor.rso
    05.rso           Crying 02.rso        Loud.rso             Shoot.rso
    06.rso           Dark.rso             Low.rso              Shout.rso
    07.rso           Data.rso             Malfunction.rso      Silent.rso
    08.rso           Day.rso              Metre.rso            Sir.rso
    09.rso           Degrees.rso          MINDSTORMS.rso       ! Sneeze.rso
    10.rso           Detect.rso           Morning.rso          Snore.rso
    Aha.rso          Distance.rso         ! Motor Run.rso      ! Sonar.rso
    Ahnoo.rso        Education.rso        Music.rso            Sorry.rso
    Alarm.rso        ! Error 02.rso       Negative.rso         Sound.rso
    Alpha Rex.rso    Error.rso            Night.rso            Spike.rso
    ! Applause.rso   Fahrenheit.rso       No.rso               Start.rso
    ! Arm 02.rso     ! Fanfare.rso        ! Note 1.rso         ! Startup.rso
    ! Arm 05.rso     Fantastic.rso        ! Note 2.rso         Stop.rso
    ! Arm 09.rso     Forward.rso          ! Note 3.rso         System Overload.rso
    ! Attention.rso  Freezing.rso         ! Note 4.rso         T56.rso
    Attention.rso    Game Over.rso        ! Note 5.rso         Temperature.rso
    ! Backup.rso     Goodbye.rso          Object Detected.rso  Thank You.rso
    Backwards.rso    Good Job.rso         Object.rso           ! Ticktack.rso
    ! Beats 03.rso   Goodmorning.rso      OK.rso               Tracking Object.rso
    ! Beats 04.rso   Good.rso             Ooof.rso             TriBot.rso
    Black.rso        Green.rso            Orange.rso           Try Again.rso
    ! Blips 07.rso   Grey.rso             Ouch 02.rso          Turn.rso
    ! Blips 11.rso   Have A Nice Day.rso  Percent.rso          Warm.rso
    ! Blips 13.rso   Hello.rso            Phew.rso             Watch Out.rso
    ! Blips 19.rso   Hooray.rso           Play.rso             White.rso
    ! Blips 25.rso   Hot.rso              Please.rso           Woops.rso
    Blue.rso         ! Hydraulic 02.rso   Point.rso            Yellow.rso
    Bravo.rso        ! Hydraulic 03.rso   Port.rso             Yes.rso
    Brilliant.rso    Inches.rso           Positive.rso         You're Good.rso
    Buuuhh.rso       ! Laser.rso          Record.rso
    Celcius.rso      Laughing 02.rso      Red.rso
    Centimeters.rso  Left.rso             Right.rso


    Les fichiers son au format .rso seront présentes dans le répertoire /home/cb/


    Tapez dans le terminal la commande suivante afin d'afficher le nom de tous les fichiers .rso
    ls *.rso

    Veuillez renommer le fichier utilisé en supprimant les espaces dans le nom du fichier .rso

    Vous devez vous assurer que le fichier son au format .rso est présent dans la brique nxt en :
    1)Branchant votre robot dans le port USB de votre ordinateur et allumez votre robot.
    2)Tapant dans le terminal sudo t2n -put nom_du_fichier.rso

    Notez que vous pouvez utiliser le programme NXTTOOLS+FILE EXPLORER pour télécharger votre fichier .rso dans la brique.

    IMPORTANT :
    Téléchargez le fichier startup.rso dans le répertoire /home/cb/ et décompactez ce fichier en tapant dans le terminal
    wget http://ladifference.info/i/images//profPierreMorissette/robotique/startup.rso.zip && unzip startup.rso.zip && rm startup.rso.zip
    Téléchargez le fichier startup.rso dans la brique en tapant dans le terminal :
    sudo t2n -put startup.rso



    Programme troué :
     
    task main()
    {
    PlayFile...
    Wai...
    }
    
    Notez le paramètre true qui indique de jouer le fichier son en boucle.
    Si vous utilisez le paramètre false, le son sera joué une seule fois.
    Masquer cette section
  • E: TITRE DU DÉFI : modifier le volume et jouer un son commandes : PlayFileEX, SetSoundVolume, SetVolume
    IMPORTANT :
    Téléchargez le fichier startup.rso dans le répertoire /home/cb/ et décompactez ce fichier en tapant dans le terminal
    wget http://ladifference.info/i/images//profPierreMorissette/robotique/startup.rso.zip && unzip startup.rso.zip && rm startup.rso.zip
    Téléchargez le fichier startup.rso dans la brique en tapant dans le terminal :
    sudo t2n -put startup.rso


    Votre tâche consiste à jouer le même son 3 fois en utilisant un volume différent à chaque fois
    Programme troué :
     
    task main()
    {
    PlayFile...
    Wai...
    PlayFile...
    Wai...
    PlayFile...
    Wai...
    
    }
    

    Masquer cette section
  • F: TITRE DU DÉFI : jouer une note de musique-tonalité commande : PlayToneEx (suggestion: utilisez le programme nxttools + Play Piano et enregistrez votre fichier .nxc


    Votre tâche est de composer une pièce musicale de courte durée en utilisant le programme nxttools afin de produire votre fichier .nxc.
    Compilez ensuite votre fichier .nxc en fichier .rxe

    Exemple d'un programme :
    task main()
    {
      while (true)
      {
    PlayTone(262,400);  
    Wait(500);
    PlayTone(294,400);  
    Wait(500);
    PlayTone(330,400);  
    Wait(500);
    PlayTone(294,400);  
    Wait(500);
      }
    }
    
    Masquer cette section
  • G: TITRE DU DÉFI : Convertir un son au format .mid et jouer ce son (utilisez nxttools+midi conversion ou nxttools+soundconversion ou BricXcc pour effectuer la conversion)
    Ce défi est particulier, vous devez (en construction) :
    1. Télécharger le fichier son wolf.mid (clic droit + télécharger la cible du lien) ou en tapant dans le terminal wget http://chene-bleu.info/i/ladifference//wolf.mid
    2. lancer nxttools en tapant dans le terminal sudo nxttools
    3. Utiliser l'outil Midi-Conversion

    4. ...
    5. ...
    6. ...
    7. ...

  • H: TITRE DU DÉFI : faire fonctionner moteur (avancer nombre de secondes) commande : OnFwd Wait

    Votre tâche consiste à faire tourner le moteur C à 3 vitesses différentes pendant 2 secondes pour chacune des vitesses
    Programme troué :
    task main()
    {
    OnF...
    Wai...
    Off...
    OnF...
    Wai...
    Off...
    OnF...
    Wai...
    Off...
    }
    

    Masquer cette section
  • i: TITRE DU DÉFI : faire fonctionner moteur (avancer nombre de degrés) commande : RotateMotor;

    Votre tâche consiste à faire avancer votre robot de 3 tours de roues et reculer de 3 tours de roues à une vitesse de 60% de la vitesse maximale en utilisant les moteurs A et C
    Programme troué:
    task main()
    {
    Rotate...
    Rotate....
    }
    
    

  • ZORO : TITRE DU DÉFI : faire fonctionner moteur (avancer nombre de degrés) commande : RotateMotor;

    Votre tâche consiste à faire déplacer le robot selon la trajectoire d'un Z sous votre chaise.
    Voir le diagramme ci-dessous

    Programme troué :
    task main()
    {
    Rotate...
    Rotate...
    Rotate...
    Rotate...
    Rotate...
    
    }
    
    

    Masquer cette section
  • J :TITRE DU DÉFI : faire fonctionner moteur (avancer nombre de tours) commande : RotateMotor

    Exemple d'un programme :
    task main()
    {
    RotateMotor(OUT_AC, 50,360);
    RotateMotor(OUT_C, 50,-360);
    }
    
    

  • K : TITRE DU DÉFI : faire fonctionner moteur (reculer) commande : OnRev, Wait

    Votre tâche consiste à faire faire tourner le moteur C dans un sens pendant 2 secondes et dans l'autre sens pendant 2 secondes à 50% de la vitesse maximale.
    Programme troué :
    task main()
    {
    OnF...
    Wai...
    Off...
    OnR...
    Wai...
    Off...
    }
    
    

    Masquer cette section
  • L : TITRE DU DÉFI : Faire varier la vitesse d'un moteur

    Votre tâche consiste à faire tourner le moteur C à 3 vitesses différentes pendant 3 secondes à chacune des vitesses
    Programme troué :
     
    task main()
    {
    OnF...
    Wai...
    OnF...
    Wai...
    OnF...
    Wai...
    Off...
    }
    
    






    Voici les différentes commandes pour initialiser la communication avec les différents capteurs :
    Capteur de son : SetSensorSound(IN_1);
    Capteur de lumière (photosensible) : SetSensorLight(IN_1);
    Capteur de toucher (tactile) : SetSensorTouch(IN_1);
    Capteur de ultrasons : SetSensorLowspeed(IN_1); ou SetSensor(IN_1,LOW_SPEED);
    Voici les différentes commandes pour utiliser la valeur captée par les différents capteurs :
    Capteur de son : SENSOR_1 ou Sensor(IN_1)
    Capteur de lumière (photosensible) : SENSOR_1 ou Sensor(IN_1)
    Capteur de toucher (tactile) : SENSOR_1 ou Sensor(IN_1)
    Capteur de ultrasons : SensorUS(IN_1)
  • M : TITRE DU DÉFI : capteur ultrason commandes : SetSensor, SensorUS, SetSensorLowspeed

    SensorUS(IN_4) : permet de faire une lecture des données captées par la capteur ultrasons branché dans le port 4.

    Votre tâche consiste à afficher à l'écran (NumOut), à chaque seconde, en position 10,10 , la valeur
    captée par le capteur ultrason branché dans le port 1 lorsque celui-ci s'approche d'un mur. Programme troué utilisant la détecteur ultrason:
     
    task main(){
    SetS...
    whi...
    {
    Num...
    Wai...
    }
    }
    
    

    Masquer cette section
  • N : TITRE DU DÉFI : capteur ultrason commandes : SetSensor, SensorUS, SetSensorLowspeed

    SensorUS(IN_4) : permet de faire une lecture des données captées par la capteur ultrasons branché dans le port 4.

    Votre tâche consiste utiliser la capteur ultrason branché dans le port 4 et les moteurs branchés dans les ports A et B afin de faire avancer votre robot et que lorsqu'il détecte la présence d'un obstacle situé à 30 cm, le robot s'arrête Programme troué :
     
    task main(){
    Set...
    whi... 
    {
    if(Sen... < ....)
    {
    Off...
    }
    els...
    {
     OnF...
    }
    
    }
    }
    
    

    Masquer cette section
  • O : TITRE DU DÉFI : capteur tactile (toucher - contact) commande : SetSensor , SetSensorTouch(IN_1);
    Votre tâche consiste à programmer une manette (capteur tactile) qui active ou désactive le fonctionnement des moteurs A et B en utilisant la capteur tactile branché dans le port 2 .
    Programme troué :
    //utilisez les commandes OnFwd et Off dans votre programme 
    task main()
    {
     Set....
    whi....
      {
    if (SEN... == 1)
      {
    OnF...
      }
    if (SEN... == 0)
      { 
    Off...
      } 
      }
    }
    

    Masquer cette section
  • P : TITRE DU DÉFI : capteur photosensible (couleur-lumière) commandes : SetSensor, SetSensorLight

    Votre tâche consiste à faire déplacer le robot au dessus des zones blanches, roses et du bureau et afficher à l'écran (NumOut), à chaque seconde, en position 10,20 la valeur captée par le capteur photosensible lorsque celui-ci est placé à 1 cm du sol et noter ces valeurs dans votre page de correction.
    Notez que pour pour utiliser la valeur captée par le capteur de lumière, vous pouvez soit utiliser : SENSOR_4 ou Sensor(IN_4)

    Programme troué utilisant le capteur de lumière :
     
    task main()
    {
    Set...
    whi...
    {
    Rot...
    Num....
    Wai...
    }
    }
    

    Masquer cette section
  • Q : TITRE DU DÉFI : capteur sonore commandes : SetSensor, SetSensorSound

    Votre tâche consiste à afficher à l'écran (NumOut), à chaque seconde, en position 10,30 , la valeur captée par le capteur sonore afin de vérifier le niveau de bruit dans la classe.
    Notez que la position verticale peut également être indiquée en utilisant la ligne: exemple : NumOut(10, 10, Sensor(IN_3));
    Programme troué :
    task main(){
    Set...
    whi...
    {
    Num...
    Wai...
    }
    }
    
    

    Masquer cette section
  • R : TITRE DU DÉFI : créer et utiliser une fonction sans argument (sous-programme) commandes : task et sub

    Votre tâche consiste à programmer une fonction nommée DRAWFACE afin de dessiner à l'écran une figure (voir votre programme C) à partir de cette fonction.
    Programme troué :
     
    sub DRAWFACE()
    
    {
    
    Cir...
    Cir...
    Cir...
    Lin...
    Rec...
    Wai...
    
    }
    
    task main()
    
    { 
    
    DRAWFACE...
    
    }
    
    
    

    Masquer cette section
  • S : TITRE DU DÉFI : créer et utiliser une fonction avec argument(s) (sous-programme)commandes : task et sub
     
    Votre tâche consiste à programmer une fonction nommée AVANCE qui permet de faire tourner le moteur C pendant x secondes, à y% de la vitesse maximale et d'utiliser cette fonction dans votre programme principal
    Programme troué :
     
    sub AVA...(int x, int y)
    {
    OnFwd(..., y);
    Wai...(x);
    }
    task main()
    {
    AVA...
    }
    

    Masquer cette section
  • T : TITRE DU DÉFI : utiliser les tâches commande : task

    Votre tâche consiste à créer deux tâches :
    une tâche nommée "ctrois" qui permet au robot de faire tourner le moteur C pour 3 tours à 50% de la vitesse maximale
    et
    l'autre tâche nommée "ctroisi"qui permet de faire tourner le moteur C pour 3 tours en sens inverse à 40% de la vitesse maximale
    et
    de lancer dans votre programme principal ces deux tâches en succession.
    Programme troué :
     
    task ctrois()
    {
     Rot...}
    task ctroisi()
    {
     Rot...
    }
    
    task main ()
    {
    Prece...( ..., ...);
    }
    
    

    Masquer cette section
  • U : TITRE DU DÉFI : utiliser une constante commande : #define

    Votre tâche est de définir une constante nommée "attendre"
    et
    lui assigner la valeur 1000
    et ensuite utiliser cette constante afin que le robot dessine un cercle à l'écran
    en position 30,30 de grandeur 20
    et
    efface ce cercle après 1 seconde en utilisant votre constante nommée "attendre"
    Programme troué :
     
    #define att...  1000
    task main()
    {
    Cir...
    Wai...
    Cle...
    }
    
    

    Masquer cette section
  • V : TITRE DU DÉFI : utiliser une variable de type entier numérique commande : int

    Votre tâche consiste à définir une variable de type entier numérique nommée "lum"
    et
    de placer dans cette variable la valeur captée par le capteur de lumière branché dans le port 1
    et
    d'afficher à l'écran, à chaque seconde, la valeur inscrite dans la variable nommée "lum"
    Exemple d'un programme :
     
    ... lum;
    task main()
    {
    Set...
    whi...
    {
    lum=Sen...
    Num...
    Wai...
    }
    }
    

    Masquer cette section
  • W: ITRE DU DÉFI : utiliser une variable de type texte, une variable à plusieurs dimensions (array) et effacer l'écran commande : string et ClearScreen

    Votre tâche consiste à créer une variable à plusieurs dimensions nommée "ami"
    et de placer dans cette variable le nom de 3 de vos amis
    et d'afficher à l'écran le nom de vos 3 amis pendant 5 secondes
    Programme troué :
     
    task main()
    {
    ... amis[] = {"...","...", "..."};
    TextOut(20, ..., ...[0]);
    TextOut(20, ..., ...[1] );
    TextOut(20, ..., ...[2]);
    Wai...
     }
    

    Masquer cette section
  • X : TITRE DU DÉFI : boucle de répétition (répéter un nombre de fois) commande : repeat
    Votre tâche consiste à faire tourner le moteur C pendant 1 seconde à 45% de la vitesse maximale
    et de placer cette commande dans une boucle de répétition de 10
    afin que le moteur C tourne pendant 10 secondes
    Programme troué:
    task main()
    {
    repeat(...)
    {
    OnFwd(... , ...);
    Wait(...);
    }
    }
    

    Masquer cette section
  • Y : TITRE DU DÉFI : boucle de répétition (répéter jusqu'à ce qu'une condition soit rencontrée) commande : until ou do ... while
    Votre tâche consiste à faire tourner le moteur C à 55% de la vitesse maximale
    jusqu'à ce que le capteur ULTRASON branché dans le port 1 détecte une présence à moins de 100 cm
    Programme troué utilisant une boucle de répétition:
     
    task main()
    {
    Set...
    do
    {
     Onf...
    }
    while (Sen... < ...);
    Off(...);
    }
    


    Exemple 2 d'un programme utilisant une boucle de répétition et la capteur de lumière :

    Notez que pour pour utiliser la valeur captée par le capteur de lumière, vous pouvez soit utiliser : SENSOR_4 ou Sensor(IN_4)
    #define lumiere 40
    task main()
    {
      SetSensorLight(IN_4);
     
       while (true)
      {
        if (Sensor(IN_4) > lumiere)
        {
          OnFwd(OUT_A, 100);
          Wait(100);
          until(Sensor(IN_4) <= lumiere);
          OnFwd(OUT_A, 30);
           Wait(100);
        }  
      }
    }
    

    Masquer cette section
  • Z : TITRE DU DÉFI : boucle de répétition (répéter pour toujours) commande : while
    Votre tâche consiste à TOUJOURS afficher à l'écran, en position 30,30, à chque seconde la valeur captée par le capteur de son branché dans le port 1
    Programme troué :
    task main(){
    Set...
    while(...){
    Num...
    Wai...
    }
    }
    

    Masquer cette section
  • AA : TITRE DU DÉFI : structure conditionnelle (si) commande : if

    Exemple d'un programme :
    task main()
    {
      SetSensor(IN_1,SENSOR_TOUCH);
    while (true)
      {
    if (SENSOR_1 == 1)
      {
       OnFwd(OUT_A, 30);
      }
    if (SENSOR_1 == 0)
      {   
    Off(OUT_A);
      } 
      }
    }
    

    Masquer cette section
  • BB : TITRE DU DÉFI : Utilisation d'une valeur aléatoire commande : random

    Exemple d'un programme :
     
      
    int n;
    task main()
    {
    n=random(10);
    
    repeat(n)
    {
    OnFwd(OUT_AC, 75);
    Wait(1000);
    OnRev(OUT_AC, 75);
    Wait(1000);
    }
    Off(OUT_AC);
    } 
    

    Masquer cette section
  • CC : TITRE DU DÉFI : utiliser les boutons de la brique commande : ButtonPressed

    Exemple d'un programme :
     
     
    task main() {
    TextOut(0,10,"Hello World!");
    until(ButtonPressed(BTNCENTER,true));
    }
    
    

    Masquer cette section
  • DD : TITRE DU DÉFI : communication entre 2 robots et commande direct de contrôle d'un robot à partir d'un autre robot : commandes : BluetoothStatus, SendRemoteString, ReceiveRemoteString, RemotePlayTone, RemoteResetMotorPosition, ...
    Exemple d'un programme :
    Sur le robot qui contrôle l'autre (master) : ensuite établir la communication bluetooth entre les 2 robots et lancer le programme master.rxe sur le robot maître (master)
    
    
    
    //MASTER
    #define BT_CONN 1
    #define MOTOR(p,s) RemoteSetOutputState(BT_CONN, p, s, OUT_MODE_MOTORON+OUT_MODE_BRAKE+OUT_MODE_REGULATED, OUT_REGMODE_SPEED, 0, OUT_RUNSTATE_RUNNING, 0)
    sub BTCheck(int conn){
    if (!BluetoothStatus(conn)==NO_ERR){
    TextOut(5,10,"Error");
    Wait(1000);
    Stop(true);
    }
    }
    task main(){
    BTCheck(BT_CONN);
    RemotePlayTone(BT_CONN, 4000, 100);
    until(BluetoothStatus(BT_CONN)==NO_ERR);
    Wait(110);
    
    RemotePlaySoundFile(BT_CONN, "bonjour.rso", false);
    
    until(BluetoothStatus(BT_CONN)==NO_ERR);
    
    RemoteResetMotorPosition(BT_CONN,OUT_A,true);
    
    until(BluetoothStatus(BT_CONN)==NO_ERR);
    MOTOR(OUT_A,100);
    Wait(1000);
    MOTOR(OUT_A,0);
    }
    
    

  • EE : TITRE DU DÉFI : créer et écrire un fichier texte (.txt) dans la brique et récupérer ce fichier en utilisant le programme sudo nxttools commandes : DeleteFile, CreateFile, WriteLnString, CloseFile, RenameFile, RemotePlaySoundFile, ...

    Exemple d'un programme :
      
    
    //creation d'un alias pour le détecteur 3 qui sera nommé MIC 
    
    #define MIC  SENSOR_3
    
    task main(){
    
    //capteur de son branché sur le port 3
    
    SetSensorSound(IN_3);
    
    byte fileHandle;
    
    short fileSize;
    
    short bytesWritten;
    
    //définir la variable de type texte nommée ligne_a_ecrire
    
    string ligne_a_ecrire;
    
    DeleteFile("temporaire.txt");
    
    DeleteFile("log.txt");
    
    CreateFile("temporaire.txt", 512, fileHandle);
    
    ligne_a_ecrire = StrCat("temps"," ","Intensité du son");
    
    WriteLnString(fileHandle,ligne_a_ecrire, bytesWritten);
    
    //répéter  10 fois
    
    for(int i=0; i<=10; i++ ){
    
    //convertir en texte la variable numérique i
    
    string numero = NumToStr(i);
    
    //convertir en texte la valeur captée par le détecteur de son
    
    string soncapte = NumToStr(MIC);
    
    ligne_a_ecrire = StrCat(numero," ",soncapte);
    
    WriteLnString(fileHandle,ligne_a_ecrire, bytesWritten);
    
    Wait(1000);
    
    }
    
    CloseFile(fileHandle);
    
    RenameFile("temporaire.txt","log.txt");
    
    } 
    
    

  • FF : TITRE DU DÉFI : Afficher à l'écran le numéro d'une couleur détectée par le capteur de luminosité

    Notez que pour pour utiliser la valeur captée par le capteur de lumière, vous pouvez soit utiliser : SENSOR_4 ou Sensor(IN_4)

    Exemple d'un programme :
      
     
     
    
    
    task main()
    {
      SetSensorLight(IN_4);
     
      while (true)
      {
    
       NumOut(10,10, Sensor(IN_4));
    Wait(1000);
     
      }
    }
    
    

  • GG : TITRE DU DÉFI : Utilisation des lampes

    Votre tâche consiste à construire un robot ayant deux moteurs et une lampe et de programmer le robot afin qu'il avance pendant 2 secondes et recule pendant 2 secondes.
    Lorsque le robot recule, la lampe doit s'allumer.

    Les lampes doivent être branchées dans les ports A, B ou C, comme les moteurs.
    Pour activer une lampe, il faut utiliser la commande qui permet de faire fonctionner un moteur. Ainsi, si une lampe est branchée dans le port, elle recevra l'électricité nécessaire à son fonctionnement.

    Exemple d'un programme :
      
     
    task main()
    {
    while(true){ 
    
    RotateMotor(OUT_A,100,100);
    }	 
    
    }
    
    
    

  • ...
Masquer cette section

Afficher les informations additionnelles - Masquer les informations additionnelles au besoin

Étape 4 : Procédures à consulter pour la compilation d'un programme et le transfert du programme vers le robot nxt (à lire et consulter au besoin)

Afficher cette section - Masquer cette section

Afficher les informations additionnelles 2 - Masquer les informations additionnelles 2

Étape 7 : Présentation de votre travail

Afficher cette section - Masquer cette section