Cours:MindstormStructuresDeControle : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
({{Rouge|Affichage de l'état d'un capteur}})
Ligne 2 : Ligne 2 :
  
 
  Vous trouverez sur la page listant les énoncés de TP un lien vers l'ensemble des fonctions spécifique à la programmation de la brique lego EV3.
 
  Vous trouverez sur la page listant les énoncés de TP un lien vers l'ensemble des fonctions spécifique à la programmation de la brique lego EV3.
 +
 +
={{Rouge|Travail préparatoire : affichage de variable}}=
 +
 +
Nous avons vu comment déclarer et donner une valeur à une variable de type entier dans le 1er TP, exemple :
 +
<source lang=c>
 +
  int a = 5;
 +
</source>
 +
 +
Il est intéressant d'afficher sa valeur avec la fonction LcdPrintf. Pour cela, on prépare le texte souhaité, et on place {{Rouge|%d}} dans la chaîne de caractère (délimitée par des " ") à l'endroit où on souhaite afficher la valeur de la variable. On ajoute ensuite un paramètre dans l'appel de fonction.
 +
 +
Bon c'est plus simple avec un exemple :
 +
 +
<source lang=c>
 +
#include <ev3.h>
 +
int main(void)
 +
{
 +
  // on déclare une variable etatTouchSensor pour "enregistrer" l'état du capteur
 +
  int prix = 100;
 +
 +
  InitEV3();
 +
 +
  LcdPrintf(1, "le produit coute %d euros\n", prix);
 +
 +
  Wait(SEC_5);
 +
  FreeEV3();
 +
  return 0;
 +
}
 +
</source>
 +
 +
On peut afficher la valeur de plusieurs variables en ajoutant des {{Rouge|%d}} :
 +
<source lang=c>
 +
#include <ev3.h>
 +
int main(void)
 +
{
 +
  // on déclare une variable etatTouchSensor pour "enregistrer" l'état du capteur
 +
  int prixDepart = 100;
 +
  int reduction = 10;
 +
 +
  InitEV3();
 +
 +
  LcdPrintf(1, "le produit coute %d euros avant reduction, la remise est de %d euros\n", prixDepart, reduction);
 +
 +
  Wait(SEC_5);
 +
  FreeEV3();
 +
  return 0;
 +
}
 +
</source>
 +
 +
On peut bien sûr effectuer des opérations sur les variables , par exemple :
 +
 +
<source lang=c>
 +
  ...
 +
  int prixDepart = 100;
 +
  int reduction = 10;
 +
  // on n'affecte pas de valeur, on va la calculer par la suite
 +
  int prixFinal;
 +
  // modification de la valeur de la variable prixFinal :
 +
  prixFinal = prixDepart - reduction;
 +
  ...
 +
</source>
 +
 +
{{Question|Modifier votre programme pour qu'il affiche le prix avant et après réduction.}}
 +
 +
 +
{{Question|Faire un programme qui : }}
 +
*déclare 2 variables :
 +
**a de valeur 5
 +
**b de valeur 6
 +
*calcul le produit et met le résultat dans une variable resultat
 +
*affiche le calcul effectué et le résultat
  
 
={{Rouge|Affichage de l'état d'un capteur}}=
 
={{Rouge|Affichage de l'état d'un capteur}}=
Ligne 50 : Ligne 120 :
 
   // on affiche alors sa valeur
 
   // on affiche alors sa valeur
 
   LcdPrintf(1, "valeur du capteur : %d \n", etatTouchSensor);
 
   LcdPrintf(1, "valeur du capteur : %d \n", etatTouchSensor);
 +
 
   Wait(SEC_5);
 
   Wait(SEC_5);
 
 
   FreeEV3();
 
   FreeEV3();
 
   return 0;
 
   return 0;

Version du 12 septembre 2018 à 10:14

Retour à la liste des Tps
Vous trouverez sur la page listant les énoncés de TP un lien vers l'ensemble des fonctions spécifique à la programmation de la brique lego EV3.

Travail préparatoire : affichage de variable

Nous avons vu comment déclarer et donner une valeur à une variable de type entier dans le 1er TP, exemple :

  int a = 5;

Il est intéressant d'afficher sa valeur avec la fonction LcdPrintf. Pour cela, on prépare le texte souhaité, et on place %d dans la chaîne de caractère (délimitée par des " ") à l'endroit où on souhaite afficher la valeur de la variable. On ajoute ensuite un paramètre dans l'appel de fonction.

Bon c'est plus simple avec un exemple :

#include <ev3.h>
int main(void)
{
   // on déclare une variable etatTouchSensor pour "enregistrer" l'état du capteur
   int prix = 100;

   InitEV3();

   LcdPrintf(1, "le produit coute %d euros\n", prix);

   Wait(SEC_5);
   FreeEV3();
   return 0;
}

On peut afficher la valeur de plusieurs variables en ajoutant des %d :

#include <ev3.h>
int main(void)
{
   // on déclare une variable etatTouchSensor pour "enregistrer" l'état du capteur
   int prixDepart = 100;
   int reduction = 10;

   InitEV3();

   LcdPrintf(1, "le produit coute %d euros avant reduction, la remise est de %d euros\n", prixDepart, reduction);

   Wait(SEC_5);
   FreeEV3();
   return 0;
}

On peut bien sûr effectuer des opérations sur les variables , par exemple :

   ...
   int prixDepart = 100;
   int reduction = 10;
   // on n'affecte pas de valeur, on va la calculer par la suite
   int prixFinal;
   // modification de la valeur de la variable prixFinal :
   prixFinal = prixDepart - reduction;
   ...

Question.jpg Modifier votre programme pour qu'il affiche le prix avant et après réduction.


Question.jpg Faire un programme qui :

  • déclare 2 variables :
    • a de valeur 5
    • b de valeur 6
  • calcul le produit et met le résultat dans une variable resultat
  • affiche le calcul effectué et le résultat

Affichage de l'état d'un capteur

Tout système possède des entrées et des sorties.

Les sorties sont les actionneurs et génèrent donc une action :

  • produire un son
  • émettre de la lumière
  • produire une action mécanique
  • ...

Les entrées permettent d’interagir avec l'environnement et l'utilisateur, ils observent/mesurent quelque chose :

  • capteur de contact/collision
  • microphone
  • capteur de couleur
  • ...

Sur la brique programmable EV3, le nom des connecteurs donne la fonction :

  • 1 2 3 4 : ce sont les entrées
  • A B C D : ce sont les sorties

Principe pour 1 capteur

Les capteurs pouvant être connectés sur la brique EV3 étant tous différents, il est nécessaire d'indiquer sur quelle broche nous avons connecté le/les capteur(s) utilisé(s).

Pour cela vous devez utilisez la fonction :

setAllSensorMode

Le détail de cette fonction sera à consulter dans la documentation.

Todo.jpg Voici un exemple d'utilisation à suivre pour tester le capteur de contact ( touch sensor in english !) :

#include <ev3.h>
int main(void)
{
   // on déclare une variable etatTouchSensor pour "enregistrer" l'état du capteur
   int etatTouchSensor = 0;

   InitEV3();
   // on configure la sortie 1 comme capteur de contact
   // et les sorties 2,3,4 sont indiquées sans capteur (NO_SEN)
   setAllSensorMode(TOUCH_PRESS, NO_SEN, NO_SEN, NO_SEN);
   // on peut alors lire l'état du capteur sur l'entrée 1
   // et mettre sa valeur dans la variable etatTouchSensor
   etatTouchSensor = readSensor( IN_1 );
   // on affiche alors sa valeur
   LcdPrintf(1, "valeur du capteur : %d \n", etatTouchSensor);

   Wait(SEC_5);
   FreeEV3();
   return 0;
}